PHP& MySQL - 处理不同数据库语言内容的最佳方式

时间:2011-07-26 18:34:11

标签: php mysql database-design internationalization

问题如下:处理不同数据库语言内容的最佳方法是什么?假设您的购物车的产品可能有多种语言,那么构建数据库方案的最佳方法是什么?

干杯!

2 个答案:

答案 0 :(得分:4)

我会在表格中存储一个唯一的翻译密钥,然后有另一个表格或翻译文件,以便您可以从密钥中引用翻译。

product

id: 15
name: product.foo_widget
attr: ...
... etc

translation

lang: en
key: product.foo_widget
trans: Foo Widget

答案 1 :(得分:2)

将当前用户的语言作为用户对象的属性(或用于用户跟踪的任何模式)。当您在数据库中查询字符串时,添加条件以拉出当前用户的语言(如果可用)。

在这个例子中,我把language_id放在$_SESSION;我通常不会以这种方式进行用户跟踪,但我相信这个概念已经说明了。在您的数据库中,每种产品对每种语言都有多个条目,其中0表示站点的默认值(可能是英语)。如果没有特定于语言的项目,查询将获取特定于语言的订单项或回退到网站默认值。

// the id of the item you're after
$item_id = 1;
$sql = 'SELECT id, name FROM product_names WHERE item_id = '.$item_id.' AND (language_id = '.$_SESSION['user']['language'].' OR language_id = 0) ORDER BY language_id DESC LIMIT 1';

我对网站周围的一般字符串使用相同的概念 - 我有一个名为“content_strings”的数据库表,其中包含字段id,text和language_id。