如何制作多语言C#控制台应用程序?

问题描述:

我想在Microsoft Visual C#2010 Express中创建控制台应用程序,它将支持几种语言:它将以选定语言显示消息。什么是最简单和便捷的方式来使其成为国际准备好的?因为这MS文章中所示如何制作多语言C#控制台应用程序?

+0

gettext的4点生命。 – 2010-05-28 07:55:48

最好的办法是使用项目菜单使用程序集资源文件,然后将资源添加到您的文件。

要在程序中使用的语言特定的资源:

System.Resources.ResourceManager mgr = new 
    System.Resources.ResourceManager("MyConsoleApp.MyResource", 
    System.Reflection.Assembly.GetExecutingAssembly()) ; 

Console.WriteLine (mgr.GetString ("resourceName")); 

Console.ReadLine(); 
+0

现在它加载我的系统语言。我怎样才能改变它来检查其他语言? – 2010-05-28 11:27:33

+0

您可以使用 Thread.CurrentThread.CurrentUICulture = new CultureInfo(“en-US”) 其中en-US是RFC3066代码来设置当前线程的文化。 此链接有一个完整的教程,以帮助 http://www.codeguru.com/vb/gen/vb_misc/multi-languagesupport/article.php/c5601/ – Laramie 2010-05-28 19:56:47

+0

此外:ResourceManager的方法GetString()被重载。该方法将CultureInfo对象作为第二个参数。 – 2012-06-15 10:45:16

+0

我在哪里可以下载这个样本? – 2010-05-28 11:20:43

+0

我不确定VS2010,对于一些较早的版本,样本曾经被包含在VS或MSDN的安装媒体中,但我不确定是否会出现这种情况。 我可以找到唯一的在线链接是这一个http://www.microsoft.com/downloads/details.aspx?FamilyID=41c68033-775c-4d92-a9c4-2db8e8238f37&DisplayLang=en在那里你可以下载旧版本的示例至少 – 2010-05-28 11:39:36

原则上,你要使用资源文件是。 此链接应该把你在正确的道路上:

http://www.jelovic.com/articles/resources_in_visual_studio.htm

一旦你得到了RESX文件为不同的语言,在ResourceManager类有一个GetString方法,需要一个CultureInfo对象,所以它会返回当前文化的正确翻译,或翻译后的resx文件中没有该名称资源的情况下的回退值。