feat: add Arabic localization support for editor, launch, settings, shortcuts, timeline, common, and dialogs modules

This commit is contained in:
i1Zeus
2026-05-03 19:49:35 +03:00
parent 78f57970e9
commit 679e306d31
7 changed files with 460 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
{
"actions": {
"cancel": "الغاء",
"save": "حفظ",
"delete": "حذف",
"close": "اغلاق",
"share": "مشاركة",
"done": "تم",
"open": "فتح",
"upload": "رفع",
"export": "تصدير",
"showInFolder": "عرض في المجلد",
"file": "ملف",
"edit": "تعديل",
"view": "عرض",
"window": "نافذة",
"quit": "خروج",
"stopRecording": "ايقاف التسجيل"
},
"playback": {
"play": "تشغيل",
"pause": "ايقاف مؤقت",
"fullscreen": "ملء الشاشة",
"exitFullscreen": "خروج من ملء الشاشة"
},
"locale": {
"name": "عربي",
"short": "AR"
}
}
+70
View File
@@ -0,0 +1,70 @@
{
"export": {
"complete": "اكتمل التصدير",
"yourFormatReady": "{{format}} الخاص بك جاهز",
"showInFolder": "عرض في المجلد",
"finalizingVideo": "جاري إنهاء تصدير الفيديو...",
"compilingGifProgress": "جاري تجميع GIF... {{progress}}%",
"compilingGifWait": "جاري تجميع GIF... قد يستغرق هذا بعض الوقت",
"takeMoment": "قد يستغرق هذا لحظة...",
"failed": "فشل التصدير",
"tryAgain": "يرجى المحاولة مرة أخرى",
"finalizingVideoTitle": "إنهاء الفيديو",
"compilingGif": "تجميع GIF",
"exportingFormat": "تصدير {{format}}",
"compiling": "تجميع",
"renderingFrames": "تصيير الإطارات",
"processing": "جاري المعالجة...",
"finalizing": "جاري الإنهاء...",
"compilingStatus": "جاري التجميع...",
"status": "الحالة",
"format": "الصيغة",
"frames": "الإطارات",
"cancelExport": "إلغاء التصدير",
"savedSuccessfully": "تم حفظ {{format}} بنجاح!"
},
"tutorial": {
"triggerLabel": "كيف يعمل القص",
"title": "كيف يعمل القص",
"description": "فهم كيفية قص الأجزاء غير المرغوب فيها من الفيديو الخاص بك.",
"explanationBefore": "تعمل أداة القص من خلال تحديد المقاطع التي تريد",
"remove": "إزالتها",
"explanationMiddle": " — أي شيء",
"covered": "مغطى",
"explanationAfter": "بمقطع قص أحمر سيتم قصه عند التصدير.",
"visualExample": "مثال مرئي",
"removed": "مُزال",
"kept": "مُحتفظ به",
"part1": "الجزء 1",
"part2": "الجزء 2",
"part3": "الجزء 3",
"finalVideo": "الفيديو النهائي",
"step1Title": "1. إضافة قص",
"step1DescriptionBefore": "اضغط على ",
"step1DescriptionAfter": " أو انقر على أيقونة المقص لتحديد قسم لإزالته.",
"step2Title": "2. تعديل",
"step2Description": "اسحب حواف المنطقة الحمراء لتغطي بالضبط ما تريد قصه."
},
"unsavedChanges": {
"title": "تغييرات غير محفوظة",
"message": "لديك تغييرات غير محفوظة.",
"detail": "هل تريد حفظ مشروعك قبل الإغلاق؟",
"saveAndClose": "حفظ وإغلاق",
"discardAndClose": "تجاهل وإغلاق",
"loadProject": "تحميل مشروع...",
"saveProject": "حفظ المشروع...",
"saveProjectAs": "حفظ المشروع باسم..."
},
"fileDialogs": {
"saveGif": "حفظ GIF المصدر",
"saveVideo": "حفظ الفيديو المصدر",
"selectVideo": "حدد ملف فيديو",
"saveProject": "حفظ مشروع OpenScreen",
"openProject": "فتح مشروع OpenScreen",
"gifImage": "صورة GIF",
"mp4Video": "فيديو MP4",
"videoFiles": "ملفات فيديو",
"openscreenProject": "مشروع OpenScreen",
"allFiles": "جميع الملفات"
}
}
+45
View File
@@ -0,0 +1,45 @@
{
"newRecording": {
"title": "العودة إلى المسجل",
"description": "تم حفظ جلستك الحالية.",
"cancel": "إلغاء",
"confirm": "تأكيد"
},
"loadingVideo": "جاري تحميل الفيديو...",
"errors": {
"noVideoLoaded": "لم يتم تحميل أي فيديو",
"videoNotReady": "الفيديو غير جاهز",
"unableToDetermineSourcePath": "تعذر تحديد مسار الفيديو المصدر",
"failedToSaveGif": "فشل حفظ GIF",
"gifExportFailed": "فشل تصدير GIF",
"failedToSaveVideo": "فشل حفظ الفيديو",
"exportFailed": "فشل التصدير",
"exportFailedWithError": "فشل التصدير: {{error}}",
"exportBackgroundLoadFailed": "فشل التصدير: تعذر تحميل صورة الخلفية ({{url}})",
"failedToSaveExport": "فشل حفظ التصدير",
"failedToSaveExportedVideo": "فشل حفظ الفيديو المصدر",
"failedToRevealInFolder": "خطأ في الكشف في المجلد: {{error}}"
},
"export": {
"canceled": "تم إلغاء التصدير",
"exportedSuccessfully": "تم تصدير {{format}} بنجاح"
},
"project": {
"saveCanceled": "تم إلغاء حفظ المشروع",
"failedToSave": "فشل حفظ المشروع",
"savedTo": "تم حفظ المشروع في {{path}}",
"failedToLoad": "فشل تحميل المشروع",
"invalidFormat": "تنسيق ملف المشروع غير صالح",
"loadedFrom": "تم تحميل المشروع من {{path}}"
},
"recording": {
"failedCameraAccess": "فشل طلب الوصول إلى الكاميرا.",
"cameraBlocked": "الوصول إلى الكاميرا محظور. قم بتمكينه في إعدادات النظام لاستخدام كاميرا الويب.",
"systemAudioUnavailable": "صوت النظام غير متوفر. يتم التسجيل بدون صوت النظام.",
"microphoneDenied": "تم رفض الوصول إلى الميكروفون. سيستمر التسجيل بدون صوت.",
"cameraDenied": "تم رفض الوصول إلى الكاميرا. سيستمر التسجيل بدون كاميرا الويب.",
"cameraDisconnected": "تم فصل كاميرا الويب.",
"cameraNotFound": "لم يتم العثور على كاميرا.",
"permissionDenied": "تم رفض إذن التسجيل. يرجى السماح بتسجيل الشاشة."
}
}
+43
View File
@@ -0,0 +1,43 @@
{
"tooltips": {
"hideHUD": "إخفاء واجهة العرض",
"closeApp": "إغلاق التطبيق",
"restartRecording": "إعادة تشغيل التسجيل",
"cancelRecording": "إلغاء التسجيل",
"pauseRecording": "إيقاف التسجيل مؤقتاً",
"resumeRecording": "استئناف التسجيل",
"openVideoFile": "فتح ملف فيديو",
"openProject": "فتح مشروع"
},
"audio": {
"enableSystemAudio": "تفعيل صوت النظام",
"disableSystemAudio": "تعطيل صوت النظام",
"enableMicrophone": "تفعيل الميكروفون",
"disableMicrophone": "تعطيل الميكروفون",
"defaultMicrophone": "الميكروفون الافتراضي"
},
"webcam": {
"enableWebcam": "تفعيل كاميرا الويب",
"disableWebcam": "تعطيل كاميرا الويب",
"defaultCamera": "الكاميرا الافتراضية",
"searching": "جاري البحث...",
"noneFound": "لم يتم العثور على كاميرا",
"unavailable": "الكاميرا غير متوفرة"
},
"sourceSelector": {
"loading": "جاري تحميل المصادر...",
"screens": "الشاشات ({{count}})",
"windows": "النوافذ ({{count}})",
"defaultSourceName": "الشاشة"
},
"recording": {
"selectSource": "يرجى تحديد مصدر للتسجيل"
},
"language": "اللغة",
"systemLanguagePrompt": {
"title": "هل تريد استخدام لغة نظامك؟",
"description": "اكتشفنا أن {{language}} هي لغة نظامك. هل تريد تبديل OpenScreen إلى {{language}}؟",
"switch": "التبديل إلى {{language}}",
"keepDefault": "الاحتفاظ باللغة الحالية"
}
}
+180
View File
@@ -0,0 +1,180 @@
{
"zoom": {
"level": "مستوى التكبير",
"selectRegion": "حدد منطقة التكبير للتعديل",
"deleteZoom": "حذف التكبير",
"focusMode": {
"title": "وضع التركيز",
"manual": "يدوي",
"auto": "تلقائي",
"autoDescription": "الكاميرا تتبع موضع المؤشر المسجل"
}
},
"speed": {
"playbackSpeed": "سرعة التشغيل",
"selectRegion": "حدد منطقة السرعة للتعديل",
"deleteRegion": "حذف منطقة السرعة",
"customPlaybackSpeed": "سرعة تشغيل مخصصة",
"maxSpeedError": "لا يمكن للسرعة أن تتجاوز 16×"
},
"trim": {
"deleteRegion": "حذف منطقة القص"
},
"layout": {
"title": "التخطيط",
"preset": "الإعداد المسبق",
"selectPreset": "حدد إعدادًا مسبقًا",
"pictureInPicture": "صورة داخل صورة",
"verticalStack": "تكدس عمودي",
"dualFrame": "إطار مزدوج",
"webcamShape": "شكل الكاميرا",
"webcamSize": "حجم كاميرا الويب"
},
"effects": {
"title": "تأثيرات الفيديو",
"blurBg": "تمويه الخلفية",
"motionBlur": "ضبابية الحركة",
"off": "إيقاف",
"shadow": "ظل",
"roundness": "الاستدارة",
"padding": "المسافة البادئة"
},
"background": {
"title": "الخلفية",
"image": "صورة",
"color": "لون",
"gradient": "تدرج لوني",
"uploadCustom": "رفع صورة مخصصة",
"gradientLabel": "تدرج لوني {{index}}",
"colorWheel": "عجلة الألوان",
"colorPalette": "لوحة الألوان"
},
"crop": {
"title": "اقتصاص",
"cropVideo": "اقتصاص الفيديو",
"dragInstruction": "اسحب من كل جانب لضبط منطقة الاقتصاص",
"ratio": "النسبة",
"free": "حر",
"done": "تم",
"lockAspectRatio": "قفل نسبة العرض إلى الارتفاع",
"unlockAspectRatio": "إلغاء قفل نسبة العرض إلى الارتفاع"
},
"exportFormat": {
"mp4": "MP4",
"gif": "GIF",
"mp4Video": "فيديو MP4",
"mp4Description": "ملف فيديو عالي الجودة",
"gifAnimation": "صورة GIF متحركة",
"gifDescription": "صورة متحركة للمشاركة"
},
"exportQuality": {
"title": "جودة التصدير",
"low": "منخفضة",
"medium": "متوسطة",
"high": "عالية"
},
"gifSettings": {
"frameRate": "معدل إطارات GIF",
"size": "حجم GIF",
"loop": "تكرار GIF"
},
"project": {
"save": "حفظ المشروع",
"load": "تحميل المشروع"
},
"export": {
"videoButton": "تصدير الفيديو",
"gifButton": "تصدير GIF",
"chooseSaveLocation": "اختيار موقع الحفظ"
},
"links": {
"reportBug": "الإبلاغ عن خطأ",
"starOnGithub": "إعطاء نجمة على GitHub"
},
"imageUpload": {
"invalidFileType": "نوع ملف غير صالح",
"jpgOnly": "يرجى رفع ملف صورة JPG أو JPEG.",
"uploadSuccess": "تم رفع الصورة المخصصة بنجاح!",
"failedToUpload": "فشل رفع الصورة",
"errorReading": "حدث خطأ أثناء قراءة الملف."
},
"annotation": {
"title": "إعدادات الشروح",
"active": "نشط",
"typeText": "نص",
"typeImage": "صورة",
"typeArrow": "سهم",
"typeBlur": "تمويه",
"textContent": "محتوى النص",
"textPlaceholder": "أدخل النص هنا...",
"fontStyle": "نمط الخط",
"selectStyle": "حدد النمط",
"size": "الحجم",
"customFonts": "خطوط مخصصة",
"textColor": "لون النص",
"background": "الخلفية",
"none": "بدون",
"color": "لون",
"colorWheel": "عجلة الألوان",
"colorPalette": "لوحة الألوان",
"clearBackground": "مسح الخلفية",
"uploadImage": "رفع صورة",
"supportedFormats": "الصيغ المدعومة: JPG, PNG, GIF, WebP",
"arrowDirection": "اتجاه السهم",
"strokeWidth": "عرض الخط: {{width}}px",
"arrowColor": "لون السهم",
"blurType": "نوع التمويه",
"blurTypeBlur": "تمويه",
"blurTypeMosaic": "فسيفساء",
"blurColor": "لون التمويه",
"blurColorWhite": "أبيض",
"blurColorBlack": "أسود",
"blurShape": "شكل التمويه",
"blurIntensity": "كثافة التمويه",
"mosaicBlockSize": "حجم كتلة الفسيفساء",
"blurShapeRectangle": "مستطيل",
"blurShapeOval": "بيضاوي",
"blurShapeFreehand": "رسم حر",
"deleteAnnotation": "حذف الشرح",
"shortcutsAndTips": "اختصارات ونصائح",
"tipMovePlayhead": "انقل رأس التشغيل إلى قسم الشروح المتداخلة وحدد عنصرًا.",
"tipTabCycle": "استخدم Tab للتنقل بين العناصر المتداخلة.",
"tipShiftTabCycle": "استخدم Shift+Tab للتنقل للخلف.",
"invalidImageType": "نوع ملف غير صالح",
"imageFormatsOnly": "يرجى رفع ملف صورة JPG أو PNG أو GIF أو WebP.",
"imageUploadSuccess": "تم رفع الصورة بنجاح!",
"failedImageUpload": "فشل في رفع الصورة"
},
"fontStyles": {
"classic": "كلاسيكي",
"editor": "محرر",
"strong": "قوي",
"typewriter": "آلة كاتبة",
"deco": "ديكو",
"simple": "بسيط",
"modern": "حديث",
"clean": "نظيف"
},
"customFont": {
"dialogTitle": "إضافة خط Google",
"urlLabel": "رابط استيراد خطوط Google",
"urlPlaceholder": "https://fonts.googleapis.com/css2?family=Roboto&display=swap",
"urlHelp": "احصل على هذا من خطوط Google: حدد خطًا → انقر على \"Get font\" → انسخ رابط @import",
"nameLabel": "اسم العرض",
"namePlaceholder": "خطي المخصص",
"nameHelp": "هكذا سيظهر الخط في محدد الخطوط",
"addButton": "إضافة خط",
"addingButton": "جاري الإضافة...",
"errorEmptyUrl": "يرجى إدخال رابط استيراد لخطوط Google",
"errorInvalidUrl": "يرجى إدخال رابط صحيح لخطوط Google",
"errorEmptyName": "يرجى إدخال اسم الخط",
"errorExtractFailed": "تعذر استخراج عائلة الخط من الرابط",
"successMessage": "تم إضافة الخط \"{{fontName}}\" بنجاح",
"failedToAdd": "فشل في إضافة الخط",
"errorTimeout": "استغرق تحميل الخط وقتًا طويلاً. يرجى التحقق من الرابط والمحاولة مرة أخرى.",
"errorLoadFailed": "تعذر تحميل الخط. يرجى التحقق من صحة رابط خطوط Google."
},
"language": {
"title": "اللغة"
}
}
+37
View File
@@ -0,0 +1,37 @@
{
"title": "اختصارات لوحة المفاتيح",
"customize": "تخصيص",
"configurable": "قابل للتكوين",
"fixed": "ثابت",
"pressKey": "اضغط على مفتاح...",
"clickToChange": "انقر للتغيير",
"pressEscToCancel": "اضغط على Esc للإلغاء",
"helpText": "انقر على اختصار ثم اضغط على مجموعة المفاتيح الجديدة. اضغط على Esc للإلغاء.",
"resetToDefaults": "إعادة تعيين إلى الافتراضيات",
"alreadyUsedBy": "مستخدم بالفعل بواسطة {{action}}",
"swap": "تبديل",
"reservedShortcut": "هذا الاختصار محجوز لـ \"{{label}}\" ولا يمكن إعادة تعيينه.",
"savedToast": "تم حفظ اختصارات لوحة المفاتيح",
"resetToast": "إعادة تعيين إلى الاختصارات الافتراضية — انقر فوق حفظ للتطبيق",
"actions": {
"addZoom": "إضافة تكبير",
"addTrim": "إضافة قص",
"addSpeed": "إضافة سرعة",
"addAnnotation": "إضافة شرح",
"addBlur": "إضافة تمويه",
"addKeyframe": "إضافة إطار رئيسي",
"deleteSelected": "حذف المحدد",
"playPause": "تشغيل / إيقاف مؤقت"
},
"fixedActions": {
"undo": "تراجع",
"redo": "إعادة",
"cycleAnnotationsForward": "التنقل بين الشروح للأمام",
"cycleAnnotationsBackward": "التنقل بين الشروح للخلف",
"deleteSelectedAlt": "حذف المحدد (alt)",
"panTimeline": "تحريك المخطط الزمني",
"zoomTimeline": "تكبير المخطط الزمني",
"frameBack": "إطار للخلف",
"frameForward": "إطار للأمام"
}
}
+55
View File
@@ -0,0 +1,55 @@
{
"buttons": {
"addZoom": "إضافة تكبير (Z)",
"suggestZooms": "اقتراح تكبير من المؤشر",
"addTrim": "إضافة قص (T)",
"addAnnotation": "إضافة شرح (A)",
"addBlur": "إضافة تمويه (B)",
"addSpeed": "إضافة سرعة (S)"
},
"hints": {
"pressZoom": "اضغط Z لإضافة تكبير",
"pressTrim": "اضغط T لإضافة قص",
"pressAnnotation": "اضغط A لإضافة شرح",
"pressBlur": "اضغط B لإضافة منطقة تمويه",
"pressSpeed": "اضغط S لإضافة سرعة"
},
"labels": {
"pan": "تحريك",
"zoom": "تكبير",
"trim": "قص",
"speed": "سرعة",
"zoomItem": "تكبير {{index}}",
"trimItem": "قص {{index}}",
"speedItem": "سرعة {{index}}",
"annotationItem": "شرح",
"blurItem": "تمويه {{index}}",
"imageItem": "صورة",
"emptyText": "نص فارغ"
},
"emptyState": {
"noVideo": "لم يتم تحميل أي فيديو",
"dragAndDrop": "اسحب وأفلت مقطع فيديو لبدء التعديل"
},
"errors": {
"cannotPlaceZoom": "لا يمكن وضع التكبير هنا",
"zoomExistsAtLocation": "يوجد تكبير بالفعل في هذا الموقع أو لا توجد مساحة كافية متاحة.",
"zoomSuggestionUnavailable": "معالج اقتراح التكبير غير متوفر",
"noCursorTelemetry": "لا تتوفر بيانات قياس المؤشر",
"noCursorTelemetryDescription": "قم بتسجيل الشاشة أولاً لإنشاء اقتراحات بناءً على المؤشر.",
"noUsableTelemetry": "لا توجد بيانات قياس مؤشر قابلة للاستخدام",
"noUsableTelemetryDescription": "التسجيل لا يتضمن بيانات حركة مؤشر كافية.",
"noDwellMoments": "لم يتم العثور على لحظات توقف واضحة للمؤشر",
"noDwellMomentsDescription": "جرب تسجيلاً مع توقفات مؤشر أبطأ عند الإجراءات المهمة.",
"noAutoZoomSlots": "لا تتوفر خانات تكبير تلقائي",
"noAutoZoomSlotsDescription": "نقاط التوقف المكتشفة تتداخل مع مناطق التكبير الحالية.",
"cannotPlaceTrim": "لا يمكن وضع القص هنا",
"trimExistsAtLocation": "يوجد قص بالفعل في هذا الموقع أو لا توجد مساحة كافية متاحة.",
"cannotPlaceSpeed": "لا يمكن وضع السرعة هنا",
"speedExistsAtLocation": "توجد منطقة سرعة بالفعل في هذا الموقع أو لا توجد مساحة كافية متاحة."
},
"success": {
"addedZoomSuggestions": "تمت إضافة {{count}} اقتراح تكبير بناءً على المؤشر",
"addedZoomSuggestionsPlural": "تمت إضافة {{count}} اقتراحات تكبير بناءً على المؤشر"
}
}