【发布时间】:2011-03-15 17:41:08
【问题描述】:
我正在创建一个基于 WinForms / KryptonForms 的 C# 应用程序,由于该应用程序处于开发的一半,我心想我最好对本地化进行分类。
作为一个天生的 PHP 程序员(我知道 C# 是一个全新的水平),我会创建一个类来检测语言并自动将语言包分配给应用程序。然后使用语言对象来访问这些值。
我想知道是否可以获取一些关于执行此操作的最简单/最佳方法的示例。
我个人想要一些类似于应用程序设置的东西
例如,我通常会在MyApplication.Properties.Settings.Default.SomeKey 的地方使用MyApplication.Languages.Current.ApplicationTitle 和MyApplication.Languages.en.ApplicationTitle。
此外,通过为每个语言文件加载单个资源来提高速度也是有益的。
所以语言加载为英语,西班牙用户被提示此应用程序是英文的,他想将其更改为西班牙语,他单击“是”,设置得到更新,应用程序重新启动并加载单个西班牙语语言包.
您对此有何看法?
编辑:
该应用程序基于 XMPP 协议并使用 agsXMPP 库。据我了解,每个向我发送他们的存在的用户也应该发送他们的系统所使用的语言。
因此,基本上,如果有任何方法可以“掌握”存储单个单词并在我的应用程序中使用 __("some string") 的事实,但同时我只是查看 GUI 文本。
【问题讨论】:
-
你的意思是什么“来自windows的语言资源”?
-
假设 Windows 通常会在系统上的 dll 文件中存储语言行,我可以将它们导入到我的应用程序中,这样我就可以节省写作时间,只是一般的表单文本,例如
File,@ 987654326@,Options,Error等。这样可行吗? -
我认为这没有意义。您将花费更多时间调查所有 Windows 资源,为什么?客户有自己的框架(英语、西班牙、德国...),框架通过使用本地化消息显示他们的系统消息(警告、错误)。您的应用程序有自己的文本资源。所以请准备好翻译它们。没有魔法,只有工作..工作..工作.. :)。
-
我认为伊戈尔是对的。本地化的整个想法是,最后,你有一个文件可以发送给翻译,你的整个应用程序将被翻译成新的语言。因此我们的非高效代码。 :-)
标签: c# localization internationalization