Hasan YATAR
Etiya
Published in
9 min readOct 1, 2023

--

In today’s rapidly advancing digital age, communicating with people from all corners of the world has become not a luxury, but a necessity. Through social media, e-commerce, and other digital platforms, connecting with a global audience has never been easier. However, this tremendous opportunity also comes with significant responsibility.

If your business or project aims to grow internationally, presenting your content in different languages is an inevitable requirement. Languages serve as the fundamental tool of communication between cultures. To effectively market and ensure understanding of a product or service, communicating in the right language and tone is of critical importance. This is where Localizely steps in.

What is Localizely and Why is it Used?

Localizely is a platform that simplifies the content localization process and streamlines management. With this platform, you can quickly translate all types of content, from your website to your mobile application, into different languages and reach users worldwide.

Another significant advantage offered by Localizely is the ability to easily track your projects and instantly see content changes. This greatly facilitates time management and enables you to swiftly adapt to the international market.

Of course, like any other platform, Localizely will have its strengths and weaknesses. These include:

Pros:

  1. User-Friendly Interface: Localizely boasts a user-friendly interface. Users can efficiently translate their content into various languages with ease.
  2. Swift Localization: The platform provides the capability to swiftly and accurately localize all types of content, ranging from websites to mobile applications.
  3. Time and Resource Efficiency: Thanks to Localizely’s automation capabilities, repetitive content can be automatically translated. This enhances efficiency in the content localization process, resulting in time and resource savings.
  4. Project Management Convenience: Localizely offers the ability to easily track projects and instantly view content changes. This significantly simplifies time management.
  5. Cost Savings: Localizely features advanced integrations to optimize business processes and reduce costs. Prominent integrations like GitHub and Figma stand out among these. Moreover, there are numerous other integration options available. As a result, developers can minimize the cost of localizations.

Cons:

  1. Paid Service: Localizely is a paid service. This could present a financial challenge for individuals or those with limited budgets.
  2. Technical Issues: Like any technological solution, using Localizely may entail encountering technical problems. It is crucial to have a communication channel that offers swift and effective support.
  3. Configuration Switches: I noticed this issue while using Localizely myself. After setting up Github integration, you need to check or, if necessary, modify the localizely.yml configuration file every time. This situation leaves room for error (user error or forgetfulness). Perhaps there could have been a more straightforward and secure approach to this, but for me, it is one of the major drawbacks.

Overall, we’ve discussed the pros and cons of Localizely. Of course, the advantages outweigh the disadvantages. I believe that after using this technology, you will agree with me 😀

How to Use Localizely?

To effectively utilize Localizely, I assume you have already created an account and logged into the platform. Now, let’s go through the steps you need to take to start translating your projects:

Step 1: Adding Language

After logging into the Localizely panel, select your project to begin. Next, add the languages in which you want to translate the content. This marks the beginning of the internationalization process for your project.

For instance, if the primary language of your project is English and you’re targeting Turkish and Spanish as additional languages, add these languages to your project. This way, you can target users in different regions by presenting your content in these languages.

Languages

As seen in the image above, the Main Language is set to English. You can change it according to your preference. You can also add languages other than the primary one. For example, I have added German here. You can add and use any language you desire.

Step 2: Branch Configuration

Localizely comes with its own branch system, much like GitHub, to organize your workspace. This allows multiple users to work in their own branches, protecting the main project so that everyone’s work doesn’t interfere with each other. This system not only facilitates collaboration but also ensures the integrity of the project. Each user working in their own branch ensures that translations are integrated smoothly. As a result, making the project multilingual happens in a more organized and effective manner.

Branches

As seen above, you can add new branches, delete them, or even merge them.

After specifying the branch name, you can determine from which source branch it should be copied using the Source branch.

You can select the branch you will work with in Localizely, as shown above. This way, you determine which branch you are working on.

When your work is complete, you can merge the branches with the Compare operation. This process compares the source branch with the selected branch, displaying the changes made clearly. For example, you can see if a new string key has been added. Then, after reviewing the changes, you can merge the branches as needed.

Step 3: Adding new Key-Value from the Panel

In the Localizely platform, adding, editing, and deleting key-value pairs to effectively manage your project’s content is quite easy. You can view all your keys under the Translations tab. However, it’s important to remember that the displayed keys are determined based on the selected branch.

If you have added a new key, it is important to enter the language equivalents for this key. You can determine the values with the following steps. Particularly, pay attention to the usage of placeholders.

Important: These placeholders are used in places where a specific value will dynamically change. For example, if you want to display your username in a greeting message, you can use this placeholder to create a dynamic message.

