The terms “internationalization” and “localization” are often used interchangeably, which leads to some confusion, especially among software developers. This article explains what internationalization really is, and how to best approach it in your company.


Let’s start with quoting Wikipedia:

Localization is the process of adapting internationalized software for a specific region or language by translating text and adding locale-specific components.

Internationalization is the process of designing a software application so that it can be adapted to various languages and regions without engineering changes.

The key takeaway here is that, unlike localization, internationalization is a developer task, i.e. it should be done well before the product launch. It requires careful planning, as well as development processes and tools tailored for this purpose.

Key aspects of internationalization

Internationalization is a complex process that involves many aspects. The most important ones are:

1. User Interface (UI) design

The UI should be designed in such a way that it can be easily adapted to various languages and regions. This includes:

  • Fonts: The UI should use fonts that can be easily changed to others if they are not available in other languages.
  • Colors and images: Those should be easily changeable too, because sometimes colors and images can have negative connotations in other cultures.
  • Text-containing elements: Ideally, these should be designed in such a way that they will work with both very long and very short texts, as well as right-to-left scripts.

2. Data format and storage

Strings should be stored in a way that makes them easy to localize. This includes:

  • Encoding: Strings should be encoded using UTF-8, which is the most widely used encoding for Unicode strings.
  • Grammar forms: Strings should be designed in such a way that they can be easily adapted to different plural and gender forms, e.g. using the ICU format.
  • Dates and times: These should be stored in a format that is easy to localize, e.g. using the ISO 8601 standard.
  • Numbers: These should be stored in a format that is easy to localize, e.g. using the ISO 4217 standard for currencies and the UN M.49 standard for region codes.

A common mistake that is to store strings right in the code, e.g. for user interface elements like buttons or fields. This makes localization much harder down the line and can lead to significant delays in product launches.

3. Processes and tools

Internationalization is a complex process that requires careful planning and development. It also requires tools to support the process, e.g. for translation memory & terminology management or for automated testing of localized products.

There are many tools available for this, but we recommend focusing on those that enable a CI/CD process for translation and localization. This way, you won’t have to manually send content for translation or check the status of the work done by translators.

Where to start?

Internationalization starts before the product is built and it continues even after it has been launched. Therefore, internationalization should be a part of the top level planning process.

1. Find (or become) the internationalization champion

Ironically, the most challenging part is often to convince everyone concerned that internationalization can have a huge impact on the success of the product and should be taken seriously.

To do this, you should prepare a clear argumentation about the business benefits of internationalization, e.g. that it can increase your revenue by making your product available to new customers in new markets, or that it can reduce your costs by saving time and money spent on localizing products later on.

An anecdotal example you can use here is the story of Lotus 1-2-3, a once market-leading spreadsheet product. However, all their strings were hard-coded, so when they decided to localize the product, they had to spend two years separating the code from the text, ultimately resulting in losing the race to Microsoft.

2. Figure out the format(s) and tool(s) you will use

Once the need for i18n is clear to everyone, you can start thinking about the technicalities. For example:

  • What format will you use for storing strings and converting them to actual text within your code?
  • What tools/technologies will you use for translation and localization?
  • What roles and responsibilities will be involved in the process?

Ideally, you would draw up a detailed internationalization plan/strategy and design a process that can be followed across all your products, so that it will be easy to adapt to the needs of each new launch once the strategy has been established. This will also help avoid discussing the same things over and over again.

3. Execute and monitor

Once the strategy has been established, it is time to execute and monitor the process. Start by introducing the new tools and technologies that will support your process, then gradually introduce new roles, responsibilities and processes (but don’t overdo it).

Look for pain points in the process and eliminate them, e.g. by automating something or finding a new tool to make something easier. Continue to collect feedback from localizers and adjust the process accordingly.

In the end, it is all about creating a solid process with an efficient and effective workflow. This will also make it easier to start with localizing future products. The more your internationalization process becomes established, the less you will need to think about it.

Conclusion

Internationalization is a vital part of the product development process, but it can be very challenging to get it going in the right direction, especially when the benefits of doing it aren’t clear to everyone.

Hopefully, this short article has helped you get started in the right direction.

You might just as well want to check out Smartcat, an all-in-one localization platform that supports a variety of localization approaches, has a built-in marketplace of both freelancers and translation agencies, and has integrations with the most popular version control systems.