WinForm 国际化开发一例
1、新建一个WinForm程序(在中文版的Windows下),如下,添加1个Button和1个Label
设置Form1的localizable属性为True(Form1的properties里的Design->Localizable=True);
2、Add一个Folder,命名为Resources,表示将来所有的资源文件都放在其下。再Resources中Add一个New Item,选择General下的Resources File,命名为Resource1.resx。添加字符串如下
这里在字符串前用[CN]表示中文;
3、添加其他语言版本的资源文件,依次命名为Resource1.en-US.resx,Resource1.ja-JP.resx。只要满足这种命名方式,WinForm会自动根据不同国家版本的操作系统选择对应的资源文件进行加载。想想这种自动的方式,减少了多少手工根据locale编写的if代码
字符串前的[JP]表示日文,[EN]表示英文;
4、打开Form1.Designer.cs文件,展开其中的WindowsForm Designer generated code,如下
如果Form1的localizable属性为false,将会生成下图这样的代码
可见非国际化的Form,生成的代码中就含有hardcode。下面我们在做了国际化的代码中添加来自于资源的字符串。
5、将资源文件中的字符串添加到对应的Button1, Label1,Form1
this.button1.Text= Resources.Resource1.BtnText;
this.label1.Text= Resources.Resource1.LabelText;
this.Text =Resources.Resource1.FormText;
Resources是我们上面添加的Folder,Resource1是当前系统下开发版的资源文件。只要这样就可以,当我们把程序拿到其它语言版操作系统下运行时,会自动加载对应的资源文件。比如将这个程序拿到日文操作系统下运行,不需要修改代码,自动加载Resources.Resource1.ja-JP.BtnText到button1显示;
6、在中文、日文、英文Win8系统下运行同一个程序时的效果
至此,国际化开发完毕。
Attention
不知道WinForm程序根据什么来选择对应语言的资源文件,在同一个OS下改了system locale都不能切换资源,非得运行在特定语言的OS下才行。
参考资料
[1] Article about Winform I18n .http://www.codeproject.com/Articles/43360/Globalization-Internationalization-I18N-and-Locali#_rating
[2] MS resourcemanager I18nexample . http://msdn.microsoft.com/zh-cn/library/system.resources.resourcemanager(v=vs.80).aspx
[3] cultureinfo class. http://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.aspx
WinForm 国际化开发一例的更多相关文章
- 基于 SailingEase WinForm Framework 开发客户端程序(3:实现菜单/工具栏按钮的解耦及状态控制)
本系列文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以 SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客 ...
- 基于 SailingEase WinForm Framework 开发优秀的客户端应用程序(1:概述)
本系统文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以 SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客 ...
- WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用
WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用 转自:http://www.cnblogs.com/wuhuacong/arch ...
- Winform常用开发模式第一篇
Winform常用开发模式第一篇 上一篇博客最后我提到“异步编程模型”(APM),之后本来打算整理一下这方面的材料然后总结一下写篇文章与诸位分享,后来在整理的过程中不断的延伸不断地扩展,发现完全偏离了 ...
- day12 EL 表达式和国际化开发
day12 EL 表达式和国际化开发 1. EL(Expression Language) 表达式简介 1.1 执行运算 1.2 获取web开发常用对象(el 中定义了11个隐式对象) 1.3 使用 ...
- BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面
BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面 bolt 基本介绍 Bolt界面引擎是迅雷公司从2009年开始开发的第四代界面库.迅雷7是首个采用该引擎成功开 ...
- 基于 SailingEase WinForm Framework 开发优秀的客户端应用程序(目录)
本系统文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以 SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客 ...
- winform快速开发平台->让有限的资源创造无限的价值!
最近一直在维护一套自己的快速开发平台. 主要应对针对C/S架构下的项目.然而对winform这快,还真没有看到过相对好的快速开发平台, 何为快速,在博客园逛了了好久, 预览了很多通用权限管理系统. 确 ...
- winform快速开发平台 -> 通用权限管理之动态菜单
这几个月一直忙APP的项目,没来得及更新项目,想想该抽出时间整理一下开发思路,跟大家分享,同时也希望得到宝贵的建议. 先说一下我们的权限管理的的设计思路,首先一个企业信息化管理系统一定会用到权限管理, ...
随机推荐
- C语言实现通用数据结构的高效设计
近期在阅读一个开源的C++代码.里面用到了大量的STL里面的东西.或许是自己一直用C而非常少用C++来实现算法的原因.STL里面大量的模板令人心烦.一直对STL的效率表示怀疑,但在网上搜到这样一个帖子 ...
- [计算机基础]HTTP协议学习笔记
HTTP:Hypertext transfer protocol超文本传输协议是一种详细规定了浏览器和Internet之间互相通信的规则 HTTP允许传输任意类型的数据对象,由Content-Type ...
- 让qt应用程序支持触摸
一.设备驱动 我的触摸屏是usb接口的 可以参考下这2篇文件 http://blog.csdn.net/paomadi/article/details/8754783 usb触摸屏 http://bl ...
- Maven聚合
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2 ...
- 专注UI——有用技术:模糊搜索
在如今的项目中.须要做模糊搜索,在曾经技术的基础上非常快得完毕了第一版.大家先看看第一版的效果,我们一会做评论: 0基础: 我们可能部分源代码(附件中会有所有源代码) <span style=& ...
- A Game of Thrones(18) - Catelyn
“We will make King’s Landing within the hour.” Catelyn turned away from the rail and forced herself ...
- libuv 与 libev 的对比
libuv 与 libev 的对比 libuv 与 libev 的对比 05 January 2013 libuv 和 libev ,两个名字相当相近的 I/O Library,最近有幸用两个 Lib ...
- VSTO学习笔记(四)从SharePoint 2010中下载文件
原文:VSTO学习笔记(四)从SharePoint 2010中下载文件 上一次我们开发了一个简单的64位COM加载项,虽然功能很简单,但是包括了开发一个64位COM加载项的大部分过程.本次我们来给CO ...
- 《数字图像处理原理与实践(MATLAB版)》一书之代码Part2
本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part2(P43~80),代码运行结果请參见原书配图,建议下载代码前阅读下文: 关于<数字图像处理原理与实践(MA ...
- 编译v8引擎
本机环境是win7+vs2010(本来想用2012的,但是发现默认的项目是2010的) 1.首先下载V8的源码 安装好svn,并在cmd下能使用svn help: svn下载地址(安装包):http: ...