aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cmake_config.h.in1
-rw-r--r--src/main.cpp4
-rw-r--r--src/porting.cpp8
-rw-r--r--src/porting.h7
4 files changed, 16 insertions, 4 deletions
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,7 +505,6 @@ void initializePaths()
path_share = execpath;
path_user = execpath;
}
-
#else
infostream << "Using system-wide paths (NOT RUN_IN_PLACE)" << std::endl;
@@ -511,6 +512,11 @@ void initializePaths()
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;
infostream << "Detected user path: " << path_user << std::endl;
diff --git a/src/porting.h b/src/porting.h
index a4016e8d7..a86d37fbb 100644
--- a/src/porting.h
+++ b/src/porting.h
@@ -143,13 +143,18 @@ 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"
*/
std::string getDataPath(const char *subpath);
/*
- Initialize path_share and path_user.
+ Initialize path_*.
*/
void initializePaths();