用于翻译的 MySQL 结构

标签 mysql database multilingual

根据这种方法,默认语言在第一个表中已翻译。如果用户不需要翻译,他就不会纠结。只需连接主表,仅此而已...

产品表(InnoDB):

 Obj_id(PK)             name                    desc
 ---------      -------------------     ------------------
     1          Million Dollar Baby    Short description is...
     2          Music Album            Another explanation...

转换表(InnoDB)

 trans_id (PK)    Obj_id (FK)   lang      field              trans
--------------   -----------   ------    --------    ---------------------
      22              1          TR        name       Milyonluk Bebek
      23              1          BA        name       Djevojka od milijun...
      24              1          TR        desc       Kisa açiklama burada
      25              1          BA        desc       Kratki opis je ovdje
      26              2          BA        name       Glazba albuma

但是当管理员想要更改默认语言时会出现问题。我有两种选择来解决这个问题:

  1. 管理员必须在项目开始时决定 default_lang,如果他以后仍想更改 default_lang,程序会说:见鬼去吧

  2. 与第一个解决方案一样,管理员必须首先决定 default_lang,但系统将能够将新的 default_lang 数据从翻译表传输到主表(我实际上没有这样做)。

我认为我的解决方案不够好。

关于更改或不更改结构的 DEFAULT_LANG 问题,您是否有更好的想法(如果可能,请不要更改结构 - 我喜欢它)?

最佳答案

我想知道每种语言都有一个表格会不会更好。这样您就可以切换正在使用的表。

TRANSLATIONS_TR
TRANSLATIONS_EN
TRANSLATIONS_FR
TRANSLATIONS_BR

然后在您的用户显示例程中,您决定在显示翻译文本时查询哪个表。

关于用于翻译的 MySQL 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5949642/

相关文章:

C# 与 Access 数据库出现插入语法错误

java - 在 Java 中,为什么 ResultSet 不允许运行 next() 超过 1 次?

java - 当文本包含多种语言时,带有 Blob 的 JPA native 查询将 Blob 结果转换为问号

mysql - wercker.com 连接到 MySQL 数据库

php - PDO MYSQL 插入语句不起作用(未给出错误)

php - 如何安全地将个人 Mac OS X 10.9.2 连接到实时服务器数据库以进行表格数据处理?

excel - 将 boolean 自动过滤条件应用于不同的语言

html - 如何在 'direction ltr' 段落中强制一段文本为 'direction rtl'

android - 在不重新发布应用程序的情况下在 android 中添加新语言

php - 如何在mysql数据库中插入一个php代码片段