<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Petr Hodný</title>
    <description>The latest articles on Forem by Petr Hodný (@petrhodny).</description>
    <link>https://forem.com/petrhodny</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F619555%2Fb2671dbd-5ba8-436f-8d06-8a3b1756b473.png</url>
      <title>Forem: Petr Hodný</title>
      <link>https://forem.com/petrhodny</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/petrhodny"/>
    <language>en</language>
    <item>
      <title>How to localize Go app with go-i18n and Localazy</title>
      <dc:creator>Petr Hodný</dc:creator>
      <pubDate>Wed, 21 Jul 2021 10:52:30 +0000</pubDate>
      <link>https://forem.com/localazy/how-to-localize-go-app-with-go-i18n-and-localazy-2501</link>
      <guid>https://forem.com/localazy/how-to-localize-go-app-with-go-i18n-and-localazy-2501</guid>
      <description>&lt;p&gt;&lt;strong&gt;Are you looking for a straightforward approach how to localize your Go app into other languages? Seek no more - Localazy will take care of it for you.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Localazy is a universal &lt;a href="https://localazy.com/dictionary/translation-management-system-tms"&gt;translation management platform&lt;/a&gt; that supports a wide variety of &lt;a href="https://localazy.com/integrations"&gt;formats and frameworks&lt;/a&gt;. It is a platform tailor-made for developers.&lt;/p&gt;

&lt;p&gt;Thanks to the &lt;a href="https://localazy.com/docs/cli/installation"&gt;Localazy CLI&lt;/a&gt;, you can easily set up the download and upload commands to be part of your automation once and never be bothered by key extraction, file merging, and looking up which translations are still missing ever again.&lt;/p&gt;

&lt;p&gt;Or you can just upload everything once, translate and download back manually. The choice is yours, and the &lt;a href="https://localazy.com/dictionary/localization"&gt;localization &lt;/a&gt; possibilities are endless.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚩 Localization with go-i18n
&lt;/h2&gt;

&lt;p&gt;This article will show you how to prepare your &lt;a href="https://localazy.com/go"&gt;Go project&lt;/a&gt; for localization using a very popular &lt;a href="https://github.com/nicksnyder/go-i18n"&gt;go-i18n&lt;/a&gt;  package.&lt;/p&gt;

&lt;p&gt;You will learn how to connect your Go app to Localazy, include your source keys in your main language in the application, and resolve the messages by their keys for both singular and plural variants in your primary language as well as others. Let's dive into it!&lt;/p&gt;

&lt;h2&gt;
  
  
  🙄 tldr;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;sign up for &lt;a href="https://localazy.com/register"&gt;Localazy&lt;/a&gt; ,&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://localazy.com/my/create"&gt;create an app&lt;/a&gt; with English as source language and &lt;em&gt;Use community translations (ShareTM)&lt;/em&gt; option enabled,&lt;/li&gt;
&lt;li&gt;select &lt;a href="https://localazy.com/go"&gt;Go&lt;/a&gt; integration option and install &lt;a href="https://localazy.com/docs/cli/installation"&gt;Localazy CLI&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;include &lt;a href="https://github.com/nicksnyder/go-i18n"&gt;go-i18n&lt;/a&gt; in your app,&lt;/li&gt;
&lt;li&gt;create &lt;code&gt;localazy.json&lt;/code&gt; in root and paste in and modify the &lt;a href="https://localazy.com/docs/cli/quick-start-go"&gt;configuration&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;create &lt;code&gt;locales&lt;/code&gt; folder and in it create &lt;code&gt;en.json&lt;/code&gt;. Add any translation key-value pair,&lt;/li&gt;
&lt;li&gt;run &lt;code&gt;localazy upload&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;in Localazy, add any language. Then review it and accept the suggested phrases,&lt;/li&gt;
&lt;li&gt;run &lt;code&gt;localazy download&lt;/code&gt; and check &lt;code&gt;locales&lt;/code&gt; folder for the new locale,&lt;/li&gt;
&lt;li&gt;run the app &lt;code&gt;go run main.go&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🕹️ Sign up and app creation
&lt;/h2&gt;

&lt;p&gt;First of all, let's &lt;a href="https://localazy.com/register"&gt;set up a new Localazy account&lt;/a&gt; and &lt;a href="https://localazy.com/my/create"&gt;create a new application&lt;/a&gt;. In this article, we'll use English as the source language, but you can generally choose any other. Make sure that the &lt;em&gt;Use community translations (ShareTM)&lt;/em&gt; option is enabled.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://localazy.com/docs/general/what-is-localazy-sharetm"&gt;ShareTM&lt;/a&gt; is highly accurate &lt;a href="https://localazy.com/dictionary/translation-memory"&gt;translation memory&lt;/a&gt;. Thanks to it, most new applications have as much as &lt;strong&gt;50 % of strings automatically pre-translated&lt;/strong&gt; into 80+ languages.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Proceed to create the app. Then, select Go on the integration screen. We'll use the powerful CLI tool to manage the upload and download of phrases. &lt;a href="https://localazy.com/docs/cli/installation"&gt;Installation&lt;/a&gt; is available for Linux, macOS, and Windows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note the read and write keys from step 2 somewhere.&lt;/strong&gt; We'll need them shortly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oU79SUfx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wo8yb7g9fw7i4n0mfw2j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oU79SUfx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wo8yb7g9fw7i4n0mfw2j.png" alt="Localazy.com Integration Page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Set up Go app
&lt;/h2&gt;

&lt;p&gt;If you don’t want to follow the step-by-step guide here, you can take a look at the  &lt;a href="https://github.com/localazy/go-i18n-example"&gt;finished repo&lt;/a&gt;. Otherwise, stay awhile and listen.&lt;/p&gt;

&lt;h3&gt;
  
  
  Configuration
&lt;/h3&gt;

&lt;p&gt;First of all, initialize a Go module which is a core tool for managing dependencies. Since we'll be using Go packages, it just makes dependency management easier.&lt;/p&gt;

