Перекласти

Переклад файлів локалізації i18next та JSON

JSON локалізації є вкладеним, а його рядки містять змінні, такі як {{name}}. Інструмент, який бачить лише текст, може перейменувати ключ, спростити вкладеність або перекласти змінну. KAERIS повертає файл у тому ж вигляді, з кожною змінною на її місці.

KAERIS переклав цю сторінку та перевірив кожен рядок зворотним перекладом. Носій мови ще не переглядав її. Оригінал англійською

Як побудований JSON файл локалізації

Один файл на мову (en.json, de.json) або один на простір імен (locales/en/common.json). Ключі є контрактом з вашим кодом, тому перекладаються лише значення. i18next записує форми множини як окремі ключі (inbox_one, inbox_other); next-intl, Vue I18n та FormatJS об’єднують їх в один рядок ICU.

Файл джерелаen.json
{
  "nav": { "greeting": "Welcome back, {{name}}!" },
  "inbox_one": "{{count}} new message",
  "inbox_other": "{{count}} new messages"
}

На що звертати увагу в перекладах JSON

Реальний запуск, до і після

Реальний запуск: наш тестовий файл із 97 рядків, німецька, 26 жовтня 2026, скорочено до чотирьох ключів. Останній рядок показує втрату, яку виявила перевірка під час цього запуску.

Доen.json
{
  "ph": {
    "mustache": "Hi {{firstName}}, your order {{orderId}} has shipped.",
    "reactTrans": "By continuing you accept our <0>Terms</0> and <1>Privacy Policy</1>.",
    "nesting": "$t(nav.cart) has been updated"
  },
  "icu": {
    "copiesLeft": "{count, plural, =0 {Sold out} one {Only # copy left} other {Only # copies left}}"
  }
}
Післяde.json
{
  "ph": {
    "mustache": "Hallo {{firstName}}, Ihre Bestellung {{orderId}} wurde versendet.",
    "reactTrans": "Durch die fortgesetzte Nutzung stimmen Sie unseren <0>Nutzungsbedingungen</0> und <1>Datenschutzrichtlinien</1> zu.",
    "nesting": "Der Warenkorb wurde aktualisiert"
  },
  "icu": {
    "copiesLeft": "{count, plural, =0 {Ausverkauft} one {Nur noch # Exemplar} other {Nur noch # Exemplare}}"
  }
}
Безкоштовна перевірка цього файлу/check
error ph.nesting: lost placeholder $t(nav.cart)

Що KAERIS робить з цим

Запустіть у три кроки

  1. Встановіть CLI

    Виконайте pip install kaeris. Обліковий запис не потрібен для безкоштовних лімітів.

  2. Перекладіть файл

    Виконайте kaeris translate en.json --langs de,ja --verify. Файли de.json та ja.json з’являться поруч із джерелом.

  3. Перевірте результат

    Виконайте kaeris check --source en.json --langs de,ja. Виходить з кодом 1, якщо змінна, число або ключ неправильні, щоб CI міг зупинити злиття.

pip install kaeris
kaeris init --preset i18next
kaeris translate en.json --langs de,ja --verify
kaeris check --source en.json --langs de,ja

Запитання

Які JSON розмітки працюють?

Плоскі та вкладені файли ключ-значення, які використовують i18next, Vue I18n, next-intl та FormatJS. Верхній рівень має бути об’єктом, наприклад {"greeting": "Hello"}. Масиви рядків також перекладаються.

Чи зберігає він посилання {{count}} та $t(…)?

Змінні та посилання порівнюються з оригіналом після перекладу. Рядок, у якому щось втрачено, позначається; приклад вище показує реальний запуск, де $t(nav.cart) було втрачено, і перевірка це виявила.

Це безкоштовно?

Так, без облікового запису: 10 000 символів на файл і до 8 мов за один запуск. Безкоштовний API-ключ збільшує ліміт файлу до 50 000 символів. Довічна ліцензія коштує $79 один раз, за вашим власним ключем OpenRouter; місячні плани починаються від $19. Ціни

Чи можу я запускати його з терміналу або в CI?

Так. pip install kaeris, потім kaeris translate en.json --langs de,ja. GitHub Action виконує той самий переклад у pull request. Документація CLI · GitHub Action

Продовжуйте

Довідник CLI · Довідник перевірки · Переклад у браузері · Безкоштовна перевірка · Конвертація форматів · Псевдолокалізація

Інші формати: YAML · .po · ARB · XLIFF · .strings · .xcstrings · .properties · .resx · CSV · Markdown · Fluent · Android XML