2

我有一个网站,有两种语言,例如 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
4

3 回答 3

1

有一个与内容回退相关的开放错误:

https://forge.typo3.org/issues/86762

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

解决方法:您要删除英文菜单中未翻译的页面吗?

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

要对所有现有页面执行此操作:

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;
于 2018-12-14T23:24:18.067 回答
-1

另一种解决方法是创建静态路由,而不是为每个页面创建翻译。例如:

route: de/english-slug-of-page
type: uri
source: https://yoursite/english-slug-of-page. 

虽然不是很方便的解决方案。它的缺点是路由到英语页面会改变所选语言(在示例中从德语到英语)。

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

于 2019-01-31T09:23:07.843 回答
-1

这应该是对 Steffen Mächtel 答案的评论,但我没有足够的声誉-.-。

如果您想要在没有翻译时隐藏所有页面(在菜单内)的存档,您可以在 Module Settings -> Configure Installation-Wide Options -> [FE][hidePagesIfNotTranslatedByDefault] 下设置全局设置(< TYPO3 9 你会发现安装工具中的相同设置)。这种方式比较简单:)

于 2019-02-15T08:44:30.430 回答