手机
当前位置:查字典教程网 >编程开发 >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# Func委托的详解

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

Question:基于C#连续赋值的面试题(解答)

深入多线程之:用Wait与Pulse模拟一些同步构造的应用详解

BarCode条形码基于C# GDI+ 的实现方法详解

基于params,ref,out的参数问题详解

C#方法的总结详解

深入理解C#索引器(一种支持参数的属性)与属性的对比

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

精品推荐
分类导航