我正在创建一个基于 WinForms/KryptonForms 的 C# 应用程序,由于该应用程序处于开发的一半阶段,我认为我最好解决本地化问题。
作为天生的 PHP 程序员(我知道 C# 是一个全新的水平),我会创建一个类来检测语言并自动将语言包分配给应用程序。然后使用语言对象访问值。
我想知道我是否可以获得一些关于执行此操作的最简单/最佳方法的示例。
我个人想要一些与应用程序设置类似的东西
我通常在哪里做 MyApplication.Properties.Settings.Default.SomeKey
我希望有一个 MyApplication.Languages.Current.ApplicationTitle
和 MyApplication.Languages .en.ApplicationTitle
例如。
此外,通过只为每个语言文件加载一个资源来提高速度也是有益的。
所以语言以英语加载,西类牙用户被提升这个应用程序是英文的,他想把它改成西类牙语,他点击是,设置得到更新,应用程序重新启动并加载单个西类牙语语言包.
你对此有何看法?
编辑:
该应用程序基于 XMPP 协议(protocol)并使用 agsXMPP 库。根据我的理解,每个向我发送他们的状态的用户也应该发送他们的系统所使用的语言。
所以基本上如果有任何方法可以“掌握”存储单个单词并在我的应用程序中使用 __("some string")
的事实是可能的,但与此同时我我只是在看 GUI 文本。
最佳答案
我们进行本地化的方式是:
- 将 WinForm 的“Localizable”属性设置为 true(这将为该 Form 生成一个新的资源文件,例如包含标签文本、按钮以及 z 顺序等)
- 创建一个 FormName.de.resx 文件(“de”因为我们是德国人),然后将需要本地化的字符串存储在其中(通过 ResourceManager 类访问此资源文件)<
- 对于需要本地化的非WinForms代码,我们直接创建单独的资源文件即可
在编译您的应用程序时,将创建一个 AppName.resources.dll。这个 dll 包含您应用程序的所有资源,然后可以与 Visual Localize 等工具一起使用,将字符串翻译成另一种语言,例如英语或西类牙语等。
关于c# - C# 应用程序中的本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3244404/