15

次の行に沿ってユーザーにメッセージを表示しようとしています。

「ユーザー5を追加できませんでした」

しかし、.resxファイルに配置されている文字列に変数を追加するにはどうすればよいですか?「ローカリゼーションの変数」「変数を使ったグローバリゼーション」などを検索しようとしましたが、うまくいきませんでした。

ローカライズしていなかったら、次のように書きます。

Console.Write("User " + userNum + " could not be added");

これはリソースでどのように達成できますか?

4

5 に答える 5

15

これを直接行うことはできません。

できることは、トークンを配置することです。これは、変数の値で置き換えることができる特定の文字列です。string.Replace

これに適した候補は、組み込みの文字列フォーマットです。

Console.Write(string.Format("User {0} could not be added", userNum));

userNumの値をとすると5、結果は次のようになります。

User 5 could not be added

この文字列は、複合フォーマット指定子を使用してローカライズできます。

于 2012-06-08T20:41:41.160 に答える
11

私が国際化を行ったチームでは、通常、USER_COULD_NOT_BE_ADDED_FORMATのようなフォーマット文字列のリソースを作成し、そのリソースの値をフォーマットパターンとして渡すことで、String.Format(または環境に相当するもの)を呼び出しました。

その後、あなたはしますConsole.Write(String.Format(resourceManager.GetString("USER_COULD_NOT_BE_ADDED_FORMAT"), userNum));

ほとんどのローカライザーは、ローカライズするシステムで使用されるフォーマット文字列のトレーニングを受けているか、提供するローカリゼーションキットのガイダンスが提供されています。したがって、これは、たとえば、コードを直接変更するほどの障壁にはなりません。

通常、位置パラメータを説明するために、リソースIDにlocコメントを追加する必要があります。

于 2012-06-08T20:42:54.760 に答える
6

次のように複合フォーマットを使用します。

Console.Write("User {0} could not be added", userNum);

このようにして、ローカライズし"User {0} could not be added"ます。

于 2012-06-08T20:42:24.790 に答える
4

あなたはそれを簡単に行うことができます ここに画像の説明を入力してください

新しい方法を見てみましょう

String.Format(Resource_en.PhoneNumberForEmployeeAlreadyExist,letterForm.EmployeeName[i])

これは私に毎回ダイナミックなメッセージを与えます

ちなみに私はResXManagerを使用しています

于 2016-09-21T17:41:41.677 に答える
3

string.Formatを使用します

http://msdn.microsoft.com/en-us/library/system.string.format.aspx

Console.Write(string.Format("User {0} could not be added", userNum));
于 2012-06-08T20:43:44.433 に答える