如何在json key:value中插入一个占位符?扑

时间:2020-04-18 06:35:27

标签: flutter localization

我正在将Swift应用程序移植到Flutter,并对其进行本地化,我遵循的是https://github.com/billylev/flutter_localizations,但是我看不到如何插入占位符以在转换后的值中插入值。 基本上,该指南使用

String text(String key) {
    return _localisedValues[key] ?? "$key not found";
  } 

从.json文件中获取对应的key:value对,

{
  "Shop": "Negozio",
}

我只是通过Text小部件将其传递为:

Text(AppLocalizations.instance.text('Shop'))

如何修改text以插入一个或多个占位符,以及如何构造.json? 说出值"User": "User",我想在交易之后插入一个值,我可以简单地使用字符串总和并将值添加为`Text( AppLocalizations.instance.text('User')+'$ {widget.user.name}',但是如果我需要在翻译后的句子中间插入一个值(例如消息),则看不到如何完成它。 我需要它来制作传入的推送通知的本地化版本,并且它们具有args。

在Swift中,我是这样的:

"ORDER_RECEIVED_PUSH_TITLE" = "Order number: %@";
"ORDER_RECEIVED_PUSH_SUBTITLE" = "Shop: %@";
"ORDER_RECEIVED_PUSH_BODY" = "Thank you %@! We received your order and we'll let you know when we start preparing it and when it's ready. Bye";

关于如何在Flutter中实现这一目标的任何建议?

非常感谢

1 个答案:

答案 0 :(得分:0)

有人建议我使用这个软件包https://pub.dev/packages/sprintf#-installing-tab-,它可以根据需要工作。 Sprintf只允许您在String中指定一个或多个占位符,并传递一个args数组。 https://developermemos.com/posts/using-sprintf-flutter-dart。欲了解更多信息,即使这样也差不多。例如

"ORDER_RECEIVED_PUSH_TITLE" = "Order number: %@";

.json文件中的

为:

{
  "ORDER_RECEIVED_PUSH_TITLE": "Oder number: %s"
}

并使用它

String orderNumber = 'some uuid';
Text(Sprintf(AppLocalitazions.instance.text('ORDER_RECEIVED_PUSH_TITLE'),[orderNumber]);

希望这对其他人有帮助。