diff --git a/frontend/app_flowy/packages/flowy_infra/lib/language.dart b/frontend/app_flowy/packages/flowy_infra/lib/language.dart new file mode 100644 index 0000000000..e9402cff4e --- /dev/null +++ b/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)); + } +}