WinForm 国际化多语言的一些问题_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > WinForm 国际化多语言的一些问题

WinForm 国际化多语言的一些问题

 2017/8/9 15:31:24  shenyinabcd  程序员俱乐部  我要评论(0)
  • 摘要:国际化最近发现WinForm的官方国际化是这样的:首先设置Form的Localizable属性为true选择Form的Language为"(Default)",然后给页面中每个控件设置一遍Text选择Form的Language为"中文(简体)",然后给页面的每个控件设置一遍中文Text对所需要支持的语言,先设置Form的Language为所要支持的语言,然后给页面的每个控件设置一遍Text每设置一个语言后,设计器会自动生成对应的resx文件,如:Form1.resx(Default)
  • 标签:for 国际化 问题 一些问题 winform

国际化

  最近发现 WinForm 的官方国际化是这样的:

  1. 首先设置 Form 的 Localizable 属性为 true 
  2. 选择 Form 的 Language 为 "(Default)",然后给页面中每个控件设置一遍 Text
  3. 选择 Form 的 Language 为 "中文(简体)",然后给页面的每个控件设置一遍 中文 Text
  4. 对所需要支持的语言,先设置 Form 的 Language 为所要支持的语言,然后给页面的每个控件设置一遍 Text

  每设置一个语言后,设计器会自动生成对应的 resx 文件,如:Form1.resx (Default), Form1.zh-Hans.resx , Form1.en-US.resx 等等。

 

问题

  这样简单的设置的确很6,除了在资源文件里面会生成一些奇怪的名称,例如由 >> 开头的资源名,还有一些 resource.Name34, resource.Name.35 等等这些由数字组成的资源名,这对程序员不大友好。

  还有一个问题是,当你设置完了所有的语言,未来的某个时刻想更改一下某个控件的名称(Name),设计器只会去修改当前语言下的 resx 文件,其他 resx 文件并不会同步到这个 Name。所以一旦有控件改了名称,还需要选一遍语言,然后设置一遍 Text。这比较不方便,因为我可能已经忘掉了之前这个控件上的字符串是什么了。

 

选择

  我有旧代码,想要改控件名,所以我还是用回非官方的国际化方法吧。链接:http://www.cnblogs.com/codefish/p/4778269.html   。这样也会有重构Name时不同步问题,只能手动改 resx 文件了。

  不过如果重新写 WinForm 工程的话,可能这种方法还行,除了会生成一些程序员看不懂的资源。

  相比之下还是 WPF 好,WPF 是 Text 中有资源的链接, {DynamicResource xxx} 这个样子,字符串资源是不知道控件的名称是什么。WinFrom 是反过来,字符串资源知道控件的名称,即字符串资源是紧耦合于控件名称的。这种依赖关系影响代码修改。

  

 

Reference:

1. https://msdn.microsoft.com/en-us/library/y99d1cd3(v=vs.71).aspx

2. http://www.dotnetcurry.com/showarticle.aspx?ID=174

 

发表评论
用户名: 匿名