Files
waseel/lib/translations/en.ts
T

502 lines
16 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
export const en = {
common: {
cancel: "Cancel",
continue: "Continue",
back: "Back",
retry: "Try Again",
loading: "Loading…",
saving: "Saving…",
error: "Error",
save: "Save",
or: "Or",
browseHome: "Browse Home",
backHome: "Back Home",
openSettings: "Open Settings",
yourLocation: "Your location",
},
onboarding: {
skip: "Skip",
next: "Next",
getStarted: "Get Started",
slide1: {
title: "The perfect ride is just a tap away!",
desc: "Your journey begins with Waseel. Find your ideal ride effortlessly.",
},
slide2: {
title: "Best car in your hands with Waseel",
desc: "Discover the convenience of finding your perfect ride with Waseel",
},
slide3: {
title: "Your ride, your way. Let's go!",
desc: "Enter your destination, sit back, and let us take care of the rest.",
},
},
auth: {
signIn: {
welcome: "Welcome 👋",
email: "Email",
emailPlaceholder: "karim@email.com",
password: "Password",
passwordPlaceholder: "••••••••",
keepSignedIn: "Keep me signed in",
signingIn: "Signing in…",
signInBtn: "Sign In",
signInGoogle: "Sign in with Google",
forgotPassword: "Forgot password?",
noAccount: "Don't have an account? ",
signUpLink: "Sign up",
carAlt: "Car",
reset: {
title: "Reset password",
requestBody:
"Enter your email and we'll send you a 6-digit reset code.",
emailPlaceholder: "karim@email.com",
sending: "Sending…",
sendCode: "Send Code",
newPassTitle: "Enter new password",
resetBody: "We've sent a reset code to {email}",
devBanner:
"Email delivery is not configured on this server. Your reset code is ",
newPassLabel: "New password",
newPasswordPlaceholder: "••••••••",
resetting: "Resetting…",
resetBtn: "Reset Password",
},
alertMissingTitle: "Missing information",
alertMissingBody: "Enter both your email and your password.",
alertErrorTitle: "Error",
alertErrorFallback: "Could not sign in. Please try again.",
errEmail: "Enter your email address.",
errCode: "Enter the 6-digit code.",
errPassword: "Password must be at least 8 characters.",
errReset: "Could not reset your password. Please try again.",
},
signUp: {
createAccount: "Create Your Account",
howUse: "How will you use Waseel?",
riderTitle: "I need a ride",
riderDesc: "Book rides and get where you're going",
driverTitle: "I want to drive",
driverDesc: "Offer rides and earn money with your car",
carAlt: "Car",
name: "Name",
namePlaceholder: "Karim Haddad",
email: "Email",
emailPlaceholder: "karim@email.com",
phoneOptional: "Phone (optional)",
phonePlaceholder: "70 123 456",
password: "Password",
passwordPlaceholder: "••••••••",
signUpBtn: "Sign Up",
signUpGoogle: "Sign up with Google",
haveAccount: "Already have an account? ",
signInLink: "Sign in",
verify: {
title: "Verification",
body: "We've sent a verification code to {email}",
devBanner:
"Email delivery is not configured on this server. Your verification code is ",
verifying: "Verifying…",
verifyBtn: "Verify Email",
checkAlt: "Check",
},
verified: {
title: "Verified",
body: "You've successfully verified your account.",
},
alertMissingTitle: "Missing information",
alertMissingBody: "Please fill in your name, email and password.",
alertPhoneTitle: "Invalid phone number",
alertPhoneBody: "Enter a valid Lebanese number, e.g. 70 123 456.",
alertErrorTitle: "Error",
alertErrorFallback: "Could not create your account.",
errCode: "Enter the 6-digit code.",
errVerify: "Verification failed. Please try again.",
},
role: {
title: "How will you use Waseel?",
subtitle: "You can change this later by contacting support.",
riderTitle: "I'm a Rider",
riderDesc: "Book rides and get around Lebanon",
driverTitle: "I'm a Driver",
driverDesc: "Give rides and earn money",
alertErrorTitle: "Error",
alertErrorBody: "Could not save your choice. Please try again.",
},
},
home: {
welcome: "Welcome {name} 👋",
logoutAlt: "Logout",
currentLocation: "Your Current Location",
findingLocation: "Finding your location…",
whatNeed: "What do you need?",
recentRides: "Recent Rides",
noRecent: "No recent rides found.",
noRecentAlt: "No recent rides found",
},
rides: {
allRides: "All rides",
noRecent: "No recent rides found.",
noRecentAlt: "No recent rides found",
},
tabs: {
home: "Home",
rides: "Rides",
chat: "Chat",
profile: "Profile",
settings: "Settings",
},
chat: {
title: "Chat",
messageAlt: "message",
noMessages: "No Messages Yet",
startConversation: "Start a conversation with your friends and family",
},
profile: {
title: "My Profile",
avatarAlt: "Your Avatar",
firstName: "First name",
firstNamePlaceholder: "Your First name",
lastName: "Last name",
lastNamePlaceholder: "Your Last name",
email: "Email",
emailPlaceholder: "Your Email address",
},
findRide: {
title: "Ride",
from: "From",
to: "To",
findNow: "Find now",
},
confirmRide: {
title: "Request Ride",
yourTrip: "Your trip",
pickup: "Pickup",
destination: "Destination",
tripTime: "Trip time {time}",
paymentMethod: "Payment Method",
cash: "💵 Cash",
card: "💳 Card",
fareDisplay: "${fare}",
lbpEstimate: "≈ {lbp}",
noDrivers: "No {service} drivers online right now",
findingDrivers: "Finding drivers nearby…",
nearestDriver: "Nearest driver ≈ {eta} min away",
requesting: "Requesting…",
noDriversOnline: "No drivers online",
requestCash: "Request Ride · Pay cash to driver",
requestCard: "Request Ride · Pay by card",
alertMissingRouteTitle: "Missing route",
alertMissingRouteBody: "Please set a pickup and destination first.",
alertNoEstimateTitle: "No estimate",
alertNoEstimateBody: "We couldn't estimate this fare. Please try again.",
alertErrorTitle: "Error",
alertErrorFallback:
"Something went wrong while booking your ride. Please try again.",
alertPayCardTitle: "Pay by card",
alertPayCardBody: "Your card will be charged ${fare}.",
},
bookRide: {
status: {
requested: "Finding your driver…",
accepted: "Driver assigned — heading to you",
enRoute: "On your trip",
completed: "You've arrived!",
cancelled: "Ride cancelled",
},
rideNotFound: "Ride not found.",
couldNotLoad: "Could not load this ride.",
backHome: "Back Home",
matchingDriver: "We're matching you with the nearest {service} driver.",
ratingFallback: "—",
paymentCash: "💵 Cash to driver",
paymentCard: "💳 Paid by card",
fare: "Fare: ${fare}",
tripTime: "Trip time {time}",
rideCancelled: "This ride was cancelled.",
cancelRide: "Cancel Ride",
cancelling: "Cancelling…",
alertErrorTitle: "Error",
alertErrorBody: "Could not cancel this ride. Please try again.",
},
driver: {
home: {
signOutAlt: "Sign out",
driverMode: "Driver mode",
online: "● Online — receiving ride requests",
goOnline: "○ Go online to drive",
todaysEarnings: "Today's earnings",
completedToday: "Completed today",
incomingRequests: "Incoming requests",
incomingRequestsOffline: "Incoming requests (offline)",
waitingRequests: "Waiting for ride requests…",
goOnlineStart: "Go online to start driving.",
welcome: "Welcome, {name}",
welcomeFallback: "driver",
setupIntro:
"Set up your driver profile to start receiving ride requests.",
whatDrive: "What will you drive?",
carModel: "Car model",
carModelPlaceholder: "e.g. Toyota Camry",
carSeats: "Car seats",
carSeatsPlaceholder: "4",
saving: "Saving…",
startDriving: "Start driving",
alertSeatsTitle: "Invalid seats",
alertSeatsBody: "Car seats must be a whole number 18.",
alertErrorTitle: "Error",
alertCreateBody:
"Could not create your driver profile. Please try again.",
alertToggleBody: "Could not change your status. Please try again.",
noRequestsAlt: "No recent rides found",
},
offerCard: {
newRequest: "New request · {service}",
cash: "💵 Cash",
card: "💳 Card",
fromAlt: "From",
toAlt: "To",
tripTime: "Trip time",
fare: "Fare",
decline: "Decline",
accept: "Accept",
},
activeRide: {
headToPickup: "Head to pickup",
tripInProgress: "Trip in progress",
rider: "{name}",
fromAlt: "From",
toAlt: "To",
fare: "Fare",
startTrip: "Start trip",
completeTrip: "Complete trip",
alertErrorTitle: "Error",
alertAcceptBody:
"Could not accept this ride. It may have been taken or expired.",
alertDeclineBody: "Could not decline this ride. Please try again.",
alertUpdateBody: "Could not update the ride. Please try again.",
},
},
services: {
car: { label: "Car", tagline: "An everyday ride, up to 4 seats." },
moto: {
label: "Moto",
tagline: "Beat the traffic — one passenger, no luggage.",
},
courier: {
label: "Courier",
tagline: "Send a parcel across town without riding along.",
},
chauffeur: {
label: "My Car",
tagline: "A driver comes to you and drives your own car.",
},
},
pois: {
nearbyTitle: "Nearby suggestions",
mall: "Mall",
hospital: "Hospital",
pharmacy: "Pharmacy",
restaurant: "Restaurant",
searching: "searching…",
noneNearby: "none nearby",
kmAway: "{km} km away",
routeAway: "{km} km · {min} min",
nearbyPlace: "Nearby place",
},
units: {
min: { zero: "0 min", one: "{n} min", other: "{n} min" },
h: "{n}h",
m: "{n}m",
hoursMinutes: "{h}h {m}m",
seats: { zero: "{n} seats", one: "{n} seat", other: "{n} seats" },
lbpSuffix: " L.B.P.",
},
months: {
jan: "Jan",
feb: "Feb",
mar: "Mar",
apr: "Apr",
may: "May",
jun: "Jun",
jul: "Jul",
aug: "Aug",
sep: "Sep",
oct: "Oct",
nov: "Nov",
dec: "Dec",
},
components: {
oauth: {
or: "Or",
googleLogoAlt: "Google logo",
alertFailTitle: "Google sign-in failed",
alertFailNoToken: "No token returned. Try again.",
alertFailFallback: "Please try again.",
},
otp: {
code: "Code",
codePlaceholder: "123456",
pasteCode: "Paste code from Gmail",
},
googleTextInput: {
searchAlt: "Search",
placeholder: "Where do you want to go?",
},
inputField: {
labelIconAlt: "{label} icon",
},
locationNotice: {
denied: {
title: "Location access is off",
body: "Waseel needs your location to show nearby drivers and set your pickup point.",
action: "Open Settings",
},
servicesOff: {
title: "Location services are off",
body: "Turn on location on your device, then try again.",
action: "Try Again",
},
unavailable: {
title: "Couldn't find your location",
body: "Move somewhere with a clearer signal, or set your pickup point manually.",
action: "Try Again",
},
},
map: {
destination: "Destination",
webUnavailable:
"Map is not available on web.\nRun on Android/iOS for the full experience.",
},
rideCard: {
mapAlt: "Map",
originAlt: "Origin",
destinationAlt: "Destination",
dateTime: "Date & Time",
driver: "Driver",
carSeats: "Car Seats",
fare: "Fare",
paymentStatus: "Payment Status",
paymentCash: "Cash · Pay to driver",
paymentPaid: "Paid by card",
paymentOther: "{status}",
},
rideLayout: {
goBack: "Go Back",
backArrowAlt: "Back arrow",
},
payment: {
paymentMethod: "Payment Method",
cash: "💵 Cash",
card: "💳 Card",
processing: "Processing...",
bookCash: "Book ride · Pay cash to driver",
confirmCard: "Confirm & Pay by Card",
checkAlt: "Check",
rideBooked: "Ride Booked!",
successBody:
"Thank you for your booking.\n Your reservation has been placed.\n",
cashInstruction: "Please have {lbp} ready.",
backHome: "Back Home",
alertPayCardTitle: "Pay by card",
alertPayCardBody: "Your card will be charged ${amount}.",
alertErrorTitle: "Error",
alertErrorBody:
"Something went wrong while booking your ride. Please try again.",
alertPaymentNotCompletedTitle: "Payment not completed",
alertPaymentNotCompletedBody:
"Your payment was cancelled or could not be verified. Please try again.",
alertProcessingTitle: "Error",
alertProcessingBody:
"Something went wrong while processing your payment. Please try again.",
},
driverCard: {
avatarAlt: "Driver Avatar",
starAlt: "Star",
dollarAlt: "Dollar",
carAlt: "Car",
seats: "{n} seats",
},
},
settings: {
title: "Settings",
maps: {
title: "Maps & Navigation",
description:
"Waseel uses your location to show nearby drivers and navigate to your pickup.",
statusGranted: "Granted",
statusDenied: "Not allowed",
statusBlocked: "Blocked",
statusUnknown: "Checking…",
openSettings: "Open Settings",
},
appearance: {
title: "Appearance",
description: "Choose how Waseel looks.",
light: "Light",
dark: "Dark",
system: "System",
},
safety: {
title: "Safety",
call112: "Call 112 — Emergency",
call112Description:
"Call Lebanon's emergency number for law enforcement, ambulance, or fire.",
callFailedTitle: "Could not place a call",
callFailedBody:
"No dialer is available on this device. Call 112 manually.",
proactive: {
title: "Proactive safety",
body: "Share your trip status and live location with trusted contacts, and ride with confidence knowing help is one tap away.",
},
verification: {
title: "Passenger verification",
body: "Riders and drivers verify their phone number and identity, so you always know who you're riding with.",
},
privacy: {
title: "Protecting your privacy",
body: "Your phone number and contact details stay hidden in chat. Messages are visible only between you and your driver for this ride.",
},
},
language: {
title: "Language",
description: "App language.",
en: "English",
ar: "العربية",
fr: "Français",
rtlRestartTitle: "Restart for Arabic",
rtlRestartBody:
"Arabic layout will apply fully the next time you open the app.",
},
keepAwake: {
title: "Do not lock screen",
description: "Keep the display on while the app is open.",
},
overlay: {
title: "Display over other apps",
description:
"Required so incoming ride alerts can appear over other apps.",
allow: "Allow display over other apps",
openedHint: "Opened system settings",
notAndroid: "Only available on Android.",
},
},
};