MessageFormatterクラスを使用して、翻訳された文字列をフォーマットし、エンド ユーザーに表示しています。
問題は、HTML マークアップを最終結果に挿入する必要があることです。たとえば、文字列は だけかもしれませんPeter liked a photo
が、最終結果にマークアップを含める必要があります。
<a href="blah.com">Peter</a> liked <a href="blah2.com">a photo</a>
多くの調査を行った後、特にこれらの質問は
私はこのアプローチを使用することにしました:
{1}{0}{2} liked {3}a photo{4}
どこ:
{0} = Peter
{1} = <a href="blah.com">
{2} = </a>
{3} = <a href="blah2.com">
{4} = </a>
これは、少し面倒であることに加えて、かなりうまく機能しています。ただし、マークアップをリソース バンドル文字列に含めたくない主な理由は、HTML タグなしで文字列を返したい場合があるためです。
問題は、1 つのパラメーター (Peter) を に渡すだけでMessageFormatter
、パラメーターが不足していると不平を言うことです。
私ができる回避策の1つは、これを渡すことです({1}
to{5}
は空の文字列になります):
{0} = Peter
{1} =
{2} =
{3} =
{4} =
ただし、これは非常に面倒で、あまり良い方法ではありません。
とにかく、メッセージ形式の文字列でパラメーターをオプションとしてマークすることはできますか (基本的に、パラメーターの値が渡されない場合はパラメーターを無視するだけです)。