&lt;p&gt;Just run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;go mod init go-i18n-example
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The next thing to do is to integrate Localazy. Create &lt;code&gt;localazy.json&lt;/code&gt; in the root of your application and paste the following configuration. Use the write and read keys from the step 2 of the integration guide page.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "writeKey": "your-write-key",
    "readKey": "your-read-key",

    "upload": {  
      "type": "json",
      "files": "locales/en.json",
      "features": ["plural_object"]  
    },

    "download": {
      "files": "locales/${lang}.json"
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The upload section is for locating the source language file and uploading all of the source keys. Note the &lt;code&gt;plural_object&lt;/code&gt;  &lt;a href="https://localazy.com/docs/cli/json-format#defined-as-object"&gt;option&lt;/a&gt;, this configures to recognize plural variants using key-value approach.&lt;/p&gt;

&lt;p&gt;The download section is configured to download the published languages in Localazy back to the &lt;code&gt;locales&lt;/code&gt; folder under the language's tag name.&lt;/p&gt;

&lt;p&gt;However, the English language file is still missing. So create &lt;code&gt;en.json&lt;/code&gt; within the &lt;code&gt;locales&lt;/code&gt; folder. Since we’ve set English to be the source language, this file will contain the source keys for our application. You can fill in any key-value pair you like. I’ll add this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "listen": "Stay a while and listen",
    "person": {
        "one": "person",
        "other": "people"
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Go code
&lt;/h3&gt;

&lt;p&gt;Got the pun? Go (as verb) code?😅 Anyways, create a &lt;code&gt;main.go&lt;/code&gt; file in the root folder and paste in the following code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// main.go
package main

import (
    "encoding/json"
    "fmt"

    "github.com/nicksnyder/go-i18n/v2/i18n"
    "golang.org/x/text/language"
)

func initLocalizer(langs ...string) *i18n.Localizer {
    // Create a new i18n bundle with English as default language.
    bundle := i18n.NewBundle(language.English)

    // Register a json unmarshal function for i18n bundle.
    // This is to enable usage of json format
    bundle.RegisterUnmarshalFunc("json", json.Unmarshal)

    // Load source language
    bundle.LoadMessageFile("./locales/en.json")

    // Initialize localizer which will look for phrase keys in passed languages
    // in a strict order (first language is searched first)
    // When no key in any of the languages is found, it fallbacks to default - English language
    localizer := i18n.NewLocalizer(bundle, langs...)

    return localizer
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We have prepared a factory function for initialization of &lt;code&gt;localizer&lt;/code&gt; object from the &lt;code&gt;go-i18n&lt;/code&gt; package that is responsible for looking up strings in selected language by it's key.&lt;/p&gt;

&lt;p&gt;As you can see, the &lt;code&gt;initLocalizer&lt;/code&gt; function is defined as &lt;a href="https://gobyexample.com/variadic-functions"&gt;variadic&lt;/a&gt; which means it can take an arbitrary number of arguments. That is convenient since you may want, in certain scenarios, to look up the string in several languages, especially when you're just searching for regional variants.&lt;/p&gt;

&lt;p&gt;Now, let's add the rest of the example code that will print a single message that combines the simple key and the plural key we've defined earlier in the &lt;code&gt;json&lt;/code&gt; localization file.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You could also use other formats if you prefer, such as TOML or YAML.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I will already predefine &lt;em&gt;Latin American Spanish&lt;/em&gt; as the first desired language and then *Spanish * as a first possible fallback. We don't have those translations yet, but we will shortly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// main.go

...

func main() {
    //
    localizer := initLocalizer(
        language.LatinAmericanSpanish.String(),
        language.Spanish.String(),
    )

    simpleMessage, _ := localizer.Localize(&amp;amp;i18n.LocalizeConfig{
        MessageID: "listen", // source key identifier
    })

    pluralMessage, _ := localizer.Localize(&amp;amp;i18n.LocalizeConfig{
        DefaultMessage: &amp;amp;i18n.Message{ID: "person"}, // another source key identifier
        PluralCount:    2, // would use "one" variant if the count was 1
    })

    fmt.Println(simpleMessage + ", " + pluralMessage)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your project structure should look like this at this point:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
├── locales
│   └── en.json
├── go.mod
├── go.sum
├── localazy.json
└── main.go
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can already test it out. Run &lt;code&gt;go run main.go&lt;/code&gt; and you should see &lt;em&gt;Stay a while and listen, people&lt;/em&gt; message in your terminal. Since the &lt;code&gt;localizer&lt;/code&gt; could not find those keys in either Spanish variant, it has fallen back to the English language.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/go-i18n-example $ go run main.go

Stay a while and listen, people
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ↪️ Uploading and downloading strings
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Upload using CLI
&lt;/h3&gt;

&lt;p&gt;Let's upload the English file to Localazy. From the root folder, run the following command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;localazy upload -s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;-s&lt;/code&gt; argument stands for simulate. It is a good practice to test out the configuration without uploading anything to assure that nothing unexpected happens (such as some of the key-value pairs are incorrectly matched and override each other). &lt;/p&gt;

&lt;p&gt;The output should be something along these lines, depending on the CLI version.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Localazy CLI, v1.4.5
Command-line tool for the Localazy platform.

Read more information at https://localazy.com/docs/cli

Parameters:
  - deprecate missing: false
  - import as new: false
  - force current: false
  - filter source: true
  - app version: 0
  - groups: (default only)
  - folder: .

Processing files...

locales/en.json
(file: file.json, lang: inherited, type: json)

Verifying...

Validating...

Done.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And now, let's let upload it for real.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;localazy upload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Translate and review with the power of ShareTM
&lt;/h3&gt;

&lt;p&gt;Refresh your app page and you should see the English language on the list. Open the &lt;em&gt;Add languages&lt;/em&gt; tab and there you find a couple of languages with info about the percentage of automated translations.&lt;/p&gt;

&lt;p&gt;It is possible that you will see either 50 % or 100 %. The automated matching with  &lt;a href="https://localazy.com/docs/general/what-is-localazy-sharetm"&gt;ShareTM&lt;/a&gt; improves all the time and it's likely that thanks to this article you would have all the strings automatically translated. How cool is that? 🙂&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e2BGIqFZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i94tfybb0hsgy3dppg0x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e2BGIqFZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i94tfybb0hsgy3dppg0x.png" alt="Localazy.com - ShareTM - Software Localization"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One way or another, look up Spanish and Latin American Spanish and add them to your app. You'll see that there is a review button. Every time ShareTM provides a translation suggestion, it will have candidate status. This means that it will be ready for review, and any reviewer can either approve it or decline it. Go ahead and approve the suggested text(s).&lt;/p&gt;

&lt;p&gt;In case that the ShareTM did not translate 100 %, come back to the languages list and notice that the review button now reads translate. Localazy recognizes that there is nothing to review but still something to translate, so it offers you the next most likely action in one click.&lt;/p&gt;

&lt;p&gt;Translate the remaining texts (you may use one of the suggestions on the translation page). This time you do not need to go through the review process since you are a trusted translator as owner by default, so the translation is immediately approved.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use newly translated languages
&lt;/h3&gt;

&lt;p&gt;It's time to go back to the Go project. 🙃&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;localazy download
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With this command, you'll download all the recently accepted translations and newly added languages. In the &lt;code&gt;locales&lt;/code&gt; folder, we can see there are newly created &lt;code&gt;es.json&lt;/code&gt; and &lt;code&gt;es-419.json&lt;/code&gt; files.&lt;/p&gt;

&lt;p&gt;This how your final project structure should look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
├── locales
│   ├── en.json
│   ├── es-419.json
│   └── es.json
├── go.mod
├── go.sum
├── localazy.json
└── main.go
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's include these translations in the application. Add the following lines to the &lt;code&gt;initLocalizer&lt;/code&gt; function just below where you load the English file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bundle.LoadMessageFile("./locales/es-419.json")
bundle.LoadMessageFile("./locales/es.json")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now when you rerun the app, you'll see that Localazy correctly translated the strings to Spanish.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/go-i18n-example $ go run main.go

Quédate un rato y escucha, Personas
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ✔️ Closing words
&lt;/h2&gt;

&lt;p&gt;I hope you've enjoyed this sneak peek at what Localazy can do for you and understood how easy it is to start localizing any Go app with it. If you would like to play around with the prototype, you can check it out on  &lt;a href="https://replit.com/@DanCharvt/go-i18n-example#main.go"&gt;Replit&lt;/a&gt;. The whole git repository is available on &lt;a href="https://github.com/localazy/go-i18n-example"&gt;GitHub&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;If you have any questions, just join us on our &lt;a href="https://discord.gg/sQucDznuMp"&gt;Discord&lt;/a&gt; for a chat.&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>localization</category>
      <category>i18n</category>
      <category>go</category>
    </item>
    <item>
      <title>How to convert Android XML to iOS .strings using Localazy</title>
      <dc:creator>Petr Hodný</dc:creator>
      <pubDate>Tue, 20 Jul 2021 07:36:38 +0000</pubDate>
      <link>https://forem.com/localazy/how-to-convert-android-xml-to-ios-strings-using-localazy-5444</link>
      <guid>https://forem.com/localazy/how-to-convert-android-xml-to-ios-strings-using-localazy-5444</guid>
      <description>&lt;p&gt;&lt;strong&gt;Localizable file format conversion is not an easy task, considering the required transformation, the different support for plural forms, and the many other challenges of converting one file to another format.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fortunately, &lt;a href="https://localazy.com"&gt;Localazy&lt;/a&gt; comes with the  &lt;a href="https://localazy.com/docs/general/format-conversions-add-on"&gt;Format Conversions&lt;/a&gt; feature and vast support of  &lt;a href="https://localazy.com/integrations"&gt;formats and integrations&lt;/a&gt; you can utilize by downloading our multiplatform  &lt;a href="https://localazy.com/docs/cli/the-basics"&gt;command-line interface (CLI) tool&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  🔖 Why Android XML to iOS .strings?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://localazy.com/dictionary/android"&gt;Android &lt;/a&gt; and &lt;a href="https://localazy.com/dictionary/ios"&gt;iOS &lt;/a&gt; are, without a doubt, the most used mobile operating systems, both with billions of users and with the largest app stores in the global market.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://localazy.com/android"&gt;Android &lt;/a&gt; and &lt;a href="https://localazy.com/ios"&gt;iOS&lt;/a&gt; app development differs, but you can preserve the content. So, you can develop an Android app first, and as long as you keep the strings and the remaining content (audio, images, video, etc.) &lt;a href="https://localazy.com/dictionary/externalized-string"&gt;external&lt;/a&gt;, you'll be able to reuse it to develop an iOS version of the app.&lt;/p&gt;

&lt;p&gt;This approach allows you not to have to do everything from scratch again and save your time.&lt;/p&gt;

&lt;h2&gt;
  
  
  ❓ What are localizable file format conversions?
&lt;/h2&gt;

&lt;p&gt;To localize a project, we need to keep everything the user sees external to ensure that whenever we need to adapt the project to different areas/regions/countries, we won't have to fiddle with the code every time we want to add a new locale.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Read our guide on &lt;a href="https://localazy.com/blog/guide-preparing-application-for-i18n-l10n-localazy"&gt;How to prepare your app for i18n &amp;amp; l10n&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The text is how we mainly communicate with the user, and so we need to keep the strings outside the code, stored in a file with a determined format. This format depends on the framework/library we are using, as different frameworks/libraries have specific structures they work with.&lt;/p&gt;

&lt;p&gt;So, what will happen if we want to adapt our product to new platforms or integrate new tools and utilize different localizable file formats? Will your files be unusable? No, Localazy got your back; we'll convert the file formats for you with our  &lt;a href="https://localazy.com/docs/general/format-conversions-add-on"&gt;Format Conversions&lt;/a&gt; feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  Is localizable file conversion with Localazy free or paid?
&lt;/h3&gt;

&lt;p&gt;Format Conversions are available for all users with the Localazy &lt;a href="https://localazy.com/docs/general/localazy-professional-tier"&gt;Professional&lt;/a&gt; tier and up.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;See the &lt;a href="https://localazy.com/pricing"&gt;pricing page&lt;/a&gt; for options&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It will pay off with the first single conversion you perform—no limitations as of formats, number of operations, or conversion data volume. Once you make it a part of your workflow and automate converting localizable files, your dev life will get easier, we can guarantee that. 🤩&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--o8Y22WGk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1626699202828/YxYpcvOaT.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--o8Y22WGk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1626699202828/YxYpcvOaT.png" alt="image.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  📋 Sample Android XML to iOS .strings conversion
&lt;/h2&gt;

&lt;p&gt;To demonstrate the feature, we'll create an &lt;code&gt;XML&lt;/code&gt; file, and we'll do an example conversion to &lt;code&gt;.strings&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Simple setup
&lt;/h3&gt;

&lt;p&gt;Let's start by creating a directory to keep our files organized. It will have the following layout :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
├── locales
├── converted
├── localazy.exe
└── localazy.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;locales&lt;/code&gt; folder is where we will keep the file we want to convert, and in the &lt;code&gt;converted&lt;/code&gt; folder, we will store the converted files. All of this will have to be configured in our &lt;code&gt;localazy.json&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;localazy.exe&lt;/strong&gt; file is the Localazy CLI; if you use a different OS, you might not have to have it downloaded and stored here.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For more information about the Localazy CLI, check &lt;a href="https://localazy.com/docs/cli/the-basics"&gt;The Basics – Localazy&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Inside our &lt;code&gt;locales&lt;/code&gt; folder, we'll create an Android XML file with a few strings, we'll name it &lt;code&gt;en.xml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;resources
    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"&amp;gt;
    &amp;lt;string name="android"&amp;gt;"Android was developed by Google"&amp;lt;/string&amp;gt;
    &amp;lt;string name="conversion"&amp;gt;"I\'m converting files"&amp;lt;/string&amp;gt;
    &amp;lt;string name="ios"&amp;gt;"iOS was developed by Apple"&amp;lt;/string&amp;gt;
    &amp;lt;string name="weather_answer"&amp;gt;"It\'s rainy and cold"&amp;lt;/string&amp;gt;
    &amp;lt;string name="weather_question"&amp;gt;"How\'s the weather outside?"&amp;lt;/string&amp;gt;
&amp;lt;/resources&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our directory will now look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
├── locales
│   └── en.xml
├── converted
├── localazy.exe
└── localazy.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You have to configure the &lt;code&gt;localazy.json&lt;/code&gt; file depending on what we are doing. In this case, we are doing a simple conversion between two formats, so we'll keep the configuration simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
   "writeKey":"your-write-key",
   "readKey":"your-read-key",
   "upload":{
      "type":"android",
      "files":"/locales/en.xml"
   },
   "conversion":{
      "actions":{
         "type":"ios-strings",
         "output":"converted/${lang}.lproj/Localizable.strings"
      }
   }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As you can see, we have two sections. The &lt;code&gt;upload&lt;/code&gt; section is built to configure the upload properties, and the &lt;code&gt;conversion&lt;/code&gt; section is built to configure how and to what you want to convert your uploaded files into.&lt;/p&gt;

&lt;p&gt;We also have the &lt;code&gt;writeKey&lt;/code&gt; and &lt;code&gt;readKey&lt;/code&gt; fields. Here you have to place your project's keys.&lt;/p&gt;

&lt;p&gt;To get your keys, log in to your Localazy account and create a new project by choosing the format you'll use to upload. When you create the project, you'll get the keys, and then you can place them in the &lt;code&gt;localazy.json&lt;/code&gt; configuration file.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Remember that the &lt;a href="https://localazy.com/docs/general/format-conversions-add-on"&gt;Format Conversions feature&lt;/a&gt; is only available for users with the &lt;a href="https://localazy.com/docs/general/localazy-professional-tier"&gt;Professional tier&lt;/a&gt; and up, meaning that the following steps will not function if you are on the Free plan and the feature is locked. &lt;strong&gt;However, you can activate a 7-day trial of the Professional plan to try everything out.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Most work is done, now you'll have to open your &lt;code&gt;CMD&lt;/code&gt;  in the root of your directory and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;localazy upload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When this command is finished, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;localazy download
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your directory will now look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
├── locales
│   └── en.xml
├── converted
|   └── en.lproj
|       └── Localizable.strings
├── localazy.exe
└── localazy.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;Localizable.strings&lt;/code&gt; file will contain the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"android" = "Android was developed by Google";
"conversion" = "I'm converting files";
"iOS" = "iOS was developed by Apple";
"weather_answer" = "It's rainy and cold";
"weather_question" = "How's the weather outside?";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Easy right?&lt;/p&gt;

&lt;h3&gt;
  
  
  Plurals
&lt;/h3&gt;

&lt;p&gt;This far, we only showed you the basics of our Android to iOS file format conversion, and our example was pretty simple with a few strings.&lt;/p&gt;

&lt;p&gt;But, what if we throw in some plurals as well?&lt;/p&gt;

&lt;p&gt;Let's add the following strings to our Android XML original file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;plurals name="availableSongs"&amp;gt;
    &amp;lt;item quantity="one"&amp;gt;%d song found.&amp;lt;/item&amp;gt;
    &amp;lt;item quantity="other"&amp;gt;%d songs found.&amp;lt;/item&amp;gt;
&amp;lt;/plurals&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because we're converting to iOS, our plurals will have to be placed in a &lt;code&gt;.stringsdict&lt;/code&gt; file, meaning that we'll have to configure our &lt;code&gt;localazy.json&lt;/code&gt; file to distinguish the plain strings from the plurals and put them in the different file format.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
   "writeKey":"your-write-key",
   "readKey":"your-read-key",
   "upload":{
      "type":"android",
      "files":"/locales/en.xml"
   },
   "conversion":{
      "actions":[
         {
            "type":"ios-stringsdict",
            "output":"converted/${lang}.lproj/Localizable.stringsdict",
            "params":{
               "variable":"COUNT"
            }
         },
         {
            "filterPlurals":true,
            "type":"ios-strings",
            "output":"converted/${lang}.lproj/Localizable.strings"
         }
      ]
   }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because we are generating a &lt;code&gt;.stringsdict&lt;/code&gt; file, we are required to add the field &lt;code&gt;variable&lt;/code&gt; inside &lt;code&gt;params&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;When we run Localazy CLI's &lt;code&gt;upload&lt;/code&gt; and &lt;code&gt;download&lt;/code&gt; commands, our directory will now look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;├── locales
│   └── en.xml
├── converted
|   └── en.lproj
|       └── Localizable.strings
|       └── Localizable.stringsdict
├── localazy.exe
└── localazy.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our plain strings are in the &lt;code&gt;Localizable.strings&lt;/code&gt; file, and our plurals are in the &lt;code&gt;Localizable.stringsdict&lt;/code&gt; file.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;Localizable.strings&lt;/code&gt; file should look like this:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"android" = "Android was developed by Google";
"conversion" = "I'm converting files";
"ios" = "iOS was developed by Apple";
"weather_answer" = "It's rainy and cold";
"weather_question" = "How's the weather outside?";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;And &lt;code&gt;Localizable.stringsdict&lt;/code&gt; like this:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&amp;gt;
&amp;lt;plist version="1.0"&amp;gt;
    &amp;lt;dict&amp;gt;
        &amp;lt;key&amp;gt;availableSongs&amp;lt;/key&amp;gt;
        &amp;lt;dict&amp;gt;
            &amp;lt;key&amp;gt;NSStringLocalizedFormatKey&amp;lt;/key&amp;gt;
            &amp;lt;string&amp;gt;%#@COUNT@&amp;lt;/string&amp;gt;
            &amp;lt;key&amp;gt;COUNT&amp;lt;/key&amp;gt;
            &amp;lt;dict&amp;gt;
                &amp;lt;key&amp;gt;NSStringFormatSpecTypeKey&amp;lt;/key&amp;gt;
                &amp;lt;string&amp;gt;NSStringPluralRuleType&amp;lt;/string&amp;gt;
                &amp;lt;key&amp;gt;NSStringFormatValueTypeKey&amp;lt;/key&amp;gt;
                &amp;lt;string&amp;gt;d&amp;lt;/string&amp;gt;
                &amp;lt;key&amp;gt;one&amp;lt;/key&amp;gt;
                &amp;lt;string&amp;gt;%d song found.&amp;lt;/string&amp;gt;
                &amp;lt;key&amp;gt;other&amp;lt;/key&amp;gt;
                &amp;lt;string&amp;gt;%d songs found.&amp;lt;/string&amp;gt;
            &amp;lt;/dict&amp;gt;
        &amp;lt;/dict&amp;gt;
    &amp;lt;/dict&amp;gt;
&amp;lt;/plist&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Platform Specific Key Filtering
&lt;/h3&gt;

&lt;p&gt;In some cases we might need to filter some strings, for that we have the platform key filtering option.&lt;/p&gt;

&lt;p&gt;Let's add a few strings that contain 'Android' into our Android XML file. For simplification we are not including the Plurals section here, as we only want basic strings:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;resources
    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"&amp;gt;
    &amp;lt;string name="android"&amp;gt;"Android was developed by Google"&amp;lt;/string&amp;gt;
    &amp;lt;string name="conversion"&amp;gt;"I\'m converting files"&amp;lt;/string&amp;gt;
    &amp;lt;string name="ios"&amp;gt;"iOS was developed by Apple"&amp;lt;/string&amp;gt;
    &amp;lt;string name="weather_answer"&amp;gt;"It\'s rainy and cold"&amp;lt;/string&amp;gt;
    &amp;lt;string name="weather_question"&amp;gt;"How\'s the weather outside?"&amp;lt;/string&amp;gt;
    &amp;lt;string name="android_love"&amp;gt;"I love Android"&amp;lt;/string&amp;gt;
    &amp;lt;string name="android_best"&amp;gt;"Android is the best mobile OS"&amp;lt;/string&amp;gt;
&amp;lt;/resources&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We probably won't use the strings showing our Android affection in the iOS version of our app, so what now?&lt;/p&gt;

&lt;p&gt;Let's add one more field in the &lt;code&gt;localazy.json&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
   "writeKey":"your-write-key",
   "readKey":"your-read-key",
   "upload":{
      "type":"android",
      "files":"/locales/en.xml"
   },
   "conversion":{
      "actions":{
         "excludeKeys":[
            "CONTAIN:android"
         ],
         "type":"ios-strings",
         "output":"converted/${lang}.lproj/Localizable.strings"
      }
   }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;excludeKeys&lt;/code&gt; field allows you to filter out strings depending on the content of their keys.&lt;/p&gt;

&lt;p&gt;In this case we just added the operation &lt;code&gt;CONTAIN&lt;/code&gt; which filters out keys that contain the declared value. There are various operations available and you can add multiple operations inside an array.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Check all the available operations in the &lt;a href="https://localazy.com/docs/cli/excluding-string-keys"&gt;documentation&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let's run our CLI once again, and the result is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"conversion" = "I'm converting files";
"ios" = "iOS was developed by Apple";
"weather_question" = "How's the weather outside?";
"weather_answer" = "It's rainy and cold";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  📌 Closing Words
&lt;/h2&gt;

&lt;p&gt;As you can see, it's effortless to convert localizable file formats with the Format Conversions feature of Localazy.&lt;/p&gt;

&lt;p&gt;It's time to expand your project to other platforms. If file conversion is something you are battling within your  &lt;a href="https://localazy.com/dictionary/continuous-integration"&gt;CI/CD&lt;/a&gt; , consider getting the &lt;a href="https://localazy.com/pricing"&gt;Localazy Professional plan&lt;/a&gt; and make your dev life easier with automatic file format conversions. ✌️&lt;/p&gt;

</description>
      <category>ios</category>
      <category>android</category>
      <category>i18n</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>An overview of software localization and i18n tools (2021)</title>
      <dc:creator>Petr Hodný</dc:creator>
      <pubDate>Fri, 14 May 2021 06:53:33 +0000</pubDate>
      <link>https://forem.com/localazy/an-overview-of-software-localization-and-i18n-tools-2021-36cb</link>
      <guid>https://forem.com/localazy/an-overview-of-software-localization-and-i18n-tools-2021-36cb</guid>
      <description>&lt;p&gt;As a developer, you have pretty extensive software internationalization options, language localization, and phrase translation solutions. But when it comes to decision making, the wide variety makes it harder to make a qualified decision on which solution is the best for you and your project. How could one navigate in such a plethora of options?&lt;/p&gt;

&lt;p&gt;Let's take a closer look at it!&lt;/p&gt;

&lt;h2&gt;
  
  
  🎌 Difference between internationalization and localization
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://localazy.com/dictionary/internationalization" rel="noopener noreferrer"&gt;Internationalization (i18n)&lt;/a&gt; is the preparation of software for multilingual support. &lt;a href="https://localazy.com/dictionary/localization" rel="noopener noreferrer"&gt;Localization (l10n)&lt;/a&gt; is the process of aligning internationalized software with particular cultures' needs, whether you align language, meanings, values, beliefs, or visual code.&lt;/p&gt;

&lt;h2&gt;
  
  
  🤔 Many factors coming into the decision process
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Technologic compatibility&lt;/li&gt;
&lt;li&gt;Service accessibility&lt;/li&gt;
&lt;li&gt;Service availability&lt;/li&gt;
&lt;li&gt;Technical debt&lt;/li&gt;
&lt;li&gt;User experience&lt;/li&gt;
&lt;li&gt;Easiness of adoption and maintenance&lt;/li&gt;
&lt;li&gt;Business compliance&lt;/li&gt;
&lt;li&gt;Business model/pricing policy&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🛠️ Types of software i18n&amp;amp;l10n&amp;amp;t9n solutions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;i18n frameworks, formats&lt;/li&gt;
&lt;li&gt;language technology providers&lt;/li&gt;
&lt;li&gt;language service providers&lt;/li&gt;
&lt;li&gt;software localization services&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🗃️ i18n frameworks, formats, and language technology providers
&lt;/h2&gt;

&lt;p&gt;There are multiple i18n frameworks and formats worldwide you can use for your software internationalization project. All of them have some specialties.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://localazy.com/xliff" rel="noopener noreferrer"&gt;XLIFF file format&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://localazy.com/po" rel="noopener noreferrer"&gt;PO file format&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://localazy.com/android" rel="noopener noreferrer"&gt;Android XML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://localazy.com/flutter" rel="noopener noreferrer"&gt;Flutter Arb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://localazy.com/blog/javascript-app-localization-i18next-localazy" rel="noopener noreferrer"&gt;i18next&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://localazy.com/json" rel="noopener noreferrer"&gt;Multilingual JSON&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://localazy.com/ios" rel="noopener noreferrer"&gt;iOS .strings, .stringsdict, .plist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://localazy.com/yaml" rel="noopener noreferrer"&gt;YAML&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://localazy.com/properties" rel="noopener noreferrer"&gt;Java properties&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And many more, which you can find on the &lt;a href="https://localazy.com/integrations" rel="noopener noreferrer"&gt;Localazy Integrations page&lt;/a&gt;. If you think something is missing, kindly let us know, and we will make sure Localazy supports your platform.&lt;/p&gt;

&lt;h4&gt;
  
  
  Lost in localizable file format conversions?
&lt;/h4&gt;

&lt;p&gt;Activate the &lt;a href="https://localazy.com/docs/general/format-conversions-add-on" rel="noopener noreferrer"&gt;Format Conversions add-on&lt;/a&gt; and seamlessly output your translations in many different formats. Format conversions come especially handy when you are developing your app simultaneously on multiple platforms or when you need to share texts between the front-end and back-end of your project.&lt;/p&gt;

&lt;p&gt;Once you activate the Format Conversions add-on, you can start using new commands in the &lt;a href="https://localazy.com/docs/cli/the-basics" rel="noopener noreferrer"&gt;Localazy CLI tool&lt;/a&gt;  to convert your localizable files into different formats. Make it a part of your workflow and automate file format conversions to output your translations in many different formats seamlessly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fupdzkypq094s10n9robe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fupdzkypq094s10n9robe.png" alt="Format Conversions add-on"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Language technology providers
&lt;/h3&gt;

&lt;p&gt;The language technology provider will enable you to use their technology to translate your software; however, they will most probably not offer complete localization services, including phrase translations. It is then only your responsibility to implement the technology and use it to localize your software projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Language service providers
&lt;/h3&gt;

&lt;p&gt;Language service providers usually provide you with the underlying technology. Still, their core business is preferably in the localization services itself - they help you translate phrases using professional translators, provide you with cultural expertise, and so on. LSPs are, by principle, more expensive because there is an increased portion of human work, and technology is just a part of the workflow. You may still want to check if your LSP uses proper technology, not adding pennies to your bill because of tech debt and non-effective workflows.&lt;/p&gt;

&lt;h3&gt;
  
  
  Software localization services
&lt;/h3&gt;

&lt;p&gt;Highly specialized providers focused on software. While language tech and service providers can offer you to localize software and content in general, software localization services dedicate themselves to the SW development vertical. They are thus highly qualified for your kind of job, frequently from i18n to l10n of user interfaces.&lt;/p&gt;

&lt;h3&gt;
  
  
  Going further in the software category
&lt;/h3&gt;

&lt;p&gt;The software localization category can go even further. Notably, there are companies focused on the gaming industry, such as Keyword Studio. And there are companies focused on single developers and small digital teams, such as Localazy. If you want to localize your software as an expert, but enterprise solutions are not a cup of your coffee, give us a try.&lt;/p&gt;

&lt;h3&gt;
  
  
  Combined solutions / A lá carte
&lt;/h3&gt;

&lt;p&gt;Within the market, you can, of course, find combined / A lá carte solutions for your project. Just make your choice of the service you need and order. Do you need only technology? Or do you need just translations? Or maybe both?&lt;/p&gt;

&lt;p&gt;No problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  📌 List of i18n/l10n/t9n services and frameworks
&lt;/h2&gt;

&lt;p&gt;Let's dive into the actual tools you can use for localization and translation management. Which one should you pick? That depends on your budget, goals, expectations, and the size of your team and project. Allow us to introduce some of them in the following section.&lt;/p&gt;

&lt;h3&gt;
  
  
  Editor's pick
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxncge2dw86pt3cjwl6a9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxncge2dw86pt3cjwl6a9.png" alt="Localazy.com Homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  🔵 Localazy.com
&lt;/h4&gt;

&lt;p&gt;Which localization tool is the best? You guessed it. 😎 Obviously, &lt;a href="https://localazy.com/benefits" rel="noopener noreferrer"&gt;it's Localazy&lt;/a&gt;! 😀 Why?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;By developers, for developers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Localazy is a developer-friendly automated localization platform. With the powerful &lt;a href="https://localazy.com/docs/cli/the-basics" rel="noopener noreferrer"&gt;CLI tool&lt;/a&gt; and comprehensive &lt;a href="https://localazy.com/integrations" rel="noopener noreferrer"&gt;integrations&lt;/a&gt;, any developer can localize their project conveniently.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;See the &lt;a href="https://localazy.com/integrations" rel="noopener noreferrer"&gt;list of available integrations and supported file formats&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Learn &lt;a href="https://localazy.com/tags/howto" rel="noopener noreferrer"&gt;how to integrate Localazy&lt;/a&gt; into your project
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Flexible and affordable pricing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can use Localazy &lt;strong&gt;for free&lt;/strong&gt; and enjoy all core localization features without any recurring payments. Zero compromises, unlimited localization features. &lt;/p&gt;

&lt;p&gt;The free plan includes: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unlimited apps&lt;/li&gt;
&lt;li&gt;Unlimited languages &amp;amp; translations&lt;/li&gt;
&lt;li&gt;Unlimited machine translations&lt;/li&gt;
&lt;li&gt;All integrations &amp;amp; formats&lt;/li&gt;
&lt;li&gt;200 managed source phrases&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Localazy offers affordable plans suitable for single developers and bigger teams alike.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;See our &lt;a href="https://localazy.com/pricing" rel="noopener noreferrer"&gt;pricing&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Instant translations with &lt;a href="https://localazy.com/docs/general/what-is-localazy-sharetm" rel="noopener noreferrer"&gt;ShareTM technology&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We are developers; we share our code, we cooperate, share our knowledge and libraries. We have this in our DNA. It saves us time and money; it helps us to move forward faster and produce better software. ShareTM is what makes Localazy unique and different from other translation platforms. &lt;/p&gt;

&lt;p&gt;ShareTM is a pro-active &lt;a href="https://localazy.com/dictionary/translation-memory" rel="noopener noreferrer"&gt;translation memory&lt;/a&gt; that translates your app automatically to new languages. It works like magic!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Powerful features&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Discover add-ons that make translating and maintaining your project even more enjoyable.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://localazy.com/docs/general/connected-apps" rel="noopener noreferrer"&gt;Connected Apps&lt;/a&gt; share translations across backend and frontend, from Android to iOS, or anything else you would like. Many-to-many translation shared memory.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://localazy.com/docs/general/format-conversions-add-on" rel="noopener noreferrer"&gt;Format Conversions&lt;/a&gt; allow you to convert translated files between different formats. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://localazy.com/docs/general/release-tags-add-on" rel="noopener noreferrer"&gt;Release Tags&lt;/a&gt; allow you to release translation updates iteratively only when you want. Test translations on stage before pushing to production.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://localazy.com/docs/general/additional-mt-engines" rel="noopener noreferrer"&gt;Additional MT&lt;/a&gt; will give you three other powerful machine translation engine suggestions to help you make more accurate translations and unlock other features.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Translation on auto-pilot&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Focus on what's important and use &lt;a href="https://localazy.com/docs/general/virtual-translator" rel="noopener noreferrer"&gt;Virtual Translator (VT)&lt;/a&gt; to automatically translate and review your phrases to selected languages. Choose between &lt;a href="https://localazy.com/dictionary/hamt" rel="noopener noreferrer"&gt;human-assisted machine translation&lt;/a&gt; or professional translations, and we will handle everything from there!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unique review process&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our review process is a pro-active tool that helps you verify translations and keep track of all changes that happened on Localazy while you spent your precious time making your product better. &lt;/p&gt;

&lt;p&gt;The primary function of the review process is to help you with verifying new translations from your contributors. You can accept or reject translations or mark them as acceptable but not good enough, etc.&lt;/p&gt;

&lt;p&gt;As an addition to the approve/reject mechanism, you can directly edit the suggested translation and alter it. That's extremely useful for minor changes. The translation may be perfect but with a small issue such as a missing exclamation mark or typo, which is something you can quickly fix on your own.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://localazy.com/docs/general/unique-review-process-and-self-managed-translations" rel="noopener noreferrer"&gt;Learn more about the review process&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Clean and user-friendly UI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Even though software developers might be fairly used to encountering obscure tools and outdated interfaces, we strive to make all of our users feel at home and pay great attention to UX and design our interfaces thoughtfully. &lt;/p&gt;

&lt;p&gt;Clean UI displaying all of the important information with minimal clutter will help you focus better and get things done quickly. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read a &lt;a href="https://localazy.com/blog/intro-localazy-translators-perspective" rel="noopener noreferrer"&gt;review of Localazy UI by an experienced translator&lt;/a&gt; Michał Tosza&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Stellar support and community engagement&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our users frequently mention our dedication to customer support and fast response times in their &lt;a href="https://www.trustpilot.com/review/localazy.com" rel="noopener noreferrer"&gt;reviews&lt;/a&gt; and &lt;a href="https://localazy.com/testimonials" rel="noopener noreferrer"&gt;testimonials&lt;/a&gt;. Please chat with us whenever you have a question or encounter an issue on your localization journey! We are here to help. 😊&lt;/p&gt;

&lt;p&gt;We also love to communicate with our users and involve them in the development process. Whether we ask for feedback, invite them to test new features early, or just exchange banter in the &lt;a href="https://discuss.localazy.com/" rel="noopener noreferrer"&gt;forum&lt;/a&gt;, we are always happy to talk! &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CDN and OTA updates&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Our &lt;a href="https://localazy.com/docs/general/localazy-cdn" rel="noopener noreferrer"&gt;CDN&lt;/a&gt; allows you to use translated files directly in your project without needing to rebuild and publish. Just get the link, and you won't have to worry about updates of translations. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://localazy.com/android" rel="noopener noreferrer"&gt;Android&lt;/a&gt; developers can integrate our &lt;a href="https://localazy.com/docs/android/localazy-gradle-plugin" rel="noopener noreferrer"&gt;Gradle plugin&lt;/a&gt; that will do the work for them. Integrate &lt;a href="https://localazy.com/docs/android/only-ota-updates-that-really-work" rel="noopener noreferrer"&gt;Localazy OTA updates&lt;/a&gt; without a single change of your source code. &lt;/p&gt;

&lt;h3&gt;
  
  
  Other popular tools
&lt;/h3&gt;

&lt;p&gt;The following section will list some of the other most popular translation management platforms for software developers. They are listed in no particular order, and you can compare each with Localazy to see who will fit your needs better. &lt;/p&gt;




&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1w8t4562i1uhdidb7o1v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1w8t4562i1uhdidb7o1v.png" alt="Lokalise.com Homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  🟠 &lt;a href="https://localazy.com/lokalise-alternative" rel="noopener noreferrer"&gt;Lokalise.com&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Trusted by prominent brands like Revolut, Daimler, and TESCO, Lokalise is without a doubt a well-established tool for localization and translation management. A great variety of valuable features such as real-time translations for support tickets and in-context editing makes Lokalise an excellent choice for teams requiring distinct localization approaches in their daily operations. &lt;/p&gt;

&lt;p&gt;But, even though Lokalise offers a 14-day trial to test out their Enterprise plan, with the Start plan starting at 90 dollars (billed annually), Lokalise is one of the pricier options out there. &lt;/p&gt;

&lt;p&gt;Localazy offers core localization features for &lt;strong&gt;free up to 200 phrases&lt;/strong&gt;, why not give us a shot?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://localazy.com/lokalise-alternative" rel="noopener noreferrer"&gt;Compare Lokalise vs. Localazy&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12p40eri59exucu7twn9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F12p40eri59exucu7twn9.png" alt="Smartling.com Homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  🟣 Smartling
&lt;/h4&gt;

&lt;p&gt;Smartling is considered a market leader in the computer-assisted translation field. With customers like Shopify, Pinterest, Vimeo, and other big names, we can only agree that it is a valid assumption. Smartling emphasizes the human aspect of CAT and prides itself in connecting customers directly with their translators. Smartling also offers a robust infrastructure and a unique approach to translation performance tracking. &lt;/p&gt;

&lt;p&gt;However, the pricing is not transparent, so you can't know how much Smartling will cost you without asking them first. Becoming a part of Smartling might prove expensive, but their linguistic asset management services look promising in increasing translation quality control for any language. &lt;/p&gt;

&lt;p&gt;Localazy offers a &lt;strong&gt;&lt;a href="https://localazy.com/pricing" rel="noopener noreferrer"&gt;transparent pricing&lt;/a&gt;&lt;/strong&gt; model with many core features free.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdur1kvdkzdz856xapwli.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdur1kvdkzdz856xapwli.png" alt="Phrase.com Homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  🔵 &lt;a href="https://localazy.com/phrase-alternative" rel="noopener noreferrer"&gt;Phrase.com&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Previously known as PhraseApp, &lt;a href="https://localazy.com/phrase-alternative" rel="noopener noreferrer"&gt;Phrase.com&lt;/a&gt; is an established all-in-one software localization platform with many features for the whole team. The idea of the Phrase platform is centered around translation workflow management and different roles employed in the process. &lt;/p&gt;

&lt;p&gt;However, Phrase is not outfitted with &lt;a href="https://localazy.com/dictionary/machine-translation" rel="noopener noreferrer"&gt;machine translations (MT)&lt;/a&gt;, so you are either on your own, or you can order professional translation services on the platform. Phrase allows a 14-day trial, and the Basic plan starts at 23 dollars a month at the date of publishing this post. &lt;/p&gt;

&lt;p&gt;Localazy offers &lt;strong&gt;machine translations&lt;/strong&gt; for all users to speed up the process and minimize the localization headache.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://localazy.com/phrase-alternative" rel="noopener noreferrer"&gt;Compare Phrase vs. Localazy&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzuvb3csupxute8gbdu7b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzuvb3csupxute8gbdu7b.png" alt="AppLanga.com Homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  🔵 &lt;a href="https://localazy.com/applanga-alternative" rel="noopener noreferrer"&gt;AppLanga.com&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;AppLanga is an online translation management platform that specializes in the localization of native mobile apps and games. AppLanga offers its' own SDK, integration with leading platforms for mobile app development, in-context editor, and OTA updates to speed up the delivery of localization changes to users. &lt;/p&gt;

&lt;p&gt;There is no phrase limit, and you can even use AppLanga free of charge for a small project with under 1000 MAU (monthly active users). To access more features such as glossary and invite team members, you have to upgrade to the Pro plan, which is 500 dollars per month. &lt;/p&gt;

&lt;p&gt;With Localazy, you can use the &lt;strong&gt;Glossary&lt;/strong&gt; and invite your teammates to help you with translation even on the free plan!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://localazy.com/applanga-alternative" rel="noopener noreferrer"&gt;Compare AppLanga vs. Localazy&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Forxzv4sa5m716wv4ucnk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Forxzv4sa5m716wv4ucnk.png" alt="Localise.biz Homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  🟢 &lt;a href="https://localazy.com/loco-alternative" rel="noopener noreferrer"&gt;Localise.biz (Loco)&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Loco is a simple platform for translation management supporting 14 file formats. With the free plan, you can translate two projects into up to 10 languages. Loco is an affordable option with the Pro plan starting at only 6 dollars a month, and you can increase the limit with additional monthly charges. You can also automate the distribution of localization files with the Loco API. &lt;/p&gt;

&lt;p&gt;However, Loco does not offer any translation services or MT engines, and you have to handle the translations on your own. Loco is also available as a free WordPress plugin for a user-friendly localization of themes and plugins, making it perfect for indie WordPress developers or handy site owners who are looking for a free option to localize their WordPress site. &lt;/p&gt;

&lt;p&gt;With Localazy, you can set up the &lt;strong&gt;&lt;a href="https://localazy.com/docs/general/virtual-translator" rel="noopener noreferrer"&gt;Virtual Translator&lt;/a&gt;&lt;/strong&gt; to translate your apps or use machine translations. On top of that we don't limit the number of projects or languages!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://localazy.com/loco-alternative" rel="noopener noreferrer"&gt;Compare Loco vs. Localazy&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjc5ag9aclhdw9n8onls.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjc5ag9aclhdw9n8onls.png" alt="homepage-transifex-com"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  🟣 &lt;a href="https://localazy.com/transifex-alternative" rel="noopener noreferrer"&gt;Transifex.com&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Transifex is a cloud-based localization platform trusted by some of the world's tech leaders such as Atlassian, Trello, or Disqus, to name a few. Transifex offers a variety of integrations not only for developers but for designers, support platforms, and e-commerce solutions as well. With Transifex, you can also manage localization workflows, order professional translations and view comprehensive reports to measure your efforts. &lt;/p&gt;

&lt;p&gt;You can try Transifex for free. The Basic plan starts at $70 / month and offers up to 50,000 words, unlimited projects, and essential tools to start localizing your project. However, the initial setup might not be the easiest out there, according to some reviews. &lt;/p&gt;

&lt;p&gt;Integrate Localazy in minutes with our &lt;strong&gt;&lt;a href="https://localazy.com/docs/cli/the-basics" rel="noopener noreferrer"&gt;developer friendly CLI tool&lt;/a&gt;&lt;/strong&gt; and try Localazy for free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://localazy.com/transifex-alternative" rel="noopener noreferrer"&gt;Compare Transifex vs. Localazy&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6j6nznwh1mbax9px2g7r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6j6nznwh1mbax9px2g7r.png" alt="ICanLocalize.com Homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  🟠 ICanLocalize
&lt;/h4&gt;

&lt;p&gt;Focusing on professional translation delivery between over 400 language pairs, ICanLocalize is a great choice for one-time projects. They also offer transparent pricing with rates that start at 0.09 USD per word and no additional storage fees. Since ICanLocalize is the company behind the WPML plugin for WordPress, using their services for translating WordPress websites should be easy. &lt;/p&gt;

&lt;p&gt;Translating &lt;a href="https://localazy.com/android" rel="noopener noreferrer"&gt;Android&lt;/a&gt; or &lt;a href="https://localazy.com/ios" rel="noopener noreferrer"&gt;iOS&lt;/a&gt; apps is possible with ICanLocalize too, but you have to upload files manually every time you make a change in your project, which means you must add an extra step into your workflow. You can also upload any documents for translation, and with their Instant translation service, translating short texts is possible within minutes for common language pairs. &lt;/p&gt;

&lt;p&gt;You can &lt;strong&gt;&lt;a href="https://localazy.com/tags/automated-localization" rel="noopener noreferrer"&gt;fully automate the localization&lt;/a&gt;&lt;/strong&gt; process with Localazy and forget about handling files manually thanks to our &lt;strong&gt;&lt;a href="https://localazy.com/docs/cli/the-basics" rel="noopener noreferrer"&gt;CLI&lt;/a&gt;&lt;/strong&gt;, and &lt;strong&gt;&lt;a href="https://localazy.com/docs/general/localazy-cdn" rel="noopener noreferrer"&gt;CDN&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg34ywejue0bswidh572x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg34ywejue0bswidh572x.png" alt="OneSkyApp.com Homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  🔵 &lt;a href="https://localazy.com/oneskyapp-alternative" rel="noopener noreferrer"&gt;OneSkyApp.com&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;OneSky offers an end-to-end localization solution with 50+ Languages, 1,000+ Translators, and 19 compatible file formats. OneSky is an established platform that has helped many companies localize their mobile apps and games, including HubSpot, Ubisoft, and Microsoft. Pricing at OneSky is pay per word, starting at $0.04 for translation and $0.05 for review, and offers only translators with technical experience and industry-specific knowledge suitable for your project. &lt;/p&gt;

&lt;p&gt;Additionally, OneSky offers App Store Integration for description translation and On-Device Testing to ensure your UI won't break in other language versions, emphasizing their specialization in apps and games. &lt;/p&gt;

&lt;p&gt;Localazy offers a wider variety of approaches to the localization process. You can translate your apps on your own, invite volunteers or order the &lt;strong&gt;&lt;a href="https://localazy.com/docs/general/virtual-translator" rel="noopener noreferrer"&gt;Virtual Translator&lt;/a&gt;&lt;/strong&gt;. We don't push you to pay per translated word if you don't want to!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://localazy.com/oneskyapp-alternative" rel="noopener noreferrer"&gt;Compare OneSkyApp vs. Localazy&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvjuxfvcipezuew81067s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvjuxfvcipezuew81067s.png" alt="i18nexus.com Homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  🟢 i18nexus
&lt;/h4&gt;

&lt;p&gt;i18nexus allows you to quickly edit, automate, and manage your translations and connect them to your website, app, or video game with the i18next framework. &lt;a href="https://localazy.com/dictionary/i18next" rel="noopener noreferrer"&gt;i18next&lt;/a&gt; is a flexible &lt;a href="https://localazy.com/json" rel="noopener noreferrer"&gt;JSON&lt;/a&gt; approach that works with all modern tech stacks, including libraries for React, Angular, Node, iOS, Ruby on Rails... i18next is one of the top open-source internationalization frameworks and Localazy supports i18next as well!&lt;/p&gt;

&lt;p&gt;i18nexus translates your app using Google Translate immediately, but you have to source professional translators yourself and invite them to i18nexus if you want to localize your app professionally. The free plan is quite generous, offering up to 500 strings for free; the basic plan (up to 3000 strings) starts at $14 / mo. &lt;/p&gt;

&lt;p&gt;Localazy allows you to &lt;strong&gt;&lt;a href="https://localazy.com/dictionary/i18next" rel="noopener noreferrer"&gt;automate your i18next project localization&lt;/a&gt;&lt;/strong&gt; and order professional translators when you are ready. You can fully focus on development and improvement of your software, while Localazy handles the rest for you! &lt;/p&gt;




&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmqh2hmuqnb5un7byl1rb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmqh2hmuqnb5un7byl1rb.png" alt="Lingoport.com Homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  🟣 Lingoport
&lt;/h4&gt;

&lt;p&gt;Lingoport is a full-service solution that provides a broad range of software internationalization services customized to fit your release goals, technologies, engineering resources, and budget. Established in 2001, Lingoport is trusted by the world's largest software companies, including Snapchat, VISA, or Dell. &lt;/p&gt;

&lt;p&gt;Lingoport Suite consists of three products: Globalyzer, Localyzer, and Localyzer QA that work together to support i18n, L10n, and QA. All Lingoport Suite products offer various license choices ranging from cloud hosting, private cloud installation, and on-premise installation. On the other hand, you can't easily find the pricing models for any of the options offered by Lingoport, so you would have to contact them with your specific case. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://localazy.com/tags/automated-localization" rel="noopener noreferrer"&gt;Automate the localization&lt;/a&gt;&lt;/strong&gt; of your project with Localazy, start for free and upgrade when you need. Deliver your translations via our &lt;strong&gt;&lt;a href="https://localazy.com/docs/general/localazy-cdn" rel="noopener noreferrer"&gt;CDN&lt;/a&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;a href="https://localazy.com/docs/android/only-ota-updates-that-really-work" rel="noopener noreferrer"&gt;OTA updates&lt;/a&gt;&lt;/strong&gt;, and don't waste time on complicated setup and maintenance. &lt;/p&gt;




&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdkufp1wmr87qi75cczqj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdkufp1wmr87qi75cczqj.png" alt="GitLocalize.com Homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  🟡 GitLocalize (part of Alconost)
&lt;/h4&gt;

&lt;p&gt;Aimed at single developers and small teams, GitLocalize is a free and simple-to-use translation management tool that integrates directly with your GitHub repository. GitLocalize tracks changes in your repository and pulls them into the project. Translations are then sent to the repository via a pull request. &lt;/p&gt;

&lt;p&gt;Setup is easy, and translations can be managed statically on a file level and compared to the original by segment. Since the tool is free, you shouldn't expect any built-in machine translation help or professional translation services, so this important part of the localization process has to be sourced elsewhere. &lt;/p&gt;

&lt;p&gt;Localazy can do the same as GitLocalize and much more for you, e.g.:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;translate your project with &lt;a href="https://localazy.com/dictionary/machine-translation" rel="noopener noreferrer"&gt;machine translations&lt;/a&gt; and &lt;a href="https://localazy.com/docs/general/what-is-localazy-sharetm" rel="noopener noreferrer"&gt;ShareTM&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;fully &lt;a href="https://localazy.com/tags/automated-localization" rel="noopener noreferrer"&gt;automate the localization process&lt;/a&gt; with the &lt;a href="https://localazy.com/docs/general/virtual-translator" rel="noopener noreferrer"&gt;Virtual Translator&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;deliver translations to your users via &lt;a href="https://dev.todocs/general/localazy-cdn"&gt;CDN&lt;/a&gt;... &lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F80mbza5vv2yd0ve0dx88.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F80mbza5vv2yd0ve0dx88.png" alt="IBabbleOn.com Homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  ⚫ Babble-on
&lt;/h4&gt;

&lt;p&gt;Babble-on is an expert team of native translators and writers. With their app localization service, you can have your app translated professionally into any language of your choice. Babble-on supports around 20 file formats. You can sync via Github or Bitbucket or send them the latest export of your strings to get your translated files back in a few days. &lt;/p&gt;

&lt;p&gt;Babble-on can handle the whole process for you, or you can join their translation system and participate by adding context &amp;amp; screenshots, answer translators' questions, and remove texts you don't want to translate. Pay $0.21 per word, with zero monthly fees. Babble-on can also help you with your app descriptions and press releases in different languages.&lt;/p&gt;

&lt;p&gt;With Localazy, you can translate your apps on your own with the help of machine translation engines, invite volunteers or order the &lt;strong&gt;&lt;a href="https://localazy.com/docs/general/virtual-translator" rel="noopener noreferrer"&gt;Virtual Translator&lt;/a&gt;&lt;/strong&gt; to translate your project automatically and pro-actively. &lt;/p&gt;




&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frca99mfwcluxn0zi1thm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frca99mfwcluxn0zi1thm.png" alt="Locize.com Homepage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  🔵 &lt;a href="https://localazy.com/locize-alternative" rel="noopener noreferrer"&gt;locize.com&lt;/a&gt;
&lt;/h4&gt;

&lt;p&gt;Locize is a translation management system with a variety of features built by the creators of &lt;a href="https://localazy.com/dictionary/i18next" rel="noopener noreferrer"&gt;i18next&lt;/a&gt;. You'll find features aimed at teams, contributors, and managers, as well as single developers + other essential tools for efficient translation management. Locize also offers professional translations, and machine translations are included within the system as well. &lt;/p&gt;

&lt;p&gt;On top of that, you can translate your website directly from your browser with their InContext Editing tool. Locize employs a variable "pay as you go" pricing model that might be hard to understand at first, and the UI might seem cluttered for some users, but you can try a 14-day trial to see if Locize is what you are looking for.&lt;/p&gt;

&lt;p&gt;Translate your app comfortably and enjoy the clean and user-friendly interface of Localazy. Also, please don't get lost in pricing calculations, take a look at our transparent and easy to understand &lt;a href="https://localazy.com/pricing" rel="noopener noreferrer"&gt;pricing&lt;/a&gt; ;-) &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://localazy.com/locize-alternative" rel="noopener noreferrer"&gt;Compare Locize vs Localazy&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;h4&gt;
  
  
  and more...
&lt;/h4&gt;

&lt;p&gt;This list is not exhaustive, if you would like to see a comparison with your current platform or service not included in the list, kindly let us know. ;-) &lt;/p&gt;

&lt;h2&gt;
  
  
  ✔️ In conclusion
&lt;/h2&gt;

&lt;p&gt;We hope this article helped serve as a broad overview of solutions available for software localization and translation management. &lt;/p&gt;

&lt;p&gt;At Localazy, we are working very hard to become the go-to option for software developers in need of a localization platform. We believe that everyone should be able to enjoy software in their native language. We want to bring together developers, users &amp;amp; translators that believe in the same thing and provide them with an effortless way of translating their projects. &lt;/p&gt;

&lt;p&gt;We value the feedback of our current or potential users. Whether you are a developer or freelance translator, &lt;a href="https://discuss.localazy.com/" rel="noopener noreferrer"&gt;join our forum&lt;/a&gt; and let us know what you think!  &lt;/p&gt;

&lt;h2&gt;
  
  
  💖 Why developers love Localazy?
&lt;/h2&gt;

&lt;p&gt;Whether you are a single developer or an agency, you can rely on Localazy when it comes to i18n &amp;amp; l10n! &lt;br&gt;
&lt;strong&gt;&lt;a href="https://localazy.com/testimonials" rel="noopener noreferrer"&gt;Read our testimonials!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>localization</category>
      <category>i18n</category>
      <category>l10n</category>
      <category>translations</category>
    </item>
  </channel>
</rss>
