mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
Yet more changes to create localized builds for Mac
It turns out that we need aliases for all the languages. And more fiddling when creating the dmg. And a specialized MacPorts build with the install path as prefix. What this basically means is that our app will be correctly localized iff run as /Applications/Subsurface.app Otherwise the gtk default texts (on buttons for example) may or may not be translated. One remaining issue is that apparently Gtk's Mac integration triggers on the untranslated name Help the Menu tree in order to work. Yet we can't easily tell the app not to translate that word as the translations are done internally in gtk - we'd basicall have to build special subsurface.mo files for Mac that don't contain a translation of the word "Help" for this to work. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
caccbfb6e9
commit
f481622156
3 changed files with 22 additions and 5 deletions
2
Makefile
2
Makefile
|
@ -259,7 +259,7 @@ uemis-downloader.o: uemis-downloader.c dive.h uemis.h
|
|||
$(OSSUPPORT).o: $(OSSUPPORT).c display-gtk.h
|
||||
$(CC) $(CFLAGS) $(OSSUPPORT_CFLAGS) -c $(OSSUPPORT).c
|
||||
|
||||
share/locale/%.UTF-8/LC_MESSAGES/subsurface.mo: po/%.po
|
||||
share/locale/%.UTF-8/LC_MESSAGES/subsurface.mo: po/%.po po/%.aliases
|
||||
mkdir -p $(dir $@)
|
||||
msgfmt -c -o $@ po/$*.po
|
||||
@-if test -s po/$*.aliases; then \
|
||||
|
|
|
@ -5,9 +5,20 @@ install gtk-mac-bundler (this has been tested with version 0.7.0) and run
|
|||
|
||||
$ gtk-mac-bundler subsurface.bundle
|
||||
|
||||
This should install a self-contained Subsurface application under /Applications/Subsurface.app
|
||||
This should install a self-contained Subsurface application under
|
||||
./staging/Subsurface.app
|
||||
|
||||
Sadly because of the way gettext accesses the gtk20.mo file, this fails
|
||||
for localized use - in that case you need to rebuild MacPorts with
|
||||
-prefix /Applications/Subsurface.app/Contents/Resources
|
||||
And then things work correctly IFF the app gets installed with that path.
|
||||
|
||||
What a pain.
|
||||
|
||||
You still need to manually build a DMG if you want to easily distribute this.
|
||||
|
||||
hdiutil create -volname Subsurface -srcfolder staging Subsurface-<version>.dmg
|
||||
|
||||
Caveats
|
||||
-------
|
||||
|
||||
|
@ -16,6 +27,7 @@ Caveats
|
|||
$ sudo port install pango +builtin_modules +no_x11 +quartz
|
||||
|
||||
Without the builtin modules the installed application fails to find the modules and doesn't render any text.
|
||||
Also note the comment above about the -prefix
|
||||
|
||||
* It seems that gtk-mac-bundler expects the charset.alias file to be
|
||||
in the ${prefix}/lib folder which it isn't with the current version of
|
||||
|
@ -24,4 +36,5 @@ Without the builtin modules the installed application fails to find the modules
|
|||
$ sudo cp /usr/lib/charset.alias /opt/local/lib
|
||||
|
||||
* libdivecomputer needs to be configured with --with-prefix=/opt/local
|
||||
(or /Applications/Subsurface.app/Contents/Resources for localized builds)
|
||||
|
||||
|
|
|
@ -12,13 +12,13 @@
|
|||
defined by jhbuild, so it you are not using jhbuild you can
|
||||
either define your own or just hardcode the path here.
|
||||
-->
|
||||
<prefix name="default">/opt/local</prefix>
|
||||
<prefix name="default">/Applications/Subsurface.app/Contents/Resources</prefix>
|
||||
|
||||
<!-- The project directory is the default location of the created
|
||||
app. If you leave out the path, the current directory is
|
||||
used. Note the usage of an environment variable here again.
|
||||
-->
|
||||
<destination overwrite="yes">/Applications</destination>
|
||||
<destination overwrite="yes">./staging</destination>
|
||||
|
||||
<image>
|
||||
<!-- Not implemented yet (DMG image). -->
|
||||
|
@ -82,14 +82,18 @@
|
|||
want to copy in to the bundle. The "dest" attribute is
|
||||
optional, as usual. Bundler will find all translations of that
|
||||
library/program under the indicated directory and copy them.-->
|
||||
<translations name="subsurface">
|
||||
${prefix}/share/locale
|
||||
</translations>
|
||||
<translations name="gtk20">
|
||||
${prefix}/share/locale
|
||||
</translations>
|
||||
|
||||
<!--
|
||||
<data dest="${bundle}/Contents/Resources/share/locale">
|
||||
${project}/Subsurface.app/Contents/Resources/share/locale
|
||||
</data>
|
||||
|
||||
-->
|
||||
<!-- Data to copy in, usually Glade/UI files, images, sounds files
|
||||
etc. The destination inside the bundle can be specified if the
|
||||
files should end up at a different location, by using the
|
||||
|
|
Loading…
Reference in a new issue