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

如何通过TypoScript实现仅显示单一目标语言的切换链接?

实现单语言切换链接的TypoScript方案

嘿,这个需求我刚好处理过,给你分享一个简单直接的TypoScript方案,完美实现只显示当前语言之外的另一种语言链接的效果:

核心思路

利用TYPO3的语言菜单特性,动态排除当前浏览的语言,只渲染剩下的那个语言的跳转链接。假设你的站点配置了两种语言:法语(UID=0)和德语(UID=1),以下是完整配置:

lib.languageSwitcher = HMENU
lib.languageSwitcher {
    # 声明这是一个语言菜单
    special = language
    # 指定需要包含的语言UID(根据你的实际配置调整)
    special.value = 0,1
    # 关键配置:动态排除当前正在浏览的语言
    special.excludeUidList = current:language

    # 定义菜单渲染样式
    1 = TMENU
    1 {
        NO {
            # 给链接添加自定义包裹标签(方便CSS美化)
            linkWrap = <div class="lang-switch">|</div>
            # 显示语言的本地化名称(比页面标题更直观)
            stdWrap.cObject = TEXT
            stdWrap.cObject {
                data = page:sys_language_uid
                replace {
                    10 {
                        search = 0
                        replace = LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:lang.fr
                    }
                    20 {
                        search = 1
                        replace = LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:lang.de
                    }
                }
                stdWrap.htmlSpecialChars = 1
            }
        }
        # 因为已经排除了当前语言,所以不需要激活状态样式
        ACT = NO
    }
}

关键配置说明

  • special.excludeUidList = current:language:这行是核心,它会自动获取当前页面的语言UID,并从菜单中排除,确保只显示另一种语言的链接
  • 本地化语言名称:通过LLL:调用TYPO3核心的语言文件,保证显示的语言名称准确且支持多语言
  • 样式自定义:你可以修改linkWrap里的HTML标签和类名,配合CSS打造符合站点风格的切换按钮

注意事项

  1. 请根据你的实际语言UID调整special.value和replace里的search值(比如如果法语UID是1,德语是0,就对应调换)
  2. 确保所有页面都有对应语言的翻译版本,否则链接会指向默认语言的页面
  3. 如果需要显示页面标题而非语言名称,把stdWrap.cObject部分替换为stdWrap.data = page:title即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:35:31