塞巴斯蒂安·克利希(SebastianKliś)
在我的办公室,我们正在讨论什么是处理桌面应用程序本地化的最佳方法。
虽然使用资源文件似乎是一个显而易见的选择,但是我们有了一个想法,可以使用数据库进行集中式本地化管理。应用程序将在开始时连接到数据库以下载所有必需的翻译,也可以在呈现控件时按需下载翻译。
应用程序(使用C#创建)部署在高度受控的环境中,以借助可处理发布本身以及实时更新的工具在内部使用。我们有一个文件分发存储库和一个数据库服务器来处理少量卫星站点。
数据库将成为在桌面应用程序中处理用户界面翻译的可行解决方案吗?
Mariovalens
您应该考虑几点
- 预计应用程序将显着增长
- 应用程序可能需要特殊情况(特定于客户的翻译)
- 相同的translation_key在不同的屏幕/窗口/不同的上下文中具有不同的值
- 本地文件中的手动管理很耗时,不容易/即开即用
如果以上的一个或多个点与应用程序的业务计划相匹配,则应考虑使用数据库和服务器缓存
假设您开始向应用程序添加一个新的屏幕(窗体)。在此表单中,您具有3个UI元素(element1,element2和element3)。应该有一个集中的本地化服务(业务对象),它可以执行以下操作
- 阅读每份表格
- 阅读表单中的每个元素(您可以在此处过滤可能包含标签,按钮等多语文本的相关元素,并排除面板)
- 该应用程序是否处于客户模式?(假设您的应用在启动/登录时将为客户提供选择-不同的外观,不同的文字等)
- 尝试从服务器内置的缓存中获取翻译密钥(基于字典的数据结构,其中包含applicationCode(或密钥),customerKey,translationKey和value)。转换键可以是formName.uiElementName
- 如果在缓存中找不到密钥,请尝试从数据库中获取密钥
- 如果在数据库(新添加的表单及其UI元素)中找不到,请尝试在数据库中添加新条目(applicationKey,customerKey,transitionKey,空值)
- 如果在数据库中找到,则将条目添加到缓存中
- 您可能需要管理菜单来清除该缓存
现在构建一个集中式应用程序来管理本地化数据库。在此处管理文本,您可以将其用于当前正在运行的应用程序以及将来的应用程序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
编辑于
我来说两句