TYPO3 V11.5.26 Bootstrap_package多语言版权文本配置问题
解决TYPO3 Bootstrap Package多语言版权文本{theme.copyright.text}的问题
问题分析
你当前的配置未生效,核心原因是修改了错误的TS路径:你试图直接修改dataProcessing里的theme变量,但Bootstrap Package的ConstantsProcessor是从page.theme这个TS分支读取配置并传递给Fluid的,而非直接在dataProcessing里定义theme变量。
正确解决方案(符合最佳实践)
步骤1:保留自定义扩展的常量配置
你已定义的多语言版权常量配置无需修改:
page { theme { copyright { # cat=bootstrap package: copyright/169/122; type=string; label=Copyright Text Danish da = Kører med <a href="http://www.typo3.org" rel="noopener" target="_blank">TYPO3</a> og <a href="https://www.bootstrap-package.it" rel="noopener" target="_blank">Bootstrap-pakken</a>. # cat=bootstrap package: copyright/169/123; type=string; label=Copyright Text German de = Läuft mit <a href="http://www.typo3.org" rel="noopener" target="_blank">TYPO3</a> und <a href="https://www.bootstrap-package.it" rel="noopener" target="_blank">Bootstrap-Paket</a>. } } fluidtemplate { # cat=bootstrap package: templates/100/100; type=string; label=Layout Root Path: Path to layouts layoutRootPath = EXT:bootstrap_package_ext/Resources/Private/Layouts/Page/ # cat=bootstrap package: templates/100/110; type=string; label=Partial Root Path: Path to partials partialRootPath = EXT:bootstrap_package_ext/Resources/Private/Partials/Page/ # cat=bootstrap package: templates/100/120; type=string; label=Template Root Path: Path to templates templateRootPath = EXT:bootstrap_package_ext/Resources/Private/Templates/Page/ } }
步骤2:修改Setup配置,正确覆盖版权文本
替换你之前的Setup代码,直接针对page.theme.copyright.text进行语言分支覆盖:
# 丹麦语站点覆盖版权文本 [siteLanguage("twoLetterIsoCode") == "da"] page.theme.copyright.text = {$page.theme.copyright.da} [END] # 德语站点覆盖版权文本 [siteLanguage("twoLetterIsoCode") == "de"] page.theme.copyright.text = {$page.theme.copyright.de} [END]
原理说明
Bootstrap Package的ConstantsProcessor会自动读取page.theme下的所有配置,并将其注入到Fluid模板的{theme}变量中。通过在Setup中根据当前站点语言动态设置page.theme.copyright.text的值,就能让{theme.copyright.text}在不同语言站点下显示对应内容,完全符合TYPO3和Bootstrap Package的最佳实践规范。
进阶方案(推荐:语言文件管理文本)
如果希望更贴合TYPO3本地化最佳实践,建议将版权文本放入语言文件,而非直接写在TS常量里:
- 在自定义扩展的
Resources/Private/Language目录下创建对应语言文件(如locallang.da.xlf、locallang.de.xlf) - 在语言文件中定义版权文本:
<!-- locallang.da.xlf --> <trans-unit id="theme.copyright.text"> <source>Kører med <a href="http://www.typo3.org" rel="noopener" target="_blank">TYPO3</a> og <a href="https://www.bootstrap-package.it" rel="noopener" target="_blank">Bootstrap-pakken</a>.</source> </trans-unit> - 在Setup中直接引用语言标签:
page.theme.copyright.text = LLL:EXT:bootstrap_package_ext/Resources/Private/Language/locallang.xlf:theme.copyright.text
这种方式无需额外语言条件判断,TYPO3会自动根据当前站点语言加载对应翻译,维护性更强。
内容的提问来源于stack exchange,提问作者webman
相关产品推荐
相关产品推荐

