|
@@ -0,0 +1,62 @@
|
|
|
+import 'package:flutter/material.dart';
|
|
|
+
|
|
|
+enum Language {
|
|
|
+ english,
|
|
|
+ chinese,
|
|
|
+ italian,
|
|
|
+ french,
|
|
|
+}
|
|
|
+
|
|
|
+String stringFromLanguageName(Language language) {
|
|
|
+ switch (language) {
|
|
|
+ case Language.english:
|
|
|
+ return "en";
|
|
|
+ case Language.chinese:
|
|
|
+ return "ch";
|
|
|
+ case Language.italian:
|
|
|
+ return "it";
|
|
|
+ case Language.french:
|
|
|
+ return "fr";
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+Language languageFromString(String name) {
|
|
|
+ Language language = Language.english;
|
|
|
+ if (name == "ch") {
|
|
|
+ language = Language.chinese;
|
|
|
+ } else if (name == "it") {
|
|
|
+ language = Language.italian;
|
|
|
+ } else if (name == "fr") {
|
|
|
+ language = Language.french;
|
|
|
+ }
|
|
|
+
|
|
|
+ return language;
|
|
|
+}
|
|
|
+
|
|
|
+Locale localeFromLanguageName(Language language) {
|
|
|
+ switch (language) {
|
|
|
+ case Language.english:
|
|
|
+ return const Locale('en');
|
|
|
+ case Language.chinese:
|
|
|
+ return const Locale('zh', 'CN');
|
|
|
+ case Language.italian:
|
|
|
+ return const Locale('it', 'IT');
|
|
|
+ case Language.french:
|
|
|
+ return const Locale('fr', 'CA');
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+class AppLanguage {
|
|
|
+ Locale locale;
|
|
|
+
|
|
|
+ //Default Constructor
|
|
|
+ AppLanguage({required this.locale});
|
|
|
+
|
|
|
+ factory AppLanguage.fromLanguage({required Language language}) {
|
|
|
+ return AppLanguage(locale: localeFromLanguageName(language));
|
|
|
+ }
|
|
|
+
|
|
|
+ factory AppLanguage.fromName({required String name}) {
|
|
|
+ return AppLanguage.fromLanguage(language: languageFromString(name));
|
|
|
+ }
|
|
|
+}
|