如何通过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打造符合站点风格的切换按钮
注意事项
- 请根据你的实际语言UID调整
special.value和replace里的search值(比如如果法语UID是1,德语是0,就对应调换) - 确保所有页面都有对应语言的翻译版本,否则链接会指向默认语言的页面
- 如果需要显示页面标题而非语言名称,把
stdWrap.cObject部分替换为stdWrap.data = page:title即可
内容的提问来源于stack exchange,提问作者Mohamed Masmoudi
相关产品推荐
相关产品推荐

