Files
edr-platform/apps/edr-passenger-web/portal/src/lib/i18n.ts

420 lines
18 KiB
TypeScript

export type Language = 'en' | 'am' | 'om' | 'fr';
const translations = {
en: {
nav: {
home: 'Home',
services: 'Services',
about: 'About',
contact: 'Contact',
help: 'Help',
bookNow: 'Book now',
},
home: {
hero: 'Travel across the East Africa',
heroSub: 'Experience seamless train travel from Ethiopia to Djibouti',
cta: 'Start booking',
searchNow: 'Search trips',
features: 'Why choose EDR?',
comfortable: 'Comfortable journey',
comfortDesc: 'Modern coaches with seating and sleeping berths',
affordable: 'Affordable pricing',
affordableDesc: 'Competitive fares with discounts for families',
safe: 'Safe and reliable',
safeDesc: 'On-time arrivals with 24/7 customer support',
fast: 'Quick booking',
fastDesc: 'Book in minutes, pay with multiple methods',
},
services: {
title: 'Our services',
subtitle: 'Everything you need for a great journey',
booking: 'Easy booking',
bookingDesc: 'Simple online booking with instant confirmation',
seats: 'Seat selection',
seatsDesc: 'Choose from economy, standard, and VIP coaches',
payment: 'Flexible payment',
paymentDesc: 'Pay with Telebirr, CBE Birr, cards, or wallet',
support: 'Customer support',
supportDesc: 'Live chat and 24/7 assistance available',
loyalty: 'Loyalty rewards',
loyaltyDesc: 'Earn points and unlock exclusive benefits',
tracking: 'Live tracking',
trackingDesc: 'Real-time updates on your train journey',
},
about: {
title: 'About EDR',
subtitle: 'Connecting East Africa',
mission: 'Our mission',
missionText: 'To provide reliable, affordable, and comfortable train travel connecting Ethiopia and Djibouti.',
network: 'Extensive network',
networkText: '21 stations across Ethiopia and Djibouti with modern infrastructure.',
comfort: 'Comfort first',
comfortText: 'Modern coaches designed for your comfort with multiple classes.',
eco: 'Eco-friendly',
ecoText: 'Sustainable travel option that reduces carbon footprint.',
},
contact: {
title: 'Get in touch',
subtitle: 'We are here to help',
email: 'Email',
phone: 'Phone',
address: 'Address',
form: 'Send us a message',
name: 'Full Name',
emailField: 'Email address',
subject: 'Subject',
message: 'Message',
send: 'Send message',
sending: 'Sending...',
success: 'Message sent successfully!',
error: 'Failed to send message',
},
help: {
title: 'Help and FAQs',
subtitle: 'Find answers to common questions',
bookingFaq: 'Booking questions',
how: 'How do I book a ticket?',
howAnswer: 'Visit our booking page, search for available trips, select your seats, and complete payment.',
modify: 'Can I modify my booking?',
modifyAnswer: 'Yes, you can modify bookings up to 24 hours before departure from your profile.',
cancel: 'What is the cancellation policy?',
cancelAnswer: 'Cancellations made 48 hours before departure receive full refund.',
paymentFaq: 'Payment questions',
payMethods: 'What payment methods do you accept?',
payMethodsAnswer: 'We accept Telebirr, CBE Birr, eBirr, credit/debit cards, and wallet balance.',
refund: 'When will I receive my refund?',
refundAnswer: 'Refunds are processed within 5-7 business days.',
other: 'Other questions',
docs: 'What documents do I need?',
docsAnswer: 'Valid national ID, passport, or travel permit required.',
help: 'Still need help?',
contact: 'Contact our support team',
},
footer: {
about: 'About',
support: 'Support',
privacy: 'Privacy policy',
terms: 'Terms of service',
follow: 'Follow us',
rights: 'All rights reserved.',
},
},
am: {
nav: {
home: 'ቤት',
services: 'አገልግሎቶች',
about: 'ስለ ኛ',
contact: 'አግኙን',
help: 'ርዳታ',
bookNow: 'አሁን ይመዝገቡ',
},
home: {
hero: 'በምስራቅ አፍሪካ ውስጥ ይጓዙ',
heroSub: 'ከኢትዮጵያ ወደ ጂቡቲ ello seamless train travel ያስተዋውቁ',
cta: 'ቁጠባ ይጀምሩ',
searchNow: 'ጉብኝቶች ይፈልጉ',
features: 'ለምን ኢደር ይምረጡ?',
comfortable: 'ምቹ ጉዞ',
comfortDesc: 'ዘመናዊ ሕንፃዎች ወንበር እና ማተም ወራጆች ጋር',
affordable: 'ርካሽ ዋጋ',
affordableDesc: 'ለቤተሰቦች ምጣኔ ሞገድ እና ቅናሾች',
safe: 'ደህንነተኛ & አስተማማኝ',
safeDesc: 'በጊዜ ምጡና 24/7 ደንበኛ ድጋፍ',
fast: 'ፈጣን ቁጠባ',
fastDesc: 'በደቂቃዎች ይመዝገቡ፣ ብዙ ዘዴዎችን ይከፍሉ',
},
services: {
title: 'አገልግሎቶቻችን',
subtitle: 'ታላቅ ጉዞ ለሚፈልጉ ሁሉ ነገር',
booking: 'ቀላል ቁጠባ',
bookingDesc: 'ቀላል የመስመር ላይ ቁጠባ ወቅታዊ ማረጋገጫ ጋር',
seats: 'ወንበር ምርጫ',
seatsDesc: 'ኢኮኖሚ፣ መደበኛ እና VIP ሕንፃዎች ምረጡ',
payment: '유연한ከጊዜ ወደ ጊዜ ክፍያ',
paymentDesc: 'Telebirr፣ CBE Birr፣ ካርዶች ወይም ዋሌት ይከፍሉ',
support: 'ደንበኛ ድጋፍ',
supportDesc: 'ライブ ቻት እና 24/7 ረዳት ይገኛሉ',
loyalty: 'ታማኝነት ሽልማቶች',
loyaltyDesc: 'ነጥቦች ያዙ እና ብቁ ጥቅሞች ያስከፍቱ',
tracking: 'ライブ ትንተና',
trackingDesc: 'የእርስዎ ባቡር ጉዞ ውስጥ ወቅታዊ ማሻሻያዎች',
},
about: {
title: 'ስለ ኢትዮጵያ-ጂቡቲ ባቡር',
subtitle: 'ምስራቅ አፍሪካ ያገናኙ',
mission: 'ራሳችን መጠን',
missionText: 'ኢትዮጵያ እና ጂቡቲን የሚያገናኙ አስተማማኝ፣ ርካሽ እና ምቹ ባቡር ጉዞ ይሰጡ።',
network: 'ሰፊ አውታር',
networkText: 'ኢትዮጵያ እና ጂቡቲ ውስጥ 21 ጣቢያዎች ዘመናዊ መሰረተ ልማት ጋር።',
comfort: 'ምቹ ሞላላ',
comfortText: 'ብዙ ክፍሎች ጋር የእርስዎ comfort ለ ዲዛይን ዘመናዊ ሕንፃዎች።',
eco: 'ପରିବେश __ 친화적',
ecoText: 'ካርቦን እግድ ሪሞት የሚቀንስ sustainable ጉዞ አማራጭ።',
},
contact: {
title: 'ከኛ ጋር ግንኙነት ወስጥ ደርሱ',
subtitle: 'እኛ ረድ ለ ልንሆን ሞገዱ',
email: 'ኢሜይል',
phone: 'ስልክ',
address: 'አድራሻ',
form: 'ለኛ መልእክት ይላኩ',
name: 'ሙሉ ስም',
emailField: 'ኢሜይል አድራሻ',
subject: 'ርዕስ',
message: 'መልእክት',
send: 'መልእክት ይላኩ',
sending: 'በመላክ ላይ...',
success: 'መልእክት በተሳካ ተልኩ!',
error: 'መልእክት ወደ ላክ ያልተሳካ',
},
help: {
title: 'ርዳታ & FAQs',
subtitle: 'ከ general ጥያቄዎች የሚመለስ መልስ ይፈልጉ',
bookingFaq: 'ቁጠባ ጥያቄዎች',
how: 'ስንት በየት ላይ ቁጠባ?',
howAnswer: 'ቁጠባ ገጽ ይጎብኙ፣ ዞሯ ለ ይፈልጉ ፣ ወንበር ይምረጡ ዝሕ ክፍያ።',
modify: 'እኔ ቁጠባ እንደገና ማስተካከል ይችላሉ?',
modifyAnswer: 'አዎ፣ መውጫ 24 ሰዓታት በፊት ቁጠባ እንደገና ማስተካከል ይችላሉ።',
cancel: 'cancellation ወሳኔ ምንድ ነው?',
cancelAnswer: 'አስመልከት 48 ሰዓታት በፊት አውጪ ሙሉ መልስ ያገኛሉ።',
paymentFaq: 'ክፍያ ጥያቄዎች',
payMethods: 'Telebirr, CBE Birr, eBirr, ክレジット/ዲቢት ካርዶች, እና ዋሌት ሚዛን ኤ acceptedይገቡ।',
payMethodsAnswer: 'Telebirr, CBE Birr, eBirr, credit/debit ካርዶች፣ እና ዋሌት ሚዛን ยอมrับ',
refund: 'my አሌ ሥራ refund?',
refundAnswer: 'Refund በ 5-7 ሥራ ቀናት ውስጥ ተወስኖልት።',
other: 'ሌሎች ጥያቄዎች',
docs: 'ኔ ወሰደ ምን documentation?',
docsAnswer: 'ዋጋ ብሔር ID፣ ፓስፖርት ወይም ጉዞ permit አስፈላጊ።',
help: 'አሁንም ረዳታ ፈልገው?',
contact: 'ደንበኛ ድጋፍ ቡድን ጋር ማንቲ',
},
footer: {
about: 'ስለ',
contact: 'አግኙን',
privacy: 'ግላዊነት ፖሊሲ',
terms: 'service ውል',
follow: 'ከሱ ተከተሉ',
rights: 'ሁሉ ሙሉ።',
},
},
om: {
nav: {
home: 'Mana',
services: 'Tajaajilaa',
about: 'Waa',
contact: 'Nu Ilaali',
help: 'Gargaarsa',
bookNow: 'Amma Qindeessuu',
},
home: {
hero: 'Kaasaa Baafata Gidiraa',
heroSub: 'Kunoosni caraa qammateen Itoophiyaa hoo Jibuuraa jira.',
cta: 'Qindeessuu Jalqabi',
searchNow: 'Naannoo Barbaadi',
features: 'Maaliif EDR Filachuu?',
comfortable: 'Wantaa Mijataa',
comfortDesc: 'Haalaan biraa konkolaata mooniisa seeda jira.',
affordable: 'Gatii Gabbina',
affordableDesc: 'Karoora muummichaa jala maallaqa qabeenya.',
safe: 'Nageenya & Jidha',
safeDesc: 'Yeroo jilbaa dhumaasuu fi gargaarsa 24/7 deggara.',
fast: 'Qindeessuu Abadii',
fastDesc: 'Yeroo giddu gidduu qindeessuu, mallaatoo ijaa gadii.',
},
services: {
title: 'Tajaajilaa Keenya',
subtitle: 'Waa waliigalaan wantoota gid caraa mijataa',
booking: 'Qindeessuu Salphaa',
bookingDesc: 'Qindeessuu interneetii salphaa jidha gaafatama',
seats: 'Filannoo Teessaa',
seatsDesc: 'Ekonomii, idileessaa jala VIP konkolaata filachuu',
payment: 'Maallaqa Giddu Gidduu',
paymentDesc: 'Telebirr, CBE Birr, kaardii ykn wallaattii jalqabi',
support: 'Gargaarsa Fayyadhaa',
supportDesc: 'Haftuu liixii jala gargaarsa 24/7 jira',
loyalty: 'Gammachiisa Jidha',
loyaltyDesc: 'Qooda qabu jila waan gaarii gargaara',
tracking: 'Jidha Liixii',
trackingDesc: 'Jiraataa kunoosni caraa qammateen gammachisu',
},
about: {
title: 'Waa Baafata Itoophiyaa-Jibuuraa',
subtitle: 'Baafata Gidiraa Yoo Wal Qabu',
mission: 'Kora Keenya',
missionText: 'Nageenya jidha, gatii gabbina, jidha mijataa Itoophiyaa jala Jibuuraa tajaajili.',
network: 'Shabdalee Babaasaa',
networkText: '21 taasaa Itoophiyaa jala Jibuuraa keessatti konkolaata biraa.',
comfort: 'Mirga Jalqabaa',
comfortText: 'Konkolaata mooniisa mijataa kee waraqsa gidduu jira.',
eco: 'Kaasaalee Mijataa',
ecoText: 'Caraa ijaa yoo sadarka karbuuni muraa gidduu.',
},
contact: {
title: 'Nu Ilaali',
subtitle: 'Nu gargaaruufi barbaachisaa',
email: 'Imeelii',
phone: 'Bilbila',
address: 'Tuulaa',
form: 'Naaraan Itti Ergi',
name: 'Maqaa Guutuu',
emailField: 'Imeelii tuula',
subject: 'Mata',
message: 'Itti Ergi',
send: 'Naaraan Ergi',
sending: 'Erguun jira...',
success: 'Naaraan gaafatama jira!',
error: 'Naaraan erguu hin raasuu',
},
help: {
title: 'Gargaarsa & FAQs',
subtitle: 'Gaaffii guutuu jala deebii barbaadi',
bookingFaq: 'Gaaffii Qindeessuu',
how: 'Akkamitti qindeessuu?',
howAnswer: 'Fuula qindeessuu dhugi, naannoo barbaadi, teessaa filachuu, maallaqa xumura.',
modify: 'Qindeessuu koo maratti jidha adeemsa?',
modifyAnswer: 'Eenyee, walta 24 sa itti fufu qindeessuu maratti jidha adeemsa dandeenya.',
cancel: 'Hoggansa gaafatama maal jira?',
cancelAnswer: 'Walta 48 sa itti fufu walitti erga dhumaasuu guutuu arguu jidha.',
paymentFaq: 'Gaaffii Maallaqa',
payMethods: 'Maallaqa keessaa maallaqa hayyamaa?',
payMethodsAnswer: 'Telebirr, CBE Birr, eBirr, kaardii kreediitii/dibati, jala wallaattii haa jira.',
refund: 'Yeroo maallaqa deebina?',
refundAnswer: 'Maallaaq 5-7 guyyaa hojii keessatti deebi.',
other: 'Gaaffii Biraa',
docs: 'Waraqaa maal barbaachisa?',
docsAnswer: 'Kaardii ID bakka, paaspoortii ykn walii haa barbaachisaa.',
help: 'Haaluma facaasin gargaarsa Barbaadi?',
contact: 'Gargaarsa fayyadhaa mana waliin ilaali',
},
footer: {
about: 'Waa',
contact: 'Nu Ilaali',
privacy: 'Kabaja Kunnamuu',
terms: 'Seera Tajaajila',
follow: 'Isaa Hordofu',
rights: 'Hundi moodeewwan.',
},
},
fr: {
nav: {
home: 'Accueil',
services: 'Services',
about: 'À Propos',
contact: 'Contact',
help: 'Aide',
bookNow: 'Réserver Maintenant',
},
home: {
hero: 'Voyagez à travers l\'Afrique de l\'Est',
heroSub: 'Découvrez les voyages en train sans interruption d\'Éthiopie à Djibouti',
cta: 'Commencer la Réservation',
searchNow: 'Rechercher des Trajets',
features: 'Pourquoi Choisir EDR?',
comfortable: 'Voyage Confortable',
comfortDesc: 'Autobus modernes avec sièges et couchettes',
affordable: 'Prix Abordables',
affordableDesc: 'Tarifs compétitifs avec réductions pour familles',
safe: 'Sûr & Fiable',
safeDesc: 'Arrivées à l\'heure avec support client 24/7',
fast: 'Réservation Rapide',
fastDesc: 'Réservez en minutes, payez par plusieurs méthodes',
},
services: {
title: 'Nos Services',
subtitle: 'Tout ce dont vous avez besoin pour un excellent voyage',
booking: 'Réservation Facile',
bookingDesc: 'Réservation en ligne simple avec confirmation instantanée',
seats: 'Sélection des Sièges',
seatsDesc: 'Choisissez parmi les autobus économique, standard et VIP',
payment: 'Paiement Flexible',
paymentDesc: 'Payez avec Telebirr, CBE Birr, cartes ou portefeuille',
support: 'Support Client',
supportDesc: 'Chat en direct et assistance 24/7 disponibles',
loyalty: 'Récompenses de Fidélité',
loyaltyDesc: 'Gagnez des points et déverrouillez des avantages exclusifs',
tracking: 'Suivi en Direct',
trackingDesc: 'Mises à jour en temps réel de votre voyage en train',
},
about: {
title: 'À Propos du Chemin de Fer Éthiopie-Djibouti',
subtitle: 'Connecter l\'Afrique de l\'Est',
mission: 'Notre Mission',
missionText: 'Offrir des voyages en train fiables, abordables et confortables reliant l\'Éthiopie et Djibouti.',
network: 'Réseau Étendu',
networkText: '21 gares à travers l\'Éthiopie et Djibouti avec infrastructure moderne.',
comfort: 'Confort D\'Abord',
comfortText: 'Autobus modernes conçus pour votre confort avec plusieurs catégories.',
eco: 'Écologique',
ecoText: 'Option de voyage durable qui réduit l\'empreinte carbone.',
},
contact: {
title: 'Contactez-Nous',
subtitle: 'Nous sommes là pour vous aider',
email: 'Email',
phone: 'Téléphone',
address: 'Adresse',
form: 'Envoyez-Nous un Message',
name: 'Nom Complet',
emailField: 'Adresse E-mail',
subject: 'Sujet',
message: 'Message',
send: 'Envoyer le Message',
sending: 'Envoi en cours...',
success: 'Message envoyé avec succès!',
error: 'Échec de l\'envoi du message',
},
help: {
title: 'Aide & Questions Fréquentes',
subtitle: 'Trouvez des réponses aux questions courantes',
bookingFaq: 'Questions de Réservation',
how: 'Comment réserver un billet?',
howAnswer: 'Visitez notre page de réservation, recherchez les trajets disponibles, sélectionnez vos sièges et complétez le paiement.',
modify: 'Puis-je modifier ma réservation?',
modifyAnswer: 'Oui, vous pouvez modifier les réservations jusqu\'à 24 heures avant le départ.',
cancel: 'Quelle est la politique d\'annulation?',
cancelAnswer: 'Les annulations effectuées 48 heures avant le départ reçoivent un remboursement complet.',
paymentFaq: 'Questions de Paiement',
payMethods: 'Quels modes de paiement acceptez-vous?',
payMethodsAnswer: 'Nous acceptons Telebirr, CBE Birr, eBirr, cartes bancaires et portefeuille.',
refund: 'Quand recevrai-je mon remboursement?',
refundAnswer: 'Les remboursements sont traités dans les 5-7 jours ouvrables.',
other: 'Autres Questions',
docs: 'Quels documents dois-je avoir?',
docsAnswer: 'Une carte d\'identité nationale, un passeport ou un permis de voyage valide est requis.',
help: 'Avez-vous toujours besoin d\'aide?',
contact: 'Contactez notre équipe d\'assistance',
},
footer: {
about: 'À Propos',
contact: 'Contact',
privacy: 'Politique de Confidentialité',
terms: 'Conditions d\'Utilisation',
follow: 'Suivez-Nous',
rights: 'Tous droits réservés.',
},
},
};
export function getTranslation(lang: Language, key: string): string {
const keys = key.split('.');
let value: any = translations[lang];
for (const k of keys) {
value = value?.[k];
}
return value || key;
}
export function useLanguage() {
const getLang = (): Language => {
if (typeof window === 'undefined') return 'en';
return (localStorage.getItem('language') as Language) || 'en';
};
const setLang = (lang: Language) => {
localStorage.setItem('language', lang);
window.dispatchEvent(new CustomEvent('languageChange', { detail: lang }));
};
return { getLang, setLang };
}