language.dart 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import 'package:flutter/material.dart';
  2. enum Language {
  3. english,
  4. chinese,
  5. italian,
  6. french,
  7. }
  8. String stringFromLanguageName(Language language) {
  9. switch (language) {
  10. case Language.english:
  11. return "en";
  12. case Language.chinese:
  13. return "ch";
  14. case Language.italian:
  15. return "it";
  16. case Language.french:
  17. return "fr";
  18. }
  19. }
  20. Language languageFromString(String name) {
  21. Language language = Language.english;
  22. if (name == "ch") {
  23. language = Language.chinese;
  24. } else if (name == "it") {
  25. language = Language.italian;
  26. } else if (name == "fr") {
  27. language = Language.french;
  28. }
  29. return language;
  30. }
  31. Locale localeFromLanguageName(Language language) {
  32. switch (language) {
  33. case Language.english:
  34. return const Locale('en');
  35. case Language.chinese:
  36. return const Locale('zh', 'CN');
  37. case Language.italian:
  38. return const Locale('it', 'IT');
  39. case Language.french:
  40. return const Locale('fr', 'CA');
  41. }
  42. }
  43. class AppLanguage {
  44. Locale locale;
  45. //Default Constructor
  46. AppLanguage({required this.locale});
  47. factory AppLanguage.fromLanguage({required Language language}) {
  48. return AppLanguage(locale: localeFromLanguageName(language));
  49. }
  50. factory AppLanguage.fromName({required String name}) {
  51. return AppLanguage.fromLanguage(language: languageFromString(name));
  52. }
  53. }