Переклад файлів Flutter ARB
Файл .arb — це JSON з ICU-повідомленнями та блоком метаданих @key поруч із кожним рядком. KAERIS перекладає повідомлення, зберігає метадані та перевіряє синтаксис ICU після цього.
KAERIS переклав цю сторінку та перевірив кожен рядок зворотним перекладом. Носій мови ще не переглядав її. Оригінал англійською
Як побудований файл ARB
Звичайний JSON. Кожне повідомлення знаходиться поруч із записом @message з його описом та типами заповнювачів; @@locale називає мову. Множини та вибори є рядками ICU: {count, plural, =0{…} one{…} few{…} many{…} other{…}}.
{
"@@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
Синтаксис ICU — це код
Одна пропущена дужка або втрачене гілкування ламає згенерований Dart. KAERIS порівнює блоки ICU з оригіналом і повідомляє про пропущену точну гілку, наприклад
=0.Мови з більшою кількістю форм множини
Російська потребує
fewіmanyкрімoneіother; перевірка повідомляє про відсутню форму для відповідних мов.Метадані для шаблону, а не для перекладу
@keyзаписи (опис, типи заповнювачів) зберігаються у виводі;@@localeпереписується для цільової мови.Заповнювачі мають імена
{name}має зберігати своє ім’я, бо генератор пов’язує його з типом у блоці@.
Реальний запуск: перекладено німецькою та перевірено
Реальний запуск, 27 жовтня 2026, без ручних правок: kaeris translate app_en.arb --langs de з kaeris 0.2.35, 2.7 секунди, модель google/gemini-2.5-flash-lite, стандарт безкоштовного рівня. Нижче — німецький файл, який він створив, і що kaeris check про нього каже.
{
"@@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 check --source app_en.arb --langs de ✓ de: complete & placeholder-safe ✓ all locales complete & placeholder-safe
Що KAERIS робить з цим
Метадані збережені, локаль переписана
@keyблоки збережені;@@localeвстановлено для цільової мови.Перевірка ICU
Втрачені гілки, змінні та пошкоджені дужки знаходяться тією ж перевіркою, що й на сайті.
Тільки нові ключі
--only-newпрацює для ARB: редаговані та нові ключі перекладаються, решта повторно використовується. Пресети:kaeris init --preset flutter-arb.Перевірка в терміналі
kaeris checkчитає ARB-файли напряму, без ключа.
Запустіть у три кроки
Встановіть CLI
Виконайте
pip install kaeris.Перекладіть шаблон
Виконайте
kaeris translate lib/l10n/app_en.arb --langs de,ja.Перевірте результат
Виконайте
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