开启多国语言接口
authorCaisking <3449750381@qq.com>
Wed, 27 Mar 2024 08:58:56 +0000 (16:58 +0800)
committerCaisking <3449750381@qq.com>
Wed, 27 Mar 2024 08:58:56 +0000 (16:58 +0800)
code/sdk/application/wearable/fd230app/nativelauncher/src/NativeLauncher.cpp
code/sdk/application/wearable/fd230app/nativeui/config/ConfigModel.json
code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h
code/sdk/application/wearable/fd230app/nativeui/config/src/ConfigModel.cpp
code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.cpp
code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.h
code/sdk/application/wearable/fd230app/nativeui/system/src/SystemPresenter.cpp

index 318b60c..e1ca7d9 100644 (file)
@@ -347,10 +347,10 @@ namespace OHOS
         WEARABLE_LOGI(WEARABLE_LOG_MODULE_LAUNCHER_FWK, "NativeLauncher::InitNativeLauncher");
         /* -------------------------------------------------------------------------- */
         // 从语言json配置里面读取语言包
-#if 0
-        if (language::GetInstance()->InitLangues())
+#if 1
+        if (language::GetInstance()->InitLangues() == false)
         {
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLangues");
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLangues error");
         }
 #endif
         /* ------------------------------- ConfigModel ------------------------------ */
index 957f119..6d62501 100644 (file)
@@ -4,5 +4,14 @@
     "ScreenDurationRadioButtonSlectValue": 1,
     "TradionalBlueToothToggleButtonState": false,
     "HeartRateOrBloodOxygenQuickAccessSwitch": 0,
-    "Dial_Id":0
+    "Dial_Id": 0,
+    "languages": {
+        "zh": {
+            "path": "user/res/language_config/font/zh.lang"
+        },
+        "en": {
+            "path": "user/res/language_config/font/en.lang"
+        }
+    },
+    "languages_satuas": 0
 }
