Skip to main content
AI agent network visualization

Перекладайте файли Flutter ARB за секунди

Метадані без змін. Заповнювачі збережено. Форми множини відповідають CLDR. Ваші файли ARB перекладено без порушення роботи flutter gen-l10n.

Переклад ARB порушує збирання проєктів Flutter

Файли ARB схожі на JSON, але це не JSON. Вони містять записи метаданих із префіксом @, визначення заповнювачів з анотаціями типів і форми множини ICU, які мають точно відповідати правилам CLDR. Універсальні інструменти перекладу пошкоджують усі ці елементи, після чого flutter gen-l10n зазнає збою без повідомлення або видає незрозумілі помилки.

Записи метаданих із префіксом @ перекладаються або видаляються, через що пошкоджуються визначення й описи заповнювачів

Імена заповнювачів у фігурних дужках перекладаються, перейменовуються або видаляються, спричиняючи аварійне завершення під час виконання

Форми множини ICU потребують точних категорій CLDR для кожної мови, але універсальні інструменти або пропускають їх, або створюють недійсні структури

Заголовок @@locale пошкоджується або не відповідає вмісту, через що flutter gen-l10n призначає переклади неправильній мові

Оригінал (англійська)
lib/l10n/app_en.arb
{
  "@@locale": "en",
  "appTitle": "My Flutter App",
  "@appTitle": {
    "description": "The title of the application"
  },
  "greeting": "Hello, {name}!",
  "@greeting": {
    "description": "A greeting with the user's name",
    "placeholders": {
      "name": {
        "type": "String",
        "example": "John"
      }
    }
  },
  "itemCount": "{count, plural, =0{No items} =1{1 item} other{{count} items}}",
  "@itemCount": {
    "description": "Number of items in the cart",
    "placeholders": {
      "count": {
        "type": "int"
      }
    }
  },
  "lastLogin": "Last login: {date}",
  "@lastLogin": {
    "placeholders": {
      "date": {
        "type": "DateTime",
        "format": "yMMMd"
      }
    }
  }
}
Переклад (японська)
lib/l10n/app_ja.arb
{
  "@@locale": "de",
  "appTitle": "Meine Flutter-App",
  "@appTitle": {
    "description": "The title of the application"
  },
  "greeting": "Hallo, {name}!",
  "@greeting": {
    "description": "A greeting with the user's name",
    "placeholders": {
      "name": {
        "type": "String",
        "example": "John"
      }
    }
  },
  "itemCount": "{count, plural, =0{Keine Artikel} =1{1 Artikel} other{{count} Artikel}}",
  "@itemCount": {
    "description": "Number of items in the cart",
    "placeholders": {
      "count": {
        "type": "int"
      }
    }
  },
  "lastLogin": "Letzte Anmeldung: {date}",
  "@lastLogin": {
    "placeholders": {
      "date": {
        "type": "DateTime",
        "format": "yMMMd"
      }
    }
  }
}

Що зберігає i18n Agent

Записи метаданих із префіксом @

Усі метадані з префіксом @ — описи, заповнювачі й анотації типів — зберігаються точно у визначеному вигляді

Захист заповнювачів

Іменовані заповнювачі, як-от {userName}, {count} і {price}, розпізнаються та залишаються без змін у всіх перекладах

Форми множини CLDR

Категорії множини ICU (zero, one, two, few, many, other) правильно створюються для кожної цільової мови відповідно до правил CLDR

Структура JSON

Порядок ключів, вкладеність і специфічне для ARB форматування відповідають Вашому вихідному файлу, що полегшує порівняння змін.

Працює з Вашим стеком технологій Flutter

flutter gen-l10n (офіційний)
Easy Localization
Інтернаціоналізація GetX

Як це працює

How i18n Agent works: Install, Translate, Done
1
2
3
terminal
$translate_filesrc/messages/en.json
 --target["de", "ja", "es"]
Done.3 languages, 142 keys translated.

Без ручного копіювання та вставлення. Без вилучення рядків. Лише перекладені файли.

Спробуйте i18n Agent зараз

Перетягніть сюди файл для перекладу

JSON, YAML, PO, XML, CSV, Markdown, Properties

або натисніть, щоб вибрати

Цільові мови

Реєстрація не потрібнаМиттєвий розрахунок

Часті запитання

Ви розробник?

Встановіть інструмент CLI та перекладіть свій перший файл за 2 хвилини.

Встановити інструмент CLI

Ви представляєте корпоративну команду?

Досі зв’язані контрактом із постачальником TMS? Обговорімо перехід.