Update and add index
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
[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;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
|
||||
|
||||
@@ -84,12 +84,10 @@
|
||||
[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;5;12m- [39m[38;5;14m[1mreact-translate-component[0m[38;5;12m (https://github.com/martinandert/react-translate-component) - component for React that utilizes the Counterpart module and the Interpolate component to provide multi-lingual/localized text content[39m
|
||||
[38;5;12m- [39m[38;5;14m[1mreact-littera[0m[38;5;12m (https://github.com/DRFR0ST/react-littera) - lightweight library for robust translations using hooks. Some of the key features are dynamic templates, missing reports, auto-locale detection and more[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
|
||||
@@ -143,8 +141,7 @@
|
||||
|
||||
[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;12mTools used to search translation key usage in project files. Usually they extract translation keys to some file which can be imported later to [39m[38;5;14m[1mtranslation management system[0m[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
|
||||
@@ -171,47 +168,42 @@
|
||||
[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[1mgooglei18n/libphonenumber[0m[38;5;12m (https://github.com/googlei18n/libphonenumber) - Google's common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers[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: Localization vs Internationalization[0m[38;5;12m (https://stackoverflow.com/questions/506743/localization-and-internationalization-whats-the-difference) - Localization and internationalization, what's the difference?[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;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: Development/Production parity for Rails i18n[0m[38;5;12m (https://withatwist.dev/the-12-factor-app-dev-and-prod-parity.html) - blog post with a warning on using different i18n backends in development/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;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;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;5;12m- [39m[38;5;14m[1mExtract messages and translation keys from project files[0m[38;5;12m (https://simplelocalize.io/docs/cli/i18n-keys-extraction/) - extracting translation keys from project files. JavaScript, Android, iOS/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-[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;5;12m- 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.[39m
|
||||
|
||||
[38;2;255;187;0m[4m🦾 Automated translation[0m
|
||||
|
||||
|
||||
Reference in New Issue
Block a user