最近、ローカリゼーションとリソース ファイル (.resx) の使用について多くのことを学んでいます。特定のコードについて、WinForm ごとに .resx (および関連するローカライズされたバージョン .de-DE.resx など) があり、コード用に 2 つ (オブジェクト文字列 [列名など] 用に 1 つ、ユーザー メッセージ用に 1 つ [メッセージボックスなどに表示されるもの])。オブジェクト文字列については何の問題もありませんが、メッセージについては次の問題があります...
メッセージ「"SomeString" を検索 (3 ファイルで 23 件ヒット)」を例にとります。このようなメッセージを作成するには、次のようなコードを使用します
String.Format("\tSearch \"{0}\" ({1} hits in {2} files)\n",
strSearchString,
nTotalHits,
nNumberOfFiles);
問題は"\tSearch \"{0}\" ({1} hits in {2} files)\n"
、リソース ファイルに文字列を含めると、実行時に次の出力が得られることです。
\tSearch \"SomeString\" (23 hits in 3 files)\n
明らかに、C# 自体のように文字列リテラルを扱っていません。リソース ファイルに新しい行を作成するにはShift+を使用するReturn必要があることはわかっていますが、タブなどはどうしますか? WordまたはNotepad ++にコピーしてタブを追加し、後でコピーして元に戻すと言わないでください。そうしないと、目を突かれます。
リソース ファイルに含まれる文字列リテラルを、C# によって正しく解釈される実際の文字列リテラルに変換する最良の方法は何ですか?
この種の変換はメッセージでのみ発生することに注意してください。そのため、実行時の変換も検討したいと考えています。
御時間ありがとうございます。