Как хранить и получать доступ к объектам JSON в файле arb во флаттере?
Реализую локализацию на флаттере. Из того, что я прочитал в документации, я понял, что все переводы должны быть в папке root / lib / l10n / . У меня в нем два файла app_en.arb и app_hi.arb . Я следил за этим официальным документом по локализации флаттера . Читая, я узнал, что файл arb принимает формат json . С примером, приведенным в документе, который принимает пару ключ-значение, он работает нормально.
{
"helloWorld": "Hello World!",
"@helloWorld": {
"description": "The conventional newborn programmer greeting"
}
}
Но я хочу сохранить такой объект json для перевода
app_en.arb
{
"helloWorld": "Hello World!",
"@helloWorld": {
"description": "The conventional newborn programmer greeting"
},
"content": [
{
"id": "one",
"question": "What's your name?"
},
{
"id": "two",
"question": "What's your name?"
}
]
}
app_hi.arb
{
"helloWorld": "नमस्ते",
"content": [
{
"id": "एक",
"question": "आपका नाम क्या है?"
},
{
"id": "दो",
"question": "आपका नाम क्या है?"
}
]
}
Но выдает ошибку
Значение «содержимого» не является строкой. Не удалось создать пакет синтетических локализаций.
можно ли хранить такие объекты json? если нет, то какой альтернативный способ?
1 ответ
Локализация .arb очень категорично относится к своему формату. Поэтому наличие произвольной структуры данных там не работает, потому что она полагается на анализатор Flutter для ее анализа и создания класса FooLocalizations внутри вашей папки .dart_tool/flutter_gen/. Если вы хотите использовать произвольный формат JSON - просто создайте файлы JSON в папке с ресурсами и получите к ним доступ через rootbundle.load(путь) и сериализуйте байты в формат JSON :)