手机
当前位置:查字典教程网 >编程开发 >C#教程 >深入Resource实现多语言支持的应用详解
深入Resource实现多语言支持的应用详解
摘要:首先为假设有一个应用程序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

【深入Resource实现多语言支持的应用详解】相关文章:

深入理解C#实现快捷键(系统热键)响应的方法

基于不要返回null之EmptyFactory的应用详解

基于c# 接口的实例详解

C#加密在实际中的应用

深入多线程之:解析线程的交会(Thread Rendezvous)详解

C#中接口(interface)的理解

程序中两个Double类型相加出现误差的解决办法

深入C#中get与set的详解

基于WebRequest.RegisterPrefix的使用详解

.net C# 实现任意List的笛卡尔乘积算法代码

精品推荐
分类导航