45 lines
1.2 KiB
Dart
45 lines
1.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
class AppLocalizations {
|
|
AppLocalizations(this.locale);
|
|
|
|
final Locale locale;
|
|
|
|
static AppLocalizations of(BuildContext context) =>
|
|
Localizations.of<AppLocalizations>(context, AppLocalizations)!;
|
|
|
|
static List<String> languages() => ['en'];
|
|
|
|
String get languageCode => locale.languageCode;
|
|
int get languageIndex => languages().contains(languageCode)
|
|
? languages().indexOf(languageCode)
|
|
: 0;
|
|
|
|
String getText(String key) =>
|
|
(kTranslationsMap[key] ?? {})[locale.languageCode] ?? '';
|
|
|
|
String getVariableText({
|
|
String enText = '',
|
|
}) =>
|
|
[enText][languageIndex];
|
|
}
|
|
|
|
class AppLocalizationsDelegate extends LocalizationsDelegate<AppLocalizations> {
|
|
const AppLocalizationsDelegate();
|
|
|
|
@override
|
|
bool isSupported(Locale locale) =>
|
|
AppLocalizations.languages().contains(locale.languageCode);
|
|
|
|
@override
|
|
Future<AppLocalizations> load(Locale locale) =>
|
|
SynchronousFuture<AppLocalizations>(AppLocalizations(locale));
|
|
|
|
@override
|
|
bool shouldReload(AppLocalizationsDelegate old) => false;
|
|
}
|
|
|
|
final kTranslationsMap =
|
|
<Map<String, Map<String, String>>>[].reduce((a, b) => a..addAll(b));
|