完全详解--使用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(); }
运行结果如下:
作者:LoveJenny
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库