6876a83bbb
Admins can now filter the audit log by who acted, not just by what was
acted on.
User-facing changes
- Replaced the flat actor <select> with an autocomplete combobox
(Popover + cmdk Command) that searches by username AND display name,
in English or Arabic.
- Added an `actorId` URL hash param that survives full reload — picks
up alongside the existing target filter on initial mount and is
cleared when the admin navigates to a different section.
- Each audit row's actor avatar + name is now clickable, mirroring the
existing target chip pivot, so admins can jump from "this row" to
"everything by this person" in one click. Rows with a null actor
(system / deleted user) render the same avatar/name without the
click affordance, since the API can only filter by a concrete id.
- Active actor pill renders in sky (target pill remains emerald) and
has a clear button.
- CSV export already accepted `actorUserId` on the backend; the
frontend export call now forwards the filter and the OpenAPI
description has been updated to document it.
Files
- artifacts/tx-os/src/pages/admin.tsx
- New AuditActorPicker component, hash helpers
(parseAuditHashActor / syncAuditHashActor), pivotToActor /
clearActorFilter handlers, sky-colored active pill, clickable
actor in AuditLogRow.
- artifacts/api-server/tests/audit-logs-actor-filter.test.mjs (new)
- 6 tests covering: filter narrows results, excludes other actors
on the same target_type, combines with target filter, invalid
/zero/negative actorUserId → 400, CSV export honors filter.
- artifacts/tx-os/src/locales/{en,ar}.json
- actorSearch / actorEmpty / actorWithName / actorWithId /
clearActorFilter / actorPivotAria.
- lib/api-spec/openapi.yaml
- Audit export endpoint description now mentions
targetType / targetId / actorUserId.
Verification
- pnpm --filter @workspace/tx-os run typecheck → clean.
- All 6 new actor-filter tests + all 7 existing target-filter tests
pass against a live API server.
- E2E run via runTest() succeeded: opened the picker, selected an
actor, verified the pill + reload-safe hash, cleared, pivoted via
a row click, and confirmed CSV export honored the filter.
Notes / drift
- URL key is `actorId` (per task spec), but the React state and API
param remain `actorUserId` to match the existing backend.
- The broader `test` workflow has pre-existing failures in
executive-meetings.test.mjs and service-orders.test.mjs unrelated
to this change (admin 401 / HTML-404 fallback). Captured as
follow-up #291.
Replit-Task-Id: 0f02b232-eda3-46db-8235-98ecce2ebdb7
1363 lines
68 KiB
JSON
1363 lines
68 KiB
JSON
{
|
||
"nav": {
|
||
"home": "الرئيسية",
|
||
"services": "الخدمات",
|
||
"chat": "المحادثات",
|
||
"notifications": "الإشعارات",
|
||
"admin": "لوحة التحكم",
|
||
"logout": "تسجيل الخروج"
|
||
},
|
||
"auth": {
|
||
"login": "تسجيل الدخول",
|
||
"register": "إنشاء حساب",
|
||
"username": "اسم المستخدم",
|
||
"email": "البريد الإلكتروني",
|
||
"password": "كلمة المرور",
|
||
"loginButton": "دخول",
|
||
"registerButton": "تسجيل",
|
||
"welcomeBack": "مرحباً بعودتك",
|
||
"createAccount": "حساب جديد",
|
||
"registrationClosed": "إنشاء الحسابات العامة مغلق حالياً. تواصل مع مدير النظام.",
|
||
"displayNameAr": "الاسم (عربي)",
|
||
"displayNameEn": "الاسم (إنجليزي)",
|
||
"subtitle": "سجّل دخولك للمتابعة",
|
||
"signingIn": "جارٍ الدخول...",
|
||
"noAccount": "ليس لديك حساب؟",
|
||
"showPassword": "إظهار كلمة المرور",
|
||
"hidePassword": "إخفاء كلمة المرور",
|
||
"errRequired": "الرجاء إدخال اسم المستخدم وكلمة المرور.",
|
||
"errInvalid": "اسم مستخدم أو كلمة مرور غير صحيحة.",
|
||
"forgotPassword": "نسيت كلمة المرور؟",
|
||
"forgot": {
|
||
"title": "إعادة تعيين كلمة المرور",
|
||
"subtitle": "أدخل اسم المستخدم أو البريد الإلكتروني وسنرسل لك رابطاً لإعادة تعيين كلمة المرور.",
|
||
"identifier": "اسم المستخدم أو البريد الإلكتروني",
|
||
"identifierPlaceholder": "you@example.com",
|
||
"submit": "إرسال رابط الاستعادة",
|
||
"sending": "جارٍ الإرسال...",
|
||
"errRequired": "الرجاء إدخال اسم المستخدم أو البريد الإلكتروني.",
|
||
"errGeneric": "حدث خطأ ما. حاول مرة أخرى.",
|
||
"successMessage": "تم استلام طلبك. سيقوم المسؤول بمشاركة رابط إعادة التعيين معك قريباً.",
|
||
"adminNotice": "إرسال البريد الإلكتروني غير مفعّل بعد لهذه المساحة، لذا سيصدر المسؤول رابط إعادة تعيين لمرة واحدة يدوياً.",
|
||
"backToLogin": "العودة إلى تسجيل الدخول"
|
||
},
|
||
"reset": {
|
||
"title": "تعيين كلمة مرور جديدة",
|
||
"subtitle": "اختر كلمة مرور جديدة لحسابك.",
|
||
"newPassword": "كلمة المرور الجديدة",
|
||
"confirmPassword": "تأكيد كلمة المرور",
|
||
"submit": "تحديث كلمة المرور",
|
||
"saving": "جارٍ الحفظ...",
|
||
"errMinLength": "يجب أن تكون كلمة المرور ٦ أحرف على الأقل.",
|
||
"errMismatch": "كلمتا المرور غير متطابقتين.",
|
||
"errGeneric": "تعذّر إعادة تعيين كلمة المرور. قد يكون الرابط منتهي الصلاحية.",
|
||
"invalidToken": "رابط إعادة التعيين غير صالح أو منتهي الصلاحية.",
|
||
"requestNew": "طلب رابط جديد",
|
||
"successMessage": "تم تحديث كلمة المرور بنجاح. يمكنك تسجيل الدخول بكلمة المرور الجديدة.",
|
||
"goToLogin": "الذهاب لتسجيل الدخول"
|
||
},
|
||
"heroTitle": "مرحباً بك في منصتك الموحدة.",
|
||
"heroSubtitle": "سجّل دخولك لإدارة كل شيء من مكان واحد.",
|
||
"feat1": "كل أدواتك في لوحة تحكم واحدة",
|
||
"feat2": "تحديثات لحظية",
|
||
"feat3": "وصول آمن بالجلسات",
|
||
"rights": "جميع الحقوق محفوظة."
|
||
},
|
||
"home": {
|
||
"myApps": "تطبيقاتي",
|
||
"noApps": "لا توجد تطبيقات بعد",
|
||
"noAppsHint": "ستظهر هنا التطبيقات التي تملك صلاحية الوصول إليها.",
|
||
"greeting": {
|
||
"morning": "صباح الخير، {{name}}",
|
||
"afternoon": "مساء الخير، {{name}}",
|
||
"evening": "مساء الخير، {{name}}"
|
||
},
|
||
"stats": {
|
||
"apps": "التطبيقات",
|
||
"services": "الخدمات",
|
||
"messages": "الرسائل",
|
||
"alerts": "التنبيهات"
|
||
},
|
||
"clockStyle": {
|
||
"label": "نمط الساعة",
|
||
"showWidget": "إظهار ساعة الحائط في الشاشة الرئيسية",
|
||
"showTopbar": "إظهار الساعة في الشريط العلوي",
|
||
"hideWidget": "إخفاء الساعة",
|
||
"hourFormat": {
|
||
"label": "صيغة الساعة",
|
||
"h12": "12 ساعة (ص/م)",
|
||
"h24": "24 ساعة"
|
||
},
|
||
"options": {
|
||
"full": "كامل (الوقت واليوم والتقويمان الهجري والميلادي)",
|
||
"digital": "رقمي مع الثواني",
|
||
"digital-no-seconds": "رقمي بدون ثواني",
|
||
"analog": "ساعة عقاربية",
|
||
"minimal": "مبسّط (الوقت فقط)"
|
||
}
|
||
}
|
||
},
|
||
"services": {
|
||
"title": "الخدمات",
|
||
"available": "متاح",
|
||
"unavailable": "غير متاح",
|
||
"price": "السعر",
|
||
"noServices": "لا توجد خدمات متاحة",
|
||
"category": "التصنيف",
|
||
"free": "مجاني",
|
||
"order": "اطلب",
|
||
"orderModalTitle": "اطلب: {{name}}",
|
||
"orderNotes": "ملاحظات (اختياري)",
|
||
"orderNotesPlaceholder": "أي ملاحظات إضافية؟",
|
||
"orderNotesCounter": "{{count}}/500",
|
||
"placeOrder": "إرسال",
|
||
"placing": "جارٍ الإرسال...",
|
||
"orderPlaced": "تم إرسال طلبك",
|
||
"orderFailed": "تعذّر إرسال الطلب",
|
||
"myOrdersLink": "طلباتي"
|
||
},
|
||
"myOrders": {
|
||
"title": "طلباتي",
|
||
"loadError": "تعذّر تحميل الطلبات. حاول مرة أخرى.",
|
||
"retry": "إعادة المحاولة",
|
||
"back": "رجوع",
|
||
"empty": "لا توجد طلبات بعد",
|
||
"emptyHint": "ابدأ من كتالوج الخدمات.",
|
||
"browseServices": "تصفّح الخدمات",
|
||
"notesLabel": "ملاحظات:",
|
||
"cancel": "إلغاء الطلب",
|
||
"cancelConfirmTitle": "إلغاء هذا الطلب؟",
|
||
"cancelConfirmBody": "ستتاح لك ثوانٍ قليلة للتراجع.",
|
||
"cancelConfirm": "نعم، إلغاء",
|
||
"keep": "احتفظ به",
|
||
"cancelled": "تم إلغاء الطلب",
|
||
"cancelFailed": "تعذّر إلغاء الطلب",
|
||
"restoreFailed": "تعذّر استعادة الطلب",
|
||
"delete": "حذف",
|
||
"reorder": "اطلب مجددًا",
|
||
"deleteConfirmTitle": "حذف هذا الطلب؟",
|
||
"deleteConfirmBody": "سيتم حذف الطلب نهائياً من سجلّك.",
|
||
"deleteConfirm": "نعم، احذف",
|
||
"deleted": "تم حذف الطلب",
|
||
"deleteFailed": "تعذّر حذف الطلب",
|
||
"undo": "تراجع",
|
||
"undone": "تمت الاستعادة",
|
||
"clearFinished_one": "مسح طلب منتهٍ",
|
||
"clearFinished_other": "مسح {{count}} طلبات منتهية",
|
||
"clearConfirmTitle": "مسح الطلبات المنتهية؟",
|
||
"clearConfirmBody_one": "سيتم حذف طلب واحد منتهٍ نهائياً من سجلّك.",
|
||
"clearConfirmBody_other": "سيتم حذف {{count}} طلبات منتهية نهائياً من سجلّك.",
|
||
"clearConfirm": "نعم، امسح",
|
||
"clearedCount_one": "تم حذف طلب واحد",
|
||
"clearedCount_other": "تم حذف {{count}} طلبات",
|
||
"clearedPartial": "تم حذف {{ok}} وفشل {{fail}}"
|
||
},
|
||
"orderStatus": {
|
||
"pending": "بانتظار المستلِم",
|
||
"received": "تم الاستلام",
|
||
"preparing": "قيد التحضير",
|
||
"completed": "مكتمل",
|
||
"cancelled": "ملغى"
|
||
},
|
||
"incomingOrders": {
|
||
"title": "الطلبات الواردة",
|
||
"linkLabel": "الطلبات الواردة",
|
||
"subtitleUnclaimed": "طلبات بانتظار الاستلام",
|
||
"subtitleMine": "طلباتي الجارية",
|
||
"empty": "ما في طلبات حالياً",
|
||
"emptyHint": "ستظهر هنا الطلبات الجديدة فور وصولها.",
|
||
"loadError": "تعذّر تحميل الطلبات الواردة.",
|
||
"retry": "إعادة المحاولة",
|
||
"noAccess": "ليس لديك صلاحية لاستلام الطلبات.",
|
||
"back": "رجوع",
|
||
"ageJustNow": "الآن",
|
||
"ageMinutes": "منذ {{count}} د",
|
||
"ageHours": "منذ {{count}} س",
|
||
"ageDays": "منذ {{count}} يوم",
|
||
"from": "من",
|
||
"confirmReceipt": "استلام الطلب",
|
||
"confirming": "جارٍ التأكيد...",
|
||
"markPreparing": "بدء التحضير",
|
||
"markCompleted": "إنجاز",
|
||
"cancel": "إلغاء",
|
||
"alreadyClaimed": "استلمه شخص آخر قبلك",
|
||
"orderUnavailable": "هذا الطلب لم يعد متاحاً",
|
||
"actionFailed": "تعذّر تنفيذ الإجراء",
|
||
"claimed": "تم استلام الطلب",
|
||
"marked": "تم تحديث الحالة",
|
||
"cancelled": "تم إلغاء الطلب",
|
||
"undo": "تراجع",
|
||
"undone": "تمت الاستعادة",
|
||
"restoreFailed": "تعذّر استعادة الطلب"
|
||
},
|
||
"chat": {
|
||
"title": "المحادثات",
|
||
"newMessage": "رسالة جديدة",
|
||
"typeMessage": "اكتب رسالتك...",
|
||
"send": "إرسال",
|
||
"noConversations": "لا توجد محادثات",
|
||
"createConversation": "محادثة جديدة",
|
||
"groupChat": "مجموعة",
|
||
"directMessage": "محادثة خاصة",
|
||
"participants": "المشاركون",
|
||
"searchUsers": "البحث عن مستخدمين",
|
||
"modeDirect": "محادثة خاصة",
|
||
"modeGroup": "مجموعة",
|
||
"groupNameAr": "اسم المجموعة (عربي)",
|
||
"groupNameEn": "اسم المجموعة (إنجليزي)",
|
||
"groupNamePlaceholderAr": "مثلاً: فريق المبيعات",
|
||
"groupNamePlaceholderEn": "e.g. Sales team",
|
||
"searchUsersPlaceholder": "ابحث بالاسم أو اسم المستخدم",
|
||
"participantsCount_one": "{{count}} شخص مختار",
|
||
"participantsCount_other": "{{count}} أشخاص مختارين",
|
||
"participantsCount_zero": "لم يتم اختيار أحد",
|
||
"noUsersFound": "لا يوجد مستخدمون مطابقون",
|
||
"uploadAvatar": "رفع صورة",
|
||
"replaceAvatar": "استبدال الصورة",
|
||
"removeAvatar": "إزالة الصورة",
|
||
"changeAvatar": "تغيير صورة المجموعة",
|
||
"uploadingAvatar": "جارٍ الرفع… {{progress}}٪",
|
||
"avatarUploadFailed": "تعذّر رفع الصورة",
|
||
"validation": {
|
||
"needGroupName": "أدخل اسم المجموعة بالعربية أو الإنجليزية.",
|
||
"minTwoMembers": "اختر شخصين على الأقل لإنشاء مجموعة.",
|
||
"pickOnePerson": "اختر شخصاً واحداً للمحادثة."
|
||
},
|
||
"create": "إنشاء",
|
||
"settings": {
|
||
"title": "إعدادات المجموعة",
|
||
"openSettings": "فتح إعدادات المجموعة",
|
||
"groupName": "اسم المجموعة",
|
||
"saveName": "حفظ الاسم",
|
||
"nameSaved": "تم تحديث اسم المجموعة",
|
||
"saveFailed": "تعذّر حفظ التغييرات",
|
||
"needGroupName": "أدخل اسم المجموعة بالعربية أو الإنجليزية.",
|
||
"members_one": "عضو واحد",
|
||
"members_two": "عضوان",
|
||
"members_few": "{{count}} أعضاء",
|
||
"members_many": "{{count}} عضواً",
|
||
"members_other": "{{count}} عضو",
|
||
"addMembers": "إضافة أعضاء",
|
||
"addSelected": "إضافة",
|
||
"membersAdded": "تمت إضافة الأعضاء",
|
||
"addFailed": "تعذّرت إضافة الأعضاء",
|
||
"removeMember": "إزالة العضو",
|
||
"removeFailed": "تعذّرت إزالة العضو",
|
||
"admin": "مشرف",
|
||
"you": "(أنت)",
|
||
"viewOnly": "فقط مشرف المجموعة يستطيع تغيير الاسم أو الأعضاء."
|
||
},
|
||
"filterAll": "نشطة",
|
||
"filterArchived": "المؤرشفة",
|
||
"noArchived": "لا توجد محادثات مؤرشفة",
|
||
"actions": {
|
||
"title": "خيارات المحادثة",
|
||
"openActions": "فتح خيارات المحادثة",
|
||
"mute": "كتم الإشعارات",
|
||
"unmute": "إلغاء كتم الإشعارات",
|
||
"archive": "أرشفة المحادثة",
|
||
"unarchive": "إلغاء الأرشفة",
|
||
"leave": "مغادرة المجموعة",
|
||
"leaveConfirmTitle": "مغادرة هذه المجموعة؟",
|
||
"leaveConfirmBody": "ستتم إزالتك من \"{{name}}\" ولن تتلقى رسائلها بعد الآن.",
|
||
"successorTitle": "اختر المشرف التالي",
|
||
"successorHelp": "أنت المشرف الوحيد. اختر من يتولى الإدارة، أو دعنا نرقّي أقدم عضو في المجموعة.",
|
||
"successorAuto": "تلقائي (أقدم عضو)",
|
||
"muted": "تم كتم الإشعارات",
|
||
"unmuted": "الإشعارات مفعّلة",
|
||
"archived": "تمت أرشفة المحادثة",
|
||
"unarchived": "أعيدت المحادثة إلى النشطة",
|
||
"left": "غادرت المجموعة",
|
||
"actionFailed": "تعذّر تنفيذ الإجراء",
|
||
"mutedLabel": "مكتومة",
|
||
"youAreAdminTitle": "أنت الآن المشرف",
|
||
"youAreAdminDescription": "أصبحت مسؤولًا عن \"{{name}}\".",
|
||
"newAdminBadge": "مشرف جديد",
|
||
"newAdminLabel": "مشرف جديد: {{name}}"
|
||
},
|
||
"system": {
|
||
"someone": "شخص ما",
|
||
"listSeparator": "، ",
|
||
"groupRenamed": "غيّر {{actor}} اسم المجموعة إلى \"{{name}}\"",
|
||
"membersAdded_one": "أضاف {{actor}} {{names}}",
|
||
"membersAdded_other": "أضاف {{actor}} {{names}}",
|
||
"memberRemoved": "أزال {{actor}} {{target}}",
|
||
"memberLeft": "غادر {{actor}} المجموعة",
|
||
"adminPromoted": "{{target}} أصبح مشرفًا للمجموعة",
|
||
"adminPromotedAfterLeave": "تمت ترقية {{target}} إلى مشرف بعد مغادرة المشرف السابق"
|
||
}
|
||
},
|
||
"notifications": {
|
||
"title": "الإشعارات",
|
||
"markAllRead": "تحديد الكل كمقروء",
|
||
"noNotifications": "لا توجد إشعارات جديدة",
|
||
"unread": "غير مقروء"
|
||
},
|
||
"admin": {
|
||
"title": "لوحة التحكم",
|
||
"manageApps": "إدارة التطبيقات",
|
||
"manageServices": "إدارة الخدمات",
|
||
"manageUsers": "إدارة المستخدمين",
|
||
"appDisabled": "معطّل",
|
||
"addApp": "إضافة تطبيق",
|
||
"addService": "إضافة خدمة",
|
||
"addUser": "إضافة مستخدم",
|
||
"editApp": "تعديل التطبيق",
|
||
"editService": "تعديل الخدمة",
|
||
"editUser": "تعديل المستخدم",
|
||
"deleteConfirm": "هل أنت متأكد من الحذف؟",
|
||
"deleteApp": {
|
||
"title": "حذف التطبيق \"{{name}}\"؟",
|
||
"warning": "هذا التطبيق لا يزال قيد الاستخدام. حذفه سيؤثر على ما يلي:",
|
||
"forceHint": "سيؤدي ذلك إلى إلغاء وصول كل من يستخدمه وإزالة سجلّه. لا يمكن التراجع عن هذا الإجراء.",
|
||
"emptyBody": "هل أنت متأكد من حذف هذا التطبيق؟",
|
||
"groupCount": "{{count}} مجموعة تمنح هذا التطبيق حالياً",
|
||
"restrictionCount": "{{count}} قاعدة صلاحيات تقيّده",
|
||
"openCount": "{{count}} مرة فتح في السجل",
|
||
"confirm": "حذف",
|
||
"anyway": "حذف رغم ذلك"
|
||
},
|
||
"deleteService": {
|
||
"title": "حذف الخدمة \"{{name}}\"؟",
|
||
"warning": "هذه الخدمة لا تزال مرتبطة بطلبات. حذفها سيؤثر على ما يلي:",
|
||
"forceHint": "سيؤدي ذلك إلى حذف كل الطلبات المرتبطة نهائياً. لا يمكن التراجع عن هذا الإجراء.",
|
||
"emptyBody": "هل أنت متأكد من حذف هذه الخدمة؟",
|
||
"orderCount": "{{count}} طلب",
|
||
"confirm": "حذف",
|
||
"anyway": "حذف رغم ذلك"
|
||
},
|
||
"deleteUser": {
|
||
"title": "حذف المستخدم \"{{name}}\"؟",
|
||
"warning": "هذا المستخدم لديه بيانات. حذفه سيؤثر على ما يلي:",
|
||
"forceHint": "سيؤدي ذلك إلى حذف ملاحظاته وطلباته والمحادثات التي أنشأها والرسائل التي أرسلها بشكل نهائي. لا يمكن التراجع عن هذا الإجراء.",
|
||
"emptyBody": "هل أنت متأكد من حذف هذا المستخدم؟",
|
||
"noteCount": "{{count}} ملاحظة",
|
||
"orderCount": "{{count}} طلب",
|
||
"conversationCount": "{{count}} محادثة أنشأها",
|
||
"messageCount": "{{count}} رسالة أرسلها",
|
||
"confirm": "حذف",
|
||
"anyway": "حذف رغم ذلك"
|
||
},
|
||
"activate": "تفعيل",
|
||
"deactivate": "تعطيل",
|
||
"appName": "اسم التطبيق",
|
||
"appNameAr": "اسم التطبيق (عربي)",
|
||
"appNameEn": "اسم التطبيق (إنجليزي)",
|
||
"appSlug": "المعرف",
|
||
"appRoute": "المسار",
|
||
"appIcon": "الأيقونة",
|
||
"appColor": "اللون",
|
||
"appSortOrder": "الترتيب",
|
||
"appPermissions": {
|
||
"title": "الصلاحيات المطلوبة",
|
||
"help": "يجب أن يمتلك المستخدم على الأقل واحدة منها ليرى التطبيق. اتركها فارغة لإلغاء التقييد.",
|
||
"none": "لا توجد صلاحيات مطلوبة — التطبيق ظاهر للجميع.",
|
||
"selectPlaceholder": "اختر صلاحية…",
|
||
"add": "إضافة",
|
||
"removeAria": "إزالة الصلاحية {{name}}",
|
||
"impactTitle": "معاينة الأثر",
|
||
"impactLoading": "جارٍ حساب الأثر…",
|
||
"impactError": "تعذّر تحميل معاينة الأثر. حاول مرة أخرى.",
|
||
"impactNone": "لن يفقد أي مستخدم حق الوصول. {{visible}} مستخدمًا يرون هذا التطبيق حاليًا.",
|
||
"impactSummary": "{{affected}} من أصل {{visible}} مستخدمًا يرون هذا التطبيق حاليًا سيفقدون حق الوصول.",
|
||
"impactViaGroups": "أعضاء هذه المجموعات يحتفظون بحق الوصول بغض النظر عن التغيير: {{groups}}.",
|
||
"confirmTitle": "تأكيد تغيير الصلاحيات",
|
||
"confirmBody": "إضافة هذا الاشتراط ستخفي التطبيق عن {{affected}} من أصل {{visible}} مستخدمًا يرونه حاليًا. يمكن التراجع عن هذا التغيير.",
|
||
"confirmAction": "إضافة على أي حال"
|
||
},
|
||
"serviceName": "اسم الخدمة",
|
||
"serviceNameAr": "اسم الخدمة (عربي)",
|
||
"serviceNameEn": "اسم الخدمة (إنجليزي)",
|
||
"serviceDescriptionAr": "الوصف (عربي)",
|
||
"serviceDescriptionEn": "الوصف (إنجليزي)",
|
||
"servicePrice": "السعر",
|
||
"serviceAvailable": "متاح؟",
|
||
"serviceImageUrl": "رابط الصورة",
|
||
"serviceImage": "صورة الخدمة",
|
||
"uploadImage": "رفع صورة",
|
||
"replaceImage": "استبدال الصورة",
|
||
"uploading": "جاري الرفع...",
|
||
"uploadFailed": "فشل رفع الصورة",
|
||
"users": {
|
||
"searchPlaceholder": "ابحث باسم المستخدم أو البريد...",
|
||
"allGroups": "كل المجموعات",
|
||
"allStatuses": "كل الحالات",
|
||
"statusActive": "نشط",
|
||
"statusInactive": "موقوف",
|
||
"showing": "عرض {{count}} من أصل {{total}}",
|
||
"empty": "لا يوجد مستخدمون يطابقون الفلاتر.",
|
||
"editGroups": "تعديل المجموعات",
|
||
"editUserGroups": "تعديل مجموعات {{username}}",
|
||
"col": {
|
||
"username": "اسم المستخدم",
|
||
"email": "البريد",
|
||
"displayNameAr": "الاسم (عربي)",
|
||
"displayNameEn": "الاسم (إنجليزي)",
|
||
"language": "اللغة",
|
||
"createdAt": "تاريخ الإنشاء",
|
||
"groups": "المجموعات",
|
||
"actions": "إجراءات"
|
||
},
|
||
"review": {
|
||
"title": "مراجعة التغييرات",
|
||
"subtitle": "أكّد ما سيتم حفظه للمستخدم {{username}}.",
|
||
"noChanges": "لا توجد تغييرات للحفظ",
|
||
"groupsAdded": "مجموعات مُضافة",
|
||
"groupsRemoved": "مجموعات مُزالة",
|
||
"back": "رجوع للتعديل",
|
||
"confirm": "تأكيد وحفظ"
|
||
},
|
||
"counts": {
|
||
"notes": "{{count}} ملاحظة",
|
||
"orders": "{{count}} طلب",
|
||
"conversations": "{{count}} محادثة",
|
||
"messages": "{{count}} رسالة"
|
||
},
|
||
"historyTitle": "سجل الصلاحيات",
|
||
"historyHint": "الأدوار والمجموعات المسندة لهذا المستخدم. صفِّ بحسب من غيّر أو متى.",
|
||
"historyEmpty": "لم تُسجَّل تغييرات صلاحيات لهذا المستخدم بعد.",
|
||
"historyEmptyFiltered": "لا توجد تغييرات صلاحيات تطابق الفلاتر الحالية.",
|
||
"historyAdded_zero": "أُضيف ({{count}}):",
|
||
"historyAdded_one": "أُضيف ({{count}}):",
|
||
"historyAdded_two": "أُضيف ({{count}}):",
|
||
"historyAdded_few": "أُضيف ({{count}}):",
|
||
"historyAdded_many": "أُضيف ({{count}}):",
|
||
"historyAdded_other": "أُضيف ({{count}}):",
|
||
"historyRemoved_zero": "أُزيل ({{count}}):",
|
||
"historyRemoved_one": "أُزيل ({{count}}):",
|
||
"historyRemoved_two": "أُزيل ({{count}}):",
|
||
"historyRemoved_few": "أُزيل ({{count}}):",
|
||
"historyRemoved_many": "أُزيل ({{count}}):",
|
||
"historyRemoved_other": "أُزيل ({{count}}):",
|
||
"historyTotal_zero": "{{count}} عنصر بعد التغيير",
|
||
"historyTotal_one": "{{count}} عنصر بعد التغيير",
|
||
"historyTotal_two": "{{count}} عنصران بعد التغيير",
|
||
"historyTotal_few": "{{count}} عناصر بعد التغيير",
|
||
"historyTotal_many": "{{count}} عنصراً بعد التغيير",
|
||
"historyTotal_other": "{{count}} عنصر بعد التغيير",
|
||
"history": {
|
||
"kind": {
|
||
"roles": "الأدوار",
|
||
"groups": "المجموعات"
|
||
}
|
||
}
|
||
},
|
||
"username": "اسم المستخدم",
|
||
"email": "البريد الإلكتروني",
|
||
"password": "كلمة المرور",
|
||
"roles": {
|
||
"searchPlaceholder": "ابحث في الأدوار...",
|
||
"addRole": "إضافة دور",
|
||
"editRole": "تعديل الدور",
|
||
"name": "الاسم",
|
||
"namePlaceholder": "مثال: content_editor",
|
||
"nameHint": "حروف وأرقام وشرطات سفلية فقط.",
|
||
"descriptionAr": "الوصف (عربي)",
|
||
"descriptionEn": "الوصف (إنجليزي)",
|
||
"system": "نظامي",
|
||
"empty": "لا توجد أدوار بعد.",
|
||
"edit": "تعديل الدور",
|
||
"delete": "حذف الدور",
|
||
"editSystemNameHint": "لا يمكن تغيير اسم الأدوار النظامية.",
|
||
"deleteTitle": "حذف الدور \"{{name}}\"؟",
|
||
"deleteEmptyBody": "هذا الدور غير مُعيَّن لأي مستخدم. هل تريد المتابعة؟",
|
||
"deleteConflict": "هذا الدور قيد الاستخدام ولا يمكن حذفه.",
|
||
"deleteConflictHint": "أزل هذا الدور من المستخدمين والمجموعات قبل حذفه.",
|
||
"deleteConfirm": "حذف",
|
||
"usersCount": "{{count}} مستخدم",
|
||
"groupsCount": "{{count}} مجموعة",
|
||
"errorNameTaken": "يوجد دور بنفس الاسم.",
|
||
"errorInvalidName": "يجب أن يبدأ اسم الدور بحرف ويحتوي على حروف وأرقام وشرطات سفلية فقط.",
|
||
"errorSystemRename": "لا يمكن تغيير اسم الأدوار النظامية.",
|
||
"renameWarningTitle": "إعادة تسمية \"{{from}}\" إلى \"{{to}}\"",
|
||
"renameWarningBody": "قد يُشار إلى اسم هذا الدور في الشيفرة أو التكاملات أو استعلامات سجل التدقيق. إعادة التسمية قد تُعطّل هذه التدفقات بصمت. حدّث جميع المراجع قبل الحفظ.",
|
||
"renameUsage": "مستخدم حالياً من قِبل {{users}} مستخدم و{{groups}} مجموعة.",
|
||
"permissions": "الصلاحيات",
|
||
"permissionsHint": "اختر الصلاحيات التي يمنحها هذا الدور.",
|
||
"permissionsSystemHint": "صلاحيات الأدوار النظامية للقراءة فقط.",
|
||
"permissionsEmpty": "لا توجد صلاحيات معرّفة.",
|
||
"errorSystemPermissions": "لا يمكن تغيير صلاحيات الأدوار النظامية.",
|
||
"errorPermissionsSave": "تعذّر حفظ صلاحيات الدور.",
|
||
"impactTitle_one": "إزالة {{count}} صلاحية",
|
||
"impactTitle_other": "إزالة {{count}} صلاحيات",
|
||
"impactLoading": "جارٍ احتساب الأثر...",
|
||
"impactNoUsers": "لا يحصل أي مستخدم حالياً على هذه الصلاحيات عبر هذا الدور.",
|
||
"impactError": "تعذّر حساب المستخدمين المتأثرين. يرجى تعديل اختيارك أو المحاولة مرة أخرى.",
|
||
"impactPerPermission": "{{users}} مستخدم سيفقد هذه الصلاحية ({{groups}} مجموعة تمنح الدور)",
|
||
"impactViaGroups": "عبر المجموعات: {{groups}}",
|
||
"impactTotal_one": "{{count}} مستخدم في المجموع سيفقد صلاحية واحدة على الأقل.",
|
||
"impactTotal_other": "{{count}} مستخدم في المجموع سيفقدون صلاحية واحدة على الأقل.",
|
||
"confirmRemovalTitle": "تأكيد إزالة الصلاحيات",
|
||
"confirmRemovalBody_one": "سيؤدي الحفظ إلى إزالة الصلاحيات من {{count}} مستخدم. قد يُلغى وصوله فوراً. هل تريد المتابعة؟",
|
||
"confirmRemovalBody_other": "سيؤدي الحفظ إلى إزالة الصلاحيات من {{count}} مستخدماً. قد يُلغى وصولهم فوراً. هل تريد المتابعة؟",
|
||
"confirmRemovalAction": "إزالة الصلاحيات",
|
||
"historyTitle": "السجل",
|
||
"historyHint": "تغييرات صلاحيات هذا الدور. استخدم عوامل التصفية لتحديد من قام بالتغيير أو متى.",
|
||
"historyEmpty": "لم تُسجَّل أي تغييرات على صلاحيات هذا الدور بعد.",
|
||
"historyEmptyFiltered": "لا توجد تغييرات تطابق عوامل التصفية الحالية.",
|
||
"historyActorUnknown": "مستخدم غير معروف",
|
||
"historyAdded_zero": "أُضيفت (0):",
|
||
"historyAdded_one": "أُضيفت (1):",
|
||
"historyAdded_two": "أُضيفت (2):",
|
||
"historyAdded_few": "أُضيفت ({{count}}):",
|
||
"historyAdded_many": "أُضيفت ({{count}}):",
|
||
"historyAdded_other": "أُضيفت ({{count}}):",
|
||
"historyRemoved_zero": "أُزيلت (0):",
|
||
"historyRemoved_one": "أُزيلت (1):",
|
||
"historyRemoved_two": "أُزيلت (2):",
|
||
"historyRemoved_few": "أُزيلت ({{count}}):",
|
||
"historyRemoved_many": "أُزيلت ({{count}}):",
|
||
"historyRemoved_other": "أُزيلت ({{count}}):",
|
||
"historyTotal_zero": "بدون صلاحيات بعد التغيير",
|
||
"historyTotal_one": "صلاحية واحدة بعد التغيير",
|
||
"historyTotal_two": "صلاحيتان بعد التغيير",
|
||
"historyTotal_few": "{{count}} صلاحيات بعد التغيير",
|
||
"historyTotal_many": "{{count}} صلاحية بعد التغيير",
|
||
"historyTotal_other": "{{count}} صلاحية بعد التغيير",
|
||
"historyShowing": "يظهر {{shown}} من أصل {{total}}",
|
||
"historyLoadMore": "عرض المزيد",
|
||
"historyFilters": {
|
||
"actor": "غُيّرت بواسطة",
|
||
"allActors": "أي شخص",
|
||
"from": "من",
|
||
"to": "إلى",
|
||
"apply": "تطبيق",
|
||
"reset": "إعادة تعيين"
|
||
},
|
||
"historyErrors": {
|
||
"invalidDate": "يجب أن تكون التواريخ بصيغة YYYY-MM-DD.",
|
||
"invertedDates": "يجب أن يكون \"من\" قبل \"إلى\" أو في نفس اليوم.",
|
||
"fixFiltersFirst": "صحّح عوامل التصفية أعلاه لتحميل السجل."
|
||
}
|
||
},
|
||
"active": "نشط",
|
||
"issueResetLink": "إصدار رابط إعادة تعيين كلمة المرور",
|
||
"orderReceiverRole": "مستلم الطلبات",
|
||
"resetLinkModal": {
|
||
"title": "رابط إعادة تعيين كلمة المرور للمستخدم {{username}}",
|
||
"description": "شارك هذا الرابط لمرة واحدة مع المستخدم. يمكن استخدامه مرة واحدة فقط.",
|
||
"expires": "تنتهي الصلاحية: {{time}}",
|
||
"copy": "نسخ الرابط",
|
||
"copied": "تم نسخ الرابط"
|
||
},
|
||
"siteSettings": "إعدادات الموقع",
|
||
"siteNameAr": "اسم الموقع (عربي)",
|
||
"siteNameEn": "اسم الموقع (إنجليزي)",
|
||
"registrationOpen": "السماح بإنشاء حسابات",
|
||
"registrationOpenHint": "عند الإيقاف، الأدمن فقط يقدر ينشئ مستخدمين جدد.",
|
||
"footerTextAr": "نص التذييل (عربي)",
|
||
"footerTextEn": "نص التذييل (إنجليزي)",
|
||
"nav": {
|
||
"dashboard": "الرئيسية",
|
||
"apps": "التطبيقات",
|
||
"services": "الخدمات",
|
||
"users": "المستخدمين",
|
||
"groups": "المجموعات",
|
||
"roles": "الأدوار",
|
||
"auditLog": "سجل التدقيق",
|
||
"userManagement": "إدارة المستخدمين",
|
||
"settings": "الإعدادات",
|
||
"menu": "القائمة"
|
||
},
|
||
"apps": {
|
||
"counts": {
|
||
"groups": "{{count}} مجموعة",
|
||
"restrictions": "{{count}} قيد",
|
||
"opens": "{{count}} فتحة"
|
||
},
|
||
"historyTitle": "سجل الصلاحيات",
|
||
"historyHint": "الصلاحيات المطلوبة لاستخدام هذا التطبيق. صفِّ بحسب من غيّر أو متى.",
|
||
"historyEmpty": "لم تُسجَّل تغييرات صلاحيات لهذا التطبيق بعد.",
|
||
"historyEmptyFiltered": "لا توجد تغييرات صلاحيات تطابق الفلاتر الحالية.",
|
||
"historyAdded_zero": "أُضيف ({{count}}):",
|
||
"historyAdded_one": "أُضيف ({{count}}):",
|
||
"historyAdded_two": "أُضيف ({{count}}):",
|
||
"historyAdded_few": "أُضيف ({{count}}):",
|
||
"historyAdded_many": "أُضيف ({{count}}):",
|
||
"historyAdded_other": "أُضيف ({{count}}):",
|
||
"historyRemoved_zero": "أُزيل ({{count}}):",
|
||
"historyRemoved_one": "أُزيل ({{count}}):",
|
||
"historyRemoved_two": "أُزيل ({{count}}):",
|
||
"historyRemoved_few": "أُزيل ({{count}}):",
|
||
"historyRemoved_many": "أُزيل ({{count}}):",
|
||
"historyRemoved_other": "أُزيل ({{count}}):",
|
||
"historyTotal_zero": "{{count}} صلاحية بعد التغيير",
|
||
"historyTotal_one": "{{count}} صلاحية بعد التغيير",
|
||
"historyTotal_two": "{{count}} صلاحيتان بعد التغيير",
|
||
"historyTotal_few": "{{count}} صلاحيات بعد التغيير",
|
||
"historyTotal_many": "{{count}} صلاحية بعد التغيير",
|
||
"historyTotal_other": "{{count}} صلاحية بعد التغيير"
|
||
},
|
||
"services": {
|
||
"counts": {
|
||
"orders": "{{count}} طلب"
|
||
}
|
||
},
|
||
"groups": {
|
||
"searchPlaceholder": "ابحث في المجموعات...",
|
||
"addGroup": "إضافة مجموعة",
|
||
"editGroup": "تعديل المجموعة",
|
||
"name": "الاسم",
|
||
"descriptionAr": "الوصف (عربي)",
|
||
"descriptionEn": "الوصف (إنجليزي)",
|
||
"system": "نظامية",
|
||
"empty": "لا توجد مجموعات بعد.",
|
||
"members": "{{count}} عضو",
|
||
"appsCount": "{{count}} تطبيق",
|
||
"rolesCount": "{{count}} دور",
|
||
"appsHint": "أعضاء هذه المجموعة سيرون هذه التطبيقات.",
|
||
"usersHint": "أعضاء هذه المجموعة.",
|
||
"rolesHint": "يحصل أعضاء هذه المجموعة تلقائياً على هذه الأدوار.",
|
||
"rolesEmpty": "لا توجد أدوار متاحة.",
|
||
"deleteTitle": "حذف المجموعة \"{{name}}\"؟",
|
||
"deleteWarning": "هذه المجموعة لا تزال قيد الاستخدام. حذفها سيلغي الوصول لما يلي:",
|
||
"deleteForceHint": "سيؤدي الحذف إلى فصل الأعضاء وإلغاء التطبيقات والأدوار الممنوحة عبر المجموعة. لا يمكن التراجع عن هذا الإجراء.",
|
||
"deleteEmptyBody": "لا تحتوي هذه المجموعة على أعضاء أو تطبيقات أو أدوار. هل تريد المتابعة؟",
|
||
"deleteConfirm": "حذف",
|
||
"deleteAnyway": "حذف رغم ذلك",
|
||
"tab": {
|
||
"info": "المعلومات",
|
||
"apps": "التطبيقات",
|
||
"users": "المستخدمون",
|
||
"roles": "الأدوار",
|
||
"history": "السجل"
|
||
},
|
||
"historyTitle": "سجل الصلاحيات",
|
||
"historyHint": "الأعضاء والأدوار والتطبيقات المرتبطة بهذه المجموعة. صفِّ بحسب من غيّر أو متى.",
|
||
"historyEmpty": "لم تُسجَّل تغييرات صلاحيات لهذه المجموعة بعد.",
|
||
"historyEmptyFiltered": "لا توجد تغييرات صلاحيات تطابق الفلاتر الحالية.",
|
||
"historyAdded_zero": "أُضيف ({{count}}):",
|
||
"historyAdded_one": "أُضيف ({{count}}):",
|
||
"historyAdded_two": "أُضيف ({{count}}):",
|
||
"historyAdded_few": "أُضيف ({{count}}):",
|
||
"historyAdded_many": "أُضيف ({{count}}):",
|
||
"historyAdded_other": "أُضيف ({{count}}):",
|
||
"historyRemoved_zero": "أُزيل ({{count}}):",
|
||
"historyRemoved_one": "أُزيل ({{count}}):",
|
||
"historyRemoved_two": "أُزيل ({{count}}):",
|
||
"historyRemoved_few": "أُزيل ({{count}}):",
|
||
"historyRemoved_many": "أُزيل ({{count}}):",
|
||
"historyRemoved_other": "أُزيل ({{count}}):",
|
||
"historyTotal_zero": "{{count}} عنصر بعد التغيير",
|
||
"historyTotal_one": "{{count}} عنصر بعد التغيير",
|
||
"historyTotal_two": "{{count}} عنصران بعد التغيير",
|
||
"historyTotal_few": "{{count}} عناصر بعد التغيير",
|
||
"historyTotal_many": "{{count}} عنصراً بعد التغيير",
|
||
"historyTotal_other": "{{count}} عنصر بعد التغيير",
|
||
"history": {
|
||
"kind": {
|
||
"users": "المستخدمون",
|
||
"roles": "الأدوار",
|
||
"apps": "التطبيقات"
|
||
}
|
||
}
|
||
},
|
||
"audit": {
|
||
"filters": {
|
||
"action": "الإجراء",
|
||
"allActions": "كل الإجراءات",
|
||
"actor": "المنفّذ",
|
||
"allActors": "كل المنفّذين",
|
||
"actorSearch": "ابحث بالاسم أو @المعرّف",
|
||
"actorEmpty": "لا يوجد مستخدمون مطابقون.",
|
||
"actorWithName": "المنفّذ: {{name}}",
|
||
"actorWithId": "المنفّذ: #{{id}}",
|
||
"clearActorFilter": "مسح فلتر المنفّذ",
|
||
"from": "من",
|
||
"to": "إلى",
|
||
"apply": "تطبيق",
|
||
"reset": "إعادة ضبط",
|
||
"forcedOnly": "عمليات الحذف القسري فقط",
|
||
"forcedOnlyHint": "عرض إدخالات الحذف القسري للمجموعات والمستخدمين والتطبيقات والخدمات فقط.",
|
||
"targetType": "نوع الهدف: {{type}}",
|
||
"targetWithId": "الهدف: {{type}} #{{id}}",
|
||
"clearTargetFilter": "مسح فلتر الهدف"
|
||
},
|
||
"actorPivotAria": "تصفية سجل التدقيق على الإجراءات التي قام بها {{name}}",
|
||
"target": "الهدف: {{type}} #{{id}}",
|
||
"targetWithName": "الهدف: {{type}} #{{id}} · {{name}}",
|
||
"showing": "عرض {{shown}} من أصل {{total}}",
|
||
"empty": "لا توجد إدخالات في سجل التدقيق تطابق الفلاتر.",
|
||
"loadMore": "عرض المزيد",
|
||
"export": {
|
||
"button": "تصدير CSV",
|
||
"failed": "تعذّر تصدير سجل التدقيق. يُرجى المحاولة مرة أخرى."
|
||
},
|
||
"errors": {
|
||
"invalidDate": "يجب أن تكون التواريخ بصيغة YYYY-MM-DD.",
|
||
"invertedDates": "تاريخ \"من\" يجب أن يكون قبل أو يساوي تاريخ \"إلى\".",
|
||
"fixFiltersFirst": "عدّل الفلاتر لتحميل الإدخالات."
|
||
},
|
||
"unit": {
|
||
"member_zero": "بدون أعضاء",
|
||
"member_one": "عضو واحد",
|
||
"member_two": "عضوان",
|
||
"member_few": "{{count}} أعضاء",
|
||
"member_many": "{{count}} عضواً",
|
||
"member_other": "{{count}} عضو",
|
||
"app_zero": "بدون تطبيقات",
|
||
"app_one": "تطبيق واحد",
|
||
"app_two": "تطبيقان",
|
||
"app_few": "{{count}} تطبيقات",
|
||
"app_many": "{{count}} تطبيقاً",
|
||
"app_other": "{{count}} تطبيق",
|
||
"role_zero": "بدون أدوار",
|
||
"role_one": "دور واحد",
|
||
"role_two": "دوران",
|
||
"role_few": "{{count}} أدوار",
|
||
"role_many": "{{count}} دوراً",
|
||
"role_other": "{{count}} دور",
|
||
"group_zero": "بدون مجموعات",
|
||
"group_one": "مجموعة واحدة",
|
||
"group_two": "مجموعتان",
|
||
"group_few": "{{count}} مجموعات",
|
||
"group_many": "{{count}} مجموعةً",
|
||
"group_other": "{{count}} مجموعة",
|
||
"order_zero": "بدون طلبات",
|
||
"order_one": "طلب واحد",
|
||
"order_two": "طلبان",
|
||
"order_few": "{{count}} طلبات",
|
||
"order_many": "{{count}} طلباً",
|
||
"order_other": "{{count}} طلب",
|
||
"change_zero": "بدون تغييرات",
|
||
"change_one": "تغيير واحد",
|
||
"change_two": "تغييران",
|
||
"change_few": "{{count}} تغييرات",
|
||
"change_many": "{{count}} تغييراً",
|
||
"change_other": "{{count}} تغيير",
|
||
"permission_zero": "بدون صلاحيات",
|
||
"permission_one": "صلاحية واحدة",
|
||
"permission_two": "صلاحيتان",
|
||
"permission_few": "{{count}} صلاحيات",
|
||
"permission_many": "{{count}} صلاحيةً",
|
||
"permission_other": "{{count}} صلاحية",
|
||
"restriction_zero": "بدون قيود",
|
||
"restriction_one": "قيد واحد",
|
||
"restriction_two": "قيدان",
|
||
"restriction_few": "{{count}} قيود",
|
||
"restriction_many": "{{count}} قيداً",
|
||
"restriction_other": "{{count}} قيد",
|
||
"note_zero": "بدون ملاحظات",
|
||
"note_one": "ملاحظة واحدة",
|
||
"note_two": "ملاحظتان",
|
||
"note_few": "{{count}} ملاحظات",
|
||
"note_many": "{{count}} ملاحظةً",
|
||
"note_other": "{{count}} ملاحظة",
|
||
"conversation_zero": "بدون محادثات",
|
||
"conversation_one": "محادثة واحدة",
|
||
"conversation_two": "محادثتان",
|
||
"conversation_few": "{{count}} محادثات",
|
||
"conversation_many": "{{count}} محادثةً",
|
||
"conversation_other": "{{count}} محادثة",
|
||
"message_zero": "بدون رسائل",
|
||
"message_one": "رسالة واحدة",
|
||
"message_two": "رسالتان",
|
||
"message_few": "{{count}} رسائل",
|
||
"message_many": "{{count}} رسالةً",
|
||
"message_other": "{{count}} رسالة",
|
||
"open_zero": "بدون فتحات",
|
||
"open_one": "فتحة واحدة",
|
||
"open_two": "فتحتان",
|
||
"open_few": "{{count}} فتحات",
|
||
"open_many": "{{count}} فتحةً",
|
||
"open_other": "{{count}} فتحة"
|
||
},
|
||
"dependencies": {
|
||
"label": "التبعيات المُزالة",
|
||
"chipAriaTargetType": "{{label}} — فتح سجل التدقيق مفلتراً حسب نوع الهدف \"{{type}}\"",
|
||
"chipAriaParent": "{{label}} — فتح سجل التدقيق لـ {{type}} #{{id}}"
|
||
},
|
||
"recent": {
|
||
"title": "آخر النشاطات",
|
||
"loading": "جارٍ تحميل آخر النشاطات…",
|
||
"empty": "لا توجد نشاطات حديثة لهذا السجل بعد.",
|
||
"viewAll": "عرض السجل الكامل",
|
||
"viewAllAria": "فتح سجل التدقيق مفلتراً على هذا الـ {{type}}"
|
||
},
|
||
"summary": {
|
||
"app": {
|
||
"create": "تم إنشاء التطبيق '{{name}}'",
|
||
"update": "تم تعديل التطبيق '{{name}}' ({{changes}})",
|
||
"rename": "تمت إعادة تسمية التطبيق من '{{previousName}}' إلى '{{name}}'",
|
||
"delete": "تم حذف التطبيق '{{name}}'",
|
||
"forceDelete": "تم حذف التطبيق '{{name}}' قسراً (تأثرت {{groups}})",
|
||
"permissionAdd": "تمت إضافة الصلاحية '{{permission}}' إلى التطبيق '{{name}}'",
|
||
"permissionRemove": "تمت إزالة الصلاحية '{{permission}}' من التطبيق '{{name}}'"
|
||
},
|
||
"auth": {
|
||
"issueResetLink": "تم إصدار رابط إعادة تعيين كلمة المرور للمستخدم @{{username}}"
|
||
},
|
||
"group": {
|
||
"create": "تم إنشاء المجموعة '{{name}}' ({{members}}، {{apps}})",
|
||
"update": "تم تعديل المجموعة '{{name}}' ({{changes}})",
|
||
"rename": "تمت إعادة تسمية المجموعة من '{{previousName}}' إلى '{{name}}'",
|
||
"delete": "تم حذف المجموعة '{{name}}'",
|
||
"forceDelete": "تم حذف المجموعة '{{name}}' قسراً ({{members}})",
|
||
"userAdd": "تمت إضافة المستخدم @{{username}} إلى المجموعة '{{name}}'",
|
||
"userAddById": "تمت إضافة المستخدم #{{userId}} إلى المجموعة '{{name}}'",
|
||
"userRemove": "تمت إزالة المستخدم @{{username}} من المجموعة '{{name}}'",
|
||
"userRemoveById": "تمت إزالة المستخدم #{{userId}} من المجموعة '{{name}}'",
|
||
"appAdd": "تمت إضافة التطبيق '{{appName}}' إلى المجموعة '{{name}}'",
|
||
"appAddById": "تمت إضافة التطبيق #{{appId}} إلى المجموعة '{{name}}'",
|
||
"appRemove": "تمت إزالة التطبيق '{{appName}}' من المجموعة '{{name}}'",
|
||
"appRemoveById": "تمت إزالة التطبيق #{{appId}} من المجموعة '{{name}}'",
|
||
"roleAdd": "تمت إضافة الدور '{{roleName}}' إلى المجموعة '{{name}}'",
|
||
"roleAddById": "تمت إضافة الدور #{{roleId}} إلى المجموعة '{{name}}'",
|
||
"roleRemove": "تمت إزالة الدور '{{roleName}}' من المجموعة '{{name}}'",
|
||
"roleRemoveById": "تمت إزالة الدور #{{roleId}} من المجموعة '{{name}}'"
|
||
},
|
||
"role": {
|
||
"create": "تم إنشاء الدور '{{name}}'",
|
||
"update": "تم تعديل الدور '{{name}}' ({{changes}})",
|
||
"rename": "تمت إعادة تسمية الدور من '{{previousName}}' إلى '{{name}}'",
|
||
"delete": "تم حذف الدور '{{name}}'",
|
||
"permissionsReplace": "تم تحديث صلاحيات الدور '{{name}}' (أُضيفت {{added}}، حُذفت {{removed}})",
|
||
"permissionAdd": "تمت إضافة الصلاحية '{{permission}}' إلى الدور '{{name}}'",
|
||
"permissionRemove": "تمت إزالة الصلاحية '{{permission}}' من الدور '{{name}}'"
|
||
},
|
||
"service": {
|
||
"delete": "تم حذف الخدمة '{{name}}'",
|
||
"deleteId": "تم حذف الخدمة رقم {{id}}",
|
||
"forceDelete": "تم حذف الخدمة '{{name}}' قسراً (تأثرت {{orders}})"
|
||
},
|
||
"settings": {
|
||
"update": "تم تحديث إعدادات النظام ({{changes}})",
|
||
"registrationOpened": "تم فتح التسجيل العام",
|
||
"registrationClosed": "تم إغلاق التسجيل العام",
|
||
"registrationOpenedWith": "تم فتح التسجيل العام و{{others}}",
|
||
"registrationClosedWith": "تم إغلاق التسجيل العام و{{others}}"
|
||
},
|
||
"user": {
|
||
"delete": "تم حذف المستخدم @{{username}}",
|
||
"deleteWithName": "تم حذف المستخدم @{{username}} ({{displayName}})",
|
||
"forceDelete": "تم حذف المستخدم @{{username}} قسراً",
|
||
"forceDeleteWithName": "تم حذف المستخدم @{{username}} ({{displayName}}) قسراً"
|
||
}
|
||
}
|
||
},
|
||
"dashboardSoon": "إحصائيات اللوحة قريباً.",
|
||
"dashboard": {
|
||
"totalApps": "إجمالي التطبيقات",
|
||
"totalServices": "إجمالي الخدمات",
|
||
"totalUsers": "إجمالي المستخدمين",
|
||
"registration": "التسجيل",
|
||
"open": "مفتوح",
|
||
"closed": "مغلق",
|
||
"recentActivity": "آخر النشاطات",
|
||
"latestUser": "آخر مستخدم",
|
||
"latestApp": "آخر تطبيق",
|
||
"none": "—",
|
||
"newUsers7d": "مستخدمون جدد (٧ أيام)",
|
||
"vsPrev7d": "الأسبوع السابق: {{count}}",
|
||
"newUsersInRange": "مستخدمون جدد · {{range}}",
|
||
"vsPrevRange": "{{range}}: {{count}}",
|
||
"activeServices": "الخدمات النشطة",
|
||
"inactiveServices": "غير نشطة: {{count}}",
|
||
"signupsTrend": "التسجيلات",
|
||
"last7Days": "آخر ٧ أيام",
|
||
"appOpensTrend": "فتح التطبيقات",
|
||
"appOpensSummary": "{{count}} إجمالاً · {{delta}}",
|
||
"appOpensSummaryRanged": "{{count}} في {{range}} · {{delta}}",
|
||
"servicesCreatedTrend": "خدمات جديدة",
|
||
"servicesCreatedSummary": "{{count}} مضافة",
|
||
"servicesCreatedSummaryRanged": "{{count}} في {{range}}",
|
||
"trends": "الاتجاهات",
|
||
"rangeSelector": "المدى الزمني",
|
||
"range": {
|
||
"7d": "آخر ٧ أيام",
|
||
"30d": "آخر ٣٠ يومًا",
|
||
"90d": "آخر ٩٠ يومًا",
|
||
"custom": "مدى مخصص",
|
||
"customLabel": "{{from}} – {{to}}"
|
||
},
|
||
"prevRange": {
|
||
"7d": "الأيام ٧ السابقة",
|
||
"30d": "الأيام ٣٠ السابقة",
|
||
"90d": "الأيام ٩٠ السابقة",
|
||
"custom": "الـ {{count}} أيام السابقة"
|
||
},
|
||
"customRange": {
|
||
"from": "من",
|
||
"to": "إلى",
|
||
"apply": "تطبيق",
|
||
"invalid": "اختر نطاقًا صحيحًا",
|
||
"loadError": "تعذّر تحميل الإحصائيات للنطاق المحدّد. يرجى التحقق من التواريخ والمحاولة مرة أخرى."
|
||
},
|
||
"topApps": "أكثر التطبيقات استخدامًا",
|
||
"topAppsSubtitle": "حسب الفتح في {{range}}",
|
||
"mostActiveUsers": "أكثر المستخدمين نشاطًا",
|
||
"mostActiveUsersSubtitle": "حسب فتح التطبيقات في {{range}}",
|
||
"leaderboardEmpty": "لا يوجد نشاط بعد",
|
||
"openCount": "{{count}} فتحة",
|
||
"viewAppDetails": "عرض تفاصيل {{name}}",
|
||
"viewUserDetails": "عرض تفاصيل {{name}}",
|
||
"drillIn": {
|
||
"loading": "جارٍ التحميل…",
|
||
"appTitle": "آخر الفتحات · {{name}}",
|
||
"userTitle": "آخر الفتحات · {{name}}",
|
||
"subtitle": "{{count}} فتحة في {{range}}",
|
||
"empty": "لا توجد فتحات في هذا النطاق",
|
||
"loadError": "تعذّر تحميل آخر الفتحات.",
|
||
"editApp": "تعديل التطبيق",
|
||
"viewUser": "عرض المستخدم",
|
||
"loadMore": "تحميل المزيد",
|
||
"loadMoreError": "تعذّر تحميل المزيد من الفتحات.",
|
||
"shownOf": "عرض {{shown}} من {{total}}"
|
||
}
|
||
},
|
||
"dependents": {
|
||
"openLabel": "عرض {{count}}",
|
||
"loadError": "تعذّر تحميل العناصر.",
|
||
"empty": "لا يوجد ما يُعرض.",
|
||
"appGroups": {
|
||
"title": "المجموعات · {{name}}",
|
||
"subtitle": "{{count}} مجموعة تمنح صلاحية الوصول"
|
||
},
|
||
"appRestrictions": {
|
||
"title": "القيود · {{name}}",
|
||
"subtitle": "{{count}} صلاحية مطلوبة",
|
||
"noRoles": "لا توجد أدوار تشمل هذه الصلاحية"
|
||
},
|
||
"appOpens": {
|
||
"title": "الفتحات · {{name}}",
|
||
"subtitle": "{{count}} فتحة إجمالاً"
|
||
},
|
||
"serviceOrders": {
|
||
"title": "الطلبات · {{name}}",
|
||
"subtitle": "{{count}} طلب"
|
||
},
|
||
"userNotes": {
|
||
"title": "الملاحظات · {{name}}",
|
||
"subtitle": "{{count}} ملاحظة",
|
||
"untitled": "(بدون عنوان)",
|
||
"pinned": "مثبّتة",
|
||
"archived": "مؤرشفة"
|
||
},
|
||
"userOrders": {
|
||
"title": "الطلبات · {{name}}",
|
||
"subtitle": "{{count}} طلب"
|
||
},
|
||
"userConversations": {
|
||
"title": "المحادثات · {{name}}",
|
||
"subtitle": "{{count}} محادثة",
|
||
"kindGroup": "مجموعة",
|
||
"kindDirect": "خاصة",
|
||
"unnamedGroup": "(مجموعة بدون اسم)",
|
||
"unnamedDirect": "محادثة خاصة"
|
||
},
|
||
"userMessages": {
|
||
"title": "الرسائل · {{name}}",
|
||
"subtitle": "{{count}} رسالة"
|
||
},
|
||
"orderStatus": {
|
||
"pending": "قيد الانتظار",
|
||
"received": "مستلم",
|
||
"preparing": "قيد التحضير",
|
||
"completed": "مكتمل",
|
||
"cancelled": "ملغى"
|
||
}
|
||
}
|
||
},
|
||
"notFound": {
|
||
"title": "404 — الصفحة غير موجودة",
|
||
"description": "الصفحة التي تبحث عنها غير موجودة."
|
||
},
|
||
"common": {
|
||
"save": "حفظ",
|
||
"cancel": "إلغاء",
|
||
"delete": "حذف",
|
||
"edit": "تعديل",
|
||
"add": "إضافة",
|
||
"close": "إغلاق",
|
||
"loading": "جاري التحميل...",
|
||
"error": "حدث خطأ",
|
||
"success": "تمت العملية بنجاح",
|
||
"language": "English",
|
||
"appName": "نظام Tx",
|
||
"previous": "السابق",
|
||
"next": "التالي",
|
||
"empty": "(فارغ)"
|
||
},
|
||
"notes": {
|
||
"title": "الملاحظات",
|
||
"searchPlaceholder": "ابحث في الملاحظات",
|
||
"labels": "التصنيفات",
|
||
"manageLabels": "إدارة التصنيفات",
|
||
"newLabel": "تصنيف جديد",
|
||
"noLabelsYet": "لا توجد تصنيفات بعد",
|
||
"allLabels": "الكل",
|
||
"tabs": {
|
||
"active": "ملاحظات",
|
||
"archived": "الأرشيف"
|
||
},
|
||
"pinned": "مثبّتة",
|
||
"others": "أخرى",
|
||
"empty": "ستظهر ملاحظاتك هنا",
|
||
"emptyArchived": "لا توجد ملاحظات في الأرشيف",
|
||
"takeNote": "اكتب ملاحظة...",
|
||
"titlePlaceholder": "العنوان",
|
||
"contentPlaceholder": "اكتب ملاحظة...",
|
||
"save": "حفظ",
|
||
"pin": "تثبيت",
|
||
"archive": "أرشفة",
|
||
"unarchive": "إلغاء الأرشفة",
|
||
"delete": "حذف",
|
||
"deleteConfirm": "حذف هذه الملاحظة؟",
|
||
"deleteLabelConfirm": "حذف هذا التصنيف؟",
|
||
"editTitle": "تعديل ملاحظة"
|
||
},
|
||
"executiveMeetings": {
|
||
"titleAr": "إدارة الاجتماعات التنفيذية",
|
||
"titleEn": "Executive Meetings Management",
|
||
"scheduleHeading": "قائمة بأسماء حضور الاجتماعات",
|
||
"date": "التاريخ:",
|
||
"exportPdf": "تصدير PDF",
|
||
"noMeetings": "لا توجد اجتماعات في هذا اليوم",
|
||
"virtual": "اتصال مرئي",
|
||
"virtualAttendance": "الحضور عبر الاتصال المرئي",
|
||
"internalAttendance": "الحضور الداخلي",
|
||
"externalAttendance": "حضور خارجي",
|
||
"placeholderBody": "هذا القسم قيد التطوير في المراحل القادمة. ستتوفر إدارته الكاملة قريباً.",
|
||
"col": {
|
||
"number": "#",
|
||
"meeting": "الاجتماع",
|
||
"attendees": "الحضور",
|
||
"time": "الوقت"
|
||
},
|
||
"customize": {
|
||
"title": "تخصيص الجدول",
|
||
"hint": "أظهر أو أخفِ الأعمدة. اسحب رؤوس الأعمدة لإعادة الترتيب.",
|
||
"reset": "إعادة التعيين",
|
||
"dragHint": "اسحب حد العمود لتغيير عرضه"
|
||
},
|
||
"highlight": {
|
||
"title": "تمييز الاجتماع الحالي",
|
||
"hint": "تظليل الاجتماع الذي يقع وقته الآن.",
|
||
"reset": "إعادة إلى الافتراضي"
|
||
},
|
||
"dragRow": "اسحب لإعادة الترتيب",
|
||
"editMeetingTitle": "تعديل عنوان الاجتماع",
|
||
"alert": {
|
||
"title": "اجتماع يبدأ قريبًا",
|
||
"minutesAway": "يبدأ خلال {{n}} دقيقة",
|
||
"startsNow": "يبدأ الآن",
|
||
"atTime": "في {{time}}",
|
||
"done": "تم",
|
||
"postpone": "تأجيل",
|
||
"dismiss": "تجاهل التنبيه",
|
||
"dragHandle": "اسحب للتحريك",
|
||
"doneToast": "تم تأكيد المشاهدة",
|
||
"dismissToast": "تم تجاهل التنبيه",
|
||
"openMeetings": "فتح الاجتماعات",
|
||
"postponeTitle": "تأجيل الاجتماع",
|
||
"postponeIntro": "«{{title}}»",
|
||
"tabPostpone": "تأجيل",
|
||
"tabReschedule": "إعادة الجدولة",
|
||
"tabCancel": "إلغاء",
|
||
"postponeMinutesHint": "ستتم إزاحة وقتي البداية والنهاية بنفس المقدار.",
|
||
"postponeMinutesPlaceholder": "دقائق",
|
||
"postponeMinutesApply": "تأجيل {{n}} دقيقة",
|
||
"postponeConfirmPrompt": "هل تريد تأجيل الاجتماع {{n}} دقيقة؟",
|
||
"postponeConfirmYes": "نعم، أجّل {{n}} دقيقة",
|
||
"rescheduleHint": "نقل الاجتماع إلى تاريخ أو وقت جديد.",
|
||
"rescheduleDate": "التاريخ",
|
||
"rescheduleStart": "البداية",
|
||
"rescheduleEnd": "النهاية",
|
||
"rescheduleNote": "ملاحظة (اختياري)",
|
||
"rescheduleApply": "إعادة الجدولة",
|
||
"cancelHint": "يحدد الاجتماع كمُلغى مع الاحتفاظ بسجل الحضور.",
|
||
"cancelApply": "إلغاء الاجتماع",
|
||
"cancelConfirmPrompt": "هل أنت متأكد؟ سيتم وضع الاجتماع كمُلغى.",
|
||
"cancelConfirmYes": "نعم، إلغاء",
|
||
"back": "رجوع",
|
||
"saved": "تم الحفظ",
|
||
"saveFailed": "تعذّر حفظ التغييرات",
|
||
"conflictWarning": "تنبيه: الوقت الجديد يتداخل مع اجتماع آخر في نفس اليوم.",
|
||
"noTimeWindow": "هذا الاجتماع بدون وقت محدد، لا يمكن تأجيله بدقائق.",
|
||
"staleMeetingTitle": "تم تعديل هذا الاجتماع للتو من قبل مستخدم آخر.",
|
||
"staleMeetingByUser": "{{name}} عدّل هذا الاجتماع للتو.",
|
||
"staleMeetingCurrentTime": "الوقت الحالي: {{start}} – {{end}}.",
|
||
"staleMeetingApplyAnyway": "أضف {{n}} دقيقة إضافية على أي حال"
|
||
},
|
||
"schedule": {
|
||
"addRow": "أضف اجتماع",
|
||
"newMeetingDefaultAr": "اجتماع جديد",
|
||
"newMeetingDefaultEn": "New meeting",
|
||
"timeStart": "وقت البداية",
|
||
"timeEnd": "وقت النهاية",
|
||
"timeOrderError": "وقت النهاية قبل وقت البداية",
|
||
"addAttendee": "أضف حاضر",
|
||
"addPersonHere": "+ شخص هنا",
|
||
"addSubheading": "+ عنوان فرعي",
|
||
"addVirtualAttendee": "+ حاضر عبر الاتصال المرئي",
|
||
"addInternalAttendee": "+ حاضر داخلي",
|
||
"addExternalAttendee": "+ حاضر خارجي",
|
||
"newAttendeeAria": "اسم الحاضر الجديد",
|
||
"editAttendeeAria": "تعديل اسم الحاضر",
|
||
"newSubheadingAria": "نص العنوان الفرعي الجديد",
|
||
"editSubheadingAria": "تعديل نص العنوان الفرعي",
|
||
"deleteRow": "حذف الاجتماع",
|
||
"deleteRowConfirm": "حذف هذا الاجتماع؟\n\n\"{{title}}\"\n\nلا يمكن التراجع عن هذا الإجراء.",
|
||
"deleted": "تم حذف الاجتماع",
|
||
"editToggle": "تعديل",
|
||
"editToggleAria": "تبديل وضع التعديل",
|
||
"editToggleOn": "وضع التعديل مفعّل",
|
||
"editToggleOff": "وضع التعديل معطّل",
|
||
"saveToggle": "حفظ",
|
||
"saveToggleAria": "إنهاء التعديل وحفظ التغييرات",
|
||
"saveToggleOn": "وضع التعديل مفعّل — انقر للحفظ والخروج",
|
||
"saveToggleOff": "وضع التعديل معطّل — انقر للبدء بالتعديل",
|
||
"bulkSelectRow": "تحديد الاجتماع",
|
||
"bulkSelectAll": "تحديد الكل",
|
||
"bulkSelectionCount": "محدد: {{n}} من {{total}}",
|
||
"bulkClearSelection": "إلغاء التحديد",
|
||
"bulkDeleteSelected": "حذف المحدد",
|
||
"bulkDeleteConfirm": "حذف {{n}} اجتماعاً؟",
|
||
"bulkDeleteResultAll": "تم حذف {{n}} اجتماعاً",
|
||
"bulkDeletePartial": "تم حذف {{ok}} من {{total}} اجتماعاً، فشل {{failed}}",
|
||
"bulkDeleteResultNone": "فشل حذف الاجتماعات المحددة",
|
||
"bulkDeleteUndo": "تراجع",
|
||
"bulkDeleteUndone": "تمت استعادة {{n}} اجتماعاً",
|
||
"bulkDeleteUndoPartial": "تمت استعادة {{ok}} من {{total}} اجتماعاً",
|
||
"bulkDeleteUndoFailed": "تعذرت استعادة الاجتماعات"
|
||
},
|
||
"rowColor": {
|
||
"label": "لون الصف"
|
||
},
|
||
"rowActions": {
|
||
"label": "إجراءات الصف",
|
||
"back": "رجوع"
|
||
},
|
||
"merge": {
|
||
"label": "دمج الخلايا",
|
||
"editLabel": "تعديل الخلية المدموجة",
|
||
"placeholder": "اضغط لإضافة نص",
|
||
"meetingAttendees": "دمج الاجتماع + الحضور",
|
||
"meetingTime": "دمج الاجتماع + الحضور + الوقت",
|
||
"all": "دمج الصف بالكامل",
|
||
"unmerge": "إلغاء الدمج",
|
||
"activeBadge": "مدموج: {{cols}}"
|
||
},
|
||
"nav": {
|
||
"schedule": "جدول الاجتماعات اليومي",
|
||
"manage": "إدارة الاجتماعات",
|
||
"notifications": "التنبيهات",
|
||
"audit": "سجل التعديلات",
|
||
"pdf": "تصدير PDF",
|
||
"settings": "الإعدادات"
|
||
},
|
||
"common": {
|
||
"save": "حفظ",
|
||
"cancel": "إلغاء",
|
||
"delete": "حذف",
|
||
"edit": "تعديل",
|
||
"add": "إضافة",
|
||
"submit": "إرسال",
|
||
"close": "إغلاق",
|
||
"loading": "جارٍ التحميل...",
|
||
"saved": "تم الحفظ",
|
||
"saveFailed": "تعذر الحفظ",
|
||
"actions": "إجراءات",
|
||
"noPermission": "ليست لديك صلاحية لتنفيذ هذا الإجراء",
|
||
"yes": "نعم",
|
||
"no": "لا",
|
||
"all": "الكل",
|
||
"filter": "تصفية"
|
||
},
|
||
"manage": {
|
||
"heading": "إدارة الاجتماعات",
|
||
"addMeeting": "إضافة اجتماع",
|
||
"editMeeting": "تعديل الاجتماع",
|
||
"deleteMeeting": "حذف الاجتماع",
|
||
"deleteConfirm": "حذف هذا الاجتماع نهائياً؟",
|
||
"noMeetings": "لا توجد اجتماعات لهذا اليوم. اضغط \"إضافة اجتماع\" لإنشاء واحد.",
|
||
"field": {
|
||
"titleAr": "العنوان (عربي)",
|
||
"titleEn": "العنوان (إنجليزي)",
|
||
"meetingDate": "التاريخ",
|
||
"dailyNumber": "الرقم اليومي",
|
||
"dailyNumberHint": "اتركه فارغاً ليتم الترقيم تلقائياً",
|
||
"startTime": "وقت البدء",
|
||
"endTime": "وقت الانتهاء",
|
||
"location": "المكان",
|
||
"meetingUrl": "رابط الاجتماع",
|
||
"platform": "المنصة",
|
||
"status": "الحالة",
|
||
"isHighlighted": "تمييز (لون أحمر)",
|
||
"notes": "ملاحظات"
|
||
},
|
||
"attendees": {
|
||
"label": "قائمة الحضور",
|
||
"name": "الاسم",
|
||
"title": "المسمى",
|
||
"id": "رقم الحاضر",
|
||
"type": "نوع الحضور",
|
||
"add": "إضافة حاضر",
|
||
"addSubheading": "إضافة عنوان فرعي",
|
||
"subheadingName": "نص العنوان الفرعي",
|
||
"subheadingBadge": "عنوان فرعي",
|
||
"remove": "إزالة",
|
||
"moveUp": "تحريك للأعلى",
|
||
"moveDown": "تحريك للأسفل",
|
||
"dragHandle": "اسحب لإعادة الترتيب",
|
||
"removeAll": "حذف جميع الحضور",
|
||
"removeAllConfirm": "حذف جميع الحضور ({{count}})؟\n\nسيتم تطبيق التغيير عند حفظ الاجتماع."
|
||
},
|
||
"duplicate": "تكرار",
|
||
"duplicateToDate": "تكرار إلى تاريخ",
|
||
"duplicated": "تم تكرار الاجتماع",
|
||
"duplicateFailed": "تعذر تكرار الاجتماع",
|
||
"platform": {
|
||
"none": "بدون",
|
||
"webex": "Webex",
|
||
"teams": "Teams",
|
||
"zoom": "Zoom",
|
||
"other": "أخرى"
|
||
},
|
||
"attendanceType": {
|
||
"internal": "داخلي",
|
||
"virtual": "افتراضي",
|
||
"external": "خارجي"
|
||
},
|
||
"status": {
|
||
"scheduled": "مجدول",
|
||
"cancelled": "ملغى",
|
||
"completed": "منتهٍ",
|
||
"postponed": "مؤجل"
|
||
},
|
||
"errors": {
|
||
"titleRequired": "العنوان بالعربية مطلوب",
|
||
"dateRequired": "التاريخ مطلوب",
|
||
"duplicateNumber": "هذا الرقم اليومي مستخدم بالفعل في هذا التاريخ",
|
||
"saveFailed": "تعذر حفظ الاجتماع"
|
||
}
|
||
},
|
||
"audit": {
|
||
"heading": "سجل التعديلات",
|
||
"empty": "لا توجد قيود في السجل.",
|
||
"filterDate": "تصفية بالتاريخ",
|
||
"filterEntity": "النوع",
|
||
"filter": {
|
||
"from": "من",
|
||
"to": "إلى",
|
||
"actorId": "معرّف المنفّذ"
|
||
},
|
||
"pageInfo": "عرض",
|
||
"all": "الكل",
|
||
"col": {
|
||
"when": "الوقت",
|
||
"actor": "المنفّذ",
|
||
"action": "الإجراء",
|
||
"entity": "النوع",
|
||
"entityId": "المعرف",
|
||
"diff": "التفاصيل",
|
||
"changes": "التغييرات"
|
||
},
|
||
"created": "تم إنشاء",
|
||
"removed": "تم حذف",
|
||
"moreChanges": "تغييرات أخرى",
|
||
"entity": {
|
||
"meeting": "اجتماع",
|
||
"attendee": "حاضر",
|
||
"request": "طلب",
|
||
"task": "مهمة",
|
||
"font_settings": "إعدادات الخط",
|
||
"pdf_archive": "أرشيف PDF"
|
||
},
|
||
"action": {
|
||
"create": "إنشاء",
|
||
"update": "تعديل",
|
||
"delete": "حذف",
|
||
"approve": "اعتماد",
|
||
"approved": "تم الاعتماد",
|
||
"reject": "رفض",
|
||
"rejected": "تم الرفض",
|
||
"needs_edit": "إعادة للتعديل",
|
||
"withdraw": "سحب",
|
||
"submit": "إرسال",
|
||
"apply": "تطبيق",
|
||
"duplicate": "تكرار",
|
||
"replace_attendees": "تحديث الحضور",
|
||
"done": "تم"
|
||
}
|
||
},
|
||
"pdf": {
|
||
"heading": "تصدير PDF",
|
||
"intro": "يتم توليد ملف PDF حقيقي لجدول اليوم على الخادم باستخدام إعدادات الخط المحفوظة. كل عملية تنزيل تتم أرشفتها.",
|
||
"downloadPdf": "تنزيل PDF",
|
||
"downloadHint": "يُولَّد ملف PDF حسب تفضيلات الخط (النوع، الحجم، الوزن، المحاذاة) مع تشكيل عربي صحيح من اليمين لليسار.",
|
||
"downloaded": "بدأ تنزيل ملف PDF",
|
||
"selectDate": "تاريخ الجدول",
|
||
"archivesHeading": "ملفات PDF المؤرشفة",
|
||
"noArchives": "لا توجد ملفات PDF مؤرشفة لهذا التاريخ بعد.",
|
||
"downloadArchive": "تنزيل",
|
||
"legacyArchive": "نسخة قديمة"
|
||
},
|
||
"fontSettingsPage": {
|
||
"heading": "إعدادات الخط",
|
||
"intro": "تطبق هذه الإعدادات على جدول الاجتماعات. يمكنك حفظ تفضيلك الشخصي، ويمكن للمسؤول حفظ الإعدادات العامة لجميع المستخدمين.",
|
||
"scope": "النطاق",
|
||
"scopeUser": "تفضيلي الشخصي",
|
||
"scopeGlobal": "عام (جميع المستخدمين)",
|
||
"fontFamily": "نوع الخط",
|
||
"fontSize": "حجم الخط",
|
||
"fontWeight": "السماكة",
|
||
"alignment": "المحاذاة",
|
||
"weight": {
|
||
"regular": "عادي",
|
||
"medium": "متوسط",
|
||
"semibold": "نصف عريض",
|
||
"bold": "عريض"
|
||
},
|
||
"align": {
|
||
"start": "بداية",
|
||
"center": "وسط",
|
||
"end": "نهاية"
|
||
},
|
||
"preview": "معاينة",
|
||
"previewText": "نص تجريبي ١٢٣ Sample 123",
|
||
"save": "حفظ الإعدادات",
|
||
"saved": "تم الحفظ",
|
||
"reset": "إعادة الافتراضي"
|
||
},
|
||
"notificationsPage": {
|
||
"heading": "التنبيهات",
|
||
"intro": "تنبيهات فورية لاجتماعات المكتب — تُسلَّم إلى لوحة التنبيهات داخل النظام عند وقوع الأحداث، ويُرسل بريد للمعتمدين عند وجود طلب بانتظار المراجعة.",
|
||
"empty": "لا توجد تنبيهات بعد.",
|
||
"col": {
|
||
"meeting": "الاجتماع",
|
||
"user": "المستخدم",
|
||
"type": "النوع",
|
||
"scheduledAt": "الموعد",
|
||
"status": "الحالة"
|
||
},
|
||
"type": {
|
||
"reminder": "تذكير",
|
||
"change": "تنبيه تعديل",
|
||
"cancel": "تنبيه إلغاء",
|
||
"meeting_created": "اجتماع جديد"
|
||
},
|
||
"status": {
|
||
"pending": "بالانتظار",
|
||
"sent": "أُرسل",
|
||
"skipped": "متخطى",
|
||
"failed": "فشل"
|
||
},
|
||
"prefs": {
|
||
"heading": "تفضيلات التنبيهات الخاصة بي",
|
||
"intro": "اختر الأحداث التي تريد تنبيهات داخل النظام لها وأيها يصلك عبر البريد. إيقاف المفتاح يكتم تلك القناة لذلك النوع من الأحداث فقط.",
|
||
"col": {
|
||
"event": "الحدث",
|
||
"inApp": "داخل النظام",
|
||
"email": "بريد إلكتروني"
|
||
},
|
||
"save": "حفظ التفضيلات",
|
||
"reset": "إعادة",
|
||
"saved": "تم حفظ التفضيلات",
|
||
"restoreDefaults": "استعادة الإعدادات الافتراضية",
|
||
"restored": "تمت استعادة الإعدادات الافتراضية"
|
||
}
|
||
}
|
||
}
|
||
}
|