# Symfony
> Upload your files for translation directly into the Crowdin project and synchronize the translations with your Symfony application.
URL: https://store.crowdin.com/symfony
Category: Development
Type: Guide
Author: Symfony
Symfony is a free and open-source PHP framework for building modern web applications. It is a comprehensive framework that provides a wide range of features.
When using external translators to translate your application, you must send them the new contents to translate frequently and merge the results back in the application.
Localize your source files with integration for Crowdin. Instead of doing this manually, Symfony provides integration with Crowdin. Once localization is complete in Crowdin, you can push and pull translations to/from Crowdin and automatically merge the results into your application.
[
](https://packagist.org/packages/symfony/crowdin-translation-provider)
[
](https://packagist.org/packages/symfony/crowdin-translation-provider)
## Setup
Before pushing/pulling translations to Crowdin, you must install the package that provides integration:
```
composer require symfony/crowdin-translation-provider
```
You'll now have a new line in your `.env` file that you can uncomment:
```yaml
# .env
CROWDIN_DSN=crowdin://PROJECT_ID:API_TOKEN@default
```
**Note**: for Crowdin Enterprise, you need to specify the organization domain in the DSN: `crowdin://PROJECT_ID:API_TOKEN@ORGANIZATION_DOMAIN.default` (e.g., for organization `https://your_organization.crowdin.com`, set the `your_organization` as `ORGANIZATION_DOMAIN`).
To enable a translation provider, customize the DSN in your `.env` file and configure the providers option:
```yaml
# config/packages/translation.yaml
framework:
translator:
providers:
crowdin:
dsn: '%env(CROWDIN_DSN)%'
domains: ['messages']
locales: ['en', 'fr']
```
**Note**: If you use Crowdin as a provider and some of your locales are different from the [Crowdin Language Codes](https://developer.crowdin.com/language-codes/), you have to set the [Custom Language Codes](https://support.crowdin.com/project-settings/#languages) in the Crowdin project for each of your locales, in order to override the default value. You need to select the "locale" placeholder and specify the custom code in the "Custom Code" field.
Read more about [Symfony integration for Crowdin](https://symfony.com/doc/current/translation.html#translation-providers).
## Screenshots


## Course
[How to make your Symfony app multilingual with Crowdin](https://symfonycasts.com/screencast/translations/providers)
Learn how to use the Symfony Translation component to make a single-language Symfony application multilingual. Additionally, this course demonstrates how to connect Crowdin to help manage translations in a cloud service.