443 lines
20 KiB
HTML
443 lines
20 KiB
HTML
<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 &
|
||
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 & 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 (< 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 &
|
||
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 & 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 Google’s 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>
|
||
- Google’s 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, what’s 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 world’s 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 & 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>&shy;</code>
|
||
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.</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 & 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>
|