-
-
Notifications
You must be signed in to change notification settings - Fork 2
uk CONTRIBUTING I18n
SelenaCore постачається 16 мовами (2 — людиною, 14 — машиною). Цей документ пояснює, як покращити вже наявний переклад і як запропонувати нову мову.
Кожна цільова мова збирається з до чотирьох файлів, за пріоритетом:
src/i18n/locales/{lang}.ts ← ручний (найвищий)
src/i18n/locales/{lang}.community.json ← виправлення спільноти
src/i18n/locales/auto/{lang}.auto.json ← згенероване машиною (найнижчий)
src/i18n/locales/en.ts ← англійський запасний
Коли ви відкриваєте UI польською, i18next зливає їх зліва направо:
ручне має пріоритет над community, community — над auto. en.ts
закриває все, чого немає в цільовій мові.
Така ж ієрархія у віджетів / сторінок налаштувань системних модулів
(system_modules/*/locales/{lang}.{auto,community}.json) та спільних
рядків через /api/i18n/bundle/*.
Це найчастіший внесок. Argos робить основну частину перекладу, але
ламається на крайніх випадках (одиниці часу, відмінювання,
багатозначні технічні терміни). Ви виправляєте їх, не чіпаючи
.auto.json напряму.
-
Форкніть репозиторій SelenaCore.
-
Знайдіть проблемні ключі. Відкрийте UI цільовою мовою і помітьте, що читається дивно. Файл
auto.jsonмістить машинні переклади — корисний як довідник. -
Створіть community-override. У
src/i18n/locales/створіть{lang}.community.json:{ "layout.total": "{{count}} łącznie", "integrityPage.metaLine": "SHA256 · {{checks}} kontroli · co 30 s" }Використовуйте ті самі flat-ключі, що в
en.ts(вкладені ключі склеєні крапкою:layout.total).Не треба перекладати кожен ключ — усе, що не включено, відкочується на auto-рівень. Почніть із 10-20 ключів, які найбільше дратують.
-
Зберігайте плейсхолдери.
{{count}},{{name}},{{lang}}тощо мають з'являтися у вашому перекладі точно так само, як в англійській версії. -
Перевіряйте форми множини. Ключі з суфіксами
_one,_few,_many,_other— це CLDR-варіанти, які використовуються коли{{count}}вимагає різної граматики. Для слов'янських мов (ru, pl, cs, uk) їх чотири. Якщо виправляєте одну форму — виправте всі для цього ключа. -
Локальна перевірка.
python scripts/i18n_diff.py
-
Відкрийте PR з назвою
i18n({lang}): <що виправили>.
Коли для мови існує .community.json, у LanguagePicker поряд із нею
показується бейдж "Community-improved".
-
Відкрийте Language request issue.
-
Наступний запуск CI автоматично згенерує
{code}.auto.json. -
Полірують через
{code}.community.jsonяк описано вище.
-
Не редагуйте
{lang}.auto.jsonнапряму. Перегенерується CI при кожній змініen.ts— ваші правки затруться. -
Не перекладайте технічні терміни з глосарія.
SHA256,Piper,Ollama,Bluetoothтощо зберігаються як є. Якщо вважаєте, що термін ПОВИНЕН перекладатись (якProvider→Anbieterв німецькій), додайте його доper_language_overridesуsrc/i18n/glossary.json, а не у community-файл. -
Не вигадуйте нові ключі. Якщо немає в
en.ts— UI не використає. Для нових ключів потрібна окрема PR на англійське джерело.
# Відповідність ключів між en.ts та всіма manual-tier файлами
python scripts/i18n_diff.py
# Сканер хардкодних рядків, які пропустили i18n
python scripts/i18n_audit.py
# Лінт-гейт CI (parity + baseline хардкодів)
python scripts/i18n_lint.pyВідкрийте обговорення на GitHub або пінґніть майнтейнера в issue — tooling для перекладів ще молодий, і ми раді доопрацьовувати workflow на основі реального фідбеку.
🤖 This wiki is auto-synced from docs/ in the main repo. Hand-edits on the wiki UI get overwritten on the next push. Open a PR against the main repo instead.
MIT License · Sponsor · Ko-fi
SelenaCore
🇬🇧 English
Getting started
Architecture
Voice & translation
Hardware integration
Development
- Modules overview
- Module development
- System module development
- Module API guide
- Module bus protocol
- Widget development
- User manager / auth
Reference
🇺🇦 Українська
Початок
Архітектура
Голос і переклад
Інтеграція заліза
Розробка
- Розробка модулів
- Розробка системних модулів
- Module API
- Module bus
- Widget development
- User manager / auth
Довідник