You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Typo3非默认语言无isoCodeA2,语言菜单插件无法显示旗帜

解决sr_language_menu非默认语言旗帜不显示的问题

我之前碰到过一模一样的情况,核心问题在于非默认语言的ISO两位代码(isoCodeA2)没有和TYPO3系统语言记录正确关联,导致sr_language_menu插件拿不到有效代码生成正确的旗帜路径。结合你用的TYPO3 9.5.18 + Docker环境,按下面的步骤排查修复应该就能解决:

1. 检查并完善TYPO3后台的系统语言记录

sr_language_menu插件优先读取的是TYPO3系统语言记录里的isoCodeA2字段,不是站点配置文件的内容。你需要:

  • 登录TYPO3后台,进入系统 > 语言模块
  • 找到UID为2的语言(Deutsch_vereinfacht),点击编辑
  • 在「语言代码」区域,确保**ISO 639-1 (two-letter code)**字段填了正确的两位代码(你的场景填de就行)
  • 保存记录后,清空TYPO3所有缓存(包括页面缓存、配置缓存)

2. 修正站点配置(config.yaml)的语言字段

你的config.yaml里第二个语言的配置有几个可以优化的点,确保和系统语言记录对应上:

languages:
  # 默认语言(UID0)
  - title: Deutsch
    enabled: true
    base: /
    typo3Language: de
    locale: de_DE
    iso-639-1: de
    navigationTitle: Deutsch
    hreflang: de-DE
    direction: ""
    flag: de
    languageId: "0"
  # 非默认语言(UID2)
  - title: Deutsch_vereinfacht
    enabled: true
    base: /de/
    typo3Language: de
    locale: de_DE
    iso-639-1: de
    navigationTitle: Deutsch_vereinfacht
    hreflang: de-DE
    direction: ""
    fallbackType: strict
    fallbacks: "0"  # 注意:这里要指向默认语言UID0,之前填"2"会造成回退循环
    flag: de
    languageId: "2"
    rootPageId: 18

重点修正:

  • fallbacks字段:之前设为自身UID"2"会导致语言回退逻辑出错,改为默认语言的UID"0"才合理
  • 确保iso-639-1的值和系统语言记录里的ISO代码完全一致

3. 验证sr_language_menu的ViewHelper调用

你的ViewHelper写法没问题,也可以尝试加上flagSize参数提升兼容性:

{namespace languageMenu=SJBR\SrLanguageMenu\ViewHelpers}
<languageMenu:widget.menu languages="0,2,3" layout="Select" languageTitle="1" flagSize="small" />

4. Docker环境下强制刷新缓存

除了TYPO3后台的缓存清理,Docker环境里还可以:

  • 执行命令清除TYPO3缓存目录:rm -rf var/cache/*
  • 重启Docker容器,确保配置文件的修改被正确加载

做完这些步骤后,非默认语言的isoCodeA2应该就能被插件正确读取,旗帜也会正常显示了。

内容的提问来源于stack exchange,提问作者NakedPython

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 07:47:33