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