当前位置:首页>>开发编程>>VS.NET>>新闻内容
.NET Framework 中多语言支持的实现
作者:dREAMtHEATER 发布时间:2004-8-5 8:48:09 文章来源:dREAMtHEATER博客
前言
  
曾经记得在 win32 的原生代码编程时代,为实现一个多语言界面而绞尽脑汁,因此出现了大量的教程都是教你如何让程序实现多语言支持,这些实现方法的技术水平参差不齐,很难找到好的框架实现在商业程序中。.NET 时代的到来,我们突然发现这一切变得那么简单,你只需轻松点击鼠标就可以让你的程序完美实现多语言支持。
    我不想在这里过多的解释文中出现的概念,因为 MSDN 已经为我们提供了完全本地化的技术文档。

正文
    我用的是 Visual Studio 2003 中的 Visual C#.NET 来实现的,
我设计的这个 Demo 不仅可以自动根据当前区域设置进行本地化的实现,还可以手动更改界面语言,并且实现自定义资源的本地化。 Demo 源码这里下载
    请跟随我的步骤来完成:
  1. 创建名为“MultiLanguage”的新 Windows 应用程序。
  2. 在“属性”窗口中,将窗体的 Localizable 属性设置为 true。
    Language 属性已经设置为 (Default)。
  3. 将 MainMenu、PictureBox、Button 控件从“工具箱”的“Windows 窗体”选项卡拖到窗体上,然后按照我在 Demo 窗体中对这些控件的布局、设计进行设置。
  4. 将该窗体的 Language 属性设置为“中文(中华人民共和国)”。
  5. 重新按照我在 Demo 窗体中对这些控件的中文界面的布局、设计进行设置。
  6. 单击解决方案资源管理器中的“显示所有文件”按钮。
    资源文件出现在 Form1.cs 的下面。Form1.resx 是后备区域性的资源文件,它将生成到主程序集中。Form1.zh-CN.resx 是在中国讲的简体中文的资源文件。
  7. 分别生成菜单项的 Click 事件,按照我在 Demo 中的实现代码添加到事件处理部分。
    大家主要学习我是如何动态修改界面上所有跟语言相关的元素,包括字符串、对象(例如PictureBox.Image)。
  8. 在“项目”菜单上单击“添加新项”。
  9. 在“模板”框中选择“程序集资源文件”模板。在“名称”框中键入文件名“WinFormStrings.resx”。WinFormStrings.resx 文件将包含英语的后备资源。每当应用程序找不到更适合于 UI 区域性的资源时,就将访问这些资源。
    该文件被添加到解决方案资源管理器中的项目中,并自动在 XML 设计器中以“数据”视图形式打开。
  10. 在“数据表”窗格中选择“data”。
  11. 在“数据”窗格中,单击空行,并在“name”列中输入“strMessage”,在“value”列中输入“Hello World”。
  12. 在“文件”菜单上,单击“保存 WinFormStrings.resx”。
  13. 再执行两次步骤 8-12 以创建一个名为“WinFormStrings.zh-CN.resx”的资源文件,并且这个文件具有在下表中指定的字符串资源。WinFormStrings.zh-CN.resx 文件将包含特定于在中国讲的简体中文的资源。
    资源文件名 name value
    WinFormStrings.zh-CN.resx strMessage 你好!世界
  14. 生成 Button1 的 Click 事件,按照我在 Demo 中的实现代码添加到事件处理部分。
    这部分大家主要学习如何访问手动添加的资源,其目的是为了在你以后编程时生成在对话框和错误信息中出现的可本地化字符串。
  15. 添加构造函数 Form1() 的代码,按照我在 Demo 中的代码进行添加。
  16. 保存和生成解决方案。
  17. 编译并试着运行。
    我是用 Release 模式进行编译的,在项目目录的 MultiLanguage\bin\Release 下会生成两个子目录“zh-CHS”、“zh-CN”,里面都有一个叫“MultiLanguage.resources.dll”的文件,分别对应你在窗体中设计的后备区域性的资源文件。发布时请随最后的编译程序一起发布,不要改变 Bin 目录下的任何目录设置,.NET Framework 会根据一定规律进行本地化实现,原理请参考 MSDN 相应章节。
参考
  1. MSDN Feb 2003 简体中文版。具体参见
    ms-help://MS.MSDNQTR.2003FEB.2052/vbcon/html/vbwlkWalkthroughLocalizingWindowsForms.htm

 


最新更新
·C#中使用Split分隔字符串的技
·VS2008开发中Windows Mobile
·PC机和移动设备上绝对路径的
·C#程序加壳的方法(使用Sixx
·当前上下文中不存在名称Conf
·请插入磁盘:Visual Studio 2
·用VS.NET读取Flash格式文件信
·在ASP.NET中使用AJAX的简单方
·VS.NET 2005中常用的一些代码
·安装VS.NET 2005 SP1补丁全攻
相关信息
·VS2008开发中Windows Mobile 5.0 emulator连网的配置
·C#程序加壳的方法(使用Sixxpack)
·当前上下文中不存在名称ConfigurationManager的解决方法
·请插入磁盘:Visual Studio 2005 DVD
·用VS.NET读取Flash格式文件信息
·在ASP.NET中使用AJAX的简单方法
·VS.NET 2005中常用的一些代码
·安装VS.NET 2005 SP1补丁全攻略
·ASP.NET后台代码实现XmlHttp跨域访问
·ASP.NET取得当前页面的完整URL
画心
愚爱
偏爱
火苗
白狐
画沙
犯错
歌曲
传奇
稻香
小酒窝
狮子座
小情歌
全是爱
棉花糖
海豚音
我相信
甩葱歌
这叫爱
shero
走天涯
琉璃月
Nobody
我爱他
套马杆
爱是你我
最后一次
少女时代
灰色头像
断桥残雪
美了美了
狼的诱惑
我很快乐
星月神话
心痛2009
爱丫爱丫
半城烟沙
旗开得胜
郎的诱惑
爱情买卖
2010等你来
我叫小沈阳
i miss you
姑娘我爱你
我们都一样
其实很寂寞
我爱雨夜花
变心的玫瑰
犀利哥之歌
你是我的眼
你是我的OK绷
贝多芬的悲伤
哥只是个传说
丢了幸福的猪
找个人来爱我
要嫁就嫁灰太狼
如果这就是爱情
我们没有在一起
寂寞在唱什么歌
斯琴高丽的伤心
别在我离开之前离开
不是因为寂寞才想你
爱上你等于爱上了错
在心里从此永远有个你
一个人的寂寞两个人的错