A curated list of i18n tools, i18n libraries, localization software, localization programs and translation management systems.
- do not add paid/freemium services
- do not add AI slop tools / libraries
- do not add libraries that required paid service to work
- keep your entry as short as possible (<150 chars)
- entry must be short enough to not wrap
- do not end your entry with a period
- try to keep it lowercase
- focus on what is unique, rather than generic message
- feel free to add more cateogories
- MessageFormat2 - a full featured localization system, from Unicode
- date-formatter-i18n - lightweight library for formatting dates with i18n support, relative time
- airbnb.io/polyglot.js - tiny i18n helper, works in browser and CommonJS environment
- VoerkaI18n - internationalization solution for JavaScript projects
- eo-locale - elegant lightweight library based on internationalization API
- MDN: Intl object - documentation for standard
intlobject from JavaScript - MDN: i18n - internationalize your browser extension. APIs to get localized strings from locale files
- FormatJS - internationalize your web apps on the client & server
- FormatJS CLI - extract messages from project with FormatJS library
- i18next - internationalization framework for browser or any other JavaScript environment
- intljulep - super lightweight yet powerful i18n library
- jquery/globalize - library for i18n that leverages the official Unicode CLDR JSON data
- intlayer - per-component translations for JavaScript projects
- Jed - gettext style i18n library
- lisan.js - fast and small i18n library
- js-lingui - readable, automated, and optimized internationalization
- npm i18n - lightweight simple translation module with dynamic JSON storage
- Κ»Εlelo Honua - internationalize your website with LLMs, and cutting-edge translate/critique/repair loop
- ttag - library for translations based on ES6 template literals
- typesafe-i18n - type-safe, lightweight localization library for TypeScript with no external dependencies
- schummar-translate - TypeScript powered translation library for React and Node.js
- messageformat - ICU MessageFormat for JavaScript, plural and gender capable messages
- rosetta - A general purpose internationalization library in ~300 bytes (including dependencies)
- (archived) Intl.js - implementation of the ECMAScript Internationalization API
- (archived) facebook/fbt - i18n framework for JS/TS designed to be powerful, flexible, simple and intuitive
- general translation - component translation for Next.js with SSR/SSG
- next-translate - easy i18n for NextJS, ~1kb of size
- next-intl - a minimal solution for internationalization in Next.js
- react-translate - internationalization for React
- react-native-localize - toolbox for your React Native app localization
- react-localization - translate using the same syntax as used in ReactNativeLocalization
- react-intl - internationalize your web apps with react-intl library
- react-intl (CLI) - extract messages from project with FormatJS library
- react-intl-hooks - small and fast library that you can use to replace FormatJS components
- react-i18nify - simple i18n translation and localization components and helpers for React
- react-i18next - internationalization framework for React and React Native which is based on i18next
- react-i18n-mini - a tiny (~2.39 kB) internationalisation library for React
- react-persian - set of react components for Persian localization
- react-translated - dead simple way to add complex translations
- react-localize-redux - localization library for handling translations
- react-translate-component - component that utilizes the Counterpart/Interpolate components
- react-littera - lightweight library for i18n using hooks
- talkr - light i18n provider for React (< 1kb), Typescript, smart autocompletion, plural rules
- (Angular) ngx-translate - i18n for Angular
- (Angular) transloco - i18n for Angular
- (Svelte) svelte-i18n - i18n for Svelte
- (VueJS) vue-i18n - i18n for VueJS
- (VueJS) sweet-i18n - automatic extraction and conversion of Chinese characters in Vue/JS files
- Thymeleaf - modern server-side Java template engine for both web and standalone environments
- Thymeleaf i18n docs - How to use
th:textsfor translations - Spring Messages - Spring Boot internationalization. LocaleResolver & LocaleChangeInterceptor example usage
- Spring Boot localization - Baeldun post about using Spring Messages
- i18n in Spring Boot - Stackoverflow thread about i18n in Spring Boot
- Java Time Classes - Stackoverflow thread about time and timezones in Java
- (image) Java time classes
- SwiftGoogleTranslate - framework to use cloud translation API by Google in Swift
- Twitter/CLDR - ICU implementation that uses the CLDR to format dates, plurals
- Ruby i18n - official internationalization API document page
- Python-i18n - internationalization package
- deep-translator - library to translate between different languages in a simple way using multiple translators
- LangLint - high-performance Rust-powered automated translation tool for code comments and docstrings
- jekyll-multiple-languages-plugin - Jekyll Multiple Languages is an internationalization plugin
- (archived) jekyll-i18n - Jekyll i18n is a plugin that enables simplistic multi-language site designs
- (JS) Luxon - powerful, modern, and friendly wrapper for JavaScript dates and times (replaces momentjs)
- (JS) date-fns - JavaScript library for dates
- (JS) googlei18n/libphonenumber - parsing, formatting, and validating phone numbers (Java, C++, JavaScript)
- (JS) intl-tel-input.com - JavaScrript library for validating international phone numbers
- (JS) anywhen - relative and absolute fuzzy date formatting for any language, zero deps, native Intl
- (JS) FormatJS CLI - extract messages from project with FormatJS library
- POEditor - tool for managing PO language files
- fakenumber.org - fake phone number generator
- Dire - CLI that processes missing translations in JSON files using AI
- IntelliJ plugin for extracting i18n keys - IntelliJ IDEA plugin for extracing i18n keys
- Crow Translate - lightweight desktop translator, uses Google, Yandex and Bing translate API
- Copy Translator - cross-platform app that automatically translate texts when copied in the clipboard
- Argos Translate - open source offline translation app based on OpenNMT
- AITranslateKit - AI-powered i18n JSON file translator that preserves structure, variables, and context
- ai-i18n - GitHub Action that translates i18n files (XLIFF, JSON) using LLM providers
- gettext - tool for adding native language support to applications
- i18n-ally - VS Code extension for i18n
- RTranslator - simultaneous translator app for Android based on Google's API
- Sherlock - VS Code extension for i18n
- ElectronJS i18n - cross-platform i18n manager
- OmegaT - free translation memory application that works on all popular operating systems
- LibreTranslate - self-hosted web application to translate texts
- LRM - cross-platform CLI for managing JSON (i18next compatible) and .resx localization files
- Fink - git-based editor in the browser that connects to your repo
- Gengo - translation is made by real people but you can make an order using API
- DeepL - high-quality text translation service
- Google Translate - text translation service
- Microsoft Translator - text translation service
- Stackoverflow: Localization vs Internationalization
- Stackoverflow: Daylight saving time and time-zone best practices
- Blog post: Top 12 libraries for React localization
- Blog post: Building a minimal i18n library
- Blog post: Generating images with multi-language texts
- Blog post: Language vs Locale
- Blog post: Development/Production parity for Rails i18n
- Blog post: What is 'hreflang' attribute
- Blog post: i18n with React Intl and SimpleLocalize
- GitHub: FormatJS example project
- GitHub: i18next example project
- Guide: Google Developers - Internationalization
- Guide: W3C i18n standards
- Guide: Common Language Data Repository
- ICU: International Components for Unicode
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.
Please avoid adding low-quality videos. Focus on high-level problems from trusted sources that will remain relevant over time.
- 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)
- translation key - element in source code which is used by i18n library to replace it with translation message
- translation - translated text or message


