dev
dart 99 lines 2.47 KB
Raw
1 import 'package:cake_wallet/generated/locales.dart';
2 import 'package:devicelocale/devicelocale.dart';
3 import 'package:intl/intl.dart';
4
5 class LanguageService {
6 static const Map<String, String> supportedLocales = {
7 'en': 'English',
8 'de': 'Deutsch (German)',
9 'es': 'Español (Spanish)',
10 'fa': 'فارسی (Persian)',
11 'fr': 'Français (French)',
12 // 'gn': 'Guarani (Guarani)',
13 'hi': 'हिंदी (Hindi)',
14 'ja': '日本 (Japanese)',
15 'ko': '한국어 (Korean)',
16 'nl': 'Nederlands (Dutch)',
17 'pl': 'Polski (Polish)',
18 'pt': 'Português (Portuguese)',
19 'pt_BR': 'Português Brasileiro (Brazilian Portuguese)',
20 'ru': 'Русский (Russian)',
21 'uk': 'Українська (Ukrainian)',
22 'zh': '简体中文 (Chinese Simplified)',
23 'hr': 'Hrvatski (Croatian)',
24 'it': 'Italiano (Italian)',
25 'th': 'ภาษาไทย (Thai)',
26 'ar': 'العربية (Arabic)',
27 'tr': 'Türkçe (Turkish)',
28 'my': 'မြန်မာ (Burmese)',
29 'bg': 'Български (Bulgarian)',
30 'cs': 'čeština (Czech)',
31 'ur': 'اردو (Urdu)',
32 'id': 'Bahasa Indonesia (Indonesian)',
33 'yo': 'Yorùbá (Yoruba)',
34 'ha': 'Hausa Najeriya (Nigeria)',
35 'tl': 'Filipino (Tagalog)',
36 'hy': 'Հայերեն (Armenian)',
37 'vi': 'Tiếng Việt (Vietnamese)',
38 };
39
40 static const Map<String, String> localeCountryCode = {
41 'en': 'usa',
42 'de': 'deu',
43 'es': 'esp',
44 'fa': 'irn',
45 'fr': 'fra',
46 'gn': 'grn',
47 'hi': 'ind',
48 'ja': 'jpn',
49 'ko': 'kor',
50 'nl': 'nld',
51 'pl': 'pol',
52 'pt': 'prt',
53 'pt_BR': 'bra',
54 'ru': 'rus',
55 'uk': 'ukr',
56 'zh': 'chn',
57 'hr': 'hrv',
58 'it': 'ita',
59 'th': 'tha',
60 'ar': 'sau',
61 'tr': 'tur',
62 'my': 'mmr',
63 'bg': 'bgr',
64 'cs': 'czk',
65 'ur': 'pak',
66 'id': 'idn',
67 'yo': 'nga',
68 'ha': 'hau',
69 'tl': 'phl',
70 'hy': 'arm',
71 'vi': 'vnm',
72 };
73
74 static final list = <String, String>{};
75
76 static const defaultLocale = 'en';
77
78 static void loadLocaleList() {
79 supportedLocales.forEach((key, value) {
80 if (locales.contains(key)) {
81 list[key] = value;
82 }
83 });
84 }
85
86 static Future<String> localeDetection() async {
87 try {
88 var locale = await Devicelocale.currentLocale ?? '';
89 locale = Intl.shortLocale(locale);
90
91 if (list.keys.contains(locale)) {
92 return locale;
93 }
94 return LanguageService.defaultLocale;
95 } catch (_) {
96 return LanguageService.defaultLocale;
97 }
98 }
99 }