feat(i18n): raise translation coverage across all 20 locales (#332)

Close genuinely-untranslated UI strings and fix orthography/diacritic
errors across every non-English locale, while keeping legitimate cognates,
loanwords, and technical tokens (OIDC, SAML, PDF, YAML, brand names) as-is.

- Untranslated strings closed: 225 (976 -> 751 remaining; the remainder are
  legit cognates / brand / format tokens that natives keep in English)
- Orthography: Italian 52 accent fixes (verb forms, a/e/i finals), Vietnamese
  41 strings with restored tone marks, Turkish 35, Polish 42, Dutch 17 (trema),
  plus smaller passes in es/fr/sv/pt-BR
- Biggest gap wins: Indonesian 102 -> 72; every CJK/Cyrillic/Arabic/Indic
  locale roughly halved its English leftovers

Cross-locale key parity preserved exactly; all placeholders intact.

Verified: pnpm typecheck, i18n parity/locale/tool-i18n tests (43/43),
placeholder-integrity check (0 mismatches), Biome.
This commit is contained in:
SnapOtter
2026-06-23 00:10:13 +08:00
committed by GitHub
parent 7a70affac5
commit ffbf4f9e10
20 changed files with 432 additions and 431 deletions
+12 -12
View File
@@ -68,8 +68,8 @@ export const ru: TranslationKeys = {
},
modalities: {
image: "Изображение",
video: "Video",
audio: "Audio",
video: "Видео",
audio: "Аудио",
documentsAndFiles: "PDF и файлы",
},
tools: {
@@ -1503,7 +1503,7 @@ export const ru: TranslationKeys = {
text: "Текст",
wifi: "WiFi",
vcard: "vCard",
email: "Email",
email: "Эл. почта",
phone: "Телефон",
sms: "SMS",
styling: "Стилизация",
@@ -1538,9 +1538,9 @@ export const ru: TranslationKeys = {
errorFailed: "Не удалось захватить страницу",
placeholder: 'Введите URL и нажмите "Захватить"',
presets: {
desktop: "Desktop",
tablet: "Tablet",
mobile: "Mobile",
desktop: "Компьютер",
tablet: "Планшет",
mobile: "Мобильный",
custom: "Пользовательский",
},
},
@@ -1837,7 +1837,7 @@ export const ru: TranslationKeys = {
progressLabel: "Создание GIF",
},
"resize-video": {
preset: "Preset",
preset: "Шаблон",
width: "Ширина (px)",
height: "Высота (px)",
hint: "Оставьте одно измерение пустым для сохранения пропорций",
@@ -1875,7 +1875,7 @@ export const ru: TranslationKeys = {
brightness: "Яркость",
contrast: "Контрастность",
saturation: "Насыщенность",
gamma: "Gamma",
gamma: "Гамма",
submit: "Применить",
submitBatch: "Применить ({count} файлов)",
progressLabel: "Настройка цвета",
@@ -2131,7 +2131,7 @@ export const ru: TranslationKeys = {
strip: "Удалить все метаданные",
title: "Название",
artist: "Исполнитель",
album: "Album",
album: "Альбом",
submit: "Применить метаданные",
submitBatch: "Применить метаданные ({count} файлов)",
progressLabel: "Применение метаданных",
@@ -2234,7 +2234,7 @@ export const ru: TranslationKeys = {
progressLabel: "Шифрование",
},
"unlock-pdf": {
password: "Password",
password: "Пароль",
submit: "Разблокировать",
submitBatch: "Разблокировать ({count} файлов)",
progressLabel: "Дешифрование",
@@ -2957,7 +2957,7 @@ export const ru: TranslationKeys = {
runsColumn: "Запуски",
userColumn: "Пользователь",
bytesInColumn: "Байт на входе",
poolColumn: "Pool",
poolColumn: "Пул",
p50Column: "p50",
p95Column: "p95",
storageHeading: "Хранилище библиотеки",
@@ -3259,7 +3259,7 @@ export const ru: TranslationKeys = {
toolsUsed: "Использованные инструменты",
none: "Нет",
delete: "Удалить",
pipeline: "Pipeline",
pipeline: "Конвейер",
download: "Скачать",
},
dropzone: {