A curated list of i18n tools, i18n libraries, localization software, localization programs and translation management systems.
๐ฆ
Contents
-
๐ฉโ๐ Acronyms and keywords -
๐ต๏ธ SEO i18n -
๐ Libraries -
โ๏ธ React localization -
๐ฉโ๐ป Tools & Services -
๐ Dates & Times -
๐ Telephone -
๐ Blog posts & articles -
๐ฆฎ Guides -
๐ญ Community Tips & tricks -
โ๏ธ Translation agencies -
๐ฆพ Automated translations -
๐ฟ Videos
๐ฉโ๐
Acronyms and keywords
๐ง
Acronyms
- i18n - internationalization
- l10n - localization
- xl8 - group of translation management systems
- t9n - translation
- g11n - globalization
- m17n - multilingualization
- ICU - International Components for Unicode
- TMS - translation management system
- GMS - globalization translation system (same thing as TMS)
๐
Keywords
- translation key - element in source code which is used by i18n library to replace it with translation message
- translation - translated text or message
๐ต๏ธ
SEO i18n
๐
Libraries
JavaScript
- ECMAScript Internationalization API documentation what standard
intl
object in JS can do. - Facebook FBT FBT is an internationalization framework for JavaScript designed to be not just powerful and flexible, but also simple and intuitive
- js-lingui A readable, automated, and optimized (5kb) internationalization
- Globalize library for i18n that leverages the official Unicode CLDR JSON data
- Intl.js implementation of the ECMAScript Internationalization API
- Jed Gettext Style i18n
- FormatJS internationalize your web apps on the client & server
- FormatJS CLI Extract messages from project with FormatJS library
- googlei18n/libphonenumber Google's common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers
- International Telephone Input plugin for entering and validating international telephone numbers.
- lisan.js fast and small i18n library
- Polyglot.js Make your application speak multiple languages
- ttag library for translations based on ES6 template literals
- i18n Ally - Extension for VSCode, all in one about i18n.
- Angular NGX Translate Angular translation library
- npm i18n - Lightweight simple translation module with dynamic json storage.
- vue i18n Vue I18n is internationalization plugin for Vue.js
- MDN i18n - Functions to internationalize your browser extension. You can use these APIs to get localized strings from locale files packaged with your extension.
- Quasar I18n - App internationalization (i18n) in Quasar framework.
- eo-locale Elegant lightweight library based on Internationalization API
โ๏ธ
React
- react-translate Internationalization for react
- react-native-localize A toolbox for your React Native app localization
- FormatJS internationalize your web apps with react-intl library
- FormatJS CLI Extract messages from project with FormatJS library
- react-localization Simple module to localize the React interface using the same syntax used in the ReactNativeLocalization module.
- react-i18nify Simple i18n translation and localization components and helpers for React
- react-persian react-persian is a set of react components for Persian localization
- react-i18next - internationalization framework for React / React Native which is based on i18next
- next-translate Easy i18n for Next.js +10
- react-translated A dead simple way to add complex translations in a React project
- react-intl hooks React-intl-hooks is a small and fast library that you can use to replace Format.js components.
- react-localize-redux Localization library for handling translations in React.
- js-lingui A readable, automated, and optimized (5 kb) internationalization for JavaScript
- react-translate-component Translate is a component for React that utilizes the Counterpart module and the Interpolate component to provide multi-lingual/localized text content.
Java
- Thymeleaf - modern server-side Java template engine for both web and standalone environments.
- Spring Messages Spring Boot internationalization. LocaleResolver & LocaleChangeInterceptor example usage.
- Thymeleaf i18n docs using
th:texts
for translations - Spring Boot localization Baeldun post about using Spring Messages
- i18n in Spring Boot Stackoverflow thread
Jekyll
- jekyll-multiple-languages-plugin - Jekyll Multiple Languages is an internationalization plugin for Jekyll.
- jekyll-i18n - Jekyll i18n is a plugin that enables simplistic multi-language site designs using Jekyll. (not maintained)
Swift (iOS & macOS)
- SwiftGoogleTranslate - A framework to use cloud translation API by Google in Swift.
Ruby
- TwitterCLDR implementation of the ICU that uses the Common Locale Data Repository to format dates, plurals
- Ruby I18n - Rails internationalization (i18n) API.
Python
- Python-i18n - Python internationalization (i18n) package.
- deep-translator - a flexible free and unlimited (depending on the translator used) library written in Python to translate between different languages in a simple way using multiple translators, it can also be used directly in the prompt.
๐ฉโ๐ป
Tools and services
๐ค
Localization CLI Tools
- FormatJS CLI - extract messages from project with FormatJS library
- simplelocalize-cli - extract translation keys and messages from various different libraries
- IntelliJ plugin for extractin i18n keys - IntelliJ idea i18next support plugin works with many frameworks and i18n libraries
โ๏ธ
Translation Management Systems
- memsource - localization service for corporate.
- localizejs - web-based platform for big companies.
- LocaleApp - app localization and translation.
- SimpleLocalize.io - Easy to use cloud-based platform for translation management. Comes with workflow management support and CLI
- Crowdin - closed source cloud-based localization service
- GitLocalize (sold) - localization platform that syncs with your GitHub repository (sold to alconst)
- Transifex - web-based translation platform, globalization management system.
- Weblate - platform for one of the most positive and empowering communities of libre software.
- Zanata - web translation platform for translators and developers to manage localisations.
- Traduora - a platform for manage translations.
๐ฅ
Desktop apps
- GNU gettext - tool for adding native language support to applications
- RTranslator - simultaneous translator app for Android based on Google's API.
- Crow Translate - a simple and lightweight desktop translator. Allows to translate and speak text using Google, Yandex and Bing translate API.
- Copy Translator - cross-platform app that automatically translate texts when copied in the clipboard
- Electronjs i18n - cross-platform i18n manager
- OmegaT - Free translation memory application that works on Windows, macOS and Linux
- Argos Translate - open source offline translation app based on OpenNMT
- LibreTranslate - self-hosted web application to translate texts
๐
Dates and Times
- MomentJS - JavaScript library for handling times and dates
- Luxon - a powerful, modern, and friendly wrapper for Javascript dates and times
- Daylight saving time and time zone best practices
- date-fns - modern JavaScript date utility library
๐
Telephone
- Random Phone Number Generator - fake phone number generator
- googlei18n/libphonenumber Google's common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers
๐
Blog posts, articles & others
- What is 'hreflang' attribute - hreflang FAQ and explanation how to use it and why it is important for SEO
- Stack Overflow Q&A-1 - Localization and internationalization, what's the difference?
- Top 12 libraries for React localization - Blog post on dev.to about top 12 libraries for react localization
- Development/Production parity for Rails i18n - blog post with a warning on using different I18n backends in development/production
๐ฆฎ
Guides
- Angular and i18n - Angular i18n guide.
- Message extraction - extracting translation keys from project files. JavaScript, Android, iOS/macOS
๐ญ
Community tips & tricks
- If you have tight layouts, my rough rule of thumb is to double the English text and make sure it fits. Then you will usually have enough space for translations.
- Russian and German tend to have the longest translations, and the longest words. Get familiar with the shy-hyphen
­
character. You put it in the word's html and it will only break the word/show the hyphen when necessary. Google โonline hyphenation toolโ so you know the appropriate places to break the word. - You need to translate numbers with decimals and commas because they are reversed in some languages (period appears as a comma, comma as a period).
- Same goes for percent signs. Sometimes the % shows before the number, and not after. There might be a space between the number and %. It might show as %-KAL in Hungarian.
- Greek question marks look like a semicolon.
- Always keep datetimes in database in UTC. Always return datatimes from backend in UTC. Adjust datetimes on UI layer using timezone information from user or web browser. Accept datetimes in backend with any timezone.
โ๏ธ
Translation agencies
๐ฆพ
Automated translations
- Gengo - translation is made by real people but you can make an order using API
- Google Translate
- Microsoft Translator
- DeepL
๐
Documetations
- Google Developers: Internationalization
- Common Language Data Repository - the Unicode CLDR provides key building blocks for software to support the world's languages, with the largest and most extensive standard repository of locale data available.
- ICU: International Components for Unicode - ICU is a mature, widely used set of C/C++ and Java libraries providing Unicode and Globalization support for software applications.
- W3C i18n standards
๐ฟ
Videos
Internationalis(z)ing Code - Computerphile
Link: https://www.youtube.com/watch?v=0j74jcxSunY
The Problem with Time & Timezones - Computerphile
Link: https://www.youtube.com/watch?v=-5wpm-gesOY
๐ข
Contribute
Contributions welcome! Read the contribution guidelines first.