Перевести

Перевести файлы Flutter ARB

Файл .arb — это JSON с сообщениями ICU и блоком метаданных @key рядом с каждой строкой. KAERIS переводит сообщения, сохраняет метаданные и проверяет синтаксис ICU после этого.

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

Как устроен файл ARB

Простой JSON. Каждое сообщение находится рядом с записью @message с его описанием и типами заполнителей; @@locale указывает язык. Множественное число и выбор — это строки ICU: {count, plural, =0{…} one{…} few{…} many{…} other{…}}.

Исходный файлapp_en.arb
{
  "@@locale": "en",
  "welcome": "Welcome back, {name}!",
  "@welcome": {
    "description": "Greeting on the home screen",
    "placeholders": { "name": { "type": "String" } }
  },
  "itemCount": "{count, plural, =0{No items} one{{count} item} other{{count} items}}",
  "@itemCount": {
    "placeholders": { "count": { "type": "int" } }
  }
}

На что обратить внимание в переводах ARB

Реальный запуск: переведено на немецкий и проверено

Реальный запуск, 27 октября 2026 года, ничего не редактировалось вручную: kaeris translate app_en.arb --langs de с kaeris 0.2.35, 2,7 секунды, модель google/gemini-2.5-flash-lite, бесплатный тариф по умолчанию. Ниже приведен немецкий файл, который он написал, и что говорит kaeris check об этом.

Результат на немецкомapp_de.arb
{
  "@@locale": "de",
  "welcome": "Willkommen zurück, {name}!",
  "itemCount": "{count, plural, =0{Keine Artikel} one{{count} Artikel} other{{count} Artikel}}",
  "@welcome": {
    "description": "Greeting on the home screen",
    "placeholders": {
      "name": {
        "type": "String"
      }
    }
  },
  "@itemCount": {
    "placeholders": {
      "count": {
        "type": "int"
      }
    }
  }
}
kaeris checkexit code 0
$ kaeris check --source app_en.arb --langs de
✓ de: complete & placeholder-safe
✓ all locales complete & placeholder-safe

Что KAERIS делает с этим

Выполните в три шага

  1. Установите CLI

    Выполните pip install kaeris.

  2. Переведите шаблон

    Выполните kaeris translate lib/l10n/app_en.arb --langs de,ja.

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

    Выполните kaeris check с исходным файлом и --pattern 'app_{lang}.arb'; он завершается с кодом 1 при ошибке в переменной или блоке ICU.

pip install kaeris
kaeris init --preset flutter-arb
kaeris translate lib/l10n/app_en.arb --langs de,ja --verify
kaeris check --source lib/l10n/app_en.arb --langs de,ja --pattern 'app_{lang}.arb'

Вопросы

Сохраняются ли записи @metadata?

Да. Описания и типы плейсхолдеров остаются рядом с каждым сообщением; @@locale перезаписывается для целевого языка.

Что, если множественное число ICU в переводе некорректно?

Проверка сравнивает блоки ICU с исходным кодом и указывает на проблему, например, пропущенную ветку =0. В реальном запуске выше множественное число вернулось со всеми тремя ветками, и проверка ничего не сообщила.

Это бесплатно?

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

Могу ли я запускать его из терминала или в CI?

Да. pip install kaeris, затем kaeris translate lib/l10n/app_en.arb --langs de,ja. См. также Flutter. GitHub Action выполняет тот же перевод в pull request. Документация CLI · GitHub Action

Продолжайте

Справочник по CLI · Справочник по проверке · Перевести в браузере · Бесплатная проверка · Конвертировать форматы · Псевдолокализация

Другие форматы: JSON · YAML · .po · XLIFF · .strings · .xcstrings · .properties · .resx · CSV · Markdown · Fluent · Android XML