1
0
Fork 0
mirror of https://github.com/AquariaOSE/Aquaria.git synced 2024-11-25 09:44:02 +00:00
Aquaria/BBGE/Localization.cpp

69 lines
1.7 KiB
C++
Raw Normal View History

#include "Localization.h"
static std::string s_locale;
2012-07-14 13:00:37 +00:00
static std::string s_modpath;
void setUsedLocale(const std::string& s)
{
s_locale = s;
}
const char *getUsedLocale()
{
return s_locale.c_str();
}
2012-07-14 13:00:37 +00:00
void setLocalisationModPath(const std::string& s)
{
s_modpath = s;
stringToLower(s_modpath);
}
// hackish
// intended to be used only for paths which are known to start with the mod path,
// but can deal with it if this is not the case
std::string localisePathInternalModpath(const std::string &path)
{
std::string tmp = path;
stringToLower(tmp);
if(!strncmp(tmp.c_str(), s_modpath.c_str(), s_modpath.length()))
return localisePath(path, s_modpath);
return localisePath(path);
}
std::string localisePath(const std::string &path, const std::string& modpath /* = "" */)
{
2012-07-14 17:50:01 +00:00
if (s_locale.empty() || s_locale == "-")
2012-07-11 02:50:19 +00:00
return path;
if(path.length() < modpath.length())
return path;
2012-07-11 02:50:19 +00:00
const std::string fname = path.substr(modpath.length());
2012-07-11 02:50:19 +00:00
/* we first try with complete locale name, i.e "locales/en_US/" */
std::string localisedPath = modpath + "locales/" + s_locale + "/" + fname;
2012-07-11 02:50:19 +00:00
if (exists(localisedPath.c_str()))
return localisedPath;
2012-07-11 02:50:19 +00:00
/* ok didn't work, let's retry with only language part of locale name, i.e "locales/en/" */
const size_t found = s_locale.find('_');
2012-07-11 02:50:19 +00:00
/* hmm, seems like we didn't have a full locale name anyway, use original path */
if (found == std::string::npos)
2012-07-11 02:50:19 +00:00
return path;
2012-07-11 02:50:19 +00:00
localisedPath = modpath + "locales/" + s_locale.substr(0,found) + "/" + fname;
2012-07-11 02:50:19 +00:00
/* hooray we found a file! */
if (exists(localisedPath.c_str()))
return localisedPath;
2012-07-11 02:50:19 +00:00
/* seems like we don't have a localized version of the file available, use original path */
return path;
}