根据这种方法,默认语言在第一个表中已翻译。如果用户不需要翻译,他就不会纠结。只需连接主表,仅此而已...
产品表(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
但是当管理员想要更改默认语言时会出现问题。我有两种选择来解决这个问题:
管理员必须在项目开始时决定 default_lang,如果他以后仍想更改 default_lang,程序会说:
见鬼去吧
。与第一个解决方案一样,管理员必须首先决定 default_lang,但系统将能够将新的 default_lang 数据从翻译表传输到主表(我实际上没有这样做)。
我认为我的解决方案不够好。
关于更改或不更改结构的 DEFAULT_LANG 问题,您是否有更好的想法(如果可能,请不要更改结构 - 我喜欢它)?
最佳答案
我想知道每种语言都有一个表格会不会更好。这样您就可以切换正在使用的表。
TRANSLATIONS_TR
TRANSLATIONS_EN
TRANSLATIONS_FR
TRANSLATIONS_BR
然后在您的用户显示例程中,您决定在显示翻译文本时查询哪个表。
关于用于翻译的 MySQL 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5949642/