Waseel: driver app, dispatch, POI suggestions, map fixes
This commit is contained in:
@@ -0,0 +1,501 @@
|
||||
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 1–8.",
|
||||
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.",
|
||||
},
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user