---
title: "Crowdin"
manual: "AI Localization"
version: "main"
permalink: "https://docs.typo3.org/permalink/nitsan/ns-t3al:crowdin@main"
source: "Crowdin/Index.rst"
rendered: "2026-10-20T11:46:30+00:00"
---

# Crowdin {#crowdin}

The extension can upload translations to a [Crowdin](https://crowdin.com)
project after saving them locally.

> [!IMPORTANT]
> **Save to Crowdin** is only available for **TYPO3 system
> extensions**. The files are matched with the file layout of the TYPO3 Core
> Crowdin project (`/main/typo3/sysext/<extension>/…`, see
> [crowdinSystemExtensionPath](https://docs.typo3.org/permalink/nitsan/ns-t3al:confval-confval-crowdinsystemextensionpath@main)).
> Local extensions do not show the button.

## Requirements {#requirements}

-   A Crowdin access token in [accessToken](https://docs.typo3.org/permalink/nitsan/ns-t3al:confval-confval-accesstoken@main).
-   The Crowdin API URL in [crowdinApiUrl](https://docs.typo3.org/permalink/nitsan/ns-t3al:confval-confval-crowdinapiurl@main)
    (default `https://api.crowdin.com/api/v2/`).
-   The numeric ID of your Crowdin project.

## Upload translations {#upload-translations}

1.  Set **Extension type** to **System** and select a system
    extension, a language file and the target languages.
1.  Translate or edit the labels.
1.  Enter the **Crowdin project ID** in the toolbar.
1.  Click **Save to Crowdin**.

The files are saved locally first. Then the translations of every selected
language (not English) are uploaded to Crowdin. A message is shown for every
upload.

The Crowdin file is matched by its exact path
(`<crowdinSystemExtensionPath>/<extension>/Resources/Private/Language/<file>`).
The TYPO3 language key is mapped to the Crowdin language ID of the project,
for example `de` → `de`, `pt_BR` → `pt-BR`, `zh_CN` → `zh-CN` and
`es` → `es-ES`.

## Messages {#messages}

-   **`Project ID is required`**

    Enter the Crowdin project ID before clicking **Save to Crowdin**.

-   **`Crowdin access token missing`**

    Add the token in the extension configuration. Nothing was saved.

-   **`Crowdin upload is only available for TYPO3 system extensions`**

    Use **Save** to save local extensions.

-   **`Crowdin could not be reached`**

    The local file was saved; try the upload again later.

-   **`Crowdin rejected the access token`**

    The token is invalid, expired or has no access to the project. Check the
    token and its permissions. The local file was saved.

-   **`Crowdin project … was not found`**

    Check the project ID. The local file was saved.

-   **`No matching file found at Crowdin`**

    The message shows the path that was looked up. Check that the project
    uses the TYPO3 Core file layout or adjust
    [crowdinSystemExtensionPath](https://docs.typo3.org/permalink/nitsan/ns-t3al:confval-confval-crowdinsystemextensionpath@main).

-   **`Language … is not a target language of this Crowdin project`**

    Add the language to the Crowdin project or select another language.
