68 lines
2.5 KiB
C++
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()); }
|
|
} |