mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-09-05 13:03:39 +00:00
420 lines
18 KiB
TypeScript
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 };
|
|
}
|