動的 php アプリケーションのローカリゼーションと国際化を有効にするためのいくつかのオプションを検討してきました。gettext や Yahoo の R3 など、さまざまなツールが利用できるようです。開発者と翻訳者の両方から、どのツールを使用するのが良いか、実装と翻訳の作業を容易にするためにどの機能が重要かを聞くことに興味があります。
5 に答える
PHP gettext の実装は非常にスムーズに動作します。また、po edit と gettext を含む po ファイルは、さまざまな言語の複雑さを完全に処理できるソリューションは存在しないことを念頭に置いて、ローカリゼーションに対処するのに最適な方法です。たとえば、gettext メソッドは複数形で非常に優れていますが、活用などを処理できるものは見たことがありません。
詳細については、こちらの投稿を参照してください:多言語 Web サイトを構築するにはどうすればよいですか?
とにかくZendFrameworkを使用しているので、Zend_Translateをいじくり回してきました。それは非常によく文書化されており、これまでのところ非常に堅実です。
過去には、私はほとんど自分の自家製のソリューションを使用していました。これには、すべてのテキスト部分を保持し、後でビュー/テンプレートにエコーされるだけの定数または変数を持つ言語ファイルが含まれます。
gettextに関しては、過去にPHPのgettext実装に欠陥があるという言及を聞いたことがありますが、それを実際にバックアップすることはできず、現在も参照がありません。
メッセージを表示するためのデータベース駆動型ソリューションは必ずしも良いものではありません。私は15以上の言語のサイトで作業し、翻訳が問題でした。
だから私たちのデザインは:
- php-mysqlの翻訳アプリ(翻訳アクセスなど)
- その後、翻訳はphparrraysで書かれます
- これらのアレイは、サイトを高速化するためにAPCにもキャッシュされます。
したがって、異なる言語をローカライズするには、インクルードするだけで済みます
お気に入り
<?php
include('lang/en.php');
include('lang/en_us.php'); // this file overrides few keys from the last one.
?>
pecl には多くの便利な拡張機能があります: http://pecl.php.net/packages.php?catpid=28&catname=Internationalization
特に、International Components for Unicode (ICU) の主要な i18n 関数のほとんどを提供する php-intl を確認することをお勧めします。
Xataface を使用すると、任意の PHP/MySQL アプリケーションを非常に簡単に国際化できます。静的テキストとデータベース データの両方の翻訳をサポートします。アプリケーションのいくつかの場所に 1 ~ 2 行のコードを追加するだけでよいのです。
http://xataface.com/documentation/tutorial/internationalization-with-dataface-0.6