繁体   English   中英

我应该在数据库中存储桌面应用程序的本地化数据吗?

[英]Should I store localization data for desktop application in database?

在我的办公室,我们正在讨论什么是处理桌面应用程序本地化的最佳方法。

虽然使用资源文件似乎是一个显而易见的选择,但是我们有了一个想法,可以使用数据库进行集中式本地化管理。 应用程序将在开始时连接到数据库以下载所有必需的翻译,也可以在呈现控件时按需下载翻译。

应用程序(使用C#创建)部署在高度受控的环境中,以借助用于处理发布本身以及实时更新的工具在内部使用。 我们有一个文件分发存储库和一个数据库服务器来处理少量卫星站点。

数据库将是在桌面应用程序中处理用户界面翻译的可行解决方案吗?

您应该考虑几点

  • 预计应用程序将显着增长
  • 应用程序可能需要特殊情况(特定于客户的翻译)
  • 相同的translation_key在不同的屏幕/窗口/不同的上下文中具有不同的值
  • 本地文件中的手动管理很耗时,不容易/即开即用

如果以上的一个或多个点与应用程序的业务计划相匹配,则应考虑使用数据库和服务器缓存

假设您开始向应用程序添加一个新的屏幕(窗体)。 在此表单中,您具有3个UI元素(element1,element2和element3)。 应该有一个集中的本地化服务(业务对象),它可以执行以下操作

  • 阅读每种形式
  • 阅读表单中的每个元素(在这里您可以过滤可能包含多语言文本(例如标签,按钮等,并且排除面板)的相关元素)
  • 该应用程序是否处于客户模式? (假设您的应用在启动/登录时将为客户提供选择-不同的外观,不同的文字等)
  • 尝试从服务器内置的缓存中获取翻译密钥(基于字典的数据结构,其中包含applicationCode (或密钥), customerKeytranslationKeyvalue )。 转换键可以是formName.uiElementName
  • 如果在缓存中找不到密钥,请尝试从数据库中获取密钥
  • 如果在数据库(新添加的表单及其UI元素)中找不到,请尝试在数据库中添加新条目(applicationKey,customerKey,transitionKey,空值)
  • 如果在数据库中找到,则将条目添加到缓存中
  • 您可能需要管理菜单来清除该缓存

现在构建一个集中式应用程序来管理本地化数据库。 在此处管理文本,您可以将其用于当前正在运行的应用程序,也可以用于将来的应用程序。

拥有集中化的本地化服务非常重要,但是构建集中化的应用程序来管理本地化数据库可能是一项艰巨的任务(时间和金钱)。 如果您正在寻找一种快速,简单的解决方案,并且不介意购买商业产品,则可以探索Passport 它提供了您需要的用户管理功能(例如本地化)以及您可能需要的其他功能,但是没有时间编写。 这些通常包括:

  • 登录跟踪
  • 报告(活动用户,注册和登录报告)
  • 给用户发送电子邮件
  • 基于角色的权限
  • 通过OAuth单点登录
  • 还有一堆

它安装简单,可以成功处理桌面应用程序中的用户界面翻译。 如果您确实预期会有显着的增长,并且特定于客户的翻译, Passport可以随您扩展。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM