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

How to insert a placeholder in a json key:value ? Flutter

我正在将我的 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}',但是如果我需要在翻译后的句子中间插入一个值,例如一条消息,我不知道如何去完成它。 我需要它来制作传入推送通知的本地化版本,并且它们有参数。

在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 中实现这一点有什么建议吗?

非常感谢

有人向我推荐了这个包 https://pub.dev/packages/sprintf#-installing-tab-,它的工作原理正是我需要的。 Sprintf 只允许您在字符串中指定一个或多个占位符并传递一组参数。 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]);

希望这对其他人有帮助。