我有一个网站有两种语言,例如德语和英语。De是我的默认语言,没有路径前缀。En,第二种语言,在url中有/en/ as前缀。现在,当我切换到en语言时,菜单项链接在url中有/en/,这很好。但是当我点击一个菜单项时,这并不是在后端显式翻译的,然后我得到一个404错误。我不能说这种行为是错误的,因为在我创建一个页面之前,没有包含这个插件路径的页面。但是我该怎么做呢?为每个页面创建一个翻译,如果已经有数百个页面,这是没有帮助的。是否没有回退(不是内容回退、页面回退)?
站点配置
rootPageId: 2
base: 'http://some-domain.de/'
baseVariants: { }
languages:
-
title: 'Meine tolle Webseite'
enabled: true
languageId: '0'
base: /
typo3Language: de
locale: de_DE.UTF-8
iso-639-1: de
navigationTitle: ''
hreflang: ''
direction: ''
flag: de
-
title: 'Andere Sprache'
enabled: true
languageId: '1'
base: /en/
typo3Language: en
locale: en_US.UTF-8
iso-639-1: en
navigationTitle: ''
hreflang: ''
direction: ''
fallbackType: fallback
fallbacks: '0'
flag: en
errorHandling: { }
routes: { }
routeEnhancers:
PageTypeSuffix:
type: PageType
default: .html
map:
.html: 0
发布于 2018-12-15 07:24:18
存在一个与内容回退相关的开放错误:
https://forge.typo3.org/issues/86762
也许可以尝试升级到9.5.3 (不知道这个问题是否已经修复)。
解决方法:是否要删除英文菜单中未翻译的页面?
然后,您可以为所有页面设置“如果当前语言不存在翻译,则隐藏页面”。此复选框可用于选项卡"language“下的每个页面。
要对所有现有页面执行此操作,请执行以下操作:
UPDATE pages SET l18n_cfg = 2
要为新创建的页面自动设置此标志:在您的扩展中创建一个覆盖pages.php。
typo3conf/ext/[YOUR_EXTENSION]/Configuration/TCA/Overrides/pages.php
并添加l18n_cfg的默认值
$GLOBALS['TCA']['pages']['columns']['l18n_cfg']['config']['default'] = 2;
发布于 2019-01-31 17:23:08
另一种解决方法是创建静态路由,而不是为每个页面创建转换。例如:
route: de/english-slug-of-page
type: uri
source: https://yoursite/english-slug-of-page.
虽然不是很方便的解决方案。它的缺点是路由到英语页面将更改所选的语言(在示例中从德语到英语)。
在TYPO3 9.5.4中仍未修复此问题。
发布于 2019-02-15 16:44:30
这应该是对Steffen Mächtel回答的评论,但我没有足够的声誉。
如果要在没有转换时将所有页面都隐藏(在菜单内)存档,可以在模块设置->配置安装范围选项-> FE下设置全局设置(您将在安装工具中找到相同的设置)。这种方法稍微简单一点:)
https://stackoverflow.com/questions/53763611
复制相似问题