mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-21 14:36:31 +00:00
12745cd03c
Reworks how the plugins panel talks about safety, since the old copy oversold it. Drops the "install at your own risk" banner and the generic trust note, and replaces them with: - a collapsible security section that lays out plainly how a plugin is contained, what the permissions actually mean (a hard limit on what a plugin CAN do, not a promise of what it does), where the limits are, and what a hostile plugin could do at worst. - a short note on what "Reviewed" means: a maintainer scanned it for malware each version, not for quality — not a guarantee it's harmless. - the consent dialog for the update flow: when an update asks for rights you never granted, it lists the new permissions and outbound hosts and makes you approve before the plugin turns back on. Full copy in all 22 locales.
442 lines
37 KiB
TypeScript
442 lines
37 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
|
|
|
const admin: TranslationStrings = {
|
|
'admin.notifications.title': 'الإشعارات',
|
|
'admin.notifications.hint': 'اختر قناة إشعارات واحدة. يمكن تفعيل واحدة فقط في كل مرة.',
|
|
'admin.notifications.none': 'معطّل',
|
|
'admin.notifications.email': 'البريد الإلكتروني (SMTP)',
|
|
'admin.ntfy.hint':
|
|
'تسمح للمستخدمين بإعداد موضوعات ntfy الخاصة لتلقي إشعارات الدفع. قم بتعيين الخادم الافتراضي أدناه لملء إعدادات المستخدم مسبقًا.',
|
|
'admin.notifications.save': 'حفظ إعدادات الإشعارات',
|
|
'admin.notifications.saved': 'تم حفظ إعدادات الإشعارات',
|
|
'admin.notifications.testWebhook': 'إرسال webhook تجريبي',
|
|
'admin.notifications.testWebhookSuccess': 'تم إرسال webhook التجريبي بنجاح',
|
|
'admin.notifications.testWebhookFailed': 'فشل إرسال webhook التجريبي',
|
|
'admin.notifications.testNtfy': 'إرسال Ntfy تجريبي',
|
|
'admin.notifications.testNtfySuccess': 'تم إرسال Ntfy التجريبي بنجاح',
|
|
'admin.notifications.testNtfyFailed': 'فشل إرسال Ntfy التجريبي',
|
|
'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.adminNtfyPanel.title': 'Ntfy المسؤول',
|
|
'admin.notifications.adminNtfyPanel.hint':
|
|
'يُستخدم موضوع Ntfy هذا حصريًا لإشعارات المسؤول (مثل تنبيهات الإصدارات). وهو مستقل عن مواضيع المستخدمين ويُرسل دائمًا عند تهيئته.',
|
|
'admin.notifications.adminNtfyPanel.serverLabel': 'عنوان URL خادم Ntfy',
|
|
'admin.notifications.adminNtfyPanel.serverHint':
|
|
'يُستخدم أيضًا كخادم افتراضي لإشعارات ntfy للمستخدمين. اتركه فارغًا لاستخدام ntfy.sh. يمكن للمستخدمين تغييره في إعداداتهم الخاصة.',
|
|
'admin.notifications.adminNtfyPanel.topicLabel': 'موضوع المسؤول',
|
|
'admin.notifications.adminNtfyPanel.tokenLabel': 'رمز الوصول (اختياري)',
|
|
'admin.notifications.adminNtfyPanel.tokenCleared': 'تم مسح رمز وصول المسؤول',
|
|
'admin.notifications.adminNtfyPanel.saved': 'تم حفظ إعدادات Ntfy للمسؤول',
|
|
'admin.notifications.adminNtfyPanel.test': 'إرسال Ntfy تجريبي',
|
|
'admin.notifications.adminNtfyPanel.testSuccess': 'تم إرسال Ntfy التجريبي بنجاح',
|
|
'admin.notifications.adminNtfyPanel.testFailed': 'فشل إرسال Ntfy التجريبي',
|
|
'admin.notifications.adminNtfyPanel.alwaysOnHint': 'يُرسل Ntfy للمسؤول دائمًا عند تهيئة موضوع',
|
|
'admin.notifications.adminNotificationsHint':
|
|
'حدد القنوات التي تُسلّم إشعارات المسؤول (مثل تنبيهات الإصدارات). يُرسل الـ Webhook تلقائيًا عند تعيين رابط URL لـ Webhook المسؤول.',
|
|
'admin.notifications.tripReminders.title': 'تذكيرات الرحلات',
|
|
'admin.notifications.tripReminders.hint': 'إرسال تذكير قبل بدء الرحلة (يتطلب تعيين أيام التذكير على الرحلة).',
|
|
'admin.notifications.tripReminders.enabled': 'تم تفعيل تذكيرات الرحلات',
|
|
'admin.notifications.tripReminders.disabled': 'تم تعطيل تذكيرات الرحلات',
|
|
'admin.smtp.title': 'البريد والإشعارات',
|
|
'admin.smtp.hint': 'تكوين SMTP لإرسال إشعارات البريد الإلكتروني.',
|
|
'admin.smtp.testButton': 'إرسال بريد تجريبي',
|
|
'admin.webhook.hint': 'إرسال الإشعارات إلى webhook خارجي (Discord، Slack، إلخ).',
|
|
'admin.smtp.testSuccess': 'تم إرسال البريد التجريبي بنجاح',
|
|
'admin.smtp.testFailed': 'فشل إرسال البريد التجريبي',
|
|
'admin.title': 'الإدارة',
|
|
'admin.subtitle': 'إدارة المستخدمين وإعدادات النظام',
|
|
'admin.tabs.users': 'المستخدمون',
|
|
'admin.tabs.categories': 'الفئات',
|
|
'admin.tabs.backup': 'النسخ الاحتياطي',
|
|
'admin.tabs.notifications': 'الإشعارات',
|
|
'admin.tabs.audit': 'تدقيق',
|
|
'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.tabs.settings': 'الإعدادات',
|
|
'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. سيتم حظر تسجيل الدخول والتسجيل بكلمة المرور.',
|
|
'admin.fileTypes': 'أنواع الملفات المسموح بها',
|
|
'admin.fileTypesHint': 'حدد أنواع الملفات التي يمكن للمستخدمين رفعها.',
|
|
'admin.fileTypesFormat': 'امتدادات مفصولة بفواصل (مثل jpg,png,pdf,doc). استخدم * للسماح بجميع الأنواع.',
|
|
'admin.fileTypesSaved': 'تم حفظ إعدادات أنواع الملفات',
|
|
'admin.placesPhotos.title': 'صور الأماكن',
|
|
'admin.placesPhotos.subtitle': 'جلب الصور من Google Places API. عطّلها للحفاظ على حصة API. صور Wikimedia غير متأثرة.',
|
|
'admin.placesAutocomplete.title': 'الإكمال التلقائي للأماكن',
|
|
'admin.placesAutocomplete.subtitle': 'استخدام Google Places API لاقتراحات البحث. عطّلها للحفاظ على حصة API.',
|
|
'admin.placesDetails.title': 'تفاصيل الأماكن',
|
|
'admin.placesDetails.subtitle':
|
|
'جلب معلومات تفصيلية عن الأماكن (الساعات، التقييم، الموقع) من Google Places API. عطّلها للحفاظ على حصة API.',
|
|
'admin.bagTracking.title': 'تتبع الأمتعة',
|
|
'admin.bagTracking.subtitle': 'تفعيل الوزن وتعيين الأمتعة للعناصر',
|
|
'admin.collab.chat.title': 'الدردشة',
|
|
'admin.collab.chat.subtitle': 'المراسلة في الوقت الفعلي للتعاون',
|
|
'admin.collab.notes.title': 'الملاحظات',
|
|
'admin.collab.notes.subtitle': 'ملاحظات ومستندات مشتركة',
|
|
'admin.collab.polls.title': 'الاستطلاعات',
|
|
'admin.collab.polls.subtitle': 'استطلاعات وتصويت جماعي',
|
|
'admin.collab.whatsnext.title': 'ما التالي',
|
|
'admin.collab.whatsnext.subtitle': 'اقتراحات الأنشطة والخطوات التالية',
|
|
'admin.tabs.config': 'التخصيص',
|
|
'admin.tabs.defaults': 'الإعدادات الافتراضية',
|
|
'admin.defaultSettings.title': 'إعدادات المستخدم الافتراضية',
|
|
'admin.defaultSettings.description':
|
|
'تعيين الإعدادات الافتراضية على مستوى النظام. سيرى المستخدمون الذين لم يغيروا إعدادًا هذه القيم. تحظى تغييراتهم دائمًا بالأولوية.',
|
|
'admin.defaultSettings.saved': 'تم حفظ الإعداد الافتراضي',
|
|
'admin.defaultSettings.reset': 'إعادة التعيين إلى الإعداد الافتراضي المدمج',
|
|
'admin.defaultSettings.resetToBuiltIn': 'إعادة تعيين',
|
|
'admin.tabs.templates': 'قوالب التعبئة',
|
|
'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': 'فشل الحفظ',
|
|
'admin.tabs.addons': 'الإضافات',
|
|
'admin.tabs.plugins': 'الإضافات الخارجية',
|
|
'admin.plugins.rescan': 'إعادة الفحص',
|
|
'admin.plugins.rescanned': 'تمت إعادة فحص مجلد الإضافات',
|
|
'admin.plugins.browse': 'تصفح الإضافات',
|
|
'admin.plugins.installed': 'مثبّتة',
|
|
'admin.plugins.install': 'تثبيت',
|
|
'admin.plugins.registryEmpty': 'لا توجد إضافات متاحة في السجل بعد.',
|
|
'admin.plugins.actionError': 'فشل الإجراء',
|
|
'admin.plugins.activate': 'تفعيل',
|
|
'admin.plugins.activated': 'تم تفعيل الإضافة',
|
|
'admin.plugins.deactivate': 'تعطيل',
|
|
'admin.plugins.deactivated': 'تم تعطيل الإضافة',
|
|
'admin.plugins.viewErrors': 'عرض سجل الأخطاء',
|
|
'admin.plugins.errorLog': 'سجل الأخطاء',
|
|
'admin.plugins.noErrors': 'لا توجد أخطاء مسجّلة.',
|
|
'admin.plugins.uninstalled': 'تمت إزالة الإضافة',
|
|
'admin.plugins.uninstallTitle': 'إزالة الإضافة؟',
|
|
'admin.plugins.uninstallBody': 'سيؤدي هذا إلى إيقاف الإضافة وإزالة تعليماتها البرمجية وحذف جميع بياناتها. لا يمكن التراجع عن هذا الإجراء.',
|
|
'admin.plugins.status.starting': 'جارٍ البدء…',
|
|
'admin.plugins.type.widget': 'Widget',
|
|
'admin.plugins.type.page': 'صفحة',
|
|
'admin.plugins.type.integration': 'تكامل',
|
|
'admin.plugins.reviewed': 'تمت مراجعتها',
|
|
'admin.plugins.unreviewed': 'لم تتم مراجعتها',
|
|
'admin.plugins.updated': 'تم تحديث الإضافة',
|
|
'admin.plugins.updateTo': 'Update → v{version}',
|
|
'admin.plugins.enabledToggle': 'تفعيل الإضافة',
|
|
'plugins.notFound': 'الإضافة غير موجودة',
|
|
'admin.plugins.title': 'الإضافات الخارجية',
|
|
'admin.plugins.subtitle': 'ثبّت وأدر إضافات الجهات الخارجية على خادمك.',
|
|
'admin.plugins.disabledTitle': 'الإضافات الخارجية معطّلة',
|
|
'admin.plugins.disabledBody': 'بيئة تشغيل الإضافات متوقفة (TREK_PLUGINS_ENABLED). لا يمكن تشغيل أي إضافة حتى يقوم مسؤول بتفعيلها في إعدادات الخادم.',
|
|
'admin.plugins.empty': 'لم يتم تثبيت أي إضافات بعد.',
|
|
'admin.plugins.loadError': 'تعذّر تحميل الإضافات.',
|
|
'admin.plugins.scaffoldNote': 'سيتوفر تثبيت الإضافات وتفعيلها في تحديث لاحق. تعرض هذه اللوحة حاليًا الإضافات المثبّتة فقط.',
|
|
'admin.plugins.status.active': 'نشطة',
|
|
'admin.plugins.status.inactive': 'غير نشطة',
|
|
'admin.plugins.status.disabled': 'معطّلة',
|
|
'admin.plugins.status.error': 'خطأ',
|
|
'admin.plugins.status.incompatible': 'غير متوافقة',
|
|
'admin.plugins.details': 'التفاصيل',
|
|
'admin.plugins.detailError': 'تعذّر تحميل تفاصيل الإضافة.',
|
|
'admin.plugins.permissionsTitle': 'الأذونات',
|
|
'admin.plugins.noPermissions': 'لا تطلب هذه الإضافة أي أذونات خاصة.',
|
|
'admin.plugins.egressNote': 'قد تتصل بـ: {hosts}',
|
|
'admin.plugins.setupTitle': 'الإعداد',
|
|
'admin.plugins.noSetup': 'تعمل مباشرة — لا حاجة إلى أي تهيئة.',
|
|
'admin.plugins.scope.instance': 'على مستوى المثيل',
|
|
'admin.plugins.scope.user': 'لكل مستخدم',
|
|
'admin.plugins.fieldRequired': 'مطلوب',
|
|
'admin.plugins.sourceRepo': 'مستودع المصدر',
|
|
'admin.plugins.homepage': 'الصفحة الرئيسية',
|
|
'admin.plugins.requiresTrek': 'يتطلب TREK {version}+',
|
|
'admin.plugins.reviewedOn': 'تمت المراجعة {date}',
|
|
'admin.plugins.perm.db:own': 'تخزين بياناتها الخاصة في قاعدة بيانات معزولة',
|
|
'admin.plugins.perm.db:read:trips': 'قراءة الرحلات التي يمكن للمستخدم الحالي الوصول إليها',
|
|
'admin.plugins.perm.db:read:users': 'قراءة معلومات الملف الشخصي الأساسية (الاسم والصورة الرمزية — وليس بيانات الاعتماد أبدًا)',
|
|
'admin.plugins.perm.ws:broadcast:trip': 'إرسال تحديثات فورية إلى أعضاء الرحلة',
|
|
'admin.plugins.perm.ws:broadcast:user': 'إرسال تحديثات فورية إلى مستخدمين بعينهم',
|
|
'admin.plugins.perm.hook:photo-provider': 'توفير الصور لميزة الذكريات',
|
|
'admin.plugins.perm.hook:calendar-source': 'توفير الأحداث للتقويم',
|
|
'admin.plugins.perm.http:outbound': 'إجراء طلبات صادرة إلى المضيفات المُعلنة الخاصة بها',
|
|
'admin.plugins.updateConsentTitle': 'يتطلب هذا التحديث أذونات جديدة',
|
|
'admin.plugins.updateConsentBody': '{name} v{version} يطلب أذونات لم تمنحها بعد. تم تثبيت الإصدار الجديد لكنه يبقى متوقفًا حتى توافق عليه.',
|
|
'admin.plugins.updateNewPermissions': 'الأذونات المطلوبة حديثًا',
|
|
'admin.plugins.updateNewEgress': 'اتصالات صادرة جديدة',
|
|
'admin.plugins.updateApprove': 'الموافقة والتفعيل',
|
|
'admin.plugins.updateLater': 'إبقاؤه متوقفًا الآن',
|
|
'admin.plugins.updateKeptOff': 'تم تثبيت التحديث — يبقى متوقفًا حتى توافق على الأذونات الجديدة',
|
|
'admin.plugins.reviewedMeaning': '"تمت مراجعتها" تعني أن أحد القائمين على TREK فحص هذه الإضافة بحثًا عن البرمجيات الخبيثة في كل إصدار — وليس من حيث الجودة أو ما إذا كانت تعمل. وهي ليست ضمانًا بأن الإضافة غير ضارة.',
|
|
'admin.plugins.security.title': 'كيف يتم احتواء الإضافات — وحدود ذلك',
|
|
'admin.plugins.security.isolationTitle': 'كل إضافة تعمل في بيئة معزولة',
|
|
'admin.plugins.security.isolationBody': 'تعمل الإضافة كعملية معزولة خاصة بها لا يمكنها قراءة سوى ملفاتها الخاصة. لا يمكنها قراءة قاعدة بياناتك أو سر تسجيل دخولك أو مفتاح التشفير الخاص بك، ولا يمكنها تشغيل برامج أخرى، ولا يمكنها كتابة ملفات في أي مكان. تعمل واجهتها داخل إطار متصفح محكم لا يمكنه قراءة ملف تعريف ارتباط جلستك أو المساس بصفحة TREK المحيطة به.',
|
|
'admin.plugins.security.permsTitle': 'ماذا تعني الأذونات',
|
|
'admin.plugins.security.permsBody': 'الأذونات المعروضة قبل التثبيت هي حد صارم يفرضه TREK أثناء تشغيل الإضافة — فهي لا تستطيع فعليًا القيام بأي شيء ليس على القائمة. لكنها تخبرك بما يمكن للإضافة فعله، لا بما تفعله بالفعل. الإضافة المسموح لها بقراءة رحلاتك والوصول إلى خادم يمكنها إرسال رحلاتك إلى ذلك الخادم، لذا اقرأ الأذونات والمضيفات الصادرة، وليس الوصف فقط.',
|
|
'admin.plugins.security.limitsTitle': 'ما لا يمكننا ضمانه',
|
|
'admin.plugins.security.limitsBody': 'العزل هو حدّ برمجي قوي، لكنه ليس مطلقًا. تعمل الإضافة بالأذونات التي توافق عليها تمامًا، لذا يمكنها ضمن تلك الأذونات أن تتصرف بشكل مختلف عمّا يوحي به وصفها، ويمكنها إرسال البيانات التي تملكها بشكل مشروع إلى المضيفات التي أعلنتها. لا يقرأ TREK ولا يحكم على ما تفعله شيفرة الإضافة فعليًا.',
|
|
'admin.plugins.security.worstTitle': 'أسوأ الحالات',
|
|
'admin.plugins.security.worstBody': 'الإضافة الضارة التي تُفعّلها يمكنها إساءة استخدام البيانات والاتصالات التي منحتها إياها — على سبيل المثال، تسريب الرحلات المسموح لها بقراءتها. لا يمكنها سرقة كلمات المرور، أو تزوير تسجيل دخول مسؤول، أو تنفيذ أوامر على خادمك، أو الوصول إلى بيانات لم تمنحها. يبقى الضرر ضمن ما وافقت عليه، وإيقاف الإضافة يوقفه.',
|
|
'admin.plugins.security.reviewedTitle': 'ماذا تعني "تمت مراجعتها"',
|
|
'admin.plugins.security.reviewedBody': 'الإضافة التي تمت مراجعتها فُحصت يدويًا بحثًا عن البرمجيات الخبيثة بواسطة أحد القائمين على TREK في كل إصدار — جرى فحصها بحثًا عن شيفرة ضارة، لا لمعرفة ما إذا كانت تعمل جيدًا. وهي ليست وعدًا بأن الإضافة غير ضارة.',
|
|
'admin.plugins.security.trustTitle': 'الخلاصة',
|
|
'admin.plugins.security.trustBody': 'تثبيت إضافة يشبه تثبيت أي تطبيق من جهة خارجية: لا تُضِف سوى شيفرة من مطورين تثق بهم، وعند الشك، افحصها بنفسك أولًا. لا يتحمل TREK أي مسؤولية عن إضافات الجهات الخارجية.',
|
|
'admin.addons.title': 'الإضافات',
|
|
'admin.addons.subtitle': 'فعّل أو عطّل الميزات لتخصيص تجربة TREK.',
|
|
'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.catalog.memories.name': 'صور (Immich)',
|
|
'admin.addons.catalog.memories.description': 'شارك صور رحلتك عبر Immich',
|
|
'admin.addons.catalog.mcp.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': 'لا توجد إضافات متاحة',
|
|
'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':
|
|
'يعتمد الطقس على أول مكان بإحداثيات في كل يوم. إذا لم يكن هناك مكان مخصص ليوم ما، يُستخدم أي مكان من قائمة الأماكن كمرجع.',
|
|
'admin.tabs.mcpTokens': 'وصول MCP',
|
|
'admin.mcpTokens.title': 'وصول MCP',
|
|
'admin.mcpTokens.subtitle': 'إدارة جلسات OAuth ورموز API لجميع المستخدمين',
|
|
'admin.mcpTokens.sectionTitle': 'رموز 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.oauthSessions.sectionTitle': 'جلسات OAuth',
|
|
'admin.oauthSessions.clientName': 'العميل',
|
|
'admin.oauthSessions.owner': 'المالك',
|
|
'admin.oauthSessions.scopes': 'الصلاحيات',
|
|
'admin.oauthSessions.created': 'تاريخ الإنشاء',
|
|
'admin.oauthSessions.empty': 'لا توجد جلسات OAuth نشطة',
|
|
'admin.oauthSessions.revokeTitle': 'إلغاء الجلسة',
|
|
'admin.oauthSessions.revokeMessage': 'سيتم إلغاء جلسة OAuth هذه فوراً. سيفقد العميل وصوله إلى MCP.',
|
|
'admin.oauthSessions.revokeSuccess': 'تم إلغاء الجلسة',
|
|
'admin.oauthSessions.revokeError': 'فشل إلغاء الجلسة',
|
|
'admin.oauthSessions.loadError': 'فشل تحميل جلسات OAuth',
|
|
'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.nonDockerText':
|
|
'لا يعمل TREK هذا في Docker. للتحديث إلى {version}، أعد تشغيل طريقة التثبيت أو التحديث التي استخدمتها — على سبيل المثال، في Proxmox Community Scripts نفّذ التحديث من وحدة تحكم LXC:',
|
|
'admin.update.wikiLink': 'فتح دليل التحديث',
|
|
'admin.update.reloadHint': 'يرجى إعادة تحميل الصفحة بعد بضع ثوانٍ.',
|
|
'admin.tabs.permissions': 'الصلاحيات',
|
|
'admin.notifications.webhook': 'Webhook', // en-fallback
|
|
'admin.notifications.ntfy': 'Ntfy', // en-fallback
|
|
'admin.notifications.emailPanel.title': 'Email (SMTP)', // en-fallback
|
|
'admin.notifications.webhookPanel.title': 'Webhook', // en-fallback
|
|
'admin.notifications.inappPanel.title': 'In-App', // en-fallback
|
|
'admin.notifications.adminNtfyPanel.serverPlaceholder': 'https://ntfy.sh', // en-fallback
|
|
'admin.notifications.adminNtfyPanel.topicPlaceholder': 'trek-admin-alerts', // en-fallback
|
|
'admin.authMethods': 'Authentication Methods', // en-fallback
|
|
'admin.passwordLogin': 'Password Login', // en-fallback
|
|
'admin.passwordLoginHint': 'Allow users to sign in with email and password', // en-fallback
|
|
'admin.passwordRegistration': 'Password Registration', // en-fallback
|
|
'admin.passwordRegistrationHint': 'Allow new users to register with email and password', // en-fallback
|
|
'admin.oidcLogin': 'SSO Login', // en-fallback
|
|
'admin.oidcLoginHint': 'Allow users to sign in with SSO', // en-fallback
|
|
'admin.oidcRegistration': 'SSO Auto-Provisioning', // en-fallback
|
|
'admin.oidcRegistrationHint': 'Automatically create accounts for new SSO users', // en-fallback
|
|
'admin.envOverrideHint':
|
|
'Password login settings are controlled by the OIDC_ONLY environment variable and cannot be changed here.', // en-fallback
|
|
'admin.lockoutWarning': 'At least one login method must remain enabled', // en-fallback
|
|
'admin.addons.catalog.mcp.name': 'MCP', // en-fallback
|
|
'admin.tabs.github': 'GitHub', // en-fallback
|
|
'admin.addons.catalog.journey.name': 'Journey', // en-fallback
|
|
'admin.addons.catalog.journey.description':
|
|
'Trip tracking & travel journal with check-ins, photos, and daily stories', // en-fallback
|
|
'admin.addons.catalog.collections.name': 'المجموعات',
|
|
'admin.addons.catalog.collections.description':
|
|
'مكتبة أماكن شخصية — احفظ الأماكن عبر الرحلات في قوائم مسماة، وانسخها إلى أي رحلة، وشاركها مع الآخرين',
|
|
'admin.passkey.title': 'تسجيل الدخول بمفتاح المرور',
|
|
'admin.passkey.cardHint': 'اسمح للمستخدمين بتسجيل الدخول باستخدام مفاتيح المرور (WebAuthn). معطّل افتراضيًا.',
|
|
'admin.passkey.login': 'تفعيل تسجيل الدخول بمفتاح المرور',
|
|
'admin.passkey.loginHint':
|
|
'إظهار خيار "تسجيل الدخول باستخدام مفتاح المرور" والسماح للمستخدمين بتسجيل مفاتيح المرور في إعداداتهم.',
|
|
'admin.passkey.notConfigured':
|
|
'لا يوجد نطاق WebAuthn صالح لهذا التثبيت بعد. عيّن APP_URL أو Relying Party ID أدناه — تبقى مفاتيح المرور مخفية حتى ذلك الحين.',
|
|
'admin.passkey.rpId': 'Relying Party ID (النطاق)',
|
|
'admin.passkey.rpIdHint':
|
|
'النطاق المجرّد الذي تُربط به مفاتيح المرور، مثل trek.example.org. اتركه فارغًا لاشتقاقه من APP_URL. تغييره لاحقًا يُبطل مفاتيح المرور الموجودة.',
|
|
'admin.passkey.origins': 'الأصول المسموح بها',
|
|
'admin.passkey.originsHint': 'أصول كاملة مفصولة بفواصل، مثل https://trek.example.org. اتركه فارغًا لاستخدام APP_URL.',
|
|
'admin.passkey.reset': 'إعادة تعيين مفاتيح المرور',
|
|
'admin.passkey.resetHint':
|
|
'إزالة جميع مفاتيح المرور لهذا المستخدم (مثلًا عند فقدان جهاز). سيظل بإمكانه تسجيل الدخول بكلمة المرور.',
|
|
'admin.passkey.resetConfirm': 'إزالة جميع مفاتيح المرور لـ {name}؟',
|
|
'admin.passkey.resetDone': 'تمت إزالة {count} من مفاتيح المرور',
|
|
'admin.defaultSettings.mapProvider': 'محرك الخرائط',
|
|
'admin.defaultSettings.mapProviderHint':
|
|
'الخريطة الافتراضية لجميع المستخدمين على هذا الخادم. لا يزال بإمكان كل مستخدم تجاوزها في إعداداته الخاصة.',
|
|
'admin.defaultSettings.providerLeaflet': 'قياسي (مجاني)',
|
|
'admin.defaultSettings.providerMapbox': 'Mapbox (ثلاثي الأبعاد)',
|
|
'admin.defaultSettings.providerMapLibre': 'MapLibre (OpenFreeMap)',
|
|
'admin.defaultSettings.mapboxToken': 'رمز Mapbox المشترك',
|
|
'admin.defaultSettings.mapboxTokenHint':
|
|
'يُستخدم لكل مستخدم لم يُدخل رمزه الخاص — حتى يحصل الخادم بأكمله على Mapbox دون مشاركة المفتاح بشكل فردي. يُخزَّن مشفّرًا.',
|
|
'admin.defaultSettings.mapboxStyle': 'نمط الخريطة',
|
|
'admin.defaultSettings.mapboxStylePlaceholder': 'اختر نمطًا…',
|
|
'admin.defaultSettings.mapbox3d': 'المباني والتضاريس ثلاثية الأبعاد',
|
|
'admin.defaultSettings.mapboxQuality': 'وضع الجودة العالية',
|
|
'admin.group.users': 'Users',
|
|
'admin.group.config': 'Configuration',
|
|
'admin.group.integration': 'Integrations',
|
|
'admin.group.maintenance': 'Maintenance',
|
|
'admin.invite.tripLabel': 'إضافة إلى رحلة (اختياري)',
|
|
'admin.invite.tripNone': 'بدون رحلة',
|
|
'admin.invite.tripHint': 'تتم إضافة المستخدم الجديد تلقائيًا إلى هذه الرحلة عند تسجيله عبر الرابط.',
|
|
'admin.invite.boundTo': 'يُضاف إلى {trip}',
|
|
};
|
|
export default admin;
|