import 'ru/ru_translations.dart'; //import 'en_us/en_us_translations.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/cupertino.dart'; import '../core/app_export.dart'; class AppLocalization { AppLocalization(this.locale); Locale locale; static final Map> _localizedValues = { 'ru': ru, }; /*static final Map> __localizedValues = { 'en': enUs };*/ static AppLocalization of() { final context = NavigatorService.navigatorKey.currentContext; if (context != null) { return Localizations.of(context, AppLocalization)!; } else { // Обработка ситуации, когда context равен null return AppLocalization(Locale( 'ru', '', )); // Возвращаем дефолтное значение или обработку ошибки } } static List languages() => _localizedValues.keys.toList(); String getString(String text) => _localizedValues[locale.languageCode]![text] ?? text; } class AppLocalizationDelegate extends LocalizationsDelegate { const AppLocalizationDelegate(); @override bool isSupported(Locale locale) => AppLocalization.languages().contains(locale.languageCode); //Returning a SynchronousFuture here because an async "load" operation //cause an async "load" operation @override Future load(Locale locale) { return SynchronousFuture(AppLocalization(locale)); } @override bool shouldReload(AppLocalizationDelegate old) => false; } extension LocalizationExtension on String { String get tr => AppLocalization.of().getString(this); }