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

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

著者:Carl McDade   2006/5/30
1   2  次のページ
国際化のテクニック

   PHPでWebアプリケーションを国際化する時に使うテクニックはごく少数です。以下にあげられたものは最も有名な3つのテクニックです。
  • PHPで書かれたテキスト定義ファイルの中で定数を宣言する
  • 文字列置換を実行するためにgettext()関数を使う
  • 翻訳されたテキストの保存、取得にデータベースを使う

   上述のテクニックはそれぞれに適した得意分野を持ち、実用的なものです。これらのテクニックは多くの部分で共通しています。しかし、筆者のような不精なWeb開発者にとって、これらのテクニックは簡単なものだとはいえません。

   ローカル化されたテキストや、保存されたリソースが、常に簡単にアクセスできるとは限りません。リソースの読込や、操作が難しいかどうかは、リソースの保存方法によって異なります。上にあげた3つのテクニックのうち、2つは、翻訳中に対象となるHTMLコードの書式を簡単に確認することができません。

   HTMLコードの書式を簡単に確認できるかどうかは重要なことです。というのは、Webアプリケーションのテキストを翻訳する時に、翻訳方法や、翻訳した言葉に影響を与える可能性があるからです。翻訳時には、リスト、改行、パラグラフ、もしくはテキストを読む方向などを知ることが必要です。

   この記事で後述する新しいテクニックと比較するために、上述したこれらの3つのテクニックを1つずつ見て行きましょう。テクニックの参照例として、有名なオープンソース・ソフトウェアもいくつか例示していきます。これらの従来使われてきた、難しいテクニックの詳細を理解することで、筆者が紹介する新しいテクニックがどれほど簡単であるかを理解することができるでしょう。


テキスト定義ファイル

   これは筆者が個人的に好む方法です。というのも、このテクニックは、非常に簡単で、広い範囲のサーバ環境で機能するからです。このテクニックを使うために、ソフトウェアをインストールする前に、サーバや共有ホストを確認する必要がほとんどありません。

   これは、おそらく最も有名なテクニックです。信頼性があり、実装が容易です。さらに、元のテキストと翻訳されたリソースの両者を分散して共有することも簡単に行えます。このテクニックを使用している有名なオープンソース・コンテンツ管理システムにはXoops、Joomla、PHPnukeなどがあります。


テキスト定義ファイルの欠点

   テキスト定義ファイルを使用する場合、定義変数の重複が簡単に生じてしまう可能性があります。また、これらのファイルは読み難くなる傾向があります。gettext()関数のように、このテクニックではHTMLコードの書式を簡単に確認できません。ビジュアル・エディタを使って編集、コピー、ペーストを行うことで、これを補助することができます。

   このテクニックでは、翻訳者はPHPソースコードを見た時、自分たちが翻訳したままにソースコードを「修正」したいという衝動に駆られがちです。重複する定数があると、翻訳者はそれを消去したり、名前を変えたりしてしまうこともあります。この修正は大したことではないように思われますが、ヘルプ・テキストの全ページにその定数が使用されている場合はどうなるでしょうか。

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
第3回:テキスト定義ファイルを用いたWebアプリケーションの国際化
国際化のテクニック
  変数インスタンスとスクリプトの追加