[60分] WinForm 中如何支持多语言显示 ? (语言资源另存在 xml 文档中)

IkusaHime 2006-05-29 06:16:51
本人的设想:
1. 读入 xml 文档中的所有语言资源.
2. Form_Load 的时候将读入的语言字串赋值到当前 Form 中的每一个控件上. 具体做法:

foreach (Control ctrl in this.Controls){
ctrl.Text = ....;
}

但这样一来, 有些组件无法汉化, 比如菜单栏中的条目就不是继承自 Control 类, 而是 ToolStripItem, 所以 foreach 中没办法枚举到不是 Control 的组件, 也无法对他们的 Text 属性赋值.

请问这种情况下应该如何办 ? 本人这种多语言的编程方式有没有问题 ? 是否有更好更通用的方法 ? 谢谢.
...全文
383 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eddie005 2006-06-01
  • 打赏
  • 举报
回复
偶也建议使用资源文件~
kyle315 2006-06-01
  • 打赏
  • 举报
回复
使用ResourceManager虽说前期比较方便,但编译后就没办法修改了(生成了DLL),如果要修改还要重新编译,我以前就是这么做的,感觉不方便就改成用XML。
IkusaHime 2006-06-01
  • 打赏
  • 举报
回复
问题已解决. 结贴.

资源文件有他的优点, 比如换语种之后字符超出大小 .NET 会自动调整. (看资料这么说, 没试过)

xml 方式修改起来比较方便, 而且格式通用, 语言可存储在数据库里面, 或远程由 webservice 获得(当然这种情况很少), 缺点是需要给每个需要汉化的控件设置一个键值以对应翻译后的语言. 我这里是占用了 Control.Tag 属性存放 key, 感觉上不太纯粹.
IkusaHime 2006-05-31
  • 打赏
  • 举报
回复
查了一下 sdk, ms 的官方例子都是用 ResourceManager, 文档中虽说可以将本地化的各种字串单独编译为 dll, 但个人感觉仍然不如 xml 文本灵活和操作方便, kyle315 的提示我会考虑考虑.
kyle315 2006-05-30
  • 打赏
  • 举报
回复
使用XML文件,在当前目录下可建一个“语言”文件夹,里面放入XML文件,有几种语言版本就放入几个XML文件,XML文件结构都相同,窗体加载时可根据选定的语言版本访问不同的XML文件,对于继承自 Control 的控件可按你的方法循环加载,菜单项目也可以循环加载,你可以再找一下资料。
marvelstack 2006-05-30
  • 打赏
  • 举报
回复
使用资源文件,
http://getacoder.cn.cnblogs.com/archive/2006/04/09/370563.html
fangxiangting 2006-05-30
  • 打赏
  • 举报
回复
你可以把资源文件不存放在主程序中,可以另外搞一个dll,把相关资源存放在dll中
lextm 2006-05-30
  • 打赏
  • 举报
回复

.NET 的这种方法和 IDE 结合确实方便, 不过似乎他要求把语言事先存储在 resource 里面 ?
这样的话语言就是定死了的, 我主程序发布之后如果要追加发布其他语言, 那只能重新编译打包发布主程序 ?

================

不知道你看了SDK文档里面相关的章节没有。那个十分详细。

另外有很多开源的项目你可以拿来参考,比如SharpDevelop。
IkusaHime 2006-05-29
  • 打赏
  • 举报
回复
顶一下 .. -_-b
IkusaHime 2006-05-29
  • 打赏
  • 举报
回复
.NET 的这种方法和 IDE 结合确实方便, 不过似乎他要求把语言事先存储在 resource 里面 ?
这样的话语言就是定死了的, 我主程序发布之后如果要追加发布其他语言, 那只能重新编译打包发布主程序 ?

diandian82 2006-05-29
  • 打赏
  • 举报
回复
可以把所有的字符串都设置成变量,就像VC中的字符串集一样,到时候给不通的变量赋不同的值就行乐。
sx_lxh 2006-05-29
  • 打赏
  • 举报
回复
http://www.myfaq.com.cn/A/2005-04-13/136607.html

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