0

Flutter 本地化:我们可以直接替换字符串中的一些正则表达式模式,以使用 json 语言文件而不是使用 .arb 文件来获取动态字符串,以避免使用 .arb 的这么多开销吗?这种直接替换和使用而不是 arb & Intl 库的方法有什么限制吗?

"gd_morning": "Good Morning {name}",

AppLocalizations.of(context)
                .get('gd_morning')
                .replaceAll('{name}', 'My Name'),
4

1 回答 1

1

是的,这是可能的。试试这个。
这假设您的 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;
  }
}
于 2020-12-22T20:28:44.587 回答