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;
|
||||
|
||||
auto it = server_translations.find(lang_code);
|
||||
if (it != server_translations.end())
|
||||
return &it->second; // Already loaded
|
||||
std::unordered_set<std::string> load_langs;
|
||||
|
||||
// [] will create an entry
|
||||
auto *translations = &server_translations[lang_code];
|
||||
for (const auto &lang_code: str_split(lang, ':')) {
|
||||
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) {
|
||||
if (Translations::getFileLanguage(i.first) == lang_code) {
|
||||
if (load_langs.find(std::string(Translations::getFileLanguage(i.first))) != load_langs.end()) {
|
||||
std::string data;
|
||||
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()
|
||||
|
|
|
@ -701,7 +701,8 @@ private:
|
|||
// Craft definition manager
|
||||
IWritableCraftDefManager *m_craftdef;
|
||||
|
||||
std::unordered_map<std::string, Translations> server_translations;
|
||||
Translations server_translations;
|
||||
std::unordered_set<std::string> loaded_translations;
|
||||
|
||||
ModIPCStore m_ipcstore;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue