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");
* @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 <fstream>
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; // 默认返回中文
+ }
}
* @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
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<std::string, LanguageId> codeToIdMap;
};
}
* @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"
}
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();