当前位置:编程学习 > C#/ASP.NET >>

用户控件是否能实现多国语言?????????

.net中对于普通控件,比如Label控件,可以实现多国语言,对窗体的Language切换,比如在“中文(简体)”中设置Label的text属性为“中文”,在“英文(美国)”中设置为“English”,那么切换Language后会显示不同的text属性值。
    但是在用户控件中,我包含有Label控件,并且我自己做了个属性对Label的text进行设置,但是在使用用户控件的窗体,使用多国语言时,用户控件不会在不同的语言显示不同内容,比如我在“英文(美国)”里设置text为“English”,这个时候Language切换到“中文(简体)”后,text也变成“English”了,
   
 '
        'UserControl11
        '
        Me.UserControl11.AccessibleDescription = Nothing
        Me.UserControl11.AccessibleName = Nothing
        resources.ApplyResources(Me.UserControl11, "UserControl11")
        Me.UserControl11.BackgroundImage = Nothing
        Me.UserControl11.Ctxt = "English"
        Me.UserControl11.Name = "UserControl11"

UserControl11.Ctxt是用户控件的一个属性,Form1.Designer代码里已经使用了资源文件:
 resources.ApplyResources(Me.UserControl11, "UserControl11")
但是在资源文件里没有.Ctxt的值,只有基本属性的值(button1.text可以自动生成资源文件),下面是Form1.en-US.resx文件
 <data name="UserControl11.Font" type="System.Drawing.Font, System.Drawing">
    <value>宋体, 12pt</value>
  </data>
  <data name="UserControl11.Location" type="System.Drawing.Point, System.Drawing">
    <value>47, 44</value>
  </data>
  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <data name="UserControl11.Margin" type="System.Windows.Forms.Padding, System.Windows.Forms">
    <value>4, 4, 4, 4</value>
  </data>
  <data name="UserControl11.Size" type="System.Drawing.Size, System.Drawing">
    <value>201, 146</value>
  </data>
  <data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
    <value>Inherit</value>
  </data>
<data name="Button1.Text" xml:space="preserve">
    <value>English</value>
  </data>

问怎么才能让用户控件支持多国语言?也就是让用户控件的属性像其他基本控件的属性一样,显示在资源文件里 --------------------编程问答-------------------- 想法不错,这样的话意味着所有的属性、事件、方法都要自己写,还要写一个翻译功能,对选择不同的语言进行翻译。 --------------------编程问答-------------------- 没有人这样用过用户控件吗 --------------------编程问答-------------------- 参与者都有分,马上要结贴了。。。。 --------------------编程问答-------------------- 楼主实现了吗?如果实现了,分享一下。 --------------------编程问答-------------------- 可以应该是可以 你自己封装一个BaseUserControl 然后封装自己的一些属性和逻辑再配合国际化应该就好了
晚上回去试下 --------------------编程问答-------------------- wpf的绑定可以自动更新界面.只需要改txt. --------------------编程问答-------------------- 可以的哦,你必须编译多套不同版本语言的DLL。不同语言不只是显示不同,而且不是简单的翻译。
如Dev控件是支持多语言的,但是用户输入的数据时不支持的。
如果楼主能实现,望共享,膜拜下 --------------------编程问答-------------------- 想法是好,如果自己做出来共享更好,我只看过源码工具转义的,还没看过控件实现转义的,等待LZ的结果 --------------------编程问答-------------------- 貌似微软的一些网页就可以选择语言,然后把控件文本转换为选择的语言。
比如中英转换,你可以在各种控件的文本准备中英两套文本,然后触发事件两套语言之间转换就可以。貌似这种转换工作比较繁杂 --------------------编程问答-------------------- 问题没有完美解决,现在是把不同的语言做成XML文件,切换语言时动态加载xml文件。这样有个不方便的地方是,不同语言翻译的长度不一样,还得控制控件的位置,比较麻烦。
用vs的多国语言,切换到不同语言时可以调整界面控件位置,而且会记录到资源文件里。这个比较好,不同的语言界面都可以调整到适合的位置。 --------------------编程问答-------------------- 楼主解决了吗?挺想学习一下的 --------------------编程问答-------------------- 求结贴
http://bbs.csdn.net/topics/390654837
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,