3

だから私はいじり始めましgettextたが、私はまだ特定のことについて戸惑っています.誰かが私を助けてギャップを埋めることができれば素晴らしいと思います.

  1. 通常、ほとんどの実装setlocaleは、言語パラメーターに基づいて呼び出すだけです。putenvおそらくWindowsセットアップのエッジケースのために、使用する必要があるケースはありますか?

  2. 私のphpフレームワークのデフォルトの言語は英語、UTF-8です。ISO-8859-1/Latin1であり、明らかにUTF-8ほどサポートされていないので、に設定LC_ALLしますか?en_US.utf-8en_US

  3. を呼び出した後に知っておくべき注意点はありますsetlocale(LC_ALL, 'en_US.utf-8')か? これらすべてが変更されるため: LC_COLLATE, LC_CTYPE, LC_MONETARY, LC_NUMERIC, LC_TIME, and LC_MESSAGES- たとえば、時間などを生成するスクリプトを更新する必要がありますか?

  4. たとえば、新しく構成されたサーバーにes_ES.utf-8ロケールが構成されていなかったとします。ロケールを生成する方法は知っていますが、それが利用できない場合は、アレイにバックアップを提供する必要がありますか? 誰かが次のような実用的な例を提供できれば素晴らしいでしょう:

    setlocale( LC_ALL, array('es_ES.UTF-8', 'es_ES', 'es') )

    このような例を提供している Web サイトはありますか、それとも通常、人々は優先順位を自分で考えますか?

  5. localeori18nフォルダーの通常の構造は次のようなものだとどこかで読みました。

    構造は本当に重要ですか?起こっているのは、bindtextdomain('messages', 'locale')そのディレクトリを再帰的に検索するときだけのようですmessages.mo。気付いていないかもしれませんが、ディレクトリが考慮されている可能性があります。

構造はどの程度厳密に設定する必要がありますか?

locale
  en_US
      LC_MESSAGES
         messages.po
  es_ES
      LC_MESSAGES
         messages.po


   6. システムが実際にロケールをサポートしているかどうかをテストする必要がありますか? たとえば、サーバーにロケールがなく、setlocaleそれを設定しようとした場合、エラーは発生せず、黙って通り過ぎてしまうからです。

4

1 に答える 1

3

これはあなたの質問に対する適格な回答ではありません。また、gettext の使用が悪いと言っているわけではありません。これについて本当に深い意見を述べるほど十分な作業をしたことはありません。異なるロケールの異なるプラットフォームで。ここに代替案を探す質問を投稿しました。実際にはそれほど多くはありませんが、Zend_translate パッケージは一見の価値があるようです。私はまだ自分でそれに慣れていません。

gettext を使用する場合は、Gettext に関する PHP Manual User Contributed Notesを確認してください。

于 2009-12-08T22:32:25.447 に答える