0

分類したいいくつかの文字列メッセージを含むWebResources.resxファイルを作成しています。

Signup_Status_InactiveSignup_Status_Reservedなど...

これはバックグラウンドでの単なるXMLファイルなので、親子関係を作成して、関連する文字列にプレフィックスを付けたり、より適切なドット表記に従う必要がないようにすることはできますか?

これを回避するために、適切なドット表記、つまりStatusMessages.Signup.Inactiveを介してアクセスされるいくつかのプロパティを使用してクラスを作成できますが、これは余分な作業です。

.resxファイルの文字列コンポーネントには1つのレベルしかありませんか?

さらに、セッション変数をresx値の一部としてどのように出力しますか?つまり、「Your Card#」+ HttpContext.Current.Session ["ReservedCardNum"]+"はあなたのために予約されています。"

ありがとう。

4

1 に答える 1

2

.resxファイルのすべてのキーは単一レベルですが、それを読み取るためのコードとそれを維持するために必要なツールを記述すれば、独自のXML形式の使用を妨げるものは何もありません。


セッション変数を出力するには、String.Format()を使用します

通常、あなたは書くでしょう

String.Format(“"Your Card #{0}  has been reserved for you.", 
              HttpContext.Current.Session["ReservedCardNum"])

だから代わりにただ使う

String.Format(stringLookedFromResouceFile, 
              HttpContext.Current.Session["ReservedCardNum"])

そして、翻訳された文字列に「{0}」を入れます。そうすれば、翻訳者は必要に応じて単語の順序を変更できます。


プレースホルダーを翻訳者に伝える方法を考えてください。翻訳者がコメントフィールドを表示するリソースエディターを使用している場合は、「{0}=ユーザー名」のようなコメントを追加できます</p>

また、翻訳者がプレースホルダーを台無しにしないことを確認する必要があります。翻訳者が「他の種類の角かっこがよく見える」などの理由で「{0}」を「(0)」に変更するのを見ました。または、文字列形式が無効になるように、ブラケットの1つを削除します。

フォーマット文字列を検証する方法を参照してください

于 2009-10-14T09:42:13.433 に答える