At this stage, it is important to specify the placeholder variables enclosed in curly braces. For example, like {name}

After this stage, all you need to do is determine your own properties for this placeholder.

As seen above, when editing a key with a placeholder (edit), it is important to specify all the placeholders in the CUSTOM tab. In my case, I only have one placeholder named {name}. You should enter the same name here and specify its type (String, int, double, etc.). That’s it! You’ve now edited the placeholder and specified its type. With this step, you’ve created a new key-value pair. You can continue working with new keys in the selected branch and send them to your project whenever you want.

Step 4: Github Integration

Now it’s time to send and use the key-value pairs we have. I will explain the GitHub integration at this stage, but you can also use different integrations. Additionally, if you want to examine this process in detail, you can refer to the documentation here.

Create a file named localizely.yml in the root folder of the project.

config_version: 1.0 # Required. Only 1.0 available
project_id: c776c33e-f428-4c91-87e1-a6a18c1554fe # Required. Your project ID from: https://app.localizely.com/projects
file_type: flutter_arb # Required. Available values : android_xml, ios_strings, ios_stringsdict, java_properties, rails_yaml, angular_xlf, flutter_arb, dotnet_resx, po, pot, json, csv, xlsx
branch: main # Optional. Your branch in Localizely project to sync files with.
upload: # Required.
files: # Required. List of files for upload to Localizely. Usually, it is just one file used for the main locale
- file: lib/l10n/intl_en.arb # Required. Path to the translation file
locale_code: en # Required. Locale code for the file. Examples: en, de-DE, zh-Hans-CN
params: # Optional.
overwrite: true # Optional, default: false. If the translation in a given language should be overwritten with modified translation from uploading file.
reviewed: false # Optional, default: false. If uploading translations, that are added, should be marked as Reviewed. For uploading translations that are only modified it will have effect only if overwrite is set to true.
tag_added: # Optional. List of tags to add to new translations from uploading file.
- added
tag_removed: # Optional. List of tags to add to removed translations from uploading file.
- removed
tag_updated: # Optional. List of tags to add to updated translations from uploading file.
- updated
download: # Required.
files: # Required. List of files for download from Localizely.
- file: lib/l10n/intl_en.arb # Required. Path to the translation file
locale_code: en # Required. Locale code for the file. Examples: en, de-DE, zh-Hans-CN
- file: lib/l10n/intl_de.arb # Required. Path to the translation file
locale_code: de # Required. Locale code for the file. Examples: en, de-DE, zh-Hans-CN
params:
export_empty_as: empty # Optional, default: empty. How you would like empty translations to be exported. Allowed values are `empty` to keep empty, `main` to replace with the main language value, or `skip` to omit.
exclude_tags: # Optional. List of tags to be excluded from the download. If not set, all string keys will be considered for download.
- removed
include_tags: # Optional. List of tags to be downloaded. If not set, all string keys will be considered for download.
- new
java_properties_encoding: utf_8 # Optional, default: latin_1. (Only for Java .properties files download) Character encoding. Available values : `utf_8`, `latin_1`

In this section, there are two crucial pieces of information: Project ID and branch name.

  • Project ID: You should enter the designated project ID on Localizely. This ID serves as the unique identifier for your project on the Localizely platform.
  • Branch Name: Here, you need to input the name of the branch you have created and are using on Localizely. This is essential for managing different versions and translations of your project.

You can also change other optional parameters according to your preference,

You need to go to the Settings tab and click on the GitHub section. Here, you have to add GitHub configurations.

As indicated in the example above, a Personal Access Token will be required for GitHub integration. You can create an access token on GitHub using the link.

After entering the other configurations, you will see a screen like the one below. Here, you can see which branch of your GitHub repository you are using, the webhook you have linked for auto pull, and the owner of the integration.

As shown in the image above, after completing all the settings, you can create a pull request on your GitHub branch by clicking the “PUSH NOW” button. (Before creating it, if you want, you can click the “Edit Push Config” button to specify a name for the PR you will create.)

As seen above, after clicking “PUSH NOW,” a PR is created. You can review and merge it according to your preference, and use it.

Step 5: Instant Translation Updates (Over the Air)

Localizely enables you to remotely manage translations for your Flutter applications, allowing you to update text translations in your mobile apps without the necessity of releasing a new version on the App Store or Google Play.

Note: This feature is commonly used, especially when you want to correct spelling mistakes, optimize text, or update translations instantly.

For more information, you can use this link.

--

--