diff options
author | EvidenceB Kidscode <49488517+EvidenceBKidscode@users.noreply.github.com> | 2020-04-25 07:20:00 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-25 07:20:00 +0200 |
commit | cee3c5e73d7af2a876aa76275234ee76e7cb1bbc (patch) | |
tree | 66abf52902be5c4d7ccc7aa40d20ed77a2a263e0 /src/server.cpp | |
parent | 914dbeaa0be4b5ef87506b605ef4e241cd3732dc (diff) | |
download | minetest-cee3c5e73d7af2a876aa76275234ee76e7cb1bbc.tar.gz minetest-cee3c5e73d7af2a876aa76275234ee76e7cb1bbc.tar.bz2 minetest-cee3c5e73d7af2a876aa76275234ee76e7cb1bbc.zip |
Add server side translations capability (#9733)
* Add server side translations capability
Diffstat (limited to 'src/server.cpp')
-rw-r--r-- | src/server.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/server.cpp b/src/server.cpp index c32aa5306..af6d3e40d 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -64,6 +64,7 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "chat_interface.h" #include "remoteplayer.h" #include "server/player_sao.h" +#include "translation.h" class ClientNotFoundException : public BaseException { @@ -1266,7 +1267,8 @@ bool Server::getClientInfo( u8* major, u8* minor, u8* patch, - std::string* vers_string + std::string* vers_string, + std::string* lang_code ) { *state = m_clients.getClientState(peer_id); @@ -1286,6 +1288,7 @@ bool Server::getClientInfo( *minor = client->getMinor(); *patch = client->getPatch(); *vers_string = client->getFull(); + *lang_code = client->getLangCode(); m_clients.unlock(); @@ -3937,3 +3940,20 @@ void Server::broadcastModChannelMessage(const std::string &channel, m_script->on_modchannel_message(channel, sender, message); } } + +void Server::loadTranslationLanguage(const std::string &lang_code) +{ + if (g_server_translations->count(lang_code)) + return; // Already loaded + + std::string suffix = "." + lang_code + ".tr"; + for (const auto &i : m_media) { + if (str_ends_with(i.first, suffix)) { + std::ifstream t(i.second.path); + std::string data((std::istreambuf_iterator<char>(t)), + std::istreambuf_iterator<char>()); + + (*g_server_translations)[lang_code].loadTranslation(data); + } + } +} |