summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Henrik Brautaset Aronsen <subsurface@henrik.synth.no>2012-10-15 14:44:01 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2012-10-15 09:36:30 -0700
commitef039c9d32e998af3ceab21673a51169f6e4f1ed (patch)
treeeafa830236c22de20faa1fd050c26a3d5a47825b
parent5c432d3c8afdb7b98ef385b5bde04bc5aea1c5cf (diff)
downloadsubsurface-ef039c9d32e998af3ceab21673a51169f6e4f1ed.tar.gz
Support for gettext in MacOSX application bundle
The MacOSX applications bundle needs to be told where to bind the text domain from. Also copy the gettext .mo files in the install-macosx target. [Dirk Hohndel: minor change in main(): move the path declaration to the beginning of the function] Signed-off-by: Henrik Brautaset Aronsen <subsurface@henrik.synth.no> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--Makefile4
-rw-r--r--dive.h1
-rw-r--r--linux.c5
-rw-r--r--macos.c13
-rw-r--r--main.c4
-rw-r--r--windows.c5
6 files changed, 31 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index e747c5a3b..af2284f96 100644
--- a/Makefile
+++ b/Makefile
@@ -154,6 +154,10 @@ install-macosx: $(NAME)
$(INSTALL) $(MACOSXFILES)/Info.plist $(MACOSXINSTALL)/Contents/
$(INSTALL) $(ICONFILE) $(MACOSXINSTALL)/Contents/Resources/
$(INSTALL) $(MACOSXFILES)/Subsurface.icns $(MACOSXINSTALL)/Contents/Resources/
+ $(INSTALL) -d -m 755 $(addprefix $(MACOSXINSTALL)/Contents/Resources/,$(dir $(MSGOBJS)))
+ for MSG in $(MSGOBJS); do\
+ install $$MSG $(MACOSXINSTALL)/Contents/Resources/$$MSG;\
+ done
file.o: file.c dive.h file.h
$(CC) $(CFLAGS) $(GLIB2CFLAGS) $(XML2CFLAGS) $(XSLT) $(ZIP) -c file.c
diff --git a/dive.h b/dive.h
index 42c09b581..fb1a1baa6 100644
--- a/dive.h
+++ b/dive.h
@@ -435,6 +435,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 void subsurface_command_line_init(gint *, gchar ***);
extern void subsurface_command_line_exit(gint *, gchar ***);
#define AIR_PERMILLE 209
diff --git a/linux.c b/linux.c
index f60f9179c..b97e54f27 100644
--- a/linux.c
+++ b/linux.c
@@ -84,6 +84,11 @@ const char *subsurface_default_filename()
}
}
+const char *subsurface_gettext_domainpath()
+{
+ return "./locale";
+}
+
void subsurface_ui_setup(GtkSettings *settings, GtkWidget *menubar,
GtkWidget *vbox, GtkUIManager *ui_manager)
{
diff --git a/macos.c b/macos.c
index 3cc4ddf1e..3d9c9b5cd 100644
--- a/macos.c
+++ b/macos.c
@@ -104,6 +104,19 @@ const char *subsurface_default_filename()
}
}
+const char *subsurface_gettext_domainpath()
+{
+ CFBundleRef mainBundle = CFBundleGetMainBundle();
+ CFURLRef localeURL = CFBundleCopyResourceURL(mainBundle, CFSTR("locale"), CFSTR(""), NULL);
+ if (localeURL) {
+ CFStringRef localePath = CFURLCopyFileSystemPath(localeURL, kCFURLPOSIXPathStyle);
+ CFStringEncoding encodingMethod = CFStringGetSystemEncoding();
+ const char *path = CFStringGetCStringPtr(localePath, encodingMethod);
+ return path;
+ }
+ return "./locale";
+}
+
static void show_main_window(GtkWidget *w, gpointer data)
{
gtk_widget_show(main_window);
diff --git a/main.c b/main.c
index 1ca484d0c..cdf95638a 100644
--- a/main.c
+++ b/main.c
@@ -225,12 +225,14 @@ int main(int argc, char **argv)
{
int i;
gboolean no_filenames = TRUE;
+ const char *path;
/* 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 */
setlocale( LC_ALL, "" );
- bindtextdomain("subsurface", "./locale");
+ path = subsurface_gettext_domainpath();
+ bindtextdomain("subsurface", path);
bind_textdomain_codeset("subsurface", "utf-8");
textdomain("subsurface");
output_units = SI_units;
diff --git a/windows.c b/windows.c
index eedeccf15..b099193f8 100644
--- a/windows.c
+++ b/windows.c
@@ -151,6 +151,11 @@ const char *subsurface_default_filename()
}
}
+const char *subsurface_gettext_domainpath()
+{
+ return "./locale";
+}
+
void subsurface_ui_setup(GtkSettings *settings, GtkWidget *menubar,
GtkWidget *vbox, GtkUIManager *ui_manager)
{