警告: 私は Java ハッカーではないので、YMMV ですが...
「プロパティ」のリストを使用する際の問題は、多くの規律が必要なことです。ユーザーに出力する必要がある文字列を追加するたびに、プロパティ ファイルを開く必要があります。その文字列 (またはそれにほぼ相当するもの) が既にファイルにあるかどうかを確認してから、新しいプロパティを追加します。そうでない場合。これに加えて、プロパティ ファイルを外部の翻訳チームに渡して処理させる場合は、プロパティ ファイルがかなり人間が読み取り可能/編集可能であることを期待する必要があります。
データベース ベースのアプローチは、すべてのデータベース ベースのコンテンツに役立ちます。理想的には、コンテンツの断片とその翻訳を簡単に結び付けられるようにしたいと考えています。データベース外のもの (エラーメッセージなど)を出力したいすべての場所で、実際に落ちるだけです。
私たちが見つけたかなり古い技術の 1 つは、gettext を使用することです。Gettext またはいくつかのバリアントは、ほとんどの言語とプラットフォームで利用できるようです。基本的な前提は、次のような特別な関数呼び出しで出力をラップすることです。
echo _("Please do not press this button again");
次に、ソース コードに対して gettext ツールを実行すると、そのようにラップされたすべてのインスタンスが「po」ファイルに抽出されます。これには、次のようなエントリが含まれます。
#: myfolder/my.source:239
msgid "Please do not press this button again"
msgstr ""
また、適切な場所に翻訳を追加できます。
#: myfolder/my.source:239
msgid "Please do not press this button again"
msgstr "s’il vous plaît ne pas appuyer sur le bouton ci-dessous à nouveau"
その後 gettext ツールを実行すると、単純に po ファイルが更新されます。ソースから po ファイルを抽出する必要さえありません。サイトを翻訳する必要があることがわかっている場合は、すべての出力で上記の形式 (下線付きの関数) を使用できます。po ファイルを指定しないと、引用符で囲んだものが返されます。gettext はロケールで動作するように設計されているため、ユーザーのロケールを使用して適切な po ファイルを取得します。これにより、新しい翻訳を簡単に追加できます。
Gettext の長所
- コーディング中に邪魔になりません
- 翻訳の追加が非常に簡単
- POファイルは、スピードのためにコンパイルすることができます
- ほとんどの言語/プラットフォームで利用可能なライブラリがあります
- 翻訳を処理するための優れたクロスプラットフォーム ツールがあります。翻訳チームがpoEditなどのツールを使用して翻訳プロジェクトを管理しやすくすることは実際に可能です。
Gettext 短所
- サイトの「家具」のニーズを解決しますが、通常は、データベース主導のコンテンツにはデータベース ベースのアプローチが必要です。
gettext の詳細については、このウィキペディアのページを参照してください