---
title: "Custom translation servers"
manual: "TYPO3 Explained"
version: "13.4"
permalink: "https://docs.typo3.org/permalink/t3coreapi:custom-translation-server@13.4"
source: "ApiOverview/Localization/TranslationServer/Custom.rst"
rendered: "2026-09-19T07:17:26+00:00"
---

# Custom translation servers {#custom-translation-server}

With the usage of [XLIFF](https://docs.typo3.org/permalink/t3coreapi:xliff@13.4) and the freely available [Pootle](http://pootle.translatehouse.org/)
translation server, companies and individuals may easily set up a custom
translation server for their extensions.

The event [ModifyLanguagePackRemoteBaseUrlEvent](https://docs.typo3.org/permalink/t3coreapi:modifylanguagepackremotebaseurlevent@13.4) can be caught to change
the translation server URL, for example:

**EXT:my_extension/Classes/EventListener/CustomMirror.php**

```php
<?php

declare(strict_types=1);

namespace MyVendor\MyExtension\EventListener;

use TYPO3\CMS\Core\Attribute\AsEventListener;
use TYPO3\CMS\Core\Http\Uri;
use TYPO3\CMS\Install\Service\Event\ModifyLanguagePackRemoteBaseUrlEvent;

#[AsEventListener(
  identifier: 'my-extension/custom-mirror',
)]
final readonly class CustomMirror
{
  private const EXTENSION_KEY = 'my_extension';
  private const MIRROR_URL = 'https://example.org/typo3-packages/';

  public function __invoke(ModifyLanguagePackRemoteBaseUrlEvent $event): void
  {
    if ($event->getPackageKey() === self::EXTENSION_KEY) {
      $event->setBaseUrl(new Uri(self::MIRROR_URL));
    }
  }
}

```

In the above example, the URL is changed only for a given extension, but of
course it could be changed on a more general basis.

On the custom translation server side, the structure needs to be:

```text
https://example.org/typo3-packages/
`-- <first-letter-of-extension-key>
    `-- <second-letter-of-extension-key>
        `-- <extension-key>-l10n
            |-- <extension-key>-l10n-de.zip
            |-- <extension-key>-l10n-fr.zip
            `-- <extension-key>-l10n-it.zip
```

hence in our example:

```text
https://example.org/typo3-packages/
`-- m
    `-- y
        `-- my_extension-l10n
            |-- my_extension-l10n-de.zip
            |-- my_extension-l10n-fr.zip
            `-- my_extension-l10n-it.zip
```
