2010-01-02 20 views
0

可以推出自己的本地化框架吗?我可以使用默认的.NET本地化行为(即将文本放入程序集中以特定方式命名的资源文件中),不同之处在于除了WinForms和WPF之外,还需要在DirectX中呈现本地化图像和文本。在.NET应用程序中推出自己的本地化层可以吗?

我可以将形式特定的字符串放在一个地方,其他字符串放在其他地方,但我认为将所有东西放在一个地方更有意义,更不用说它将有助于避免重复(对于域值/否等)。也有可能我们将来可能会将此工具转移到另一个平台,因此将所有本地化信息放在一个平台无关的区域将会很好。

我意识到这有点主观,但我正在寻找一个最佳实践...我已经在采取两种方法的项目上工作。有什么想法吗?

+0

不要问我们,向您的本地化服务提供商询问当您向他们提交非标准内容时他们收取了多少费用。 – 2010-01-02 21:39:18

+0

现在我只是从要求工作。本地化将进入项目的另一个阶段......当然。 :/ – 2010-01-02 21:43:41

回答

2

我已经开发了系统,通过数据库存储的数据和元数据实现本地化。如果您的应用程序已经在密集使用快速数据库后端,您可以创建一个数据库支持的本地化层,并使用它来存储本地化信息,包括文本和非文本数据。它在一些场合对我们很有帮助。

编辑。细节不适合这里,但基本上我们镜像了Windows API或.NET使用的键/值资源管理器的逻辑。我们通过允许将资源分组为可任意嵌套的组扩展了这一点。例如,可以给出资源名称,例如“ClientManagement.MainForm.StatusBar.ReadyMsg”,表示准备好的消息文本显示在客户端管理用户界面的主窗体的状态栏上。在应用程序启动时,会从配置文件和用它初始化的资源管理器中读取区域设置;所有对资源管理器的后续调用都将使用这样的区域设置,直到明确更改。我们还构建了一个管理用户界面,允许我们编辑存储在数据库中的资源,甚至添加新的语言。最后的评论:要本地化的数据不仅仅是屏幕上的标签和图标。例如,组合框中的选项值也需要进行本地化。

+0

那么,你们是否创建了一种资源管理器,根据我假设的当前文化,从数据库中获取字符串?这听起来像我会做的。 – 2010-01-02 21:44:31

+0

@Ed:是的;我正在编辑解释它。 – CesarGon 2010-01-02 21:45:44

+0

非常感谢。这验证了我的想法。 – 2010-01-02 22:01:48

0

我们使用DB后端实现了本地化。我们能够创建一个优秀的资源编辑器,它允许“翻译者”最终用户动态更新翻译(不能用resx来完成!)。我们还能够支持按模块进行的审批流程和小组翻译,从而可以批准整个模块在语言中使用。

我们还决定实施Asp.Net的本地化服务提供商,该服务基本上不进行开发人员的代码自动化本地化。这实际上是项目中唯一困难的部分,因为界面没有很好的记录。这很难调试,因为它实际上在Visual Studio主机进程中运行。我们使用Web服务来解耦实现,这大大简化了事情。另一件好事是翻译会自动缓存,所以数据库不会很难。坏消息是,当你的翻译服务/后端停止工作时,如果你不预编译你的asp.net网站,当用户启动一个'新'页面时,编译器可能决定不翻译这个页面。这种行为仍然存在(即使翻译服务再次启动后),直到您强制重新编译网站。

相关问题