- Add TREK description and "Made with heart" text to About tab (all 13 languages) - Add Report Bug, Feature Request and Wiki cards to About tab and Admin GitHub panel - Version shown as inline badge
1696 lines
99 KiB
TypeScript
1696 lines
99 KiB
TypeScript
import en from './en'
|
||
|
||
const ar: Record<string, string | { name: string; category: string }[]> = {
|
||
...en,
|
||
|
||
// Common
|
||
'common.save': 'حفظ',
|
||
'common.cancel': 'إلغاء',
|
||
'common.delete': 'حذف',
|
||
'common.edit': 'تعديل',
|
||
'common.add': 'إضافة',
|
||
'common.loading': 'جارٍ التحميل...',
|
||
'common.import': 'استيراد',
|
||
'common.error': 'خطأ',
|
||
'common.back': 'رجوع',
|
||
'common.all': 'الكل',
|
||
'common.close': 'إغلاق',
|
||
'common.open': 'فتح',
|
||
'common.upload': 'رفع',
|
||
'common.search': 'بحث',
|
||
'common.confirm': 'تأكيد',
|
||
'common.ok': 'حسنًا',
|
||
'common.yes': 'نعم',
|
||
'common.no': 'لا',
|
||
'common.or': 'أو',
|
||
'common.none': 'لا شيء',
|
||
'common.date': 'التاريخ',
|
||
'common.rename': 'إعادة تسمية',
|
||
'common.name': 'الاسم',
|
||
'common.email': 'البريد الإلكتروني',
|
||
'common.password': 'كلمة المرور',
|
||
'common.saving': 'جارٍ الحفظ...',
|
||
'common.saved': 'تم الحفظ',
|
||
'trips.reminder': 'تذكير',
|
||
'trips.reminderNone': 'بدون',
|
||
'trips.reminderDay': 'يوم',
|
||
'trips.reminderDays': 'أيام',
|
||
'trips.reminderCustom': 'مخصص',
|
||
'trips.reminderDaysBefore': 'أيام قبل المغادرة',
|
||
'trips.reminderDisabledHint': 'تذكيرات الرحلة معطلة. قم بتفعيلها من الإدارة > الإعدادات > الإشعارات.',
|
||
'common.update': 'تحديث',
|
||
'common.change': 'تغيير',
|
||
'common.uploading': 'جارٍ الرفع...',
|
||
'common.backToPlanning': 'العودة إلى التخطيط',
|
||
'common.reset': 'إعادة تعيين',
|
||
|
||
// Navbar
|
||
'nav.trip': 'الرحلة',
|
||
'nav.share': 'مشاركة',
|
||
'nav.settings': 'الإعدادات',
|
||
'nav.admin': 'الإدارة',
|
||
'nav.logout': 'تسجيل الخروج',
|
||
'nav.lightMode': 'الوضع الفاتح',
|
||
'nav.darkMode': 'الوضع الداكن',
|
||
'nav.autoMode': 'الوضع التلقائي',
|
||
'nav.administrator': 'المسؤول',
|
||
'nav.myTrips': 'رحلاتي',
|
||
|
||
// Dashboard
|
||
'dashboard.title': 'رحلاتي',
|
||
'dashboard.subtitle.loading': 'جارٍ تحميل الرحلات...',
|
||
'dashboard.subtitle.trips': '{count} رحلة ({archived} مؤرشفة)',
|
||
'dashboard.subtitle.empty': 'ابدأ رحلتك الأولى',
|
||
'dashboard.subtitle.activeOne': '{count} رحلة نشطة',
|
||
'dashboard.subtitle.activeMany': '{count} رحلات نشطة',
|
||
'dashboard.subtitle.archivedSuffix': ' · {count} مؤرشفة',
|
||
'dashboard.newTrip': 'رحلة جديدة',
|
||
'dashboard.gridView': 'عرض شبكي',
|
||
'dashboard.listView': 'عرض قائمة',
|
||
'dashboard.currency': 'العملة',
|
||
'dashboard.timezone': 'المناطق الزمنية',
|
||
'dashboard.localTime': 'المحلي',
|
||
'dashboard.timezoneCustomTitle': 'منطقة زمنية مخصصة',
|
||
'dashboard.timezoneCustomLabelPlaceholder': 'الاسم (اختياري)',
|
||
'dashboard.timezoneCustomTzPlaceholder': 'مثال: Asia/Riyadh',
|
||
'dashboard.timezoneCustomAdd': 'إضافة',
|
||
'dashboard.timezoneCustomErrorEmpty': 'أدخل معرّف منطقة زمنية',
|
||
'dashboard.timezoneCustomErrorInvalid': 'منطقة زمنية غير صالحة. استخدم صيغة مثل Asia/Riyadh',
|
||
'dashboard.timezoneCustomErrorDuplicate': 'مضافة بالفعل',
|
||
'dashboard.emptyTitle': 'لا توجد رحلات بعد',
|
||
'dashboard.emptyText': 'أنشئ رحلتك الأولى وابدأ التخطيط',
|
||
'dashboard.emptyButton': 'إنشاء أول رحلة',
|
||
'dashboard.nextTrip': 'الرحلة القادمة',
|
||
'dashboard.shared': 'مشتركة',
|
||
'dashboard.sharedBy': 'شاركها {name}',
|
||
'dashboard.days': 'الأيام',
|
||
'dashboard.places': 'الأماكن',
|
||
'dashboard.members': 'ال חברים',
|
||
'dashboard.archive': 'أرشفة',
|
||
'dashboard.copyTrip': 'نسخ',
|
||
'dashboard.copySuffix': 'نسخة',
|
||
'dashboard.restore': 'استعادة',
|
||
'dashboard.archived': 'مؤرشفة',
|
||
'dashboard.status.ongoing': 'جارية',
|
||
'dashboard.status.today': 'اليوم',
|
||
'dashboard.status.tomorrow': 'غدًا',
|
||
'dashboard.status.past': 'منتهية',
|
||
'dashboard.status.daysLeft': 'متبقي {count} يوم',
|
||
'dashboard.toast.loadError': 'فشل تحميل الرحلات',
|
||
'dashboard.toast.created': 'تم إنشاء الرحلة بنجاح',
|
||
'dashboard.toast.createError': 'فشل إنشاء الرحلة',
|
||
'dashboard.toast.updated': 'تم تحديث الرحلة',
|
||
'dashboard.toast.updateError': 'فشل تحديث الرحلة',
|
||
'dashboard.toast.deleted': 'تم حذف الرحلة',
|
||
'dashboard.toast.deleteError': 'فشل حذف الرحلة',
|
||
'dashboard.toast.archived': 'تمت أرشفة الرحلة',
|
||
'dashboard.toast.archiveError': 'فشل الأرشفة',
|
||
'dashboard.toast.restored': 'تمت استعادة الرحلة',
|
||
'dashboard.toast.restoreError': 'فشل الاستعادة',
|
||
'dashboard.toast.copied': 'تم نسخ الرحلة!',
|
||
'dashboard.toast.copyError': 'فشل نسخ الرحلة',
|
||
'dashboard.confirm.delete': 'حذف الرحلة "{title}"؟ سيتم حذف جميع الأماكن والخطط نهائيًا.',
|
||
'dashboard.editTrip': 'تعديل الرحلة',
|
||
'dashboard.createTrip': 'إنشاء رحلة جديدة',
|
||
'dashboard.tripTitle': 'العنوان',
|
||
'dashboard.tripTitlePlaceholder': 'مثال: صيف في اليابان',
|
||
'dashboard.tripDescription': 'الوصف',
|
||
'dashboard.tripDescriptionPlaceholder': 'عمّ تتحدث هذه الرحلة؟',
|
||
'dashboard.startDate': 'تاريخ البداية',
|
||
'dashboard.endDate': 'تاريخ النهاية',
|
||
'dashboard.dayCount': 'عدد الأيام',
|
||
'dashboard.dayCountHint': 'عدد الأيام المراد التخطيط لها عندما لا يتم تحديد تواريخ السفر.',
|
||
'dashboard.noDateHint': 'لا يوجد تاريخ محدد. سيتم إنشاء 7 أيام افتراضية ويمكنك تغيير ذلك لاحقًا.',
|
||
'dashboard.coverImage': 'صورة الغلاف',
|
||
'dashboard.addCoverImage': 'إضافة صورة غلاف',
|
||
'dashboard.addMembers': 'رفاق السفر',
|
||
'dashboard.addMember': 'إضافة عضو',
|
||
'dashboard.coverSaved': 'تم حفظ صورة الغلاف',
|
||
'dashboard.coverUploadError': 'فشل الرفع',
|
||
'dashboard.coverRemoveError': 'فشل الإزالة',
|
||
'dashboard.titleRequired': 'العنوان مطلوب',
|
||
'dashboard.endDateError': 'يجب أن يكون تاريخ النهاية بعد البداية',
|
||
|
||
// Settings
|
||
'settings.title': 'الإعدادات',
|
||
'settings.subtitle': 'ضبط إعداداتك الشخصية',
|
||
'settings.tabs.display': 'العرض',
|
||
'settings.tabs.map': 'الخريطة',
|
||
'settings.tabs.notifications': 'الإشعارات',
|
||
'settings.tabs.integrations': 'التكاملات',
|
||
'settings.tabs.account': 'الحساب',
|
||
'settings.tabs.about': 'حول',
|
||
'settings.map': 'الخريطة',
|
||
'settings.mapTemplate': 'قالب الخريطة',
|
||
'settings.mapTemplatePlaceholder.select': 'اختر قالبًا...',
|
||
'settings.mapDefaultHint': 'اتركه فارغًا لاستخدام OpenStreetMap افتراضيًا',
|
||
'settings.mapTemplatePlaceholder': 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
|
||
'settings.mapHint': 'قالب URL لبلاطات الخريطة',
|
||
'settings.latitude': 'خط العرض',
|
||
'settings.longitude': 'خط الطول',
|
||
'settings.saveMap': 'حفظ الخريطة',
|
||
'settings.apiKeys': 'مفاتيح API',
|
||
'settings.mapsKey': 'مفتاح Google Maps API',
|
||
'settings.mapsKeyHint': 'للبحث عن الأماكن. يتطلب Places API (New).',
|
||
'settings.weatherKey': 'مفتاح OpenWeatherMap API',
|
||
'settings.weatherKeyHint': 'لبيانات الطقس.',
|
||
'settings.keyPlaceholder': 'أدخل المفتاح...',
|
||
'settings.configured': 'مُعدّ',
|
||
'settings.saveKeys': 'حفظ المفاتيح',
|
||
'settings.display': 'العرض',
|
||
'settings.colorMode': 'نمط الألوان',
|
||
'settings.light': 'فاتح',
|
||
'settings.dark': 'داكن',
|
||
'settings.auto': 'تلقائي',
|
||
'settings.language': 'اللغة',
|
||
'settings.temperature': 'وحدة الحرارة',
|
||
'settings.timeFormat': 'تنسيق الوقت',
|
||
'settings.routeCalculation': 'حساب المسار',
|
||
'settings.blurBookingCodes': 'إخفاء رموز الحجز',
|
||
'settings.notifications': 'الإشعارات',
|
||
'settings.notifyTripInvite': 'دعوات الرحلات',
|
||
'settings.notifyBookingChange': 'تغييرات الحجز',
|
||
'settings.notifyTripReminder': 'تذكيرات الرحلات',
|
||
'settings.notifyVacayInvite': 'دعوات دمج الإجازات',
|
||
'settings.notifyPhotosShared': 'صور مشتركة (Immich)',
|
||
'settings.notifyCollabMessage': 'رسائل الدردشة (Collab)',
|
||
'settings.notifyPackingTagged': 'قائمة الأمتعة: التعيينات',
|
||
'settings.notifyWebhook': 'إشعارات Webhook',
|
||
'settings.notificationsDisabled': 'الإشعارات غير مكوّنة. اطلب من المسؤول تفعيل إشعارات البريد الإلكتروني أو Webhook.',
|
||
'settings.notificationsActive': 'القناة النشطة',
|
||
'settings.notificationsManagedByAdmin': 'يتم تكوين أحداث الإشعارات بواسطة المسؤول.',
|
||
'admin.notifications.title': 'الإشعارات',
|
||
'admin.notifications.hint': 'اختر قناة إشعارات واحدة. يمكن تفعيل واحدة فقط في كل مرة.',
|
||
'admin.notifications.none': 'معطّل',
|
||
'admin.notifications.email': 'البريد الإلكتروني (SMTP)',
|
||
'admin.notifications.webhook': 'Webhook',
|
||
'admin.notifications.events': 'أحداث الإشعارات',
|
||
'admin.notifications.eventsHint': 'اختر الأحداث التي تُفعّل الإشعارات لجميع المستخدمين.',
|
||
'admin.notifications.configureFirst': 'قم بتكوين إعدادات SMTP أو Webhook أدناه أولاً، ثم قم بتفعيل الأحداث.',
|
||
'admin.notifications.save': 'حفظ إعدادات الإشعارات',
|
||
'admin.notifications.saved': 'تم حفظ إعدادات الإشعارات',
|
||
'admin.notifications.testWebhook': 'إرسال webhook تجريبي',
|
||
'admin.notifications.testWebhookSuccess': 'تم إرسال webhook التجريبي بنجاح',
|
||
'admin.notifications.testWebhookFailed': 'فشل إرسال webhook التجريبي',
|
||
'admin.smtp.title': 'البريد والإشعارات',
|
||
'admin.smtp.hint': 'تكوين SMTP لإرسال إشعارات البريد الإلكتروني.',
|
||
'admin.smtp.testButton': 'إرسال بريد تجريبي',
|
||
'admin.webhook.hint': 'إرسال الإشعارات إلى webhook خارجي (Discord، Slack، إلخ).',
|
||
'admin.smtp.testSuccess': 'تم إرسال البريد التجريبي بنجاح',
|
||
'admin.smtp.testFailed': 'فشل إرسال البريد التجريبي',
|
||
'dayplan.icsTooltip': 'تصدير التقويم (ICS)',
|
||
'share.linkTitle': 'رابط عام',
|
||
'share.linkHint': 'أنشئ رابطًا يمكن لأي شخص استخدامه لعرض هذه الرحلة بدون تسجيل الدخول. للقراءة فقط — لا يمكن التعديل.',
|
||
'share.createLink': 'إنشاء رابط',
|
||
'share.deleteLink': 'حذف الرابط',
|
||
'share.createError': 'تعذر إنشاء الرابط',
|
||
'common.copy': 'نسخ',
|
||
'common.copied': 'تم النسخ',
|
||
'share.permMap': 'الخريطة والخطة',
|
||
'share.permBookings': 'الحجوزات',
|
||
'share.permPacking': 'الأمتعة',
|
||
'shared.expired': 'الرابط منتهي أو غير صالح',
|
||
'shared.expiredHint': 'رابط الرحلة المشترك لم يعد نشطًا.',
|
||
'shared.readOnly': 'عرض للقراءة فقط',
|
||
'shared.tabPlan': 'الخطة',
|
||
'shared.tabBookings': 'الحجوزات',
|
||
'shared.tabPacking': 'قائمة التعبئة',
|
||
'shared.tabBudget': 'الميزانية',
|
||
'shared.tabChat': 'الدردشة',
|
||
'shared.days': 'أيام',
|
||
'shared.places': 'أماكن',
|
||
'shared.other': 'أخرى',
|
||
'shared.totalBudget': 'إجمالي الميزانية',
|
||
'shared.messages': 'رسائل',
|
||
'shared.sharedVia': 'تمت المشاركة عبر',
|
||
'shared.confirmed': 'مؤكد',
|
||
'shared.pending': 'قيد الانتظار',
|
||
'share.permBudget': 'الميزانية',
|
||
'share.permCollab': 'الدردشة',
|
||
'settings.on': 'تشغيل',
|
||
'settings.off': 'إيقاف',
|
||
'settings.mcp.title': 'إعداد MCP',
|
||
'settings.mcp.endpoint': 'نقطة نهاية MCP',
|
||
'settings.mcp.clientConfig': 'إعداد العميل',
|
||
'settings.mcp.clientConfigHint': 'استبدل <your_token> برمز API من القائمة أدناه. قد يحتاج مسار npx إلى ضبط وفق نظامك (مثلاً C:\\PROGRA~1\\nodejs\\npx.cmd على Windows).',
|
||
'settings.mcp.copy': 'نسخ',
|
||
'settings.mcp.copied': 'تم النسخ!',
|
||
'settings.mcp.apiTokens': 'رموز API',
|
||
'settings.mcp.createToken': 'إنشاء رمز جديد',
|
||
'settings.mcp.noTokens': 'لا توجد رموز بعد. أنشئ رمزاً للاتصال بعملاء MCP.',
|
||
'settings.mcp.tokenCreatedAt': 'أُنشئ',
|
||
'settings.mcp.tokenUsedAt': 'استُخدم',
|
||
'settings.mcp.deleteTokenTitle': 'حذف الرمز',
|
||
'settings.mcp.deleteTokenMessage': 'سيتوقف هذا الرمز عن العمل فوراً. أي عميل MCP يستخدمه سيفقد الوصول.',
|
||
'settings.mcp.modal.createTitle': 'إنشاء رمز API',
|
||
'settings.mcp.modal.tokenName': 'اسم الرمز',
|
||
'settings.mcp.modal.tokenNamePlaceholder': 'مثال: Claude Desktop، حاسوب العمل',
|
||
'settings.mcp.modal.creating': 'جارٍ الإنشاء…',
|
||
'settings.mcp.modal.create': 'إنشاء الرمز',
|
||
'settings.mcp.modal.createdTitle': 'تم إنشاء الرمز',
|
||
'settings.mcp.modal.createdWarning': 'سيُعرض هذا الرمز مرة واحدة فقط. انسخه واحفظه الآن — لا يمكن استرداده.',
|
||
'settings.mcp.modal.done': 'تم',
|
||
'settings.mcp.toast.created': 'تم إنشاء الرمز',
|
||
'settings.mcp.toast.createError': 'فشل إنشاء الرمز',
|
||
'settings.mcp.toast.deleted': 'تم حذف الرمز',
|
||
'settings.mcp.toast.deleteError': 'فشل حذف الرمز',
|
||
'settings.account': 'الحساب',
|
||
'settings.about': 'حول',
|
||
'settings.about.reportBug': 'الإبلاغ عن خطأ',
|
||
'settings.about.reportBugHint': 'وجدت مشكلة؟ أخبرنا',
|
||
'settings.about.featureRequest': 'اقتراح ميزة',
|
||
'settings.about.featureRequestHint': 'اقترح ميزة جديدة',
|
||
'settings.about.wikiHint': 'التوثيق والأدلة',
|
||
'settings.about.description': 'TREK هو مخطط سفر مستضاف ذاتيًا يساعدك على تنظيم رحلاتك من أول فكرة حتى آخر ذكرى. تخطيط يومي، ميزانية، قوائم تعبئة، صور والمزيد — كل شيء في مكان واحد، على خادمك الخاص.',
|
||
'settings.about.madeWith': 'صُنع بـ',
|
||
'settings.about.madeBy': 'بواسطة موريس ومجتمع مفتوح المصدر متنامٍ.',
|
||
'settings.username': 'اسم المستخدم',
|
||
'settings.email': 'البريد الإلكتروني',
|
||
'settings.role': 'الدور',
|
||
'settings.roleAdmin': 'مسؤول',
|
||
'settings.oidcLinked': 'مرتبط مع',
|
||
'settings.changePassword': 'تغيير كلمة المرور',
|
||
'settings.mustChangePassword': 'يجب عليك تغيير كلمة المرور قبل المتابعة. يرجى تعيين كلمة مرور جديدة أدناه.',
|
||
'settings.currentPassword': 'كلمة المرور الحالية',
|
||
'settings.currentPasswordRequired': 'كلمة المرور الحالية مطلوبة',
|
||
'settings.newPassword': 'كلمة المرور الجديدة',
|
||
'settings.confirmPassword': 'تأكيد كلمة المرور الجديدة',
|
||
'settings.updatePassword': 'تحديث كلمة المرور',
|
||
'settings.passwordRequired': 'أدخل كلمة المرور الحالية والجديدة',
|
||
'settings.passwordTooShort': 'يجب أن تتكون كلمة المرور من 8 أحرف على الأقل',
|
||
'settings.passwordMismatch': 'كلمتا المرور غير متطابقتين',
|
||
'settings.passwordWeak': 'يجب أن تحتوي كلمة المرور على حرف كبير وحرف صغير ورقم ورمز خاص',
|
||
'settings.passwordChanged': 'تم تغيير كلمة المرور بنجاح',
|
||
'settings.deleteAccount': 'حذف الحساب',
|
||
'settings.deleteAccountTitle': 'هل تريد حذف حسابك؟',
|
||
'settings.deleteAccountWarning': 'سيتم حذف حسابك وجميع رحلاتك وأماكنك وملفاتك نهائيًا. لا يمكن التراجع عن ذلك.',
|
||
'settings.deleteAccountConfirm': 'حذف نهائي',
|
||
'settings.deleteBlockedTitle': 'الحذف غير ممكن',
|
||
'settings.deleteBlockedMessage': 'أنت المسؤول الوحيد. قم بترقية مستخدم آخر إلى مسؤول قبل حذف حسابك.',
|
||
'settings.roleUser': 'مستخدم',
|
||
'settings.saveProfile': 'حفظ الملف الشخصي',
|
||
'settings.toast.mapSaved': 'تم حفظ إعدادات الخريطة',
|
||
'settings.toast.keysSaved': 'تم حفظ مفاتيح API',
|
||
'settings.toast.displaySaved': 'تم حفظ إعدادات العرض',
|
||
'settings.toast.profileSaved': 'تم حفظ الملف الشخصي',
|
||
'settings.uploadAvatar': 'رفع صورة الملف الشخصي',
|
||
'settings.removeAvatar': 'إزالة صورة الملف الشخصي',
|
||
'settings.avatarUploaded': 'تم تحديث صورة الملف الشخصي',
|
||
'settings.avatarRemoved': 'تمت إزالة صورة الملف الشخصي',
|
||
'settings.avatarError': 'فشل الرفع',
|
||
'settings.mfa.title': 'المصادقة الثنائية (2FA)',
|
||
'settings.mfa.description': 'تضيف خطوة ثانية عند تسجيل الدخول. استخدم تطبيق مصادقة (Google Authenticator، Authy، إلخ).',
|
||
'settings.mfa.requiredByPolicy': 'المسؤول يتطلب المصادقة الثنائية. اضبط تطبيق المصادقة أدناه قبل المتابعة.',
|
||
'settings.mfa.backupTitle': 'رموز النسخ الاحتياطي',
|
||
'settings.mfa.backupDescription': 'استخدم هذه الرموز لمرة واحدة إذا فقدت الوصول إلى تطبيق المصادقة.',
|
||
'settings.mfa.backupWarning': 'احفظ هذه الرموز الآن. كل رمز يمكن استخدامه مرة واحدة فقط.',
|
||
'settings.mfa.backupCopy': 'نسخ الرموز',
|
||
'settings.mfa.backupDownload': 'تنزيل TXT',
|
||
'settings.mfa.backupPrint': 'طباعة / PDF',
|
||
'settings.mfa.backupCopied': 'تم نسخ رموز النسخ الاحتياطي',
|
||
'settings.mfa.enabled': 'المصادقة الثنائية مفعّلة على حسابك.',
|
||
'settings.mfa.disabled': 'المصادقة الثنائية غير مفعّلة.',
|
||
'settings.mfa.setup': 'إعداد المصادقة',
|
||
'settings.mfa.scanQr': 'امسح رمز QR بتطبيقك أو أدخل المفتاح يدويًا.',
|
||
'settings.mfa.secretLabel': 'المفتاح السري (إدخال يدوي)',
|
||
'settings.mfa.codePlaceholder': 'رمز من 6 أرقام',
|
||
'settings.mfa.enable': 'تفعيل 2FA',
|
||
'settings.mfa.cancelSetup': 'إلغاء',
|
||
'settings.mfa.disableTitle': 'تعطيل 2FA',
|
||
'settings.mfa.disableHint': 'أدخل كلمة مرور حسابك ورمزًا حاليًا من المصادقة.',
|
||
'settings.mfa.disable': 'تعطيل 2FA',
|
||
'settings.mfa.toastEnabled': 'تم تفعيل المصادقة الثنائية',
|
||
'settings.mfa.toastDisabled': 'تم تعطيل المصادقة الثنائية',
|
||
'settings.mfa.demoBlocked': 'غير متاح في الوضع التجريبي',
|
||
|
||
// Login
|
||
'login.error': 'فشل تسجيل الدخول. يرجى التحقق من بياناتك.',
|
||
'login.tagline': 'رحلاتك.\nخطتك.',
|
||
'login.description': 'خطط لرحلاتك بشكل تعاوني مع خرائط تفاعلية وميزانيات ومزامنة لحظية.',
|
||
'login.features.maps': 'خرائط تفاعلية',
|
||
'login.features.mapsDesc': 'Google Places ومسارات وتجميع',
|
||
'login.features.realtime': 'مزامنة فورية',
|
||
'login.features.realtimeDesc': 'خططوا معًا عبر WebSocket',
|
||
'login.features.budget': 'تتبع الميزانية',
|
||
'login.features.budgetDesc': 'فئات ورسوم وتقسيم لكل شخص',
|
||
'login.features.collab': 'تعاون',
|
||
'login.features.collabDesc': 'عدة مستخدمين مع رحلات مشتركة',
|
||
'login.features.packing': 'قوائم تجهيز',
|
||
'login.features.packingDesc': 'فئات وتقدم واقتراحات',
|
||
'login.features.bookings': 'الحجوزات',
|
||
'login.features.bookingsDesc': 'رحلات وفنادق ومطاعم وغير ذلك',
|
||
'login.features.files': 'المستندات',
|
||
'login.features.filesDesc': 'رفع الملفات وإدارتها',
|
||
'login.features.routes': 'مسارات ذكية',
|
||
'login.features.routesDesc': 'تحسين تلقائي وتصدير إلى Google Maps',
|
||
'login.selfHosted': 'استضافة ذاتية · مفتوح المصدر · بياناتك تبقى ملكك',
|
||
'login.title': 'تسجيل الدخول',
|
||
'login.subtitle': 'مرحبًا بعودتك',
|
||
'login.signingIn': 'جارٍ تسجيل الدخول…',
|
||
'login.signIn': 'دخول',
|
||
'login.createAdmin': 'إنشاء حساب مسؤول',
|
||
'login.createAdminHint': 'أعد إعداد أول حساب مسؤول لـ TREK.',
|
||
'login.setNewPassword': 'تعيين كلمة مرور جديدة',
|
||
'login.setNewPasswordHint': 'يجب عليك تغيير كلمة المرور قبل المتابعة.',
|
||
'login.createAccount': 'إنشاء حساب',
|
||
'login.createAccountHint': 'سجّل حسابًا جديدًا.',
|
||
'login.creating': 'جارٍ الإنشاء…',
|
||
'login.noAccount': 'ليس لديك حساب؟',
|
||
'login.hasAccount': 'لديك حساب بالفعل؟',
|
||
'login.register': 'تسجيل',
|
||
'login.emailPlaceholder': 'your@email.com',
|
||
'login.username': 'اسم المستخدم',
|
||
'login.oidc.registrationDisabled': 'التسجيل معطّل. تواصل مع المسؤول.',
|
||
'login.oidc.noEmail': 'لم يتم استلام بريد إلكتروني من المزوّد.',
|
||
'login.oidc.tokenFailed': 'فشلت المصادقة.',
|
||
'login.oidc.invalidState': 'جلسة غير صالحة. حاول مرة أخرى.',
|
||
'login.demoFailed': 'فشل الدخول إلى العرض التجريبي',
|
||
'login.oidcSignIn': 'تسجيل الدخول عبر {name}',
|
||
'login.oidcOnly': 'تم تعطيل المصادقة بكلمة المرور. يرجى تسجيل الدخول عبر مزود SSO.',
|
||
'login.demoHint': 'جرّب العرض التجريبي دون الحاجة للتسجيل',
|
||
'login.mfaTitle': 'المصادقة الثنائية',
|
||
'login.mfaSubtitle': 'أدخل الرمز المكون من 6 أرقام من تطبيق المصادقة.',
|
||
'login.mfaCodeLabel': 'رمز التحقق',
|
||
'login.mfaCodeRequired': 'أدخل الرمز من تطبيق المصادقة.',
|
||
'login.mfaHint': 'افتح Google Authenticator أو Authy أو أي تطبيق TOTP آخر.',
|
||
'login.mfaBack': '← العودة لتسجيل الدخول',
|
||
'login.mfaVerify': 'تحقق',
|
||
|
||
// Register
|
||
'register.passwordMismatch': 'كلمتا المرور غير متطابقتين',
|
||
'register.passwordTooShort': 'يجب أن تتكون كلمة المرور من 8 أحرف على الأقل',
|
||
'register.failed': 'فشل التسجيل',
|
||
'register.getStarted': 'ابدأ الآن',
|
||
'register.subtitle': 'أنشئ حسابًا وابدأ التخطيط لرحلات أحلامك.',
|
||
'register.feature1': 'خطط رحلات غير محدودة',
|
||
'register.feature2': 'عرض خريطة تفاعلي',
|
||
'register.feature3': 'إدارة الأماكن والفئات',
|
||
'register.feature4': 'تتبع الحجوزات',
|
||
'register.feature5': 'إنشاء قوائم تجهيز',
|
||
'register.feature6': 'حفظ الصور والملفات',
|
||
'register.createAccount': 'إنشاء حساب',
|
||
'register.startPlanning': 'ابدأ تخطيط رحلتك',
|
||
'register.minChars': '6 أحرف على الأقل',
|
||
'register.confirmPassword': 'تأكيد كلمة المرور',
|
||
'register.repeatPassword': 'إعادة كلمة المرور',
|
||
'register.registering': 'جارٍ التسجيل...',
|
||
'register.register': 'تسجيل',
|
||
'register.hasAccount': 'لديك حساب بالفعل؟',
|
||
'register.signIn': 'تسجيل الدخول',
|
||
|
||
// Admin
|
||
'admin.title': 'الإدارة',
|
||
'admin.subtitle': 'إدارة المستخدمين وإعدادات النظام',
|
||
'admin.tabs.users': 'المستخدمون',
|
||
'admin.tabs.categories': 'الفئات',
|
||
'admin.tabs.backup': 'النسخ الاحتياطي',
|
||
'admin.tabs.audit': 'تدقيق',
|
||
'admin.tabs.settings': 'الإعدادات',
|
||
'admin.tabs.config': 'التخصيص',
|
||
'admin.tabs.templates': 'قوالب التعبئة',
|
||
'admin.tabs.addons': 'الإضافات',
|
||
'admin.tabs.mcpTokens': 'رموز MCP',
|
||
'admin.mcpTokens.title': 'رموز MCP',
|
||
'admin.mcpTokens.subtitle': 'إدارة رموز API لجميع المستخدمين',
|
||
'admin.mcpTokens.owner': 'المالك',
|
||
'admin.mcpTokens.tokenName': 'اسم الرمز',
|
||
'admin.mcpTokens.created': 'تاريخ الإنشاء',
|
||
'admin.mcpTokens.lastUsed': 'آخر استخدام',
|
||
'admin.mcpTokens.never': 'أبداً',
|
||
'admin.mcpTokens.empty': 'لم يتم إنشاء أي رموز MCP بعد',
|
||
'admin.mcpTokens.deleteTitle': 'حذف الرمز',
|
||
'admin.mcpTokens.deleteMessage': 'سيتم إلغاء هذا الرمز فوراً. سيفقد المستخدم وصوله إلى MCP عبر هذا الرمز.',
|
||
'admin.mcpTokens.deleteSuccess': 'تم حذف الرمز',
|
||
'admin.mcpTokens.deleteError': 'فشل حذف الرمز',
|
||
'admin.mcpTokens.loadError': 'فشل تحميل الرموز',
|
||
'admin.tabs.github': 'GitHub',
|
||
'admin.stats.users': 'المستخدمون',
|
||
'admin.stats.trips': 'الرحلات',
|
||
'admin.stats.places': 'الأماكن',
|
||
'admin.stats.photos': 'الصور',
|
||
'admin.stats.files': 'الملفات',
|
||
'admin.table.user': 'المستخدم',
|
||
'admin.table.email': 'البريد الإلكتروني',
|
||
'admin.table.role': 'الدور',
|
||
'admin.table.created': 'تم الإنشاء',
|
||
'admin.table.lastLogin': 'آخر تسجيل دخول',
|
||
'admin.table.actions': 'الإجراءات',
|
||
'admin.you': '(أنت)',
|
||
'admin.editUser': 'تعديل المستخدم',
|
||
'admin.newPassword': 'كلمة مرور جديدة',
|
||
'admin.newPasswordHint': 'اتركه فارغًا للاحتفاظ بالحالية',
|
||
'admin.deleteUser': 'حذف المستخدم "{name}"؟ سيتم حذف جميع الرحلات نهائيًا.',
|
||
'admin.deleteUserTitle': 'حذف المستخدم',
|
||
'admin.newPasswordPlaceholder': 'أدخل كلمة مرور جديدة…',
|
||
'admin.toast.loadError': 'فشل تحميل بيانات الإدارة',
|
||
'admin.toast.userUpdated': 'تم تحديث المستخدم',
|
||
'admin.toast.updateError': 'فشل التحديث',
|
||
'admin.toast.userDeleted': 'تم حذف المستخدم',
|
||
'admin.toast.deleteError': 'فشل الحذف',
|
||
'admin.toast.cannotDeleteSelf': 'لا يمكنك حذف حسابك الخاص',
|
||
'admin.toast.userCreated': 'تم إنشاء المستخدم',
|
||
'admin.toast.createError': 'فشل إنشاء المستخدم',
|
||
'admin.toast.fieldsRequired': 'اسم المستخدم والبريد الإلكتروني وكلمة المرور مطلوبة',
|
||
'admin.createUser': 'إنشاء مستخدم',
|
||
'admin.invite.title': 'روابط الدعوة',
|
||
'admin.invite.subtitle': 'إنشاء روابط تسجيل للاستخدام المحدود',
|
||
'admin.invite.create': 'إنشاء رابط',
|
||
'admin.invite.createAndCopy': 'إنشاء ونسخ',
|
||
'admin.invite.empty': 'لم يتم إنشاء روابط دعوة بعد',
|
||
'admin.invite.maxUses': 'الحد الأقصى للاستخدام',
|
||
'admin.invite.expiry': 'تنتهي بعد',
|
||
'admin.invite.uses': 'مستخدم',
|
||
'admin.invite.expiresAt': 'تنتهي في',
|
||
'admin.invite.createdBy': 'بواسطة',
|
||
'admin.invite.active': 'نشط',
|
||
'admin.invite.expired': 'منتهي',
|
||
'admin.invite.usedUp': 'مستنفد',
|
||
'admin.invite.copied': 'تم نسخ رابط الدعوة',
|
||
'admin.invite.copyLink': 'نسخ الرابط',
|
||
'admin.invite.deleted': 'تم حذف رابط الدعوة',
|
||
'admin.invite.createError': 'فشل إنشاء رابط الدعوة',
|
||
'admin.invite.deleteError': 'فشل حذف رابط الدعوة',
|
||
'admin.allowRegistration': 'السماح بالتسجيل',
|
||
'admin.allowRegistrationHint': 'يمكن للمستخدمين الجدد التسجيل بأنفسهم',
|
||
'admin.requireMfa': 'فرض المصادقة الثنائية (2FA)',
|
||
'admin.requireMfaHint': 'يجب على المستخدمين الذين لا يملكون 2FA إكمال الإعداد في الإعدادات قبل استخدام التطبيق.',
|
||
'admin.apiKeys': 'مفاتيح API',
|
||
'admin.apiKeysHint': 'اختياري. يُفعّل بيانات الأماكن الموسعة مثل الصور والطقس.',
|
||
'admin.mapsKey': 'مفتاح Google Maps API',
|
||
'admin.mapsKeyHint': 'مطلوب للبحث عن الأماكن. احصل عليه من console.cloud.google.com',
|
||
'admin.mapsKeyHintLong': 'بدون مفتاح API، يُستخدم OpenStreetMap للبحث. مع مفتاح Google يمكن تحميل الصور والتقييمات وساعات العمل أيضًا. احصل عليه من console.cloud.google.com.',
|
||
'admin.recommended': 'مُوصى به',
|
||
'admin.weatherKey': 'مفتاح OpenWeatherMap API',
|
||
'admin.weatherKeyHint': 'لبيانات الطقس. مجاني من openweathermap.org',
|
||
'admin.validateKey': 'اختبار',
|
||
'admin.keyValid': 'متصل',
|
||
'admin.keyInvalid': 'غير صالح',
|
||
'admin.keySaved': 'تم حفظ مفاتيح API',
|
||
'admin.oidcTitle': 'تسجيل الدخول الموحد (OIDC)',
|
||
'admin.oidcSubtitle': 'السماح بتسجيل الدخول عبر مزودين خارجيين مثل Google أو Apple أو Authentik أو Keycloak.',
|
||
'admin.oidcDisplayName': 'الاسم المعروض',
|
||
'admin.oidcIssuer': 'عنوان URL للمُصدر',
|
||
'admin.oidcIssuerHint': 'عنوان OpenID Connect Issuer URL للمزود. مثال: https://accounts.google.com',
|
||
'admin.oidcSaved': 'تم حفظ إعدادات OIDC',
|
||
'admin.oidcOnlyMode': 'تعطيل المصادقة بكلمة المرور',
|
||
'admin.oidcOnlyModeHint': 'عند التفعيل، يُسمح فقط بتسجيل الدخول عبر SSO. سيتم حظر تسجيل الدخول والتسجيل بكلمة المرور.',
|
||
|
||
// File Types
|
||
'admin.fileTypes': 'أنواع الملفات المسموح بها',
|
||
'admin.fileTypesHint': 'حدد أنواع الملفات التي يمكن للمستخدمين رفعها.',
|
||
'admin.fileTypesFormat': 'امتدادات مفصولة بفواصل (مثل jpg,png,pdf,doc). استخدم * للسماح بجميع الأنواع.',
|
||
'admin.fileTypesSaved': 'تم حفظ إعدادات أنواع الملفات',
|
||
|
||
// Packing Templates & Bag Tracking
|
||
'admin.bagTracking.title': 'تتبع الأمتعة',
|
||
'admin.bagTracking.subtitle': 'تفعيل الوزن وتعيين الأمتعة للعناصر',
|
||
'admin.packingTemplates.title': 'قوالب التعبئة',
|
||
'admin.packingTemplates.subtitle': 'إنشاء قوائم تعبئة قابلة لإعادة الاستخدام',
|
||
'admin.packingTemplates.create': 'قالب جديد',
|
||
'admin.packingTemplates.namePlaceholder': 'اسم القالب (مثال: عطلة شاطئية)',
|
||
'admin.packingTemplates.empty': 'لم يتم إنشاء قوالب بعد',
|
||
'admin.packingTemplates.items': 'عناصر',
|
||
'admin.packingTemplates.categories': 'فئات',
|
||
'admin.packingTemplates.itemName': 'اسم العنصر',
|
||
'admin.packingTemplates.itemCategory': 'الفئة',
|
||
'admin.packingTemplates.categoryName': 'اسم الفئة (مثال: ملابس)',
|
||
'admin.packingTemplates.addCategory': 'إضافة فئة',
|
||
'admin.packingTemplates.created': 'تم إنشاء القالب',
|
||
'admin.packingTemplates.deleted': 'تم حذف القالب',
|
||
'admin.packingTemplates.loadError': 'فشل تحميل القوالب',
|
||
'admin.packingTemplates.createError': 'فشل إنشاء القالب',
|
||
'admin.packingTemplates.deleteError': 'فشل حذف القالب',
|
||
'admin.packingTemplates.saveError': 'فشل الحفظ',
|
||
|
||
// Addons
|
||
'admin.addons.title': 'الإضافات',
|
||
'admin.addons.subtitle': 'فعّل أو عطّل الميزات لتخصيص تجربة TREK.',
|
||
'admin.addons.catalog.memories.name': 'صور (Immich)',
|
||
'admin.addons.catalog.memories.description': 'شارك صور رحلتك عبر Immich',
|
||
'admin.addons.catalog.mcp.name': 'MCP',
|
||
'admin.addons.catalog.mcp.description': 'بروتوكول سياق النموذج لتكامل مساعد الذكاء الاصطناعي',
|
||
'admin.addons.catalog.packing.name': 'القوائم',
|
||
'admin.addons.catalog.packing.description': 'قوائم التعبئة والمهام لرحلاتك',
|
||
'admin.addons.catalog.budget.name': 'الميزانية',
|
||
'admin.addons.catalog.budget.description': 'تتبع النفقات وخطط ميزانية الرحلة',
|
||
'admin.addons.catalog.documents.name': 'المستندات',
|
||
'admin.addons.catalog.documents.description': 'حفظ وإدارة وثائق السفر',
|
||
'admin.addons.catalog.vacay.name': 'الإجازة',
|
||
'admin.addons.catalog.vacay.description': 'مخطط إجازات شخصي مع عرض تقويم',
|
||
'admin.addons.catalog.atlas.name': 'الأطلس',
|
||
'admin.addons.catalog.atlas.description': 'خريطة العالم مع الدول التي تمت زيارتها وإحصائيات السفر',
|
||
'admin.addons.catalog.collab.name': 'التعاون',
|
||
'admin.addons.catalog.collab.description': 'ملاحظات واستطلاعات ودردشة لحظية لتخطيط الرحلة',
|
||
'admin.addons.subtitleBefore': 'فعّل أو عطّل الميزات لتخصيص تجربة ',
|
||
'admin.addons.subtitleAfter': '.',
|
||
'admin.addons.enabled': 'مفعّل',
|
||
'admin.addons.disabled': 'معطّل',
|
||
'admin.addons.type.trip': 'رحلة',
|
||
'admin.addons.type.global': 'عام',
|
||
'admin.addons.type.integration': 'تكامل',
|
||
'admin.addons.tripHint': 'متاح كعلامة تبويب داخل كل رحلة',
|
||
'admin.addons.globalHint': 'متاح كقسم مستقل في التنقل الرئيسي',
|
||
'admin.addons.integrationHint': 'خدمات الواجهة الخلفية وتكاملات API بدون صفحة مخصصة',
|
||
'admin.addons.toast.updated': 'تم تحديث الإضافة',
|
||
'admin.addons.toast.error': 'فشل تحديث الإضافة',
|
||
'admin.addons.noAddons': 'لا توجد إضافات متاحة',
|
||
|
||
// Weather info
|
||
'admin.weather.title': 'بيانات الطقس',
|
||
'admin.weather.badge': 'منذ 24 مارس 2026',
|
||
'admin.weather.description': 'يستخدم TREK خدمة Open-Meteo كمصدر لبيانات الطقس. وهي خدمة مجانية ومفتوحة المصدر ولا تتطلب مفتاح API.',
|
||
'admin.weather.forecast': 'توقعات 16 يومًا',
|
||
'admin.weather.forecastDesc': 'سابقًا 5 أيام (OpenWeatherMap)',
|
||
'admin.weather.climate': 'بيانات المناخ التاريخية',
|
||
'admin.weather.climateDesc': 'متوسطات آخر 85 سنة للأيام بعد توقعات الـ 16 يومًا',
|
||
'admin.weather.requests': '10,000 طلب / يوم',
|
||
'admin.weather.requestsDesc': 'مجاني، بدون مفتاح API',
|
||
'admin.weather.locationHint': 'يعتمد الطقس على أول مكان بإحداثيات في كل يوم. إذا لم يكن هناك مكان مخصص ليوم ما، يُستخدم أي مكان من قائمة الأماكن كمرجع.',
|
||
|
||
// GitHub
|
||
'admin.audit.subtitle': 'أحداث الأمان والإدارة (النسخ الاحتياطية، المستخدمون، المصادقة الثنائية، الإعدادات).',
|
||
'admin.audit.empty': 'لا توجد سجلات تدقيق بعد.',
|
||
'admin.audit.refresh': 'تحديث',
|
||
'admin.audit.loadMore': 'تحميل المزيد',
|
||
'admin.audit.showing': 'تم تحميل {count} · الإجمالي {total}',
|
||
'admin.audit.col.time': 'الوقت',
|
||
'admin.audit.col.user': 'المستخدم',
|
||
'admin.audit.col.action': 'الإجراء',
|
||
'admin.audit.col.resource': 'المورد',
|
||
'admin.audit.col.ip': 'عنوان IP',
|
||
'admin.audit.col.details': 'التفاصيل',
|
||
|
||
'admin.github.title': 'سجل الإصدارات',
|
||
'admin.github.subtitle': 'آخر التحديثات من {repo}',
|
||
'admin.github.latest': 'الأحدث',
|
||
'admin.github.prerelease': 'إصدار تجريبي',
|
||
'admin.github.showDetails': 'إظهار التفاصيل',
|
||
'admin.github.hideDetails': 'إخفاء التفاصيل',
|
||
'admin.github.loadMore': 'تحميل المزيد',
|
||
'admin.github.loading': 'جارٍ التحميل...',
|
||
'admin.github.error': 'فشل تحميل الإصدارات',
|
||
'admin.github.by': 'بواسطة',
|
||
'admin.github.support': 'يساعدني في تطوير TREK',
|
||
|
||
'admin.update.available': 'يتوفر تحديث',
|
||
'admin.update.text': 'TREK {version} متوفر. أنت تستخدم {current}.',
|
||
'admin.update.button': 'عرض على GitHub',
|
||
'admin.update.install': 'تثبيت التحديث',
|
||
'admin.update.confirmTitle': 'تثبيت التحديث؟',
|
||
'admin.update.confirmText': 'سيتم تحديث TREK من {current} إلى {version}. سيُعاد تشغيل الخادم تلقائيًا بعد ذلك.',
|
||
'admin.update.dataInfo': 'جميع بياناتك (الرحلات، المستخدمون، مفاتيح API، المرفوعات، الإجازة، الأطلس، الميزانيات) ستبقى محفوظة.',
|
||
'admin.update.warning': 'سيكون التطبيق غير متاح لفترة وجيزة أثناء إعادة التشغيل.',
|
||
'admin.update.confirm': 'حدّث الآن',
|
||
'admin.update.installing': 'جارٍ التحديث…',
|
||
'admin.update.success': 'تم تثبيت التحديث. ستتم إعادة تشغيل الخادم…',
|
||
'admin.update.failed': 'فشل التحديث',
|
||
'admin.update.backupHint': 'نوصي بإنشاء نسخة احتياطية قبل التحديث.',
|
||
'admin.update.backupLink': 'الذهاب إلى النسخ الاحتياطي',
|
||
'admin.update.howTo': 'كيفية التحديث',
|
||
'admin.update.dockerText': 'يعمل TREK الخاص بك في Docker. للتحديث إلى {version}، نفّذ الأوامر التالية على الخادم:',
|
||
'admin.update.reloadHint': 'يرجى إعادة تحميل الصفحة بعد بضع ثوانٍ.',
|
||
|
||
// Vacay addon
|
||
'vacay.subtitle': 'خطط وأدر أيام الإجازة',
|
||
'vacay.settings': 'الإعدادات',
|
||
'vacay.year': 'السنة',
|
||
'vacay.addYear': 'إضافة السنة التالية',
|
||
'vacay.addPrevYear': 'إضافة السنة السابقة',
|
||
'vacay.removeYear': 'إزالة السنة',
|
||
'vacay.removeYearConfirm': 'إزالة {year}؟',
|
||
'vacay.removeYearHint': 'سيتم حذف كل إدخالات الإجازات والعطل الخاصة بهذه السنة نهائيًا.',
|
||
'vacay.remove': 'إزالة',
|
||
'vacay.persons': 'الأشخاص',
|
||
'vacay.noPersons': 'لم تتم إضافة أشخاص بعد',
|
||
'vacay.addPerson': 'إضافة شخص',
|
||
'vacay.editPerson': 'تعديل الشخص',
|
||
'vacay.removePerson': 'إزالة الشخص',
|
||
'vacay.removePersonConfirm': 'إزالة {name}؟',
|
||
'vacay.removePersonHint': 'سيتم حذف جميع إدخالات الإجازة لهذا الشخص نهائيًا.',
|
||
'vacay.personName': 'الاسم',
|
||
'vacay.personNamePlaceholder': 'أدخل الاسم',
|
||
'vacay.color': 'اللون',
|
||
'vacay.add': 'إضافة',
|
||
'vacay.legend': 'المفتاح',
|
||
'vacay.publicHoliday': 'عطلة رسمية',
|
||
'vacay.companyHoliday': 'عطلة شركة',
|
||
'vacay.weekend': 'نهاية الأسبوع',
|
||
'vacay.modeVacation': 'إجازة',
|
||
'vacay.modeCompany': 'عطلة شركة',
|
||
'vacay.entitlement': 'الاستحقاق',
|
||
'vacay.entitlementDays': 'الأيام',
|
||
'vacay.used': 'المستخدم',
|
||
'vacay.remaining': 'المتبقي',
|
||
'vacay.carriedOver': 'من {year}',
|
||
'vacay.blockWeekends': 'حظر عطلة نهاية الأسبوع',
|
||
'vacay.blockWeekendsHint': 'منع إدخالات الإجازة يومي السبت والأحد',
|
||
'vacay.weekendDays': 'أيام عطلة نهاية الأسبوع',
|
||
'vacay.mon': 'الاثنين',
|
||
'vacay.tue': 'الثلاثاء',
|
||
'vacay.wed': 'الأربعاء',
|
||
'vacay.thu': 'الخميس',
|
||
'vacay.fri': 'الجمعة',
|
||
'vacay.sat': 'السبت',
|
||
'vacay.sun': 'الأحد',
|
||
'vacay.publicHolidays': 'العطل الرسمية',
|
||
'vacay.publicHolidaysHint': 'وضع علامة على العطل الرسمية في التقويم',
|
||
'vacay.selectCountry': 'اختر الدولة',
|
||
'vacay.selectRegion': 'اختر المنطقة (اختياري)',
|
||
'vacay.addCalendar': 'إضافة تقويم',
|
||
'vacay.calendarLabel': 'التسمية',
|
||
'vacay.calendarColor': 'اللون',
|
||
'vacay.noCalendars': 'لا توجد تقويمات',
|
||
'vacay.companyHolidays': 'عطل الشركة',
|
||
'vacay.companyHolidaysHint': 'السماح بوضع علامة على أيام عطلات الشركة',
|
||
'vacay.companyHolidaysNoDeduct': 'لا تُخصم عطل الشركة من أيام الإجازة.',
|
||
'vacay.carryOver': 'الترحيل',
|
||
'vacay.carryOverHint': 'ترحيل أيام الإجازة المتبقية تلقائيًا إلى السنة التالية',
|
||
'vacay.sharing': 'المشاركة',
|
||
'vacay.sharingHint': 'شارك خطة إجازاتك مع مستخدمي TREK الآخرين',
|
||
'vacay.owner': 'المالك',
|
||
'vacay.shareEmailPlaceholder': 'البريد الإلكتروني لمستخدم TREK',
|
||
'vacay.shareSuccess': 'تمت مشاركة الخطة بنجاح',
|
||
'vacay.shareError': 'تعذرت مشاركة الخطة',
|
||
'vacay.dissolve': 'فك الدمج',
|
||
'vacay.dissolveHint': 'افصل التقويمات مرة أخرى. سيتم الاحتفاظ بإدخالاتك.',
|
||
'vacay.dissolveAction': 'فك',
|
||
'vacay.dissolved': 'تم فصل التقويم',
|
||
'vacay.fusedWith': 'مُدمج مع',
|
||
'vacay.you': 'أنت',
|
||
'vacay.noData': 'لا توجد بيانات',
|
||
'vacay.changeColor': 'تغيير اللون',
|
||
'vacay.inviteUser': 'دعوة مستخدم',
|
||
'vacay.inviteHint': 'ادعُ مستخدم TREK آخرًا لمشاركة تقويم إجازة مشترك.',
|
||
'vacay.selectUser': 'اختر مستخدمًا',
|
||
'vacay.sendInvite': 'إرسال الدعوة',
|
||
'vacay.inviteSent': 'تم إرسال الدعوة',
|
||
'vacay.inviteError': 'تعذر إرسال الدعوة',
|
||
'vacay.pending': 'قيد الانتظار',
|
||
'vacay.noUsersAvailable': 'لا يوجد مستخدمون متاحون',
|
||
'vacay.accept': 'قبول',
|
||
'vacay.decline': 'رفض',
|
||
'vacay.acceptFusion': 'قبول ودمج',
|
||
'vacay.inviteTitle': 'طلب دمج',
|
||
'vacay.inviteWantsToFuse': 'يريد مشاركة تقويم إجازة معك.',
|
||
'vacay.fuseInfo1': 'سيرى كلاكما جميع إدخالات الإجازة في تقويم مشترك واحد.',
|
||
'vacay.fuseInfo2': 'يمكن لكلا الطرفين إنشاء وتعديل الإدخالات لبعضهما البعض.',
|
||
'vacay.fuseInfo3': 'يمكن لكلا الطرفين حذف الإدخالات وتغيير مستحقات الإجازة.',
|
||
'vacay.fuseInfo4': 'تتم مشاركة الإعدادات مثل العطل الرسمية وعطل الشركة.',
|
||
'vacay.fuseInfo5': 'يمكن فك الدمج في أي وقت من قبل أي طرف. ستبقى إدخالاتك محفوظة.',
|
||
|
||
// Atlas addon
|
||
'atlas.subtitle': 'بصمتك السفرية حول العالم',
|
||
'atlas.countries': 'الدول',
|
||
'atlas.trips': 'الرحلات',
|
||
'atlas.places': 'الأماكن',
|
||
'atlas.unmark': 'إزالة',
|
||
'atlas.confirmMark': 'تعيين هذا البلد كمُزار؟',
|
||
'atlas.confirmUnmark': 'إزالة هذا البلد من قائمة المُزارة؟',
|
||
'atlas.confirmUnmarkRegion': 'إزالة هذه المنطقة من قائمة المُزارة؟',
|
||
'atlas.markVisited': 'تعيين كمُزار',
|
||
'atlas.markVisitedHint': 'إضافة هذا البلد إلى قائمة المُزارة',
|
||
'atlas.markRegionVisitedHint': 'إضافة هذه المنطقة إلى قائمة المُزارة',
|
||
'atlas.addToBucket': 'إضافة إلى قائمة الأمنيات',
|
||
'atlas.addPoi': 'إضافة مكان',
|
||
'atlas.searchCountry': 'ابحث عن دولة...',
|
||
'atlas.bucketNamePlaceholder': 'الاسم (بلد، مدينة، مكان…)',
|
||
'atlas.month': 'الشهر',
|
||
'atlas.year': 'السنة',
|
||
'atlas.addToBucketHint': 'حفظ كمكان تريد زيارته',
|
||
'atlas.bucketWhen': 'متى تخطط للزيارة؟',
|
||
'atlas.statsTab': 'الإحصائيات',
|
||
'atlas.bucketTab': 'قائمة الأمنيات',
|
||
'atlas.addBucket': 'إضافة إلى قائمة الأمنيات',
|
||
'atlas.bucketNotesPlaceholder': 'ملاحظات (اختياري)',
|
||
'atlas.bucketEmpty': 'قائمة أمنياتك فارغة',
|
||
'atlas.bucketEmptyHint': 'أضف أماكن تحلم بزيارتها',
|
||
'atlas.days': 'الأيام',
|
||
'atlas.visitedCountries': 'الدول التي تمت زيارتها',
|
||
'atlas.cities': 'المدن',
|
||
'atlas.noData': 'لا توجد بيانات سفر بعد',
|
||
'atlas.noDataHint': 'أنشئ رحلة وأضف أماكن لرؤية خريطتك العالمية',
|
||
'atlas.lastTrip': 'آخر رحلة',
|
||
'atlas.nextTrip': 'الرحلة القادمة',
|
||
'atlas.daysLeft': 'يوم متبقٍ',
|
||
'atlas.streak': 'سلسلة',
|
||
'atlas.years': 'سنوات',
|
||
'atlas.yearInRow': 'سنة متتالية',
|
||
'atlas.yearsInRow': 'سنوات متتالية',
|
||
'atlas.tripIn': 'رحلة في',
|
||
'atlas.tripsIn': 'رحلات في',
|
||
'atlas.since': 'منذ',
|
||
'atlas.europe': 'أوروبا',
|
||
'atlas.asia': 'آسيا',
|
||
'atlas.northAmerica': 'أمريكا الشمالية',
|
||
'atlas.southAmerica': 'أمريكا الجنوبية',
|
||
'atlas.africa': 'أفريقيا',
|
||
'atlas.oceania': 'أوقيانوسيا',
|
||
'atlas.other': 'أخرى',
|
||
'atlas.firstVisit': 'أول رحلة',
|
||
'atlas.lastVisitLabel': 'آخر رحلة',
|
||
'atlas.tripSingular': 'رحلة',
|
||
'atlas.tripPlural': 'رحلات',
|
||
'atlas.placeVisited': 'مكان تمت زيارته',
|
||
'atlas.placesVisited': 'أماكن تمت زيارتها',
|
||
|
||
// Trip Planner
|
||
'trip.tabs.plan': 'الخطة',
|
||
'trip.tabs.reservations': 'الحجوزات',
|
||
'trip.tabs.reservationsShort': 'حجز',
|
||
'trip.tabs.packing': 'قائمة التجهيز',
|
||
'trip.tabs.packingShort': 'تجهيز',
|
||
'trip.tabs.lists': 'القوائم',
|
||
'trip.tabs.listsShort': 'القوائم',
|
||
'trip.tabs.budget': 'الميزانية',
|
||
'trip.tabs.files': 'الملفات',
|
||
'trip.loading': 'جارٍ تحميل الرحلة...',
|
||
'trip.loadingPhotos': 'جارٍ تحميل صور الأماكن...',
|
||
'trip.mobilePlan': 'الخطة',
|
||
'trip.mobilePlaces': 'الأماكن',
|
||
'trip.toast.placeUpdated': 'تم تحديث المكان',
|
||
'trip.toast.placeAdded': 'تمت إضافة المكان',
|
||
'trip.toast.placeDeleted': 'تم حذف المكان',
|
||
'trip.toast.selectDay': 'يرجى اختيار يوم أولًا',
|
||
'trip.toast.assignedToDay': 'تم إسناد المكان إلى اليوم',
|
||
'trip.toast.reorderError': 'فشل إعادة الترتيب',
|
||
'trip.toast.reservationUpdated': 'تم تحديث الحجز',
|
||
'trip.toast.reservationAdded': 'تمت إضافة الحجز',
|
||
'trip.toast.deleted': 'تم الحذف',
|
||
'trip.confirm.deletePlace': 'هل تريد حذف هذا المكان؟',
|
||
|
||
// Day Plan Sidebar
|
||
'dayplan.emptyDay': 'لا توجد أماكن مخططة لهذا اليوم',
|
||
'dayplan.addNote': 'إضافة ملاحظة',
|
||
'dayplan.editNote': 'تعديل الملاحظة',
|
||
'dayplan.noteAdd': 'إضافة ملاحظة',
|
||
'dayplan.noteEdit': 'تعديل الملاحظة',
|
||
'dayplan.noteTitle': 'ملاحظة',
|
||
'dayplan.noteSubtitle': 'ملاحظة يومية',
|
||
'dayplan.totalCost': 'إجمالي التكلفة',
|
||
'dayplan.days': 'الأيام',
|
||
'dayplan.dayN': 'اليوم {n}',
|
||
'dayplan.calculating': 'جارٍ الحساب...',
|
||
'dayplan.route': 'المسار',
|
||
'dayplan.optimize': 'تحسين',
|
||
'dayplan.optimized': 'تم تحسين المسار',
|
||
'dayplan.routeError': 'فشل حساب المسار',
|
||
'dayplan.toast.needTwoPlaces': 'يلزم مكانان على الأقل لتحسين المسار',
|
||
'dayplan.toast.routeOptimized': 'تم تحسين المسار',
|
||
'dayplan.toast.noGeoPlaces': 'لم يتم العثور على أماكن بإحداثيات لحساب المسار',
|
||
'dayplan.confirmed': 'مؤكد',
|
||
'dayplan.pendingRes': 'قيد الانتظار',
|
||
'dayplan.pdf': 'PDF',
|
||
'dayplan.pdfTooltip': 'تصدير خطة اليوم بصيغة PDF',
|
||
'dayplan.pdfError': 'فشل تصدير PDF',
|
||
'dayplan.cannotReorderTransport': 'لا يمكن إعادة ترتيب الحجوزات ذات الوقت الثابت',
|
||
'dayplan.confirmRemoveTimeTitle': 'إزالة الوقت؟',
|
||
'dayplan.confirmRemoveTimeBody': 'هذا المكان له وقت ثابت ({time}). نقله سيزيل الوقت ويسمح بالترتيب الحر.',
|
||
'dayplan.confirmRemoveTimeAction': 'إزالة الوقت ونقل',
|
||
'dayplan.cannotDropOnTimed': 'لا يمكن وضع العناصر بين الإدخالات المرتبطة بوقت',
|
||
'dayplan.cannotBreakChronology': 'سيؤدي هذا إلى كسر الترتيب الزمني للعناصر والحجوزات المجدولة',
|
||
|
||
// Places Sidebar
|
||
'places.addPlace': 'إضافة مكان/نشاط',
|
||
'places.importGpx': 'GPX',
|
||
'places.gpxImported': 'تم استيراد {count} مكان من GPX',
|
||
'places.gpxError': 'فشل استيراد GPX',
|
||
'places.importGoogleList': 'قائمة Google',
|
||
'places.googleListHint': 'الصق رابط قائمة Google Maps المشتركة لاستيراد جميع الأماكن.',
|
||
'places.googleListImported': 'تم استيراد {count} أماكن من "{list}"',
|
||
'places.googleListError': 'فشل استيراد قائمة Google Maps',
|
||
'places.viewDetails': 'عرض التفاصيل',
|
||
'places.urlResolved': 'تم استيراد المكان من الرابط',
|
||
'places.assignToDay': 'إلى أي يوم تريد الإضافة؟',
|
||
'places.all': 'الكل',
|
||
'places.unplanned': 'غير مخطط',
|
||
'places.search': 'ابحث عن أماكن...',
|
||
'places.allCategories': 'كل الفئات',
|
||
'places.categoriesSelected': 'فئات',
|
||
'places.clearFilter': 'مسح الفلتر',
|
||
'places.count': '{count} أماكن',
|
||
'places.countSingular': 'مكان واحد',
|
||
'places.allPlanned': 'تم تخطيط جميع الأماكن',
|
||
'places.noneFound': 'لم يتم العثور على أماكن',
|
||
'places.editPlace': 'تعديل المكان',
|
||
'places.formName': 'الاسم',
|
||
'places.formNamePlaceholder': 'مثال: برج إيفل',
|
||
'places.formDescription': 'الوصف',
|
||
'places.formDescriptionPlaceholder': 'وصف مختصر...',
|
||
'places.formAddress': 'العنوان',
|
||
'places.formAddressPlaceholder': 'الشارع، المدينة، البلد',
|
||
'places.formLat': 'خط العرض (مثال: 48.8566)',
|
||
'places.formLng': 'خط الطول (مثال: 2.3522)',
|
||
'places.formCategory': 'الفئة',
|
||
'places.noCategory': 'بلا فئة',
|
||
'places.categoryNamePlaceholder': 'اسم الفئة',
|
||
'places.formTime': 'الوقت',
|
||
'places.startTime': 'البداية',
|
||
'places.endTime': 'النهاية',
|
||
'places.endTimeBeforeStart': 'وقت النهاية قبل وقت البداية',
|
||
'places.timeCollision': 'تداخل في الوقت مع:',
|
||
'places.formWebsite': 'الموقع الإلكتروني',
|
||
'places.formNotesPlaceholder': 'ملاحظات شخصية...',
|
||
'places.formReservation': 'حجز',
|
||
'places.reservationNotesPlaceholder': 'ملاحظات الحجز، رقم التأكيد...',
|
||
'places.mapsSearchPlaceholder': 'ابحث عن أماكن...',
|
||
'places.mapsSearchError': 'فشل البحث عن المكان.',
|
||
'places.osmHint': 'يتم البحث عبر OpenStreetMap (بدون صور أو ساعات عمل أو تقييمات). أضف مفتاح Google API في الإعدادات للحصول على جميع التفاصيل.',
|
||
'places.osmActive': 'البحث عبر OpenStreetMap (بدون صور أو تقييمات أو ساعات عمل). أضف مفتاح Google API في الإعدادات لبيانات موسعة.',
|
||
'places.categoryCreateError': 'فشل إنشاء الفئة',
|
||
'places.nameRequired': 'يرجى إدخال اسم',
|
||
'places.saveError': 'فشل الحفظ',
|
||
|
||
// Place Inspector
|
||
'inspector.opened': 'مفتوح',
|
||
'inspector.closed': 'مغلق',
|
||
'inspector.openingHours': 'ساعات العمل',
|
||
'inspector.showHours': 'عرض ساعات العمل',
|
||
'inspector.files': 'الملفات',
|
||
'inspector.filesCount': '{count} ملفات',
|
||
'inspector.removeFromDay': 'إزالة من اليوم',
|
||
'inspector.addToDay': 'إضافة إلى اليوم',
|
||
'inspector.confirmedRes': 'حجز مؤكد',
|
||
'inspector.pendingRes': 'حجز قيد الانتظار',
|
||
'inspector.google': 'فتح في Google Maps',
|
||
'inspector.website': 'فتح الموقع الإلكتروني',
|
||
'inspector.addRes': 'حجز',
|
||
'inspector.editRes': 'تعديل الحجز',
|
||
'inspector.participants': 'المشاركون',
|
||
'inspector.trackStats': 'بيانات المسار',
|
||
|
||
// Reservations
|
||
'reservations.title': 'الحجوزات',
|
||
'reservations.empty': 'لا توجد حجوزات بعد',
|
||
'reservations.emptyHint': 'أضف حجوزات للرحلات الجوية والفنادق وغير ذلك',
|
||
'reservations.add': 'إضافة حجز',
|
||
'reservations.addManual': 'حجز يدوي',
|
||
'reservations.placeHint': 'نصيحة: يُفضل إنشاء الحجوزات مباشرة من مكان لربطها بخطة اليوم.',
|
||
'reservations.confirmed': 'مؤكد',
|
||
'reservations.pending': 'قيد الانتظار',
|
||
'reservations.summary': '{confirmed} مؤكدة، {pending} قيد الانتظار',
|
||
'reservations.fromPlan': 'من الخطة',
|
||
'reservations.showFiles': 'عرض الملفات',
|
||
'reservations.editTitle': 'تعديل الحجز',
|
||
'reservations.status': 'الحالة',
|
||
'reservations.datetime': 'التاريخ والوقت',
|
||
'reservations.startTime': 'وقت البداية',
|
||
'reservations.endTime': 'وقت النهاية',
|
||
'reservations.date': 'التاريخ',
|
||
'reservations.time': 'الوقت',
|
||
'reservations.timeAlt': 'الوقت (بديل، مثل 19:30)',
|
||
'reservations.notes': 'ملاحظات',
|
||
'reservations.notesPlaceholder': 'ملاحظات إضافية...',
|
||
'reservations.meta.airline': 'شركة الطيران',
|
||
'reservations.meta.flightNumber': 'رقم الرحلة',
|
||
'reservations.meta.from': 'من',
|
||
'reservations.meta.to': 'إلى',
|
||
'reservations.meta.trainNumber': 'رقم القطار',
|
||
'reservations.meta.platform': 'المنصة',
|
||
'reservations.meta.seat': 'المقعد',
|
||
'reservations.meta.checkIn': 'تسجيل الوصول',
|
||
'reservations.meta.checkOut': 'تسجيل المغادرة',
|
||
'reservations.meta.linkAccommodation': 'الإقامة',
|
||
'reservations.meta.pickAccommodation': 'ربط بالإقامة',
|
||
'reservations.meta.noAccommodation': 'لا يوجد',
|
||
'reservations.meta.hotelPlace': 'الإقامة',
|
||
'reservations.meta.pickHotel': 'اختر الإقامة',
|
||
'reservations.meta.fromDay': 'من',
|
||
'reservations.meta.toDay': 'إلى',
|
||
'reservations.meta.selectDay': 'اختر يومًا',
|
||
'reservations.type.flight': 'رحلة جوية',
|
||
'reservations.type.hotel': 'إقامة',
|
||
'reservations.type.restaurant': 'مطعم',
|
||
'reservations.type.train': 'قطار',
|
||
'reservations.type.car': 'سيارة مستأجرة',
|
||
'reservations.type.cruise': 'رحلة بحرية',
|
||
'reservations.type.event': 'فعالية',
|
||
'reservations.type.tour': 'جولة',
|
||
'reservations.type.other': 'أخرى',
|
||
'reservations.confirm.delete': 'هل تريد حذف الحجز "{name}"؟',
|
||
'reservations.confirm.deleteTitle': 'حذف الحجز؟',
|
||
'reservations.confirm.deleteBody': 'سيتم حذف "{name}" نهائيًا.',
|
||
'reservations.toast.updated': 'تم تحديث الحجز',
|
||
'reservations.toast.removed': 'تم حذف الحجز',
|
||
'reservations.toast.fileUploaded': 'تم رفع الملف',
|
||
'reservations.toast.uploadError': 'فشل الرفع',
|
||
'reservations.newTitle': 'حجز جديد',
|
||
'reservations.bookingType': 'نوع الحجز',
|
||
'reservations.titleLabel': 'العنوان',
|
||
'reservations.titlePlaceholder': 'مثال: Lufthansa LH123، فندق أدلون، ...',
|
||
'reservations.locationAddress': 'الموقع / العنوان',
|
||
'reservations.locationPlaceholder': 'العنوان، المطار، الفندق...',
|
||
'reservations.confirmationCode': 'رمز الحجز',
|
||
'reservations.confirmationPlaceholder': 'مثال: ABC12345',
|
||
'reservations.day': 'اليوم',
|
||
'reservations.noDay': 'بلا يوم',
|
||
'reservations.place': 'المكان',
|
||
'reservations.noPlace': 'بلا مكان',
|
||
'reservations.pendingSave': 'سيتم الحفظ…',
|
||
'reservations.uploading': 'جارٍ الرفع...',
|
||
'reservations.attachFile': 'إرفاق ملف',
|
||
'reservations.linkExisting': 'ربط ملف موجود',
|
||
'reservations.toast.saveError': 'فشل الحفظ',
|
||
'reservations.toast.updateError': 'فشل التحديث',
|
||
'reservations.toast.deleteError': 'فشل الحذف',
|
||
'reservations.confirm.remove': 'إزالة الحجز "{name}"؟',
|
||
'reservations.linkAssignment': 'ربط بخطة اليوم',
|
||
'reservations.pickAssignment': 'اختر عنصرًا من خطتك...',
|
||
'reservations.noAssignment': 'بلا ربط',
|
||
'reservations.price': 'السعر',
|
||
'reservations.budgetCategory': 'فئة الميزانية',
|
||
'reservations.budgetCategoryPlaceholder': 'مثال: المواصلات، الإقامة',
|
||
'reservations.budgetCategoryAuto': 'تلقائي (حسب نوع الحجز)',
|
||
'reservations.budgetHint': 'سيتم إنشاء إدخال في الميزانية تلقائيًا عند الحفظ.',
|
||
'reservations.departureDate': 'المغادرة',
|
||
'reservations.arrivalDate': 'الوصول',
|
||
'reservations.departureTime': 'وقت المغادرة',
|
||
'reservations.arrivalTime': 'وقت الوصول',
|
||
'reservations.pickupDate': 'الاستلام',
|
||
'reservations.returnDate': 'الإرجاع',
|
||
'reservations.pickupTime': 'وقت الاستلام',
|
||
'reservations.returnTime': 'وقت الإرجاع',
|
||
'reservations.endDate': 'تاريخ الانتهاء',
|
||
'reservations.meta.departureTimezone': 'TZ المغادرة',
|
||
'reservations.meta.arrivalTimezone': 'TZ الوصول',
|
||
'reservations.span.departure': 'المغادرة',
|
||
'reservations.span.arrival': 'الوصول',
|
||
'reservations.span.inTransit': 'في الطريق',
|
||
'reservations.span.pickup': 'الاستلام',
|
||
'reservations.span.return': 'الإرجاع',
|
||
'reservations.span.active': 'نشط',
|
||
'reservations.span.start': 'البداية',
|
||
'reservations.span.end': 'النهاية',
|
||
'reservations.span.ongoing': 'جارٍ',
|
||
'reservations.validation.endBeforeStart': 'يجب أن يكون تاريخ/وقت الانتهاء بعد تاريخ/وقت البدء',
|
||
|
||
// Budget
|
||
'budget.title': 'الميزانية',
|
||
'budget.exportCsv': 'تصدير CSV',
|
||
'budget.emptyTitle': 'لم يتم إنشاء ميزانية بعد',
|
||
'budget.emptyText': 'أنشئ فئات وإدخالات لتخطيط ميزانية سفرك',
|
||
'budget.emptyPlaceholder': 'أدخل اسم الفئة...',
|
||
'budget.createCategory': 'إنشاء فئة',
|
||
'budget.category': 'الفئة',
|
||
'budget.categoryName': 'اسم الفئة',
|
||
'budget.table.name': 'الاسم',
|
||
'budget.table.total': 'الإجمالي',
|
||
'budget.table.persons': 'الأشخاص',
|
||
'budget.table.days': 'الأيام',
|
||
'budget.table.perPerson': 'لكل شخص',
|
||
'budget.table.perDay': 'لكل يوم',
|
||
'budget.table.perPersonDay': 'لكل شخص / يوم',
|
||
'budget.table.note': 'ملاحظة',
|
||
'budget.table.date': 'التاريخ',
|
||
'budget.newEntry': 'إدخال جديد',
|
||
'budget.defaultEntry': 'إدخال جديد',
|
||
'budget.defaultCategory': 'فئة جديدة',
|
||
'budget.total': 'الإجمالي',
|
||
'budget.totalBudget': 'إجمالي الميزانية',
|
||
'budget.byCategory': 'حسب الفئة',
|
||
'budget.editTooltip': 'انقر للتعديل',
|
||
'budget.confirm.deleteCategory': 'هل تريد حذف الفئة "{name}" مع {count} إدخالات؟',
|
||
'budget.deleteCategory': 'حذف الفئة',
|
||
'budget.perPerson': 'لكل شخص',
|
||
'budget.paid': 'مدفوع',
|
||
'budget.open': 'مفتوح',
|
||
'budget.noMembers': 'لا أعضاء معينون',
|
||
'budget.settlement': 'التسوية',
|
||
'budget.settlementInfo': 'انقر على صورة العضو في بند الميزانية لتحديده باللون الأخضر — وهذا يعني أنه دفع. ثم تُظهر التسوية من يدين لمن وبكم.',
|
||
'budget.netBalances': 'الأرصدة الصافية',
|
||
|
||
// Files
|
||
'files.title': 'الملفات',
|
||
'files.count': '{count} ملفات',
|
||
'files.countSingular': 'ملف واحد',
|
||
'files.uploaded': 'تم رفع {count}',
|
||
'files.uploadError': 'فشل الرفع',
|
||
'files.dropzone': 'أسقط الملفات هنا',
|
||
'files.dropzoneHint': 'أو انقر للتصفح',
|
||
'files.allowedTypes': 'صور، PDF، DOC، DOCX، XLS، XLSX، TXT، CSV · حد أقصى 50 ميغابايت',
|
||
'files.uploading': 'جارٍ الرفع...',
|
||
'files.filterAll': 'الكل',
|
||
'files.filterPdf': 'ملفات PDF',
|
||
'files.filterImages': 'الصور',
|
||
'files.filterDocs': 'المستندات',
|
||
'files.filterCollab': 'ملاحظات Collab',
|
||
'files.sourceCollab': 'من ملاحظات Collab',
|
||
'files.empty': 'لا توجد ملفات بعد',
|
||
'files.emptyHint': 'ارفع ملفات لإرفاقها برحلتك',
|
||
'files.openTab': 'فتح في تبويب جديد',
|
||
'files.confirm.delete': 'هل تريد حذف هذا الملف؟',
|
||
'files.toast.deleted': 'تم حذف الملف',
|
||
'files.toast.deleteError': 'فشل حذف الملف',
|
||
'files.sourcePlan': 'خطة اليوم',
|
||
'files.sourceBooking': 'الحجز',
|
||
'files.attach': 'إرفاق',
|
||
'files.pasteHint': 'يمكنك أيضًا لصق الصور من الحافظة (Ctrl+V)',
|
||
'files.trash': 'سلة المهملات',
|
||
'files.trashEmpty': 'سلة المهملات فارغة',
|
||
'files.emptyTrash': 'إفراغ السلة',
|
||
'files.restore': 'استعادة',
|
||
'files.star': 'تمييز',
|
||
'files.unstar': 'إلغاء التمييز',
|
||
'files.assign': 'إسناد',
|
||
'files.assignTitle': 'إسناد ملف',
|
||
'files.assignPlace': 'المكان',
|
||
'files.assignBooking': 'الحجز',
|
||
'files.unassigned': 'غير مسند',
|
||
'files.unlink': 'إزالة الرابط',
|
||
'files.toast.trashed': 'تم النقل إلى سلة المهملات',
|
||
'files.toast.restored': 'تمت استعادة الملف',
|
||
'files.toast.trashEmptied': 'تم إفراغ سلة المهملات',
|
||
'files.toast.assigned': 'تم إسناد الملف',
|
||
'files.toast.assignError': 'فشل الإسناد',
|
||
'files.toast.restoreError': 'فشلت الاستعادة',
|
||
'files.confirm.permanentDelete': 'حذف هذا الملف نهائيًا؟ لا يمكن التراجع عن ذلك.',
|
||
'files.confirm.emptyTrash': 'حذف جميع ملفات سلة المهملات نهائيًا؟ لا يمكن التراجع عن ذلك.',
|
||
'files.noteLabel': 'ملاحظة',
|
||
'files.notePlaceholder': 'أضف ملاحظة...',
|
||
|
||
// Packing
|
||
'packing.title': 'قائمة التجهيز',
|
||
'packing.empty': 'قائمة التجهيز فارغة',
|
||
'packing.import': 'استيراد',
|
||
'packing.importTitle': 'استيراد قائمة التعبئة',
|
||
'packing.importHint': 'عنصر واحد لكل سطر. يمكن إضافة الفئة والكمية مفصولة بفاصلة أو فاصلة منقوطة أو علامة تبويب: الاسم، الفئة، الكمية',
|
||
'packing.importPlaceholder': 'فرشاة أسنان\nواقي شمس، نظافة\nقمصان، ملابس، 5\nجواز سفر، مستندات',
|
||
'packing.importCsv': 'تحميل CSV/TXT',
|
||
'packing.importAction': 'استيراد {count}',
|
||
'packing.importSuccess': 'تم استيراد {count} عنصر',
|
||
'packing.importError': 'فشل الاستيراد',
|
||
'packing.importEmpty': 'لا توجد عناصر للاستيراد',
|
||
'packing.progress': '{packed} من {total} جُهّز ({percent}%)',
|
||
'packing.clearChecked': 'إزالة {count} محدد',
|
||
'packing.clearCheckedShort': 'إزالة {count}',
|
||
'packing.suggestions': 'اقتراحات',
|
||
'packing.suggestionsTitle': 'إضافة اقتراحات',
|
||
'packing.allSuggested': 'تمت إضافة جميع الاقتراحات',
|
||
'packing.allPacked': 'تم تجهيز الكل!',
|
||
'packing.addPlaceholder': 'إضافة عنصر جديد...',
|
||
'packing.categoryPlaceholder': 'الفئة...',
|
||
'packing.filterAll': 'الكل',
|
||
'packing.filterOpen': 'مفتوح',
|
||
'packing.filterDone': 'تم',
|
||
'packing.emptyTitle': 'قائمة التجهيز فارغة',
|
||
'packing.emptyHint': 'أضف عناصر أو استخدم الاقتراحات',
|
||
'packing.emptyFiltered': 'لا توجد عناصر مطابقة لهذا الفلتر',
|
||
'packing.menuRename': 'إعادة تسمية',
|
||
'packing.menuCheckAll': 'تحديد الكل',
|
||
'packing.menuUncheckAll': 'إلغاء تحديد الكل',
|
||
'packing.menuDeleteCat': 'حذف الفئة',
|
||
'packing.assignUser': 'تعيين مستخدم',
|
||
'packing.noMembers': 'لا أعضاء',
|
||
'packing.addItem': 'إضافة عنصر',
|
||
'packing.addItemPlaceholder': 'اسم العنصر...',
|
||
'packing.addCategory': 'إضافة فئة',
|
||
'packing.newCategoryPlaceholder': 'اسم الفئة (مثال: ملابس)',
|
||
'packing.applyTemplate': 'تطبيق قالب',
|
||
'packing.template': 'قالب',
|
||
'packing.templateApplied': 'تمت إضافة {count} عنصر من القالب',
|
||
'packing.templateError': 'فشل تطبيق القالب',
|
||
'packing.bags': 'أمتعة',
|
||
'packing.noBag': 'غير معيّن',
|
||
'packing.totalWeight': 'الوزن الإجمالي',
|
||
'packing.bagName': 'الاسم...',
|
||
'packing.addBag': 'إضافة أمتعة',
|
||
'packing.changeCategory': 'تغيير الفئة',
|
||
'packing.confirm.clearChecked': 'هل تريد إزالة {count} عنصر محدد؟',
|
||
'packing.confirm.deleteCat': 'هل تريد حذف الفئة "{name}" مع {count} عنصر؟',
|
||
'packing.defaultCategory': 'أخرى',
|
||
'packing.toast.saveError': 'فشل الحفظ',
|
||
'packing.toast.deleteError': 'فشل الحذف',
|
||
'packing.toast.renameError': 'فشلت إعادة التسمية',
|
||
'packing.toast.addError': 'فشلت الإضافة',
|
||
|
||
// Packing suggestions
|
||
'packing.suggestions.items': [
|
||
{ name: 'جواز السفر', category: 'المستندات' },
|
||
{ name: 'بطاقة الهوية', category: 'المستندات' },
|
||
{ name: 'تأمين السفر', category: 'المستندات' },
|
||
{ name: 'تذاكر الطيران', category: 'المستندات' },
|
||
{ name: 'بطاقة ائتمان', category: 'المالية' },
|
||
{ name: 'نقد', category: 'المالية' },
|
||
{ name: 'تأشيرة', category: 'المستندات' },
|
||
{ name: 'قمصان', category: 'الملابس' },
|
||
{ name: 'بنطلونات', category: 'الملابس' },
|
||
{ name: 'ملابس داخلية', category: 'الملابس' },
|
||
{ name: 'جوارب', category: 'الملابس' },
|
||
{ name: 'جاكيت', category: 'الملابس' },
|
||
{ name: 'ملابس نوم', category: 'الملابس' },
|
||
{ name: 'ملابس سباحة', category: 'الملابس' },
|
||
{ name: 'معطف مطر', category: 'الملابس' },
|
||
{ name: 'أحذية مريحة', category: 'الملابس' },
|
||
{ name: 'فرشاة أسنان', category: 'أدوات العناية' },
|
||
{ name: 'معجون أسنان', category: 'أدوات العناية' },
|
||
{ name: 'شامبو', category: 'أدوات العناية' },
|
||
{ name: 'مزيل عرق', category: 'أدوات العناية' },
|
||
{ name: 'واقي شمس', category: 'أدوات العناية' },
|
||
{ name: 'شفرة حلاقة', category: 'أدوات العناية' },
|
||
{ name: 'شاحن', category: 'الإلكترونيات' },
|
||
{ name: 'بطارية محمولة', category: 'الإلكترونيات' },
|
||
{ name: 'سماعات', category: 'الإلكترونيات' },
|
||
{ name: 'محول سفر', category: 'الإلكترونيات' },
|
||
{ name: 'كاميرا', category: 'الإلكترونيات' },
|
||
{ name: 'مسكنات ألم', category: 'الصحة' },
|
||
{ name: 'لاصقات جروح', category: 'الصحة' },
|
||
{ name: 'مطهر', category: 'الصحة' },
|
||
],
|
||
|
||
// Members / Sharing
|
||
'members.shareTrip': 'مشاركة الرحلة',
|
||
'members.inviteUser': 'دعوة مستخدم',
|
||
'members.selectUser': 'اختر مستخدمًا…',
|
||
'members.invite': 'دعوة',
|
||
'members.allHaveAccess': 'جميع المستخدمين لديهم صلاحية الوصول بالفعل.',
|
||
'members.access': 'الصلاحية',
|
||
'members.person': 'شخص',
|
||
'members.persons': 'أشخاص',
|
||
'members.you': 'أنت',
|
||
'members.owner': 'المالك',
|
||
'members.leaveTrip': 'مغادرة الرحلة',
|
||
'members.removeAccess': 'إزالة الصلاحية',
|
||
'members.confirmLeave': 'مغادرة الرحلة؟ ستفقد صلاحية الوصول.',
|
||
'members.confirmRemove': 'إزالة صلاحية هذا المستخدم؟',
|
||
'members.loadError': 'فشل تحميل الأعضاء',
|
||
'members.added': 'تمت الإضافة',
|
||
'members.addError': 'فشلت الإضافة',
|
||
'members.removed': 'تمت إزالة العضو',
|
||
'members.removeError': 'فشلت الإزالة',
|
||
|
||
// Categories (Admin)
|
||
'categories.title': 'الفئات',
|
||
'categories.subtitle': 'إدارة فئات الأماكن',
|
||
'categories.new': 'فئة جديدة',
|
||
'categories.empty': 'لا توجد فئات بعد',
|
||
'categories.namePlaceholder': 'اسم الفئة',
|
||
'categories.icon': 'الأيقونة',
|
||
'categories.color': 'اللون',
|
||
'categories.customColor': 'اختيار لون مخصص',
|
||
'categories.preview': 'معاينة',
|
||
'categories.defaultName': 'فئة',
|
||
'categories.update': 'تحديث',
|
||
'categories.create': 'إنشاء',
|
||
'categories.confirm.delete': 'حذف الفئة؟ لن يتم حذف الأماكن التابعة لهذه الفئة.',
|
||
'categories.toast.loadError': 'فشل تحميل الفئات',
|
||
'categories.toast.nameRequired': 'يرجى إدخال اسم',
|
||
'categories.toast.updated': 'تم تحديث الفئة',
|
||
'categories.toast.created': 'تم إنشاء الفئة',
|
||
'categories.toast.saveError': 'فشل الحفظ',
|
||
'categories.toast.deleted': 'تم حذف الفئة',
|
||
'categories.toast.deleteError': 'فشل الحذف',
|
||
|
||
// Backup (Admin)
|
||
'backup.title': 'النسخ الاحتياطي',
|
||
'backup.subtitle': 'قاعدة البيانات وجميع الملفات المرفوعة',
|
||
'backup.refresh': 'تحديث',
|
||
'backup.upload': 'رفع نسخة احتياطية',
|
||
'backup.uploading': 'جارٍ الرفع…',
|
||
'backup.create': 'إنشاء نسخة',
|
||
'backup.creating': 'جارٍ الإنشاء…',
|
||
'backup.empty': 'لا توجد نسخ احتياطية بعد',
|
||
'backup.createFirst': 'إنشاء أول نسخة',
|
||
'backup.download': 'تنزيل',
|
||
'backup.restore': 'استعادة',
|
||
'backup.confirm.restore': 'استعادة النسخة "{name}"؟\n\nسيتم استبدال جميع البيانات الحالية بالنسخة.',
|
||
'backup.confirm.uploadRestore': 'رفع واستعادة النسخة "{name}"؟\n\nسيتم الكتابة فوق جميع البيانات الحالية.',
|
||
'backup.confirm.delete': 'حذف النسخة "{name}"؟',
|
||
'backup.toast.loadError': 'فشل تحميل النسخ الاحتياطية',
|
||
'backup.toast.created': 'تم إنشاء النسخة الاحتياطية بنجاح',
|
||
'backup.toast.createError': 'فشل إنشاء النسخة',
|
||
'backup.toast.restored': 'تمت الاستعادة. ستُعاد تحميل الصفحة…',
|
||
'backup.toast.restoreError': 'فشلت الاستعادة',
|
||
'backup.toast.uploadError': 'فشل الرفع',
|
||
'backup.toast.deleted': 'تم حذف النسخة',
|
||
'backup.toast.deleteError': 'فشل الحذف',
|
||
'backup.toast.downloadError': 'فشل التنزيل',
|
||
'backup.toast.settingsSaved': 'تم حفظ إعدادات النسخ الاحتياطي التلقائي',
|
||
'backup.toast.settingsError': 'فشل حفظ الإعدادات',
|
||
'backup.auto.title': 'النسخ الاحتياطي التلقائي',
|
||
'backup.auto.subtitle': 'نسخ احتياطي تلقائي وفق جدول زمني',
|
||
'backup.auto.enable': 'تفعيل النسخ التلقائي',
|
||
'backup.auto.enableHint': 'سيتم إنشاء نسخ احتياطية تلقائيًا وفق الجدول المختار',
|
||
'backup.auto.interval': 'الفترة',
|
||
'backup.auto.hour': 'التنفيذ في الساعة',
|
||
'backup.auto.hourHint': 'التوقيت المحلي للخادم (تنسيق {format})',
|
||
'backup.auto.dayOfWeek': 'يوم الأسبوع',
|
||
'backup.auto.dayOfMonth': 'يوم الشهر',
|
||
'backup.auto.dayOfMonthHint': 'محدود بين 1–28 للتوافق مع جميع الأشهر',
|
||
'backup.auto.scheduleSummary': 'الجدول',
|
||
'backup.auto.summaryDaily': 'كل يوم الساعة {hour}:00',
|
||
'backup.auto.summaryWeekly': 'كل {day} الساعة {hour}:00',
|
||
'backup.auto.summaryMonthly': 'اليوم {day} من كل شهر الساعة {hour}:00',
|
||
'backup.auto.envLocked': 'Docker',
|
||
'backup.auto.envLockedHint': 'النسخ الاحتياطي التلقائي مُعدّ عبر متغيرات بيئة Docker. لتعديل الإعدادات، حدّث docker-compose.yml وأعد تشغيل الحاوية.',
|
||
'backup.auto.copyEnv': 'نسخ متغيرات بيئة Docker',
|
||
'backup.auto.envCopied': 'تم نسخ متغيرات بيئة Docker إلى الحافظة',
|
||
'backup.auto.keepLabel': 'حذف النسخ القديمة بعد',
|
||
'backup.dow.sunday': 'أحد',
|
||
'backup.dow.monday': 'إثن',
|
||
'backup.dow.tuesday': 'ثلا',
|
||
'backup.dow.wednesday': 'أرب',
|
||
'backup.dow.thursday': 'خمي',
|
||
'backup.dow.friday': 'جمع',
|
||
'backup.dow.saturday': 'سبت',
|
||
'backup.interval.hourly': 'كل ساعة',
|
||
'backup.interval.daily': 'يوميًا',
|
||
'backup.interval.weekly': 'أسبوعيًا',
|
||
'backup.interval.monthly': 'شهريًا',
|
||
'backup.keep.1day': 'يوم واحد',
|
||
'backup.keep.3days': '3 أيام',
|
||
'backup.keep.7days': '7 أيام',
|
||
'backup.keep.14days': '14 يومًا',
|
||
'backup.keep.30days': '30 يومًا',
|
||
'backup.keep.forever': 'الاحتفاظ للأبد',
|
||
|
||
// Photos
|
||
'photos.allDays': 'كل الأيام',
|
||
'photos.noPhotos': 'لا توجد صور بعد',
|
||
'photos.uploadHint': 'ارفع صور رحلتك',
|
||
'photos.clickToSelect': 'أو انقر للاختيار',
|
||
'photos.linkPlace': 'ربط بمكان',
|
||
'photos.noPlace': 'بلا مكان',
|
||
'photos.uploadN': 'رفع {n} صورة',
|
||
|
||
// Backup restore modal
|
||
'backup.restoreConfirmTitle': 'استعادة النسخة الاحتياطية؟',
|
||
'backup.restoreWarning': 'سيتم استبدال جميع البيانات الحالية (الرحلات، الأماكن، المستخدمون، المرفوعات) بالنسخة نهائيًا. لا يمكن التراجع عن ذلك.',
|
||
'backup.restoreTip': 'نصيحة: أنشئ نسخة احتياطية للحالة الحالية قبل الاستعادة.',
|
||
'backup.restoreConfirm': 'نعم، استعادة',
|
||
|
||
// PDF
|
||
'pdf.travelPlan': 'خطة السفر',
|
||
'pdf.planned': 'مخطط',
|
||
'pdf.costLabel': 'التكلفة EUR',
|
||
'pdf.preview': 'معاينة PDF',
|
||
'pdf.saveAsPdf': 'حفظ كـ PDF',
|
||
|
||
// Planner
|
||
'planner.places': 'الأماكن',
|
||
'planner.bookings': 'الحجوزات',
|
||
'planner.packingList': 'قائمة التجهيز',
|
||
'planner.documents': 'المستندات',
|
||
'planner.dayPlan': 'خطة اليوم',
|
||
'planner.reservations': 'الحجوزات',
|
||
'planner.minTwoPlaces': 'يلزم مكانان على الأقل مع إحداثيات',
|
||
'planner.noGeoPlaces': 'لا توجد أماكن بإحداثيات',
|
||
'planner.routeCalculated': 'تم حساب المسار',
|
||
'planner.routeCalcFailed': 'تعذر حساب المسار',
|
||
'planner.routeError': 'خطأ أثناء حساب المسار',
|
||
'planner.routeOptimized': 'تم تحسين المسار',
|
||
'planner.reservationUpdated': 'تم تحديث الحجز',
|
||
'planner.reservationAdded': 'تمت إضافة الحجز',
|
||
'planner.confirmDeleteReservation': 'حذف الحجز؟',
|
||
'planner.reservationDeleted': 'تم حذف الحجز',
|
||
'planner.days': 'الأيام',
|
||
'planner.allPlaces': 'كل الأماكن',
|
||
'planner.totalPlaces': 'إجمالي {n} أماكن',
|
||
'planner.noDaysPlanned': 'لا توجد أيام مخططة بعد',
|
||
'planner.editTrip': 'تعديل الرحلة ←',
|
||
'planner.placeOne': 'مكان واحد',
|
||
'planner.placeN': '{n} أماكن',
|
||
'planner.addNote': 'إضافة ملاحظة',
|
||
'planner.noEntries': 'لا توجد عناصر لهذا اليوم',
|
||
'planner.addPlace': 'إضافة مكان/نشاط',
|
||
'planner.addPlaceShort': '+ إضافة مكان/نشاط',
|
||
'planner.resPending': 'حجز قيد الانتظار · ',
|
||
'planner.resConfirmed': 'حجز مؤكد · ',
|
||
'planner.notePlaceholder': 'ملاحظة…',
|
||
'planner.noteTimePlaceholder': 'الوقت (اختياري)',
|
||
'planner.noteExamplePlaceholder': 'مثال: S3 الساعة 14:30 من المحطة المركزية، عبّارة من الرصيف 7، استراحة غداء…',
|
||
'planner.totalCost': 'إجمالي التكلفة',
|
||
'planner.searchPlaces': 'ابحث عن أماكن…',
|
||
'planner.allCategories': 'كل الفئات',
|
||
'planner.noPlacesFound': 'لم يتم العثور على أماكن',
|
||
'planner.addFirstPlace': 'أضف أول مكان',
|
||
'planner.noReservations': 'لا توجد حجوزات',
|
||
'planner.addFirstReservation': 'أضف أول حجز',
|
||
'planner.new': 'جديد',
|
||
'planner.addToDay': '+ يوم',
|
||
'planner.calculating': 'جارٍ الحساب…',
|
||
'planner.route': 'المسار',
|
||
'planner.optimize': 'تحسين',
|
||
'planner.openGoogleMaps': 'فتح في Google Maps',
|
||
'planner.selectDayHint': 'اختر يومًا من القائمة اليسرى لعرض خطة اليوم',
|
||
'planner.noPlacesForDay': 'لا توجد أماكن لهذا اليوم بعد',
|
||
'planner.addPlacesLink': 'إضافة أماكن ←',
|
||
'planner.minTotal': 'دقيقة إجمالًا',
|
||
'planner.noReservation': 'لا يوجد حجز',
|
||
'planner.removeFromDay': 'إزالة من اليوم',
|
||
'planner.addToThisDay': 'إضافة إلى اليوم',
|
||
'planner.overview': 'نظرة عامة',
|
||
'planner.noDays': 'لا توجد أيام بعد',
|
||
'planner.editTripToAddDays': 'عدّل الرحلة لإضافة أيام',
|
||
'planner.dayCount': '{n} أيام',
|
||
'planner.clickToUnlock': 'انقر لفتح القفل',
|
||
'planner.keepPosition': 'الحفاظ على الموضع أثناء تحسين المسار',
|
||
'planner.dayDetails': 'تفاصيل اليوم',
|
||
'planner.dayN': 'اليوم {n}',
|
||
|
||
// Dashboard Stats
|
||
'stats.countries': 'الدول',
|
||
'stats.cities': 'المدن',
|
||
'stats.trips': 'الرحلات',
|
||
'stats.places': 'الأماكن',
|
||
'stats.worldProgress': 'التقدم حول العالم',
|
||
'stats.visited': 'تمت زيارتها',
|
||
'stats.remaining': 'المتبقية',
|
||
'stats.visitedCountries': 'الدول التي تمت زيارتها',
|
||
|
||
// Day Detail Panel
|
||
'day.precipProb': 'احتمال هطول الأمطار',
|
||
'day.precipitation': 'الهطول',
|
||
'day.wind': 'الرياح',
|
||
'day.sunrise': 'شروق الشمس',
|
||
'day.sunset': 'غروب الشمس',
|
||
'day.hourlyForecast': 'التوقعات بالساعة',
|
||
'day.climateHint': 'متوسطات تاريخية — التوقعات الفعلية متاحة خلال 16 يومًا من هذا التاريخ.',
|
||
'day.noWeather': 'لا تتوفر بيانات طقس. أضف مكانًا بإحداثيات.',
|
||
'day.overview': 'ملخص اليوم',
|
||
'day.accommodation': 'الإقامة',
|
||
'day.addAccommodation': 'إضافة إقامة',
|
||
'day.hotelDayRange': 'تطبيق على الأيام',
|
||
'day.noPlacesForHotel': 'أضف أماكن إلى رحلتك أولًا',
|
||
'day.allDays': 'الكل',
|
||
'day.checkIn': 'تسجيل الوصول',
|
||
'day.checkOut': 'تسجيل المغادرة',
|
||
'day.confirmation': 'التأكيد',
|
||
'day.editAccommodation': 'تعديل الإقامة',
|
||
'day.reservations': 'الحجوزات',
|
||
|
||
// Memories / Immich
|
||
'memories.title': 'صور',
|
||
'memories.notConnected': 'Immich غير متصل',
|
||
'memories.notConnectedHint': 'قم بتوصيل Immich في الإعدادات لعرض صور رحلتك هنا.',
|
||
'memories.noDates': 'أضف تواريخ لرحلتك لتحميل الصور.',
|
||
'memories.noPhotos': 'لم يتم العثور على صور',
|
||
'memories.noPhotosHint': 'لم يتم العثور على صور في Immich لفترة هذه الرحلة.',
|
||
'memories.photosFound': 'صور',
|
||
'memories.fromOthers': 'من آخرين',
|
||
'memories.sharePhotos': 'مشاركة الصور',
|
||
'memories.sharing': 'مشترك',
|
||
'memories.reviewTitle': 'مراجعة صورك',
|
||
'memories.reviewHint': 'انقر على الصور لاستبعادها من المشاركة.',
|
||
'memories.shareCount': 'مشاركة {count} صور',
|
||
'memories.immichUrl': 'عنوان خادم Immich',
|
||
'memories.immichApiKey': 'مفتاح API',
|
||
'memories.testConnection': 'اختبار الاتصال',
|
||
'memories.testFirst': 'اختبر الاتصال أولاً',
|
||
'memories.connected': 'متصل',
|
||
'memories.disconnected': 'غير متصل',
|
||
'memories.connectionSuccess': 'تم الاتصال بـ Immich',
|
||
'memories.connectionError': 'تعذر الاتصال بـ Immich',
|
||
'memories.saved': 'تم حفظ إعدادات Immich',
|
||
'memories.oldest': 'الأقدم أولاً',
|
||
'memories.newest': 'الأحدث أولاً',
|
||
'memories.allLocations': 'جميع المواقع',
|
||
'memories.addPhotos': 'إضافة صور',
|
||
'memories.linkAlbum': 'ربط ألبوم',
|
||
'memories.selectAlbum': 'اختيار ألبوم Immich',
|
||
'memories.noAlbums': 'لم يتم العثور على ألبومات',
|
||
'memories.syncAlbum': 'مزامنة الألبوم',
|
||
'memories.unlinkAlbum': 'إلغاء الربط',
|
||
'memories.photos': 'صور',
|
||
'memories.selectPhotos': 'اختيار صور من Immich',
|
||
'memories.selectHint': 'انقر على الصور لتحديدها.',
|
||
'memories.selected': 'محدد',
|
||
'memories.addSelected': 'إضافة {count} صور',
|
||
'memories.alreadyAdded': 'تمت الإضافة',
|
||
'memories.private': 'خاص',
|
||
'memories.stopSharing': 'إيقاف المشاركة',
|
||
'memories.tripDates': 'تواريخ الرحلة',
|
||
'memories.allPhotos': 'جميع الصور',
|
||
'memories.confirmShareTitle': 'مشاركة مع أعضاء الرحلة؟',
|
||
'memories.confirmShareHint': '{count} صور ستكون مرئية لجميع أعضاء هذه الرحلة. يمكنك جعل الصور الفردية خاصة لاحقًا.',
|
||
'memories.confirmShareButton': 'مشاركة الصور',
|
||
|
||
// Collab Addon
|
||
'collab.tabs.chat': 'الدردشة',
|
||
'collab.tabs.notes': 'الملاحظات',
|
||
'collab.tabs.polls': 'الاستطلاعات',
|
||
'collab.whatsNext.title': 'ما التالي',
|
||
'collab.whatsNext.today': 'اليوم',
|
||
'collab.whatsNext.tomorrow': 'غدًا',
|
||
'collab.whatsNext.empty': 'لا توجد أنشطة قادمة',
|
||
'collab.whatsNext.until': 'إلى',
|
||
'collab.whatsNext.emptyHint': 'ستظهر الأنشطة التي لها وقت هنا',
|
||
'collab.chat.send': 'إرسال',
|
||
'collab.chat.placeholder': 'اكتب رسالة...',
|
||
'collab.chat.empty': 'ابدأ المحادثة',
|
||
'collab.chat.emptyHint': 'تتم مشاركة الرسائل مع جميع أعضاء الرحلة',
|
||
'collab.chat.emptyDesc': 'شارك الأفكار والخطط والتحديثات مع مجموعة السفر',
|
||
'collab.chat.today': 'اليوم',
|
||
'collab.chat.yesterday': 'أمس',
|
||
'collab.chat.deletedMessage': 'حذف رسالة',
|
||
'collab.chat.reply': 'رد',
|
||
'collab.chat.loadMore': 'تحميل الرسائل الأقدم',
|
||
'collab.chat.justNow': 'الآن',
|
||
'collab.chat.minutesAgo': 'منذ {n} د',
|
||
'collab.chat.hoursAgo': 'منذ {n} س',
|
||
'collab.notes.title': 'الملاحظات',
|
||
'collab.notes.new': 'ملاحظة جديدة',
|
||
'collab.notes.empty': 'لا توجد ملاحظات بعد',
|
||
'collab.notes.emptyHint': 'ابدأ بتسجيل الأفكار والخطط',
|
||
'collab.notes.all': 'الكل',
|
||
'collab.notes.titlePlaceholder': 'عنوان الملاحظة',
|
||
'collab.notes.contentPlaceholder': 'اكتب شيئًا...',
|
||
'collab.notes.categoryPlaceholder': 'الفئة',
|
||
'collab.notes.newCategory': 'فئة جديدة...',
|
||
'collab.notes.category': 'الفئة',
|
||
'collab.notes.noCategory': 'بلا فئة',
|
||
'collab.notes.color': 'اللون',
|
||
'collab.notes.save': 'حفظ',
|
||
'collab.notes.cancel': 'إلغاء',
|
||
'collab.notes.edit': 'تعديل',
|
||
'collab.notes.delete': 'حذف',
|
||
'collab.notes.pin': 'تثبيت',
|
||
'collab.notes.unpin': 'إلغاء التثبيت',
|
||
'collab.notes.daysAgo': 'منذ {n} يوم',
|
||
'collab.notes.categorySettings': 'إدارة الفئات',
|
||
'collab.notes.create': 'إنشاء',
|
||
'collab.notes.website': 'الموقع الإلكتروني',
|
||
'collab.notes.websitePlaceholder': 'https://...',
|
||
'collab.notes.attachFiles': 'إرفاق ملفات',
|
||
'collab.notes.noCategoriesYet': 'لا توجد فئات بعد',
|
||
'collab.notes.emptyDesc': 'أنشئ ملاحظة للبدء',
|
||
'collab.polls.title': 'الاستطلاعات',
|
||
'collab.polls.new': 'استطلاع جديد',
|
||
'collab.polls.empty': 'لا توجد استطلاعات بعد',
|
||
'collab.polls.emptyHint': 'اسأل المجموعة وصوّتوا معًا',
|
||
'collab.polls.question': 'السؤال',
|
||
'collab.polls.questionPlaceholder': 'ماذا ينبغي أن نفعل؟',
|
||
'collab.polls.addOption': '+ إضافة خيار',
|
||
'collab.polls.optionPlaceholder': 'الخيار {n}',
|
||
'collab.polls.create': 'إنشاء استطلاع',
|
||
'collab.polls.close': 'إغلاق',
|
||
'collab.polls.closed': 'مغلق',
|
||
'collab.polls.votes': '{n} أصوات',
|
||
'collab.polls.vote': '{n} صوت',
|
||
'collab.polls.multipleChoice': 'اختيار متعدد',
|
||
'collab.polls.multiChoice': 'اختيار متعدد',
|
||
'collab.polls.deadline': 'الموعد النهائي',
|
||
'collab.polls.option': 'خيار',
|
||
'collab.polls.options': 'الخيارات',
|
||
'collab.polls.delete': 'حذف',
|
||
'collab.polls.closedSection': 'مغلق',
|
||
|
||
// Permissions
|
||
'admin.tabs.permissions': 'الصلاحيات',
|
||
'perm.title': 'إعدادات الصلاحيات',
|
||
'perm.subtitle': 'التحكم في من يمكنه تنفيذ الإجراءات عبر التطبيق',
|
||
'perm.saved': 'تم حفظ إعدادات الصلاحيات',
|
||
'perm.resetDefaults': 'إعادة التعيين إلى الافتراضي',
|
||
'perm.customized': 'مخصص',
|
||
'perm.level.admin': 'المسؤول فقط',
|
||
'perm.level.tripOwner': 'مالك الرحلة',
|
||
'perm.level.tripMember': 'أعضاء الرحلة',
|
||
'perm.level.everybody': 'الجميع',
|
||
'perm.cat.trip': 'إدارة الرحلات',
|
||
'perm.cat.members': 'إدارة الأعضاء',
|
||
'perm.cat.files': 'الملفات',
|
||
'perm.cat.content': 'المحتوى والجدول الزمني',
|
||
'perm.cat.extras': 'الميزانية والتعبئة والتعاون',
|
||
'perm.action.trip_create': 'إنشاء رحلات',
|
||
'perm.action.trip_edit': 'تعديل تفاصيل الرحلة',
|
||
'perm.action.trip_delete': 'حذف الرحلات',
|
||
'perm.action.trip_archive': 'أرشفة / إلغاء أرشفة الرحلات',
|
||
'perm.action.trip_cover_upload': 'رفع صورة الغلاف',
|
||
'perm.action.member_manage': 'إضافة / إزالة الأعضاء',
|
||
'perm.action.file_upload': 'رفع الملفات',
|
||
'perm.action.file_edit': 'تعديل بيانات الملف',
|
||
'perm.action.file_delete': 'حذف الملفات',
|
||
'perm.action.place_edit': 'إضافة / تعديل / حذف الأماكن',
|
||
'perm.action.day_edit': 'تعديل الأيام والملاحظات والتعيينات',
|
||
'perm.action.reservation_edit': 'إدارة الحجوزات',
|
||
'perm.action.budget_edit': 'إدارة الميزانية',
|
||
'perm.action.packing_edit': 'إدارة قوائم التعبئة',
|
||
'perm.action.collab_edit': 'التعاون (ملاحظات، استطلاعات، دردشة)',
|
||
'perm.action.share_manage': 'إدارة روابط المشاركة',
|
||
'perm.actionHint.trip_create': 'من يمكنه إنشاء رحلات جديدة',
|
||
'perm.actionHint.trip_edit': 'من يمكنه تغيير اسم الرحلة والتواريخ والوصف والعملة',
|
||
'perm.actionHint.trip_delete': 'من يمكنه حذف رحلة نهائياً',
|
||
'perm.actionHint.trip_archive': 'من يمكنه أرشفة أو إلغاء أرشفة رحلة',
|
||
'perm.actionHint.trip_cover_upload': 'من يمكنه رفع أو تغيير صورة الغلاف',
|
||
'perm.actionHint.member_manage': 'من يمكنه دعوة أو إزالة أعضاء الرحلة',
|
||
'perm.actionHint.file_upload': 'من يمكنه رفع ملفات إلى رحلة',
|
||
'perm.actionHint.file_edit': 'من يمكنه تعديل أوصاف الملفات والروابط',
|
||
'perm.actionHint.file_delete': 'من يمكنه نقل الملفات إلى سلة المهملات أو حذفها نهائياً',
|
||
'perm.actionHint.place_edit': 'من يمكنه إضافة أو تعديل أو حذف الأماكن',
|
||
'perm.actionHint.day_edit': 'من يمكنه تعديل الأيام وملاحظات الأيام وتعيينات الأماكن',
|
||
'perm.actionHint.reservation_edit': 'من يمكنه إنشاء أو تعديل أو حذف الحجوزات',
|
||
'perm.actionHint.budget_edit': 'من يمكنه إنشاء أو تعديل أو حذف عناصر الميزانية',
|
||
'perm.actionHint.packing_edit': 'من يمكنه إدارة عناصر التعبئة والحقائب',
|
||
'perm.actionHint.collab_edit': 'من يمكنه إنشاء ملاحظات واستطلاعات وإرسال رسائل',
|
||
'perm.actionHint.share_manage': 'من يمكنه إنشاء أو حذف روابط المشاركة العامة',
|
||
// Undo
|
||
'undo.button': 'تراجع',
|
||
'undo.tooltip': 'تراجع: {action}',
|
||
'undo.assignPlace': 'تم تعيين المكان لليوم',
|
||
'undo.removeAssignment': 'تم إزالة المكان من اليوم',
|
||
'undo.reorder': 'تمت إعادة ترتيب الأماكن',
|
||
'undo.optimize': 'تم تحسين المسار',
|
||
'undo.deletePlace': 'تم حذف المكان',
|
||
'undo.moveDay': 'تم نقل المكان إلى يوم آخر',
|
||
'undo.lock': 'تم تبديل قفل المكان',
|
||
'undo.importGpx': 'استيراد GPX',
|
||
'undo.importGoogleList': 'استيراد خرائط Google',
|
||
|
||
// Notifications
|
||
'notifications.title': 'الإشعارات',
|
||
'notifications.markAllRead': 'تحديد الكل كمقروء',
|
||
'notifications.deleteAll': 'حذف الكل',
|
||
'notifications.showAll': 'عرض جميع الإشعارات',
|
||
'notifications.empty': 'لا توجد إشعارات',
|
||
'notifications.emptyDescription': 'لقد اطلعت على كل شيء!',
|
||
'notifications.all': 'الكل',
|
||
'notifications.unreadOnly': 'غير مقروء',
|
||
'notifications.markRead': 'تحديد كمقروء',
|
||
'notifications.markUnread': 'تحديد كغير مقروء',
|
||
'notifications.delete': 'حذف',
|
||
'notifications.system': 'النظام',
|
||
'memories.error.loadAlbums': 'فشل تحميل الألبومات',
|
||
'memories.error.linkAlbum': 'فشل ربط الألبوم',
|
||
'memories.error.unlinkAlbum': 'فشل إلغاء ربط الألبوم',
|
||
'memories.error.syncAlbum': 'فشل مزامنة الألبوم',
|
||
'memories.error.loadPhotos': 'فشل تحميل الصور',
|
||
'memories.error.addPhotos': 'فشل إضافة الصور',
|
||
'memories.error.removePhoto': 'فشل حذف الصورة',
|
||
'memories.error.toggleSharing': 'فشل تحديث إعدادات المشاركة',
|
||
'undo.addPlace': 'تمت إضافة المكان',
|
||
'undo.done': 'تم التراجع: {action}',
|
||
'notifications.test.title': 'إشعار تجريبي من {actor}',
|
||
'notifications.test.text': 'هذا إشعار تجريبي بسيط.',
|
||
'notifications.test.booleanTitle': 'يطلب منك {actor} الموافقة',
|
||
'notifications.test.booleanText': 'إشعار تجريبي يتطلب إجابة.',
|
||
'notifications.test.accept': 'موافقة',
|
||
'notifications.test.decline': 'رفض',
|
||
'notifications.test.navigateTitle': 'تحقق من شيء ما',
|
||
'notifications.test.navigateText': 'إشعار تجريبي للتنقل.',
|
||
'notifications.test.goThere': 'اذهب إلى هناك',
|
||
'notifications.test.adminTitle': 'إذاعة المسؤول',
|
||
'notifications.test.adminText': 'أرسل {actor} إشعاراً تجريبياً لجميع المسؤولين.',
|
||
'notifications.test.tripTitle': 'نشر {actor} في رحلتك',
|
||
'notifications.test.tripText': 'إشعار تجريبي للرحلة "{trip}".',
|
||
|
||
// Todo
|
||
'todo.subtab.packing': 'قائمة الأمتعة',
|
||
'todo.subtab.todo': 'المهام',
|
||
'todo.completed': 'مكتمل',
|
||
'todo.filter.all': 'الكل',
|
||
'todo.filter.open': 'مفتوح',
|
||
'todo.filter.done': 'منجز',
|
||
'todo.uncategorized': 'بدون تصنيف',
|
||
'todo.namePlaceholder': 'اسم المهمة',
|
||
'todo.descriptionPlaceholder': 'وصف (اختياري)',
|
||
'todo.unassigned': 'غير مُسنَد',
|
||
'todo.noCategory': 'بدون فئة',
|
||
'todo.hasDescription': 'له وصف',
|
||
'todo.addItem': 'إضافة مهمة جديدة...',
|
||
'todo.newCategory': 'اسم الفئة',
|
||
'todo.addCategory': 'إضافة فئة',
|
||
'todo.newItem': 'مهمة جديدة',
|
||
'todo.empty': 'لا توجد مهام بعد. أضف مهمة للبدء!',
|
||
'todo.filter.my': 'مهامي',
|
||
'todo.filter.overdue': 'متأخرة',
|
||
'todo.sidebar.tasks': 'المهام',
|
||
'todo.sidebar.categories': 'الفئات',
|
||
'todo.detail.title': 'مهمة',
|
||
'todo.detail.description': 'وصف',
|
||
'todo.detail.category': 'فئة',
|
||
'todo.detail.dueDate': 'تاريخ الاستحقاق',
|
||
'todo.detail.assignedTo': 'مسند إلى',
|
||
'todo.detail.delete': 'حذف',
|
||
'todo.detail.save': 'حفظ التغييرات',
|
||
'todo.detail.create': 'إنشاء مهمة',
|
||
'todo.detail.priority': 'الأولوية',
|
||
'todo.detail.noPriority': 'لا شيء',
|
||
'todo.sortByPrio': 'الأولوية',
|
||
|
||
// Notification system (added from feat/notification-system)
|
||
'settings.notifyVersionAvailable': 'إصدار جديد متاح',
|
||
'settings.notificationPreferences.noChannels': 'لم يتم تكوين قنوات إشعارات. اطلب من المسؤول إعداد إشعارات البريد الإلكتروني أو webhook.',
|
||
'settings.webhookUrl.label': 'رابط Webhook',
|
||
'settings.webhookUrl.placeholder': 'https://discord.com/api/webhooks/...',
|
||
'settings.webhookUrl.hint': 'أدخل رابط Webhook الخاص بـ Discord أو Slack أو المخصص لتلقي الإشعارات.',
|
||
'settings.webhookUrl.save': 'حفظ',
|
||
'settings.webhookUrl.saved': 'تم حفظ رابط Webhook',
|
||
'settings.webhookUrl.test': 'اختبار',
|
||
'settings.webhookUrl.testSuccess': 'تم إرسال Webhook الاختباري بنجاح',
|
||
'settings.webhookUrl.testFailed': 'فشل إرسال Webhook الاختباري',
|
||
'settings.notificationPreferences.inapp': 'In-App',
|
||
'settings.notificationPreferences.webhook': 'Webhook',
|
||
'settings.notificationPreferences.email': 'Email',
|
||
'admin.notifications.emailPanel.title': 'Email (SMTP)',
|
||
'admin.notifications.webhookPanel.title': 'Webhook',
|
||
'admin.notifications.inappPanel.title': 'In-App',
|
||
'admin.notifications.inappPanel.hint': 'الإشعارات داخل التطبيق نشطة دائمًا ولا يمكن تعطيلها بشكل عام.',
|
||
'admin.notifications.adminWebhookPanel.title': 'Webhook المسؤول',
|
||
'admin.notifications.adminWebhookPanel.hint': 'يُستخدم هذا الـ Webhook حصريًا لإشعارات المسؤول (مثل تنبيهات الإصدارات). وهو مستقل عن Webhooks المستخدمين ويُرسل تلقائيًا عند تعيين رابط URL.',
|
||
'admin.notifications.adminWebhookPanel.saved': 'تم حفظ رابط Webhook المسؤول',
|
||
'admin.notifications.adminWebhookPanel.testSuccess': 'تم إرسال Webhook الاختباري بنجاح',
|
||
'admin.notifications.adminWebhookPanel.testFailed': 'فشل إرسال Webhook الاختباري',
|
||
'admin.notifications.adminWebhookPanel.alwaysOnHint': 'يُرسل Webhook المسؤول تلقائيًا عند تعيين رابط URL',
|
||
'admin.notifications.adminNotificationsHint': 'حدد القنوات التي تُسلّم إشعارات المسؤول (مثل تنبيهات الإصدارات). يُرسل الـ Webhook تلقائيًا عند تعيين رابط URL لـ Webhook المسؤول.',
|
||
'admin.tabs.notifications': 'الإشعارات',
|
||
'notifications.versionAvailable.title': 'تحديث متاح',
|
||
'notifications.versionAvailable.text': 'TREK {version} متاح الآن.',
|
||
'notifications.versionAvailable.button': 'عرض التفاصيل',
|
||
'notif.test.title': '[اختبار] إشعار',
|
||
'notif.test.simple.text': 'هذا إشعار اختبار بسيط.',
|
||
'notif.test.boolean.text': 'هل تقبل هذا الإشعار الاختباري؟',
|
||
'notif.test.navigate.text': 'انقر أدناه للانتقال إلى لوحة التحكم.',
|
||
|
||
// Notifications
|
||
'notif.trip_invite.title': 'دعوة للرحلة',
|
||
'notif.trip_invite.text': '{actor} دعاك إلى {trip}',
|
||
'notif.booking_change.title': 'تم تحديث الحجز',
|
||
'notif.booking_change.text': '{actor} حدّث حجزاً في {trip}',
|
||
'notif.trip_reminder.title': 'تذكير بالرحلة',
|
||
'notif.trip_reminder.text': 'رحلتك {trip} تقترب!',
|
||
'notif.vacay_invite.title': 'دعوة دمج الإجازة',
|
||
'notif.vacay_invite.text': '{actor} يدعوك لدمج خطط الإجازة',
|
||
'notif.photos_shared.title': 'تمت مشاركة الصور',
|
||
'notif.photos_shared.text': '{actor} شارك {count} صورة في {trip}',
|
||
'notif.collab_message.title': 'رسالة جديدة',
|
||
'notif.collab_message.text': '{actor} أرسل رسالة في {trip}',
|
||
'notif.packing_tagged.title': 'مهمة التعبئة',
|
||
'notif.packing_tagged.text': '{actor} عيّنك في {category} في {trip}',
|
||
'notif.version_available.title': 'إصدار جديد متاح',
|
||
'notif.version_available.text': 'TREK {version} متاح الآن',
|
||
'notif.action.view_trip': 'عرض الرحلة',
|
||
'notif.action.view_collab': 'عرض الرسائل',
|
||
'notif.action.view_packing': 'عرض التعبئة',
|
||
'notif.action.view_photos': 'عرض الصور',
|
||
'notif.action.view_vacay': 'عرض Vacay',
|
||
'notif.action.view_admin': 'الذهاب للإدارة',
|
||
'notif.action.view': 'عرض',
|
||
'notif.action.accept': 'قبول',
|
||
'notif.action.decline': 'رفض',
|
||
'notif.generic.title': 'إشعار',
|
||
'notif.generic.text': 'لديك إشعار جديد',
|
||
'notif.dev.unknown_event.title': '[DEV] حدث غير معروف',
|
||
'notif.dev.unknown_event.text': 'نوع الحدث "{event}" غير مسجل في EVENT_NOTIFICATION_CONFIG',
|
||
}
|
||
|
||
export default ar
|
||
|