处理语言识别

时间:2011-04-14 15:21:56

标签: php mysql sqlite database-design

在多语言网站中,我应该使用数字或关键字来引用该语言吗?

例如,假设英国人从服务列表中选择服务,服务列表将使用英语,而如果西班牙人从服务列表中选择,则列表将采用西班牙语。

服务列表是从数据库中的表中选择的,每个服务都有唯一的编号来标识它,以及用什么语言来标识服务的编写方式。 我问的是,哪个更好。使用数字来识别语言,还是使用语言代码?

示例:

假设的服务表:

id | service_id | service | lang
------------------------------------
0  | cooking    | 1       | en
1  | driving    | 2       | en
2  | singing    | 3       | en
3  | running    | 4       | en
4  | cocinar    | 1       | es
5  | conducir   | 2       | es
6  | cantar     | 3       | es
7  | correr     | 4       | es

VS

id | service_id | service | lang
------------------------------------
0  | cooking    | 1       | 1
1  | driving    | 2       | 1
2  | singing    | 3       | 1
3  | running    | 4       | 1
4  | cocinar    | 1       | 2
5  | conducir   | 2       | 2
6  | cantar     | 3       | 2
7  | correr     | 4       | 2

我给每种语言提供数字ID

我可以看到语言代码方法使数据库更具人性化可读性,但是为什么服务器无论如何处理它都真的很重要,其中数字对于服务器来说更容易,但是我必须为每个数字提供一个数字语言。

您认为哪种方法更好,为什么?

2 个答案:

答案 0 :(得分:2)

我几乎总是将这些事情规范化,但由于以下原因,这可能是一种罕见的例外:

  1. nchar(2)列只占用4个字节,与int列相同。因此,性能不应受到影响,特别是如果您将coalation设置为序数。

  2. 双字符语言代码符合国际标准,不太可能改变。因此,大规模更新不应成为问题。

  3. 因此,规范化的论据并不适用于这种情况。

答案 1 :(得分:1)

有一个ISO standardized set of language codes。我只是使用类似示例1的那些。你应该有一个辅助表,列出了长拼写版本的短2/3数字代码。