Browse Source

fixed language switching issue

appflowy 3 năm trước cách đây
mục cha
commit
d7b936a017

+ 15 - 4
frontend/app_flowy/assets/translations/zh-CN.json

@@ -90,9 +90,9 @@
     "inlineCode": "内联代码",
     "quote": "块引用"
   },
-  "tooltip":{
-    "lightMode" : "切换到灯光模式",
-    "darkMode" : "切换到暗模式"
+  "tooltip": {
+    "lightMode": "切换到灯光模式",
+    "darkMode": "切换到暗模式"
   },
   "contactsPage": {
     "title": "联系人",
@@ -127,5 +127,16 @@
       "instruction3": "进入下面的链接,然后输入上面的代码:",
       "instruction4": "完成注册后,点击下面的按钮:"
     }
+  },
+  "settings": {
+    "title": "设置",
+    "menu": {
+      "appearance": "外观",
+      "language": "语言"
+    },
+    "appearance": {
+      "lightLabel": "日间模式",
+      "darkLabel": "夜间模式"
+    }
   }
-}
+}

+ 17 - 12
frontend/app_flowy/lib/startup/tasks/application_widget.dart

@@ -66,18 +66,23 @@ class ApplicationWidget extends StatelessWidget {
             (value) => value.language,
           );
 
-          return Provider.value(
-            value: theme,
-            child: MaterialApp(
-              builder: overlayManagerBuilder(),
-              debugShowCheckedModeBanner: false,
-              theme: theme.themeData,
-              localizationsDelegates: context.localizationDelegates,
-              supportedLocales: context.supportedLocales,
-              locale: localeFromLanguageName(language),
-              navigatorKey: AppGlobals.rootNavKey,
-              home: child,
-            ),
+          return MultiProvider(
+            providers: [
+              Provider.value(value: theme),
+              Provider.value(value: language),
+            ],
+            builder: (context, _) {
+              return MaterialApp(
+                builder: overlayManagerBuilder(),
+                debugShowCheckedModeBanner: false,
+                theme: theme.themeData,
+                localizationsDelegates: context.localizationDelegates,
+                supportedLocales: context.supportedLocales,
+                locale: localeFromLanguageName(language),
+                navigatorKey: AppGlobals.rootNavKey,
+                home: child,
+              );
+            },
           );
         },
       );

+ 3 - 2
frontend/app_flowy/lib/workspace/application/appearance.dart

@@ -4,6 +4,7 @@ import 'package:flowy_infra/theme.dart';
 import 'package:flowy_infra/language.dart';
 import 'package:flowy_sdk/protobuf/flowy-user-data-model/user_setting.pb.dart';
 import 'package:flutter/material.dart';
+import 'package:easy_localization/easy_localization.dart';
 
 class AppearanceSettingModel extends ChangeNotifier with EquatableMixin {
   AppearanceSettings setting;
@@ -37,12 +38,12 @@ class AppearanceSettingModel extends ChangeNotifier with EquatableMixin {
     }
   }
 
-  void setLanguage(AppLanguage language) {
+  void setLanguage(BuildContext context, AppLanguage language) {
     String languageString = stringFromLanguageName(language);
 
     if (setting.language != languageString) {
+      context.setLocale(localeFromLanguageName(language));
       _language = language;
-      print('language changed to $languageString');
       setting.language = languageString;
       notifyListeners();
       save();

+ 1 - 1
frontend/app_flowy/lib/workspace/presentation/settings/widgets/settings_language_view.dart

@@ -39,7 +39,7 @@ class _LanguageSelectorDropdownState extends State<LanguageSelectorDropdown> {
       value: context.read<AppearanceSettingModel>().language,
       onChanged: (val) {
         setState(() {
-          context.read<AppearanceSettingModel>().setLanguage(val!);
+          context.read<AppearanceSettingModel>().setLanguage(context, val!);
         });
       },
       items: AppLanguage.values.map((language) {

+ 7 - 0
frontend/app_flowy/macos/Runner/Info.plist

@@ -33,5 +33,12 @@
 	<string>MainMenu</string>
 	<key>NSPrincipalClass</key>
 	<string>NSApplication</string>
+    <key>CFBundleLocalizations</key>
+    <array>
+        <string>en</string>
+        <string>fr</string>
+        <string>it</string>
+        <string>zh</string>
+    </array>
 </dict>
 </plist>