forked from eatvio/eatvio_app
59 lines
1.7 KiB
Dart
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);
|
|
}
|