我是否应该将桌面应用程序的本地化数据存储在数据库中

本文关键字:数据 本地化 存储 数据库 应用程序 是否 桌面 | 更新日期: 2023-09-27 18:34:16

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

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

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

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

我是否应该将桌面应用程序的本地化数据存储在数据库中

您应该考虑几点

  • 预计申请量将大幅增长
  • 应用程序可能需要特殊情况(客户特定的翻译(
  • 同一translation_key在不同的屏幕/窗口/不同的上下文中具有不同的值
  • 本地文件中的手动管理既耗时又不容易/开箱即用

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

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

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

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

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

  • 登录跟踪
  • 报告
  • (活跃用户、注册和登录报告(
  • 向用户发送电子邮件
  • 基于角色的权限
  • 通过 OAuth 进行单点登录
  • 还有更多

它易于安装,并且可以在桌面应用程序中成功处理用户界面翻译。如果您确实预计会有显著的增长和客户特定的翻译,Passport 可以与您一起扩展。