增加本地语言与默认的中文简体语言直接转换的API

This commit is contained in:
gb 2023-01-28 09:28:46 +08:00
parent a4d130c11e
commit 1dfe4dda1c
1 changed files with 51 additions and 4 deletions

View File

@ -686,9 +686,11 @@ public:
notify_.erase(it);
}
}
int get_default_string_id(const char* str)
int get_string_id(const char* str, bool def)
{
for (auto& v : map_default_)
std::map<uint32_t, std::string>* lang = def ? &map_default_ : pak_now_;
for (auto& v : *lang)
{
if (v.second == str)
return v.first;
@ -696,6 +698,42 @@ public:
return -1;
}
const char* transform_language(const char* in, bool to_def, bool* found)
{
if (cur_cp_ == DEFAULT_CODE_PAGE)
{
if (found)
*found = true;
return in;
}
int id = get_string_id(in, false);
std::map<uint32_t, std::string>* t = to_def ? &map_default_ : pak_now_;
if (id == -1)
{
if (found)
*found = false;
return in;
}
if (t->count(id))
{
if (found)
*found = true;
return (*t)[id].c_str();
}
else
{
if (found)
*found = false;
return in;
}
}
};
lang_mgr* lang_mgr::inst_ = nullptr;
@ -729,8 +767,17 @@ extern "C"
lang_mgr::instance()->register_language_changed_notify(lan_changed, reg, param);
}
int lang_get_string_id(const char* utf8_hz)
int lang_get_string_id(const char* str, bool def_lang)
{
return lang_mgr::instance()->get_default_string_id(utf8_hz);
return lang_mgr::instance()->get_string_id(str, def_lang);
}
const char* to_default_language(const char* str, bool* ok)
{
return lang_mgr::instance()->transform_language(str, true, ok);
}
const char* from_default_language(const char* str, bool* ok)
{
return lang_mgr::instance()->transform_language(str, false, ok);
}
}