Winform下多语言的一种简单实现
2018-02-19 23:13
701 查看
思路:
基于c#的Winform程序,涉及到多语言的资源集中到字符串和图片上,资源保存在资源文件中,针对每一种语言设置一个资源文件,界面上的文字和图片等资源从资源文件中通过ResourceManager来读取并设置到界面上。资源文件的命名与语言名称对应,通过设置程序的语言环境来实现多语言的切换。资源文件的设置和获取
新建winform程序demo,则在工程目录下有一个子目录Properties,其中有两个文件Resources.Designer.cs和Resources.resx。在其中添加一个字符串str1,值设定为"你好"。通过ResourceManager获取该字符串的代码为:
System.Resources.ResourceManager rm = new System.Resources.ResourceManager( System.Windows.Forms.Application.ProductName + ".Properties.Resources" , System.Reflection.Assembly.GetEntryAssembly());
rm.GetString("str1")
返回"你好"。
创建ResourceManager示例时,第一个参数指定了查找的资源名,第二个指定了查找资源的程序集。
此时在添加一个资源文件Resources.en-US,将会生成两个文件Resources.en-US.Designer.cs和Resources.en-US.resx,在其中添加一个字符串str1,值设定为”hello”。上述代码无需修改,在main函数中加一条语句:
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-US");
则rm.GetString(“str1”);返回的是”hello”。
这样就实现了对多语言的支持。
Tips1
实际上在编译Resources.resx时,会被编译为一个Properties.Resources类,可以在代码中直接访问。Tips2
若程序分为demo.dll和demo.exe,资源文件在.exe程序中,在.dll程序中需要获取资源,该怎么做?实际上这就是上述在创建ResourceManager实例时第二个参数的作用了,设置为System.Reflection.Assembly.GetEntryAssembly(),表示从整个程序的运行控件程序集中查找资源,若设置为GetExecutingAssembly(),则只会在.dll程序集中查找资源。相关文章推荐
- Winform程序多语言国际化实现的简单方法
- Java基于解释器模式实现定义一种简单的语言功能示例
- C#WinForm 国际化的简单实现,多语言实现
- [导入]Winform程序多语言国际化实现的简单方法
- Winform程序多语言国际化实现的简单方法
- 用最简单有效的办法实现Winform的全球化多国语言版本软件
- WinForm简单多国语言实现
- Linux 下C语言简单实现线程池
- Android动态图片选择的一种简单实现方式
- c语言简单链表实现
- 一种夜间模式简单实现方案
- C语言简单实现atoi()函数
- JAVA语言 实现简单的学生成绩管理系统(总分+平均分+排名)
- vector的一种简单实现
- 一种简单的差分进化算法(DE)的R语言实现
- 实现WinForm全球化的简单方法
- Android无网络状态下使用GPS定位到省市县的一种简单实现方式
- C#WinForm编程中多语言的实现
- Silverlight仿Flash换肤一种简单实现方法
- 无边框Winform 简单实现拖动