\ No newline at end of file
index b781013..a48f0fa 100644 (file)
@@ -13,10 +13,10 @@ namespace OHOS
     {
         struct cat1_msg_config
         {
-            char * imei;
+            char *imei;
             int sim;
-            char * oper;
-            //uint8_t signal;
+            char *oper;
+            // uint8_t signal;
         };
 
     public:
@@ -42,14 +42,16 @@ namespace OHOS
         int GetHeartRateOrBloodOxygenQuickAccessSwitch(void);
         void SetDialId(uint8_t id);
         int GetDialId();
-        char * Getimei();
-        char* GetpyVer();
-        char* GetmoderVer();
+        void SetLanguage(uint8_t language);
+        int GetLanguage();
+        char *Getimei();
+        char *GetpyVer();
+        char *GetmoderVer();
         void Setimei(char *str);
         void SetpyVer(char *str);
         void SetmoderVer(char *str);
-      
-     // -------------------------------------------------------------------------- */
+
+        // -------------------------------------------------------------------------- */
     private:
         ConfigModel();                                        // 私有构造函数,确保无法在外部实例化
         ConfigModel(const ConfigModel &) = delete;            // 禁止拷贝构造
@@ -65,10 +67,11 @@ namespace OHOS
         unsigned int ScreenDurationRadioButtonSlectValue{1}; // 亮屏时长 ,0对应5秒熄屏,1对应10秒熄屏,2对应15秒熄屏
         bool TradionalBlueToothToggleButtonState{false};     // 用来记录蓝牙开关状态,默认关闭状态
         int HeartRateOrBloodOxygenQuickAccessSwitch{0};      // 心率或血氧快速访问开关,默认快速访问血氧打开
-        int dialid;
-        char * imei_str=NULL;
-        char * pyVer=NULL;
-        char * moderVer=NULL;
+        int dialid_;                                         // 表盘id
+        int language_;                                       // 语言状态
+        char *imei_str = NULL;
+        char *pyVer = NULL;
+        char *moderVer = NULL;
 
         cat1_msg_config cat1_msg_config_t;
         /* -------------------------------------------------------------------------- */
index e29244f..068acf6 100644 (file)
@@ -131,86 +131,97 @@ namespace OHOS
 
     void ConfigModel::SetDialId(uint8_t id)
     {
-        dialid = id;
+        dialid_ = id;
         WriteJsonData<int>(GetcJSON(), "Dial_Id", id);
     }
 
     int ConfigModel::GetDialId()
     {
-        dialid = (ReadJsonData<int>(GetcJSON(), "Dial_Id"));
-        return dialid;
+        dialid_ = (ReadJsonData<int>(GetcJSON(), "Dial_Id"));
+        return dialid_;
     }
 
-    char* ConfigModel::Getimei()
+    void ConfigModel::SetLanguage(uint8_t language)
     {
-       
+        language_ = language;
+        WriteJsonData<int>(GetcJSON(), "languages_satuas", language_);
+    }
+
+    int ConfigModel::GetLanguage()
+    {
+        language_ = (ReadJsonData<int>(GetcJSON(), "languages_satuas"));
+        return language_;
+    }
+
+    char *ConfigModel::Getimei()
+    {
+
         return imei_str;
     }
 
-    char* ConfigModel::GetpyVer()
+    char *ConfigModel::GetpyVer()
     {
-       
+
         return pyVer;
     }
-     char* ConfigModel::GetmoderVer()
+    char *ConfigModel::GetmoderVer()
     {
-       
+
         return moderVer;
     }
 
-  
-    void ConfigModel::Setimei(char *str) 
+    void ConfigModel::Setimei(char *str)
     {
-       if(imei_str==NULL || strcmp(imei_str,str)!=0)
-       {
-            if(imei_str==NULL)
+        if (imei_str == NULL || strcmp(imei_str, str) != 0)
+        {
+            if (imei_str == NULL)
             {
-                imei_str=(char*)malloc(strlen(str));
-                strcpy(imei_str,str);
+                imei_str = (char *)malloc(strlen(str));
+                strcpy(imei_str, str);
             }
             else
             {
-                memset(imei_str,0,strlen(imei_str));
-                strcpy(imei_str,str);
+                memset(imei_str, 0, strlen(imei_str));
+                strcpy(imei_str, str);
             }
-       }
-        return ;
+        }
+        return;
     }
 
-    void ConfigModel::SetpyVer(char *str) 
+    void ConfigModel::SetpyVer(char *str)
     {
-       if(pyVer==NULL || strcmp(pyVer,str)!=0)
-       {
-            if(pyVer==NULL)
+        if (pyVer == NULL || strcmp(pyVer, str) != 0)
+        {
+            if (pyVer == NULL)
             {
-                pyVer=(char*)malloc(strlen(str));
-                strcpy(pyVer,str);
+                pyVer = (char *)malloc(strlen(str));
+                strcpy(pyVer, str);
             }
             else
             {
-                memset(pyVer,0,strlen(pyVer));
-                strcpy(pyVer,str);
+                memset(pyVer, 0, strlen(pyVer));
+                strcpy(pyVer, str);
             }
-       }
-        return ;
+        }
+        return;
     }
 
-    void ConfigModel::SetmoderVer(char *str) 
+    void ConfigModel::SetmoderVer(char *str)
     {
-       if(moderVer==NULL || strcmp(moderVer,str)!=0)
-       {
-            if(moderVer==NULL)
+        if (moderVer == NULL || strcmp(moderVer, str) != 0)
+        {
+            if (moderVer == NULL)
             {
-                moderVer=(char*)malloc(strlen(str));
-                strcpy(moderVer,str);
+                moderVer = (char *)malloc(strlen(str));
+                strcpy(moderVer, str);
             }
             else
             {
-                memset(moderVer,0,strlen(moderVer));
-                strcpy(moderVer,str);
+                memset(moderVer, 0, strlen(moderVer));
+                strcpy(moderVer, str);
             }
-       }
-        return ;
+        }
+        return;
     }
     /* ------------------------------ ImageAnimator ----------------------------- */
 
index 3d619d8..be59452 100644 (file)
@@ -6,7 +6,8 @@
 #include "font/font_global_manager.h"
 #include "wearable_log.h"
 #include "language/LanguageInit.h"
-
+#include "config/include/ConfigModel.h"
+#include <fstream>
 namespace OHOS
 {
     cJSON *cjson_json = NULL;
@@ -28,69 +29,46 @@ namespace OHOS
     {
         return g_planguage;
     }
-    // 加载json
-    bool language::loadJsonData(const std::string &filePath)
+    bool language::InitLangues()
     {
-        std::ifstream file(filePath);
-        if (file.is_open())
-        {
-            std::string json_string((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
-            file.close();
-            cjson_json = cJSON_Parse(json_string.c_str());
-            return true;
-        }
-        else
+        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLangues");
+        static const char *BIN_LANG_EN = "user/res/language_config/font/en.lang";
+        static const char *BIN_LANG_ZH = "user/res/language_config/font/zh.lang";
+        const char *resFiles[] = {BIN_LANG_ZH, BIN_LANG_EN};
+
+        // Check if the language files exist before registering them
+        if (!fileExists(BIN_LANG_ZH) || !fileExists(BIN_LANG_EN))
         {
-            printf("Failed to open JSON file: %s\n", filePath.c_str());
+            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Language files do not exist");
             return false;
         }
+
+        FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, (sizeof(resFiles) / sizeof(char *)), 1);
+        // FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, (sizeof(resFiles) / sizeof(char *)), languages_satuas);
+        return true;
     }
-    // 初始化语言
-    bool language::InitLangues()
+
+    bool language::fileExists(const char *fileName)
     {
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "InitLangues");
-        // 获取语言包以及语言状态
-        if (loadJsonData(JsonFilePath))
-        {
-            cJSON *languages_cjson = cJSON_GetObjectItem(cjson_json, "languages");
-            cJSON *zn_cjson = cJSON_GetObjectItem(languages_cjson, "zn");
-            cJSON *en_cjson = cJSON_GetObjectItem(languages_cjson, "en");
-            const char *BIN_LANG_EN = cJSON_GetObjectItem(en_cjson, "path")->valuestring;
-            const char *BIN_LANG_ZH = cJSON_GetObjectItem(zn_cjson, "path")->valuestring;
-            languages_satuas = cJSON_GetObjectItem(cjson_json, "languages_satuas")->valueint;
-            resFiles[0] = BIN_LANG_ZH;
-            resFiles[1] = BIN_LANG_EN;
-            FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, (sizeof(resFiles) / sizeof(char *)), languages_satuas);
-            return true;
-        }
-        return false;
+        std::ifstream file(fileName);
+        return file.good();
     }
-    // 切换语言
+
+    // 改变语言之后,应该保存状态进去json文件
     bool language::changelanguage(int languages_satuas)
     {
-        // 获取语言包以及语言状态
-        if (loadJsonData(JsonFilePath))
-        {
-            cJSON *languages_cjson = cJSON_GetObjectItem(cjson_json, "languages");
-            cJSON *zn_cjson = cJSON_GetObjectItem(languages_cjson, "zn");
-            cJSON *en_cjson = cJSON_GetObjectItem(languages_cjson, "en");
-            const char *BIN_LANG_EN = cJSON_GetObjectItem(en_cjson, "path")->valuestring;
-            const char *BIN_LANG_ZH = cJSON_GetObjectItem(zn_cjson, "path")->valuestring;
-            resFiles[0] = BIN_LANG_ZH;
-            resFiles[1] = BIN_LANG_EN;
-        }
-        // 这里修改json里面的语言状态
-        cJSON *languages_satuas_cjson = cJSON_GetObjectItem(cjson_json, "languages_satuas");
-        cJSON_ReplaceItemInObject(cjson_json, "languages_satuas", cJSON_CreateNumber(languages_satuas));
-
-        // 获取字体单例
+#if 0
         UIFont *uiFont = UIFont::GetInstance();
         if (uiFont == nullptr)
         {
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Get UIFont error");
             return false;
         }
+
         FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, (sizeof(resFiles) / sizeof(char *)), languages_satuas);
-        uiFont->SetCurrentLangId(languages_satuas); // set language
+        uiFont->SetCurrentLangId(languages_satuas);
+#endif
+        return true;
     }
