对于系统文本的多语言支持 x 种语言来说,这是一个很好的设计吗? [关闭]

2024-03-24

这个实现的扩展性是否良好:

要求是:

  1. 系统必须支持x种语言;其中 x will = 企业可以翻译的尽可能多的语言

  2. 所有系统维护的值(页面内容、电子邮件内容、存储在面向用户的数百个查找表中的值)都需要支持多语言。

我的实现:

表:(使用的示例名称)

local_text_table  
language_lookup_table   

Content_table_1   
Content_table_2   
Content_table_3    
Content_table_4   
....

Plan:

language_lookup_table 包含所有可能语言的列表

lang_id   lang_name

local_text_table 包含系统上使用的所有可能文本(电子邮件、页面内容、菜单标签、页脚文本等)的列表,以及系统将支持的每种语言的 1 列 - FK 到 language_lookup_table。

text_id
英文文本
西班牙语文本
阿拉伯文文本
...

这样,整个系统的所有翻译都存储在一张表中。我可以一步启用/禁用/更新/编辑/添加/删除翻译。在代码中,所有文本都存储为引用 (text_id) 的关键字。系统检测用户会话正在运行的语言,并相应地从该关键字的列中提取文本。如果特定行为 NULL(未翻译),它将默认为英文文本列。

这个好吗?

当然,这对于存储在数百个表中的查找值不起作用,因为除了为每个表提供每种语言自己的列之外,我还没有计划。然后,我还拥有用户内容,以允许用户翻译他们的用户帖子,例如博客、评论等,而我对此没有计划。但我想首先关注系统文本并最终确定它。


您的设计存在缺陷,因为如果不向 local_text_table 添加列,您将无法添加新语言。

该表的更好设计是:

text_id
lang_id (foreign key to language_lookup_table)
translated_text

