mcu_hi3321_watch/tjd/ui/common/TjdUiMultiLanguageExt.cpp
2025-05-26 20:15:20 +08:00

68 lines
2.5 KiB
C++

/*----------------------------------------------------------------------------
* Copyright (c) TJD Technologies Co., Ltd. 2024. All rights reserved.
*
* Description:
*
* Author: huangshuyi
*
* Create: 2024-9
*--------------------------------------------------------------------------*/
#include "TjdUiMultiLanguageExt.h"
#include "sql_setting.h"
#include <string>
#include <map>
#include <vector>
namespace TJD {
static const char *tjdFontFiles[] = {TJD_VECTOR_FONT_FILENAME, SOURCE_VECTOR_FONT_FILENAME,
TJD_DIN_MEDIUM_FONT_FILENAME, TJD_D_DIN_PRO_MEDIUM_FONT_FILENAME,
TJD_D_DIN_PRO_REGULAR_FONT_FILENAME};
static uint8_t tjdFontId[5] = {0};
static const char *BIN_LANG_ENGLISH = TJD_LANGUAGE_PATH "en.lang";
static const char *BIN_LANG_CHINESE_SIMPLIFIED = TJD_LANGUAGE_PATH "chs.lang";
static const char *BIN_LANG_ARABIC = TJD_LANGUAGE_PATH "arabic.lang";
TjdUiLanguageId TjdUiMultiLanguageExt::currentLanguage_ = TjdUiLanguageId::LANGUAGE_ID_CHS;
bool TjdUiMultiLanguageExt::RegisterLanguage(void)
{
std::map<uint8_t, std::string> langMap;
langMap[TjdUiLanguageId::LANGUAGE_ID_ARABIC] = BIN_LANG_ARABIC;
langMap[TjdUiLanguageId::LANGUAGE_ID_CHS] = BIN_LANG_CHINESE_SIMPLIFIED;
langMap[TjdUiLanguageId::LANGUAGE_ID_EN] = BIN_LANG_ENGLISH;
std::vector<const char*> langFiles(TjdUiLanguageId::LANGUAGE_ID_MAX, nullptr);
for (const auto& [langId, path] : langMap) {
if (langId < TjdUiLanguageId::LANGUAGE_ID_MAX) {
langFiles[langId] = path.c_str();
}
}
return OHOS::FontGlobalManager::GetInstance()->RegisterLanguageInfo(
langFiles.data(), static_cast<uint8_t>(langFiles.size()), LANGUAGE_ID_CHS);
}
bool TjdUiMultiLanguageExt::RegisterFont(void)
{
int size = sizeof(tjdFontFiles) / sizeof(tjdFontFiles[0]);
for (uint8_t i = 0; i < size; i++) {
tjdFontId[i] = OHOS::UIFont::GetInstance()->RegisterFontInfo(tjdFontFiles[i], 0);
if (tjdFontId[i] == OHOS::INVALID_UCHAR_ID) {
printf("Set TTF(%s) failed.", tjdFontFiles[i]);
}
}
uint8_t searchList[] = {tjdFontId[1]}; // 0, 1: g_fontId index
OHOS::UIMultiFontManager::GetInstance()->SetSearchFontList(tjdFontId[0], searchList,
sizeof(searchList)); // 2: index
return true;
}
} // namespace TJD
extern "C"
{
void C_SetLang(void) { TJD::TjdUiMultiLanguageExt::SetCurrentLanguage(sql_setting_get_language()); }
}