1

多言語サイトの設定 次に、サイトの静的テキストに使用する必要があるオプションを決定する必要があります。サイトのセットアップについて説明し、使用するソリューションを決定するのを手伝っていただけないでしょうか。

このサイトは、複数のドメインが同じディレクトリを指すことを可能にし、ドメイン名に基づいてコンテンツを提供できる CMS システムです。したがって、すべてのドメインが同じコードを共有します。このサイトでは、特定のジョブを実行するモジュールと呼ばれるコードのブロックを作成しました。そのため、データベースから最新のニュースを表示するだけのモジュールがあるかもしれません。次に、モジュールを表示できるページと表示するサイトを決定できます。私の質問は、異なるページに異なるモジュールが表示される可能性のある複数のドメインで gettext が機能するかどうかです。または、その特定のモジュールの言語会話を持つ配列を含む各モジュールの言語ファイルを作成する必要がありますか? 10個のモジュールがある場合 各モジュールには独自の言語ファイルがあり、各モジュールが表示するページは、そのモジュールの言語ファイル内の配列を参照して、表示するテキストを決定するだけですか? これが理にかなっていることを願っています.gettextと配列バージョンの使用についてよく読んでいますが、このタイプのサイト設定にどちらが適しているか判断できません.

4

5 に答える 5

3

私の意見では、PHP gettext が最適です。すべてのプロジェクトで、翻訳に wordpress スタイルを使用しています。http://codex.wordpress.org/Translating_WordPressを使用し、同じ関数の命名規則を使用します。

__('message') // Return the translation
_e('message') // echo's the translation
_n('singular_message', 'plural_message', count ) // return singular or plural

poedit http://www.poedit.net/を使用して、PHP ソースから翻訳可能な文字列を抽出し、それらを他の言語に翻訳します。次のように、必要な PHP gettext ディレクトリ構造にファイルを保存してコンパイルします。

en_US/LC_MESSAGES/default.mo
nl_NL/LC_MESSAGES/default.mo
de_DE/LC_MESSAGES/default.mo

.mo ファイルは PHP によってキャッシュされ、ウェブサーバーを再起動するまで .mo ファイルの変更は存在しないことに注意してください。開発中に髪を引っ張っていると、この非常に役立つソリューションに出会いました: http://blog.ghost3k.net/articles/php/11/gettext-caching-in-php

gettext 全体を解決するのにしばらく時間がかかりましたが、それだけの価値はありました。一度導入すると、時間を大幅に節約でき、クライアントがプロジェクトの翻訳を自分で行うことができました。

あなたのプロジェクトを翻訳するコミュニティを活性化したい場合は、Web ベースの翻訳ツールPootleをご覧ください。

于 2012-05-15T23:01:29.530 に答える
2

私の経験では、生の gettext は、コンテンツが時間の経過とともに変更され、通常は正式なリリース サイクルの外で変更される Web サイトのコンテキストにはあまり適していません。

Zend_Translate (および、日付や数値などをローカライズする場合はZend_Locale )を参照することをお勧めします。Zend_Translate は、基礎となるさまざまなメソッド (gettext や配列を含む) 用のアダプターを備えた高レベルのライブラリーです。

十分に文書化されており、スタンドアロン コンポーネントとして使用できます。

于 2012-05-15T21:19:33.437 に答える
2

A lot of CMS uses the array version. I have seen GetText as well for scalable applications. The array version is simpler especially when you want to manage the translation from a web interface.

It is a matter of preference of course.

于 2012-05-15T21:07:47.477 に答える
2

実際、私はgettextもっと簡単だと思います:

  1. echo / print _("your text");後で翻訳できます
  2. getext エディタで助けられやすい
  3. ブーストラップ po ファイル (iirc、/source/ ファイル) を生成するには、ファイルに対して一種の grep を作成するetagsを使用できます。したがって、後でトークンを翻訳する必要があります。

したがって、基本的に、プロジェクトの開始以来すべてが機能し、その後は開始が容易になり、アップスケールにより便利になります.

于 2012-05-15T21:23:50.193 に答える
0

gettext の使用をお勧めします。十分に確立されたツールのセットです。ソース コードからテキスト文字列を自動的に抽出するツール (xgettext) や、poedit ( http://www.poedit.net/ ) など、ローカリゼーション ファイルの翻訳に役立つ他のツールがあります。

PHP 5.3 を実行している場合、および/または intl 拡張機能がインストールされている場合は、別のオプションもあります: messageformatter:

http://php.net/manual/en/class.messageformatter.php

これは非常に強力ですが、私の意見では、ドキュメントが少し不足しており、目的にはやり過ぎかもしれません。これに関する詳細は、ICU プロジェクトのページで確認できます。

http://userguide.icu-project.org/formatparse/messages

于 2012-05-15T21:14:46.167 に答える