2012-06-08 39 views
11

我想显示一条消息给沿线的用户:如何在本地化字符串中包含变量?

“用户5不能添加”

但我怎么能添加变量到被放置在一个字符串。 resx文件?我试图寻找诸如“本地化变量”,“变量全球化”之类的东西,但是干了起来。

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

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

怎么可以这样用资源来完成?

+0

你不应该构建/打印字符串+反正。 String.Format非常容易处理... –

回答

8

在团队中我所做的国际化,我们一般也通过传递资源的值作为格式模式创建资源格式字符串,像USER_COULD_NOT_BE_ADDED_FORMAT,并呼吁的String.Format(或您的环境当量)。

然后你会做Console.Write(String.Format(resourceManager.GetString("USER_COULD_NOT_BE_ADDED_FORMAT"), userNum));

大多数本地化要么必须在使用的系统他们本地化,或者他们提供的本地化工具包,你为他们提供指导格式字符串训练。例如,这不像直接修改代码那么严格。

您通常需要添加一个loc注释到资源ID来解释位置参数。

+1

你可以进一步了解如何将这种“loc注释添加到资源ID”?或者提供给我一个阅读更多的链接?谢谢! :) –

+0

此外,当我有你在这里,因为你似乎有这些东西的经验,是它最好有在给定项目的所有字符串一个RESX文件,或者倒不如将它们分成多个RESX文件比如说,每个表单都有一个? (我的RESX文件本身存储在一个单独的项目全球化) –

+1

假设你正在使用的.resx格式,定位注释只是在RESX编辑器UI“注释”,或''在XML之后的'元素。 – JasonTrue

11

你不能直接这样做。

什么你可以做的是把令牌 - 特定字符串,可以是更换string.Replace与变量的值。

这样做的一个很好的候选人将被内置在字符串格式化:

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

假设userNum已经值5,其结果必然是:

User 5 could not be added 

您可以本地化此字符串与复合格式说明符。

5

使用Composite Formatting像这样:

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

这样,您将定位"User {0} could not be added"

0

你能做到这一点的简单 enter image description here

新的,让我们看看这将如何

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

每次

给我的动态消息,由我用它的方式摹ResXManager

相关问题