如何将字符串转换为Windows窗体标签中的当前文化?

时间:2012-08-20 14:08:25

标签: c# .net winforms

如何将字符串转换为Windows窗体标签中的当前文化?

    Format of the text to be displayed:
    <string in current culture> <string in english>

    ex: <welcome in dutch\french\chineese> <User ID in english>
---------------    
    string userid = "A123#"
    string str = String.Format(System.Threading.Thread.CurrentThread.CurrentUICulture, "{0} ", "Welcome");
    this.myLabel.Text =  str + userid ;
---------------

我们怎么做?

2 个答案:

答案 0 :(得分:4)

所以内置你没有得到翻译,但是一种方法是依靠ResourceManager通过查找你想要为每种文化显示的存储字符串来为你处理这个问题。对于要显示的每种语言,您可以创建一个资源文件,其中包含文化值作为名称的一部分 - 如下所示:

myLangResource.es-CO.resx
myLangResource.fr-CA.resx
myLangResource.en-US.resx

只需为您关注的每种语言在项目中添加一个资源文件类型的新项目,然后存储您关心翻译的字符串。那些将具有名称和值,您的代码将查找它们以检索适当的字符串。像

这样的东西
Name       Value
-----------------
Welcome    Howdy

Name       Value
-----------------
Welcome    Bienvenido

然后,基本上,您创建了一个CultureInfo成员:

private CultureInfo curCulture;

然后将其设置为当前文化:

curCulture = CultureInfo.CurrentCulture;

然后,您将通过ResourceManager对象加载适当的资源以获取相应的字符串。像这样:

var resourceManager = new ResourceManager("MyNamespace.myLangResource", typeof(DemoForm).Assembly);
string greeting = resourceManager.GetString("Welcome", curCulture);
// show the greeting however you want such as
myLabel.Text = greeting;

假设您想要出于某种原因改变当前的文化价值。资源查找不需要名称的“es-CO”或“fr-CA”或“en-US”部分。它会自动尝试通过查找具有匹配名称的资源文件来为您执行此操作。

答案 1 :(得分:1)

自动魔术翻译不存在。

你可以:

  • 查询翻译服务
  • 带上您自己的字典/翻译引擎及
  • 正确本地化您的应用程序(提供多个版本的资源并相应地使用它们)。