更新:几年后我遇到了这个问题:现在我知道这是一种非常糟糕的方法。请不要使用这个。您始终可以为 i18n 使用附加表(例如products
and products_lang
),为每个区域设置单独的条目:更好的索引,更好的搜索等。
我正在尝试在 MySQL/PHP 站点中实现 i18n。
我已经阅读了“i18n 通常不是数据库的一部分”的答案,我认为这是一种狭隘的方法。产品名称怎么样,或者像我的例子一样,存储在数据库中的菜单结构和内容呢?
我想知道您对我的方法有何看法,考虑到语言应该是可扩展的,所以我试图避免“每种语言解决方案一个栏目”。
一种解决方案是使用要翻译的字符串的引用 (id),并且每个可翻译列都有一个包含主键、字符串 id、语言 id 和翻译的表。
我认为的另一个解决方案是使用 JSON。因此,我的数据库中的菜单条目如下所示:
idmenu label
------ -------------------------------------------
5 {"en":"Homepage", "it":"pagina principale"}
您如何看待这种方法?