1

私の CakePHP 2.3 アプリケーションでは、pot ファイルを作成し、Poedit で po ファイルを作成しました。しかし、私はほぼ 100 の文字列と 12 の言語を持っています。したがって、すべての変更/追加で、pot ファイルを再作成したり、Poedit で po ファイルを追加したりしたくありません。

したがって、CakePHP に適した別のソリューションが必要です。
- csv ファイルだけを使用して、po ファイルなしで i18n を使用することは可能ですか? ( Zend Translateにも同様の解決策があるようです)
- すべての翻訳に 1 つの po ファイルを使用することは可能ですか、それともこの量の文字列に対してパフォーマンスが非常に悪くなりますか?
- 翻訳をデータベースに書き込むのは好きではありません。小さなプロジェクトの場合、 gettext のより良い代替手段は何ですか?

関連: 1 つまたは複数の po ファイルでの CakePHP の翻訳とパフォーマンス

4

1 に答える 1

3

デフォルトでは、CakePHP はローカリゼーション用に .po または .mo ファイルのみをサポートしているため、代わりに CSV を使用する場合は、独自のメカニズムを実装する必要があります。

各ロケールを個別のファイルに入れることが (IMO) ベスト プラクティスです。言語ごとに別々の翻訳者/翻訳局を持つことができます。すべての言語を 1 つのファイルに収めることに利点はないと思います。すべての言語を 1 つのファイルにまとめることは、おそらく事態をさらに難しくするだけです。各言語は、文字列ごとに固有の「識別子」を持つ必要があるからです。また、言語ごとに個別のファイルを用意することで、たとえば「msgids」の欠落をチェックするなど、異なる言語を比較しやすくなります。

ただし、変更ごとに .pot ファイルを再生成する必要はありません。行った変更を追跡している場合は、いつでも新しい 'msgids' を既存の .po ファイルに追加できます。

@Admad で提案されているように、プロジェクトに .po.mo (バイナリ) ファイルの両方を含めないでください。両方が存在する場合、CakePHP は .mo ファイルを優先します。

個人的には、.po ファイルを使用することを好みます。これは、.po ファイルを作成するためのステップが 1 つ少なくて済むため (.po からバイナリ形式への変換)、バイナリであるため、CakePHP による解析が (おそらく) 高速だからですが、これが私の好みです。あなたの状況で異なります。

于 2013-04-01T17:39:57.813 に答える