feat: implement core architecture, design system, localization, and trip features for both driver and rider apps.

This commit is contained in:
Hamza-Ayed
2026-07-19 16:21:58 +03:00
parent 959e2fa758
commit c4dfeb4c6f
207 changed files with 14017 additions and 5567 deletions
+121
View File
@@ -0,0 +1,121 @@
{
"@@locale": "ar",
"appName": "Tripz",
"appTagline": "اسحب، وصل، وصل",
"phoneTitle": "أدخل رقم هاتفك للمتابعة",
"phoneLabel": "رقم الهاتف",
"phoneHint": "07XXXXXXXX",
"sendCode": "إرسال الرمز",
"otpTitle": "أدخل رمز التحقق",
"otpSentTo": "أُرسل إلى {phone}",
"@otpSentTo": {
"placeholders": {
"phone": {"type": "String"}
}
},
"otpLabel": "الرمز",
"confirm": "تأكيد",
"welcome": "مرحباً {name}",
"@welcome": {
"placeholders": {
"name": {"type": "String"}
}
},
"welcomeBack": "مرحباً بعودتك",
"whereTo": "إلى أين؟",
"myTrips": "رحلاتي",
"wallet": "المحفظة",
"coupons": "الكوبونات والدعوات",
"settings": "الإعدادات",
"support": "الدعم",
"logout": "تسجيل الخروج",
"language": "اللغة",
"arabic": "العربية",
"english": "English",
"theme": "المظهر",
"lightMode": "الوضع النهاري",
"darkMode": "الوضع الليلي",
"systemMode": "تلقائي",
"errorGeneric": "حدث خطأ ما",
"retry": "أعد المحاولة",
"emptyGeneric": "لا توجد عناصر بعد",
"loading": "جارٍ التحميل...",
"cancel": "إلغاء",
"save": "حفظ",
"close": "إغلاق",
"next": "التالي",
"back": "رجوع",
"search": "بحث",
"noResults": "لا توجد نتائج",
"connectionError": "تحقق من اتصالك بالإنترنت",
"authError": "تعذّر إرسال الرمز",
"invalidOtp": "رمز غير صحيح",
"phoneEmpty": "أدخل رقم الهاتف",
"selectDestination": "اختر وجهتك",
"pickupLocation": "نقطة الانطلاق",
"dropoffLocation": "الوجهة",
"chooseOnMap": "اختر من الخريطة",
"favorites": "المفضلة",
"home": "البيت",
"work": "العمل",
"searchPlaces": "ابحث عن مكان...",
"rideClasses": "فئة الرحلة",
"cash": "نقدي",
"walletPayment": "المحفظة",
"couponCode": "كود الخصم",
"scheduleRide": "جدولة رحلة",
"requestRide": "اطلب رحلة",
"searchingDriver": "جارٍ البحث عن سائق...",
"cancelSearch": "إلغاء البحث",
"driverAccepted": "قبل سائقك الرحلة",
"driverArriving": "السائق في طريقه إليك",
"driverArrived": "وصل سائقك",
"rideInProgress": "الرحلة جارية",
"rideCompleted": "انتهت الرحلة",
"rateDriver": "قيّم سائقك",
"tripFare": "أجرة الرحلة",
"waitingFee": "رسوم الانتظار",
"discount": "الخصم",
"paymentMethod": "طريقة الدفع",
"total": "المجموع",
"submitRating": "إرسال التقييم",
"skipRating": "تخطي",
"freeWaitMinutes": "دقائق انتظار مجانية",
"minutes": "دقائق",
"callDriver": "اتصل بالسائق",
"chatWithDriver": "دردشة مع السائق",
"shareTrip": "مشاركة الرحلة",
"emergencySOS": "طارئ SOS",
"plateNumber": "رقم اللوحة",
"vehicleInfo": "معلومات المركبة",
"driverRating": "تقييم السائق",
"eta": "الوصول المتوقع",
"km": "كم",
"min": "د",
"searchTimeout": "لم نجد سائقاً متاحاً حالياً. حاول مرة أخرى",
"goOnline": "الاتصال",
"goOffline": "الانقطاع",
"online": "مُتصل",
"offline": "مُنقطع",
"accept": "قبول",
"reject": "رفض",
"offersAvailable": "عروض متاحة",
"tripAssigned": "رحلة جديدة مُعيّنة",
"onTheWay": "في الطريق",
"arrivedAtPickup": "وصلت",
"startTrip": "بدء الرحلة",
"completeTrip": "إتمام الرحلة",
"tripInProgress": "الرحلة جارية",
"tripCompleted": "أُتمّت الرحلة",
"cancelTrip": "إلغاء الرحلة",
"cancelTripConfirm": "هل أنت متأكد من إلغاء هذه الرحلة؟",
"yes": "نعم",
"no": "لا",
"callClient": "اتصال بالعميل",
"chat": "محادثة",
"trip": "الرحلة",
"anonymous": "السائق",
"noMessagesYet": "لا توجد رسائل بعد",
"typeMessage": "اكتب رسالة..."
}
+121
View File
@@ -0,0 +1,121 @@
{
"@@locale": "en",
"appName": "Tripz",
"appTagline": "Tap, ride, arrive",
"phoneTitle": "Enter your phone number to continue",
"phoneLabel": "Phone number",
"phoneHint": "07XXXXXXXX",
"sendCode": "Send code",
"otpTitle": "Enter verification code",
"otpSentTo": "Sent to {phone}",
"@otpSentTo": {
"placeholders": {
"phone": {"type": "String"}
}
},
"otpLabel": "Code",
"confirm": "Confirm",
"welcome": "Welcome {name}",
"@welcome": {
"placeholders": {
"name": {"type": "String"}
}
},
"welcomeBack": "Welcome back",
"whereTo": "Where to?",
"myTrips": "My trips",
"wallet": "Wallet",
"coupons": "Coupons & invites",
"settings": "Settings",
"support": "Support",
"logout": "Logout",
"language": "Language",
"arabic": "العربية",
"english": "English",
"theme": "Theme",
"lightMode": "Light",
"darkMode": "Dark",
"systemMode": "System",
"errorGeneric": "Something went wrong",
"retry": "Try again",
"emptyGeneric": "Nothing here yet",
"loading": "Loading...",
"cancel": "Cancel",
"save": "Save",
"close": "Close",
"next": "Next",
"back": "Back",
"search": "Search",
"noResults": "No results found",
"connectionError": "Check your internet connection",
"authError": "Failed to send code",
"invalidOtp": "Invalid code",
"phoneEmpty": "Enter your phone number",
"selectDestination": "Choose your destination",
"pickupLocation": "Pickup location",
"dropoffLocation": "Destination",
"chooseOnMap": "Choose on map",
"favorites": "Favorites",
"home": "Home",
"work": "Work",
"searchPlaces": "Search for a place...",
"rideClasses": "Ride class",
"cash": "Cash",
"walletPayment": "Wallet",
"couponCode": "Coupon code",
"scheduleRide": "Schedule a ride",
"requestRide": "Request a ride",
"searchingDriver": "Looking for a driver...",
"cancelSearch": "Cancel search",
"driverAccepted": "Your driver accepted",
"driverArriving": "Driver is on the way",
"driverArrived": "Your driver has arrived",
"rideInProgress": "Ride in progress",
"rideCompleted": "Ride completed",
"rateDriver": "Rate your driver",
"tripFare": "Trip fare",
"waitingFee": "Waiting fee",
"discount": "Discount",
"paymentMethod": "Payment method",
"total": "Total",
"submitRating": "Submit rating",
"skipRating": "Skip",
"freeWaitMinutes": "Free wait minutes",
"minutes": "minutes",
"callDriver": "Call driver",
"chatWithDriver": "Chat with driver",
"shareTrip": "Share trip",
"emergencySOS": "Emergency SOS",
"plateNumber": "Plate number",
"vehicleInfo": "Vehicle info",
"driverRating": "Driver rating",
"eta": "Estimated arrival",
"km": "km",
"min": "min",
"searchTimeout": "No drivers available right now. Please try again",
"goOnline": "Go online",
"goOffline": "Go offline",
"online": "Online",
"offline": "Offline",
"accept": "Accept",
"reject": "Reject",
"offersAvailable": "offers available",
"tripAssigned": "New trip assigned",
"onTheWay": "On my way",
"arrivedAtPickup": "I've arrived",
"startTrip": "Start trip",
"completeTrip": "Complete trip",
"tripInProgress": "Trip in progress",
"tripCompleted": "Trip completed",
"cancelTrip": "Cancel trip",
"cancelTripConfirm": "Are you sure you want to cancel this trip?",
"yes": "Yes",
"no": "No",
"callClient": "Call client",
"chat": "Chat",
"trip": "Trip",
"anonymous": "Driver",
"noMessagesYet": "No messages yet",
"typeMessage": "Type a message..."
}
@@ -0,0 +1,775 @@
import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:intl/intl.dart' as intl;
import 'app_localizations_ar.dart';
import 'app_localizations_en.dart';
// ignore_for_file: type=lint
/// Callers can lookup localized strings with an instance of AppLocalizations
/// returned by `AppLocalizations.of(context)`.
///
/// Applications need to include `AppLocalizations.delegate()` in their app's
/// `localizationDelegates` list, and the locales they support in the app's
/// `supportedLocales` list. For example:
///
/// ```dart
/// import 'l10n/app_localizations.dart';
///
/// return MaterialApp(
/// localizationsDelegates: AppLocalizations.localizationsDelegates,
/// supportedLocales: AppLocalizations.supportedLocales,
/// home: MyApplicationHome(),
/// );
/// ```
///
/// ## Update pubspec.yaml
///
/// Please make sure to update your pubspec.yaml to include the following
/// packages:
///
/// ```yaml
/// dependencies:
/// # Internationalization support.
/// flutter_localizations:
/// sdk: flutter
/// intl: any # Use the pinned version from flutter_localizations
///
/// # Rest of dependencies
/// ```
///
/// ## iOS Applications
///
/// iOS applications define key application metadata, including supported
/// locales, in an Info.plist file that is built into the application bundle.
/// To configure the locales supported by your app, you’ll need to edit this
/// file.
///
/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file.
/// Then, in the Project Navigator, open the Info.plist file under the Runner
/// project’s Runner folder.
///
/// Next, select the Information Property List item, select Add Item from the
/// Editor menu, then select Localizations from the pop-up menu.
///
/// Select and expand the newly-created Localizations item then, for each
/// locale your application supports, add a new item and select the locale
/// you wish to add from the pop-up menu in the Value field. This list should
/// be consistent with the languages listed in the AppLocalizations.supportedLocales
/// property.
abstract class AppLocalizations {
AppLocalizations(String locale)
: localeName = intl.Intl.canonicalizedLocale(locale.toString());
final String localeName;
static AppLocalizations? of(BuildContext context) {
return Localizations.of<AppLocalizations>(context, AppLocalizations);
}
static const LocalizationsDelegate<AppLocalizations> delegate =
_AppLocalizationsDelegate();
/// A list of this localizations delegate along with the default localizations
/// delegates.
///
/// Returns a list of localizations delegates containing this delegate along with
/// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate,
/// and GlobalWidgetsLocalizations.delegate.
///
/// Additional delegates can be added by appending to this list in
/// MaterialApp. This list does not have to be used at all if a custom list
/// of delegates is preferred or required.
static const List<LocalizationsDelegate<dynamic>> localizationsDelegates =
<LocalizationsDelegate<dynamic>>[
delegate,
GlobalMaterialLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
];
/// A list of this localizations delegate's supported locales.
static const List<Locale> supportedLocales = <Locale>[
Locale('ar'),
Locale('en')
];
/// No description provided for @appName.
///
/// In ar, this message translates to:
/// **'Tripz'**
String get appName;
/// No description provided for @appTagline.
///
/// In ar, this message translates to:
/// **'اسحب، وصل، وصل'**
String get appTagline;
/// No description provided for @phoneTitle.
///
/// In ar, this message translates to:
/// **'أدخل رقم هاتفك للمتابعة'**
String get phoneTitle;
/// No description provided for @phoneLabel.
///
/// In ar, this message translates to:
/// **'رقم الهاتف'**
String get phoneLabel;
/// No description provided for @phoneHint.
///
/// In ar, this message translates to:
/// **'07XXXXXXXX'**
String get phoneHint;
/// No description provided for @sendCode.
///
/// In ar, this message translates to:
/// **'إرسال الرمز'**
String get sendCode;
/// No description provided for @otpTitle.
///
/// In ar, this message translates to:
/// **'أدخل رمز التحقق'**
String get otpTitle;
/// No description provided for @otpSentTo.
///
/// In ar, this message translates to:
/// **'أُرسل إلى {phone}'**
String otpSentTo(String phone);
/// No description provided for @otpLabel.
///
/// In ar, this message translates to:
/// **'الرمز'**
String get otpLabel;
/// No description provided for @confirm.
///
/// In ar, this message translates to:
/// **'تأكيد'**
String get confirm;
/// No description provided for @welcome.
///
/// In ar, this message translates to:
/// **'مرحباً {name}'**
String welcome(String name);
/// No description provided for @welcomeBack.
///
/// In ar, this message translates to:
/// **'مرحباً بعودتك'**
String get welcomeBack;
/// No description provided for @whereTo.
///
/// In ar, this message translates to:
/// **'إلى أين؟'**
String get whereTo;
/// No description provided for @myTrips.
///
/// In ar, this message translates to:
/// **'رحلاتي'**
String get myTrips;
/// No description provided for @wallet.
///
/// In ar, this message translates to:
/// **'المحفظة'**
String get wallet;
/// No description provided for @coupons.
///
/// In ar, this message translates to:
/// **'الكوبونات والدعوات'**
String get coupons;
/// No description provided for @settings.
///
/// In ar, this message translates to:
/// **'الإعدادات'**
String get settings;
/// No description provided for @support.
///
/// In ar, this message translates to:
/// **'الدعم'**
String get support;
/// No description provided for @logout.
///
/// In ar, this message translates to:
/// **'تسجيل الخروج'**
String get logout;
/// No description provided for @language.
///
/// In ar, this message translates to:
/// **'اللغة'**
String get language;
/// No description provided for @arabic.
///
/// In ar, this message translates to:
/// **'العربية'**
String get arabic;
/// No description provided for @english.
///
/// In ar, this message translates to:
/// **'English'**
String get english;
/// No description provided for @theme.
///
/// In ar, this message translates to:
/// **'المظهر'**
String get theme;
/// No description provided for @lightMode.
///
/// In ar, this message translates to:
/// **'الوضع النهاري'**
String get lightMode;
/// No description provided for @darkMode.
///
/// In ar, this message translates to:
/// **'الوضع الليلي'**
String get darkMode;
/// No description provided for @systemMode.
///
/// In ar, this message translates to:
/// **'تلقائي'**
String get systemMode;
/// No description provided for @errorGeneric.
///
/// In ar, this message translates to:
/// **'حدث خطأ ما'**
String get errorGeneric;
/// No description provided for @retry.
///
/// In ar, this message translates to:
/// **'أعد المحاولة'**
String get retry;
/// No description provided for @emptyGeneric.
///
/// In ar, this message translates to:
/// **'لا توجد عناصر بعد'**
String get emptyGeneric;
/// No description provided for @loading.
///
/// In ar, this message translates to:
/// **'جارٍ التحميل...'**
String get loading;
/// No description provided for @cancel.
///
/// In ar, this message translates to:
/// **'إلغاء'**
String get cancel;
/// No description provided for @save.
///
/// In ar, this message translates to:
/// **'حفظ'**
String get save;
/// No description provided for @close.
///
/// In ar, this message translates to:
/// **'إغلاق'**
String get close;
/// No description provided for @next.
///
/// In ar, this message translates to:
/// **'التالي'**
String get next;
/// No description provided for @back.
///
/// In ar, this message translates to:
/// **'رجوع'**
String get back;
/// No description provided for @search.
///
/// In ar, this message translates to:
/// **'بحث'**
String get search;
/// No description provided for @noResults.
///
/// In ar, this message translates to:
/// **'لا توجد نتائج'**
String get noResults;
/// No description provided for @connectionError.
///
/// In ar, this message translates to:
/// **'تحقق من اتصالك بالإنترنت'**
String get connectionError;
/// No description provided for @authError.
///
/// In ar, this message translates to:
/// **'تعذّر إرسال الرمز'**
String get authError;
/// No description provided for @invalidOtp.
///
/// In ar, this message translates to:
/// **'رمز غير صحيح'**
String get invalidOtp;
/// No description provided for @phoneEmpty.
///
/// In ar, this message translates to:
/// **'أدخل رقم الهاتف'**
String get phoneEmpty;
/// No description provided for @selectDestination.
///
/// In ar, this message translates to:
/// **'اختر وجهتك'**
String get selectDestination;
/// No description provided for @pickupLocation.
///
/// In ar, this message translates to:
/// **'نقطة الانطلاق'**
String get pickupLocation;
/// No description provided for @dropoffLocation.
///
/// In ar, this message translates to:
/// **'الوجهة'**
String get dropoffLocation;
/// No description provided for @chooseOnMap.
///
/// In ar, this message translates to:
/// **'اختر من الخريطة'**
String get chooseOnMap;
/// No description provided for @favorites.
///
/// In ar, this message translates to:
/// **'المفضلة'**
String get favorites;
/// No description provided for @home.
///
/// In ar, this message translates to:
/// **'البيت'**
String get home;
/// No description provided for @work.
///
/// In ar, this message translates to:
/// **'العمل'**
String get work;
/// No description provided for @searchPlaces.
///
/// In ar, this message translates to:
/// **'ابحث عن مكان...'**
String get searchPlaces;
/// No description provided for @rideClasses.
///
/// In ar, this message translates to:
/// **'فئة الرحلة'**
String get rideClasses;
/// No description provided for @cash.
///
/// In ar, this message translates to:
/// **'نقدي'**
String get cash;
/// No description provided for @walletPayment.
///
/// In ar, this message translates to:
/// **'المحفظة'**
String get walletPayment;
/// No description provided for @couponCode.
///
/// In ar, this message translates to:
/// **'كود الخصم'**
String get couponCode;
/// No description provided for @scheduleRide.
///
/// In ar, this message translates to:
/// **'جدولة رحلة'**
String get scheduleRide;
/// No description provided for @requestRide.
///
/// In ar, this message translates to:
/// **'اطلب رحلة'**
String get requestRide;
/// No description provided for @searchingDriver.
///
/// In ar, this message translates to:
/// **'جارٍ البحث عن سائق...'**
String get searchingDriver;
/// No description provided for @cancelSearch.
///
/// In ar, this message translates to:
/// **'إلغاء البحث'**
String get cancelSearch;
/// No description provided for @driverAccepted.
///
/// In ar, this message translates to:
/// **'قبل سائقك الرحلة'**
String get driverAccepted;
/// No description provided for @driverArriving.
///
/// In ar, this message translates to:
/// **'السائق في طريقه إليك'**
String get driverArriving;
/// No description provided for @driverArrived.
///
/// In ar, this message translates to:
/// **'وصل سائقك'**
String get driverArrived;
/// No description provided for @rideInProgress.
///
/// In ar, this message translates to:
/// **'الرحلة جارية'**
String get rideInProgress;
/// No description provided for @rideCompleted.
///
/// In ar, this message translates to:
/// **'انتهت الرحلة'**
String get rideCompleted;
/// No description provided for @rateDriver.
///
/// In ar, this message translates to:
/// **'قيّم سائقك'**
String get rateDriver;
/// No description provided for @tripFare.
///
/// In ar, this message translates to:
/// **'أجرة الرحلة'**
String get tripFare;
/// No description provided for @waitingFee.
///
/// In ar, this message translates to:
/// **'رسوم الانتظار'**
String get waitingFee;
/// No description provided for @discount.
///
/// In ar, this message translates to:
/// **'الخصم'**
String get discount;
/// No description provided for @paymentMethod.
///
/// In ar, this message translates to:
/// **'طريقة الدفع'**
String get paymentMethod;
/// No description provided for @total.
///
/// In ar, this message translates to:
/// **'المجموع'**
String get total;
/// No description provided for @submitRating.
///
/// In ar, this message translates to:
/// **'إرسال التقييم'**
String get submitRating;
/// No description provided for @skipRating.
///
/// In ar, this message translates to:
/// **'تخطي'**
String get skipRating;
/// No description provided for @freeWaitMinutes.
///
/// In ar, this message translates to:
/// **'دقائق انتظار مجانية'**
String get freeWaitMinutes;
/// No description provided for @minutes.
///
/// In ar, this message translates to:
/// **'دقائق'**
String get minutes;
/// No description provided for @callDriver.
///
/// In ar, this message translates to:
/// **'اتصل بالسائق'**
String get callDriver;
/// No description provided for @chatWithDriver.
///
/// In ar, this message translates to:
/// **'دردشة مع السائق'**
String get chatWithDriver;
/// No description provided for @shareTrip.
///
/// In ar, this message translates to:
/// **'مشاركة الرحلة'**
String get shareTrip;
/// No description provided for @emergencySOS.
///
/// In ar, this message translates to:
/// **'طارئ SOS'**
String get emergencySOS;
/// No description provided for @plateNumber.
///
/// In ar, this message translates to:
/// **'رقم اللوحة'**
String get plateNumber;
/// No description provided for @vehicleInfo.
///
/// In ar, this message translates to:
/// **'معلومات المركبة'**
String get vehicleInfo;
/// No description provided for @driverRating.
///
/// In ar, this message translates to:
/// **'تقييم السائق'**
String get driverRating;
/// No description provided for @eta.
///
/// In ar, this message translates to:
/// **'الوصول المتوقع'**
String get eta;
/// No description provided for @km.
///
/// In ar, this message translates to:
/// **'كم'**
String get km;
/// No description provided for @min.
///
/// In ar, this message translates to:
/// **'د'**
String get min;
/// No description provided for @searchTimeout.
///
/// In ar, this message translates to:
/// **'لم نجد سائقاً متاحاً حالياً. حاول مرة أخرى'**
String get searchTimeout;
/// No description provided for @goOnline.
///
/// In ar, this message translates to:
/// **'الاتصال'**
String get goOnline;
/// No description provided for @goOffline.
///
/// In ar, this message translates to:
/// **'الانقطاع'**
String get goOffline;
/// No description provided for @online.
///
/// In ar, this message translates to:
/// **'مُتصل'**
String get online;
/// No description provided for @offline.
///
/// In ar, this message translates to:
/// **'مُنقطع'**
String get offline;
/// No description provided for @accept.
///
/// In ar, this message translates to:
/// **'قبول'**
String get accept;
/// No description provided for @reject.
///
/// In ar, this message translates to:
/// **'رفض'**
String get reject;
/// No description provided for @offersAvailable.
///
/// In ar, this message translates to:
/// **'عروض متاحة'**
String get offersAvailable;
/// No description provided for @tripAssigned.
///
/// In ar, this message translates to:
/// **'رحلة جديدة مُعيّنة'**
String get tripAssigned;
/// No description provided for @onTheWay.
///
/// In ar, this message translates to:
/// **'في الطريق'**
String get onTheWay;
/// No description provided for @arrivedAtPickup.
///
/// In ar, this message translates to:
/// **'وصلت'**
String get arrivedAtPickup;
/// No description provided for @startTrip.
///
/// In ar, this message translates to:
/// **'بدء الرحلة'**
String get startTrip;
/// No description provided for @completeTrip.
///
/// In ar, this message translates to:
/// **'إتمام الرحلة'**
String get completeTrip;
/// No description provided for @tripInProgress.
///
/// In ar, this message translates to:
/// **'الرحلة جارية'**
String get tripInProgress;
/// No description provided for @tripCompleted.
///
/// In ar, this message translates to:
/// **'أُتمّت الرحلة'**
String get tripCompleted;
/// No description provided for @cancelTrip.
///
/// In ar, this message translates to:
/// **'إلغاء الرحلة'**
String get cancelTrip;
/// No description provided for @cancelTripConfirm.
///
/// In ar, this message translates to:
/// **'هل أنت متأكد من إلغاء هذه الرحلة؟'**
String get cancelTripConfirm;
/// No description provided for @yes.
///
/// In ar, this message translates to:
/// **'نعم'**
String get yes;
/// No description provided for @no.
///
/// In ar, this message translates to:
/// **'لا'**
String get no;
/// No description provided for @callClient.
///
/// In ar, this message translates to:
/// **'اتصال بالعميل'**
String get callClient;
/// No description provided for @chat.
///
/// In ar, this message translates to:
/// **'محادثة'**
String get chat;
/// No description provided for @trip.
///
/// In ar, this message translates to:
/// **'الرحلة'**
String get trip;
/// No description provided for @anonymous.
///
/// In ar, this message translates to:
/// **'السائق'**
String get anonymous;
/// No description provided for @noMessagesYet.
///
/// In ar, this message translates to:
/// **'لا توجد رسائل بعد'**
String get noMessagesYet;
/// No description provided for @typeMessage.
///
/// In ar, this message translates to:
/// **'اكتب رسالة...'**
String get typeMessage;
}
class _AppLocalizationsDelegate
extends LocalizationsDelegate<AppLocalizations> {
const _AppLocalizationsDelegate();
@override
Future<AppLocalizations> load(Locale locale) {
return SynchronousFuture<AppLocalizations>(lookupAppLocalizations(locale));
}
@override
bool isSupported(Locale locale) =>
<String>['ar', 'en'].contains(locale.languageCode);
@override
bool shouldReload(_AppLocalizationsDelegate old) => false;
}
AppLocalizations lookupAppLocalizations(Locale locale) {
// Lookup logic when only language code is specified.
switch (locale.languageCode) {
case 'ar':
return AppLocalizationsAr();
case 'en':
return AppLocalizationsEn();
}
throw FlutterError(
'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely '
'an issue with the localizations generation tool. Please file an issue '
'on GitHub with a reproducible sample app and the gen-l10n configuration '
'that was used.');
}
@@ -0,0 +1,335 @@
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Arabic (`ar`).
class AppLocalizationsAr extends AppLocalizations {
AppLocalizationsAr([String locale = 'ar']) : super(locale);
@override
String get appName => 'Tripz';
@override
String get appTagline => 'اسحب، وصل، وصل';
@override
String get phoneTitle => 'أدخل رقم هاتفك للمتابعة';
@override
String get phoneLabel => 'رقم الهاتف';
@override
String get phoneHint => '07XXXXXXXX';
@override
String get sendCode => 'إرسال الرمز';
@override
String get otpTitle => 'أدخل رمز التحقق';
@override
String otpSentTo(String phone) {
return 'أُرسل إلى $phone';
}
@override
String get otpLabel => 'الرمز';
@override
String get confirm => 'تأكيد';
@override
String welcome(String name) {
return 'مرحباً $name';
}
@override
String get welcomeBack => 'مرحباً بعودتك';
@override
String get whereTo => 'إلى أين؟';
@override
String get myTrips => 'رحلاتي';
@override
String get wallet => 'المحفظة';
@override
String get coupons => 'الكوبونات والدعوات';
@override
String get settings => 'الإعدادات';
@override
String get support => 'الدعم';
@override
String get logout => 'تسجيل الخروج';
@override
String get language => 'اللغة';
@override
String get arabic => 'العربية';
@override
String get english => 'English';
@override
String get theme => 'المظهر';
@override
String get lightMode => 'الوضع النهاري';
@override
String get darkMode => 'الوضع الليلي';
@override
String get systemMode => 'تلقائي';
@override
String get errorGeneric => 'حدث خطأ ما';
@override
String get retry => 'أعد المحاولة';
@override
String get emptyGeneric => 'لا توجد عناصر بعد';
@override
String get loading => 'جارٍ التحميل...';
@override
String get cancel => 'إلغاء';
@override
String get save => 'حفظ';
@override
String get close => 'إغلاق';
@override
String get next => 'التالي';
@override
String get back => 'رجوع';
@override
String get search => 'بحث';
@override
String get noResults => 'لا توجد نتائج';
@override
String get connectionError => 'تحقق من اتصالك بالإنترنت';
@override
String get authError => 'تعذّر إرسال الرمز';
@override
String get invalidOtp => 'رمز غير صحيح';
@override
String get phoneEmpty => 'أدخل رقم الهاتف';
@override
String get selectDestination => 'اختر وجهتك';
@override
String get pickupLocation => 'نقطة الانطلاق';
@override
String get dropoffLocation => 'الوجهة';
@override
String get chooseOnMap => 'اختر من الخريطة';
@override
String get favorites => 'المفضلة';
@override
String get home => 'البيت';
@override
String get work => 'العمل';
@override
String get searchPlaces => 'ابحث عن مكان...';
@override
String get rideClasses => 'فئة الرحلة';
@override
String get cash => 'نقدي';
@override
String get walletPayment => 'المحفظة';
@override
String get couponCode => 'كود الخصم';
@override
String get scheduleRide => 'جدولة رحلة';
@override
String get requestRide => 'اطلب رحلة';
@override
String get searchingDriver => 'جارٍ البحث عن سائق...';
@override
String get cancelSearch => 'إلغاء البحث';
@override
String get driverAccepted => 'قبل سائقك الرحلة';
@override
String get driverArriving => 'السائق في طريقه إليك';
@override
String get driverArrived => 'وصل سائقك';
@override
String get rideInProgress => 'الرحلة جارية';
@override
String get rideCompleted => 'انتهت الرحلة';
@override
String get rateDriver => 'قيّم سائقك';
@override
String get tripFare => 'أجرة الرحلة';
@override
String get waitingFee => 'رسوم الانتظار';
@override
String get discount => 'الخصم';
@override
String get paymentMethod => 'طريقة الدفع';
@override
String get total => 'المجموع';
@override
String get submitRating => 'إرسال التقييم';
@override
String get skipRating => 'تخطي';
@override
String get freeWaitMinutes => 'دقائق انتظار مجانية';
@override
String get minutes => 'دقائق';
@override
String get callDriver => 'اتصل بالسائق';
@override
String get chatWithDriver => 'دردشة مع السائق';
@override
String get shareTrip => 'مشاركة الرحلة';
@override
String get emergencySOS => 'طارئ SOS';
@override
String get plateNumber => 'رقم اللوحة';
@override
String get vehicleInfo => 'معلومات المركبة';
@override
String get driverRating => 'تقييم السائق';
@override
String get eta => 'الوصول المتوقع';
@override
String get km => 'كم';
@override
String get min => 'د';
@override
String get searchTimeout => 'لم نجد سائقاً متاحاً حالياً. حاول مرة أخرى';
@override
String get goOnline => 'الاتصال';
@override
String get goOffline => 'الانقطاع';
@override
String get online => 'مُتصل';
@override
String get offline => 'مُنقطع';
@override
String get accept => 'قبول';
@override
String get reject => 'رفض';
@override
String get offersAvailable => 'عروض متاحة';
@override
String get tripAssigned => 'رحلة جديدة مُعيّنة';
@override
String get onTheWay => 'في الطريق';
@override
String get arrivedAtPickup => 'وصلت';
@override
String get startTrip => 'بدء الرحلة';
@override
String get completeTrip => 'إتمام الرحلة';
@override
String get tripInProgress => 'الرحلة جارية';
@override
String get tripCompleted => 'أُتمّت الرحلة';
@override
String get cancelTrip => 'إلغاء الرحلة';
@override
String get cancelTripConfirm => 'هل أنت متأكد من إلغاء هذه الرحلة؟';
@override
String get yes => 'نعم';
@override
String get no => 'لا';
@override
String get callClient => 'اتصال بالعميل';
@override
String get chat => 'محادثة';
@override
String get trip => 'الرحلة';
@override
String get anonymous => 'السائق';
@override
String get noMessagesYet => 'لا توجد رسائل بعد';
@override
String get typeMessage => 'اكتب رسالة...';
}
@@ -0,0 +1,336 @@
// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for English (`en`).
class AppLocalizationsEn extends AppLocalizations {
AppLocalizationsEn([String locale = 'en']) : super(locale);
@override
String get appName => 'Tripz';
@override
String get appTagline => 'Tap, ride, arrive';
@override
String get phoneTitle => 'Enter your phone number to continue';
@override
String get phoneLabel => 'Phone number';
@override
String get phoneHint => '07XXXXXXXX';
@override
String get sendCode => 'Send code';
@override
String get otpTitle => 'Enter verification code';
@override
String otpSentTo(String phone) {
return 'Sent to $phone';
}
@override
String get otpLabel => 'Code';
@override
String get confirm => 'Confirm';
@override
String welcome(String name) {
return 'Welcome $name';
}
@override
String get welcomeBack => 'Welcome back';
@override
String get whereTo => 'Where to?';
@override
String get myTrips => 'My trips';
@override
String get wallet => 'Wallet';
@override
String get coupons => 'Coupons & invites';
@override
String get settings => 'Settings';
@override
String get support => 'Support';
@override
String get logout => 'Logout';
@override
String get language => 'Language';
@override
String get arabic => 'العربية';
@override
String get english => 'English';
@override
String get theme => 'Theme';
@override
String get lightMode => 'Light';
@override
String get darkMode => 'Dark';
@override
String get systemMode => 'System';
@override
String get errorGeneric => 'Something went wrong';
@override
String get retry => 'Try again';
@override
String get emptyGeneric => 'Nothing here yet';
@override
String get loading => 'Loading...';
@override
String get cancel => 'Cancel';
@override
String get save => 'Save';
@override
String get close => 'Close';
@override
String get next => 'Next';
@override
String get back => 'Back';
@override
String get search => 'Search';
@override
String get noResults => 'No results found';
@override
String get connectionError => 'Check your internet connection';
@override
String get authError => 'Failed to send code';
@override
String get invalidOtp => 'Invalid code';
@override
String get phoneEmpty => 'Enter your phone number';
@override
String get selectDestination => 'Choose your destination';
@override
String get pickupLocation => 'Pickup location';
@override
String get dropoffLocation => 'Destination';
@override
String get chooseOnMap => 'Choose on map';
@override
String get favorites => 'Favorites';
@override
String get home => 'Home';
@override
String get work => 'Work';
@override
String get searchPlaces => 'Search for a place...';
@override
String get rideClasses => 'Ride class';
@override
String get cash => 'Cash';
@override
String get walletPayment => 'Wallet';
@override
String get couponCode => 'Coupon code';
@override
String get scheduleRide => 'Schedule a ride';
@override
String get requestRide => 'Request a ride';
@override
String get searchingDriver => 'Looking for a driver...';
@override
String get cancelSearch => 'Cancel search';
@override
String get driverAccepted => 'Your driver accepted';
@override
String get driverArriving => 'Driver is on the way';
@override
String get driverArrived => 'Your driver has arrived';
@override
String get rideInProgress => 'Ride in progress';
@override
String get rideCompleted => 'Ride completed';
@override
String get rateDriver => 'Rate your driver';
@override
String get tripFare => 'Trip fare';
@override
String get waitingFee => 'Waiting fee';
@override
String get discount => 'Discount';
@override
String get paymentMethod => 'Payment method';
@override
String get total => 'Total';
@override
String get submitRating => 'Submit rating';
@override
String get skipRating => 'Skip';
@override
String get freeWaitMinutes => 'Free wait minutes';
@override
String get minutes => 'minutes';
@override
String get callDriver => 'Call driver';
@override
String get chatWithDriver => 'Chat with driver';
@override
String get shareTrip => 'Share trip';
@override
String get emergencySOS => 'Emergency SOS';
@override
String get plateNumber => 'Plate number';
@override
String get vehicleInfo => 'Vehicle info';
@override
String get driverRating => 'Driver rating';
@override
String get eta => 'Estimated arrival';
@override
String get km => 'km';
@override
String get min => 'min';
@override
String get searchTimeout =>
'No drivers available right now. Please try again';
@override
String get goOnline => 'Go online';
@override
String get goOffline => 'Go offline';
@override
String get online => 'Online';
@override
String get offline => 'Offline';
@override
String get accept => 'Accept';
@override
String get reject => 'Reject';
@override
String get offersAvailable => 'offers available';
@override
String get tripAssigned => 'New trip assigned';
@override
String get onTheWay => 'On my way';
@override
String get arrivedAtPickup => 'I\'ve arrived';
@override
String get startTrip => 'Start trip';
@override
String get completeTrip => 'Complete trip';
@override
String get tripInProgress => 'Trip in progress';
@override
String get tripCompleted => 'Trip completed';
@override
String get cancelTrip => 'Cancel trip';
@override
String get cancelTripConfirm => 'Are you sure you want to cancel this trip?';
@override
String get yes => 'Yes';
@override
String get no => 'No';
@override
String get callClient => 'Call client';
@override
String get chat => 'Chat';
@override
String get trip => 'Trip';
@override
String get anonymous => 'Driver';
@override
String get noMessagesYet => 'No messages yet';
@override
String get typeMessage => 'Type a message...';
}