Files
eatvio_app/lib/localization/app_localization.dart
2024-06-25 16:05:55 +03:00

59 lines
1.7 KiB
Dart

import 'package:eatvio_app/app_router.dart';
import 'ru/ru_translations.dart';
//import 'en_us/en_us_translations.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/cupertino.dart';
class AppLocalization {
AppLocalization(this.locale);
Locale locale;
static final Map<String, Map<String, String>> _localizedValues = {
'ru': ru,
};
/*static final Map<String, Map<String, String>> __localizedValues = {
'en': enUs
};*/
static AppLocalization of() {
final context = AppRouter.navigatorKey.currentContext;
if (context != null) {
return Localizations.of<AppLocalization>(context, AppLocalization)!;
} else {
// Обработка ситуации, когда context равен null
return AppLocalization(Locale(
'ru',
'',
),); // Возвращаем дефолтное значение или обработку ошибки
}
}
static List<String> languages() => _localizedValues.keys.toList();
String getString(String text) =>
_localizedValues[locale.languageCode]![text] ?? text;
}
class AppLocalizationDelegate extends LocalizationsDelegate<AppLocalization> {
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<AppLocalization> load(Locale locale) {
return SynchronousFuture<AppLocalization>(AppLocalization(locale));
}
@override
bool shouldReload(AppLocalizationDelegate old) => false;
}
extension LocalizationExtension on String {
String get tr => AppLocalization.of().getString(this);
}