你如何翻译EXT:TYPO3 CMS 8.7 LTS中的表格?

0 forms translation typo3 typo3-extensions

我是TYPO3的新手,从8.7 LTS开始.我用默认的"form"扩展名创建了几个表单.我的网站要求将其中一些表单翻译成最多5种其他语言.到目前为止,我发现的唯一解决方案是复制表单,然后为每个翻译提供单独的表单,但这似乎不是最好的解决方案,因为从长远来看,它会导致形式分歧.

是否可以直接在YAML文件中添加备用翻译或指向应该使用的翻译文件?

Fab*_*men 13

这是一个例子,就像我在页面上使用的那样:

对于前端翻译,将其添加到您的typoscript设置中:

plugin.tx_form {
  settings {
    yamlConfigurations {
        100 = EXT:my_site_package/Configuration/Yaml/CustomFormSetup.yaml
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

"my_site_package"必须是现有且已激活的TYPO3扩展名

然后在my_site_package/Configuration/Yaml/CustomFormSetup.yaml下创建一个yaml文件

TYPO3:
  CMS:
    Form:
      prototypes:
        standard:
          formElementsDefinition:
            Form:
              renderingOptions:
                translation:
                  translationFile:
                    # default translation files for the frontend
                    10: 'EXT:form/Resources/Private/Language/locallang.xlf'
                    20: 'EXT:my_site_package/Resources/Private/Language/locallang.xlf'
Run Code Online (Sandbox Code Playgroud)

并在my_site_package/Resources/Private/Language中有一些翻译文件

default(en):my_site_package/Resources/Private/Language/locallang.xlf

<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
    <file source-language="en" datatype="plaintext" original="messages" product-name="tamods">
        <header/>
        <body>
            <trans-unit id="ticketbestellung.element.objekt.properties.label" xml:space="preserve">
                <source>Object</source>
            </trans-unit>
        </body>
    </file>
</xliff>
Run Code Online (Sandbox Code Playgroud)

german(de):my_site_package/Resources/Private/Language/de.locallang.xlf

<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
    <file source-language="en" target-language="de" datatype="plaintext" original="messages" product-name="tamods">
        <header/>
        <body>
            <trans-unit id="ticketbestellung.element.objekt.properties.label" xml:space="preserve">
                <target>Objekt</target>
            </trans-unit>
        </body>
    </file>
</xliff>
Run Code Online (Sandbox Code Playgroud)

德语(fr):my_site_package/Resources/Private/Language/fr.locallang.xlf

<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.0" xmlns:t3="http://typo3.org/schemas/xliff">
    <file source-language="en" target-language="fr" datatype="plaintext" original="messages" product-name="tamods">
        <header/>
        <body>
            <trans-unit id="ticketbestellung.element.objekt.properties.label" xml:space="preserve">
                <target>Objet</target>
            </trans-unit>
        </body>
    </file>
</xliff>
Run Code Online (Sandbox Code Playgroud)

这是我使用的形式的yaml:

renderingOptions:
  submitButtonLabel: Senden
type: Form
identifier: ticketbestellung
label: Ticketbestellung
prototypeName: standard
renderables:
  -
    renderingOptions:
      previousButtonLabel: 'previous Step'
      nextButtonLabel: 'next Step'
    type: Page
    identifier: page-1
    label: Page
    renderables:
      -
        defaultValue: ''
        type: Text
        identifier: objekt
        label: Objekt
        properties:
          fluidAdditionalAttributes:
            placeholder: Objekt
            required: required
        validators:
          -
            identifier: NotEmpty
Run Code Online (Sandbox Code Playgroud)

一些翻译密钥,很难找到:

提交按钮

element.Form.renderingOptions.submitButtonLabel element.ticketbestellung.renderingOptions.submitButtonLabel

电子邮件终结者中的主题

finisher.Email.subject (解决方法,目前正在工作)

finisher.EmailToReceiver.subject(应该是解决方案,在撰写本文时没有工作)

没有manuel-selbach在TYPO3 Slack 的帮助下,这个答案是不可能的: