Как хранить и получать доступ к объектам 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 :)

Другие вопросы по тегам