Development and Localization Running in Parallel: Tips for Developers
Tags: localization, translation
Published: 2021-01-13 14:51:03

To make your mobile or web app, website, or other product-related content multilingual you first add localization to your workflow. The next step is to automate this process, so it won’t delay your next release. 

Localization should go in parallel with the development process. Meaning that each new text string created or modified by you is delivered to translators right away. Once translations are done, they are pushed to your repository as a merge/pull request automatically. This way you’ll have translations in time to deploy your next update.

![Localization in parallel with development](https://dev-to-uploads.s3.amazonaws.com/i/ihznpfce1rj461pe34pp.gif)

Read also: [5 things developers should know about localization](https://blog.crowdin.com/2018/09/04/5-things-every-developer-should-know-about-localization/?utm_source=dev.to&utm_medium=Referral&utm_campaign=tips-for-developers)

## How to start with automating localization?
What are the first steps? How to set up the automated workflow? 

We’ve prepared a small plan for you:

### 1. Create a project in Crowdin
Select the source language (the one you’re translating from) and target languages (the ones you’ll be translating your content into).

### 2. Choose your automation approach
Manage your files using in-built integrations with tools like GitLab, GitHub, Bitbucket, or Azure Repos. You can also set up a more custom workflow using Crowdin’s CLI, API, or webhooks. All the content updates can be performed automatically on the configured schedule. 

### 3. Translate your files in Crowdin
Invite your translators and proofreaders to the project or select a translation agency for the translation tasks.

### 4. Merge translations into your main branch
The system will automatically add translations to the defined folder on your side. Check the translated files and merge them into the main branch.

## Supported File Formats
Crowdin supports the most common localization formats (like JSON, XML, XLIFF, INI, and so on) as well as custom file formats. Feel free to upload files into your project and start the localization. View all [supported file formats in Crowdin](https://crowdin.com/page/integrations#nav-formats).

Our team can create pre/post processors to customize the file import and export settings and add the support of the custom placeholders for Organization Plans. So, for example, you’ll be able to export translations in Android XML and iOS Strings formats for one source file from your Crowdin project.

## Versions Management in Localization
Integrate localization into your development process. Release new features and product versions for customers speaking different languages simultaneously.

You can create branches for each version of your product in your Crowdin project. Translate only the new text in the version branch and hide the duplicates that you have already translated on the main branch.

We have a special option for duplicates – Show (recommended for versions). This option allows hiding duplicated strings only between versions – so translators will see only the difference compared to the main branch.
![Hide duplicate strings](https://dev-to-uploads.s3.amazonaws.com/i/jl9ilgw4scb1xkygbdnj.png)

### Integrate content from your repository on GitLab, GitHub, Bitbucket, or Azure Repos

Once you integrate your Crowdin projects with your repository, the translation team will be able to work on the localization in parallel with your development process.

1. Select the branches and define the path for the source files and translations – the same branches will be created in your Crowdin project immediately.
2. Set the synchronization for the new branches. Once you create the new branch on your repository, it will be added to your project automatically – there is no need to define each new branch manually.
3. The integration is already configured? Great! The system will create the service branch on your repository to send the translations there. Check the new pull/merge request before merging to the main branch.
4. Remove the service branch after merging to the main branch – integration will create the new service branch during the next synchronization.

### Crowdin action for GitHub
Integrate localization into your workflow with the help of [Crowdin  Action for GitHub](https://blog.crowdin.com/2020/04/30/add-localization-to-your-github-workflows-with-crowdin-action/). View the main settings, specify which action you need to include in your GitHub workflow, and define the preferred branch for the translations.

### Crowdin API
Define your localization workflow and integrate it into the development process with the selected API requests:

- Add new content for translation to your Crowdin project.
- Create tasks for translation or proofreading.
- Check the translation status for each language or each file.
- Export the translated files from your Crowdin project.
- Explore the API for Crowdin and Crowdin Enterprise to select the requests beneficial for your workflow.

Read more about [API for your localization project](https://blog.crowdin.com/2020/08/05/announcing-the-new-API-2.0/).

### Console client (CLI)
Connect cross-platform Crowdin CLI directly to your repository and never deal with localization files manually again.

Use the configuration file to run the commands – it contains a description of all resources: files for localization and the locations of the corresponding translations. Sure, the first setup can take a bit more time, but all the next actions would be done just in a few clicks.

### Webhooks
Webhooks will notify you about the main events from your Crowdin project, like completed translations or proofreading.

Create webhooks in the Project Settings > API tab > Webhooks or use the API tool for this, and select the actions that you would like to get the notifications about.

## Localize your software and other content on Crowdin

Create your [localization project on Crowdin](https://crowdin.com/?utm_source=dev.to&utm_medium=Referral&utm_campaign=tips-for-developers), invite translators, and automate updates for source and translated content between Crowdin and your repo. Start receiving translations right in time for the next release.

***
How do you handle localization in your company? Would love to see your stories in the comments below :point_down: