void GettextHelper::initLang() { #ifdef ENABLE_NLS const std::string lang = setLangEnv(); #ifdef WIN32 // mingw doesn't like LOCALEDIR to be defined for some reason if (lang != "C") bindTextDomain("translations/"); #else // WIN32 #ifdef ANDROID #ifdef USE_SDL2 bindTextDomain((std::string(getenv("APPDIR")).append("/locale")).c_str()); #else // USE_SDL2 bindTextDomain((std::string(PhysFs::getBaseDir()).append( "/locale")).c_str()); #endif // USE_SDL2 #else // ANDROID #ifdef ENABLE_PORTABLE bindTextDomain((std::string(PhysFs::getBaseDir()).append( "../locale/")).c_str()); #else // ENABLE_PORTABLE #ifdef __APPLE__ bindTextDomain((std::string(PhysFs::getBaseDir()) .append("ManaPlus.app/Contents/Resources/locale/")).c_str()); #else // __APPLE__ bindTextDomain(LOCALEDIR); #endif // __APPLE__ #endif // ENABLE_PORTABLE #endif // ANDROID #endif // WIN32 char *locale = setlocale(LC_MESSAGES, lang.c_str()); if (locale) { logger->log("locale: %s", locale); } else { locale = setlocale(LC_MESSAGES, (lang + ".utf8").c_str()); if (locale) logger->log("locale: %s", locale); else logger->log("locale empty"); } bind_textdomain_codeset("manaplus", "UTF-8"); textdomain("manaplus"); #elif defined(ENABLE_CUSTOMNLS) mainTranslator = new PoDict("en"); setLangEnv(); #endif // ENABLE_NLS }
void GettextHelper::initLang() { #ifdef ENABLE_NLS std::string lang = config.getStringValue("lang"); #ifdef WIN32 if (lang.empty()) lang = std::string(_nl_locale_name_default()); putenv(const_cast<char*>(("LANG=" + lang).c_str())); putenv(const_cast<char*>(("LANGUAGE=" + lang).c_str())); // mingw doesn't like LOCALEDIR to be defined for some reason if (lang != "C") bindTextDomain("translations/"); #else // WIN32 if (!lang.empty()) { Client::setEnv("LANG", lang.c_str()); Client::setEnv("LANGUAGE", lang.c_str()); } #ifdef ANDROID #ifdef USE_SDL2 bindTextDomain((std::string(getenv("APPDIR")).append("/locale")).c_str()); #else // USE_SDL2 bindTextDomain((std::string(PhysFs::getBaseDir()).append( "/locale")).c_str()); #endif // USE_SDL2 #else // ANDROID #ifdef ENABLE_PORTABLE bindTextDomain((std::string(PhysFs::getBaseDir()).append( "../locale/")).c_str()); #else // ENABLE_PORTABLE #ifdef __APPLE__ bindTextDomain((std::string(PhysFs::getBaseDir()) .append("ManaPlus.app/Contents/Resources/locale/")).c_str()); #else // __APPLE__ bindTextDomain(LOCALEDIR); #endif // __APPLE__ #endif // ENABLE_PORTABLE #endif // ANDROID #endif // WIN32 char *locale = setlocale(LC_MESSAGES, lang.c_str()); if (locale) { logger->log("locale: %s", locale); } else { locale = setlocale(LC_MESSAGES, (lang + ".utf8").c_str()); if (locale) logger->log("locale: %s", locale); else logger->log("locale empty"); } bind_textdomain_codeset("manaplus", "UTF-8"); textdomain("manaplus"); #endif // ENABLE_NLS }