php - 制作翻译表的正确方法?

标签 php mysql sql translation

我们目前使用的转换表如下所示:

|  id | type  | name     | lang  |  value   | 
|-----+-------+----------+-------+----------|
| 853 | text  | question |  en   | question |
| 854 | text  | question |  nl   |  vraag   |

因此,对于另一种语言的每个额外翻译,我们都必须添加另一行

我们正在考虑将其更改为一个表,其中每个国家/地区值都有一列(因此您只需要添加 1 行)。

所以它看起来像这样:

| id  | type  | name     | lang  |  nl     |  en        |
|-----+-------+----------+-------+---------+------------+
| 853 | text  | question |  en   |  vraag  | question   |
  • 与第一种方法相比,第二种方法有什么缺点吗? 第一?
  • 您建议如何创建一个翻译表,例如 这个?

最佳答案

为什么不连接两个表,主表包含 id,type,name 字段并嵌套 id,master_id,lang,value。对于给定的示例,如下所示:

ID      TYPE     NAME
 1      text     question

ID      MASTER_ID      LANG        TRANSLATION
 1      1              en          question
 2      1              nl          vraag

一种语言的翻译集由 SQL 查询给出:

SELECT * FROM `nested` WHERE `lang` = 'nl'
-- vraag
-- .....

给定术语的翻译(例如问题,具有id=1):

SELECT * FROM `nested` WHERE `master_id` = 1 AND `lang` = 'nl' 
-- vraag

关于php - 制作翻译表的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24805597/

相关文章:

mysql - 在 mysql shell 中显示没有表格行的查询结果(非表格输出)

php - 如何在 Laravel Lumen 8 中设置响应 cookie

Php递归方法获取产品

javascript - jQuery setTimeout 在值发布时刷新

php - 打破包含

Mysql 查询检索关系表中缺失的组合

php - 如何在数据库中保存为文本类型时比较日期

php - 显示包含 2 个输入字段条件的表格

sql - 使用 LIKE 在 MySQL 中查找重复记录

sql - SQL创建表在列使用%type