Skip to content

oh-jon-paul/awesome-i18n

Repository files navigation

awesome-i18n

awesome-i18n Awesome

A curated list of i18n tools, i18n libraries, localization software, localization programs and translation management systems.

How to contribute

  • 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

Remember to give this repo a star! 🌟

πŸ“¦ Libraries

JavaScript / TypeScript

  • 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 intl object 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

React framework

Other JS/TS frameworks

Java

Swift

Ruby

  • Twitter/CLDR - ICU implementation that uses the CLDR to format dates, plurals
  • Ruby i18n - official internationalization API document page

Python

  • 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

πŸ“… Utility libraries

  • (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

Apps and extensions for translation management

  • 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

πŸ“š Resources

πŸ’­ 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 &shy; 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.

🍿 Videos

Please avoid adding low-quality videos. Focus on high-level problems from trusted sources that will remain relevant over time.

πŸ‘©β€πŸŽ“ 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

About

🌍 A curated list of i18n resources for all kind of languages and frameworks

Topics

Resources

Stars

Watchers

Forks

Contributors