深入Resource实现多语言支持的应用详解
首先为假设有一个应用程序CAStudy,接着右键添加一个资源文件Resource1.resx。
Resource1.resx里面如下:
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代码,可以发现如下:
运行结果如下:
假设我们要支持 英语-美国(en-US) 的人来访问的话:
那么我们可以复制Resource1.resx ,从而生成Resource1.en-US.resx。
注意除了中间多出来了en-US之外,其他都相同,
当然,如果你需要支持中文-台湾,那么可以生成Resource1.zh-TW.resx.
Resource1.en-US.resx内容如下:
可以看到,现在的是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实现多语言的支持
- 完全详解--使用Resource实现多语言的支持
- 关于Android应用多语言支持实现
- Android应用多语言支持实现(方法二)
- 深入应用c++11读书笔记--使用c++11让程序更简洁、更现代-2.自己实现一个支持范围for循环的类~
- 新应用的知识整理-Android studio中应用多语言支持及应用内语言切换的实现
- go语言中sort包的实现方法与应用详解
- 利用线性布局和相对布局实现一个简单的页面并且使应用支持国际化语言
- 自定义ResourceProviderFactory、IResourceProvider实现ASP.NET、ASP.NET MVC多语言支持
- Android应用的多语言支持的实现方法
- 关于Android应用多语言支持实现
- 新应用的知识整理-Android studio中应用多语言支持及应用内语言切换的实现
- Android应用多语言支持实现(方法一)
- [原创]Enterprise Library深入解析与灵活应用(1):通过Unity Extension实现和Policy Injection Application Block的集成
- 深入剖析ExtJS 2.2实现及应用连载(7):页面布局
- 深入剖析ExtJS 2.2实现及应用连载(4):如何学习ExtJS
- 深入剖析ExtJS 2.2实现及应用连载(6):ExtJS实例概述
- 深入剖析ExtJS 2.2实现及应用连载(5):ExtJS文件结构
- [转]Enterprise Library深入解析与灵活应用(2): 通过SqlDependency实现Cache和Database的同步
- 使用Log4j为项目配置日志输出应用详解以及示例演示的实现分析