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>
This commit is contained in:
Dirk Hohndel 2012-10-18 14:30:45 -07:00
parent c78bf18998
commit 834825f406
5 changed files with 17 additions and 6 deletions

2
dive.h
View file

@ -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

10
linux.c
View file

@ -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,

View file

@ -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) {

2
main.c
View file

@ -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");

View file

@ -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";
}