现在,您可以将语言添加到 language_lookup_table,然后开始将翻译添加到 local_text_table,而无需对关系模型进行任何更改。如果您有办法通过 UI(甚至直接在数据库中)输入这些数据,您应该能够直接在生产中添加新语言。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对于系统文本的多语言支持 x 种语言来说,这是一个很好的设计吗? [关闭] 的相关文章

  • 如何使用 .schema 文件在 sqlite3 中创建 DB 文件

    我们的客户向我们提供了一个名为db schema 现在有一个命令可以用来运行这个文件来创建一个 dbsqlite3 中的文件 我可以做到这一点而不必输入中提到的所有查询吗db schema file 请帮忙 谢谢 如果该文件仅包含格式正确的
  • Java中对象的序列化需要什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 谁能告诉我Java中对象序列化的需求是什么 并给我一个示例场景来解释需求 我已经了解什么是序列化 我只是想了解何时使用它以及如何使用它
  • 如何优化 postgres 查询

    我正在运行以下查询 SELECT fat FROM Table1 fat LEFT JOIN modo captura mc ON mc id fat modo captura id INNER JOIN loja lj ON lj id
  • WPF 应用程序的最佳本地数据库解决方案是什么?

    目前适用于 WPF 应用程序的最佳解决方案是什么一台电脑 where 各种用户登录它们并使用它们在本地获取 保存信息 以下是我看到选项的方式 MDF似乎是最好的选择 因为我假设您可以很好地锁定它 这样即使用户可以访问 mdf 文件 他们仍然
  • 如何在javascript中设置从数据库输入的最大数量?

    我希望根据数据库中的数量设置 输入类型 数字 中输入的最大数量 目前 我正在尝试让它在数据最大的基础上工作 然后再尝试从数据库中获取最大值 但它似乎无法工作 之前已经在这里问过 但我仍然无法理解 在 php javascript 中设置数据
  • Alembic 无法识别 False 默认值

    在维护 SQLAlchemy 数据模型并利用 alembic 进行版本控制时 我所做的以下代码更改导致了空修订 some column Column Boolean nullable False default False 以前是 some
  • 您使用的 ORM 框架的最佳功能是什么[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 一组记录中某些值相同的唯一约束

    DBMS MS Sql Server 2005 标准版 我想创建一个表约束 以便只有一个记录在表的子集中具有特定值 其中行共享特定列中的值 这可能吗 Example 我的 myTable 中有一些记录 其中有一个非唯一的外键 fk1 以及一
  • 是否可以从数据库转储生成 knex 种子文件?

    就我而言 我使用的是 mysql 但是 我正在寻找一种通用解决方案 用于从当前运行的数据库或数据库转储生成 knex 种子文件 我可以就像是 https github com tgriesser knex issues 944 issuec
  • 将字段重新格式化为列,其他字段(与先前结构中成为列的字段配对)成为新列中的字段

    我的任务是清理慈善机构设计的移动应用程序中的数据 在一个部分中 用户问答应用程序使用会话由一行表示 该部分由重复的问题答案字段对组成 其中一个字段代表所提出的问题 然后它旁边的字段代表相应的答案 每个问题 字段和答案列对一起代表一个独特的问
  • 销毁/删除 Rails 中的数据库

    是否可以从现有应用程序中完全删除数据库和所有迁移记录等 以便我可以从头开始重新设计数据库 通过发行rake T您有以下数据库任务 rake db create Create the database from DATABASE URL or
  • 如何对 mongodb/mongoid 脚本进行基准测试,以比较两种不同的查询技术

    您对如何测试两种不同的 mongoid mongodb 查询实现的性能有什么建议吗 要比较的实现与以前的相关 问答 https stackoverflow com questions 10121977 extracting modellin
  • 自定义 php 论坛 - 显示新的/未读的帖子

    我自己使用 php 编写了一个自定义论坛脚本 我决定不使用 phpbb 和其他工具 因为我希望我所做的事情具有 100 的灵活性 不过我遇到了一个问题 如何向用户显示帖子是否是新的 未读的 我想到了两种解决方案 1 饼干 2 数据库 我不想
  • 如何在查询中生成序列号?

    我们使用 PostgreSQL v8 2 3 如何在查询输出中生成序列号 我想显示查询返回的每一行的序列号 例子 SELECT employeeid name FROM employee 我希望生成并显示从一开始的每一行的序列号 你有两个选
  • 产品和变体 - 设计数据库的最佳方法

    描述 商店可以有产品 鞋子 T 恤等 每个产品可以有许多变体 每个变体可以有不同的价格和库存 例如T 恤有不同的颜色和尺寸 颜色 蓝色 尺寸 L 价格 10 美元 库存 5 颜色 蓝色 尺寸 XL 价格 10 美元 库存 10 颜色 白色
  • 使用 LIKE 和撇号的 Mysql 查询问题

    所以我有一个有趣的问题 我从未遇到过 并且似乎找不到太多有关纠正该问题的信息 我有一个庞大的数据库 里面有大量的数据 相当于 10 年的数据 并试图对其进行搜索 现在搜索功能运行良好 但最近有人让我注意到一个 错误 如果你愿意的话 我尝试对
  • 如何在SQLite中的两个表之间复制数据?

    我有两个具有不同列的表 如下所示 table1 id title name number address table2 id phone name address 如何将数据 名称 地址 从表 1 复制到表 2 我的问题有两种情况 第一 t
  • MySQL - 替换列中的字符

    作为一个自学成才的新手 我给自己制造了一个大问题 在将数据插入数据库之前 我将字符串中的撇号 转换为双引号 而不是 MySQL 实际需要的反斜杠和撇号 在我的表增长到超过 200 000 行之前 我认为最好立即纠正此问题 所以我做了一些研究
  • ORDER BY id 或 date_created 显示最新结果?

    我有一个表 实际上有几个 我想首先从中获取最新条目的结果 这是我的ORDER BY条款选项 date created INT 从不改变值 id 当然是INT AUTO INCRMENT 两列应同等地代表记录插入的顺序 我自然会使用date
  • python 没有名为serial的模块

    我的 python 程序有问题 我编写了程序来将数据 温度 从 arduino 获取到我的树莓派 sqlite 数据库 但它在第 4 行 导入串行 处给了我一个错误 提示 ImportError 没有名为串行的模块 我使用 python3

随机推荐

  • WPF:ItemsControl 中的行和列

    我试过把两个孩子ListView and an ItemsControl在行和列中 通过设置网格RowDefinitions and ColumnDefinitions as the ItemsPanel财产 然而 当我输入时 子控件始终与
  • 根据 XSD 验证 XML 时出错

    我有一个简单的 XML 文件 我想根据 XSD 对其进行验证 当我使用一些随机验证器进行验证时 我总是收到以下错误 发现从元素 Entities 开始的无效内容 预期为 Entities 之一 这是 XML
  • 如何确定与 read.fwf 一起使用的正确文件编码(或使用解决方法来删除不合格的字符)

    我尝试了以下问题中的方法 但仍然陷入困境 如何检测 read csv 的正确编码 https stackoverflow com questions 4806823 how to detect the right encoding for
  • 如何保护资产文件夹中的数据库 sqlite(通过加密)?

    我有过逆向工程的经验 人们可以在android中安静流畅地访问你的数据库 我想知道有什么方法可以在创建时仅对我的数据库进行加密 而不是混淆整个apk 然后在运行时我将使用我的数据库 我对数据库的了解较少 因此任何建议都有助于保护资产文件夹中
  • 防止 LISP 中的终端输出

    我想运行一个函数 但不让它在终端中输出结果 例如 set A B 正常返回B在控制台中如下所示 gt gt gt set A B B gt gt gt A B 我不希望它返回任何东西 我仍然希望该函数能够完成它应该做的事情 只是默默地 gt
  • 良好的 javascript 参考 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 什么是一本好的 javascript 书籍或网站 不仅关注语法 而且很好地解释了 javascript
  • ld 链接问题:/usr/bin/ld: 找不到 [libraryname]

    我使用 Qmake 在 Ubuntu 9 10 上构建共享库 此共享库 A 依赖于另一个共享库 B B项目已成功建设 在项目 A 的 pro 文件中 我的 LIBS 变量如下所示 LIBS L datelib bin llibdatelib
  • 如何捕获 SOAP Webservice 方法中的任何异常?

    我提供一个SOAP WebMethod using Spring and CXF 我想捕获任何异常 已检查和未检查 并将它们转换为自定义 WebFault 我可以以某种方式为我的错误处理程序 拦截器分配一个错误处理程序 拦截器吗 WebSe
  • 如何在 JAXB 封送期间添加 XML 处理指令

    每当序列化集合 数组属性以获得类似的内容时 我想添加处理指令
  • EventHandler 和 SinkEvent 是否执行相同的功能工作?

    我正在使用 GWT 我开始通过添加事件处理程序向我的小部件添加事件 事件处理程序示例代码 widget addClickHandler new ClickHandler Override public void onClick ClickE
  • 为什么 PHPexcel 在日期字段中插入单引号?

    我正在尝试使用 PHPExcel 将日期插入单元格 这是我的代码 include xlsx Classes PHPExcel php include xlsx Classes PHPExcel Calculation php include
  • Git 签出到特定目录

    所以 目前我正在努力合并两个分支 A and B 我正在合并到分支B 但我已将项目重组到不同的目录中 并且想做一个git checkout A path fileToGet各种各样的 意图是覆盖 但是变成了我的分支中的不同目录 为了保留文件
  • 解析 2 位数年份:使用未知日期模式设置基准日期

    用户将以不同模式输入日期到我的应用程序 对于两位数年份 他还必须确定枢轴日期 Example 图案 yy MM dd基准日期 70 我以编程方式添加当前千年和上个世纪以获得更多动态 gt 1970 69 04 22变成2069 04 22
  • 在没有“应用程序许可”的情况下获取访问者的 Facebook 信息——Yelp 是如何做到的?

    好的 我花了几个小时仔细研究有关 xFBML Open Graph 等的分散的 FB 文档 其中大部分似乎已被弃用 无论如何 当访问者访问我的网站 假设他们已经登录 FB 时 我试图获取他们的 Facebook 用户 ID 或姓名 图片或其
  • 连接 JSONArray

    我在用JSON数组 http www json org javadoc org json JSONArray html在下面org json包裹 我的第一个 JSONArray 是这样的 249404 VPR249404 249403 VP
  • C++ 中的作用域和返回值

    我重新开始使用 c 并正在考虑变量的范围 如果我在函数内有一个变量 然后我返回该变量 那么该变量在返回时不会因为它所在的作用域已结束而 死亡 吗 我已经尝试过使用返回字符串的函数 它确实有效 谁能解释一下吗 或者至少给我指出一些可以向我解释
  • 使用自适应布局的 UILabel 的不同字体大小

    在 Xcode 6 中 我们有一个称为自适应布局的新功能 通过使用它 我创建了一个新项目 在其中我需要根据布局具有不同的字体大小 在 iPhone 3 5 英寸屏幕中 我必须将字体大小设置为 17pt 而 iPhone 中的其他屏幕大小必须
  • 让 Grails 监听外部 IP 地址

    我启动了一个 Grails 应用程序来侦听默认端口 8080 并以 root 身份运行 grails 以侦听端口 80 grails Dserver port 80 run app 这在本地主机上运行得很好 但是当我从外部 IP 地址访问它
  • 动态获取 docker-compose 创建的正在运行的容器名称

    当我运行 docker compose 时 它 会创建一个 Web 容器和 postgres 容器 我想通过类似的方式手动触发我的 Django 测试运行 docker compose run web python manage py te
  • 对于系统文本的多语言支持 x 种语言来说,这是一个很好的设计吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 这个实现的扩展性是否良好 要求是 系统必须支持x种语言 其中 x will 企业可以翻译的尽可能多的语言 所有系统维护的值 页面内容 电子邮件内