loadAsync<T> method

  1. @override
Future<ZooperLocalizer<T>> loadAsync<T>(
  1. String path
)
override

Implementation

@override
Future<ZooperLocalizer<T>> loadAsync<T>(String path) async {
  var content = await rootBundle.loadString(path);
  var parsed = _csvParser.parse(content, delimiter);

  List<Locale> locales = [];

  // Load the available locales
  for (int i = 1; i < parsed[0].length; i++) {
    var locale = localeFromString(parsed[0][i]);
    locales.add(locale);
  }

  List<LocalizationEntry> entries = [];

  // Iterate over all lines
  for (int i = 1; i < parsed.length; i++) {
    // Iterate over all entries

    List<LocalizedValue> localizedValues = [];

    for (int n = 1; n < parsed[i].length; n++) {
      var localizedValue = LocalizedValue(locales[n - 1], parsed[i][n]);
      localizedValues.add(localizedValue);
    }

    LocalizationEntry entry = LocalizationEntry(parsed[i][0], localizedValues);
    entries.add(entry);
  }

  return ZooperLocalizer<T>(
    entries,
    fallbackLocale: fallbackLocale,
    localeDelegate: localeDelegate,
  );
}