0

記事を参照するコメントの後に質問を変更しました。

私はac#Winフォームアプリを持っています。これには、ユーザーとの対話用のいくつかのフォームとダイアログボックス/メッセージボックスが含まれています。それを一連の言語にローカライズしたいと思います。

  • ほとんどのフォームはフォームデザイナを介して作成され、テキスト/文字列はプロパティを介して設定されます
  • メッセージボックスおよびその他のランタイムメッセージの文字列は、コードから取得されます。

ここで記事を読みました http://msdn.microsoft.com/en-us/library/y99d1cd3(v=vs.71).aspx

これは2つのアプローチを指します。

  • 1つは、Visual Studioにリソースファイルを作成させることです。これは、フォームデザイナーの生成されたコードに対して行われます。
  • 2つ目は、リソースファイルを手動で追加し、GetString( "strMessage")メソッドを使用してそれらのコードにアクセスすることです。

私が頭に浮かぶ問題は、VSが独自にリソースファイルを作成する最初のアプローチを使用する必要がある、desingnerで生成されたコードの場合です。ランタイムメッセージとメッセージボックスをローカライズするには、2番目のアプローチを使用する必要があります。つまり、リソースファイルを手動で追加する必要があります。

最終的に、言語ごとに2セットのリソースファイルになります。1つの方法だけを使用して、両方の形式の文字列を1か所にローカライズすることはできませんか?

ありがとう、

4

2 に答える 2

0

残念ながら、あなたは(簡単に)あなたのケーキを持ってそれを食べることもできません。それはMSFTが物事を設計した方法です。VSフォームデザイナによって生成されたコードビハインド「.resx」ファイルにメッセージ文字列を追加することはできません。これらの「.resx」ファイルは、変更を加えるたびにVSによって再生成されるためです(メッセージ文字列を上書きします)。 。これらのファイルに独自のリソースを追加しようとすると(VSの「.resx」エディターを使用して)、VSはこれについて警告します。また、その逆も当てはまりません。つまり、手動で作成した「.resx」ファイルにコードビハインド「.resx」リソースを追加することはできません(非常に困難なことはありません)。しかし、状況はそれほど悪くはありません。それはこのように何年もの間行われていて、それは機能します。私は個人的にすべてのリソースの中央リポジトリを好みますが、すべてのシステムには長所と短所があります。ところで、メッセージ文字列には「強く型付けされた」リソースを使用し、「。resx」ファイル(手動で追加したもの)には他のリソースを使用する必要があります。「GetString()」IOW(またはその他の関数)は使用しないでください。強く型付けされたリソースははるかに簡単です。Googleで詳細を確認し、それらの使用方法を学習した後(難しいことではありません)、DmytroKryvkoによるStronglyTyped Resource Generator(さらに改善するVS用の非常に便利なツール)も検索してください。強く型付けされたリソースははるかに簡単です。Googleで詳細を確認し、それらの使用方法を学習した後(難しいことではありません)、DmytroKryvkoによるStronglyTyped Resource Generator(さらに改善するVS用の非常に便利なツール)も検索してください。強く型付けされたリソースははるかに簡単です。Googleで詳細を確認し、それらの使用方法を学習した後(難しいことではありません)、DmytroKryvkoによるStronglyTyped Resource Generator(さらに改善するVS用の非常に便利なツール)も検索してください。

于 2012-06-27T15:08:59.813 に答える
0

両方の手法を組み合わせて使用​​することを妨げるものは何もありません。手順 1 を実行してすべての言語リソース ファイルを作成し、それらのファイルに独自の文字列を追加します。

于 2012-06-27T05:06:52.080 に答える