From ddc14ae8534eda2e1368f148e0434388008bb7b5 Mon Sep 17 00:00:00 2001 From: Manish Rana Date: Wed, 24 Dec 2025 23:59:35 +0530 Subject: [PATCH] feat(i18n): add Hindi translations for contact-facing pages - Add hi.json locale file with Hindi translations - Add Hindi language to SUPPORTED_LANGUAGES - Import Hindi translations in i18n index Closes #246 --- packages/shared/src/i18n/index.ts | 3 +- packages/shared/src/i18n/languages.ts | 1 + packages/shared/src/i18n/locales/hi.json | 46 ++++++++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 packages/shared/src/i18n/locales/hi.json diff --git a/packages/shared/src/i18n/index.ts b/packages/shared/src/i18n/index.ts index 18eaaeb..278407b 100644 --- a/packages/shared/src/i18n/index.ts +++ b/packages/shared/src/i18n/index.ts @@ -3,7 +3,7 @@ import type {Language} from './languages.js'; import enTranslations from './locales/en.json' with {type: 'json'}; import nlTranslations from './locales/nl.json' with {type: 'json'}; import frTranslations from './locales/fr.json' with {type: 'json'}; - +import hiTranslations from './locales/hi.json' with {type: 'json'}; export { SUPPORTED_LANGUAGES, DEFAULT_LANGUAGE, @@ -31,6 +31,7 @@ const translationsMap: Record = { en: enTranslations, nl: nlTranslations, fr: frTranslations, + hi: hiTranslations, }; // In-memory cache for loaded translations diff --git a/packages/shared/src/i18n/languages.ts b/packages/shared/src/i18n/languages.ts index 8e2b9ce..ac40df5 100644 --- a/packages/shared/src/i18n/languages.ts +++ b/packages/shared/src/i18n/languages.ts @@ -9,6 +9,7 @@ export const SUPPORTED_LANGUAGES: Language[] = [ {code: 'en', name: 'English', nativeName: 'English', flag: 'ЁЯЗ║ЁЯЗ╕'}, {code: 'nl', name: 'Dutch', nativeName: 'Nederlands', flag: 'ЁЯЗ│ЁЯЗ▒'}, {code: 'fr', name: 'French', nativeName: 'Fran├зais', flag: 'ЁЯЗлЁЯЗ╖'}, + {code: 'hi', name: 'Hindi', nativeName: 'рд╣рд┐рдВрджреА', flag: 'ЁЯЗоЁЯЗ│'}, ]; export const DEFAULT_LANGUAGE = 'en'; diff --git a/packages/shared/src/i18n/locales/hi.json b/packages/shared/src/i18n/locales/hi.json new file mode 100644 index 0000000..567f513 --- /dev/null +++ b/packages/shared/src/i18n/locales/hi.json @@ -0,0 +1,46 @@ +{ + "pages": { + "unsubscribe": { + "title": "рдЕрдирд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ", + "description": "рд╣рдо рдЖрдкрдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред рдХреНрдпрд╛ рдЖрдк рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдк {email} рд╕реЗ рдИрдореЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?", + "button": "рдЕрдирд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ", + "buttonLoading": "рдЕрдирд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ...", + "managePreferences": "рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЛ рдмрджрд▓реЗрдВ", + "successTitle": "рдЖрдк рдЕрдирд╡рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВ", + "successDescription": "{email} рдЕрдирд╡рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рд╕реЗ рдФрд░ рдХреЛрдИ рдИрдореЗрд▓ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред", + "changedMind": "рдЖрдкрдХреЗ рдорди рдореЗрдВ рдХреНрдпрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИ?", + "subscribeAgain": "рдкреБрдирдГ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ" + }, + "subscribe": { + "title": "рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ", + "description": "рдХреНрдпрд╛ рдЖрдк рдпрдХреАрди рд╣реИ рдХрд┐ рдЖрдк {email} рд╕реЗ рдИрдореЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?", + "button": "рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ", + "buttonLoading": "рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд░рд╣рд╛ рд╣реИ...", + "successTitle": "рдЖрдк рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рдЧрдП рд╣реИрдВ!", + "successDescription": "{email} рдЕрдм рд╣рдорд╛рд░реЗ рд╕реЗ рдИрдореЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рдЧрдпрд╛ рд╣реИред" + }, + "manage": { + "title": "рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЛ рдмрджрд▓реЗрдВ", + "description": "рдИрдореЗрд▓ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЛ рдмрджрд▓реЗрдВ {email}", + "subscriptionLabel": "рдИрдореЗрд▓ рд╕рджрд╕реНрдпрддрд╛", + "subscribedStatus": "рдЖрдк рдЕрднреА рдИрдореЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рдЧрдП рд╣реИрдВ", + "unsubscribedStatus": "рдЖрдк рдЕрднреА рдИрдореЗрд▓ рд╕реЗ рдЕрдирд╡рд╕реНрдерд╛рдкрд┐рдд рд╣реИрдВ", + "subscribedSuccess": "рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рдЧрдИ!", + "unsubscribedSuccess": "рдЕрдирд╡рд╕реНрдерд╛рдкрд┐рдд рдЧрдИ!", + "unsubscribeCompletely": "рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирд╡рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ", + "subscribeToEmails": "рдИрдореЗрд▓ рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ", + "disclaimer": "рдпрд╣ рдкреГрд╖реНрда рдЖрдкрдХреЛ рдИрдореЗрд▓ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЛ рдмрджрд▓рдиреЗ рджреЗрддрд╛ рд╣реИред рдЖрдкрдХреА рд╕рджрд╕реНрдпрддрд╛ рд╕реНрдерд┐рддрд┐ рдЕрднреА рд╣реА рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИред" + }, + "common": { + "loading": "рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИ...", + "error": "рддреНрд░реБрдЯрд┐" + } + }, + "email": { + "footer": { + "unsubscribeText": "рдЖрдкрдХреЛ рдпрд╣ рдИрдореЗрд▓ рдорд┐рд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ {projectName} рд╕реЗ рдИрдореЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЛ рд╕рд╣рдордд рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдИрдореЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛", + "updatePreferences": "рдЕрдкрдиреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЛ рдмрджрд▓реЗрдВ" + } + } + } + \ No newline at end of file