#include "wearable_log.h"
#include "language/LanguageInit.h"
#include "config/include/ConfigModel.h"
-#include <fstream>
+
namespace OHOS
{
- cJSON *cjson_json = NULL;
+ // 定义语言结构体
+ struct Language
+ {
+ const char *code;
+ const char *name;
+ const char *description;
+ };
+
+ // 初始化 languages 数组
+ struct Language languages[] = {
+ {"zh_CN", "中文", "中文"},
+ {"en", "English", "英语"},
+ {"ja", "日本語", "日语"},
+ {"ko", "한국어", "韩语"},
+ {"es", "Español", "西班牙语"},
+ {"ru", "Русский", "俄语"},
+ {"hr", "Hrvatski", "克罗地亚语"},
+ {"de", "Deutsch", "德语"},
+ {"pt", "Português", "葡萄牙语"},
+ {"fr", "Français", "法语"},
+ {"nl", "Nederlands", "荷兰语"},
+ {"it", "Italiano", "意大利语"},
+ {"cs", "Čeština", "捷克语"},
+ {"el", "Ελληνικά", "希腊语"},
+ {"hi", "हिन्दी", "印地语"},
+ {"id", "Bahasa Indonesia", "印尼语"},
+ {"ms", "Bahasa Melayu", "马来语"},
+ {"pl", "Polski", "波兰语"},
+ {"th", "ไทย", "泰语"},
+ {"vi", "Tiếng Việt", "越南语"},
+ {"fi", "Suomi", "芬兰语"},
+ {"ro", "Română", "罗马尼亚语"},
+ {"tr", "Türkçe", "土耳其语"},
+ {"fa", "فارسی", "波斯语"},
+ {"ar", "العربية", "阿拉伯语"},
+ {"he", "עברית", "希伯来语"},
+ {"uk", "Українська", "乌克兰语"},
+ {"sv", "Svenska", "瑞典语"},
+ {"uz", "O‘zbek", "乌兹别克语"},
+ {"az", "Azərbaycan dili", "阿塞拜疆语"}};
+
+ static const char *en = "user/res/language_config/font/en.lang";
+ static const char *zh_CN = "user/res/language_config/font/zh.lang";
+ static const uint8_t langcount = 2;
+ const char *resFiles[langcount] = {zh_CN, en};
+
static language *g_planguage{nullptr};
+ /***
+ * @description: 通过元素找下标
+ * @param {char} *arr
+ * @param {int} size
+ * @param {char} *target
+ * @return {*}
+ * @brief
+ */
+ int FindIndex(const char *arr[], int size, const char *target)
+ {
+ for (int i = 0; i < size; i++)
+ {
+ if (strcmp(arr[i], target) == 0)
+ {
+ return i; // 返回找到的元素的下标
+ }
+ }
+ return -1; // 如果未找到目标元素,返回-1
+ }
+
language::language()
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "language::language");
bool language::InitLangues()
{
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))
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Language files do not exist");
- return false;
- }
+ // 获取json里面的语言
+ int thelanguage = ConfigModel::GetInstance()->GetLanguage();
- FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, (sizeof(resFiles) / sizeof(char *)), 1);
- // FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, (sizeof(resFiles) / sizeof(char *)), languages_satuas);
+ FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, langcount, thelanguage);
return true;
}
bool language::fileExists(const char *fileName)
{
std::ifstream file(fileName);
- return file.good();
+ return file.is_open();
}
- // 改变语言之后,应该保存状态进去json文件
- bool language::changelanguage(int languages_satuas)
+ // 切换语言功能
+ bool language::ChangeLanguage(int language_status)
{
-#if 0
- UIFont *uiFont = UIFont::GetInstance();
- if (uiFont == nullptr)
+
+ if (!FontGlobalManager::GetInstance() || !UIFont::GetInstance())
{
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Get UIFont error");
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Error getting FontGlobalManager or UIFont");
return false;
}
- FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, (sizeof(resFiles) / sizeof(char *)), languages_satuas);
- uiFont->SetCurrentLangId(languages_satuas);
-#endif
+ FontGlobalManager::GetInstance()->RegisterLanguageInfo(resFiles, langcount, language_status);
+ UIFont::GetInstance()->SetCurrentLangId(language_status);
+
+ ConfigModel::GetInstance()->SetLanguage(language_status);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "resFiles[language_status]:%s", resFiles[language_status]);
return true;
}