Cheatsheet: Getting started with Software Localization
Tags: howto, devtips, localization
Published: 2022-03-24 08:38:25

## 🎯 Quick tips for successful software localization

*   Take [localization](https://localazy.com/dictionary/localization) into account in the early stages of development. Introducing multilingual support once you are rolling requires extra work on your part and makes you more likely to forget something important. **Think about localization throughout your product as a whole**, e.g., don't allow the backend to send untranslated messages.
*   Make sure you handle **string interpolation** correctly from the very beginning.

> For example, don't concatenate but use placeholders instead. Manage strings with various plural forms properly, etc.

*   Use **plurals** the right way, e.g., don't use plural zero for an empty check.
*   The previous two points will help you prevent the most common problems when you start implementing more "exotic" languages, such as RTL languages or those without plurals.
*   Double-check that you handle **date formats** etc., correctly as well. Unfortunately, this is something that we can't do for you - it's a matter of proper implementation within your code.

> Learn [How to prepare your project for i18n and l10n](https://localazy.com/blog/guide-preparing-application-for-i18n-l10n-localazy) in our guide.

## 📁 Localizable file formats

*   When possible, **stick with [JSON](https://localazy.com/json)** and do your best to avoid formats like [PO](https://localazy.com/po), [XLIFF](https://localazy.com/xliff), etc.

> Those formats are meant to be used mainly by professional translators and agencies and are usually handled with specialized proprietary software. Yes, **Localazy [supports these formats](https://localazy.com/integrations) but also completely overshadows the main reasons for their existence** in the first place.

*   For example, **[JSON5](https://localazy.com/json5) is an excellent file format for software localization**. One of the benefits of using JSON5 is, that it allows you to add comments that your contributors can use to find additional context and translate your product accurately.

> On top of that, Localazy accepts JSON5 as input and can return the good old JSON. [More on that here.](https://localazy.com/blog/json5-and-human-friendly-software-localization)

*   **Define context for translators**, tell them when and how the string is used in your product, etc. This considerably increases the quality of translations.

> You can, e.g., use a [Translation Glossary](https://localazy.com/docs/general/how-to-define-your-glossary) or attach [Screenshots](https://localazy.com/docs/general/screenshots) to your translation project to improve the quality of translation.

*   Generally, there are not many problems regarding file formats because **Localazy supports the majority of common file formats**. [See the list here](https://localazy.com/integrations).

## 🚩 Why should you use Localazy?

*   Software localization is not even remotely only about translations. **Software evolves in time**; strings come and go or undergo changes. Localazy is perfectly prepared for this.
*   It's not about translation management only, either. You have to **manage the people involved and their permissions** as well. [Read more here](https://localazy.com/docs/general/defining-user-roles).
*   Localazy gives you and your contributors the **tools needed to increase the translation quality** and removes many emergent nuisances. Localazy provides a translation glossary, machine translation suggestions, and shared translations; identifies similar phrases already used in your project to ensure consistency, allows you to add comments, and see translations in other languages for additional context.

> Read more about [Localazy from a translator's perspective](https://localazy.com/blog/intro-localazy-translators-perspective).

*   Localazy will ensure you **translate plurals correctly depending on the language**. [Read more](https://localazy.com/docs/general/translating-plurals).
*   Our advanced technology, such as **[InTM](https://localazy.com/docs/general/what-is-localazy-intm)** and **[ShareTM](https://localazy.com/docs/general/what-is-localazy-sharetm)**, allows you to **share translations among projects** (yours only or all on the platform). Why should you have to translate two identical strings twice?
*   You won't get lost thanks to the **unique review process**, which lets you perform meticulous QA.

> Read more about our [Unique review process and self-managed translations](https://localazy.com/blog/unique-review-process-and-self-managed-translations)

*   Localazy **automatically detects changes in the source language** and informs translators about new texts that require translation.
*   We generate **meta-files with language lists** and their English and localized names. Thus, you can **quickly implement a language switcher** that is fully integrated with Localazy.
*   You can also use additional services - **professional translations**, machine translation post-editing, global CDN, and many more. [Read more](https://localazy.com/docs/general/continuous-localization-team).

> Translating software the old way - back and forth e-mailing of text files between you and your translators - is annoying and exhaustive. You can afford to get lazy with Localazy and manage all of your translations separated from your code hassle-free.

*   Localazy offers [plans suitable for individuals and teams of any size](https://localazy.com/pricing). And you can start for free before you commit.

## 🕹️ How to get started?

Localazy is ready for tight integration with your software project but can be used by anyone for quick translation of localizable files.

### First steps

1.  [Create a free account](https://localazy.com/register) or sign up via your Google or GitHub account. 💳 *No credit card is required!*
2.  Create your first project
3.  The next step is populating your empty project with content to translate. Select from the ever-growing list of [integrations](https://localazy.com/integrations) Localazy supports and import your strings. 🕹️ There are three ways of doing this, depending on your case: manual import, Localazy CLI integration or setting up an SDK.
4.  After successful integration, add new 🚩 languages to start the localization journey.

> Find more steps and learn more in our [Getting Started guide](https://localazy.com/docs/general/getting-started-with-localazy).

### Recommended steps for developers

1.  Download our [CLI (command line interface)](https://localazy.com/docs/cli/the-basics), which is available for all operating systems.
2.  Create a config file, which defines what files are meant to be uploaded and where to download translated files.
3.  Run `localazy upload` to import your files to Localazy. You can invoke this command on each change or use [GitLab CI/CD](https://localazy.com/blog/automated-localization-gitlab-cicd-localazy), [GitHub Actions](https://localazy.com/blog/automated-localization-github-actions-localazy) or our [Bitrise Step](https://localazy.com/blog/automated-localization-bitrise-io-localazy) to automate the process entirely.
4.  During the build process of your software, invoke `localazy download` to fetch the newest version of translated files. Of course, you can automate this too.
5.  For [Android](https://localazy.com/android) and [iOS](https://localazy.com/ios), we provide special SDKs which make the localization process even easier.

> The best thing about Localazy is, that you can configure the integration only once. Localazy will handle everything for you once you set it up.

## ✔️ Conclusion

Is there anything you would add to the list? Do you have any questions regarding Localazy? Let us know in the comments!

You can also find more information about Localazy on our [blog](https://localazy.com/blog) and in the [documentation](https://localazy.com/docs).