当用户浏览某个页面然后切换语言时,应执行以下操作:
例如,用户浏览/about-us
页面然后他切换到德语,如果存在德语/uber-uns
的翻译,则应将其重定向到/about-us
。
目前我有这样的结构,
CREATE TABLE `pages` (
`id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT
`language` varchar(3),
`urlSegment` varchar(250),
`content` TEXT
) DEFAULT CHARSET=UTF8;
应该添加哪些关系/列来实现这一目标?
答案 0 :(得分:3)
一个页面可以有多个翻译,因此您需要一对多的关系架构:
CREATE TABLE pages (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT
);
CREATE TABLE page_translations (
page_id INT NOT NULL
language varchar(3),
url_segment varchar(250) UNIQUE,
content TEXT,
FOREIGN KEY (page_id) REFERENCES pages(id),
PRIMARY KEY(page_id,language)
) DEFAULT CHARSET=UTF8;
在pages
表中,您可以存储与页面的所有翻译相关的一些有用数据。
然后,在了解当前页面的url_segment
后,您可以轻松地以其他语言获取此页面的url_segment
:
SELECT new.url_segment
FROM page_translations AS new,
page_translations AS cur
WHERE new.page_id = cur.page_id
AND cur.url_segment = '/about-us'
AND new.language = 'de'