
Превеждайте ARB файлове за Flutter за секунди
Метаданните остават непокътнати. Заместителите се запазват. Формите за множествено число са правилни според CLDR. Вашите ARB файлове се превеждат, без да се нарушава работата на flutter gen-l10n.
Преводът на ARB файлове нарушава компилациите на Flutter
ARB файловете изглеждат като JSON, но не са. Те съдържат записи с метаданни, чиито имена започват с @, дефиниции на заместители с анотации за тип и ICU форми за множествено число, които трябва стриктно да спазват правилата на CLDR. Универсалните инструменти за превод повреждат всичко това, а flutter gen-l10n се проваля без предупреждение или извежда неясни грешки.
Записите с метаданни, чиито имена започват с @, се превеждат или изтриват, което поврежда дефинициите и описанията на заместителите
Имената на заместителите във фигурни скоби се превеждат, преименуват или премахват, което причинява сривове по време на изпълнение
ICU формите за множествено число изискват точните CLDR категории за всеки език, но универсалните инструменти или ги пропускат, или създават невалидни структури
Заглавният ред @@locale се поврежда или не съответства на съдържанието, поради което flutter gen-l10n отнася преводите към грешния език
{
"@@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"
}
}
}
}{
"@@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 стек
Как работи

Без ръчно копиране и поставяне. Без извличане на низове. Получавате направо преведените файлове.
Изпробвайте i18n Agent сега
Пуснете тук Вашия файл за превод
JSON, YAML, PO, XML, CSV, Markdown, Properties
или натиснете, за да изберете файл
Целеви езици
Често задавани въпроси
Разработчик ли сте?
Инсталирайте CLI инструмента и преведете първия си файл за 2 минути.
Инсталирайте CLI инструментаКорпоративен екип ли сте?
Все още сте обвързани с договор за TMS? Нека обсъдим миграцията.