diff --git a/src/cmake_config.h.in b/src/cmake_config.h.in index 04f368594..bda7a891a 100644 --- a/src/cmake_config.h.in +++ b/src/cmake_config.h.in @@ -12,6 +12,7 @@ #define VERSION_STRING "@VERSION_STRING@" #define PRODUCT_VERSION_STRING "@VERSION_MAJOR@.@VERSION_MINOR@" #define STATIC_SHAREDIR "@SHAREDIR@" +#define STATIC_LOCALEDIR "@LOCALEDIR@" #define BUILD_TYPE "@CMAKE_BUILD_TYPE@" #cmakedefine01 RUN_IN_PLACE #cmakedefine01 USE_GETTEXT diff --git a/src/main.cpp b/src/main.cpp index 950d30b5a..dece27428 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -472,10 +472,10 @@ static bool init_common(int *log_level, const Settings &cmd_args, int argc, char httpfetch_init(g_settings->getS32("curl_parallel_limit")); #ifdef _MSC_VER - init_gettext((porting::path_share + DIR_DELIM + "locale").c_str(), + init_gettext(porting::path_locale.c_str(), g_settings->get("language"), argc, argv); #else - init_gettext((porting::path_share + DIR_DELIM + "locale").c_str(), + init_gettext(porting::path_locale.c_str(), g_settings->get("language")); #endif diff --git a/src/porting.cpp b/src/porting.cpp index cb9f3270b..5fea1d9cf 100644 --- a/src/porting.cpp +++ b/src/porting.cpp @@ -136,6 +136,8 @@ void signal_handler_init(void) // Default to RUN_IN_PLACE style relative paths std::string path_share = ".."; std::string path_user = ".."; +std::string path_locale = path_share + DIR_DELIM + "locale"; + std::string getDataPath(const char *subpath) { @@ -503,13 +505,17 @@ void initializePaths() path_share = execpath; path_user = execpath; } - #else infostream << "Using system-wide paths (NOT RUN_IN_PLACE)" << std::endl; if (!setSystemPaths()) errorstream << "Failed to get one or more system-wide path" << std::endl; +#endif +#ifdef STATIC_LOCALEDIR + path_locale = STATIC_LOCALEDIR[0] ? STATIC_LOCALEDIR : getDataPath("locale"); +#else + path_locale = getDataPath("locale"); #endif infostream << "Detected share path: " << path_share << std::endl; diff --git a/src/porting.h b/src/porting.h index a4016e8d7..a86d37fbb 100644 --- a/src/porting.h +++ b/src/porting.h @@ -142,6 +142,11 @@ extern std::string path_share; */ extern std::string path_user; +/* + Path to gettext locale files +*/ +extern std::string path_locale; + /* Get full path of stuff in data directory. Example: "stone.png" -> "../data/stone.png" @@ -149,7 +154,7 @@ extern std::string path_user; std::string getDataPath(const char *subpath); /* - Initialize path_share and path_user. + Initialize path_*. */ void initializePaths();