在我的办公室,我们正在讨论处理桌面应用程序本地化的最佳方式。
虽然使用资源文件似乎是一个明显的选择,但我们有一个想法,我们可以使用数据库进行集中的本地化管理。应用程序将在开始时连接到数据库以下载所有必需的翻译,或者可以在呈现控件时按需下载翻译。
应用程序(使用C#创建)部署在高度受控的环境中供内部使用,借助处理发布本身和实时更新的工具。我们有一个文件分发存储库和单个数据库服务器来处理很少的卫星站点。
数据库是否可以成为处理桌面应用程序中用户界面翻译的可行解决方案?
2 个答案:
答案 0 :(得分:0)
您应该考虑几点
- 预计应用程序将显着增长
- 应用程序可能需要特殊情况(客户特定翻译)
- 相同的translation_key在不同的屏幕/窗口/不同的上下文中具有不同的值
- 本地文件中的手动管理非常耗时且不易处理/开箱即用
如果上面的一个或多个点与应用程序的业务计划相匹配,那么您应该考虑使用数据库和服务器缓存
假设您开始向应用程序添加新屏幕(表单)。在这种形式中,您有3个UI元素(element1,element2和element3)。应该有一个集中的本地化服务(业务对象),它执行以下操作
- 阅读每个表格
- 阅读表单中的每个元素(在这里您可以过滤可能包含多语言文本的相关元素,如标签,按钮等,并排除面板)
- 应用程序是否处于客户模式? (假设您的应用程序将在启动/登录时为客户提供选择 - 不同的外观,不同的文本等)
- 尝试从服务器构建的缓存中获取翻译密钥(基于字典的数据结构包含 applicationCode (或密钥), customerKey , translationKey 和值)。翻译密钥可以是 formName.uiElementName
- 如果在缓存中找不到密钥,请尝试从数据库中获取密钥
- 如果在数据库中找不到(新添加的表单及其UI元素),请尝试在DB中添加新条目(applicationKey,customerKey,translationKey,空值)
- 如果在数据库中找到,则在缓存中添加条目
- 您可能希望有一个管理员菜单来清除该缓存
现在构建一个集中式应用程序来管理本地化数据库。
在此管理文本,您可以利用它对当前正在运行的应用程序以及未来的应用程序的使用。
答案 1 :(得分:0)
拥有集中式本地化服务极为重要,但构建集中式应用程序来管理本地化数据库可能是一项严肃的任务(时间和金钱)。如果您正在寻找一种快速,简便的解决方案,并且不介意商业产品,您可以探索Passport。它提供了您需要的用户管理功能(如本地化)以及您可能需要的其他功能,但没有时间编写。这些通常包括:
- 登录跟踪
- 报告(活跃用户,注册和登录报告)
- 通过电子邮件发送用户
- 基于角色的权限
- 通过OAuth进行单点登录
- 还有更多
安装简单,可以在桌面应用程序中成功处理用户界面翻译。如果您确实预计会有显着增长,那么客户特定的翻译Passport可以随您扩展。