Added English / Hindi Language Toggle
DEV Community

Added English / Hindi Language Toggle

ЁЯХЙя╕П рдореЛрдХреНрд╖ - Devlog v0.0.9 рджреНрд╡рд┐рднрд╛рд╖реА рдореЛрдХреНрд╖ - English / Hindi Language Toggle Issue: #36 ┬╖ Milestone: v0.1 Labels:UI ┬╖accessibility ┬╖enhancement рдХреНрдпреЛрдВ рдореЛрдХреНрд╖ рдЕрдм рддрдХ рдХреЗрд╡рд▓ рд╣рд┐рдВрджреА рдореЗрдВ рдерд╛ред README рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд▓рд┐рдЦрд╛ рдерд╛ - "For now its only for hindi users who deeply understand hindu philosophy." рдкрд░ рдпрд╣ рдПрдХ рд╕реАрдорд╛ рдереА, рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВред рдЦреЗрд▓ рдХреА рд╕рд╛рд░реА рдпрдВрддреНрд░рд┐рдХреА - рдкреНрд░рд╛рд░рдмреНрдз, рд╡реИрд░рд╛рдЧреНрдп, рд╕рдорд░реНрдкрдг - рдЧрд╣рд░реЗ рд╢рд╛рд╕реНрддреНрд░реАрдп рдЕрд░реНрде рд░рдЦрддреА рд╣реИред рдЬреЛ рдЦрд┐рд▓рд╛рдбрд╝реА рд╣рд┐рдВрджреА рдирд╣реАрдВ рдкрдврд╝рддрд╛, рд╡рд╣ рдХреЗрд╡рд▓ рднрд╛рд╖рд╛ рдХреЗ рдХрд╛рд░рдг рдЙрд╕ рджрд░реНрд╢рди рд╕реЗ рд╡рдВрдЪрд┐рдд рд░рд╣ рдЬрд╛рддрд╛ рдерд╛ред рдпрд╣ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдХрд╛рдо рдирд╣реАрдВ рдерд╛ред рдпрд╣ рджреНрд╡рд╛рд░ рдЦреЛрд▓рдиреЗ рдХрд╛ рдХрд╛рдо рдерд╛ред рд╢рд╛рд╕реНрддреНрд░реАрдп рдирд┐рдпрдо - рдЕрдиреБрд╡рд╛рдж рдХреА рд╕реАрдорд╛ рд╕рдмрд╕реЗ рдкрд╣рд▓рд╛ рдирд┐рд░реНрдгрдп рддрдХрдиреАрдХреА рдирд╣реАрдВ, рд╢рд╛рд╕реНрддреНрд░реАрдп рдерд╛: рдХреНрдпрд╛-рдХреНрдпрд╛ рдЕрдиреВрджрд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛? рдирд┐рдпрдо E-1 - рд╢реНрд▓реЛрдХ рдХрднреА рдЕрдиреВрджрд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рдореАрдорд╛рдВрд╕рд╛-рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдордиреНрддреНрд░ рдореЗрдВ рд╢рдмреНрдж-рд╢рдХреНрддрд┐ рд╣реИ, рдЕрд░реНрде рдореЗрдВ рдирд╣реАрдВред рдЗрд╕рд▓рд┐рдП English mode рдореЗрдВ рднреА рд╣рд░ рд╢реНрд▓реЛрдХ рдореВрд▓ рджреЗрд╡рдирд╛рдЧрд░реА рдореЗрдВ рд╣реА рд░рд╣рддрд╛ рд╣реИред рдиреАрдЪреЗ рдХреЗрд╡рд▓ рдЕрдиреНрд╡рдпрд╛рд░реНрде рдЬреБрдбрд╝рддрд╛ рд╣реИред рдирд╛рдо рдЬрдкрдд рдордВрдЧрд▓ рджрд┐рд╕рд┐ рджрд╕рд╣реВрдБрее By chanting the N─Бma, auspiciousness arises in all ten directions. - R─Бmacaritam─Бnasa рдкрд╣рд▓реЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рдореИрдВрдиреЗ рдЕрдиреБрд╡рд╛рдж рд▓рд┐рдЦрд╛ рдерд╛ - "Auspiciousness in all ten directions"ред рдпрд╣ рдЧрд╝рд▓рдд рдерд╛: рдХрд░реНрддрд╛ рд╣реА рд▓реБрдкреНрдд рд╣реЛ рдЧрдпрд╛ред рдореВрд▓ рдЪреМрдкрд╛рдИ рдХрд╛рд░рдг-рдХрдерди рд╣реИ (рдирд╛рдо-рдЬрдк рд╕реЗ рдордВрдЧрд▓ рд╣реЛрддрд╛ рд╣реИ), рд╕реНрдерд┐рддрд┐-рдХрдерди рдирд╣реАрдВред рдПрдХ рдкрдж рдЫреВрдЯрдиреЗ рд╕реЗ рдкреВрд░реА рдЪреМрдкрд╛рдИ рдХрд╛ рд╣рд╛рд░реНрдж рдЧрд┐рд░ рдЧрдпрд╛ред рдЕрдиреНрд╡рдпрд╛рд░реНрде рдХрд╛ рдирд┐рдпрдо: рдХреЛрдИ рдкрдж рди рдЫреЛрдбрд╝реЗрдВ, рдХреЛрдИ рднрд╛рд╡ рди рдЬреЛрдбрд╝реЗрдВред рдирд┐рдпрдо E-3 - рдкрд╛рд░рд┐рднрд╛рд╖рд┐рдХ рд╢рдмреНрдж transliteration-first рдкрд╛рдк рдХреЛ bad karma рдХрд╣рдирд╛ рдЕрд░реНрде-рд╕рдВрдХреЛрдЪ рд╣реИред рдкрд╛рдк рдиреИрддрд┐рдХ рдмреБрд░рд╛рдИ рдирд╣реАрдВ - рдорд▓рд┐рдирддрд╛ / рдЛрдг рд╣реИред | рд╣рд┐рдВрджреА | тЭМ | тЬЕ | |---|---|---| | рдкрд╛рдк | Bad Karma | P─Бpa | | рдкреБрдгреНрдп | Good Karma | Puс╣Зya | | рдкреНрд░рд╛рд░рдмреНрдз | Past-life karma | Pr─Бrabdha | | рдХреГрдкрд╛ | Grace | Kс╣Ыp─Б (grace) | | реР | Om | реР (рдХрднреА рдирд╣реАрдВ рдмрджрд▓рддрд╛) | Grace рдЕрдХреЗрд▓рд╛ рдирд╣реАрдВ рдЫреЛрдбрд╝рд╛ - рд╡рд╣ рдИрд╕рд╛рдИ рдзрд░реНрдорд╢рд╛рд╕реНрддреНрд░ рдХрд╛ рднрд╛рд░рд┐рдд рд╢рдмреНрдж рд╣реИред рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ src/i18n.js - рднрд╛рд╖рд╛-рдкреНрд░рдмрдВрдзрдХ DOM рдкрд░ рдХреЛрдИ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ, рдЗрд╕рд▓рд┐рдП engine.js рдФрд░ render.js рдЗрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд import рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред initLang() тЖТ localStorage рд╕реЗ рдкрд╕рдВрдж рдкрдврд╝реЗрдВ getLang() тЖТ рд╡рд░реНрддрдорд╛рди рднрд╛рд╖рд╛ setLang() тЖТ рдмрджрд▓реЗрдВ + persist + subscribers рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ t(key, params)тЖТ lookup + {placeholder} interpolation resolveAlert()тЖТ render-time рдкрд░ alert рдХрд╛ рдЕрдиреБрд╡рд╛рдж Fallback chain: current lang тЖТ hi тЖТ key рд╕реНрд╡рдпрдВ . рдХреЛрдИ key рдЫреВрдЯ рдЬрд╛рдП рддреЛ рдЧреЗрдо crash рдирд╣реАрдВ рд╣реЛрддрд╛ - рд╣рд┐рдВрджреА рджрд┐рдЦрддреА рд╣реИред Late binding - рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд┐рд░реНрдгрдп Alert queue рдореЗрдВ resolved string рдирд╣реАрдВ, key store рд╣реЛрддреА рд╣реИред рдЕрдиреБрд╡рд╛рдж render рд╕рдордп рдкрд░ рд╣реЛрддрд╛ рд╣реИред // alertQueue рдореЗрдВ: { titleKey: 'alert.chetana.title', params: null, icon: 'ЁЯСБя╕П' } // render.js рдореЗрдВ, рд╣рд░ frame: const { icon, title, subtitle } = resolveAlert(a); рдЗрд╕рд╕реЗ рдмреАрдЪ рдЦреЗрд▓ рдореЗрдВ рднрд╛рд╖рд╛ рдмрджрд▓рдиреЗ рдкрд░ queue рдореЗрдВ рдкрдбрд╝реЗ рдкреБрд░рд╛рдиреЗ cards рднреА рдирдИ рднрд╛рд╖рд╛ рдореЗрдВ render рд╣реЛрддреЗ рд╣реИрдВред рдХреЛрдИ рдорд┐рд╢реНрд░рд┐рдд-рднрд╛рд╖рд╛ UI рдирд╣реАрдВред рд╕рд╛рде рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рджреБрд╖реНрдкреНрд░рднрд╛рд╡: emoji рдЕрдм strings рд╕реЗ рдирд┐рдХрд▓рдХрд░ code рдореЗрдВ рдЖ рдЧрдПред рдкрд╣рд▓реЗ _updateAlert() regex рд╕реЗ leading emoji рдирд┐рдХрд╛рд▓рддрд╛ рдерд╛ - рдЕрдм рд╡рд╣ рдкреВрд░реА рдкрд░рдд рд╣реА рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реЛ рдЧрдИред рднрд╛рд╖рд╛-рдирд┐рд░рдкреЗрдХреНрд╖ рдЪреАрдЬрд╝ рднрд╛рд╖рд╛-рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреНрдпреЛрдВ рд░рд╣реЗ? src/shastra.js - рд╕рдВрд░рдЪрд┐рдд рдЧреНрд░рдВрде рд╢рд╛рд╕реНрддреНрд░-рдЧреНрд░рдВрде i18n.js рдореЗрдВ рдирд╣реАрдВ рдЧрдпрд╛ред рдХрд╛рд░рдг: | UI strings | рд╢рд╛рд╕реНрддреНрд░ | | |---|---|---| | рд╕реНрд╡рд░реВрдк | рдЫреЛрдЯреЗ, рдмрд┐рдЦрд░реЗ, {n} рд╕рд╣рд┐рдд | рд▓рдВрдмрд╛ рд╕рддрдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ | | markup | рдХреЛрдИ рдирд╣реАрдВ | , , рд╢реНрд▓реЛрдХ | | рдЙрдкрдпреЛрдЧ | рд╣рд░ frame | overlay рдЦреБрд▓рдиреЗ рдкрд░ рдПрдХ рдмрд╛рд░ | рд╣рд░ рдЕрдиреБрдЪреНрдЫреЗрдж рдЕрдм рдПрдХ object рд╣реИ - markup рдкрд╛рда рдореЗрдВ embed рдирд╣реАрдВ: { type: 'term', label: 'ЁЯУЬ рдкреНрд░рд╛рд░рдмреНрдз', text: '...' } { type: 'shloka', id: 'prarabdha' } // рд╢реНрд▓реЛрдХ-рдХреЛрд╢ рд╕реЗ { type: 'note', text: '...', color: '#ff3232' } рд╢реНрд▓реЛрдХ-рдХреЛрд╢ рднрд╛рд╖рд╛-рдирд┐рд░рдкреЗрдХреНрд╖ рд╣реИ - рдПрдХ рд╣реА рдмрд╛рд░ рд▓рд┐рдЦрд╛, рджреЛрдиреЛрдВ рднрд╛рд╖рд╛рдУрдВ рд╕реЗ id рджреНрд╡рд╛рд░рд╛ referencedред рдПрдХ рдЬрдЧрд╣ рд╕реБрдзрд╛рд░рдиреЗ рдкрд░ рджреЛрдиреЛрдВ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕реБрдзрд░рддрд╛ рд╣реИред рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдорд┐рд▓реЗ рдмрдЧ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдХрд╛рдо рдХреЛрдб рдХреА рд╕рдлрд╝рд╛рдИ рднреА рдХрд░рд╛ рдЧрдпрд╛ред рдЬреЛ рдирд┐рдХрд▓рд╛: рджреГрд╢реНрдпрдорд╛рди | рдмрдЧ | рдкреНрд░рднрд╛рд╡ | |---|---| laguage-toggle (id рдореЗрдВ n рдЧрд┐рд░рд╛) | languageToggle рд╕рджрд╛ null - рдкреВрд░рд╛ рдЯреЙрдЧрд▓ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдерд╛, ?. рдиреЗ рдЪреБрдкрдЪрд╛рдк рдирд┐рдЧрд▓ рд▓рд┐рдпрд╛ | last.Time = ... | R (рдкреБрдирд░реНрдЬрдиреНрдо) рджрдмрд╛рддреЗ рд╣реА рдкреВрд░рд╛ keydown handler рдЯреВрдЯрддрд╛ | _tutorialClickRead | tutorial card рдХреНрд▓рд┐рдХ рд╕реЗ рдХрднреА рдмрдВрдж рдирд╣реАрдВ рд╣реЛрддрд╛ | info.alert рджреЛрд╣рд░рд╛ call | рд╣рд░ рд╢рдВрдЦ/рдЬреНрдпреЛрддрд┐ рд╕рдВрдЧреНрд░рд╣ рдкрд░ рджреЛ alerts, рдПрдХ рдЦрд╛рд▓реА | рдореМрди - рдЬреЛ рдЕрдХреЗрд▓реЗ рдХрднреА рди рдкрдХрдбрд╝реЗ рдЬрд╛рддреЗ 1. aria-describedby="language-choicce-status" - рджреЛ c ред screen-reader рдХреЛ рднрд╛рд╖рд╛-рдкрд░рд┐рд╡рд░реНрддрди рдХреА рд╕реВрдЪрдирд╛ рдХрднреА рдирд╣реАрдВ рдорд┐рд▓рддреА рдереАред issue #36 рдкрд░ accessibility label рд▓рдЧрд╛ рдерд╛ - рдФрд░ рдпрд╣реА рдЙрд╕рдХрд╛ рдореВрд▓ рдерд╛ред 2. padding:10px, 28px - CSS рдореЗрдВ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рдЕрдорд╛рдиреНрдп рд╣реИред рдкреВрд░реА declaration рдЪреБрдкрдЪрд╛рдк рдЧрд┐рд░ рдЬрд╛рддреА рдереА; рдЧреБрд░реБ-рджреАрдХреНрд╖рд╛ рдмрдЯрди рдмрд┐рдирд╛ padding рдХреЗ рд╕рд┐рдХреБрдбрд╝рд╛ рд░рд╣рддрд╛ред 3. letter-spacing:0.5pxl - pxl рдХреЛрдИ рдЗрдХрд╛рдИ рдирд╣реАрдВред рд╡рд╣реА рдореМрди рд╡рд┐рдлрд▓рддрд╛ред 4. overlayTitle.style.fontFamily рдХреЗрд╡рд▓ рдкреНрд░рд▓рдп-рд╢рд╛рдЦрд╛ рдореЗрдВ рд╕реЗрдЯ рд╣реЛрддрд╛ рдерд╛ред DOM element рд╕рд╛рдЭрд╛ рд╣реИ - рдПрдХ рдмрд╛рд░ рдкреНрд░рд▓рдп рджреЗрдЦрдиреЗ рдХреЗ рдмрд╛рдж рд╡рд╣ font рдореЛрдХреНрд╖ рдФрд░ рдкреБрдирд░реНрдЬрдиреНрдо рдкрд░ рднреА рдЪрд┐рдкрдХрд╛ рд░рд╣ рдЬрд╛рддрд╛ред 5. 'Orbitron', sans-serif - Orbitron рдореЗрдВ рджреЗрд╡рдирд╛рдЧрд░реА glyphs рд╣реИрдВ рд╣реА рдирд╣реАрдВред рд╣рд┐рдВрджреА alerts browser fallback рдореЗрдВ render рд╣реЛрддреЗ рдереЗ, рдЕрд╕рдВрдЧрдд baseline рдХреЗ рд╕рд╛рдеред 6. CARD_H = 290 рд╕реНрдерд┐рд░ рдерд╛ред рдЕрдВрдЧреНрд░реЗрдЬрд╝реА рдкрд╛рда рджреЗрд╡рдирд╛рдЧрд░реА рд╕реЗ ~25% рд▓рдВрдмрд╛ рд╣реЛрддрд╛ рд╣реИ - tutorial card рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рдФрд░ hint pill dismiss-button рдкрд░ рдЪрдврд╝ рдЬрд╛рддреАред рдЕрдм рдКрдБрдЪрд╛рдИ рдорд╛рдкреА рд╣реБрдИ рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдмрдирддреА рд╣реИ: const CARD_H = HEADER_H + shlokaLines.length * LH_SHLOKA + meaningLines.length * LH_MEANING + taskLines.length * LH_TASK + ... рд╕рд╛рде рдореЗрдВ рдПрдХ wrapText() helper - рдХреНрдпреЛрдВрдХрд┐ fillText(..., maxWidth) wrap рдирд╣реАрдВ рдХрд░рддрд╛, glyphs рдХреЛ рджрдмрд╛рдХрд░ рд╕рдБрдХрд░рд╛ рдХрд░ рджреЗрддрд╛ рд╣реИред рд╣рд┐рдВрджреА рдХреА рдЫреЛрдЯреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдпрд╣ рдХрднреА рджрд┐рдЦрд╛ рд╣реА рдирд╣реАрдВ рдерд╛ред рд╢рд╛рд╕реНрддреНрд░реАрдп рд╕рдмрд╕реЗ рд╕рдВрддреЛрд╖рдЬрдирдХ рд╕реБрдзрд╛рд░ рдпрд╣ рд░рд╣рд╛ред index.html рдореЗрдВ рд▓рд┐рдЦрд╛ рдерд╛: ЁЯкв рд▓рдЧрд╛рдо (рдорди) ЁЯкИ рд╕рд╛рд░рдереА (рдорди) тЖР рдорди рджреЛ рдЬрдЧрд╣ рдХрдареЛрдкрдирд┐рд╖рджреН рез.рей.рей рд╕реНрдкрд╖реНрдЯ рд╣реИ: рдмреБрджреНрдзрд┐рдВ рддреБ рд╕рд╛рд░рдерд┐рдВ рд╡рд┐рджреНрдзрд┐, рдордирдГ рдкреНрд░рдЧреНрд░рд╣рдореЗрд╡ рдЪрее рдмреБрджреНрдзрд┐ рдХреЛ рд╕рд╛рд░рдереА рдЬрд╛рдиреЛ, рдФрд░ рдорди рдХреЛ рд▓рдЧрд╛рдоред рд╕рд╛рд░рдереА рдмреБрджреНрдзрд┐ рд╣реИ, рдорди рдирд╣реАрдВред рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд - render.js рдореЗрдВ sprite рдХрд╛ рдирд╛рдо рдкрд╣рд▓реЗ рд╕реЗ cachedBuddhiSprite рдерд╛ред рдХреЛрдб рд╕рд╣реА рдЬрд╛рдирддрд╛ рдерд╛; рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреАрдЫреЗ рд░рд╣ рдЧрдпрд╛ рдерд╛ред рдЕрдм рд╡рд╣реА рд╢реНрд▓реЛрдХ Page 3 рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ - рдкреВрд░реЗ рдЦреЗрд▓ рдХрд╛ рд░реВрдкрдХ рдЬрд┐рд╕ рдкрд░ рдЦрдбрд╝рд╛ рд╣реИ, рд╡рд╣ рдЕрдм рд╕реНрд╡рдпрдВ рдЧреНрд░рдВрде рдореЗрдВ рдЙрдкрд╕реНрдерд┐рдд рд╣реИред рдЬреЛ рд╕реАрдЦрд╛ grep -c рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЧрд┐рдирддрд╛ рд╣реИ, keys рдирд╣реАрдВред рдХрдИ рдмрд╛рд░ рдЧрд┐рдирддреА рдорд┐рд▓рддреА рджрд┐рдЦреА рдкрд░ keys рдЕрд╕рдВрддреБрд▓рд┐рдд рдереАрдВред рдЕрд╕рд▓реА рдЬрд╛рдБрдЪ рдпрд╣ рдирд┐рдХрд▓реА: const k = [...src.matchAll(/'([a-z]+.[A-Za-z0-9.]+)':/g)].map(m => m[1]); const c = {}; k.forEach(x => c[x] = (c[x]||0) + 1); Object.entries(c).filter(([,v]) => v !== 2); // рдЕрд╕рдВрддреБрд▓рд┐рдд keys рдЗрд╕реА рдиреЗ рдЕрдВрдд рдореЗрдВ 'starat.description' рдкрдХрдбрд╝реА - рдПрдХ рд╡рд░реНрддрдиреА-рджреЛрд╖ рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг English mode рдореЗрдВ рд╡рд┐рд╡рд░рдг рд╣рд┐рдВрджреА рдореЗрдВ рджрд┐рдЦ рд░рд╣рд╛ рдерд╛, рдмрд┐рдирд╛ рдХрд┐рд╕реА error рдХреЗред node --check рдирд╛рдо-рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ред рдПрдХ рдмрд╛рд░ wrapText object рдХреЗ рдЕрдВрджрд░ рдерд╛ рдФрд░ calls рд╕рд╛рджреЗ рдереЗ - syntax рдирд┐рд░реНрджреЛрд╖, рдкрд░ рдЪрд▓рддреЗ рд╣реА ReferenceError ред Syntax рдкрд╛рд╕ рд╣реЛрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рдкреНрд░рдорд╛рдг рдирд╣реАрдВред git diff | grep "^-" рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕реБрд░рдХреНрд╖рд╛-рдЬрд╛рд▓ рдирд┐рдХрд▓рд╛ред рдЕрдВрдд рдХреЗ рджреЛ regression рдЗрд╕реА рд╕реЗ рдкрдХрдбрд╝реЗ рдЧрдП - рдЬрд┐рдирдореЗрдВ рдПрдХ tutorialBtn рдХреА declaration рдереА, рдЬреЛ рдкреИрдЪ рд▓рдЧрд╛рддреЗ рд╕рдордп рдЧрд▓рддреА рд╕реЗ рдорд┐рдЯ рдЧрдИ рдереАред рдФрд░ рд╕рдмрд╕реЗ рдмрдбрд╝рд╛: git status рдиреЗ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ i18n.js рдФрд░ shastra.js untracked рдереАрдВред commit рд╣реЛ рдЬрд╛рддрд╛ рддреЛ repo рдореЗрдВ рди рдЬрд╛рддреАрдВ - рдмрд╛рдХрд╝реА рд╕рд╛рдд рдлрд╝рд╛рдЗрд▓реЗрдВ рдЙрдиреНрд╣реЗрдВ import рдХрд░рддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рдФрд░ рдХреЗ clone рдкрд░ рдЧреЗрдо рдмрд┐рд▓рдХреБрд▓ рди рдЪрд▓рддрд╛ред рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рд╕рдм рдареАрдХ рджрд┐рдЦрддрд╛ рд░рд╣рддрд╛ред рдЖрдБрдХрдбрд╝реЗ 134 keys ├Ч 2 рднрд╛рд╖рд╛рдПрдБ - рдкреВрд░реНрдг рд╕рдВрддреБрд▓рд┐рдд 40+ alert call sites - literals рд╕реЗ keys рдореЗрдВ 2 рдирдИ рдлрд╝рд╛рдЗрд▓реЗрдВ - i18n.js, shastra.js 25+ рдЕрддрд┐рд░рд┐рдХреНрдд рдмрдЧ - рдЬрд┐рдирдореЗрдВ рдХрдИ рдореМрди рдЖрдЧреЗ - рд╢рд╛рд╕реНрддреНрд░-рдЧреНрд░рдВрде рдХрд╛ рдЧрд╣рди рджрд╛рд░реНрд╢рдирд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рджреЛрдиреЛрдВ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ - IAST transliteration рдХреА рдПрдХрд░реВрдкрддрд╛ рдХреА рд╕рдореАрдХреНрд╖рд╛ - рджреЗрд╡рдирд╛рдЧрд░реА рдЕрдВрдХ ( рел ) рдмрдирд╛рдо ASCII (5 ) - рдЕрднреА рдорд┐рд╢реНрд░рд┐рдд рд╣реИрдВ - рддреАрд╕рд░реА рднрд╛рд╖рд╛ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ - рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдЕрдм рддреИрдпрд╛рд░ рд╣реИ рдореЛрдХреНрд╖ рдкреНрд░рд╛рдкреНрддрд┐ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдорд╛рд░реНрдЧ - рддреНрдпрд╛рдЧред The only path to liberation - is to let it go. Developed by Weird Codes Top comments (0)

Comments

No comments yet. Start the discussion.