/*---------------------------------------------------------------------------- * Copyright (c) TJD Technologies Co., Ltd. 2024. All rights reserved. * * Description: * * Author: huangshuyi * * Create: 2024-9 *--------------------------------------------------------------------------*/ #include "TjdUiMultiLanguageExt.h" #include "sql_setting.h" #include #include #include 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 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 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(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()); } }