Use CUSTOM_LOCALEDIR if specified

This commit is contained in:
ShadowNinja 2015-08-24 14:32:15 -04:00 committed by est31
parent 31b6d26784
commit 645e208673
4 changed files with 16 additions and 4 deletions

@ -12,6 +12,7 @@
#define VERSION_STRING "@VERSION_STRING@" #define VERSION_STRING "@VERSION_STRING@"
#define PRODUCT_VERSION_STRING "@VERSION_MAJOR@.@VERSION_MINOR@" #define PRODUCT_VERSION_STRING "@VERSION_MAJOR@.@VERSION_MINOR@"
#define STATIC_SHAREDIR "@SHAREDIR@" #define STATIC_SHAREDIR "@SHAREDIR@"
#define STATIC_LOCALEDIR "@LOCALEDIR@"
#define BUILD_TYPE "@CMAKE_BUILD_TYPE@" #define BUILD_TYPE "@CMAKE_BUILD_TYPE@"
#cmakedefine01 RUN_IN_PLACE #cmakedefine01 RUN_IN_PLACE
#cmakedefine01 USE_GETTEXT #cmakedefine01 USE_GETTEXT

@ -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")); httpfetch_init(g_settings->getS32("curl_parallel_limit"));
#ifdef _MSC_VER #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); g_settings->get("language"), argc, argv);
#else #else
init_gettext((porting::path_share + DIR_DELIM + "locale").c_str(), init_gettext(porting::path_locale.c_str(),
g_settings->get("language")); g_settings->get("language"));
#endif #endif

@ -136,6 +136,8 @@ void signal_handler_init(void)
// Default to RUN_IN_PLACE style relative paths // Default to RUN_IN_PLACE style relative paths
std::string path_share = ".."; std::string path_share = "..";
std::string path_user = ".."; std::string path_user = "..";
std::string path_locale = path_share + DIR_DELIM + "locale";
std::string getDataPath(const char *subpath) std::string getDataPath(const char *subpath)
{ {
@ -503,13 +505,17 @@ void initializePaths()
path_share = execpath; path_share = execpath;
path_user = execpath; path_user = execpath;
} }
#else #else
infostream << "Using system-wide paths (NOT RUN_IN_PLACE)" << std::endl; infostream << "Using system-wide paths (NOT RUN_IN_PLACE)" << std::endl;
if (!setSystemPaths()) if (!setSystemPaths())
errorstream << "Failed to get one or more system-wide path" << std::endl; 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 #endif
infostream << "Detected share path: " << path_share << std::endl; infostream << "Detected share path: " << path_share << std::endl;

@ -142,6 +142,11 @@ extern std::string path_share;
*/ */
extern std::string path_user; extern std::string path_user;
/*
Path to gettext locale files
*/
extern std::string path_locale;
/* /*
Get full path of stuff in data directory. Get full path of stuff in data directory.
Example: "stone.png" -> "../data/stone.png" Example: "stone.png" -> "../data/stone.png"
@ -149,7 +154,7 @@ extern std::string path_user;
std::string getDataPath(const char *subpath); std::string getDataPath(const char *subpath);
/* /*
Initialize path_share and path_user. Initialize path_*.
*/ */
void initializePaths(); void initializePaths();