【问题标题】:TYPO3: How to handle multi language support with fluid templatesTYPO3:如何使用流体模板处理多语言支持
【发布时间】:2018-06-07 15:10:53
【问题描述】:

我正在开发一个支持多语言的页面。我已经设法让它与 realurl 和后端一起工作。

现在我不太确定如何从后端渲染翻译后的文本。

例如:我有一个标题为“联系人”的默认语言 (en) 页面。现在我创建了一个名为“Kontakt”的德语翻译。

通过我的配置,我的网址现在显示:

  • en: domain.com/en/contact
  • de: domain.com/de/kontakt

但即使在德语网址上,我使用流畅模板渲染的导航仍然显示默认语言。 {page.title.currentLanguage} 或类似的变量是否存在?

当然,我可以在 locallang.xlf 文件中创建翻译,但为了使用 f:translate 视图助手,但这意味着我必须翻译页面名称两次,对吧?

感谢所有帮助!

我当前用于渲染导航的部分:

<nav>
    <div class="container">
        <ul class="content btns">
            <f:for each="{mainnavigation}" as="mainnavigationItem">
                <li class="{f:if(condition: mainnavigationItem.active, then:'active')}">
                    <a href="{mainnavigationItem.link}" target="{mainnavigationItem.target}" title="{mainnavigationItem.title}">{mainnavigationItem.title}</a>
                    <f:if condition="{mainnavigationItem.children}">
                        <ul>
                            <f:for each="{mainnavigationItem.children}" as="child">
                                <li class="{f:if(condition: child.active, then:'active')}">
                                    <a href="{child.link}" target="{child.target}" title="{child.title}">{child.title}</a>
                                </li>
                            </f:for>
                        </ul>
                    </f:if>
                </li>
            </f:for>
        </ul>
    </div>
</nav>

【问题讨论】:

  • 您可以使用 TypoScript 菜单对象:docs.typo3.org/typo3cms/TyposcriptReference/MenuObjects/…
  • 您能否提供更多有关如何生成语言菜单的信息?你在打字稿或其他东西中使用 MenuProcessor 吗?
  • @StatiX 当然,我已经用我现在用于渲染导航的内容的缩减部分编辑了我的问题。

标签: typo3 multilingual fluid-styled-content


【解决方案1】:

我找到了我正在寻找的解决方案:

在设置常规本地化设置时,我从本地化文档中添加了一些 TypoScript configuration。我添加了以下几行:

# Localization:
config {
        linkVars = L(int)
        sys_language_uid = 0
        sys_language_overlay = 1
        sys_language_mode = content_fallback
        language = en
        locale_all = en_US.UTF-8
        htmlTag_setParams = lang="en" dir="ltr" class="no-js"
}
[globalVar = GP:L = 1]
        config {
                sys_language_uid = 1
                language = de
                locale_all = de_DE.UTF-8
                htmlTag_setParams = lang="de" dir="ltr" class="no-js"
        }
[global]
[globalVar = GP:L = 2]
        config {
                sys_language_uid = 2
                language = da
                locale_all = da_DK.UTF-8
                htmlTag_setParams = lang="da" dir="ltr" class="no-js"
        }
[global]

当然是使用我的语言 ID。这解决了我的问题,现在翻译的页面标题出现在标题标签和我的导航中。

我猜“sys_language_overlay = 1”选项有这个目的。

【讨论】:

    【解决方案2】:

    我使用typolink 来呈现这样的标签:

    <f:link.typolink parameter="{item.data.uid}" target="{item.target}" title="{item.title}" class="menu-link">{item.title}</f:link.typolink>
    

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多