Files
IllusionandClaude Opus 5.5 709a978da5 feat(web): add Cloudflare Turnstile to the public forms
Render the widget on the contact, event registration and both application
forms, and verify the token with Siteverify in each action before anything
is written to the CMS. Verification fails closed. The check is off unless
both TURNSTILE_SITE_KEY and TURNSTILE_SECRET_KEY are set.

Allow challenges.cloudflare.com in script-src and frame-src.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-24 12:05:51 +02:00

185 lines
8.3 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"site": {
"name": "SHARP-ER",
"fullName": "العمل المشترك لتعزيز سيادة القانون – مسار الخروج",
"tagline": "نحو تعزيز سيادة القانون، معًا",
"description": "مبادرة وطنية تدعم المجتمع المدني والمؤسسات المحلية والمجتمعات الليبية في تعزيز العدالة والمساءلة والحوكمة الرشيدة. يمتد المشروع من ديسمبر 2025 إلى ديسمبر 2027.",
"metaTitle": "SHARP-ER — العمل المشترك لتعزيز سيادة القانون – مسار الخروج",
"euStatement": "بتمويل من الاتحاد الأوروبي",
"euEmblemAlt": "شعار الاتحاد الأوروبي",
"implementedBy": "الجهات المنفّذة",
"followUs": "تابعوا SHARP-ER"
},
"nav": {
"primaryLabel": "التنقل الرئيسي",
"footerLabel": "أقسام الموقع",
"openMenu": "فتح القائمة",
"closeMenu": "إغلاق القائمة",
"homeLinkLabel": "الصفحة الرئيسية لمشروع SHARP-ER",
"languageMenu": "اللغة",
"themeToLight": "التبديل إلى المظهر الفاتح",
"themeToDark": "التبديل إلى المظهر الداكن",
"skipToContent": "تخطَّ إلى المحتوى",
"sections": {
"home": "الرئيسية",
"aboutAndStrategy": "عن المشروع والاستراتيجية",
"about": "عن المشروع",
"legacy": "إرث شارب",
"whatWeDo": "ماذا نفعل",
"activities": "الأنشطة والمبادرات",
"engagementAndOpportunities": "المشاركة والفرص",
"events": "تقويم الفعاليات",
"applications": "طلبات وفرص المشاركة",
"news": "الأخبار والمستجدات",
"contact": "اتصل بنا",
"knowledgeAndImpact": "المعرفة والتأثير",
"resources": "الموارد والمنشورات",
"knowledgeHub": "مركز المعرفة"
}
},
"language": {
"label": "اللغة",
"switchTo": "التبديل إلى {language}",
"en": "English",
"ar": "العربية"
},
"legacy": {
"fullRecord": "اقرأ التفاصيل الكاملة لبرنامج {programme}",
"previousImage": "الصورة السابقة من {programme}",
"nextImage": "الصورة التالية من {programme}",
"imageCount": "الصورة {current} من {total}"
},
"actions": {
"readMore": "اقرأ المزيد",
"learnMore": "اعرف المزيد",
"discoverSharper": "اكتشف SHARP-ER",
"exploreOurWork": "اطّلع على عملنا",
"viewDetails": "عرض التفاصيل",
"viewAll": "عرض الكل",
"download": "تحميل",
"register": "سجّل الآن",
"apply": "قدّم طلبك",
"submit": "إرسال",
"cancel": "إلغاء",
"close": "إغلاق",
"share": "مشاركة",
"print": "طباعة",
"backToHome": "العودة إلى الصفحة الرئيسية",
"backToTop": "العودة إلى الأعلى",
"readRecap": "اقرأ الملخص",
"browseHub": "تصفّح المركز",
"seeActivities": "اطّلع على أنشطتنا",
"learnWhatWeDo": "تعرّف على عملنا",
"seeCurrentCalls": "اطّلع على الدعوات الحالية",
"applyToJoin": "قدّم طلب الانضمام",
"viewUpcomingSessions": "اطّلع على الجلسات القادمة",
"submitYourUpdate": "شاركونا مستجداتكم",
"addToGoogleCalendar": "أضف إلى تقويم Google",
"downloadIcsFile": "تنزيل ملف .ics",
"tryAgain": "حاول مرة أخرى"
},
"filters": {
"heading": "تصفية",
"all": "الكل",
"upcoming": "القادمة",
"ongoing": "جارية",
"completed": "منتهية",
"region": "المنطقة",
"topic": "الموضوع",
"date": "التاريخ",
"author": "الكاتب",
"partner": "المنظمة الشريكة",
"category": "التصنيف",
"year": "السنة",
"clear": "مسح عوامل التصفية",
"apply": "تطبيق عوامل التصفية",
"resultCount": "{count} نتيجة",
"noResults": "لا توجد نتائج.",
"noResultsHint": "جرّب إزالة أحد عوامل التصفية أو البحث عن شيء آخر.",
"sortBy": "الترتيب حسب",
"sortNewest": "الأحدث أولًا",
"sortOldest": "الأقدم أولًا"
},
"search": {
"label": "بحث",
"placeholder": "ابحث في موقع SHARP-ER",
"submit": "بحث",
"clear": "مسح البحث",
"resultsFor": "نتائج البحث عن ”{query}“"
},
"pagination": {
"label": "ترقيم الصفحات",
"previous": "السابق",
"next": "التالي",
"page": "صفحة {page} من {pageCount}",
"goToPage": "الانتقال إلى صفحة {page}",
"showing": "عرض {from}–{to} من {total}"
},
"events": {
"upcoming": "الفعاليات القادمة",
"past": "الفعاليات السابقة",
"dateTime": "التاريخ والوقت",
"location": "الصيغة/الموقع",
"online": "عبر الإنترنت",
"inPerson": "حضوري",
"registrationStatus": "حالة التسجيل",
"statusOpen": "مفتوح",
"statusClosed": "مغلق",
"statusFull": "مكتمل",
"register": "تسجيل",
"joinWaitlist": "الانضمام إلى قائمة الانتظار",
"confirmationTitle": "تم تسجيلك بنجاح",
"confirmationBody": "شكرًا لك — تم تأكيد مكانك في {event} بتاريخ {date}. سنرسل لك تذكيرًا وأي تفاصيل إضافية على البريد الإلكتروني الذي قدّمته.",
"noEvents": "سيتم الإعلان عن الفعاليات القادمة قريباً."
},
"news": {
"tabProject": "أخبار SHARP-ER",
"tabNetwork": "من الشبكة",
"publishedOn": "نُشر بتاريخ {date}",
"postedBy": "نشرته {organisation}",
"partnerPrompt": "هل أنتم منظمة شريكة؟"
},
"resources": {
"fileMeta": "{type} · {size}",
"categoryResearch": "دراسات بحثية واستطلاعية",
"categoryPolicy": "مقالات سياساتية",
"categoryReports": "تقارير المشروع",
"categoryVisibility": "مواد الرؤية وأوراق الحقائق"
},
"opportunities": {
"statusOpen": "مفتوحة",
"statusClosed": "مغلقة",
"deadline": "الموعد النهائي: {date}",
"eligibility": "معايير الأهلية"
},
"form": {
"name": "الاسم",
"organisation": "المنظمة",
"email": "البريد الإلكتروني",
"subject": "الموضوع",
"message": "الرسالة",
"phone": "رقم الهاتف",
"optional": "اختياري",
"required": "مطلوب",
"send": "إرسال",
"sending": "جارٍ الإرسال…",
"sent": "تم إرسال الرسالة",
"errorRequired": "هذا الحقل مطلوب.",
"errorEmail": "أدخل بريدًا إلكترونيًا صالحًا.",
"errorConsent": "يرجى تأكيد الموافقة لإتمام التسجيل.",
"errorGeneric": "حدث خطأ ما. يرجى المحاولة مرة أخرى.",
"errorVerification": "تعذّر إكمال التحقق الأمني. يرجى المحاولة مرة أخرى.",
"verificationUnavailable": "تعذّر تحميل التحقق الأمني. يرجى التأكد من تفعيل JavaScript ثم إعادة تحميل الصفحة.",
"successTitle": "شكرًا لك",
"successBody": "تم إرسال رسالتك. سنعاود التواصل معك في أقرب وقت ممكن."
},
"errors": {
"statusLabel": "خطأ {status}",
"notFoundTitle": "الصفحة غير موجودة",
"notFoundBody": "الصفحة التي تبحث عنها غير موجودة أو تم نقلها.",
"genericTitle": "حدث خطأ ما",
"genericBody": "حدث خطأ غير متوقع. يرجى المحاولة مرة أخرى بعد قليل.",
"detailsLabel": "تفاصيل تقنية"
}
}