 |

|
PHPコードを利用してWebアプリケーションを国際化する |
第5回:Webアプリケーションをローカル化するgettext関数
著者:Carl McDade 2006/6/14
|
|
|
1 2 次のページ
|
 |
gettext関数
|
今回は前回に引き続き、Webアプリケーションをローカル化するgettext関数について解説します。
|
ディレクトリ構造
|
Webアプリケーションをローカル化するPHPのgettext()関数は、Webアプリケーションを作り終えた後に国際化しようとしている人たちにとって有益なものです。今回は前回に引き続き、gettext関数について解説します。
gettext()関数を使うには、リソースファイルが特別な構造であることと、この構造の情報がPHP コードに組み込まれていることが必要です。
/locale
/en
/LC_MESSAGES
messages.po
messages.mo
複数の言語が同じ階層に組み込まれます。
/locale
/en
/LC_MESSAGES
messages.po
messages.mo
/sv_SV
/LC_MESSAGES
messages.po
messages.mo
|
ロケールの設定とその他の必要事項
|
gettext()関数を使う場合、ロケールを設定することが必要です。翻訳されたテキストのリソースを見つけようとする場合、これはPHPが必要とする命令の主要な部分です。
<?php
// 国際化サポートの情報
$language = 'en';
putenv("LANG=$language");
setlocale(LC_ALL, $language);
// テキストドメインを'messages'に設定する
$domain = 'messages';
bindtextdomain($domain, "/www/htdocs/site.com/locale");
textdomain($domain);
echo gettext("翻訳される文字列がここに入ります。");
?>
|
文字列の指定と抽出
|
PHPのコードは文字列の抽出に対応するように設定される必要があります。そうすることでPHPは翻訳される文字列を見つけることができるようになります。これは文字列にgettext()関数を使うことで実行されます。
<?php $var = gettext(‘ これは翻訳可能な文字列です。’);?>
上のコード内のテキスト文字列は抽出され、コマンドライン関数を使っているPOファイルへ組み込まれます。この関数はgettext()関数のインスタンスを探し、各々の状況で文字列をインデクスつきのメッセージへセットします。
$ xgettext -n *.php
抽出後、翻訳されるPOファイルはリスト1のようになっているはずです。
リスト1
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Free Software Foundation, Inc.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"POT-Creation-Date: 2002-04-06 21:44-0500\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_example.php:12
msgid "A string to be translated would go here"
msgstr ""
|
1 2 次のページ
|
書籍紹介
PHPプログラマーズマガジン
PHPプログラマーズマガジンは、PDF形式で読者の方にお届けするPHP言語(PHP: Hypertext Processor)専門誌です。 カナダMTA出版のphp|architect誌を日本語に翻訳し、独自の記事を加えて月刊でお届けしています。
発行:アシアル株式会社 価格:1,029円
ご購入はこちら http://www.asial.co.jp/magazine/
|
|

|
著者プロフィール
Carl McDade
スェーデンに住むフリーランスのWeb開発者、兼プログラマー。Microsoftデータベース管理者の資格を持っており、1997年からWeb開発を行っています。開発期間のほとんどをドキュメント作成、コード作成、PHPコンテンツ管理システムの勉強に費やしています。Webサイト(http://www.hivemindz.com)で彼とコンタクトをとることができます。
|
|
|
|