localizePlural method

String localizePlural(
  1. String key,
  2. int plural, [
  3. Map<String, String>? params
])

Tries to localize text by given key and plural.

count: { "0": "zero", "1": "single", "2": "few", "5": "many" "other": "none of above" }

plural: 1 returns 'single' plural: 4 returns 'few' plural: 9 returns 'many' plural: -1 returns 'none of above'

Enable/Disable debug mode to show/hide missing localizations.

Implementation

String localizePlural(String key, int plural, [Map<String, String>? params]) {
  if (_data.containsKey(key)) {
    if (_data[key] is Map) {
      final data = _data[key];
      final nums = <int>[];

      data.forEach(
          (num, value) => nums.add(Parse.toInteger(num, defaultValue: -1)));
      nums.sort();

      String? output;

      for (final num in nums.reversed) {
        if (plural >= num) {
          output = data[num.toString()];
          break;
        }
      }

      if (output == null && data.containsKey('other')) {
        output = data['other'];
      }

      if (output != null) {
        if (params != null) {
          output = Parse.format(output, params, _paramDecorator);
        }

        return output;
      }
    }

    return _data[key];
  }

  return debug ? '$key[$plural]_$_locale' : '';
}