C#应用程序中的本地化

Rob*_*itt 10 c# localization internationalization

我正在创建一个基于WinForms/KryptonForms的C#应用​​程序,并且由于应用程序处于开发的一半,我认为我最好将本地化排序.

作为一个天生的和繁殖的PHP程序员(我知道C#是一个全新的水平),我会创建一个类来检测语言并自动将语言包分配给应用程序.然后使用语言对象来访问值.

我想知道我是否可以在最简单/最好的方法上得到一些例子.

我个人想要一些与应用程序设置相关的内容

通常在哪里,我会做MyApplication.Properties.Settings.Default.SomeKey我希望的MyApplication.Languages.Current.ApplicationTitle,并MyApplication.Languages.en.ApplicationTitle为例子.

此外,通过仅为每个语言文件加载单个资源来提高速度也是有益的.

因此,语言加载英语,西班牙语用户被提升为该应用程序是英语,他想将其更改为西班牙语,他点击是,设置得到更新,应用程序重新启动并加载单个西班牙语语言包.

你对此有何看法?


编辑:

该应用程序基于XMPP协议并使用agsXMPP库.根据我的理解,每个向我发送他们在场的用户也应该发送他们的系统所使用的语言.

所以基本上如果有任何方法可以"掌握"存储单个单词的事实并且__("some string")在我的应用程序中使用它是可能的,但同时我只是在看GUI文本.

Chr*_*ian 8

我们进行本地化的方式是:

  • 将WinForm的"Localizable"属性设置为true(这将为该Form生成一个新的资源文件,例如标签,按钮的文本,还有z-order等)
  • 创建一个FormName.de.resx文件("de",因为我们是德语),然后存储需要在那里本地化的字符串(访问此资源文件通过ResourceManager类工作)
  • 至于需要本地化的非WinForms代码,我们只需创建单独的资源文件

编译应用程序后,将创建AppName.resources.dll.这个dll包含你的应用程序的所有资源,然后可以与Visual Localize等工具一起使用,将字符串翻译成另一种语言,如英语或西班牙语等.