我有一个3种语言的网站。
构建数据库的最佳方式是什么?
1)创建3个表,每种语言一个(例如,Product_en, Product_es, Product_de),并从表中检索具有标识符的数据:
。在php页面我有一个字符串:
$language = 'en'
所以我只得到数据
SELECT FROM Product_$language
创建1个表ID LANGUAGE NAME DESCR
并且只在页面上发布
WHERE LANGUAGE = '$language'
创建1个表ID NAME_EN DESCR_EN NAME_ES DESCR_ES NAME_DE DESCR_DE
谢谢!
我宁愿选择第二个选项。
对于我来说,第一个选项似乎不够灵活,无法搜索记录。如果你需要搜索两种语言怎么办?你能做的最好的方法就是把两个SELECT
语句的结果加到UNION
中。第三个似乎有数据冗余。感觉好像每个名字都需要一种语言。
第二个非常灵活和方便。你可以做任何你想做的操作,而不需要添加一些特殊的方法,除非你想透视记录。
我会选择第一个或第二个选项。具体是哪一种取决于您的应用程序以及您计划如何访问数据。当我在过去做类似的本地化时,我使用的是单表方法。
我对这种方法的偏好是,如果您添加额外的本地化,则根本不需要更改DB模式。在这种情况下,您也不需要更改相关代码,因为语言标识符只是成为查询中使用的另一个值。
那样的话,您将在短时间内杀死数据库。
就像这样做一个表:
TABLE languages with fields:
-- product name
-- product description
-- two-letter language code
这将允许你,不仅有一个更好的结构化数据库,但你甚至可以有只有一个翻译的产品。如果你愿意,你甚至可以在没有指定其他语言的情况下显示默认语言。当然,你可以通过编程来实现,但我想你已经明白了。