【问题标题】:Typo3 9.x: Multi-Language - Content Fallback not working?Typo3 9.x:多语言 - 内容回退不起作用?
【发布时间】:2019-03-02 02:29:44
【问题描述】:

我对 Typo3 9.4 有疑问(我不得不承认这是我尝试设置的第一个包含多种语言的 Typo3 9 页面):

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

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"> 

但这被定义为默认值。我认为,条件没有任何影响。任何想法我的思维或编码有什么问题?

【问题讨论】:

    标签: typoscript multilingual typo3-9.x


    【解决方案1】:

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

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

    【讨论】:

    • 我提交了一个补丁,它应该可以解决由于缺少翻译而出现 404 错误的问题,尽管有备用配置选项 forge.typo3.org/issues/86595
    • @KevinDitscheid,刚刚测试了你的补丁,它适用于我的安装 (TYPO3 9.5.4) 以及 CE 回退的错误修复。感谢您提供错误修复!希望这两个错误修复都将包含在下一个 TYPO3 版本中!
    【解决方案2】:

    typo3 9.5 不再支持 Linkvar L,因此您需要更改您的条件

    [globalVar = GP:L = 2]
    

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多