Getting started with i18n (internationalization) and l10n (localization) can be quite complex, especially if you have never implemented these concepts before. Many developers find themselves asking: how do I add internationalization support to my application?
The short answer is: it depends. Nowadays, there are lots of programming languages and frameworks with their own specifics and caveats. Therefore, the i18n solution to employ will largely depend on the technology and platform you choose. To make things simpler for you, we have created this article listing useful internationalization tutorials for developers.
Just find your specific technology, open the corresponding post, and learn how to get things done! We will constantly update this post as new articles arrive on our blog.
General i18n and l10 information for developers
- What is software localization? The ultimate introductory guide — this article explains what localization is in the first place. Plus, it lists seven best practices that you should keep in mind.
- Translation keys: Naming and organizing — this post summarizes best practices for managing translation keys. All in all, the explanations are technology-independent, and will be useful for any developer.
Python and frameworks
- A beginner’s guide to Python i18n — in this tutorial you will discover how to perform string translations in pure Python apps. You will see Gettext in action, learn about PO files, work with pluralization, and more.
- How to translate languages in Python with Google Translate and DeepL — this article deep dives into machine translation engines and the libraries that you can use with Python to work with these engines.
- Django i18n: A beginner’s guide — this post is aimed at beginner-level developers who would like to become familiar with Django internationalization processes. You will find out how to prepare your application, create translation files, and start using Gettext.
- Advanced Django internationalization — in this article you will learn the more advanced concepts of Django i18n. Specifically, you will learn how to use
LocaleMiddleware, add language fallbacks, perform pluralization, localize date and time, support right-to-left languages, and work with time zones.
Java and frameworks
- Java internationalization: Learn the basics — this article summarizes the basics you need to know in order to get started with Java i18n. You will find out how to work with
ResourceBundleclasses, switch locale, and perform pluralization. As a bonus, the post also explains how to work with the Cloud Translation API.
- Spring Boot internationalization: Step-by-step — this tutorial revolves around internationalizing applications built using the Spring Boot framework. It covers all the necessary topics: working with translations, managing locales, performing pluralization and localization, and so on.
- Java LocalDate Localization — this is an in-depth post that explains how to use Java LocalDate API in its subsequent Date and Time API.
PHP and frameworks
- Laravel localization: A step-by-step guide — in this post you will discover how to get started with PHP Laravel i18n and l10n. It covers all the major topics, including working with translation messages, localizing date, time, and currency, adding locale middleware, and more.
- Symfony translation: A step-by-step guide — in this artice you’ll learn how to get started with PHP Symfony translation and localization.
- PHP localization: A complete guide — this tutorial covers four different methods of localizing pure PHP applications (built without any frameworks). The described methods include Gettext, PHP arrays, Define, and
Ruby and frameworks
- I18n gems: Translate your Ruby apps — this article covers multiple Ruby gems that can be used for internationalization purposes, including I18n, R18n, and FastGettext.
- Rails internationalization (I18n): Step-by-step — this is a complete guide dealing with Ruby on Rails internationalization. It will help you start translating your Rails application. This post explains how to setup the Rails app, create translation files, switch locales, and perform localization.
- Storing translations inside a database with Globalize — sometimes, you may need to place translations for your Rails app in the database, not in YAML files. This tutorial demonstrates how to achieve this by using the Globalize gem.
- Storing Rails translations inside the database with Mobility — while Globalize is still a solid option, it is not actively maintained anymore. Therefore, a new solution called Mobility has emerged that provides even more cool features while sharing many similar concepts with Globalize. In this tutorial you will learn how to get started with Mobility, set it up and use with Rails.
Go and frameworks
- Go Internationalization Using go-i18n — learn how to add I18n support into a plain Go application.
- Beego framework i18n: Step-by-step — this article covers the process of translating a Beego (a Go framework) application into multiple languages.
- Node.js i18n and Express.js localization — this is a tutorial for beginners who are starting to implement i18n in their Node applications. In this article, you will see how to translate Node.js apps with the help of the i18next framework.
- Localization of Phoenix Applications — this piece teaches you how to get started with Phoenix i18n. Phoenix is a modern MVC framework built with Elixir. You will learn all the basics and see the explained concepts in practice.
- ASP.NET Core Localization — you will learn how to localize and internationalize your ASP.NET application using various techniques and approaches.
- How to translate WordPress with WPML and Google Translate — in this tutorial you’ll learn how to get started with the WordPress i18n, use the WPML plugin to add multilingual support, and translate your content with neural networks.
- React i18n: A step-by-step guide to React-intl — this guide explains how to introduce internationalization support into React applications by using a React-intl package. You will learn all about the major i18n-related topics, including: storing translation messages, adding a language switcher, localizing date, time, and currency, performing pluralization, etc.
- How to internationalize a React application using i18next — in this article you will learn how to get started with internationalizing Reacts apps with the help of i18next framework.
- Angular i18n: Performing translations with a built-in module — this tutorial is aimed at developers who would like to get started with Angular internationalization. You will discover how to introduce i18n with a built-in Angular module, work with translations in an XLIFF format, and more. This post relates to all recent Angular versions, including v11.
- Angular localization with Transloco — this article also covers Angular i18n and l10n processes, but with the help of the Transloco solution. You will learn about all the major internationalization-related topics and see Transloco in action.
- Vue 3 i18n: Building a multi-lingual app — this is a new version of the tutorial mentioned below. This is a deep-dive into all the Vue 3 i18n specifics. You’ll learn how to get started with the vue-i18n plugin, work with translation files, automatically detect the user’s locale, store preferences, use Vue router to store the language, and perform lazy loading.
- Vue 2 i18n: Building a multi-lingual app — this is a must-read tutorial for all Vue developers who are getting started with internationalization. It covers not only the basics, but also dives deeper, and explains how to set up localized routes, and create a translation plugin.
- Svelte i18n: A step-by-step guide — this is a complete tutorial covering Svelte internationalization and localization processes. It explains how to prepare your Svelte application for i18n, store translations and load them dynamically, detect user language, introduce localization, and more.
- EmberJS i18n: A beginner’s guide — this tutorial covers the basics of EmberJS internationalization. You will see how to create translation files, perform language switching, and add pluralization support among other things.
- Translating Aurelia applications with Aurelia i18n — learn how to easily translate your Aurelia app with a I18n module.
- JSON L10n — learn about the usage of JSON translation files in Web.
Static content and SSG i18n
- Translate HTML: Step-by-step guide — this piece deals with translating static HTML content using the Lokalise service. It demonstrates how to upload your HTML files to Lokalise, translate the texts, and download everything back in the proper format.
- Implementing Gatsby I18n — Gatsby is a static site generator, and this tutorial explains how to to get started with Gatsby I18n.
- Ionic translation and internationalization — this tutorial teaches you how to translate mobile applications using the Ionic framework. As you might know, Ionic is a framework employed to create hybrid mobile apps. In this post, you will see the ngx-translate library at work and disover how to use it properly with Ionic.
- React native localization and internationalization — this post revolves around React Native i18n processes. React Native is a framework used to build mobile applications, and you will learn how to successfully translate these apps.
- Xamarim.Forms internationalization — in this post you will find a detailed explanation of how to get started with Xamarin i18n and l10n.
- Android localization: Step-by-step — if you would like to master the basics of Android i18n, this post is for you. It explains how to begin the internationalization process and prepare your app, programmatically switch locales, perform pluralization, and introduce localization support.
- Kotlin I18n: Translating Android applications — this tutorial explains how to get started with translating Android applications written in Kotlin language.
- iOS localization: Step-by-step Guide — this is a general overview of internationalizing iOS applications. You will also find out how to upload & download your translation files to and from Lokalise.
- Flutter internationalization and localization — covers how to get started with Flutter I18n, perform localization and store your translations inside ARB files.