init method
Future<void>
init({
- LocaleType localeType = LocaleType.asDefined,
- required String languageCode,
- 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;
}