summaryrefslogtreecommitdiff
path: root/src/server.cpp
diff options
context:
space:
mode:
authorEvidenceB Kidscode <49488517+EvidenceBKidscode@users.noreply.github.com>2020-04-25 07:20:00 +0200
committerGitHub <noreply@github.com>2020-04-25 07:20:00 +0200
commitcee3c5e73d7af2a876aa76275234ee76e7cb1bbc (patch)
tree66abf52902be5c4d7ccc7aa40d20ed77a2a263e0 /src/server.cpp
parent914dbeaa0be4b5ef87506b605ef4e241cd3732dc (diff)
downloadminetest-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.cpp22
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);
+ }
+ }
+}