PHPackages                             r3h6/form-translator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Localization &amp; i18n](/categories/localization)
4. /
5. r3h6/form-translator

ActiveTypo3-cms-extension[Localization &amp; i18n](/categories/localization)

r3h6/form-translator
====================

Provides a backend module and cli for translating forms.

3.0.2(1y ago)520.9k↓17.1%11[7 PRs](https://github.com/r3h6/TYPO3.EXT.form_translator/pulls)GPL-2.0-or-laterPHPPHP &gt;= 8.1 &lt; 8.4CI passing

Since Feb 10Pushed 1y ago1 watchersCompare

[ Source](https://github.com/r3h6/TYPO3.EXT.form_translator)[ Packagist](https://packagist.org/packages/r3h6/form-translator)[ RSS](/packages/r3h6-form-translator/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (10)Dependencies (22)Versions (21)Used By (0)

[![Latest Stable Version](https://camo.githubusercontent.com/360f8f73f51cf9893daccdeae5eb8062d86ab89cfeed45d13bd2b96d24204184/68747470733a2f2f706f7365722e707567782e6f72672f723368362f666f726d2d7472616e736c61746f722f762f737461626c65)](https://extensions.typo3.org/extension/form_translator/)[![TYPO3 12](https://camo.githubusercontent.com/5988c2b3fbc4d962eb8b98b039607aea05b319ac41e106ec771361a45598caed/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5459504f332d31322d6f72616e67652e7376673f7374796c653d666c61742d737175617265)](https://get.typo3.org/version/12)[![TYPO3 11](https://camo.githubusercontent.com/95b97bf30b8b5b6165cafd25cef0d9dac36c06ceae2a71021f6c58bd39e30843/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5459504f332d31312d6f72616e67652e7376673f7374796c653d666c61742d737175617265)](https://get.typo3.org/version/11)[![Total Downloads](https://camo.githubusercontent.com/24839dba7e8f41e5c26839e383e3dee36d143aab22a42b72a0f9de0753a0df3e/68747470733a2f2f706f7365722e707567782e6f72672f723368362f666f726d2d7472616e736c61746f722f642f746f74616c)](https://packagist.org/packages/r3h6/form-translator)[![Monthly Downloads](https://camo.githubusercontent.com/19ff25e60ab37417cfdddc9b1b60b192e90874574b28c07b2ee469e1ded9b91f/68747470733a2f2f706f7365722e707567782e6f72672f723368362f666f726d2d7472616e736c61746f722f642f6d6f6e74686c79)](https://packagist.org/packages/form-translater)

form\_translator
================

[](#form_translator)

This extension provides a backend module for translating TYPO3 form framework forms and a cli for creating a source xliff file for a given form.

[![](./Documentation/translate.png)](./Documentation/translate.png)

Installation
------------

[](#installation)

Either from TYPO3 TER or through composer `$ composer req r3h6/form-translator`.

Integration
-----------

[](#integration)

If you like use machine translation by [LibreTranslate](https://libretranslate.com/)you must only configure an api host in the extension configuration. See available [mirrors](https://github.com/LibreTranslate/LibreTranslate#mirrors).

How it works
------------

[](#how-it-works)

The extensions adds a translation file path to the \*.form.yaml file when localize through the backend module.

```
# example.form.yaml
renderingOptions:
  translation:
    translationFiles:
      99: fileadmin/form_definitions/l10n/example.xlf
```

Customized validation error messages are translated by overriding the form definition at runtime using the `afterBuildingFinished` hook from the form framework.

Upgrade
-------

[](#upgrade)

### From v2 an TYPO3 v12

[](#from-v2-an-typo3-v12)

Rename language files prefixed with a locale like `de_DE.locallang.xlf`to the corresponding TYPO3 language `de.locallang.xlf`or setup a [custom language](https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Localization/ManagingTranslations.html#xliff-translating-languages).

### From v2 an TYPO3 v11

[](#from-v2-an-typo3-v11)

No changes required.

Known issues
------------

[](#known-issues)

- [Issues on GitHub](https://github.com/r3h6/TYPO3.EXT.form_translator/issues)

### Transalte to English overrides the original form labels

[](#transalte-to-english-overrides-the-original-form-labels)

**Scenario:** German is used as default language and your form definition labels are in German too.

When you translate a form to English, English will override your original labels even on the German version of your site.
You have following options:

1. Create a (duplicated) German translation of the form
2. Add the English locale without charset to the extension configuration `typo3LanguageWhitelist`

**Background:** Beginning with v12, TYPO3 uses the locale configured for the site to determine the language.
For English, TYPO3 uses the file named `xyz.xlf`, it does not load a file named `en.xyz.xlf`, but it does for `en_US.xyz.xlf`.

Resources
---------

[](#resources)

- [Tutorial by Sebastian Klein](https://www.sebkln.de/en/tutorials/translating-forms-in-the-typo3-form-framework/)
- [Translation with variants](https://docs.typo3.org/c/typo3/cms-form/main/en-us/I/Concepts/Variants/Index.html#concepts-variants-examples-translation)

Develpment
----------

[](#develpment)

### Events

[](#events)

NameDescriptionAfterParseFormEventAllows to change the translatable items of a formFinalizeTypo3LanguagesEventAllows to change the available languages### Local setup

[](#local-setup)

Setup libretranslate:

`docker run -ti --rm -p 5000:5000 -e LT_LOAD_ONLY='en,de' libretranslate/libretranslate`

LibreTranslate host:

`http://host.docker.internal:5000/`

Contribution
------------

[](#contribution)

Pull request are welcome!

**Please note**: I will not include other translation api's than LibreTranslate in this extension. If you need an other service, you can create your own by implementing `TranslationServiceInterface`.

###  Health Score

46

—

FairBetter than 93% of packages

Maintenance43

Moderate activity, may be stable

Popularity35

Limited adoption so far

Community15

Small or concentrated contributor base

Maturity75

Established project with proven stability

 Bus Factor1

Top contributor holds 87.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~79 days

Recently: every ~47 days

Total

15

Last Release

454d ago

Major Versions

v1.x-dev → 2.0.02023-05-31

v2.x-dev → 3.0.02024-10-16

PHP version history (6 changes)1.0.0PHP &gt;= 7.2, &lt; 8.1

1.1.0PHP &gt;= 7.2, &lt; 8.2

1.3.0PHP &gt;= 7.2, &lt; 8.3

2.0.0PHP &gt;= 7.4, &lt; 8.3

2.0.4PHP &gt;= 7.4, &lt; 8.4

3.0.0PHP &gt;= 8.1 &lt; 8.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/16a90ecca50b4d985e1d1b3a051dba9159a0602bc61605a222935257331325d5?d=identicon)[r3h6](/maintainers/r3h6)

---

Top Contributors

[![r3h6](https://avatars.githubusercontent.com/u/4550541?v=4)](https://github.com/r3h6 "r3h6 (27 commits)")[![sneopu](https://avatars.githubusercontent.com/u/1940935?v=4)](https://github.com/sneopu "sneopu (2 commits)")[![Kanti](https://avatars.githubusercontent.com/u/471387?v=4)](https://github.com/Kanti "Kanti (1 commits)")[![yodaXX](https://avatars.githubusercontent.com/u/13272160?v=4)](https://github.com/yodaXX "yodaXX (1 commits)")

###  Code Quality

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/r3h6-form-translator/health.svg)

```
[![Health](https://phpackages.com/badges/r3h6-form-translator/health.svg)](https://phpackages.com/packages/r3h6-form-translator)
```

###  Alternatives

[leuchtfeuer/locate

Locate - The users country, preferred language and other facts will be detected. Depending on configurable rules the user can be redirected to other languages or pages. Locate also provides geo blocking for configurable pages in configurable countries.

1182.8k](/packages/leuchtfeuer-locate)[evoweb/ew-llxml2xliff

Convert locallang.xml/.php files to .xlf

1045.7k1](/packages/evoweb-ew-llxml2xliff)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
