From: luozheng <1732036298@qq.com> Date: Mon, 1 Apr 2024 08:14:11 +0000 (+0800) Subject: 优化ChangeLanguage类 X-Git-Tag: release_V1.2.70_20241020_135402~1241^2^2 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=e9a000df0e29e20c8e93f355d100712241f82e48;p=mirrors%2FFD230.git 优化ChangeLanguage类 --- diff --git a/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h b/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h index cf8caeda0..33ab06cf5 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h +++ b/code/sdk/application/wearable/fd230app/nativeui/config/include/ConfigModel.h @@ -169,7 +169,7 @@ namespace OHOS cJSON_ReplaceItemInObject(json_obj, field_name, data_obj); char *jsonString = cJSON_Print(json_obj); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "有格式的方式打印Json:\n%s\n", jsonString); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "有格式的方式打印Json:\n%s\n", jsonString); if (jsonString != nullptr) { FILE *file = fopen(filePath.c_str(), "wb"); diff --git a/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.cpp b/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.cpp index b141cabf5..8e9758e4d 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-03-30 09:14:38 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-03-30 16:10:56 + * @LastEditTime: 2024-04-01 16:12:50 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.cpp */ #include @@ -109,4 +109,58 @@ namespace OHOS return true; } + bool language::ChangeLanguage(char *language_code) + { + if (!FontGlobalManager::GetInstance() || !UIFont::GetInstance()) + { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error getting FontGlobalManager or UIFont"); + return false; + } + + // 获取语言Code对应的语言Id + LanguageId currentLanguageId = LanguageManager::GetInstance().GetLanguageIdByCode(language_code); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "%d %s", currentLanguageId, language_code); + FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, langcount, currentLanguageId); + UIFont::GetInstance()->SetCurrentLangId(currentLanguageId); + + ConfigModel::GetInstance()->SetLanguageCode(language_code); + ConfigModel::GetInstance()->SetLanguage(currentLanguageId); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "resFiles[%d]:%s", currentLanguageId, resFiles[currentLanguageId]); + return true; + } + + /* ----------------------------- LanguageManager ---------------------------- */ + + LanguageManager::LanguageManager() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageManager::LanguageManager"); + // 初始化语言代码到语言ID的映射关系 + for (int i = 0; i < MAX_LANGUAGE; i++) + { + codeToIdMap[languages[i].code] = languages[i].languageid; + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "%s %d", languages[i].code, languages[i].languageid); + } + } + + LanguageManager::~LanguageManager() + { + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "LanguageManager::~LanguageManager"); + } + + LanguageManager &LanguageManager::GetInstance() + { + static LanguageManager instance; + return instance; + } + + LanguageId LanguageManager::GetLanguageIdByCode(const std::string &code) const + { + auto it = codeToIdMap.find(code); + if (it != codeToIdMap.end()) + { + return it->second; + } + // 如果找不到对应的语言ID,返回一个默认值 + return LanguageId::ZH_CN; // 默认返回中文 + } } diff --git a/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.h b/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.h index a3934b8b4..4f71525ad 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.h +++ b/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.h @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-03-30 09:30:03 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-03-30 15:57:41 + * @LastEditTime: 2024-04-01 16:00:57 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/LanguageInit.h */ #ifndef LANGUAGE_INIT_H @@ -66,40 +66,22 @@ namespace OHOS static language *GetInstance(); bool InitLangues(); bool ChangeLanguage(int language_status); + bool ChangeLanguage(char *language_code); bool fileExists(const char *fileName); }; class LanguageManager { public: - static LanguageManager &GetInstance() - { - static LanguageManager instance; - return instance; - } - LanguageManager() - { - // 初始化语言代码到语言ID的映射关系 - for (int i = 0; i < MAX_LANGUAGE; i++) - { - codeToIdMap[languages->code] = languages->languageid; - } - } - // 根据语言代码查找对应的语言ID - LanguageId GetLanguageIdByCode(const std::string &code) const - { - auto it = codeToIdMap.find(code); - if (it != codeToIdMap.end()) - { - return it->second; - } - // 如果找不到对应的语言ID,返回一个默认值 - return LanguageId::EN; // 这里假设默认返回英语 - } - ~LanguageManager() {} + static LanguageManager &GetInstance(); + //根据语言代码查找对应的语言ID + LanguageId GetLanguageIdByCode(const std::string &code) const; private: - // 假设有一个存储所有语言的容器 languages + LanguageManager(); // 私有构造函数,确保无法在外部实例化 + ~LanguageManager(); + LanguageManager(const LanguageManager &) = delete; // 禁止拷贝构造 + LanguageManager &operator=(const LanguageManager &) = delete; // 禁止赋值运算符 std::map codeToIdMap; }; } diff --git a/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchPresenter.cpp b/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchPresenter.cpp index 17cf4fe04..50a757f37 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchPresenter.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchPresenter.cpp @@ -2,7 +2,7 @@ * @Author: luozheng 1732036298@qq.com * @Date: 2024-03-28 14:17:43 * @LastEditors: luozheng 1732036298@qq.com - * @LastEditTime: 2024-04-01 11:21:08 + * @LastEditTime: 2024-04-01 14:41:00 * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/src/LanguageSwitchPresenter.cpp */ #include "AppViewIDs.h" @@ -113,11 +113,9 @@ namespace OHOS } else { - LanguageId currentLanguageId = LanguageManager::GetInstance().GetLanguageIdByCode(p_LanguageSwitchModel->GetCurLanguageCode()); - g_planguage->ChangeLanguage(currentLanguageId); - ConfigModel::GetInstance()->SetLanguageCode(p_LanguageSwitchModel->GetCurLanguageCode()); + g_planguage->ChangeLanguage(p_LanguageSwitchModel->GetCurLanguageCode()); m_labelext->SetTextId(STR_LANGUAGE); - m_labelext->ForceResetText();// 强制刷新 + m_labelext->ForceResetText(); // 强制刷新 p_UILabelButtonExt->SetImageSrc(SelectedImg, SelectedImg); p_UILabelButtonExt->Invalidate();