Java 5で実行されるWebアプリケーションのユーザーインターフェイステキストをローカライズしており、プロパティファイル( java.util.Propertiesで使用される種類)で定義されたメッセージを出力する方法についてジレンマがあります。
一部のメッセージには、 java.text.MessageFormatを使用して入力されるプレースホルダーが含まれています。例えば:
search.summary = Your search for {0} found {1} items.
MessageFormatは、英語のテキストでは一般的ですが、一重引用符は特殊文字であるため、煩わしいものです。文字通りの一重引用符の場合は、2つ入力する必要があります。
warning.item = This item''s {0} is not valid.
ただし、アプリケーションの1000程度のメッセージの4分の3には、プレースホルダーが含まれていません。これは、MessageFormatを避けて直接出力し、一重引用符をそのままにしておくことができることを意味します。
help.url = The web page's URL
質問:一貫性のある構文のために、すべてのメッセージにMessageFormatを使用する必要がありますか、それとも可能な限りMessageFormatを避けて、ほとんどのメッセージをエスケープする必要がないようにする必要がありますか?
どちらの方法でも明らかに長所と短所があります。
MessageFormatのAPIドキュメントは問題を認識し、解決策ではないことを示唆していることに注意してください。
残念ながら、メッセージ形式のパターン内で引用符を使用するための規則は、やや紛らわしいことが示されています。特に、一重引用符を2倍にする必要があるかどうかは、ローカライザーにとって必ずしも明らかではありません。必ずローカライザーにルールについて通知し、(たとえば、リソースバンドルのソースファイルのコメントを使用して)どの文字列がMessageFormatによって処理されるかを伝えてください。