Translation, localization, internationalization — often hear all three of these words lumped together, but what’s the difference? Aren’t those three synonyms? Actually, no: each one has its own meaning.
Each of these terms refers to a specific part of the localization process. Translation, done by a translator or machine, swaps one language for another, keeping the same meaning (what is being said). Localization goes deeper, including the cultural nuances and norms (how it’s being said). Internationalization is the technical foundation for translation and localization and it is done by developers.
What is software internationalization?
Software internationalization refers specifically to the design and development of a product, application, or document content so that it can be localized for target audiences that vary in culture, region, or language. It’s your responsibility as a developer to prepare your software for global expansion.
In this article, we’ll talk about how to get started.
Software internationalization and localization
Software internationalization operates on a technical level underneath the umbrella of localization efforts. While software localization involves attuning your formatting to a global audience (such as dates, times, numeric values, design, and cultural cues), software internationalization prepares your codebase for accepting these variations between different languages.
Rather than hardcode each language, internationalization replaces texts with placeholders that automatically retrieve the correct language value for the user without engineering changes.
4 things to consider when you internationalize your software
Every process is different, but internationalizing your software generally involves the following steps:
1. Creating placeholders
When coding a given user interface, use placeholders for the text that call back to your translation files. These placeholders search across the translation files to serve up the correct language to the user.
Take the purchase flow, for example. Instead of literally typing in “Buy now” for your purchase button, code in a placeholder that will display the words “Buy now” in the correct language instead. This can vary based on your systems, but generally is done with Unicode, making sure the concatenation of strings avoids any dependence with user-interface string values within a code. Some technologies offer special text extractors, while in others you will have to perform this process manually.
You may need to add features into your software that supports this, such as markup, support for bidirectional text, language identifiers, or CSS support for vertical languages, right-to-left languages like Hebrew or Arabic, or other specific language markings, like accents or punctuation.
2. Enabling cultural formatting
To support localization, you’ll need to make sure the source code can recognize different regional language or cultural preferences. This can be done by incorporating localization data and locale-specific components into your source library. You’ll want to make sure your code will recognize formats for date and time, calendars, writing systems, telephone numbers, number formats, personal names, and honorifics, for example.
An easy example of this is with time formats. In the United States, we use a 12-hour clock, so it can be 2:00 PM or 2:00 AM, depending on if you’re talking about the early afternoon or wee hours of the morning. But different countries use different systems. In most other countries, they use a 24-hour clock, so 2:00 refers only to 2:00 AM, while 2:00 PM would be 14:00.
3. Organizing your source code
Structure your software application by including separate files for each language. To prepare your code for localization, you’ll need to extract all of the text within an application and store it outside the code itself. Rather than hard-coding the text within a software application, create separate files by language so that it’s easy to export and import them without harming the rest of the code.
For file formats, keep the content as clean as possible by nesting the strings to logically group each set of translations. Create a naming convention for each string so you easily understand what in the text you’re referring to (such as, “Headline” or “CTA button”). Then, those translation files can be uploaded to a translation management system like Lokalise.
Here’s an example from Ruby on Rails framework:
<h1><%= t 'main.welcome' %></h1> <h2><%= t 'main.description' %></h2>
We display two headings but instead of hardcoding the text, we use a special function
t (which is an alias for
translate). This function accepts a placeholder name which called a translation key. Then, you can create translation files in YAML format and provide translations for these keys:
en: main: welcome: "Welcome to the app!" description: "We offer a wide range of services"
4. Optimizing for your code language
Regardless of what programming language or technology you’re using, you can internationalize your software. At Lokalise, we support all major programming languages and frameworks.
Read through our more detailed tutorials on how to internationalize with:
- VueJS framework
- Rails framework
- iOS and Android
- …and other examples listed in this article.
You may also be interested in learning about common localization issues developers face and how to solve them.
8 tools for software internationalization
Software internationalization can be complex, particularly if you’re trying to add localization into the software development process. Once you know which international markets you’re targeting, you can begin the process of internationalizing your application.
To be able to expand your operations globally and into new languages, you must also expand the mindset and culture of your development team. You may be asked to ship new features or code on a weekly or biweekly basis — and while translation does take time, there are ways to automate the localization process and create a localization workflow that performs:
1. Command-line interface (CLI)
Now, this is not a tool specifically for internationalization, but one any developer should have in their toolbox.
At Lokalise, we built a CLI specifically to help the localization process, allowing developers to download files, create projects, add more contributors, and more. Instead of using a mouse or user interface for every operation, run a single command that does the job. For example, with one command you can download translations files for English, French, and German languages in JSON format from the specified project with the tags “main” and “register,” and skip all empty translations.
2. Application programming interface (API)
APIs are a flexible way to make any localization workflow process easy for your team. Write code once and it works indefinitely. You can learn more about our API and check some examples in the following article.
Webhooks send automatic notifications from one application to another. In Lokalise, you can use webhooks to export translation files to another app or service, easily notifying your tools when translations are downloaded and including those resource files so the service can process and use the translations automatically.
4. In-context editing
In-context editing tools give your translators and team members more context by showing where and how the translated text will be displayed. This is especially helpful with approvals and iterations across larger teams, so you can easily see how translated language flows into new interfaces or content types.
By giving you the ability to translate a website while browsing it, you can more easily see the impacts on the design and software development.
5. Code repository
You’re probably already using a tool like Azure Repos, GitHub, Bitbucket, and GitLab to host code, collaborate, and discuss and review code changes. What matters in the context of software internationalization are integrations with your translation management system.
Making sure your code and your translations can talk to one another makes the process go much more smoothly. If you’ve separated your translation files and formatted them properly, you can more easily update and maintain them when you need to in one of these tools.
Pseudolocalization is an important tool for i18n testing purposes. It gives you a sense of the amount of space different languages will take up in your design, allowing you to understand levels of expansion, contraction, or vertical space, without actually doing a translation.
What this means is instead of translating a given text word for word, certain textual elements are replaced with a kind of gibberish that approximates the amount of space the language would actually take on the page. Pseudolocalization of the text first can give you a chance to optimize your UI for your target languages, ship your product quicker, and eliminate hacky code later.
7. Designer tools
At Lokalise, we also integrate with tools like Figma, Adobe XD, and Sketch so you can easily see how your designs will change based on the target language and so you can design defensively. Our integrations allow to exchange translations between designer tools and TMS with just a couple of clicks!
We couldn’t help but include Lokalise on this list. Going global requires many moving parts, and we’re here to help you move through the complex process of software internationalization and beyond.
With powerful localization workflow management tools that allow your team to collaborate, manage, and review translations in a productive, flexible, and efficient way, you’ll expand into global markets easily. Try us free for 14 days, no credit card required.