How to internationalize GGZ --------------------------- The GGZ Gaming Zone is a truly international project. Its contributors range from America to Europe, from the frosty North to the warm South. In order to let everyone participate as easy as possible, translation is probably among the most important parts. * New: The GGZ Internationalization Center! * http://dev.ggzgamingzone.org/i18n/ Common infrastructure --------------------- There are different strategies of how i18n is integrated into the build system. www, community: PHP file templates kde-client, kde-games: KDE build system already supports i18n python: gettext and python wrapper gtk-client, gtk-games, txt-client, utils, grubby, gnome-client: use i18n.mk java: property files, although gettext conversion tools are available Individual module descriptions ------------------------------ GGZ-KDE-Client: To update the message catalog, type 'make messages' in the kde-client/ggz-kde/po directory. This is now a po/ directory in the root directory of the CVS module. This is used for all apps beside kggz. If a language hasn't been created yet, you only need to copy kggz.pot to <cc>.po, and add it to po/Makefile.am. The same applies for all other .pot files as well. GGZ-Gtk-Games: This is very easy. Every game and every language form a matrix. Please have a look at po/*, it should be self-explanatory. If you write a new game, please add it to SUBDIRS (although that may even be abolished). Languages are then recognized automatically. The games may have different concepts of adding gettext support - right now the TicTacToe and Hastings games show how that can easily be done via ggzintl.c. GGZ-Gtk-Client: This core client has its translation files under po/. The process is nearly the same as with GGZ-Gtk-Games, but it is already sufficient to copy a .po file in there. Very easy. Both Gtk+ modules are now designed to not touch the translations at all, so don't forget to run a "make messages" in their po directories (just like with kggz). Grubby: This is the first of our apps which uses run-time language switches, based on the player it is talking with. It has some interesting i18n stuff in it which might be interesting for other areas too, for example once we start to internationalize the servers. Documentation: Feel free to translate as you like - we will be thankful for every bit! Especially for docs which have yet to be written ;) GGZ Java: Since the native i18n framework for Java is using property files, they're also used in the Java port of GGZ. There is no need to convert these files into a different format. Other packages: No i18n yet, but this will change. Please hold on. New stuff --------- Grubby is now also i18n'd, he spits out his word in whatever language you want. Just tell him where you're from. In order to make that happen for many people, the guru modules must be translated, and this is not so easy - in particular because most strings are assembled at run time. Maybe someone should try out new internationalization techniques here. I wish the C interface of gettext would perform perl variable substitution :) For the next release, it is very important to have an introductory file in many languages, preferably in HTML format, which tells all about the main focus of GGZ, e.g. the games, the chat and so on. This could then placed as a link on the various international news sites. Translation table ----------------- This table should eventually be complete. ggz-txt: src: en de man: en grubby: src: en de man: en de mod: en de docs: doc: en de gtk-games: src: en de es man: en kde-games: src: en de es man: en gtk-client: src: en de es man: en kde-client: src: en de es (fr) man: en gnome-client: src: en de man: - sdl-games: src: en man: - ggzd: src: en man: en utils: src: en man: en python: src: en (de) man: - community: src: en (de) (sv) java: src: en de Need advice? ------------ If you want to help out with translation but don't know where to start, please ask on the GGZ developers mailing list <ggz-dev@mail.ggzgamingzone.org>. Josef written: 2001-06-02 updated: 2001-09-09 updated: 2002-03-20 updated: 2003-04-28 updated: 2005-01-22 updated: 2005-05-21 updated: 2006-03-06