Browse Source

Created AppLanguage class

Harinandan 3 years ago
parent
commit
6ea43cd5e5
1 changed files with 62 additions and 0 deletions
  1. 62 0
      frontend/app_flowy/packages/flowy_infra/lib/language.dart

+ 62 - 0
frontend/app_flowy/packages/flowy_infra/lib/language.dart

@@ -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));
+  }
+}