From adee4beacfb6865233c220e060697627d358bdb1 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 2 Feb 2012 17:36:06 +0300 Subject: Use translation for server descriptions in server list. --- src/gui/serverdialog.cpp | 7 ++++++- src/utils/stringutils.cpp | 20 ++++++++++++++++++++ src/utils/stringutils.h | 2 ++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/gui/serverdialog.cpp b/src/gui/serverdialog.cpp index 98d9bbfee..59bdf9660 100644 --- a/src/gui/serverdialog.cpp +++ b/src/gui/serverdialog.cpp @@ -511,6 +511,9 @@ void ServerDialog::loadServers(bool addNew) return; } + const std::string lang = getLangShort(); + const std::string description2 = "description_" + lang; + for_each_xml_child_node(serverNode, rootNode) { if (!xmlNameEqual(serverNode, "server")) @@ -560,7 +563,9 @@ void ServerDialog::loadServers(bool addNew) server.port = defaultPortForServerType(server.type); } } - else if (xmlNameEqual(subNode, "description")) + else if ((xmlNameEqual(subNode, "description") + && server.description.empty()) || (!lang.empty() + && xmlNameEqual(subNode, description2.c_str()))) { server.description = reinterpret_cast( subNode->xmlChildrenNode->content); diff --git a/src/utils/stringutils.cpp b/src/utils/stringutils.cpp index a5c0c471b..08bcac9e6 100644 --- a/src/utils/stringutils.cpp +++ b/src/utils/stringutils.cpp @@ -522,6 +522,26 @@ std::string getLangSimple() return lang; } +std::string getLangShort() +{ + std::string lang = config.getValue("lang", "").c_str(); + if (lang.empty()) + { + char *lng = getenv("LANG"); + if (!lng) + return ""; + lang = lng; + } + + int dot = lang.find("."); + if (dot != (signed)std::string::npos) + lang = lang.substr(0, dot); + dot = lang.find("_"); + if (dot != (signed)std::string::npos) + return lang.substr(0, dot); + return lang; +} + std::string packList(std::list &list) { std::list::const_iterator i = list.begin(); diff --git a/src/utils/stringutils.h b/src/utils/stringutils.h index 5cb726eef..0b22ef847 100644 --- a/src/utils/stringutils.h +++ b/src/utils/stringutils.h @@ -190,6 +190,8 @@ std::vector getLang(); std::string getLangSimple(); +std::string getLangShort(); + std::string packList(std::list &list); std::list unpackList(const std::string &str); -- cgit v1.2.3-70-g09d2