深入Resource实现多语言支持的应用详解
深入Resource实现多语言支持的应用详解
发布时间:2016-12-28 来源:查字典编辑
摘要:首先为假设有一个应用程序CAStudy,接着右键添加一个资源文件Resource1.resx。Resource1.resx里面如下:Main...

首先为假设有一个应用程序CAStudy,接着右键添加一个资源文件Resource1.resx。

Resource1.resx里面如下:

深入Resource实现多语言支持的应用详解1

Main函数如下:

static void Main()

{

ResourceManager resourceManager = new ResourceManager(

"CAStudy.Resource1",

Assembly.GetExecutingAssembly());

Console.WriteLine("String1 : " + resourceManager.GetString("String1"));

Console.WriteLine("String1 : " + Resource1.String1);

Console.ReadLine();

}

使用的ResourceManager构造函数如下:

[SecuritySafeCritical]

public ResourceManager(string baseName, Assembly assembly);

在应用程序编译的时候Resource1.resx就会被编译成Resource1的一个类。所以如果你不知道baseName是什么,也可以这样:

ResourceManager resourceManager = new ResourceManager(

Resource1.ResourceManager.BaseName,

Assembly.GetExecutingAssembly());

或者你查看IL代码,可以发现如下:

深入Resource实现多语言支持的应用详解2

运行结果如下:

深入Resource实现多语言支持的应用详解3

假设我们要支持 英语-美国(en-US) 的人来访问的话:

深入Resource实现多语言支持的应用详解4

那么我们可以复制Resource1.resx ,从而生成Resource1.en-US.resx。

注意除了中间多出来了en-US之外,其他都相同,

当然,如果你需要支持中文-台湾,那么可以生成Resource1.zh-TW.resx.

Resource1.en-US.resx内容如下:

深入Resource实现多语言支持的应用详解5

可以看到,现在的是Hello。

使用的时候只需要修改

Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");

为什么修改 CurrentUICulture 就可以了呢?

// 摘要: // 获取或设置资源管理器使用的当前区域性以便在运行时查找区域性特定的资源。 public CultureInfo CurrentUICulture { get; set; }

完整的Main函数如下:

static void Main() { ResourceManager resourceManager = new ResourceManager( Resource1.ResourceManager.BaseName, Assembly.GetExecutingAssembly()); Console.WriteLine("String1 :" + resourceManager.GetString("String1")); Console.WriteLine("String1 :" + Resource1.String1); Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US"); Console.WriteLine("String1 :" + resourceManager.GetString("String1")); Console.WriteLine("String1 :" + Resource1.String1); Console.ReadLine(); }

运行结果如下:

深入Resource实现多语言支持的应用详解6

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新C#教程学习
热门C#教程学习
编程开发子分类