Package: hex-a-hop Version: 0.0.20070315-2 Tags: l10n patch Hi,
I noticed that the first help screen is not translatable by default as xgettext has trouble extracting _("Welcome to " GAMENAME "!"). It doesn't extract anything behind the macro. That's why I suggest to apply xgettext on preprocessed files and attached a patch for it (apply it after applying all patches from debian/patches/, I hope it is OK so). (I had really a lot of trouble, often the package could not build because of my changes as the previous patches could not be reverted. I also created first a backup copy of the source directory with suffix .orig (to patch later against it) which was always deleted by dpkg-buildpackage!!!) Since the preprocessed file hex_puzzzle.cpp (shouldn't is be renamed to hex_puzzle.cpp?) includes not only the affected menus.h but also level_list.h I merged both POT files (messages and levels) into one. That's why I assume you merge your translations levels.es.po and messages.es.po into es.po. I think this is better than maintaining two files. Please note that I now also update all translations during package build (in the clean target which is called at the beginning of a new build). Translations will never be outdated again! The file debian/i18n/files.list should now be deleted, it is no longer used. PS: It is not obvious that the game (at least the help) insert explicit linebreaks once it finds " " in a message and starts a new paragraph on " ". If the POT file is distributed as well (and not only generated) I suggest to document this at the beginning of this file so that these comments are merged automatically into all <lang>.po files. I also suggest to document other messages for translators in C++ files (just prepend a /* TRANSLATORS: A hint for translators*/ before difficult gettext messages as this is copied into PO files as well). Jens
Nur in hex-a-hop-0.0.20070315.unchanged/debian/i18n: files.list. diff -ur hex-a-hop-0.0.20070315.unchanged/debian/i18n/Makefile hex-a-hop-0.0.20070315/debian/i18n/Makefile --- hex-a-hop-0.0.20070315.unchanged/debian/i18n/Makefile 2007-08-11 23:55:41.000000000 +0200 +++ hex-a-hop-0.0.20070315/debian/i18n/Makefile 2007-08-12 00:00:47.000000000 +0200 @@ -17,51 +17,44 @@ LOCALEDIR=./ -all: messages.pot levels.pot build-stamp +all: messages.pot build-stamp -levels.pot: - @echo Creatting Templata \"[EMAIL PROTECTED]" - cd ../..; xgettext -k_ -o "debian/i18n/$@" level_list.h --from-code=iso-8859-1 - -messages.pot: - @echo Creatting Templata \"[EMAIL PROTECTED]" - cd ../..; xgettext -k_ -o "debian/i18n/$@" -f debian/i18n/files.list --from-code=iso-8859-1 - -%.tmp.po: levels.%.po messages.%.po - msgcat -o $@ $+ - -%.tmp.po: %.po - cp $< $@ +# xgettext fails on _("Welcome to " GAMENAME "!") (doesn't extract anything +# behind the macro, so we preprocess hex_puzzzle.cpp (which includes menus.h) +# first +hex_puzzzle_preprocessed.cpp: ../../hex_puzzzle.cpp ../../menus.h + $(CXX) $(CXXFLAGS) -E ../../hex_puzzzle.cpp -o $@ + +messages.pot: hex_puzzzle_preprocessed.cpp + @echo Creating Template \"[EMAIL PROTECTED]" + cd ../..; xgettext --add-comments="TRANSLATORS:" -k_ -o "debian/i18n/$@" gfx.cpp debian/i18n/hex_puzzzle_preprocessed.cpp level_list.h --from-code=iso-8859-1 build: build-stamp build-stamp: - @for i in `cat languages.list` ; do \ - echo Setting Up Language \"$$i\" ; \ - $(MAKE) $$i.tmp.po ; \ + @for i in $$(cat languages.list); do \ + echo Building \"$$i\" translation; \ + msgfmt $$i.po -o $$i.mo ; \ done - @if ls *.tmp.po 2>/dev/null ; then \ - for f in *.tmp.po; do \ - i=`basename $$f .tmp.po` ; \ - echo Building Language \"$$i\" ; \ - msgfmt $$f -o $$i.mo ; \ - done \ - fi touch build-stamp clean: #for f in *.po; do i=`echo $$f | awk 'BEGIN {FS="."} {print $$1}'`; rm -rf "$$i"; done + # Merge all (old) PO files with POT file to ship up-to-date files! + # We cannot touch source PO files during build but here is happens normally!? + $(MAKE) messages.pot + @for i in $$(cat languages.list); do \ + echo Updating \"$$i\" translation; \ + msgmerge --update $$i.po messages.pot ; \ + done rm -f *.mo - rm -f *.tmp.po rm -f *.pot + rm -f hex_puzzzle_preprocessed.cpp rm -f build-stamp install: build-stamp - if ls *.mo 2>/dev/null ; then \ - for f in *.mo; do \ - i=`basename $$f .mo` ; \ - echo Installing Language \"$$i\" ; \ - install -d $(LOCALEDIR)$$i ; \ - install -p -d -m 755 $(LOCALEDIR)$$i/LC_MESSAGES ; \ - install -m 644 $$f $(LOCALEDIR)$$i/LC_MESSAGES/hex-a-hop.mo ; \ - done \ - fi + @for i in $$(cat languages.list); do \ + echo Installing \"$$i\" translation; \ + install -d $(LOCALEDIR)$$i ; \ + install -p -d -m 755 $(LOCALEDIR)$$i/LC_MESSAGES ; \ + install -m 644 $$i.mo $(LOCALEDIR)$$i/LC_MESSAGES/hex-a-hop.mo ; \ + done diff -ur hex-a-hop-0.0.20070315.unchanged/debian/patches/gettext_i18n.patch hex-a-hop-0.0.20070315/debian/patches/gettext_i18n.patch --- hex-a-hop-0.0.20070315.unchanged/debian/patches/gettext_i18n.patch 2007-08-11 23:55:41.000000000 +0200 +++ hex-a-hop-0.0.20070315/debian/patches/gettext_i18n.patch 2007-08-12 00:02:50.000000000 +0200 @@ -52,7 +52,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -+#include "i18n.h" ++#include "i18n.h" ////////////////////////////////////////////////////// // Config @@ -413,8 +413,8 @@ along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -+ -+#include "i18n.h" ++ ++#include "i18n.h" #include "state.h" diff -ur hex-a-hop-0.0.20070315.unchanged/debian/rules hex-a-hop-0.0.20070315/debian/rules --- hex-a-hop-0.0.20070315.unchanged/debian/rules 2007-08-11 23:55:41.000000000 +0200 +++ hex-a-hop-0.0.20070315/debian/rules 2007-08-12 00:03:37.000000000 +0200 @@ -29,7 +29,7 @@ build-stamp: configure-stamp dh_testdir $(MAKE) CXXFLAGS="$(CFLAGS)" NAME="hex-a-hop" DATA_DIR="/usr/share/games/hex-a-hop" - $(MAKE) -C debian/i18n + $(MAKE) CXXFLAGS="$(CFLAGS)" NAME="hex-a-hop" DATA_DIR="/usr/share/games/hex-a-hop" -C debian/i18n touch $@ clean: