ЁЯХЙя╕П рдореЛрдХреНрд╖ тАФ 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 | рдХреЛрдИ рдирд╣реАрдВ |
<strong>, <em>, рд╢реНрд▓реЛрдХ |
| рдЙрдкрдпреЛрдЧ | рд╣рд░ 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.
ЁЯОо itch.io ┬╖ ЁЯТЫ PayPal ┬╖
Developed by Weird Codes
Top comments (0)