Browse Source

read device locale as default locale setting

appflowy 3 years ago
parent
commit
be806e301c

+ 1 - 0
frontend/app_flowy/lib/startup/tasks/application_widget.dart

@@ -59,6 +59,7 @@ class ApplicationWidget extends StatelessWidget {
           const ratio = 1.73;
           const minWidth = 600.0;
           setWindowMinSize(const Size(minWidth, minWidth / ratio));
+          settingModel.updateWithBuildContext(context);
           AppTheme theme = context.select<AppearanceSettingModel, AppTheme>(
             (value) => value.theme,
           );

+ 6 - 1
frontend/app_flowy/lib/workspace/application/appearance.dart

@@ -39,7 +39,7 @@ class AppearanceSettingModel extends ChangeNotifier with EquatableMixin {
   }
 
   void setLanguage(BuildContext context, AppLanguage language) {
-    String languageString = stringFromLanguageName(language);
+    String languageString = stringFromLanguage(language);
 
     if (setting.language != languageString) {
       context.setLocale(localeFromLanguageName(language));
@@ -49,4 +49,9 @@ class AppearanceSettingModel extends ChangeNotifier with EquatableMixin {
       save();
     }
   }
+
+  void updateWithBuildContext(BuildContext context) {
+    final language = languageFromLocale(context.deviceLocale);
+    setLanguage(context, language);
+  }
 }

+ 14 - 1
frontend/app_flowy/packages/flowy_infra/lib/language.dart

@@ -7,7 +7,7 @@ enum AppLanguage {
   french,
 }
 
-String stringFromLanguageName(AppLanguage language) {
+String stringFromLanguage(AppLanguage language) {
   switch (language) {
     case AppLanguage.english:
       return "en";
@@ -45,3 +45,16 @@ Locale localeFromLanguageName(AppLanguage language) {
       return const Locale('fr', 'CA');
   }
 }
+
+AppLanguage languageFromLocale(Locale locale) {
+  switch (locale.languageCode) {
+    case "zh":
+      return AppLanguage.chinese;
+    case "it":
+      return AppLanguage.italian;
+    case "fr":
+      return AppLanguage.french;
+    default:
+      return AppLanguage.english;
+  }
+}

+ 1 - 1
frontend/app_flowy/pubspec.lock

@@ -694,7 +694,7 @@ packages:
       name: material_color_utilities
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.1.2"
+    version: "0.1.3"
   meta:
     dependency: transitive
     description: