Waseel: driver app, dispatch, POI suggestions, map fixes
This commit is contained in:
@@ -0,0 +1,485 @@
|
||||
export const ar = {
|
||||
common: {
|
||||
cancel: "إلغاء",
|
||||
continue: "متابعة",
|
||||
back: "رجوع",
|
||||
retry: "حاول مجددًا",
|
||||
loading: "جارٍ التحميل…",
|
||||
saving: "جارٍ الحفظ…",
|
||||
error: "خطأ",
|
||||
save: "حفظ",
|
||||
or: "أو",
|
||||
browseHome: "الصفحة الرئيسية",
|
||||
backHome: "العودة للرئيسية",
|
||||
openSettings: "فتح الإعدادات",
|
||||
yourLocation: "موقعك",
|
||||
},
|
||||
|
||||
onboarding: {
|
||||
skip: "تخطٍّ",
|
||||
next: "التالي",
|
||||
getStarted: "ابدأ الآن",
|
||||
slide1: {
|
||||
title: "رحلتك المثالية على بُعد نقرة واحدة!",
|
||||
desc: "تبدأ رحلتك مع وصّيل. اعثر على رحلتك المثالية بكل سهولة.",
|
||||
},
|
||||
slide2: {
|
||||
title: "أفضل سيارة بين يديك مع وصّيل",
|
||||
desc: "اكتشف سهولة العثور على رحلتك المثالية مع وصّيل",
|
||||
},
|
||||
slide3: {
|
||||
title: "رحلتك بطريقتك. لننطلق!",
|
||||
desc: "أدخل وجهتك، وارتَح، ودعنا نتولّى الباقي.",
|
||||
},
|
||||
},
|
||||
|
||||
auth: {
|
||||
signIn: {
|
||||
welcome: "أهلاً 👋",
|
||||
email: "البريد الإلكتروني",
|
||||
emailPlaceholder: "karim@email.com",
|
||||
password: "كلمة المرور",
|
||||
passwordPlaceholder: "••••••••",
|
||||
keepSignedIn: "إبقائي مسجّلاً",
|
||||
signingIn: "جارٍ تسجيل الدخول…",
|
||||
signInBtn: "تسجيل الدخول",
|
||||
signInGoogle: "تسجيل الدخول عبر Google",
|
||||
forgotPassword: "نسيت كلمة المرور؟",
|
||||
noAccount: "ليس لديك حساب؟ ",
|
||||
signUpLink: "إنشاء حساب",
|
||||
carAlt: "سيارة",
|
||||
reset: {
|
||||
title: "إعادة تعيين كلمة المرور",
|
||||
requestBody:
|
||||
"أدخل بريدك الإلكتروني وسنرسل لك رمز إعادة تعيين مكوّن من 6 أرقام.",
|
||||
emailPlaceholder: "karim@email.com",
|
||||
sending: "جارٍ الإرسال…",
|
||||
sendCode: "إرسال الرمز",
|
||||
newPassTitle: "أدخل كلمة المرور الجديدة",
|
||||
resetBody: "أرسلنا رمز إعادة التعيين إلى {email}",
|
||||
devBanner:
|
||||
"إرسال البريد غير مُفعّل على هذا الخادم. رمز إعادة التعيين هو ",
|
||||
newPassLabel: "كلمة المرور الجديدة",
|
||||
newPasswordPlaceholder: "••••••••",
|
||||
resetting: "جارٍ إعادة التعيين…",
|
||||
resetBtn: "إعادة تعيين كلمة المرور",
|
||||
},
|
||||
alertMissingTitle: "معلومات ناقصة",
|
||||
alertMissingBody: "أدخل بريدك الإلكتروني وكلمة المرور.",
|
||||
alertErrorTitle: "خطأ",
|
||||
alertErrorFallback: "تعذّر تسجيل الدخول. حاول مرة أخرى.",
|
||||
errEmail: "أدخل بريدك الإلكتروني.",
|
||||
errCode: "أدخل الرمز المكوّن من 6 أرقام.",
|
||||
errPassword: "يجب أن تكون كلمة المرور 8 أحرف على الأقل.",
|
||||
errReset: "تعذّر إعادة تعيين كلمة المرور. حاول مرة أخرى.",
|
||||
},
|
||||
signUp: {
|
||||
createAccount: "أنشئ حسابك",
|
||||
howUse: "كيف ستستخدم وصّيل؟",
|
||||
riderTitle: "أحتاج رحلة",
|
||||
riderDesc: "احجز رحلات وصل إلى وجهتك",
|
||||
driverTitle: "أريد القيادة",
|
||||
driverDesc: "قدّم رحلات واكسب المال بسيارتك",
|
||||
carAlt: "سيارة",
|
||||
name: "الاسم",
|
||||
namePlaceholder: "كريم حداد",
|
||||
email: "البريد الإلكتروني",
|
||||
emailPlaceholder: "karim@email.com",
|
||||
phoneOptional: "الهاتف (اختياري)",
|
||||
phonePlaceholder: "70 123 456",
|
||||
password: "كلمة المرور",
|
||||
passwordPlaceholder: "••••••••",
|
||||
signUpBtn: "إنشاء حساب",
|
||||
signUpGoogle: "التسجيل عبر Google",
|
||||
haveAccount: "هل لديك حساب بالفعل؟ ",
|
||||
signInLink: "تسجيل الدخول",
|
||||
verify: {
|
||||
title: "التحقق",
|
||||
body: "أرسلنا رمز تحقق إلى {email}",
|
||||
devBanner: "إرسال البريد غير مُفعّل على هذا الخادم. رمز التحقق هو ",
|
||||
verifying: "جارٍ التحقق…",
|
||||
verifyBtn: "تحقق من البريد",
|
||||
checkAlt: "تحقق",
|
||||
},
|
||||
verified: {
|
||||
title: "تم التحقق",
|
||||
body: "تم التحقق من حسابك بنجاح.",
|
||||
},
|
||||
alertMissingTitle: "معلومات ناقصة",
|
||||
alertMissingBody: "يرجى ملء الاسم والبريد الإلكتروني وكلمة المرور.",
|
||||
alertPhoneTitle: "رقم هاتف غير صالح",
|
||||
alertPhoneBody: "أدخل رقمًا لبنانيًا صالحًا، مثلاً 70 123 456.",
|
||||
alertErrorTitle: "خطأ",
|
||||
alertErrorFallback: "تعذّر إنشاء حسابك.",
|
||||
errCode: "أدخل الرمز المكوّن من 6 أرقام.",
|
||||
errVerify: "فشل التحقق. حاول مرة أخرى.",
|
||||
},
|
||||
role: {
|
||||
title: "كيف ستستخدم وصّيل؟",
|
||||
subtitle: "يمكنك تغيير ذلك لاحقًا بالتواصل مع الدعم.",
|
||||
riderTitle: "أنا راكب",
|
||||
riderDesc: "احجز رحلات وتنقّل في لبنان",
|
||||
driverTitle: "أنا سائق",
|
||||
driverDesc: "قدّم رحلات واكسب المال",
|
||||
alertErrorTitle: "خطأ",
|
||||
alertErrorBody: "تعذّر حفظ اختيارك. حاول مرة أخرى.",
|
||||
},
|
||||
},
|
||||
|
||||
home: {
|
||||
welcome: "أهلاً {name} 👋",
|
||||
logoutAlt: "تسجيل الخروج",
|
||||
currentLocation: "موقعك الحالي",
|
||||
findingLocation: "جارٍ العثور على موقعك…",
|
||||
whatNeed: "بماذا تحتاج؟",
|
||||
recentRides: "الرحلات الأخيرة",
|
||||
noRecent: "لا توجد رحلات حديثة.",
|
||||
noRecentAlt: "لا توجد رحلات حديثة",
|
||||
},
|
||||
|
||||
rides: {
|
||||
allRides: "كل الرحلات",
|
||||
noRecent: "لا توجد رحلات حديثة.",
|
||||
noRecentAlt: "لا توجد رحلات حديثة",
|
||||
},
|
||||
|
||||
tabs: {
|
||||
home: "الرئيسية",
|
||||
rides: "الرحلات",
|
||||
chat: "الدردشة",
|
||||
profile: "الملف",
|
||||
settings: "الإعدادات",
|
||||
},
|
||||
|
||||
chat: {
|
||||
title: "الدردشة",
|
||||
messageAlt: "رسالة",
|
||||
noMessages: "لا توجد رسائل بعد",
|
||||
startConversation: "ابدأ محادثة مع أصدقائك وعائلتك",
|
||||
},
|
||||
|
||||
profile: {
|
||||
title: "ملفي الشخصي",
|
||||
avatarAlt: "صورتك الشخصية",
|
||||
firstName: "الاسم الأول",
|
||||
firstNamePlaceholder: "اسمك الأول",
|
||||
lastName: "اسم العائلة",
|
||||
lastNamePlaceholder: "اسم عائلتك",
|
||||
email: "البريد الإلكتروني",
|
||||
emailPlaceholder: "بريدك الإلكتروني",
|
||||
},
|
||||
|
||||
findRide: {
|
||||
title: "الرحلة",
|
||||
from: "من",
|
||||
to: "إلى",
|
||||
findNow: "ابحث الآن",
|
||||
},
|
||||
|
||||
confirmRide: {
|
||||
title: "طلب رحلة",
|
||||
yourTrip: "رحلتك",
|
||||
pickup: "نقطة الصعود",
|
||||
destination: "الوجهة",
|
||||
tripTime: "زمن الرحلة {time}",
|
||||
paymentMethod: "طريقة الدفع",
|
||||
cash: "💵 نقدًا",
|
||||
card: "💳 بطاقة",
|
||||
fareDisplay: "${fare}",
|
||||
lbpEstimate: "≈ {lbp}",
|
||||
noDrivers: "لا يوجد سائقو {service} متصلون الآن",
|
||||
findingDrivers: "جارٍ البحث عن سائقين قريبين…",
|
||||
nearestDriver: "أقرب سائق ≈ {eta} دقيقة",
|
||||
requesting: "جارٍ الطلب…",
|
||||
noDriversOnline: "لا يوجد سائقون متصلون",
|
||||
requestCash: "اطلب رحلة · ادفع نقدًا للسائق",
|
||||
requestCard: "اطلب رحلة · ادفع بالبطاقة",
|
||||
alertMissingRouteTitle: "المسار ناقص",
|
||||
alertMissingRouteBody: "يرجى تحديد نقطة الصعود والوجهة أولاً.",
|
||||
alertNoEstimateTitle: "لا يوجد تقدير",
|
||||
alertNoEstimateBody: "تعذّر تقدير الأجرة. حاول مرة أخرى.",
|
||||
alertErrorTitle: "خطأ",
|
||||
alertErrorFallback: "حدث خطأ أثناء حجز رحلتك. حاول مرة أخرى.",
|
||||
alertPayCardTitle: "الدفع بالبطاقة",
|
||||
alertPayCardBody: "سيتم خصم ${fare} من بطاقتك.",
|
||||
},
|
||||
|
||||
bookRide: {
|
||||
status: {
|
||||
requested: "جارٍ البحث عن سائقك…",
|
||||
accepted: "تم تعيين سائق — في طريقه إليك",
|
||||
enRoute: "أنت في الرحلة",
|
||||
completed: "وصلت!",
|
||||
cancelled: "تم إلغاء الرحلة",
|
||||
},
|
||||
rideNotFound: "الرحلة غير موجودة.",
|
||||
couldNotLoad: "تعذّر تحميل هذه الرحلة.",
|
||||
backHome: "العودة للرئيسية",
|
||||
matchingDriver: "نطابقك مع أقرب سائق {service}.",
|
||||
ratingFallback: "—",
|
||||
paymentCash: "💵 نقدًا للسائق",
|
||||
paymentCard: "💳 مدفوع بالبطاقة",
|
||||
fare: "الأجرة: ${fare}",
|
||||
tripTime: "زمن الرحلة {time}",
|
||||
rideCancelled: "تم إلغاء هذه الرحلة.",
|
||||
cancelRide: "إلغاء الرحلة",
|
||||
cancelling: "جارٍ الإلغاء…",
|
||||
alertErrorTitle: "خطأ",
|
||||
alertErrorBody: "تعذّر إلغاء هذه الرحلة. حاول مرة أخرى.",
|
||||
},
|
||||
|
||||
driver: {
|
||||
home: {
|
||||
signOutAlt: "تسجيل الخروج",
|
||||
driverMode: "وضع السائق",
|
||||
online: "● متصل — يتلقّى طلبات الرحلات",
|
||||
goOnline: "○ اتصل لتقديم الرحلات",
|
||||
todaysEarnings: "أرباح اليوم",
|
||||
completedToday: "المكتملة اليوم",
|
||||
incomingRequests: "الطلبات الواردة",
|
||||
incomingRequestsOffline: "الطلبات الواردة (غير متصل)",
|
||||
waitingRequests: "بانتظار طلبات الرحلات…",
|
||||
goOnlineStart: "اتصل لبدء القيادة.",
|
||||
welcome: "أهلاً {name}",
|
||||
welcomeFallback: "سائق",
|
||||
setupIntro: "أكمل ملف السائق لبدء تلقّي طلبات الرحلات.",
|
||||
whatDrive: "ماذا ستقود؟",
|
||||
carModel: "موديل السيارة",
|
||||
carModelPlaceholder: "مثال: Toyota Camry",
|
||||
carSeats: "عدد المقاعد",
|
||||
carSeatsPlaceholder: "4",
|
||||
saving: "جارٍ الحفظ…",
|
||||
startDriving: "ابدأ القيادة",
|
||||
alertSeatsTitle: "عدد مقاعد غير صالح",
|
||||
alertSeatsBody: "يجب أن يكون عدد المقاعد عددًا صحيحًا بين 1 و8.",
|
||||
alertErrorTitle: "خطأ",
|
||||
alertCreateBody: "تعذّر إنشاء ملف السائق. حاول مرة أخرى.",
|
||||
alertToggleBody: "تعذّر تغيير حالتك. حاول مرة أخرى.",
|
||||
noRequestsAlt: "لا توجد رحلات حديثة",
|
||||
},
|
||||
offerCard: {
|
||||
newRequest: "طلب جديد · {service}",
|
||||
cash: "💵 نقدًا",
|
||||
card: "💳 بطاقة",
|
||||
fromAlt: "من",
|
||||
toAlt: "إلى",
|
||||
tripTime: "زمن الرحلة",
|
||||
fare: "الأجرة",
|
||||
decline: "رفض",
|
||||
accept: "قبول",
|
||||
},
|
||||
activeRide: {
|
||||
headToPickup: "اتجه إلى نقطة الصعود",
|
||||
tripInProgress: "الرحلة جارية",
|
||||
rider: "{name}",
|
||||
fromAlt: "من",
|
||||
toAlt: "إلى",
|
||||
fare: "الأجرة",
|
||||
startTrip: "ابدأ الرحلة",
|
||||
completeTrip: "أنهِ الرحلة",
|
||||
alertErrorTitle: "خطأ",
|
||||
alertAcceptBody: "تعذّر قبول هذه الرحلة. ربما حُجزت أو انتهت صلاحيتها.",
|
||||
alertDeclineBody: "تعذّر رفض هذه الرحلة. حاول مرة أخرى.",
|
||||
alertUpdateBody: "تعذّر تحديث الرحلة. حاول مرة أخرى.",
|
||||
},
|
||||
},
|
||||
|
||||
services: {
|
||||
car: { label: "سيارة", tagline: "رحلة يومية، حتى 4 مقاعد." },
|
||||
moto: { label: "موتور", tagline: "تجنّب الزحام — راكب واحد، بدون أمتعة." },
|
||||
courier: {
|
||||
label: "توصيل طرود",
|
||||
tagline: "أرسل طردًا عبر المدينة دون ركوب.",
|
||||
},
|
||||
chauffeur: { label: "سائق خاص", tagline: "يأتيك سائق ويقود سيارتك أنت." },
|
||||
},
|
||||
|
||||
pois: {
|
||||
nearbyTitle: "اقتراحات قريبة",
|
||||
mall: "مركز تسوّق",
|
||||
hospital: "مستشفى",
|
||||
pharmacy: "صيدلية",
|
||||
restaurant: "مطعم",
|
||||
searching: "جارٍ البحث…",
|
||||
noneNearby: "لا يوجد قريب",
|
||||
kmAway: "{km} كم",
|
||||
routeAway: "{km} كم · {min} دقيقة",
|
||||
nearbyPlace: "مكان قريب",
|
||||
},
|
||||
|
||||
units: {
|
||||
min: { zero: "0 دقيقة", one: "{n} دقيقة", other: "{n} دقائق" },
|
||||
h: "{n} س",
|
||||
m: "{n} د",
|
||||
hoursMinutes: "{h}س {m}د",
|
||||
seats: { zero: "{n} مقاعد", one: "مقعد", other: "{n} مقاعد" },
|
||||
lbpSuffix: " ل.ل.",
|
||||
},
|
||||
|
||||
months: {
|
||||
jan: "يناير",
|
||||
feb: "فبراير",
|
||||
mar: "مارس",
|
||||
apr: "أبريل",
|
||||
may: "مايو",
|
||||
jun: "يونيو",
|
||||
jul: "يوليو",
|
||||
aug: "أغسطس",
|
||||
sep: "سبتمبر",
|
||||
oct: "أكتوبر",
|
||||
nov: "نوفمبر",
|
||||
dec: "ديسمبر",
|
||||
},
|
||||
|
||||
components: {
|
||||
oauth: {
|
||||
or: "أو",
|
||||
googleLogoAlt: "شعار Google",
|
||||
alertFailTitle: "فشل تسجيل الدخول عبر Google",
|
||||
alertFailNoToken: "لم يُعَد أي رمز. حاول مرة أخرى.",
|
||||
alertFailFallback: "حاول مرة أخرى.",
|
||||
},
|
||||
otp: {
|
||||
code: "الرمز",
|
||||
codePlaceholder: "123456",
|
||||
pasteCode: "لصق الرمز من Gmail",
|
||||
},
|
||||
googleTextInput: {
|
||||
searchAlt: "بحث",
|
||||
placeholder: "إلى أين تريد الذهاب؟",
|
||||
},
|
||||
inputField: {
|
||||
labelIconAlt: "أيقونة {label}",
|
||||
},
|
||||
locationNotice: {
|
||||
denied: {
|
||||
title: "الوصول إلى الموقع مُيقَف",
|
||||
body: "يحتاج وصّيل إلى موقعك لإظهار السائقين القريبين وتحديد نقطة الصعود.",
|
||||
action: "فتح الإعدادات",
|
||||
},
|
||||
servicesOff: {
|
||||
title: "خدمات الموقع مُيقَفة",
|
||||
body: "فعّل الموقع على جهازك ثم حاول مجددًا.",
|
||||
action: "حاول مجددًا",
|
||||
},
|
||||
unavailable: {
|
||||
title: "تعذّر العثور على موقعك",
|
||||
body: "انتقل إلى مكان بإشارة أوضح، أو حدّد نقطة الصعود يدويًا.",
|
||||
action: "حاول مجددًا",
|
||||
},
|
||||
},
|
||||
map: {
|
||||
destination: "الوجهة",
|
||||
webUnavailable:
|
||||
"الخريطة غير متاحة على الويب.\nافتح التطبيق على أندرويد أو iOS للتجربة الكاملة.",
|
||||
},
|
||||
rideCard: {
|
||||
mapAlt: "خريطة",
|
||||
originAlt: "المصدر",
|
||||
destinationAlt: "الوجهة",
|
||||
dateTime: "التاريخ والوقت",
|
||||
driver: "السائق",
|
||||
carSeats: "المقاعد",
|
||||
fare: "الأجرة",
|
||||
paymentStatus: "حالة الدفع",
|
||||
paymentCash: "نقدًا · ادفع للسائق",
|
||||
paymentPaid: "مدفوع بالبطاقة",
|
||||
paymentOther: "{status}",
|
||||
},
|
||||
rideLayout: {
|
||||
goBack: "رجوع",
|
||||
backArrowAlt: "سهم الرجوع",
|
||||
},
|
||||
payment: {
|
||||
paymentMethod: "طريقة الدفع",
|
||||
cash: "💵 نقدًا",
|
||||
card: "💳 بطاقة",
|
||||
processing: "جارٍ المعالجة...",
|
||||
bookCash: "احجز رحلة · ادفع نقدًا للسائق",
|
||||
confirmCard: "تأكيد والدفع بالبطاقة",
|
||||
checkAlt: "تحقق",
|
||||
rideBooked: "تم حجز الرحلة!",
|
||||
successBody: "شكرًا لحجزك.\n تم تسجيل حجزك.\n",
|
||||
cashInstruction: "يرجى تجهيز {lbp}.",
|
||||
backHome: "العودة للرئيسية",
|
||||
alertPayCardTitle: "الدفع بالبطاقة",
|
||||
alertPayCardBody: "سيتم خصم ${amount} من بطاقتك.",
|
||||
alertErrorTitle: "خطأ",
|
||||
alertErrorBody: "حدث خطأ أثناء حجز رحلتك. حاول مرة أخرى.",
|
||||
alertPaymentNotCompletedTitle: "لم يكتمل الدفع",
|
||||
alertPaymentNotCompletedBody:
|
||||
"أُلغي الدفع أو تعذّر التحقق منه. حاول مرة أخرى.",
|
||||
alertProcessingTitle: "خطأ",
|
||||
alertProcessingBody: "حدث خطأ أثناء معالجة الدفع. حاول مرة أخرى.",
|
||||
},
|
||||
driverCard: {
|
||||
avatarAlt: "صورة السائق",
|
||||
starAlt: "نجمة",
|
||||
dollarAlt: "دولار",
|
||||
carAlt: "سيارة",
|
||||
seats: "{n} مقاعد",
|
||||
},
|
||||
},
|
||||
|
||||
settings: {
|
||||
title: "الإعدادات",
|
||||
maps: {
|
||||
title: "الخرائط والتنقّل",
|
||||
description:
|
||||
"يستخدم وصّيل موقعك لإظهار السائقين القريبين والتنقّل إلى نقطة الصعود.",
|
||||
statusGranted: "مُتاح",
|
||||
statusDenied: "غير مسموح",
|
||||
statusBlocked: "محظور",
|
||||
statusUnknown: "جارٍ التحقق…",
|
||||
openSettings: "فتح الإعدادات",
|
||||
},
|
||||
appearance: {
|
||||
title: "المظهر",
|
||||
description: "اختر شكل وصّيل.",
|
||||
light: "فاتح",
|
||||
dark: "داكن",
|
||||
system: "النظام",
|
||||
},
|
||||
safety: {
|
||||
title: "الأمان",
|
||||
call112: "اتصل بـ 112 — الطوارئ",
|
||||
call112Description:
|
||||
"اتصل برقم الطوارئ في لبنان للشرطة أو الإسعاف أو الإطفاء.",
|
||||
callFailedTitle: "تعذّر إجراء المكالمة",
|
||||
callFailedBody: "لا يوجد هاتف على هذا الجهاز. اتصل بـ 112 يدويًا.",
|
||||
proactive: {
|
||||
title: "الأمان الاستباقي",
|
||||
body: "شارك حالة رحلتك وموقعك المباشر مع جهات موثوقة، وامتحن بثقة مع وجود المساعدة على بُعد نقرة.",
|
||||
},
|
||||
verification: {
|
||||
title: "التحقق من الركاب",
|
||||
body: "يتحقق الركاب والسائقون من أرقام هواتفهم وهويتهم، فتعرف دائمًا مع من تركب.",
|
||||
},
|
||||
privacy: {
|
||||
title: "حماية خصوصيتك",
|
||||
body: "يبقى رقم هاتفك وبياناتك مخفية في الدردشة. الرسائل ظاهرة فقط بينك وبين سائقك لهذه الرحلة.",
|
||||
},
|
||||
},
|
||||
language: {
|
||||
title: "اللغة",
|
||||
description: "لغة التطبيق.",
|
||||
en: "English",
|
||||
ar: "العربية",
|
||||
fr: "Français",
|
||||
rtlRestartTitle: "إعادة التشغيل للعربية",
|
||||
rtlRestartBody:
|
||||
"سيُطبَّق التخطيط العربي بالكامل في المرة القادمة التي تفتح فيها التطبيق.",
|
||||
},
|
||||
keepAwake: {
|
||||
title: "عدم قفل الشاشة",
|
||||
description: "إبقاء الشاشة مضاءة أثناء فتح التطبيق.",
|
||||
},
|
||||
overlay: {
|
||||
title: "العرض فوق التطبيقات الأخرى",
|
||||
description: "مطلوب لتظهر تنبيهات الرحلات فوق التطبيقات الأخرى.",
|
||||
allow: "السماح بالعرض فوق التطبيقات الأخرى",
|
||||
openedHint: "تم فتح إعدادات النظام",
|
||||
notAndroid: "متاح على أندرويد فقط.",
|
||||
},
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user