mirror of
https://git.selfprivacy.org/kherel/selfprivacy.org.app.git
synced 2024-11-14 12:43:16 +00:00
81 lines
2.3 KiB
Dart
81 lines
2.3 KiB
Dart
import 'package:easy_localization/easy_localization.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
class Localization extends StatelessWidget {
|
|
const Localization({
|
|
required this.child,
|
|
super.key,
|
|
});
|
|
|
|
/// value for resetting locale in settings to system default
|
|
static const systemLocale = Locale('system');
|
|
|
|
// when adding new locale, add corresponding native language name to mapper
|
|
// below
|
|
static const supportedLocales = [
|
|
Locale('ar'),
|
|
Locale('az'),
|
|
Locale('be'),
|
|
Locale('cs'),
|
|
Locale('de'),
|
|
Locale('en'),
|
|
Locale('es'),
|
|
Locale('et'),
|
|
Locale('fr'),
|
|
Locale('he'),
|
|
Locale('ja'),
|
|
Locale('kk'),
|
|
Locale('lv'),
|
|
Locale('mk'),
|
|
Locale('pl'),
|
|
Locale('ru'),
|
|
Locale('sk'),
|
|
Locale('sl'),
|
|
Locale('th'),
|
|
Locale('uk'),
|
|
Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hans'),
|
|
];
|
|
|
|
// https://en.wikipedia.org/wiki/IETF_language_tag#List_of_common_primary_language_subtags
|
|
static final _languageNames = {
|
|
systemLocale: 'System default',
|
|
const Locale('ar'): 'العربية',
|
|
const Locale('az'): 'Azərbaycan',
|
|
const Locale('be'): 'беларуская',
|
|
const Locale('cs'): 'čeština',
|
|
const Locale('de'): 'Deutsch',
|
|
const Locale('en'): 'English',
|
|
const Locale('es'): 'español',
|
|
const Locale('et'): 'eesti',
|
|
const Locale('fr'): 'français',
|
|
const Locale('he'): 'עברית',
|
|
const Locale('ja'): '日本語',
|
|
const Locale('kk'): 'Қазақша',
|
|
const Locale('lv'): 'latviešu',
|
|
const Locale('mk'): 'македонски јазик',
|
|
const Locale('pl'): 'polski',
|
|
const Locale('ru'): 'русский',
|
|
const Locale('sk'): 'slovenčina',
|
|
const Locale('sl'): 'slovenski',
|
|
const Locale('th'): 'ไทย',
|
|
const Locale('uk'): 'Українська',
|
|
const Locale.fromSubtags(languageCode: 'zh', scriptCode: 'Hans'): '中文',
|
|
};
|
|
|
|
static String getLanguageName(final Locale locale) =>
|
|
_languageNames[locale] ?? locale.languageCode;
|
|
|
|
final Widget child;
|
|
|
|
@override
|
|
Widget build(final BuildContext context) => EasyLocalization(
|
|
supportedLocales: supportedLocales,
|
|
path: 'assets/translations',
|
|
fallbackLocale: const Locale('en'),
|
|
useFallbackTranslations: true,
|
|
saveLocale: false,
|
|
useOnlyLangCode: false,
|
|
child: child,
|
|
);
|
|
}
|