我有一个TYPO3网站,默认的网站语言是德语。不久前,我添加了另一种网站语言,即英语。
我现在需要做的是在后端交换这两种语言:
发自:
至:
因此,在后端,当我创建一个新的内容元素时,默认语言是英语。
发布于 2011-12-17 03:45:35
在TYPO3s本地化概念中,默认语言被认为是原始语言,驻留在数据库表pages中。其他语言是原始语言的翻译,驻留在表pages_language_overlay中。因此,您不能简单地将默认值切换到一种已翻译的语言。
更改新内容的默认语言本身并不困难,但您将得到所有标记为"english“的现有德语内容,因此您需要用一些mySQL技巧重新分配内容元素。如果您不关心您现有的内容,只需省略步骤3& 4。
步骤1:
在对数据库进行更改之前,请确保备份相关数据,至少要备份表pages、pages_language_overlay和tt_content。
步骤2:
假设英语是id 1(sys_language_uid = 1)的语言:
后台是德语的创建一个新的语言条目。如果您过去没有定义任何其他语言,那么它将被认为是'sys_language_uid = 2‘
步骤3:
将默认语言元素更改为新语言“德语”(在mySQL /phpMyAdmin中):
UPDATE tt_content SET sys_language_uid = 2 WHERE sys_language_uid = 0
步骤4:
将原英语语言元素更改为新的默认语言:
UPDATE tt_content SET sys_language_uid = 0 WHERE sys_language_uid = 1
步骤5:
然后,如果您愿意,通过在根页面的页面属性中输入以下内容,更改后端的语言标签:
mod.SHARED {
defaultLanguageFlag = gb
defaultLanguageLabel = English
}步骤6:
记住也要为前端更改所有的language_uids (例如,语言菜单):config.sys_language_uid = 2 (如果它以前是德语的)。这可能会导致一些死气沉沉的链接,如果做不好。
步骤7:
删除英语的替代语言记录
结论:
取决于涉及到多少其他扩展(例如realURL),这个任务可能不值得花时间在它上。我希望核心开发人员在未来能找到一个更简单的解决方案。
发布于 2013-04-16 20:22:06
人们也可能想要切换页面标题。做以下事情:
UPDATE pages, pages_language_overlay
SET pages.title = pages_language_overlay.title,
pages.subtitle = pages_language_overlay.subtitle,
pages.nav_title = pages_language_overlay.nav_title,
pages.tx_realurl_pathsegment = pages_language_overlay.tx_realurl_pathsegment
WHERE (pages.uid = pages_language_overlay.pid)
AND (pages_language_overlay.sys_language_uid = 1);发布于 2016-10-02 04:03:15
我在这里找到了一个很好的解决方案,没有失去任何't3_origuid‘。
当前设置:德语是默认语言,英语语言第一:清除所有的删除条目:
delete from tt_content where deleted = 1;德语内容变化的sys_language_uid (从0到10):
update tt_content set sys_language_uid=10 where sys_language_uid=0;英语变化的sys_language_uid (从1到0):
update tt_content set sys_language_uid=0 where sys_language_uid=1;德国的sys_language_uid改为1(从10改为1):
update tt_content set sys_language_uid=1 where sys_language_uid=10;为德语条目设置新的l18n_parent:
UPDATE tt_content as c1
RIGHT JOIN tt_content as c2 on c2.l18n_parent=c1.uid
SET c1.l18n_parent=c1.uid,c1.t3_origuid=c1.uid
WHERE c1.sys_language_uid=1
AND c2.sys_language_uid=0;更改德语条目的uid (>超过大多数当前内容ID!):
UPDATE tt_content as c1
RIGHT JOIN tt_content as c2 on c2.l18n_parent=c1.uid
SET c1.uid=c2.uid+10000
WHERE c1.sys_language_uid=1
AND c2.sys_language_uid=0;将英语设置为德语所在的ID:
UPDATE tt_content
SET uid=l18n_parent where sys_language_uid=0 and l18n_parent>0;再换一次德国的uid
UPDATE tt_content
SET uid=uid-10000 where sys_language_uid=1 and uid>10000;清理
UPDATE tt_content
SET l18n_parent=0,t3_origuid=0,l18n_diffsource=''
where sys_language_uid=0 and l18n_parent>0;转移某些已转移的字段:
UPDATE tt_content as c1
RIGHT JOIN tt_content as c2 on c2.l18n_parent=c1.uid
SET c1.hidden=c2.hidden,
c1.starttime=c2.starttime,
c1.endtime=c2.endtime
WHERE c1.sys_language_uid=0
AND c2.sys_language_uid=1;PAGES:从表页创建一个副本,例如pages_new:
然后第1步:
update pages left join pages_language_overlay on pages.uid=pages_language_overlay.pid set pages.title=pages_language_overlay.title, pages.subtitle=pages_language_overlay.subtitle, pages.description=pages_language_overlay.description, pages.keywords=pages_language_overlay.keywords, pages.abstract=pages_language_overlay.abstract, pages.nav_title=pages_language_overlay.nav_title where pages_language_overlay.sys_language_uid=1;第2步:
update pages_language_overlay right join pages_new on pages_language_overlay.pid=pages_new.uid set pages_language_overlay.title=pages_new.title, pages_language_overlay.subtitle=pages_new.subtitle, pages_language_overlay.description=pages_new.description, pages_language_overlay.keywords=pages_new.keywords, pages_language_overlay.abstract=pages_new.abstract, pages_language_overlay.nav_title=pages_new.nav_title where pages_language_overlay.sys_language_uid=1;在这里发现的在这里输入链接描述
https://stackoverflow.com/questions/8491587
复制相似问题