diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2012-10-18 14:30:45 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2012-10-18 14:30:45 -0700 |
commit | 834825f4061b1d74f6925233cdf9d1be1fdcc8f7 (patch) | |
tree | f68942e383dc44432be1115c29abe997f271f3a9 | |
parent | c78bf189985b89941aab1861145b99f7f61c2013 (diff) | |
download | subsurface-834825f4061b1d74f6925233cdf9d1be1fdcc8f7.tar.gz |
Find translation files on Linux after Subsurface was installed
So far we only looked in the a local subdirectory, but once Subsurface has
been installed, we don't need to change the search path for translation
files anymore.
Fixes #2
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | dive.h | 2 | ||||
-rw-r--r-- | linux.c | 10 | ||||
-rw-r--r-- | macos.c | 4 | ||||
-rw-r--r-- | main.c | 2 | ||||
-rw-r--r-- | windows.c | 5 |
5 files changed, 17 insertions, 6 deletions
@@ -440,7 +440,7 @@ extern const char *star_strings[]; extern const char *default_filename; extern const char *existing_filename; extern const char *subsurface_default_filename(void); -extern const char *subsurface_gettext_domainpath(void); +extern const char *subsurface_gettext_domainpath(char *); extern void subsurface_command_line_init(gint *, gchar ***); extern void subsurface_command_line_exit(gint *, gchar ***); #define AIR_PERMILLE 209 @@ -84,9 +84,15 @@ const char *subsurface_default_filename() } } -const char *subsurface_gettext_domainpath() +const char *subsurface_gettext_domainpath(char *argv0) { - return "./share/locale"; + if (argv0[0] == '.') { + /* we're starting a local copy */ + return "./share/locale"; + } else { + /* subsurface is installed, so system dir should be fine */ + return NULL; + } } void subsurface_ui_setup(GtkSettings *settings, GtkWidget *menubar, @@ -104,8 +104,10 @@ const char *subsurface_default_filename() } } -const char *subsurface_gettext_domainpath() +const char *subsurface_gettext_domainpath(char *argv0) { + /* on a Mac we ignore the argv0 argument and instead use the resource_path + * to figure out where to find the translation files */ static char buffer[256]; const char *resource_path = quartz_application_get_resource_path(); if (resource_path) { @@ -230,7 +230,7 @@ int main(int argc, char **argv) /* set up l18n - the search directory needs to change * so that it uses the correct system directory when * subsurface isn't run from the local directory */ - path = subsurface_gettext_domainpath(); + path = subsurface_gettext_domainpath(argv[0]); setlocale( LC_ALL, "" ); bindtextdomain("subsurface", path); bind_textdomain_codeset("subsurface", "utf-8"); @@ -151,11 +151,14 @@ const char *subsurface_default_filename() } } -const char *subsurface_gettext_domainpath() +const char *subsurface_gettext_domainpath(char *argv0) { + /* first hackishly make sure that the LANGUAGE information is correctly set up + * in the environment */ char buffer[80]; snprintf(buffer, sizeof(buffer), "LANGUAGE=%s.UTF-8", g_win32_getlocale()); putenv(buffer); + /* always use translation directory relative to install location, regardless of argv0 */ return "./share/locale"; } |