242 lines
33 KiB
Plaintext
242 lines
33 KiB
Plaintext
[38;5;12m![39m[38;5;14m[1mawesome-i18n[0m[38;5;12m (./awesome_i18n.png)[39m
|
||
|
||
[38;5;12m [39m[38;2;255;187;0m[1m[4mawesome-i18n [0m[38;5;14m[1m[4m![0m[38;2;255;187;0m[1m[4mAwesome[0m[38;5;14m[1m[4m (https://awesome.re/badge.svg)[0m[38;2;255;187;0m[1m[4m (https://awesome.re)[0m
|
||
|
||
[38;5;11m[1m▐[0m[38;5;12m [39m[38;5;12mA curated list of i18n tools, i18n libraries, localization software, localization programs and translation management systems.[39m
|
||
|
||
[38;5;12mNo paid or freemium services.[39m
|
||
|
||
[38;5;12mIf you want to add something just modify [39m[38;5;14m[1mREADME.md[0m[38;5;12m (README.md) file ☺️ Enjoy![39m
|
||
|
||
[38;2;255;187;0m[4mRemember to give this repo a star! 🌟[0m
|
||
|
||
[38;2;255;187;0m[4mContents[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1m👩🎓 Acronyms and keywords[0m[38;5;12m (#-acronyms-and-keywords)[39m
|
||
[38;5;12m- [39m[38;5;14m[1m📦 Libraries[0m[38;5;12m (#-libraries)[39m
|
||
[38;5;12m- [39m[38;5;14m[1m🖥 Desktop apps for translation management[0m[38;5;12m (#-desktop-apps-for-translation-management)[39m
|
||
[38;5;12m- [39m[38;5;14m[1m📅 Utility libraries[0m[38;5;12m (#-utility-libraries)[39m
|
||
[38;5;12m- [39m[38;5;14m[1m📚 Resources[0m[38;5;12m (#-resources)[39m
|
||
[38;5;12m- [39m[38;5;14m[1m💭 Community Tips & tricks[0m[38;5;12m (#-community-tips--tricks)[39m
|
||
[38;5;12m- [39m[38;5;14m[1m🦾 Automated translations[0m[38;5;12m (#-automated-translations)[39m
|
||
[38;5;12m- [39m[38;5;14m[1m🍿 Videos[0m[38;5;12m (#-videos)[39m
|
||
|
||
[38;2;255;187;0m[4m👩🎓 Acronyms and keywords[0m
|
||
|
||
[38;2;255;187;0m[4m🧐 Acronyms[0m
|
||
[38;5;12m- i18n - internationalization[39m
|
||
[38;5;12m- l10n - localization[39m
|
||
[38;5;12m- xl8 - group of [39m[38;5;14m[1mtranslation management systems[0m[38;5;12m (#%EF%B8%8F-translation-management-systems)[39m
|
||
[38;5;12m- t9n - translation[39m
|
||
[38;5;12m- g11n - globalization[39m
|
||
[38;5;12m- m17n - multilingualization[39m
|
||
[38;5;12m- ICU - International Components for Unicode[39m
|
||
[38;5;12m- TMS - translation management system[39m
|
||
[38;5;12m- GMS - globalization translation system (same thing as TMS)[39m
|
||
|
||
[38;2;255;187;0m[4m🔑 Keywords[0m
|
||
[38;5;12m- translation key - element in source code which is used by i18n library to replace it with translation message[39m
|
||
[38;5;12m- translation - translated text or message[39m
|
||
|
||
[38;2;255;187;0m[4m📦 Libraries[0m
|
||
|
||
[38;2;255;187;0m[4mJavaScript / TypeScript[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mairbnb.io/polyglot.js[0m[38;5;12m (http://airbnb.io/polyglot.js/) - tiny i18n helper library written in JavaScript, made to work both in the browser and in CommonJS environments[39m
|
||
[38;5;12m- [39m[38;5;14m[1mVoerkaI18n[0m[38;5;12m (https://zhangfisher.github.io/voerka-i18n/) - Internationalization solution for [39m[48;5;235m[38;5;249mJavascript/Typescript/Vue/React/Solidjs/SvelteJs/ReactNative[49m[39m
|
||
[38;5;12m- [39m[38;5;14m[1meo-locale[0m[38;5;12m (https://github.com/ibitcy/eo-locale) - elegant lightweight library based on Internationalization API[39m
|
||
[38;5;12m- [39m[38;5;14m[1mMDN: Intl object[0m[38;5;12m (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl) - documentation for standard [39m[48;5;235m[38;5;249mintl[49m[39m[38;5;12m object from JavaScript[39m
|
||
[38;5;12m- [39m[38;5;14m[1mMDN: i18n[0m[38;5;12m (https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/i18n) - internationalize your browser extension. APIs to get localized strings from locale files[39m
|
||
[38;5;12m- [39m[38;5;14m[1mfacebook/fbt[0m[38;5;12m (https://github.com/facebook/fbt) - internationalization framework for JavaScript designed to be not just powerful and flexible, but also simple and intuitive[39m
|
||
[38;5;12m- [39m[38;5;14m[1mFormatJS[0m[38;5;12m (https://formatjs.io) - internationalize your web apps on the client & server[39m
|
||
[38;5;12m- [39m[38;5;14m[1mFormatJS CLI[0m[38;5;12m (https://formatjs.io/docs/tooling/cli/) - extract messages from project with FormatJS library[39m
|
||
[38;5;12m- [39m[38;5;14m[1mi18next[0m[38;5;12m (https://www.i18next.com) - internationalization framework for browser or any other JavaScript environment[39m
|
||
[38;5;12m- [39m[38;5;14m[1mi18n-ally[0m[38;5;12m (https://github.com/antfu/i18n-ally) - extension for VSCode, all in one about i18n[39m
|
||
[38;5;12m- [39m[38;5;14m[1mintljulep[0m[38;5;12m (https://github.com/laurentpayot/intljulep) - super lightweight yet powerful i18n library[39m
|
||
[38;5;12m- [39m[38;5;14m[1mjquery/globalize[0m[38;5;12m (https://github.com/jquery/globalize) - library for i18n that leverages the official Unicode CLDR JSON data[39m
|
||
[38;5;12m- [39m[38;5;14m[1mJed[0m[38;5;12m (https://github.com/messageformat/Jed/) - Gettext style i18n library[39m
|
||
[38;5;12m- [39m[38;5;14m[1mlisan.js[0m[38;5;12m (http://lisanjs.com) - fast and small i18n library[39m
|
||
[38;5;12m- [39m[38;5;14m[1mjs-lingui[0m[38;5;12m (https://github.com/lingui/js-lingui) - readable, automated, and optimized internationalization[39m
|
||
[38;5;12m- [39m[38;5;14m[1mnpm i18n[0m[38;5;12m (https://www.npmjs.com/package/i18n) - lightweight simple translation module with dynamic JSON storage[39m
|
||
[38;5;12m- [39m[38;5;14m[1mttag[0m[38;5;12m (https://ttag.js.org/) - library for translations based on ES6 template literals[39m
|
||
[38;5;12m- [39m[38;5;14m[1mtypesafe-i18n[0m[38;5;12m (https://github.com/ivanhofer/typesafe-i18n) - type-safe, lightweight localization library for TypeScript with no external dependencies[39m
|
||
[38;5;12m- [39m[38;5;14m[1mschummar-translate[0m[38;5;12m (https://github.com/schummar/schummar-translate) - TypeScript powered translation library for React and Node.js[39m
|
||
[38;5;12m- [39m[38;5;14m[1mmessageformat[0m[38;5;12m (https://github.com/messageformat/messageformat) - ICU MessageFormat for Javascript - i18n Plural and Gender Capable Messages[39m
|
||
[38;5;12m- [39m[38;5;14m[1mrosetta[0m[38;5;12m (https://github.com/lukeed/rosetta) - A general purpose internationalization library in ~300 bytes (including dependencies)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mIntl.js (UNMAINTAINED)[0m[38;5;12m (https://github.com/andyearnshaw/Intl.js) - implementation of the ECMAScript Internationalization API[39m
|
||
[38;5;12m- [39m[38;5;14m[1mParaglideJS[0m[38;5;12m (https://inlang.com/m/gerre34r/library-inlang-paraglideJs) - synchronous, typesafe and lightweight i18n library[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mReact / React Native[0m
|
||
[38;5;12mReact 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: [39m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mnext-translate[0m[38;5;12m (https://github.com/vinissimus/next-translate) - easy i18n for NextJS, ~1kb of size[39m
|
||
[38;5;12m- [39m[38;5;14m[1mnext-intl[0m[38;5;12m (https://github.com/amannn/next-intl) - a minimal, but complete solution for internationalization in Next.js apps works with SSR and SSG[39m
|
||
[38;5;12m- [39m[38;5;14m[1mreact-translate[0m[38;5;12m (https://github.com/bloodyowl/react-translate) - internationalization for React[39m
|
||
[38;5;12m- [39m[38;5;14m[1mreact-native-localize[0m[38;5;12m (https://github.com/zoontek/react-native-localize) - toolbox for your React Native app localization[39m
|
||
[38;5;12m- [39m[38;5;14m[1mreact-localization[0m[38;5;12m (https://github.com/stefalda/react-localization) - simple module to localize the React interface using the same syntax used in the ReactNativeLocalization module[39m
|
||
[38;5;12m- [39m[38;5;14m[1mreact-intl[0m[38;5;12m (https://formatjs.io) - internationalize your web apps with react-intl library[39m
|
||
[38;5;12m- [39m[38;5;14m[1mreact-intl (CLI)[0m[38;5;12m (https://formatjs.io/docs/tooling/cli/) - extract messages from project with FormatJS library[39m
|
||
[38;5;12m- [39m[38;5;14m[1mreact-intl-hooks[0m[38;5;12m (https://github.com/CreateThrive/react-intl-hooks) - small and fast library that you can use to replace FormatJS components[39m
|
||
[38;5;12m- [39m[38;5;14m[1mreact-i18nify[0m[38;5;12m (https://github.com/sealninja/react-i18nify) - simple i18n translation and localization components and helpers for React[39m
|
||
[38;5;12m- [39m[38;5;14m[1mreact-i18next[0m[38;5;12m (https://react.i18next.com/) - internationalization framework for React and React Native which is based on i18next[39m
|
||
[38;5;12m- [39m[38;5;14m[1mreact-i18n-mini[0m[38;5;12m (https://github.com/SanichKotikov/react-i18n-mini) - A tiny (~2.39 kB) internationalisation library for React[39m
|
||
[38;5;12m- [39m[38;5;14m[1mreact-persian[0m[38;5;12m (https://github.com/evandhq/react-persian) - set of react components for Persian localization[39m
|
||
[38;5;12m- [39m[38;5;14m[1mreact-translated[0m[38;5;12m (https://github.com/amsul/react-translated) - dead simple way to add complex translations[39m
|
||
[38;5;12m- [39m[38;5;14m[1mreact-localize-redux[0m[38;5;12m (https://github.com/ryandrewjohnson/react-localize-redux) - localization library for handling translations[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mreact-translate-component[0m[38;5;12m [39m[38;5;12m(https://github.com/martinandert/react-translate-component)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mcomponent[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mReact[39m[38;5;12m [39m[38;5;12mthat[39m[38;5;12m [39m[38;5;12mutilizes[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mCounterpart[39m[38;5;12m [39m[38;5;12mmodule[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mInterpolate[39m[38;5;12m [39m[38;5;12mcomponent[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mprovide[39m[38;5;12m [39m
|
||
[38;5;12mmulti-lingual/localized[39m[38;5;12m [39m[38;5;12mtext[39m[38;5;12m [39m[38;5;12mcontent[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mreact-littera[0m[38;5;12m [39m[38;5;12m(https://github.com/DRFR0ST/react-littera)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mlightweight[39m[38;5;12m [39m[38;5;12mlibrary[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mrobust[39m[38;5;12m [39m[38;5;12mtranslations[39m[38;5;12m [39m[38;5;12musing[39m[38;5;12m [39m[38;5;12mhooks.[39m[38;5;12m [39m[38;5;12mSome[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mkey[39m[38;5;12m [39m[38;5;12mfeatures[39m[38;5;12m [39m[38;5;12mare[39m[38;5;12m [39m[38;5;12mdynamic[39m[38;5;12m [39m[38;5;12mtemplates,[39m[38;5;12m [39m[38;5;12mmissing[39m[38;5;12m [39m[38;5;12mreports,[39m[38;5;12m [39m
|
||
[38;5;12mauto-locale[39m[38;5;12m [39m[38;5;12mdetection[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mmore[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mtalkr[0m[38;5;12m [39m[38;5;12m(https://github.com/DoneDeal0/Talkr)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mlightest[39m[38;5;12m [39m[38;5;12mi18n[39m[38;5;12m [39m[38;5;12mprovider[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mReact[39m[38;5;12m [39m[38;5;12mapplications[39m[38;5;12m [39m[38;5;12m(<[39m[38;5;12m [39m[38;5;12m1kb).[39m[38;5;12m [39m[38;5;12mSupports[39m[38;5;12m [39m[38;5;12mTypescript,[39m[38;5;12m [39m[38;5;12mprovides[39m[38;5;12m [39m[38;5;12msmart[39m[38;5;12m [39m[38;5;12mautocompletion[39m[38;5;12m [39m[38;5;12mbased[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12myour[39m[38;5;12m [39m[38;5;12mown[39m[38;5;12m [39m[38;5;12mjson[39m[38;5;12m [39m[38;5;12mtranslation[39m[38;5;12m [39m
|
||
[38;5;12mfiles,[39m[38;5;12m [39m[38;5;12mhandles[39m[38;5;12m [39m[38;5;12mcomplex[39m[38;5;12m [39m[38;5;12mplural[39m[38;5;12m [39m[38;5;12mrules,[39m[38;5;12m [39m[38;5;12m0[39m[38;5;12m [39m[38;5;12mdependencies.[39m
|
||
|
||
|
||
[38;2;255;187;0m[4mVueJS[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mvue i18n[0m[38;5;12m (https://kazupon.github.io/vue-i18n/) - vue i18n is internationalization plugin for Vue.js[39m
|
||
[38;5;12m- [39m[38;5;14m[1msweet-i18n[0m[38;5;12m (https://github.com/wood3n/sweet-i18n) - automatic extraction and conversion of Chinese characters in Vue and JS files based on Babel[39m
|
||
|
||
[38;2;255;187;0m[4mAngular[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mNGX Translate[0m[38;5;12m (http://www.ngx-translate.com) - translation library for Angular[39m
|
||
|
||
[38;2;255;187;0m[4mSvelte[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1msvelte-i18n[0m[38;5;12m (https://github.com/kaisermann/svelte-i18n) - internationalization for Svelte[39m
|
||
|
||
[38;2;255;187;0m[4mQuasar.dev[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mQuasar i18n[0m[38;5;12m (https://quasar.dev/options/app-internationalization) - official Quasar framework document page about internationalization[39m
|
||
|
||
[38;2;255;187;0m[4mJava [0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mThymeleaf[0m[38;5;12m (https://www.thymeleaf.org) - modern server-side Java template engine for both web and standalone environments[39m
|
||
[38;5;12m- [39m[38;5;14m[1mThymeleaf i18n docs[0m[38;5;12m (https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#using-texts) - How to use [39m[48;5;235m[38;5;249mth:texts[49m[39m[38;5;12m for translations[39m
|
||
[38;5;12m- [39m[38;5;14m[1mSpring Messages[0m[38;5;12m (https://www.baeldung.com/spring-boot-internationalization) - Spring Boot internationalization. LocaleResolver & LocaleChangeInterceptor example usage[39m
|
||
[38;5;12m- [39m[38;5;14m[1mSpring Boot localization[0m[38;5;12m (https://www.baeldung.com/spring-boot-internationalization) - Baeldun post about using Spring Messages[39m
|
||
[38;5;12m- [39m[38;5;14m[1mi18n in Spring Boot[0m[38;5;12m (https://stackoverflow.com/questions/36531131/i18n-in-spring-boot-thymeleaf) - Stackoverflow thread about i18n in Spring Boot[39m
|
||
[38;5;12m- [39m[38;5;14m[1mJava Time Classes[0m[38;5;12m (https://stackoverflow.com/questions/5175728/how-to-get-the-current-date-time-in-java/5175900) - Stackoverflow thread about time and timezones in Java.[39m
|
||
|
||
|
||
[38;5;12m![39m[38;5;14m[1mJava time classes[0m[38;5;12m (https://i.stack.imgur.com/MZe55.png)[39m
|
||
|
||
[38;2;255;187;0m[4mJekyll[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mjekyll-multiple-languages-plugin[0m[38;5;12m (https://github.com/kurtsson/jekyll-multiple-languages-plugin) - Jekyll Multiple Languages is an internationalization plugin for Jekyll.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mjekyll-i18n[0m[38;5;12m (https://github.com/liamzebedee/jekyll-i18n) - Jekyll i18n is a plugin that enables simplistic multi-language site designs using Jekyll. (not maintained)[39m
|
||
|
||
[38;2;255;187;0m[4mSwift (iOS & macOS)[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mSwiftGoogleTranslate[0m[38;5;12m (https://github.com/maximbilan/SwiftGoogleTranslate) - framework to use cloud translation API by Google in Swift[39m
|
||
|
||
[38;2;255;187;0m[4mRuby[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mTwitter/CLDR[0m[38;5;12m (https://github.com/twitter/twitter-cldr-rb) - implementation of the ICU that uses the Common Locale Data Repository to format dates, plurals[39m
|
||
[38;5;12m- [39m[38;5;14m[1mRuby i18n[0m[38;5;12m (https://guides.rubyonrails.org/i18n.html) - official internationalization API document page[39m
|
||
|
||
[38;2;255;187;0m[4mPython[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mPython-i18n[0m[38;5;12m (https://pypi.org/project/python-i18n/) - internationalization package[39m
|
||
[38;5;12m- [39m[38;5;14m[1mdeep-translator[0m[38;5;12m (https://github.com/nidhaloff/deep-translator) - library to translate between different languages in a simple way using multiple translators[39m
|
||
|
||
|
||
[38;2;255;187;0m[4m🔦 Message and key extraction[0m
|
||
|
||
[38;5;12mTools[39m[38;5;12m [39m[38;5;12mused[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12msearch[39m[38;5;12m [39m[38;5;12mtranslation[39m[38;5;12m [39m[38;5;12mkey[39m[38;5;12m [39m[38;5;12musage[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mproject[39m[38;5;12m [39m[38;5;12mfiles.[39m[38;5;12m [39m[38;5;12mUsually[39m[38;5;12m [39m[38;5;12mthey[39m[38;5;12m [39m[38;5;12mextract[39m[38;5;12m [39m[38;5;12mtranslation[39m[38;5;12m [39m[38;5;12mkeys[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12msome[39m[38;5;12m [39m[38;5;12mfile[39m[38;5;12m [39m[38;5;12mwhich[39m[38;5;12m [39m[38;5;12mcan[39m[38;5;12m [39m[38;5;12mbe[39m[38;5;12m [39m[38;5;12mimported[39m[38;5;12m [39m[38;5;12mlater[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;14m[1mtranslation[0m[38;5;14m[1m [0m[38;5;14m[1mmanagement[0m[38;5;14m[1m [0m[38;5;14m[1msystem[0m[38;5;12m [39m
|
||
[38;5;12m(#-translation-management-systems)[39m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mFormatJS CLI[0m[38;5;12m (https://formatjs.io/docs/tooling/cli/) - extract messages from project with FormatJS library[39m
|
||
[38;5;12m- [39m[38;5;14m[1msimplelocalize-cli[0m[38;5;12m (https://simplelocalize.io/docs/cli/i18n-keys-extraction/) - extract translation keys and messages from various different libraries[39m
|
||
[38;5;12m- [39m[38;5;14m[1mIntelliJ plugin for extracting i18n keys[0m[38;5;12m (https://github.com/nyavro/i18nPlugin) - IntelliJ IDEA plugin for extracing i18n keys[39m
|
||
|
||
|
||
|
||
[38;2;255;187;0m[4m🖥 Desktop apps for translation management[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mArgos Translate[0m[38;5;12m (https://github.com/argosopentech/argos-translate) - open source offline translation app based on OpenNMT[39m
|
||
[38;5;12m- [39m[38;5;14m[1mGNU gettext[0m[38;5;12m (http://www.gnu.org/software/gettext) - tool for adding native language support to applications[39m
|
||
[38;5;12m- [39m[38;5;14m[1mRTranslator[0m[38;5;12m (https://github.com/niedev/RTranslator) - simultaneous translator app for Android based on Google's API[39m
|
||
[38;5;12m- [39m[38;5;14m[1mCrow Translate[0m[38;5;12m (https://github.com/crow-translate/crow-translate) - lightweight desktop translator, uses Google, Yandex and Bing translate API.[39m
|
||
[38;5;12m- [39m[38;5;14m[1mCopy Translator[0m[38;5;12m (https://github.com/CopyTranslator/CopyTranslator) - cross-platform app that automatically translate texts when copied in the clipboard[39m
|
||
[38;5;12m- [39m[38;5;14m[1mElectronJS i18n[0m[38;5;12m (https://www.electronjs.org/apps/i18n-manager) - cross-platform i18n manager[39m
|
||
[38;5;12m- [39m[38;5;14m[1mOmegaT[0m[38;5;12m (https://omegat.org) - free translation memory application that works on all popular operating systems[39m
|
||
[38;5;12m- [39m[38;5;14m[1mLibreTranslate[0m[38;5;12m (https://github.com/uav4geo/LibreTranslate) - self-hosted web application to translate texts[39m
|
||
[38;5;12m- [39m[38;5;14m[1mPOEditor[0m[38;5;12m (https://poeditor.com) - tool for managing PO language files[39m
|
||
[38;5;12m- [39m[38;5;14m[1mFink[0m[38;5;12m (https://inlang.com/m/tdozzpar/app-inlang-editor) - git-based editor in the browser that connects to your repo[39m
|
||
|
||
|
||
[38;2;255;187;0m[4m📅 Utility libraries[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mLuxon[0m[38;5;12m (https://moment.github.io/luxon/) - powerful, modern, and friendly wrapper for JavaScript dates and times (replaces momentjs)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mdate-fns[0m[38;5;12m (https://date-fns.org) - JS library for dates[39m
|
||
[38;5;12m- [39m[38;5;14m[1mfakenumber.org[0m[38;5;12m (https://fakenumber.org) - fake phone number generator[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mgooglei18n/libphonenumber[0m[38;5;12m [39m[38;5;12m(https://github.com/googlei18n/libphonenumber)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mGoogle's[39m[38;5;12m [39m[38;5;12mcommon[39m[38;5;12m [39m[38;5;12mJava,[39m[38;5;12m [39m[38;5;12mC++[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mJavaScript[39m[38;5;12m [39m[38;5;12mlibrary[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mparsing,[39m[38;5;12m [39m[38;5;12mformatting,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mvalidating[39m[38;5;12m [39m[38;5;12minternational[39m[38;5;12m [39m[38;5;12mphone[39m[38;5;12m [39m
|
||
[38;5;12mnumbers[39m
|
||
[38;5;12m- [39m[38;5;14m[1mintl-tel-input.com[0m[38;5;12m (https://intl-tel-input.com/) - JS library for entering and validating international phone numbers[39m
|
||
|
||
[38;2;255;187;0m[4m📚 Resources[0m
|
||
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mStackoverflow:[0m[38;5;14m[1m [0m[38;5;14m[1mLocalization[0m[38;5;14m[1m [0m[38;5;14m[1mvs[0m[38;5;14m[1m [0m[38;5;14m[1mInternationalization[0m[38;5;12m [39m[38;5;12m(https://stackoverflow.com/questions/506743/localization-and-internationalization-whats-the-difference)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mLocalization[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m
|
||
[38;5;12minternationalization,[39m[38;5;12m [39m[38;5;12mwhat's[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mdifference?[39m
|
||
[38;5;12m- [39m[38;5;14m[1mStackoverflow: Daylight saving time and time-zone best practices[0m[38;5;12m (http://stackoverflow.com/questions/2532729/daylight-saving-time-and-time-zone-best-practices)[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mBlog[0m[38;5;14m[1m [0m[38;5;14m[1mpost:[0m[38;5;14m[1m [0m[38;5;14m[1mTop[0m[38;5;14m[1m [0m[38;5;14m[1m12[0m[38;5;14m[1m [0m[38;5;14m[1mlibraries[0m[38;5;14m[1m [0m[38;5;14m[1mfor[0m[38;5;14m[1m [0m[38;5;14m[1mReact[0m[38;5;14m[1m [0m[38;5;14m[1mlocalization[0m[38;5;12m [39m[38;5;12m(https://dev.to/jpomykala/top-12-libraries-for-nextjs-react-apps-and-react-native-apps-for-i18n-and-react-localization-5fi8)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mBlog[39m[38;5;12m [39m[38;5;12mpost[39m[38;5;12m [39m
|
||
[38;5;12mon[39m[38;5;12m [39m[38;5;12mdev.to[39m[38;5;12m [39m[38;5;12mabout[39m[38;5;12m [39m[38;5;12mtop[39m[38;5;12m [39m[38;5;12m12[39m[38;5;12m [39m[38;5;12mlibraries[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12mreact[39m[38;5;12m [39m[38;5;12mlocalization[39m
|
||
[38;5;12m- [39m[38;5;14m[1mBlog post: Building a minimal i18n library[0m[38;5;12m (https://janmonschke.com/building-a-minimal-i18n-library)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mBlog post: Generating images with multi-language texts[0m[38;5;12m (https://bannerly.io/blog/posts/multi-language-image-variants/) - article about images localization and i18n in blog post banners[39m
|
||
[38;5;12m- [39m[38;5;14m[1mBlog post: Language vs Locale[0m[38;5;12m (https://simplelocalize.io/blog/posts/language-vs-locale/) - what is the difference between language and locale[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mBlog[0m[38;5;14m[1m [0m[38;5;14m[1mpost:[0m[38;5;14m[1m [0m[38;5;14m[1mDevelopment/Production[0m[38;5;14m[1m [0m[38;5;14m[1mparity[0m[38;5;14m[1m [0m[38;5;14m[1mfor[0m[38;5;14m[1m [0m[38;5;14m[1mRails[0m[38;5;14m[1m [0m[38;5;14m[1mi18n[0m[38;5;12m [39m[38;5;12m(https://withatwist.dev/the-12-factor-app-dev-and-prod-parity.html)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mblog[39m[38;5;12m [39m[38;5;12mpost[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12ma[39m[38;5;12m [39m[38;5;12mwarning[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12musing[39m[38;5;12m [39m[38;5;12mdifferent[39m[38;5;12m [39m[38;5;12mi18n[39m[38;5;12m [39m[38;5;12mbackends[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m
|
||
[38;5;12mdevelopment/production[39m
|
||
[38;5;12m- [39m[38;5;14m[1mBlog post: What is 'hreflang' attribute[0m[38;5;12m (https://simplelocalize.io/blog/posts/what-is-hreflang/) - hreflang FAQ and explanation how to use it and why it is important for SEO[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mBlog[0m[38;5;14m[1m [0m[38;5;14m[1mpost:[0m[38;5;14m[1m [0m[38;5;14m[1mi18n[0m[38;5;14m[1m [0m[38;5;14m[1mwith[0m[38;5;14m[1m [0m[38;5;14m[1mReact[0m[38;5;14m[1m [0m[38;5;14m[1mIntl[0m[38;5;14m[1m [0m[38;5;14m[1mand[0m[38;5;14m[1m [0m[38;5;14m[1mSimpleLocalize[0m[38;5;12m [39m[38;5;12m(https://dujushi.github.io/2021/04/14/i18n-with-react-intl-and-simple-localize.html)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12marticle[39m[38;5;12m [39m[38;5;12mdemonstrates[39m[38;5;12m [39m[38;5;12mhow[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mset[39m[38;5;12m [39m[38;5;12mup[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mmanage[39m[38;5;12m [39m
|
||
[38;5;12mtranslations[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mautogenerated[39m[38;5;12m [39m[38;5;12mtranslation[39m[38;5;12m [39m[38;5;12mkeys[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mFormatJS[39m
|
||
[38;5;12m- [39m[38;5;14m[1mGithub: FormatJS example project[0m[38;5;12m (https://github.com/simplelocalize/simplelocalize-react-intl) - example project built with React-intl and React[39m
|
||
[38;5;12m- [39m[38;5;14m[1mGithub: i18next example project[0m[38;5;12m (https://github.com/simplelocalize/simplelocalize-i18next) - example project built with i18next and React[39m
|
||
[38;5;12m- [39m[38;5;14m[1mGuide: Google Developers - Internationalization[0m[38;5;12m (https://developers.google.com/international/) - official Google document page[39m
|
||
[38;5;12m- [39m[38;5;14m[1mGuide: Angular i18n[0m[38;5;12m (https://angular.io/guide/i18n) - official Angular i18n document page[39m
|
||
[38;5;12m- [39m[38;5;14m[1mGuide: W3C i18n standards[0m[38;5;12m (http://www.w3.org/standards/webdesign/i18n)[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mGuide:[0m[38;5;14m[1m [0m[38;5;14m[1mCommon[0m[38;5;14m[1m [0m[38;5;14m[1mLanguage[0m[38;5;14m[1m [0m[38;5;14m[1mData[0m[38;5;14m[1m [0m[38;5;14m[1mRepository[0m[38;5;12m [39m[38;5;12m(http://cldr.unicode.org/)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mUnicode[39m[38;5;12m [39m[38;5;12mCLDR[39m[38;5;12m [39m[38;5;12mprovides[39m[38;5;12m [39m[38;5;12mkey[39m[38;5;12m [39m[38;5;12mbuilding[39m[38;5;12m [39m[38;5;12mblocks[39m[38;5;12m [39m[38;5;12mfor[39m[38;5;12m [39m[38;5;12msoftware[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12msupport[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mworld's[39m[38;5;12m [39m[38;5;12mlanguages,[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mlargest[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mmost[39m[38;5;12m [39m
|
||
[38;5;12mextensive[39m[38;5;12m [39m[38;5;12mstandard[39m[38;5;12m [39m[38;5;12mrepository[39m[38;5;12m [39m[38;5;12mof[39m[38;5;12m [39m[38;5;12mlocale[39m[38;5;12m [39m[38;5;12mdata[39m[38;5;12m [39m[38;5;12mavailable[39m
|
||
[38;5;12m- [39m[38;5;14m[1mICU: International Components for Unicode[0m[38;5;12m (http://site.icu-project.org/) - ICU is a mature and widely used providing Unicode and Globalization support for software applications[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;14m[1mExtract[0m[38;5;14m[1m [0m[38;5;14m[1mmessages[0m[38;5;14m[1m [0m[38;5;14m[1mand[0m[38;5;14m[1m [0m[38;5;14m[1mtranslation[0m[38;5;14m[1m [0m[38;5;14m[1mkeys[0m[38;5;14m[1m [0m[38;5;14m[1mfrom[0m[38;5;14m[1m [0m[38;5;14m[1mproject[0m[38;5;14m[1m [0m[38;5;14m[1mfiles[0m[38;5;12m [39m[38;5;12m(https://simplelocalize.io/docs/cli/i18n-keys-extraction/)[39m[38;5;12m [39m[38;5;12m-[39m[38;5;12m [39m[38;5;12mextracting[39m[38;5;12m [39m[38;5;12mtranslation[39m[38;5;12m [39m[38;5;12mkeys[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;12mproject[39m[38;5;12m [39m[38;5;12mfiles.[39m[38;5;12m [39m[38;5;12mJavaScript,[39m[38;5;12m [39m[38;5;12mAndroid,[39m[38;5;12m [39m
|
||
[38;5;12miOS/macOS[39m
|
||
|
||
|
||
[38;2;255;187;0m[4m💭 Community tips & tricks[0m
|
||
|
||
[38;5;12m- 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.[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;12mRussian[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mGerman[39m[38;5;12m [39m[38;5;12mtend[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mhave[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mlongest[39m[38;5;12m [39m[38;5;12mtranslations,[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mlongest[39m[38;5;12m [39m[38;5;12mwords.[39m[38;5;12m [39m[38;5;12mGet[39m[38;5;12m [39m[38;5;12mfamiliar[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mshy-hyphen[39m[38;5;12m [39m[48;5;235m[38;5;249m­[49m[39m[38;5;12m [39m[38;5;12mcharacter.[39m[38;5;12m [39m[38;5;12mYou[39m[38;5;12m [39m[38;5;12mput[39m[38;5;12m [39m[38;5;12mit[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mword's[39m[38;5;12m [39m[38;5;12mhtml[39m[38;5;12m [39m[38;5;12mand[39m[38;5;12m [39m[38;5;12mit[39m[38;5;12m [39m[38;5;12mwill[39m[38;5;12m [39m[38;5;12monly[39m[38;5;12m [39m[38;5;12mbreak[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m
|
||
[38;5;12mword/show[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mhyphen[39m[38;5;12m [39m[38;5;12mwhen[39m[38;5;12m [39m[38;5;12mnecessary.[39m[38;5;12m [39m[38;5;12mGoogle[39m[38;5;12m [39m[38;5;12m“online[39m[38;5;12m [39m[38;5;12mhyphenation[39m[38;5;12m [39m[38;5;12mtool”[39m[38;5;12m [39m[38;5;12mso[39m[38;5;12m [39m[38;5;12myou[39m[38;5;12m [39m[38;5;12mknow[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mappropriate[39m[38;5;12m [39m[38;5;12mplaces[39m[38;5;12m [39m[38;5;12mto[39m[38;5;12m [39m[38;5;12mbreak[39m[38;5;12m [39m[38;5;12mthe[39m[38;5;12m [39m[38;5;12mword.[39m
|
||
[38;5;12m- 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).[39m
|
||
[38;5;12m- 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.[39m
|
||
[38;5;12m- Greek question marks look like a semicolon.[39m
|
||
[38;5;12m-[39m[38;5;12m [39m[38;5;12mAlways[39m[38;5;12m [39m[38;5;12mkeep[39m[38;5;12m [39m[38;5;12mdatetimes[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mdatabase[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mUTC.[39m[38;5;12m [39m[38;5;12mAlways[39m[38;5;12m [39m[38;5;12mreturn[39m[38;5;12m [39m[38;5;12mdatatimes[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;12mbackend[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m[38;5;12mUTC.[39m[38;5;12m [39m[38;5;12mAdjust[39m[38;5;12m [39m[38;5;12mdatetimes[39m[38;5;12m [39m[38;5;12mon[39m[38;5;12m [39m[38;5;12mUI[39m[38;5;12m [39m[38;5;12mlayer[39m[38;5;12m [39m[38;5;12musing[39m[38;5;12m [39m[38;5;12mtimezone[39m[38;5;12m [39m[38;5;12minformation[39m[38;5;12m [39m[38;5;12mfrom[39m[38;5;12m [39m[38;5;12muser[39m[38;5;12m [39m[38;5;12mor[39m[38;5;12m [39m[38;5;12mweb[39m[38;5;12m [39m[38;5;12mbrowser.[39m[38;5;12m [39m[38;5;12mAccept[39m[38;5;12m [39m[38;5;12mdatetimes[39m[38;5;12m [39m[38;5;12min[39m[38;5;12m [39m
|
||
[38;5;12mbackend[39m[38;5;12m [39m[38;5;12mwith[39m[38;5;12m [39m[38;5;12many[39m[38;5;12m [39m[38;5;12mtimezone.[39m
|
||
|
||
[38;2;255;187;0m[4m🦾 Automated translation[0m
|
||
|
||
[38;5;12m- [39m[38;5;14m[1mGengo[0m[38;5;12m (http://gengo.com) - translation is made by real people but you can make an order using API[39m
|
||
[38;5;12m- [39m[38;5;14m[1mGoogle Translate[0m[38;5;12m (https://translate.google.com)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mMicrosoft Translator[0m[38;5;12m (https://www.microsoft.com/en-GB/translator/)[39m
|
||
[38;5;12m- [39m[38;5;14m[1mDeepL[0m[38;5;12m (https://deepl.com)[39m
|
||
|
||
|
||
[38;2;255;187;0m[4m🍿 Videos[0m
|
||
|
||
[38;2;255;187;0m[4mInternationalis(z)ing Code - Computerphile[0m
|
||
|
||
[38;5;12m![39m[38;5;14m[1myoutube computerphile about internationalization[0m[38;5;12m (youtube-computerphile-internationalization.png)[39m
|
||
|
||
[38;5;12mLink: https://www.youtube.com/watch?v=0j74jcxSunY[39m
|
||
|
||
[38;2;255;187;0m[4mThe Problem with Time & Timezones - Computerphile[0m
|
||
|
||
[38;5;12m![39m[38;5;14m[1myoutube computerphile about timezones[0m[38;5;12m (youtube-computerphile-timezones.png)[39m
|
||
|
||
[38;5;12mLink: https://www.youtube.com/watch?v=-5wpm-gesOY[39m
|
||
|
||
|
||
[38;2;255;187;0m[4m📢 Contribute[0m
|
||
|
||
[38;5;12mFeel free to add or update the content![39m
|