Revision [2188]

This is an old revision of LocalizationProposal made by BrianKoontz on 2010-11-07 22:01:46.

 

Localization proposal using gettext

This document describes a proposal to implement gettext for all translation strings in WikkaWiki, starting with Wikka 1.3. Note that this is only a proposal, so this document can and probably will be modified several times. Should the dev team decide to adopt gettext as the localization standard for Wikka, this page will be renamed to indicate this.
 


References

The following references were used to develop the initial gettext implementation using the Wikka 1.3 development branch:

"Translating WordPress"
PHP-gettext dev blog (Danilo Segan)
PHP-gettext repository
GNU gettext manual
Some gettext notes from Pablo Hoch's Blog

Implementation Notes

The PHP-gettext standalone library is used to implement gettext in Wikka. This eliminates the need for a Wikka administrator to ensure their version of PHP has gettext support compiled in. PHP-gettext requires no external libraries and only a minimal amount of configuration. It is licensed under GPLv2.

In Wikka 1.3, the PHP-gettext version 1.09 libraries are located in 3rdparty/core/php-gettext. No modifications are necessary when installing from the PHP-gettext version 1.09 release package.

Testing was conducted on a Windows 7 laptop running the excellent WampServer 2.0 package (Apache 2.2.11, PHP 5.2.11, and MySQL 5.1.36) using GNU gettext 0.17 tools under Cygwin.

Defines that were used as translation strings in lang/en/en.inc.php and related language files were replaced in source files with their English equivalents using a Perl script. The gettext macro used for all Wikka translation strings is T_ (the reason for this is that _ is already used by the installer). For instance, the following define:

if(!defined('FOOTER_PAGE_EDIT_LINK_DESC')) define('FOOTER_PAGE_EDIT_LINK_DESC', 'Edit page');

was replaced in the header.php source code file with the following:

T_('Edit page')

A file called localization.php is used in the Wikka top-level directory to configure PHP-gettext. This file should normally not require modification by the end-user. The file itself is invoked from within wikka.php via the include_once directive.

Locale directory structure

The locale directory is structured as follows:

locale/
locale/po <--contains the generic template file; must be copied to lang-specific directories for translation
locale/po/messages.pot <--generic template file
locale/en_US <--locale-specific
locale/en_US/LC_MESSAGES <--holds lang-specific translations
locale/en_US/LC_MESSAGES/en_US.po <--lang-specific template file, usually created by msginit
locale/en_US/LC_MESSAGES/en_US.mo <--compiled translation file, usually created by msgfmt
locale/de_DE
locale/de_DE/LC_MESSAGES
etc...


Generating the gettext template (.pot) file

Any time new translation macros (of the form T_(...)) are added to the source code, a new gettext template file must be generated. There are several different gettext utilities that can be used to generate this file.
There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki