diff options
author | Andrei Karas <akaras@inbox.ru> | 2011-04-18 03:10:10 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2011-04-18 03:10:10 +0300 |
commit | 74d12df575b7d2cf7e95407df80dbb699ca9806e (patch) | |
tree | a03aae01ae6e458b4fd1feecc99265d17da57627 | |
parent | 4a83474614ed67349b83c742b8498937b2e190e7 (diff) | |
download | mv-74d12df575b7d2cf7e95407df80dbb699ca9806e.tar.gz mv-74d12df575b7d2cf7e95407df80dbb699ca9806e.tar.bz2 mv-74d12df575b7d2cf7e95407df80dbb699ca9806e.tar.xz mv-74d12df575b7d2cf7e95407df80dbb699ca9806e.zip |
Allow try different language part for searching help translations.
-rw-r--r-- | src/gui/helpwindow.cpp | 11 | ||||
-rw-r--r-- | src/utils/stringutils.cpp | 16 | ||||
-rw-r--r-- | src/utils/stringutils.h | 3 |
3 files changed, 20 insertions, 10 deletions
diff --git a/src/gui/helpwindow.cpp b/src/gui/helpwindow.cpp index e366712e7..e31782b8b 100644 --- a/src/gui/helpwindow.cpp +++ b/src/gui/helpwindow.cpp @@ -98,18 +98,23 @@ void HelpWindow::loadHelp(const std::string &helpFile) void HelpWindow::loadFile(const std::string &file) { - const std::string lang = getLang(); + const std::vector<std::string> langs = getLang(); ResourceManager *resman = ResourceManager::getInstance(); std::string helpPath = branding.getStringValue("helpPath"); if (helpPath.empty()) helpPath = paths.getStringValue("help"); std::vector<std::string> lines; - if (!lang.empty()) + if (!langs.empty()) { - const std::string name = helpPath + lang + "/" + file + ".txt"; + std::string name = helpPath + langs[0] + "/" + file + ".txt"; if (resman->exists(name)) lines = resman->loadTextFile(name); + if (lines.empty() && langs.size() > 1) + { + name = helpPath + langs[1] + "/" + file + ".txt"; + lines = resman->loadTextFile(name); + } } if (lines.empty()) diff --git a/src/utils/stringutils.cpp b/src/utils/stringutils.cpp index 8ae155bf7..ea2d18276 100644 --- a/src/utils/stringutils.cpp +++ b/src/utils/stringutils.cpp @@ -440,16 +440,20 @@ std::string combineDye2(std::string file, std::string dye) } } -std::string getLang() +std::vector<std::string> getLang() { + std::vector<std::string> langs; char *lng = getenv("LANG"); if (!lng) - return ""; + return langs; std::string lang(lng); int dot = lang.find("."); - if (dot == (signed)std::string::npos) - return lang; - - return lang.substr(0, dot); + if (dot != (signed)std::string::npos) + lang = lang.substr(0, dot); + langs.push_back(lang); + dot = lang.find("_"); + if (dot != (signed)std::string::npos) + langs.push_back(lang.substr(0, dot)); + return langs; }
\ No newline at end of file diff --git a/src/utils/stringutils.h b/src/utils/stringutils.h index 83773bd72..f0dbf0bd9 100644 --- a/src/utils/stringutils.h +++ b/src/utils/stringutils.h @@ -27,6 +27,7 @@ #include <sstream> #include <list> #include <set> +#include <vector> /** * Trims spaces off the end and the beginning of the given string. @@ -177,6 +178,6 @@ std::string combineDye(std::string file, std::string dye); std::string combineDye2(std::string file, std::string dye); -std::string getLang(); +std::vector<std::string> getLang(); #endif // UTILS_STRINGUTILS_H |