进行多语言用户控制

Mar*_*rco 5 c# multilingual user-controls winforms

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

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

所以使用MSDN中的代码

Assembly myAssembly = this.GetType().Assembly;
ResourceManager mgr = new ResourceManager("namespace.resource", myAssembly);
mgr.GetString(...) 
Run Code Online (Sandbox Code Playgroud)

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

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

感谢大家


更新:(感谢@ lak-b的一些建议)

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

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

再次感谢

lak*_*k-b 2

看看在 C#/WinForms 中制作多语言应用程序的最佳实践?

  1. 您可以在此处“硬编码”程序集名称。
  2. 试试这个http://research.microsoft.com/en-us/people/mbarnett/ILMerge.aspx
    1. 您只需要深入研究并付诸实践即可!:) 简而言之 - 你必须关心很多事情:
      • 约会时间
      • 货币
      • 一周的第一天
      • 从右到左或从左到右等等。