refer to http://www.onlamp.com/pub/a/php/2002/06/13/php.html
1. Install iconv and gettext module and make configure on server
Download libiconv-1.9.1.tar.gz, gettext-0.12.1.tar.gz, apache_1.3.22.tar.gz, php-4.2.tar.gz
[libiconv]
./configure --prefix=/usr/local --enable-extra-encodings
make
make install
[gettext]
./configure --prefix=/usr/local
make
make install
[apache]
./configure --prefix=/usr/local/APACHE --enable-module=so
make
make install
/usr/local/APACHE/bin/apachectl stop
[php]
./configure --with-oci8=/home/oracle/OraHome1 --with-apxs=/usr/local/APACHE/bin/apxs --enable-sigchild --with-mysql=/usr/local/mysql --with-iconv=/usr/local --with-gettext=/usr/local --enable-track-vars --enable-mbstring=all
make
make install]
/usr/local/APACHE/bin/apachectl start
2. gettext implement step
1) Write PHP file using gettext function
For example:
<?
$language = 'zh_CN';
putenv("LANG=".$language);
putenv("LANGUAGE=".$language);
$newLocale=setlocale(LC_ALL, $language);
echo "current Locale: ".$newLocale."<BR>";
// Set the text domain as 'messages'
$domain = 'messages';
bindtextdomain($domain, "./locale");
textdomain($domain);
echo gettext("Hello everyone");
print(_("Hello World"));
?>
2) Setting Up the Gettext locale directory
/locale
/en
/LC_MESSAGES
messages.po
messages.mo
/zh_CN
/LC_MESSAGES
messages.po
messages.mo
3) extracts translatable strings and generate *.po files to translate
$ xgettext -n *.php
message.po:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE packag
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2004-01-16 03:28+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: gettext.php:23
msgid "Hello everyone"
msgstr ""
#: gettext.php:24
msgid "Hello World"
msgstr ""
4) Fill translation of msgid into msgstr and convert *.po to *.mo
$ msgfmt messages.po
$ cp messages.mo locale/zh_CN/LC_MESSAGES/
5) Maintain translation message file—msgmerge
For example:
ls
example.php
$ xgettext -n *.php
$ ls
example.php messages.po
// ...
// Translates the messages.po file now
// ...
$ msgfmt messages.po
$ ls
example.php messages.po messages.mo
// ...
// Changes the example.php file
// ...
$ mv messages.po old.po
$ xgettext -n *.php
$ ls
example.php messages.po messages.mo old.po
$ msgmerge old.po messages.po --output-file=new.po
$ ls
example.php messages.po messages.mo new.po old.po
// ...
// Translates the new.po file
// ...
$ msgfmt new.po