Files
awesome-awesomeness/html/i18n.html
2025-07-18 23:13:11 +02:00

443 lines
20 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<figure>
<img src="./awesome_i18n.png" alt="awesome-i18n" />
<figcaption aria-hidden="true">awesome-i18n</figcaption>
</figure>
<h1 id="awesome-i18n-awesome">awesome-i18n <a
href="https://awesome.re"><img src="https://awesome.re/badge.svg"
alt="Awesome" /></a></h1>
<blockquote>
<p>A curated list of i18n tools, i18n libraries, localization software,
localization programs and translation management systems.</p>
</blockquote>
<p>No paid or freemium services.</p>
<p>If you want to add something just modify <a
href="README.md">README.md</a> file ☺️ Enjoy!</p>
<h2 id="remember-to-give-this-repo-a-star">Remember to give this repo a
star! 🌟</h2>
<h4 id="contents">Contents</h4>
<ul>
<li><a href="#-acronyms-and-keywords">👩‍🎓 Acronyms and keywords</a></li>
<li><a href="#-libraries">📦 Libraries</a></li>
<li><a href="#-desktop-apps-for-translation-management">🖥 Desktop apps
for translation management</a></li>
<li><a href="#-utility-libraries">📅 Utility libraries</a></li>
<li><a href="#-resources">📚 Resources</a></li>
<li><a href="#-community-tips--tricks">💭 Community Tips &amp;
tricks</a></li>
<li><a href="#-automated-translations">🦾 Automated
translations</a></li>
<li><a href="#-videos">🍿 Videos</a></li>
</ul>
<h2 id="acronyms-and-keywords">👩‍🎓 Acronyms and keywords</h2>
<h3 id="acronyms">🧐 Acronyms</h3>
<ul>
<li>i18n - internationalization</li>
<li>l10n - localization</li>
<li>xl8 - group of <a
href="#%EF%B8%8F-translation-management-systems">translation management
systems</a></li>
<li>t9n - translation</li>
<li>g11n - globalization</li>
<li>m17n - multilingualization</li>
<li>ICU - International Components for Unicode</li>
<li>TMS - translation management system</li>
<li>GMS - globalization translation system (same thing as TMS)</li>
</ul>
<h3 id="keywords">🔑 Keywords</h3>
<ul>
<li>translation key - element in source code which is used by i18n
library to replace it with translation message</li>
<li>translation - translated text or message</li>
</ul>
<h2 id="libraries">📦 Libraries</h2>
<h3 id="javascript-typescript">JavaScript / TypeScript</h3>
<ul>
<li><a href="http://airbnb.io/polyglot.js/">airbnb.io/polyglot.js</a> -
tiny i18n helper library written in JavaScript, made to work both in the
browser and in CommonJS environments</li>
<li><a href="https://zhangfisher.github.io/voerka-i18n/">VoerkaI18n</a>
- Internationalization solution for
<code>Javascript/Typescript/Vue/React/Solidjs/SvelteJs/ReactNative</code></li>
<li><a href="https://github.com/ibitcy/eo-locale">eo-locale</a> -
elegant lightweight library based on Internationalization API</li>
<li><a
href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl">MDN:
Intl object</a> - documentation for standard <code>intl</code> object
from JavaScript</li>
<li><a
href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/i18n">MDN:
i18n</a> - internationalize your browser extension. APIs to get
localized strings from locale files</li>
<li><a href="https://github.com/facebook/fbt">facebook/fbt</a> -
internationalization framework for JavaScript designed to be not just
powerful and flexible, but also simple and intuitive</li>
<li><a href="https://formatjs.io">FormatJS</a> - internationalize your
web apps on the client &amp; server</li>
<li><a href="https://formatjs.io/docs/tooling/cli/">FormatJS CLI</a> -
extract messages from project with FormatJS library</li>
<li><a href="https://www.i18next.com">i18next</a> - internationalization
framework for browser or any other JavaScript environment</li>
<li><a href="https://github.com/antfu/i18n-ally">i18n-ally</a> -
extension for VSCode, all in one about i18n</li>
<li><a href="https://github.com/laurentpayot/intljulep">intljulep</a> -
super lightweight yet powerful i18n library</li>
<li><a href="https://github.com/jquery/globalize">jquery/globalize</a> -
library for i18n that leverages the official Unicode CLDR JSON data</li>
<li><a href="https://github.com/messageformat/Jed/">Jed</a> - Gettext
style i18n library</li>
<li><a href="http://lisanjs.com">lisan.js</a> - fast and small i18n
library</li>
<li><a href="https://github.com/lingui/js-lingui">js-lingui</a> -
readable, automated, and optimized internationalization</li>
<li><a href="https://www.npmjs.com/package/i18n">npm i18n</a> -
lightweight simple translation module with dynamic JSON storage</li>
<li><a href="https://ttag.js.org/">ttag</a> - library for translations
based on ES6 template literals</li>
<li><a
href="https://github.com/ivanhofer/typesafe-i18n">typesafe-i18n</a> -
type-safe, lightweight localization library for TypeScript with no
external dependencies</li>
<li><a
href="https://github.com/schummar/schummar-translate">schummar-translate</a>
- TypeScript powered translation library for React and Node.js</li>
<li><a
href="https://github.com/messageformat/messageformat">messageformat</a>
- ICU MessageFormat for Javascript - i18n Plural and Gender Capable
Messages</li>
<li><a href="https://github.com/lukeed/rosetta">rosetta</a> - A general
purpose internationalization library in ~300 bytes (including
dependencies)</li>
<li><a href="https://github.com/andyearnshaw/Intl.js">Intl.js
(UNMAINTAINED)</a> - implementation of the ECMAScript
Internationalization API</li>
<li><a
href="https://inlang.com/m/gerre34r/library-inlang-paraglideJs">ParaglideJS</a>
- synchronous, typesafe and lightweight i18n library</li>
</ul>
<h3 id="react-react-native">React / React Native</h3>
<p>React apps and react localization is so popular so we decided to add
a special section for it. Here is the list of react localization
libraries:</p>
<ul>
<li><a
href="https://github.com/vinissimus/next-translate">next-translate</a> -
easy i18n for NextJS, ~1kb of size</li>
<li><a href="https://github.com/amannn/next-intl">next-intl</a> - a
minimal, but complete solution for internationalization in Next.js apps
works with SSR and SSG</li>
<li><a
href="https://github.com/bloodyowl/react-translate">react-translate</a>
- internationalization for React</li>
<li><a
href="https://github.com/zoontek/react-native-localize">react-native-localize</a>
- toolbox for your React Native app localization</li>
<li><a
href="https://github.com/stefalda/react-localization">react-localization</a>
- simple module to localize the React interface using the same syntax
used in the ReactNativeLocalization module</li>
<li><a href="https://formatjs.io">react-intl</a> - internationalize your
web apps with react-intl library</li>
<li><a href="https://formatjs.io/docs/tooling/cli/">react-intl (CLI)</a>
- extract messages from project with FormatJS library</li>
<li><a
href="https://github.com/CreateThrive/react-intl-hooks">react-intl-hooks</a>
- small and fast library that you can use to replace FormatJS
components</li>
<li><a
href="https://github.com/sealninja/react-i18nify">react-i18nify</a> -
simple i18n translation and localization components and helpers for
React</li>
<li><a href="https://react.i18next.com/">react-i18next</a> -
internationalization framework for React and React Native which is based
on i18next</li>
<li><a
href="https://github.com/SanichKotikov/react-i18n-mini">react-i18n-mini</a>
- A tiny (~2.39 kB) internationalisation library for React</li>
<li><a href="https://github.com/evandhq/react-persian">react-persian</a>
- set of react components for Persian localization</li>
<li><a
href="https://github.com/amsul/react-translated">react-translated</a> -
dead simple way to add complex translations</li>
<li><a
href="https://github.com/ryandrewjohnson/react-localize-redux">react-localize-redux</a>
- localization library for handling translations</li>
<li><a
href="https://github.com/martinandert/react-translate-component">react-translate-component</a>
- component for React that utilizes the Counterpart module and the
Interpolate component to provide multi-lingual/localized text
content</li>
<li><a href="https://github.com/DRFR0ST/react-littera">react-littera</a>
- lightweight library for robust translations using hooks. Some of the
key features are dynamic templates, missing reports, auto-locale
detection and more</li>
<li><a href="https://github.com/DoneDeal0/Talkr">talkr</a> - lightest
i18n provider for React applications (&lt; 1kb). Supports Typescript,
provides smart autocompletion based on your own json translation files,
handles complex plural rules, 0 dependencies.</li>
</ul>
<h3 id="vuejs">VueJS</h3>
<ul>
<li><a href="https://kazupon.github.io/vue-i18n/">vue i18n</a> - vue
i18n is internationalization plugin for Vue.js</li>
<li><a href="https://github.com/wood3n/sweet-i18n">sweet-i18n</a> -
automatic extraction and conversion of Chinese characters in Vue and JS
files based on Babel</li>
</ul>
<h3 id="angular">Angular</h3>
<ul>
<li><a href="http://www.ngx-translate.com">NGX Translate</a> -
translation library for Angular</li>
</ul>
<h3 id="svelte">Svelte</h3>
<ul>
<li><a href="https://github.com/kaisermann/svelte-i18n">svelte-i18n</a>
- internationalization for Svelte</li>
</ul>
<h3 id="quasar.dev">Quasar.dev</h3>
<ul>
<li><a href="https://quasar.dev/options/app-internationalization">Quasar
i18n</a> - official Quasar framework document page about
internationalization</li>
</ul>
<h3 id="java">Java</h3>
<ul>
<li><a href="https://www.thymeleaf.org">Thymeleaf</a> - modern
server-side Java template engine for both web and standalone
environments</li>
<li><a
href="https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#using-texts">Thymeleaf
i18n docs</a> - How to use <code>th:texts</code> for translations</li>
<li><a
href="https://www.baeldung.com/spring-boot-internationalization">Spring
Messages</a> - Spring Boot internationalization. LocaleResolver &amp;
LocaleChangeInterceptor example usage</li>
<li><a
href="https://www.baeldung.com/spring-boot-internationalization">Spring
Boot localization</a> - Baeldun post about using Spring Messages</li>
<li><a
href="https://stackoverflow.com/questions/36531131/i18n-in-spring-boot-thymeleaf">i18n
in Spring Boot</a> - Stackoverflow thread about i18n in Spring Boot</li>
<li><a
href="https://stackoverflow.com/questions/5175728/how-to-get-the-current-date-time-in-java/5175900">Java
Time Classes</a> - Stackoverflow thread about time and timezones in
Java.</li>
</ul>
<figure>
<img src="https://i.stack.imgur.com/MZe55.png"
alt="Java time classes" />
<figcaption aria-hidden="true">Java time classes</figcaption>
</figure>
<h3 id="jekyll">Jekyll</h3>
<ul>
<li><a
href="https://github.com/kurtsson/jekyll-multiple-languages-plugin">jekyll-multiple-languages-plugin</a>
- Jekyll Multiple Languages is an internationalization plugin for
Jekyll.</li>
<li><a href="https://github.com/liamzebedee/jekyll-i18n">jekyll-i18n</a>
- Jekyll i18n is a plugin that enables simplistic multi-language site
designs using Jekyll. (not maintained)</li>
</ul>
<h3 id="swift-ios-macos">Swift (iOS &amp; macOS)</h3>
<ul>
<li><a
href="https://github.com/maximbilan/SwiftGoogleTranslate">SwiftGoogleTranslate</a>
- framework to use cloud translation API by Google in Swift</li>
</ul>
<h3 id="ruby">Ruby</h3>
<ul>
<li><a
href="https://github.com/twitter/twitter-cldr-rb">Twitter/CLDR</a> -
implementation of the ICU that uses the Common Locale Data Repository to
format dates, plurals</li>
<li><a href="https://guides.rubyonrails.org/i18n.html">Ruby i18n</a> -
official internationalization API document page</li>
</ul>
<h3 id="python">Python</h3>
<ul>
<li><a href="https://pypi.org/project/python-i18n/">Python-i18n</a> -
internationalization package</li>
<li><a
href="https://github.com/nidhaloff/deep-translator">deep-translator</a>
- library to translate between different languages in a simple way using
multiple translators</li>
</ul>
<h2 id="message-and-key-extraction">🔦 Message and key extraction</h2>
<p>Tools used to search translation key usage in project files. Usually
they extract translation keys to some file which can be imported later
to <a href="#-translation-management-systems">translation management
system</a></p>
<ul>
<li><a href="https://formatjs.io/docs/tooling/cli/">FormatJS CLI</a> -
extract messages from project with FormatJS library</li>
<li><a
href="https://simplelocalize.io/docs/cli/i18n-keys-extraction/">simplelocalize-cli</a>
- extract translation keys and messages from various different
libraries</li>
<li><a href="https://github.com/nyavro/i18nPlugin">IntelliJ plugin for
extracting i18n keys</a> - IntelliJ IDEA plugin for extracing i18n
keys</li>
</ul>
<h2 id="desktop-apps-for-translation-management">🖥 Desktop apps for
translation management</h2>
<ul>
<li><a href="https://github.com/argosopentech/argos-translate">Argos
Translate</a> - open source offline translation app based on
OpenNMT</li>
<li><a href="http://www.gnu.org/software/gettext">GNU gettext</a> - tool
for adding native language support to applications</li>
<li><a href="https://github.com/niedev/RTranslator">RTranslator</a> -
simultaneous translator app for Android based on Googles API</li>
<li><a href="https://github.com/crow-translate/crow-translate">Crow
Translate</a> - lightweight desktop translator, uses Google, Yandex and
Bing translate API.</li>
<li><a href="https://github.com/CopyTranslator/CopyTranslator">Copy
Translator</a> - cross-platform app that automatically translate texts
when copied in the clipboard</li>
<li><a href="https://www.electronjs.org/apps/i18n-manager">ElectronJS
i18n</a> - cross-platform i18n manager</li>
<li><a href="https://omegat.org">OmegaT</a> - free translation memory
application that works on all popular operating systems</li>
<li><a
href="https://github.com/uav4geo/LibreTranslate">LibreTranslate</a> -
self-hosted web application to translate texts</li>
<li><a href="https://poeditor.com">POEditor</a> - tool for managing PO
language files</li>
<li><a href="https://inlang.com/m/tdozzpar/app-inlang-editor">Fink</a> -
git-based editor in the browser that connects to your repo</li>
</ul>
<h2 id="utility-libraries">📅 Utility libraries</h2>
<ul>
<li><a href="https://moment.github.io/luxon/">Luxon</a> - powerful,
modern, and friendly wrapper for JavaScript dates and times (replaces
momentjs)</li>
<li><a href="https://date-fns.org">date-fns</a> - JS library for
dates</li>
<li><a href="https://fakenumber.org">fakenumber.org</a> - fake phone
number generator</li>
<li><a
href="https://github.com/googlei18n/libphonenumber">googlei18n/libphonenumber</a>
- Googles common Java, C++ and JavaScript library for parsing,
formatting, and validating international phone numbers</li>
<li><a href="https://intl-tel-input.com/">intl-tel-input.com</a> - JS
library for entering and validating international phone numbers</li>
</ul>
<h2 id="resources">📚 Resources</h2>
<ul>
<li><a
href="https://stackoverflow.com/questions/506743/localization-and-internationalization-whats-the-difference">Stackoverflow:
Localization vs Internationalization</a> - Localization and
internationalization, whats the difference?</li>
<li><a
href="http://stackoverflow.com/questions/2532729/daylight-saving-time-and-time-zone-best-practices">Stackoverflow:
Daylight saving time and time-zone best practices</a></li>
<li><a
href="https://dev.to/jpomykala/top-12-libraries-for-nextjs-react-apps-and-react-native-apps-for-i18n-and-react-localization-5fi8">Blog
post: Top 12 libraries for React localization</a> - Blog post on dev.to
about top 12 libraries for react localization</li>
<li><a
href="https://janmonschke.com/building-a-minimal-i18n-library">Blog
post: Building a minimal i18n library</a></li>
<li><a
href="https://bannerly.io/blog/posts/multi-language-image-variants/">Blog
post: Generating images with multi-language texts</a> - article about
images localization and i18n in blog post banners</li>
<li><a
href="https://simplelocalize.io/blog/posts/language-vs-locale/">Blog
post: Language vs Locale</a> - what is the difference between language
and locale</li>
<li><a
href="https://withatwist.dev/the-12-factor-app-dev-and-prod-parity.html">Blog
post: Development/Production parity for Rails i18n</a> - blog post with
a warning on using different i18n backends in
development/production</li>
<li><a
href="https://simplelocalize.io/blog/posts/what-is-hreflang/">Blog post:
What is hreflang attribute</a> - hreflang FAQ and explanation how to
use it and why it is important for SEO</li>
<li><a
href="https://dujushi.github.io/2021/04/14/i18n-with-react-intl-and-simple-localize.html">Blog
post: i18n with React Intl and SimpleLocalize</a> - article demonstrates
how to set up and manage translations with autogenerated translation
keys with FormatJS</li>
<li><a
href="https://github.com/simplelocalize/simplelocalize-react-intl">Github:
FormatJS example project</a> - example project built with React-intl and
React</li>
<li><a
href="https://github.com/simplelocalize/simplelocalize-i18next">Github:
i18next example project</a> - example project built with i18next and
React</li>
<li><a href="https://developers.google.com/international/">Guide: Google
Developers - Internationalization</a> - official Google document
page</li>
<li><a href="https://angular.io/guide/i18n">Guide: Angular i18n</a> -
official Angular i18n document page</li>
<li><a href="http://www.w3.org/standards/webdesign/i18n">Guide: W3C i18n
standards</a></li>
<li><a href="http://cldr.unicode.org/">Guide: Common Language Data
Repository</a> - the Unicode CLDR provides key building blocks for
software to support the worlds languages, with the largest and most
extensive standard repository of locale data available</li>
<li><a href="http://site.icu-project.org/">ICU: International Components
for Unicode</a> - ICU is a mature and widely used providing Unicode and
Globalization support for software applications</li>
<li><a
href="https://simplelocalize.io/docs/cli/i18n-keys-extraction/">Extract
messages and translation keys from project files</a> - extracting
translation keys from project files. JavaScript, Android, iOS/macOS</li>
</ul>
<h2 id="community-tips-tricks">💭 Community tips &amp; tricks</h2>
<ul>
<li>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.</li>
<li>Russian and German tend to have the longest translations, and the
longest words. Get familiar with the shy-hyphen <code>&amp;shy;</code>
character. You put it in the words 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.</li>
<li>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).</li>
<li>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.</li>
<li>Greek question marks look like a semicolon.</li>
<li>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.</li>
</ul>
<h2 id="automated-translation">🦾 Automated translation</h2>
<ul>
<li><a href="http://gengo.com">Gengo</a> - translation is made by real
people but you can make an order using API</li>
<li><a href="https://translate.google.com">Google Translate</a></li>
<li><a href="https://www.microsoft.com/en-GB/translator/">Microsoft
Translator</a></li>
<li><a href="https://deepl.com">DeepL</a></li>
</ul>
<h2 id="videos">🍿 Videos</h2>
<h4 id="internationaliszing-code---computerphile">Internationalis(z)ing
Code - Computerphile</h4>
<figure>
<img src="youtube-computerphile-internationalization.png"
alt="youtube computerphile about internationalization" />
<figcaption aria-hidden="true">youtube computerphile about
internationalization</figcaption>
</figure>
<p>Link: https://www.youtube.com/watch?v=0j74jcxSunY</p>
<h4 id="the-problem-with-time-timezones---computerphile">The Problem
with Time &amp; Timezones - Computerphile</h4>
<figure>
<img src="youtube-computerphile-timezones.png"
alt="youtube computerphile about timezones" />
<figcaption aria-hidden="true">youtube computerphile about
timezones</figcaption>
</figure>
<p>Link: https://www.youtube.com/watch?v=-5wpm-gesOY</p>
<h2 id="contribute">📢 Contribute</h2>
<p>Feel free to add or update the content!</p>
<p><a href="https://github.com/jpomykala/awesome-i18n">i18n.md
Github</a></p>