iconv and gettext implement step

来源:互联网 发布:三星4321网络扫描 编辑:程序博客网 时间:2024/05/22 03:31

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

 

原创粉丝点击