リソースバンドルに配置すると、アポストロフィが正しく翻訳されません。
key = {0}'s brush is {1} centimeters tall
(e.g. Sam's brush is 4 centimeters tall)
上記のキーをjava.util.ResourceBundle
ここからフォーマットすると、アポストロフィが失われます。
リソースバンドルに配置すると、アポストロフィが正しく翻訳されません。
key = {0}'s brush is {1} centimeters tall
(e.g. Sam's brush is 4 centimeters tall)
上記のキーをjava.util.ResourceBundle
ここからフォーマットすると、アポストロフィが失われます。
回答:
問題はリソースバンドルではなく、メッセージの印刷に使用するMessageFormaterであることを強く信じています。
文字列内では、 ''(2つの単一引用符)は単一引用符を表します。QuotedStringには、単一引用符以外の任意の文字を含めることができます。周囲の単一引用符は削除されます。UnquotedStringには、単一引用符と左中括弧を除く任意の文字を含めることができます。したがって、フォーマットされたメッセージ '{0}'になる文字列は、 '' '{' 0} ''または '' '{0}' ''として記述できます。
だからあなたは書く必要があります:
{0}''s brush is {1} centimeters tall
単一引用符を二重にする必要があります。つまり、{0}のブラシの高さは{1}センチです
@ラルフの答えに追加:あなたはこれがMessageFormat
次のようなテキストを持っているときのものであることを理解するでしょう
text1=It's too late
対
text2={0}''s too late
text1
おそらくMessageFormaterを介して実行されません(たとえば、引数が渡されたかどうかにかかわらず、springは異なるコードパスを持っています)text2
。したがって、で2つの一重引用符を使用した場合text1
、それらはそのように表示されます。したがって、引数がフォーマットされているかどうかを確認し、それに応じて1つまたは2つの一重引用符を使用する必要があります。
私がそうであったように(上記のどれも機能しなかった)完全に行き詰まっている場合は、アポストロフィ記号をそのUnicode:\ u0027に置き換えることができます。プロパティファイルでは常にUTFシンボルを使用できます。
プロパティエディタープラグイン(Eclipse用)の使用を検討する
string.xmlにAndroidの問題があるすべての人に対して、単一引用符の代わりに\ '\'を使用します。