mirror of
https://github.com/luanti-org/luanti.git
synced 2025-09-30 19:22:14 +00:00
Implement language list for core.get_translated_string
This commit is contained in:
parent
d669b0a3bd
commit
d56380a94b
2 changed files with 17 additions and 11 deletions
|
@ -4243,28 +4243,33 @@ void Server::broadcastModChannelMessage(const std::string &channel,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Translations *Server::getTranslationLanguage(const std::string &lang_code)
|
Translations *Server::getTranslationLanguage(const std::string &lang)
|
||||||
{
|
{
|
||||||
if (lang_code.empty())
|
if (lang.empty())
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
auto it = server_translations.find(lang_code);
|
std::unordered_set<std::string> load_langs;
|
||||||
if (it != server_translations.end())
|
|
||||||
return &it->second; // Already loaded
|
|
||||||
|
|
||||||
// [] will create an entry
|
for (const auto &lang_code: str_split(lang, ':')) {
|
||||||
auto *translations = &server_translations[lang_code];
|
if (loaded_translations.find(lang_code) == loaded_translations.end()) {
|
||||||
|
load_langs.insert(lang_code);
|
||||||
|
loaded_translations.insert(lang_code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (load_langs.empty())
|
||||||
|
return &server_translations;
|
||||||
|
|
||||||
for (const auto &i : m_media) {
|
for (const auto &i : m_media) {
|
||||||
if (Translations::getFileLanguage(i.first) == lang_code) {
|
if (load_langs.find(std::string(Translations::getFileLanguage(i.first))) != load_langs.end()) {
|
||||||
std::string data;
|
std::string data;
|
||||||
if (fs::ReadFile(i.second.path, data, true)) {
|
if (fs::ReadFile(i.second.path, data, true)) {
|
||||||
translations->loadTranslation(i.first, data);
|
server_translations.loadTranslation(i.first, data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return translations;
|
return &server_translations;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unordered_map<std::string, std::string> Server::getMediaList()
|
std::unordered_map<std::string, std::string> Server::getMediaList()
|
||||||
|
|
|
@ -701,7 +701,8 @@ private:
|
||||||
// Craft definition manager
|
// Craft definition manager
|
||||||
IWritableCraftDefManager *m_craftdef;
|
IWritableCraftDefManager *m_craftdef;
|
||||||
|
|
||||||
std::unordered_map<std::string, Translations> server_translations;
|
Translations server_translations;
|
||||||
|
std::unordered_set<std::string> loaded_translations;
|
||||||
|
|
||||||
ModIPCStore m_ipcstore;
|
ModIPCStore m_ipcstore;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue