进行多语言用户控制

时间:2011-10-18 04:07:23

标签: c# winforms user-controls multilingual

我正在开发一个用户控件,现在(在工作结束时)我正面临着使它成为多语言的问题。 我想我可以这样做:

  1. 对于UI部分,我可以在控件上设置Localizable = true,让VS生成默认语言所需的所有“记录”。
  2. 然后我必须手动添加我用于动态菜单,消息等的所有字符串
  3. 最后,我需要为我需要的语言创建所有资源文件
  4. 所以使用MSDN

    中的代码
    Assembly myAssembly = this.GetType().Assembly;
    ResourceManager mgr = new ResourceManager("namespace.resource", myAssembly);
    mgr.GetString(...) 
    

    我的工作可以(轻松)完成 但我有一些问题:

    1. 当我从最终用户使用我的控件(生成的DLL)时,由于目标应用程序中的主命名空间更改,使用new ResourceManager(...)时是否会遇到一些问题?
      考虑我不知道最终用户将使用哪个命名空间。
    2. 当我创建语言资源时,VS生成附属程序集:有没有办法可以将这些文件“集成”到目标DLL中? 如果可能的话,我只想部署一个文件......
    3. 有没有更好的方法来完成我的任务?
    4. 开发多语言控件时,我真的需要关注什么?
    5. 感谢大家


      更新:(感谢@ lak-b提供的建议)

      经过一番研究后,我回答了一些问题:

      1. 这是真的,我可以硬编码命名空间,当最终用户将我的控件放在他的表单上时,
      2. 好吧,似乎没有一个简单的方法 无论如何this SO post提供了一个很好的教训和一个很好的解决方案!!
      3. ...不,对于这个问题,我还在等待有人告诉我一个更好/更容易的方式
      4. 从lak-b中指定了一些关键点 还有什么我不得不担心的吗?
      5. 再次感谢

1 个答案:

答案 0 :(得分:2)

看看Best practice to make a multi language application in C#/WinForms?

  1. 您可以在此处“硬编码”程序集名称。
  2. 试试这个http://research.microsoft.com/en-us/people/mbarnett/ILMerge.aspx
    1. 你只需要搞定它并尝试它! :)简而言之 - 你必须关心很多事情:
      • 日期时间
      • 货币
      • 本周的第一天
      • 从右到左或从左到右 等等。