Content management system TYPO3 9.5.2 Slug:multi-language:Page not found 404异常,如果页面不存在翻译

Content management system TYPO3 9.5.2 Slug:multi-language:Page not found 404异常,如果页面不存在翻译,content-management-system,typo3,typoscript,slug,typo3-9.x,Content Management System,Typo3,Typoscript,Slug,Typo3 9.x,我有一个两种语言的网站,例如de和en。De是我的默认语言,没有路径前缀。第二种语言En在url中有/En/作为前缀。现在,当我切换到en语言时,菜单项链接的url中有/en/,这很好。但是当我点击一个菜单项,它在后端没有被显式翻译,然后我得到一个404错误。我不能说这个行为主义者是错的,因为在我创建一个页面之前,没有一个页面具有这个slug路径。但是我该怎么办呢?为每个页面创建一个翻译,如果已经有数百个页面,这是没有帮助的。是否没有回退(不是内容回退、页面回退) 站点配置 rootPageId

我有一个两种语言的网站,例如de和en。De是我的默认语言,没有路径前缀。第二种语言En在url中有/En/作为前缀。现在,当我切换到en语言时,菜单项链接的url中有/en/,这很好。但是当我点击一个菜单项,它在后端没有被显式翻译,然后我得到一个404错误。我不能说这个行为主义者是错的,因为在我创建一个页面之前,没有一个页面具有这个slug路径。但是我该怎么办呢?为每个页面创建一个翻译,如果已经有数百个页面,这是没有帮助的。是否没有回退(不是内容回退、页面回退)

站点配置

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

存在与内容回退相关的开放性错误:

也许可以尝试升级到9.5.3(不知道这是否已修复)

解决方法:是否要删除英文菜单中未翻译的页面

然后,您可以为所有页面设置“如果当前语言不存在翻译,则隐藏页面”。此复选框适用于“语言”选项卡下的每页

要对所有现有页面执行此操作,请执行以下操作:

UPDATE pages SET l18n_cfg = 2
要为新创建的页面自动设置此标志,请执行以下操作: 在扩展中创建一个overrides pages.php

typo3conf/ext/[YOUR_EXTENSION]/Configuration/TCA/Overrides/pages.php
并添加l18n_cfg的默认值

$GLOBALS['TCA']['pages']['columns']['l18n_cfg']['config']['default'] = 2;

存在与内容回退相关的开放性错误:

也许可以尝试升级到9.5.3(不知道这是否已修复)

解决方法:是否要删除英文菜单中未翻译的页面

然后,您可以为所有页面设置“如果当前语言不存在翻译,则隐藏页面”。此复选框适用于“语言”选项卡下的每页

要对所有现有页面执行此操作,请执行以下操作:

UPDATE pages SET l18n_cfg = 2
要为新创建的页面自动设置此标志,请执行以下操作: 在扩展中创建一个overrides pages.php

typo3conf/ext/[YOUR_EXTENSION]/Configuration/TCA/Overrides/pages.php
并添加l18n_cfg的默认值

$GLOBALS['TCA']['pages']['columns']['l18n_cfg']['config']['default'] = 2;

另一个替代为每个页面创建翻译的解决方法是创建静态路由。 例如:

route: de/english-slug-of-page
type: uri
source: https://yoursite/english-slug-of-page. 
虽然不是很方便的解决方案。它的缺点是,路由到英文页面会改变所选语言(在本例中,从德语到英语)


TYPO3 9.5.4中仍然没有解决此问题的方法。

另一种替代为每个页面创建翻译的方法是创建静态路由。 例如:

route: de/english-slug-of-page
type: uri
source: https://yoursite/english-slug-of-page. 
虽然不是很方便的解决方案。它的缺点是,路由到英文页面会改变所选语言(在本例中,从德语到英语)


在TYPO3 9.5.4中仍然没有解决这个问题。

这里应该是对Steffen Mächtel回答的评论,但我没有足够的声誉


如果您希望在没有翻译时隐藏所有页面(在菜单内),可以在“模块设置”->“配置安装范围选项”->[FE][HIDEPAGESIFNOTTRANSTEDBYDEFAULT](这里应该是对Steffen Mächtel回答的评论,但我没有足够的声誉


如果您希望在没有翻译时隐藏所有页面(在菜单内),可以在“模块设置”->“配置安装范围选项”->[FE][HIDEPAGESIFNOTTRANSTEDBYDEFAULT](谢谢你的解决方法,我会试试。9.5.3似乎没有解决这个问题,希望下一个版本能解决。谢谢你的解决方案,我会试试的。9.5.3似乎没有解决这个问题,希望下一个版本能解决。