问题描述
Flutter 本地化:我们是否可以直接替换字符串中的一些正则表达式模式来使用 json 语言文件而不是使用 .arb 文件来获取动态字符串,以避免使用 .arb 的这么多开销?这种直接替换和使用代替arb & Intl库的方法有什么限制吗?
"gd_morning": "Good Morning {name}",AppLocalizations.of(context)
.get('gd_morning')
.replaceAll('{name}','My Name'),
解决方法
是的,这是可能的。试试这个。
这假设您的 json 内容类似于 "gd_morning": "Good Morning {0}"
,例如
String translate(String key,{List<dynamic> args}) {
if (null == _translatedStrings[key]) return "${locale.languageCode}[$key]";
_translatedKey = _translatedStrings[key];
if (null == args || args.isEmpty) return _translatedKey;
else {
for(int i = 0; i < args.length; ++i) _translatedKey = _translatedKey.replaceAll("{$i}",args[i]);
return _translatedKey;
}
}