+
 }
index 6551f6e..7721316 100644 (file)
@@ -1,3 +1,11 @@
+/***
+ * @Author: Caisking 3449750381@qq.com
+ * @Date: 2024-02-20 11:47:35
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-03-27 16:05:02
+ * @FilePath: /sdk/application/wearable/fd230app/nativeui/language/LanguageInit.h
+ * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ */
 #ifndef LANGUAGE_INIT_H
 #define LANGUAGE_INIT_H
 
@@ -11,9 +19,9 @@ namespace OHOS
         language();
         ~language();
         static language *GetInstance();
-        bool loadJsonData(const std::string &filePath);
         bool InitLangues();
         bool changelanguage(int languages_satuas);
+        bool fileExists(const char *fileName);
 
     private:
         std::string JsonFilePath = "user/res/language_config/config.json";
index d9b7e8f..7834817 100644 (file)
 namespace OHOS\r
 {\r
 \r
-    \r
     struct SystemView_ext_p\r
     {\r
-            const int16_t viewId;\r
-            char *viewid_str;\r
-            bool enable_falg;\r
+        const int16_t viewId;\r
+        char *viewid_str;\r
+        bool enable_falg;\r
     };\r
-    \r
 \r
     // 2.ViewMapper[] 是一个静态的视图映射数组,将视图ID与MainStopWatchView类中的特定成员函数指针进行了绑定。\r
-        static SystemView_ext_p ViewMapper_t[] = {\r
-        {ABOUTTHEWATCHVIEW,"AboutTheWatchButton",true},\r
-        {SUPERVISEVIEW,"SuperviseButton",true},\r
-        {SYSTEMLANGUAGEVIEW,"SystemLanguageButton",false},\r
-        {FACTORYRESETVIEW,"FactoryResetButton",true},\r
-        {SYSTEMLUPGRADE,"systemupgread",true},\r
-        };\r
-        //{TEST,"testButton",true}};\r
-        \r
-        // {ABOUTTHEWATCHVIEW, &SystemView::ChangeSystemAboutView},\r
-        // {SUPERVISEVIEW, &SystemView::ChangeSystemSuperviseView},\r
-        // {SYSTEMLANGUAGEVIEW, &SystemView::ChangeSystemLanguageView},\r
+    static SystemView_ext_p ViewMapper_t[] = {\r
+        {ABOUTTHEWATCHVIEW, "AboutTheWatchButton", true},\r
+        {SUPERVISEVIEW, "SuperviseButton", true},\r
+        {SYSTEMLANGUAGEVIEW, "SystemLanguageButton", true},\r
+        {FACTORYRESETVIEW, "FactoryResetButton", true},\r
+        {SYSTEMLUPGRADE, "systemupgread", true},\r
+    };\r
 \r
     // 当前Presenter属性实例化的内存指针\r
     static SystemPresenter *g_pSystemPresenter = nullptr;\r
@@ -109,27 +102,26 @@ namespace OHOS
     bool SystemPresenter::OnClick(UIView &view, const ClickEvent &event)\r
     {\r
         SystemView *p_SystemView = SystemView::GetInstance();\r
-        int len=sizeof(ViewMapper_t)/sizeof(SystemView_ext_p);\r
-        //int len=5;\r
-        // 根据控件id查找是哪个控件触发了点击回调\r
+        int len = sizeof(ViewMapper_t) / sizeof(SystemView_ext_p);\r
+        // int len=5;\r
+        //  根据控件id查找是哪个控件触发了点击回调\r
 \r
-        for(int i=0;i<len;i++)\r
+        for (int i = 0; i < len; i++)\r
         {\r
-            if(strcmp(view.GetViewId(),ViewMapper_t[i].viewid_str) == 0)\r
+            if (strcmp(view.GetViewId(), ViewMapper_t[i].viewid_str) == 0)\r
             {\r
-                if(i==5)\r
+                if (i == 5)\r
                 {\r
                     NativeAbility::GetInstance().ChangeSlice(VIEW_TEST);\r
                     break;\r
                 }\r
-                \r
-                if(ViewMapper_t[i].enable_falg==true)\r
-                SystemView::GetInstance()->ChangeView(SYSTEMVIEW, ViewMapper_t[i].viewId);\r
+\r
+                if (ViewMapper_t[i].enable_falg == true)\r
+                    SystemView::GetInstance()->ChangeView(SYSTEMVIEW, ViewMapper_t[i].viewId);\r
                 return true;\r
             }\r
         }\r
 \r
-    \r
         if (strcmp(view.GetViewId(), FACTORYRESET_CHECKON) == 0)\r
         {\r
             p_SystemView->ChangeView(FACTORYRESETVIEW, SYSTEMVIEW);\r
@@ -140,18 +132,17 @@ namespace OHOS
             p_SystemView->ChangeView(FACTORYRESETVIEW, SYSTEMVIEW);\r
             return true;\r
         }\r
-       \r
 \r
-        if(strcmp(view.GetViewId(), SYSTEM_UPGRADE) == 0)\r
+        if (strcmp(view.GetViewId(), SYSTEM_UPGRADE) == 0)\r
         {\r
-            isSystemUpgradeState=true;\r
+            isSystemUpgradeState = true;\r
             SystemupgradeView::GetInstance()->statr_down_fwpkg();\r
         }\r
-        if(strcmp(view.GetViewId(),"labelButton1_exit")==0)\r
+        if (strcmp(view.GetViewId(), "labelButton1_exit") == 0)\r
         {\r
-           // SystemView::GetInstance()->ChangeSlice(VIEW_SETTING);;\r
+            // SystemView::GetInstance()->ChangeSlice(VIEW_SETTING);;\r
             NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
-            isSystemUpgradeState=false;\r
+            isSystemUpgradeState = false;\r
         }\r
         return false;\r
     }\r
@@ -166,7 +157,7 @@ namespace OHOS
     {\r
         if ((event.GetDragDirection() == DragEvent::DIRECTION_LEFT_TO_RIGHT))\r
         {\r
-            SystemPresenter:: GetInstance()->set_key_falg(false);\r
+            SystemPresenter::GetInstance()->set_key_falg(false);\r
             NativeAbility::GetInstance().ChangeSlice(VIEW_SETTING);\r
         }\r
         return true;\r
@@ -243,7 +234,8 @@ namespace OHOS
 \r
     bool SystemPresenter::OnKeyAct(UIView &view, const KeyEvent &event) // 增加按键事件\r
     {\r
-        if(!isSystemUpgradeState){ //如果处于系统升级状态power键返回功能无效\r
+        if (!isSystemUpgradeState)\r
+        { // 如果处于系统升级状态power键返回功能无效\r
             UNUSED(view);\r
             WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "SystemPresenter::OnKeyAct");\r
             uint16 keyID = event.GetKeyId();\r
@@ -260,6 +252,6 @@ namespace OHOS
 \r
     void SystemPresenter::set_key_falg(bool falg) // 增加按键事件\r
     {\r
-       isSystemUpgradeState=falg;\r
+        isSystemUpgradeState = falg;\r
     }\r
 }
\ No newline at end of file