Lingo.dev + .arb (Flutter)
Lingo.dev CLI переводит файлы Flutter Application Resource Bundle (ARB), сохраняя метаданные, определения заполнителей и соответствие конвенциям локализации Flutter. CLI бесшовно работает с flutter gen-l10n
, поддерживает определения типов заполнителей для автодополнения в IDE, сохраняет контекст разработчика и документацию, а также строго следует стандартам спецификации ARB.
Быстрая настройка
Настройте для стандартной структуры ARB файлов Flutter:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"flutter": {
"include": ["lib/l10n/app_[locale].arb"]
}
}
}
Напоминание: [locale]
— это заполнитель, который должен оставаться в конфигурации буквально, так как он заменяется на фактический локаль во время выполнения CLI.
Перевод ARB файлов
npx lingo.dev@latest i18n
Сохраняет метаданные ARB, определения заполнителей и специфическое форматирование Flutter при переводе контента.
Возможности ARB для Flutter
Заполнители с типами
{
"welcomeMessage": "Привет, {name}, у вас {count} сообщений",
"@welcomeMessage": {
"description": "Приветственное сообщение с именем пользователя и количеством",
"placeholders": {
"name": {
"type": "String"
},
"count": {
"type": "int"
}
}
}
}
Формы множественного числа
{
"itemCount": "{count, plural, =0{нет элементов} =1{один элемент} other{{count} элементов}}",
"@itemCount": {
"description": "Количество элементов",
"placeholders": {
"count": {
"type": "int"
}
}
}
}
Сохранение метаданных
Метаданные ARB (записи @key
) остаются непереведёнными:
- Описания: Контекст разработчика сохраняется
- Заполнители: Определения типов поддерживаются
- Примеры: Примеры использования остаются неизменными
- Пользовательские атрибуты: Любые дополнительные метаданные сохраняются
Расширенная конфигурация
Несколько ARB файлов
"flutter": {
"include": [
"lib/l10n/app_[locale].arb",
"lib/l10n/errors_[locale].arb"
]
}
Блокировка ключей метаданных
"flutter": {
"include": ["lib/l10n/app_[locale].arb"],
"lockedKeys": ["@@locale", "@@last_modified"]
}