使用 json 文件中的动态字符串进行 Flutter 本地化

问题描述

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;
  }
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...