TOP書籍連動> gettext関数
Webアプリケーションの国際化
PHPコードを利用してWebアプリケーションを国際化する

第4回:テキスト定義ファイルを用いたWebアプリケーションの国際化 〜 その2

著者:Carl McDade   2006/6/6
前のページ  1  2
gettext関数

   Webアプリケーションをローカル化するPHPのgettext()関数は、Webアプリケーションを作り終えた後に国際化しようとしている人たちにとって有益なものです。DrupalやGallery2のような多くのオープンソースPHPアプリケーションはgettextエクステンションに依存しています。

gettextの欠点

   この関数を使う際に、問題がいくつかあります。gettext()関数はスレッドに対して安全ではなく、マルチ・スレッド環境では利用できないgettext()関数はsetlocale()関数に依存するため、システムにインストールされている言語に依存し、UTF-8の場合、使用に際して設定が非常に大変となります。

   個人的にはgettext()関数は好きではありません。というのも、いったん、デフォルト言語テンプレートを変えてしまうと、すべての第二言語を見直して、再びコンパイルしなければならないからです。このため、gettext()関数を使用した場合、設計とプログラムは非常に難しくなります。ローカル化する必要のあるテキストが含まれるPHPコード・ページを追加したり修正したりすれば、多重ステップ・プロセスを実行する必要が何度もでてきてしまいます。

   この冗長なプロセスにより間違える可能性が生じ、その間違いによってはさらに時間を浪費することもあります。オープンソースWebアプリケーションでは、セキュリティや、バグの除去、正式なアップデートなどの度に仕様が変わっていきます。そのため、部分的に、もしくはまるごとすべて、自分の翻訳を失うリスクを負います。

   最後に、gettext()関数の欠点として、翻訳されたテキストを再利用することが難しくなることがあげられます。テキスト抽出プロセスはファイルごと、ヒットごとに行われます。つまり、翻訳をする時、自分が同じテキストのインスタンスを書くことになり、多くのファイルで類似した翻訳をしていることに気づくでしょう。

   翻訳のために第三者に代金を支払っている場合、余計な費用がかかっていることになります。諺にもあるように、「時は金なり」です。テキストをPOファイルに保存し、同じようなテキストが多く存在するような大きなアプリケーションでは、ページ内で変更しようとしている要素のテキスト文字列を見つけることはとても難しいことです。

   メッセージIDとはgettext()関数によって入れ替えられる文字列の場所を示す指標ではありません。POファイルはそれ自体は扱いづらいもので、多少のプログラミング知識と慎重な処理を必要とします。テキストエディタでもそれらを変更することはできますが、POEditのようなプログラムを使う方がより望ましい方法です。

   しかし、多くの場合、この方法には限界があります。なぜならば、POEditはプラットフォームのプログラムに依存しているからです。POEditにはMacintosh版はなく、Macユーザを無視することになります。これは非常に残念なことであり、多くのマック・ユーザは、その代替方法として、直接書くか、新しい媒体を使っています。

   翻訳支援ツール(CAT)もPOファイルを用いる設定と使用が困難です。これを上手く行うCATプログラムは非常に高価です。これらの欠点はおそらくワード・ファイルが翻訳者の標準ファイル・フォーマットであることに起因します。翻訳テキストが完成した後、PHPで使用するにはPOファイルはMOファイルへとコンパイルされなければなりません。

前のページ  1  2

PHPプログラマーズマガジン 書籍紹介
PHPプログラマーズマガジン

PHPプログラマーズマガジンは、PDF形式で読者の方にお届けするPHP言語(PHP: Hypertext Processor)専門誌です。 カナダMTA出版のphp|architect誌を日本語に翻訳し、独自の記事を加えて月刊でお届けしています。

発行:アシアル株式会社  価格:1,029円

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

INDEX
第4回:テキスト定義ファイルを用いたWebアプリケーションの国際化 〜 その2
  テキスト定義ファイル
gettext関数