颤振本地化中的语言结构问题?

时间:2021-03-07 17:00:25

标签: flutter localization flutter-intl

我在 Flutter 中使用本地化。

这是英文文本:placed for $date

这是翻译文本:$date का लागि राखिएको

如您所见,文本中有一个变量(日期),并且由于两种语言的语法结构不同,变量必须放在不同的位置。

AppLocalizations.of(context).placed_for + date.toString()
// The usual way of doing this does not work due to different placing of the date variable.

我该如何处理这种情况?我是否必须编写自定义逻辑,或者是否已经有处理这种情况的方法。

1 个答案:

答案 0 :(得分:1)

我不习惯使用 AppLocalizations 本身,但它的工作方式似乎与 intl 相同。

如果是这样,只需编辑您的 arb 文件即可接收所需的参数:

"placed_for": "placed for {date}", 
"placed_for": "{date}  का लागि राखिएको",

那么您应该可以通过以下方式使用它:

AppLocalizations.of(context).placed_for(date.toString())

编辑:

您还需要将占位符定义添加到您的 arb 模板。示例:

{
  "helloWorld": "Hello {name}!",
  "@helloWorld": {
    "description": "The conventional newborn programmer greeting",
    "placeholders": {
      "name": {}
    }
  }
}

然后,在添加 placeholders 后,您可以使用生成的字符串:

AppLocalizations.of(context).helloWorld('Leandro'),

附注。您还可以添加多个占位符