所以,我正在Laravel 9.x上构建多语言网络商店。我正在为我的项目创建数据库结构,并且我在需要实现几种语言的地方。
这是我的想法
我创建了结构:
ID : 1
标题 : [ { "en" : "Title"}, { "fr" : "Titre" } ]
内容:[ { "en" : "Content"}, { "fr" : "Contenu"} ]
我将这样的数据:
echo json_decode($data, true)['en']['title'];
现在我想知道,如果性能(每种语言的内容约为7k个字符)将比以下解决方案差得多:
ID:1
Title_En:"Title"
Title_Fr:"Titre"
Content_En:"Content"
Content_Fr:"Contenu"
不要这样构造。而不是:
CREATE TABLE Xlations (
xlation_id SMALLINT UNSIGNED NOT NULL,
language CHAR(2) eg "en" or maybe CHAR(5) eg "fr_ca"
title...
content...
PRIMARY KEY(language, xlation_id)
) ENGINE=InnoDB;
在某些地方,您需要分配新的id,因为一个xlation_id将用于给定标题/内容的所有语言。
我猜查找将类似于
SELECT content FROM xlations
WHERE language = 'es' -- Probably set when the user logs in
AND xlation_id = 17; -- a constant based on context