Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在本地化字符串中包含变量?_C#_String_Localization_Internationalization_Globalization - Fatal编程技术网

C# 如何在本地化字符串中包含变量?

C# 如何在本地化字符串中包含变量?,c#,string,localization,internationalization,globalization,C#,String,Localization,Internationalization,Globalization,我试图向用户显示一条消息,内容如下: “无法添加用户5” 但是,如何向放置在.resx文件中的字符串添加变量?我一直在尝试搜索“本地化中的变量”、“变量全球化”等内容,但结果是一无所获 如果我没有本地化,我会写: Console.Write("User " + userNum + " could not be added"); 如何利用资源实现这一点?您不能直接做到这一点 您可以做的是放置一个标记-一个可以用string替换的特定字符串。用变量的值替换 一个很好的备选方案是内置字符串格式: C

我试图向用户显示一条消息,内容如下:

“无法添加用户5”

但是,如何向放置在.resx文件中的字符串添加变量?我一直在尝试搜索“本地化中的变量”、“变量全球化”等内容,但结果是一无所获

如果我没有本地化,我会写:

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

如何利用资源实现这一点?

您不能直接做到这一点

您可以做的是放置一个标记-一个可以用
string替换的特定字符串。用变量的值替换

一个很好的备选方案是内置字符串格式:

Console.Write(string.Format("User {0} could not be added", userNum));
假设
userNum
的值为
5
,结果为:

User 5 could not be added
您可以使用复合格式说明符来本地化此字符串。

这样使用:


通过这种方式,您可以本地化
“无法添加用户{0}”

在我进行国际化的团队中,我们通常还为格式字符串创建了一个资源,类似于User\u cannot\u added\u format,并称为string.format(或您的环境的等效物)通过将该资源的值作为格式模式传递

然后执行
Console.Write(String.Format(resourceManager.GetString(“USER\u cannot\u ADDED\u Format”)、userNum)

大多数本地化人员要么接受了他们正在本地化的系统所使用的格式字符串的培训,要么在您提供给他们的本地化工具包中提供了指导。例如,这并不像让他们直接修改代码那样困难


通常需要向资源ID添加loc注释来解释位置参数。

我将使用string.Format

你可以这么做很简单

新的让我们看看如何

String.Format(Resource_en.PhoneNumberForEmployeeAlreadyExist,letterForm.EmployeeName[i])
每次都会给我动态信息


顺便说一下,我正在使用

无论如何,您不应该使用+构造/打印字符串。使用String.Format要容易得多…你能不能再深入一点,看看我如何将这样一个“loc注释添加到资源ID中”?或者给我一个链接来阅读更多?谢谢!:)另外,既然你似乎对这些东西很有经验,那么我在这里介绍你的时候,是最好为给定项目中的所有字符串使用一个resx文件,还是最好将它们分成多个resx文件,比如说,每个表单一个?(我的resx文件本身存储在一个单独的全球化项目中)假设您使用的是.resx格式,本地化注释只是resx编辑器UI中的“注释”,或者
元素后面的xml中的
注释。我建议使用多个resx文件,但更多是为了源代码管理的健全性。通常,您会创建一个打包的.zip文件(或类似文件)发送到本地化程序,并且不应该为多个文件的灵活性增加任何成本。
Console.Write(string.Format("User {0} could not be added", userNum));
String.Format(Resource_en.PhoneNumberForEmployeeAlreadyExist,letterForm.EmployeeName[i])