Typo3 9.x:多语言-内容后备无法正常工作?

时间:2018-09-26 10:27:11

标签: typoscript multilingual typo3-9.x

我在Typo3 9.4上遇到问题(我不得不承认这是我尝试设置的第一个Typo3 9页面,其中包含多种语言):

如果所选语言中没有内容,我希望将内容回退到默认语言。 这是我的TypoScript:

config {
        linkVars = L
        sys_language_uid = 0
        language = en
        locale_all = en_US.UTF-8
        sys_language_overlay = 1
        htmlTag_setParams = lang="en" dir="ltr" class="no-js en-selected"
}
[globalVar = GP:L = 1]
config {
        sys_language_uid = 1
        sys_language_mode = content_fallback;0
        language = de
        locale_all = de_DE.UTF-8
        htmlTag_setParams = lang="de" dir="ltr" class="no-js de-selected"
}
[global]
[globalVar = GP:L = 2]
config {
        sys_language_uid = 2
        sys_language_mode = content_fallback;0
        language = es
        locale_all = es_ES.UTF-8
        htmlTag_setParams = lang="es" dir="ltr" class="no-js es-selected"
}
[global]

这些语言在站点管理中也是不合法的。这是生成的config.yaml:

rootPageId: 1
base: /
baseVariants: {  }
languages:
  -
    languageId: '0'
    title: English
    navigationTitle: English
    base: /
    locale: en_US.UTF-8
    iso-639-1: en
    hreflang: en-US
    direction: ''
    typo3Language: default
    flag: global
    enabled: true
  -
    languageId: '1'
    title: Deutsch
    navigationTitle: Deutsch
    base: /de/
    locale: de_DE.UTF-8
    iso-639-1: de
    hreflang: de-DE
    direction: ''
    typo3Language: de
    flag: de
    fallbackType: fallback
    fallbacks: '0'
    enabled: true
  -
    languageId: '2'
    title: Spanisch
    navigationTitle: Spanisch
    base: /es/
    locale: es-ES.UTF-8
    iso-639-1: es
    hreflang: es-ES
    direction: ''
    typo3Language: default
    flag: es
    fallbackType: fallback
    fallbacks: '0'
    enabled: true
errorHandling: {  }
routes: {  }

我的主页上有英文内容,德语和西班牙文为空。但是,当我更改为德语时,页面上没有(英语)内容。有趣的有两点:菜单为德语,因此可以识别其他语言,但是在html源代码中,html-tag如下所示:

<html lang="en" dir="ltr" class="no-js en-selected"> 

但是这被定义为默认值。我认为,这种状况没有任何作用。任何想法我的思维或编码有问题吗?

2 个答案:

答案 0 :(得分:0)

Typo3 9.5不再支持Linkvar L,因此您需要从以下位置更改条件

[globalVar = GP:L = 2]

#condition on localE in site management language tab
[siteLanguage = locale = de_DE.UTF-8]

站点管理Yaml文件看起来不错

答案 1 :(得分:0)

我正在将网站从8.7.x升级到9.5.x。据我了解,您根本不需要TypoScript部分。语言回退的所有设置都在站点配置中完成。 TYPO3 9.5.x(我仅尝试过这些版本)中仍有两个错误与语言回退有关:

  • 内容元素的Fallback不起作用:当您更改为西班牙语/德语页面(请参阅您的语言设置)时,该页面已经存在没有本地化(西班牙语/德语)内容元素的本地化页面,英文内容元素的输出符合预期。您必须应用错误修复。在此处查看相关问题herebugfix
  • 通过您的网站设置,您还将受到其他错误的影响,该错误将在没有针对德语/西班牙语的本地化页面时发生。当您选择德语/西班牙语作为语言,然后单击一个链接导致页面上没有德语/西班牙语本地化页面元素的链接时,您将收到404错误,而不是预期的英语页面内容。据我所知,没有针对该问题的错误修正有效。 This bugfix对我不起作用。希望不久将有针对此问题的错误修正。只要没有错误修正,一种解决方案是为每种页面和语言创建本地化的页面。另一个选项是为所有受影响的页面创建静态路由,例如:route:de / english-slug-of-page,键入:uri,来源:https://yoursite/english-slug-of-page。第二种解决方案的缺点在于,它也会将所选语言也更改为英语。当您的站点上有很多未翻译的页面时,这两个选项都不是很方便。与该错误相关的问题,请参见here