【问题标题】:TYPO3 v12 - Localization is not working with xlf filesTYPO3 v12 - 本地化不适用于 xlf 文件
【发布时间】:2023-02-13 19:52:35
【问题描述】:

我正在尝试让翻译在 Typo3 12.1.3 中工作。

我在 Sitepackage Tutorial 之后构建了一个简单的站点包。

我添加了一些 locallang 文件:本地语言.xlf

<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
    <file source-language="en" datatype="plaintext" original="EXT:site_package/Resources/Private/Language/locallang.xlf" date="2011-10-17T20:22:32Z" product-name="site_package">
        <header/>
        <body>
            <trans-unit id="test" resname="test">
                <source>Test (EN)</source>
            </trans-unit>
        </body>
    </file>
</xliff>

de.locallang.xlf

<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
    <file source-language="en" target-language="de" datatype="plaintext" original="EXT:site_package/Resources/Private/Language/locallang.xlf" date="2011-10-17T20:22:32Z" product-name="site_package" >
        <header/>
        <body>
            <trans-unit id="test" resname="test" approved="yes">
                <source>Test (EN)</source>
                <target>Test (DE)</target>
            </trans-unit>
        </body>
    </file>
</xliff>

创建了一些模板:

<f:layout name="Default" />
<f:section name="Main">

  <main role="main">

    <div class="container">
      <div class="row">
        <div class="col-md-12">

          <f:translate key="LLL:EXT:site_package/Resources/Private/Language/locallang.xlf:test"/>
          <f:translate key="test" extensionName="site_package"/>

            <f:for each="{mainContent}" as="contentElement">
                <f:cObject
                    typoscriptObjectPath="tt_content.{contentElement.data.CType}"
                    data="{contentElement.data}"
                    table="tt_content"
                />
            </f:for>
        </div>
      </div>
    </div>

  </main>

</f:section>

并添加了站点配置:

base: /
languages:
  -
    title: English
    enabled: true
    languageId: 0
    base: /
    typo3Language: default
    locale: en_US.UTF-8
    iso-639-1: en
    navigationTitle: English
    hreflang: en-us
    direction: ltr
    flag: us
    websiteTitle: ''
  -
    title: Deutsch
    enabled: true
    base: /de/
    typo3Language: de
    locale: de_DE
    iso-639-1: de
    websiteTitle: ''
    navigationTitle: Deutsch
    hreflang: de-DE
    direction: ''
    fallbackType: strict
    fallbacks: '0'
    flag: de
    languageId: 1
rootPageId: 1
websiteTitle: ''

之后我创建了一个站点,添加了一些内容并在后端将其翻译成德语。

问题:内容元素在前端以选定的语言呈现。 如果我切换它,它们将以匹配的语言显示。

locallang 文件中的文本保持默认语言。 如果我切换语言,它们不会以正确的语言显示。他们留在英语。

我究竟做错了什么? 非常感谢你的帮助!

【问题讨论】:

    标签: typo3


    【解决方案1】:

    你能用 TYPO3 v12.2.0 再次检查吗?这可能会解决这些问题......

    【讨论】:

    • 嗨本尼,感谢您的快速回复。将源更改为 v12.2.0。错误仍然存​​在。
    【解决方案2】:

    我和 TYPO3 v12.2 有同样的问题,比如 threadstarter。我在本地使用 DDEV,页面的主要内容是德语,并创建了一个英语页面翻译。输出仍然是英文。

    中的语言部分配置文件我的站点配置中的文件:

    languages:
      -
        title: Deutsch
        enabled: true
        base: /
        typo3Language: de
        locale: de_DE.utf8
        iso-639-1: de
        websiteTitle: 'Meine Webseite'
        navigationTitle: Deutsch
        hreflang: de-DE
        direction: ''
        flag: de
        languageId: 0
      -
        title: English
        enabled: true
        base: /en/
        typo3Language: default
        locale: en_US.utf8
        iso-639-1: en
        websiteTitle: 'My website'
        navigationTitle: English
        hreflang: en-US
        direction: ''
        fallbackType: fallback
        fallbacks: '0'
        flag: en-us-gb
        languageId: 1
    

    德语翻译文件de.locallang.xlf看起来像这样:

    <?xml version="1.0" encoding="utf-8" standalone="yes" ?>
    <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
        <file source-language="en" datatype="plaintext" original="EXT:custompackage/Resources/Private/Language/locallang.xlf" date="2020-10-18T18:20:51Z" product-name="custompackage" target-language="de">
            <header/>
            <body>
                <!-- Topbar -->
                <trans-unit id="topbar.book-appointment" resName="topbar.book-appointment" approved="yes">
                    <target state="translated">Termin online buchen</target>
                </trans-unit>
            </body>
        </file>
    </xliff>
    

    英语(默认)翻译文件本地语言.xlf看起来像这样:

    <?xml version="1.0" encoding="UTF-8"?>
    <xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
        <file source-language="en" datatype="plaintext" original="EXT:custompackage/Resources/Private/Language/locallang.xlf" date="2020-10-18T18:20:51Z" product-name="custompackage">
            <header/>
            <body>
                <!-- Topbar -->
                <trans-unit id="topbar.book-appointment">
                    <source>Book appointment</source>
                </trans-unit>
            </body>
        </file>
    </xliff>
    

    流体模板,第一个带有德国默认标签,第二个没有:

    <f:translate extensionName="custompackage" id="topbar.book-appointment">Termin online buchen</f:translate>
    
    <f:translate extensionName="custompackage" id="topbar.book-appointment"/>
    

    第二个变体默认返回英文标签。

    我也注意到改变用户后台语言影响前端本地化输出。如果将德语设置为用户后端语言,则德语标签会出现在前端,而英语则相反。这是一种奇怪的行为。知道为什么会这样吗?

    为自己的作曲家扩展设置翻译的正确方法是什么? 他们属于var/labels/{language}/{customExtension}还是属于packages/{customExtension}/Resources/Private/Language/locallang.xlf的常规方式? TYPO3 v12(主要)的localization documentation 显示了常规方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      • 2022-10-18
      • 2015-01-21
      相关资源
      最近更新 更多