多语言在线商店-最佳实践



所以,我正在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

最新更新