我正在将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中实现这一目标的任何建议?
非常感谢
答案 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: %@";
为:
{
"ORDER_RECEIVED_PUSH_TITLE": "Oder number: %s"
}
并使用它
String orderNumber = 'some uuid';
Text(Sprintf(AppLocalitazions.instance.text('ORDER_RECEIVED_PUSH_TITLE'),[orderNumber]);
希望这对其他人有帮助。