0

我正在颤振中实施本地化。从我在文档中读到的内容,我知道所有的翻译都应该在root/lib/l10n/文件夹中。我有两个文件app_en.arbapp_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 对象?如果没有,另一种方法是什么?

4

1 回答 1

0

.arb 本地化对其格式非常固执己见。因此,在那里拥有任意数据结构是行不通的,因为它依赖于 Flutter 分析器来解析它并在 .dart_tool/flutter_gen/ 文件夹中生成一个“FooLocalizations”类。如果您想使用任意 JSON 格式 - 只需在资产文件夹中创建 JSON 文件并通过 rootbundle.load(path) 访问它们并将字节序列化为 JSON 格式:)

于 2021-09-12T07:04:15.687 回答