init method

Future<void> init({
  1. LocaleType localeType = LocaleType.asDefined,
  2. required String languageCode,
  3. String assetsDirectory = 'lang/',
})

Initialize NyLocalization with the specified configuration.

Implementation

Future<void> init({
  LocaleType localeType = LocaleType.asDefined,
  required String languageCode,
  String assetsDirectory = 'lang/',
}) async {
  if (!assetsDirectory.endsWith('/')) {
    assetsDirectory = '$assetsDirectory/';
  }
  _assetsDir = assetsDirectory;
  _localeType = localeType;

  _locale = Locale(languageCode);

  if (_localeType == LocaleType.device) {
    final Locale deviceLocale = PlatformDispatcher.instance.locale;
    _locale = Locale(deviceLocale.languageCode);
  }

  // Get the current language from the language switcher if available.
  // Skip in test mode to avoid storage hangs.
  if (!Nylo.isTestMode) {
    final Map<String, dynamic>? savedLanguage =
        await LanguageSwitcher.currentLanguage();
    if (savedLanguage != null) {
      _locale = Locale(savedLanguage.entries.first.key);
    }
  }

  _fallbackLanguageCode = languageCode;

  // The active and fallback files are independent; load them concurrently.
  final bool needsFallback = _locale!.languageCode != languageCode;
  final List<Map<String, dynamic>> results = await Future.wait([
    _loadLanguageFile(
      _locale!.languageCode,
      fallbackLanguageCode: languageCode,
    ),
    if (needsFallback) _loadLanguageFile(languageCode),
  ]);
  _values = results[0];
  _fallbackValues = needsFallback ? results[1] : null;
}