Flutter localization with dynamic strings in json files

1.6k Views Asked by At

Flutter localization: Can we directly replace some regex pattern in string to get dynamic string using json language files instead of using .arb files to avoid so many overheads of using .arb? Is there any limitation in this approach of direct replace and use instead of arb & Intl library?

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

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

There are 1 best solutions below

5
On

Yes it's possible. Have a try with this.
This assumes that your json contents something like "gd_morning": "Good Morning {0}" for instance

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