Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Introduce the Ukrainian language #456

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions _data/languages.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@
"title": "Русский",
"id": "ru"
},
{
"title": "Українська",
"id": "uk"
smorimoto marked this conversation as resolved.
Show resolved Hide resolved
},
{
"title": "Français",
"id": "fr"
Expand Down
56 changes: 56 additions & 0 deletions translation_uk.md
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm now thinking that language-specific translation guides are unnecessary. The translator should be able to read English and copy-pasting in each language seems to be useless.

Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Translation Guidelines

The translation of the TC39 web page aims to make the work of TC39 more accessible to people whose
native language may not be english. For this, we are working with the community to get basic
information about upcoming language features into their language.

As English is the default TC39 language, this document serves as a general guidance on how to do
translations.

## Adding a translation of a feature

To translate a feature, edit the [stage 3 file](_data/en/stage3.yml) for that language. If a
description field is empty, that proposal needs a translation. Once you finish the translation(s),
you can open a pull request and ping a reviewer who can ok your translation.

## Adding support for a new language

To add a new language, you will need to create a couple of files. A good way to get started is to
clone the [english language directory](_data/en) or any other language to start with. Name the folder using the [Unicode BCP 47](https://www.unicode.org/reports/tr35/tr35.html#Canonical_Unicode_Locale_Identifiers) locale identifiers. We currently prefer language only identifiers, but can expand to regions as necessary.

Once you have created your folder, you will want to translate all text into your language. You will
also want to copy this readme file and translate it, so others can help you.

With that finished, add your language to the [language file](_data/languages.yml) of the site. You will need a reviewer to proof read your translations, and request a review from @codehag to make sure everything looks right.

## Active reviewers

To land your changes, you can request reviews from the following active reviewers:

### For New Languages:

- [@codehag](https://github.com/codehag)

### German transation:

- ...

See the [German Translation documentation](translation_de.md) for more info.

### Japanese Translation:

- [@smorimoto](https://github.com/smorimoto)

See the [Japanese Translation documentation](translation_ja.md) for more info.

### Russian Translation:

- [@chicoxyzzy](https://github.com/chicoxyzzy)

See the [Russian Translation documentation](translation_ru.md) for more info.

### Traditional Chinese Translation:

- ...

See the [Traditional Chinese Translation documentation](translation_zh-Hans.md) for more info.
4 changes: 4 additions & 0 deletions uk/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
---
title: Беріть участь у розвитку специфікації ECMAScript
layout: default
---
16 changes: 16 additions & 0 deletions uk/intro.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"TC39": {
"title": "TC39",
"desc": "Ecma International TC39 — це група, що складається із JavaScript-розробників, авторів імплементацій, дослідників та інших учасників, співпрацюючих із спільнотою для підтримки та розвитку мови програмування JavaScript.",
"ecma-logo": "Ми є частиною <br/> <a class=\"ecma-logo-box\" href=\"https://www.ecma-international.org/\"> <img src=\"/assets/img/ecma-logo.svg\" alt=\"Ecma International\" /></a>"
},
"contribute": {
"title": "Взяти участь",
"desc": "TC39 вітає будь-яку допомогу від спільноти JavaScript: відгуки та думки про існуючі пропозиції, покращення документації, тестування або імплеметації, або навіть ідеї для нових можливостей мови. Подробиці дивіться в нашему <a href=\"https://github.com/tc39/ecma262/blob/main/CONTRIBUTING.md\">довіднику для бажаючих взяти участь у проекті</a>.",
"join-ecma": "для участі у засіданнях TC39 як член комітету, необхідно <a href=\"https://ecma-international.org/memento/join.htm\">приєднатись до Ecma</a>."
},
"specs": {
"title": "Специфікації",
"desc": "Ми розробляємо специфікацію JavaScript (формально, ECMAScript) <a href=\"https://github.com/tc39/ecma262/\">на GitHub</a> та проводимо зустрічі кожні два місяці для обговорення пропозицій. Щоб дізнатись більше про процес, будь ласка, ознайомтесь з <a href=\"https://tc39.es/process-document/\">шістьма етапами</a> для нових <a href=\"https://github.com/tc39/proposals/\">пропозицій щодо покращення та розвитку мови</a>. Читайте наші <a href=\"https://github.com/tc39/agendas/\">програми засідань</a> та <a href=\"https://github.com/tc39/notes/\">протоколи зустрічей</a> для отримання додаткової іформації."
}
}
44 changes: 44 additions & 0 deletions uk/proposals.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
{
"title": "Поточні кандидати у специфікацію",
"description": "У цьому розділі представленні пропозиції, котрі знаходяться на третьому етапі <a href=\"https://tc39.es/process-document/\">нашого процесу</a>; це означає, що вони наближаються до завершення",
"how-to-read": {
"title": "Як читати список пропозицій",
"description": "Кожна пропозиція має посилання на інші ресурси. Нижче наведено таблицю з прикладами тегів та їх значеннями. Після наведення на тег - з'явиляється підказка.",
"tags": {
"title": "Типи тегів та їх значення.",
"last-presented": "Дата останньої презентації",
"last-presented-fake-date": "Грудень 2018",
"tests": "Має тести",
"spec": "Має текст специфікації"
}
},
"last-presented-alt": "Записи останньої презентації",
"specification": "Специфікація",
"specification-alt": "Прочитати текст специфікації",
"tests": "Тести",
"tests-alt": "Патч із тестами у репозиторії test262",
"show-example": "Показати приклад",
"author": "Автор",
"authors": "Автори",
"champion": "Чемпіон",
"champions": "Чемпіони",
"authors-and-champions": "Автори та чемпиони",
"see-more": "Пропозиції на усіх етапах",
"needs_translation": "Потребує перекладу",
"needs_translation_url": "https://github.com/tc39/tc39.github.io/blob/main/translation_uk.md",
"community_translations": "Ця сторінка перекладена спільнотою. Якщо Ви бажаєте зробити внесок, прочитайте наші <a href=\"https://github.com/tc39/tc39.github.io/blob/main/translation_uk.md\">довідники</a>.",
"months": {
"1": "січень",
"2": "лютий",
"3": "березень",
"4": "квітень",
"5": "травень",
"6": "червень",
"7": "липень",
"8": "серпень",
"9": "вересень",
"10": "жовтень",
"11": "листопад",
"12": "грудень"
}
}
50 changes: 50 additions & 0 deletions uk/site.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"title": "Специфікуючи JavaScript.",
"lang": "uk",
"navigation": {
"TC39": {
"title": "TC39",
"agenda": "Агенда зустрічей",
"notes": "Протоколи зустрічей",
"sub-menu": "Відкрити меню «TC39»"
},
"specs": {
"title": "Специфікації",
"proposals": "Активні пропозиції",
"ecma-262": "ECMA-262, ECMAScript",
"ecma-402": "ECMA-402, Intl API",
"ecma-404": "ECMA-404, JSON",
"ecma-414": "ECMA-414, ECMAScript Specification Suite",
"sub-menu": "Відкрити меню «Специфікації»"
},
"contribute": {
"title": "Зробити внесок",
"proposals": "Зробити внесок у специфікацію",
"tests": "Брати участь у написанні тестів",
"read": "Як читати специфікацію",
"discourse": "Приєднуйся до обговорень",
"sub-menu": "Відкрити меню «Зробити внесок»"
},
"state-of-proposals": "Статус пропозицій",
"skip-content": "Перейти до змісту",
"open": "Відкрити меню"
},
"footer": {
"connect": "Контакти",
"contribute": "Взяти участь",
"standards": "Стандарти",
"proposals": "Пропозиції",
"archives": "Архіви",
"process": "Процес",
"coc": "Норми поведінки",
"feedback": "Ми будемо вдячні за зворотній зв'язок.",
"feedback-prompt": "Будь ласка, <a href=\"https://github.com/tc39/tc39.github.io/issues/new\" target=\"_blank\">відкрийте issue</a> у <a href=\"https://github.com/tc39/tc39.github.io\" target=\"_blank\">репозиторії нашого сайту</a>."
},
"links": {
"coc": "https://tc39.es/code-of-conduct",
"process": "https://tc39.es/process-document",
"contribute-to-proposals": "https://github.com/tc39/ecma262/blob/main/CONTRIBUTING.md#new-feature-proposals",
"contribute-to-tests": "https://github.com/tc39/test262/blob/main/CONTRIBUTING.md",
"discourse": "https://es.discourse.group/"
}
}
62 changes: 62 additions & 0 deletions uk/stage3.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
{
"proposal-regexp-legacy-features": {
"title": "Застарілі можливості RegExp в JavaScript",
"description": "Чернетка специфікації для застарілих можливостей RegExp в JavaScript, тобто статичних властивостей конструктора виду RegExp.$1, а також методу RegExp.prototype.compile."
},
"proposal-hashbang": {
"title": "Граматика Hashbang",
"description": "Це пропозиція щодо стандартизації використання Shebang / Hashbang відповідно до того, як вони фактично вже використовуються в деяких CLI-середовищах JS. Наразі такі середовища видаляють Shebang для того, щоб згенерувати валідний вихідний код на JS перед тим, як передати його на виконання JS-двигунам. Ця пропозиція дозволить уніфікувати та стандартизувати таке використання."
},
"proposal-atomics-wait-async": {
"title": "<code>Atomics.waitAsync</code>",
"description": "Пропозиція щодо додавання атомарної операції очікування асинхронної операції в ECMAScript, перш за все, для використання в агентах, в яких неможлива блокування."
},
"proposal-relative-indexing-method": {
"title": "<code>.at()</code>",
"description": "Пропозиція щодо додавання методу <code>.at()</code> в усі основні індексовані класи (такі як: <code>Array</code>, <code>String</code>, <code>TypedArray</code>)."
},
"proposal-import-assertions": {
"title": "Import assertions",
"description": "Пропозиція щодо додавання синтаксису для імпорту модулів ES з додатковими твердженнями."
},
"proposal-json-modules": {
"title": "JSON Modules",
"description": "Пропозиція щодо імпорту JSON-файлів як модулів."
},
"proposal-private-fields-in-in": {
"title": "Егрономічні Brand Checks",
"description": "Пропозиція про надання можливості перевірки наявності приватного поля без кидання виключень"
},
"proposal-class-static-block": {
"title": "Class Static Block",
"description": "Статичні блоки класу надають механізм для виконання додаткових ініціалізацій під час обчислення дефініції класу. Ця пропозиція не є заміщенням для публічних полів, оскільки вони надають корисну інформацію для інтрументів статичного аналізу та є валідним таргетом для декораторів. Натомість, ця пропозиція призначена для доповнення пркатичних випадків та забезпечення нових, котрі наразі не покриваюится цією пропозицією."
},
"proposal-error-cause": {
"title": "Нове поле класу Error, під назвою cause",
"description": "Помилки створюються для вираження аномалій під час виконання програми. Щоб допомогти в діагностиці неочікуваної поведінки, помилки потрібно доповнити контекстною інформацією, такою як повідомлення про помилку, властивості екземпляра помилки, щоб пояснити, що сталося в цей час. Якщо помилка була викликана з глибоких внутрішніх методів, викликана помилка може бути не такою простою для розуміння без належного шаблону обробки виключень. Ця пропозиція вводить зручний спосіб передачі причини (cause)."
},
"proposal-temporal": {
"title": "Temporal",
"description": "Клас Date був давньою проблемою в ECMAScript. Ця пропозиція вводить Temporal - глобальний об'єкт, який діє як простір імен (як Math), що приносить сучасний API для роботи з датою та часом у мову ECMAScript. Для детального розбору мотивації - дивіться файл readme пропозиції."
},
"proposal-accessible-object-hasownproperty": {
"title": "Доступний Object.prototype.hasOwnProperty()",
"description": "Пропозиція щодо додавання методу Object.hasOwn(), який робить Object.prototype.hasOwnProperty() більш доступним."
},
"proposal-resizablearraybuffer": {
"title": "Масиви ArrayBuffer, що змінюються та розширюються на місці",
"description": "ArrayBuffer-и забезпечили комфортну роботу із бінарними даними у пам'яті та користуються великим успіхом. Ця пропозиція розширює конструктори ArrayBuffer, додаючи додатковий параметр - максимальну довжину, яка дозволяє змінювати розмір буферів на місці. Аналогічно, SharedArrayBuffer розширюється додаванням додаткової максимальної довжини, що дозволяє змінювати розмір на місці. Метод transfer також переосмислюється у цій пропозиції, так як це стандартний спосіб від'єднання ArrayBuffer, виконання переміщень без копіювання та \"фіксації\" екземплярів resizable ArrayBuffer до екземплярів ArrayBuffer."
},
"proposal-array-find-from-last": {
"title": "Array.prototype.findLast and Array.prototype.findLastIndex",
"description": "Пропозиція щодо введення методу для пошуку відповідного елементу чи індексу з кінця масиву."
},
"proposal-shadowrealm": {
"title": "ShadowRealm API",
"description": "ShadowRealms — це окреме глобальне середовище зі своїм глобальним об'єктом, інтристиками та вбудованими об'єктами (стандартні об'єкти, які не прив'язані до глобальних змінних, таких як початкове значення Object.prototype)."
},
"proposal-array-grouping": {
"title": "Array Grouping",
"description": "Пропозиція щодо того, як зробити групування масивів простішим."
}
}
8 changes: 8 additions & 0 deletions uk/uk.11tydata.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
module.exports = {
intro: require("./intro.json"),
proposals: require("./proposals.json"),
site: require("./site.json"),
stage3: require("./stage3.json"),
locale: "ua",
lang: "ua",
};