2026-05-15 17:02:49 +08:00
import type { TranslationKeys } from "./en.js" ;
export const ar : TranslationKeys = {
common : {
upload : "رفع من الجهاز" ,
process : "معالجة" ,
download : "تحميل" ,
cancel : "إلغاء" ,
save : "حفظ" ,
delete : "حذف" ,
settings : "الإعدادات" ,
search : "البحث في الأدوات..." ,
dropFiles : "اسحب الملفات هنا أو اضغط على زر الرفع" ,
loading : "جاري التحميل..." ,
error : "حدث خطأ" ,
confirm : "تأكيد" ,
close : "إغلاق" ,
back : "رجوع" ,
next : "التالي" ,
clear : "مسح" ,
copy : "نسخ" ,
copied : "تم النسخ!" ,
noResults : "لا توجد نتائج" ,
showLess : "عرض أقل" ,
showMore : "عرض {count} إضافي" ,
experimental : "تجريبي" ,
enabled : "مفعّل" ,
disabled : "معطّل" ,
rename : "إعادة تسمية" ,
edit : "تعديل" ,
actions : "إجراءات" ,
create : "إنشاء" ,
or : "أو" ,
goHome : "الصفحة الرئيسية" ,
somethingWentWrong : "حدث خطأ ما" ,
unexpectedError : "حدث خطأ غير متوقع." ,
retry : "إعادة المحاولة" ,
privacyPolicy : "سياسة الخصوصية" ,
2026-06-05 22:31:28 +08:00
pageNotFound : "Page not found" ,
2026-06-06 20:47:08 +08:00
pageNotFoundDescription : "The page you are looking for does not exist or has been moved." ,
},
2026-05-15 17:02:49 +08:00
categories : {
essentials : "الأساسيات" ,
optimization : "التحسين" ,
adjustments : "التعديلات" ,
watermark : "العلامة المائية والتراكب" ,
utilities : "الأدوات المساعدة" ,
layout : "التخطيط والتكوين" ,
format : "التنسيق والتحويل" ,
2026-06-13 10:18:49 +08:00
video : "Video" ,
audio : "Audio" ,
documents : "PDF & Documents" ,
data : "Data Files" ,
2026-05-15 17:02:49 +08:00
ai : "أدوات AI" ,
},
2026-06-13 10:18:39 +08:00
modalities : {
image : "Image" ,
video : "Video" ,
audio : "Audio" ,
documentsAndFiles : "Documents & Files" ,
},
2026-05-15 17:02:49 +08:00
tools : {
resize : {
name : "تغيير الحجم" ,
description : "تغيير الحجم بالبكسل أو النسبة المئوية أو قوالب وسائل التواصل" ,
},
crop : {
name : "قص" ,
description : "قص حر، قوالب نسب أبعاد، قص بأشكال" ,
},
rotate : {
name : "تدوير وعكس" ,
description : "تدوير الصور وعكسها وتعديل استقامتها" ,
},
convert : {
name : "تحويل" ,
description : "التحويل بين صيغ الصور" ,
},
compress : {
name : "ضغط" ,
description : "تقليل حجم الملف حسب الجودة أو الحجم المستهدف" ,
},
"optimize-for-web" : {
name : "تحسين للويب" ,
description : "تحسين الصور للويب مع تحويل الصيغة والتحكم بالجودة والمعاينة المباشرة" ,
},
"strip-metadata" : {
name : "إزالة البيانات الوصفية" ,
description : "إزالة بيانات EXIF و GPS ومعلومات الكاميرا" ,
},
"edit-metadata" : {
name : "تعديل البيانات الوصفية" ,
description : "تعديل بيانات EXIF و IPTC و XMP و GPS والكلمات المفتاحية والتواريخ" ,
},
"bulk-rename" : {
name : "إعادة تسمية جماعية" ,
description : "إعادة تسمية ملفات متعددة باستخدام أنماط" ,
},
"image-to-pdf" : {
name : "صورة إلى PDF" ,
description : "دمج الصور في مستند PDF" ,
},
"pdf-to-image" : {
name : "PDF إلى صورة" ,
description : "تحويل صفحات PDF إلى صور" ,
},
favicon : {
name : "مولّد Favicon" ,
description : "إنشاء جميع أحجام Favicon وأيقونات التطبيقات" ,
},
"adjust-colors" : {
name : "تعديل الألوان" ,
description : "السطوع والتباين والتعريض والتشبع ودرجة الحرارة والحدة والتأثيرات" ,
},
sharpening : {
name : "زيادة الحدة" ,
description : "حدة تكيفية وقناع إخفاء الحدة والحدة العالية مع قوالب جاهزة" ,
},
"replace-color" : {
name : "استبدال وعكس الألوان" ,
description : "استبدال ألوان محددة أو عكسها" ,
},
"color-blindness" : {
name : "محاكاة عمى الألوان" ,
description : "محاكاة كيف تبدو الصور لأنواع مختلفة من قصور رؤية الألوان" ,
},
"remove-background" : {
name : "إزالة الخلفية" ,
description : "إزالة الخلفية بتقنية AI" ,
},
upscale : {
name : "تكبير الصور" ,
description : "تحسين الدقة الفائقة بتقنية AI" ,
},
"erase-object" : {
name : "ممحاة الكائنات" ,
description : "إزالة الكائنات غير المرغوبة بتقنية AI" ,
},
ocr : {
name : "OCR / استخراج النصوص" ,
description : "استخراج النصوص من الصور بدقة مدعومة بـ AI" ,
},
2026-06-13 10:19:23 +08:00
"ocr-pdf" : {
name : "OCR للمستندات PDF" ,
description : "استخراج النصوص من مستندات PDF باستخدام OCR مدعوم بـ AI" ,
},
2026-05-15 17:02:49 +08:00
"blur-faces" : {
name : "تمويه الوجوه / المعلومات الحساسة" ,
description : "اكتشاف تلقائي وتمويه الوجوه والمعلومات الحساسة" ,
},
"enhance-faces" : {
name : "تحسين الوجوه" ,
description : "استعادة وتحسين الوجوه بتقنية AI" ,
},
"smart-crop" : {
name : "قص ذكي" ,
description : "قص ذكي حسب الموضوع أو الوجه أو التقليم" ,
},
"image-enhancement" : {
name : "تحسين الصور" ,
description : "تحسين تلقائي بنقرة واحدة مع تصحيح ذكي للتعريض والتباين واللون والحدة" ,
},
"noise-removal" : {
name : "إزالة التشويش" ,
description : "إزالة التشويش والحبيبات بتقنية AI" ,
},
"red-eye-removal" : {
name : "إزالة العين الحمراء" ,
description : "اكتشاف وتصحيح العين الحمراء بتقنية AI لصور الفلاش" ,
},
"restore-photo" : {
name : "استعادة الصور" ,
description : "إصلاح الخدوش والتمزقات والأضرار في الصور القديمة بتقنية AI" ,
},
"content-aware-resize" : {
name : "تغيير حجم ذكي" ,
description : "تغيير حجم الصور بذكاء مع الحفاظ على المحتوى المهم" ,
},
"ai-canvas-expand" : {
name : "توسيع اللوحة بـ AI" ,
description : "توسيع اللوحة مع ملء مدعوم بـ AI" ,
},
colorize : {
name : "تلوين بـ AI" ,
description : "تحويل الصور بالأبيض والأسود إلى صور ملونة باستخدام نماذج التعلم العميق" ,
},
"passport-photo" : {
name : "صورة جواز السفر" ,
description :
"إنشاء صور جواز سفر وتأشيرة وهوية متوافقة مع المتطلبات الحكومية مع اكتشاف تلقائي للوجه" ,
},
2026-06-13 10:19:23 +08:00
"transcribe-audio" : {
name : "تحويل الصوت إلى نص" ,
description : "تحويل الكلام إلى نص باستخدام النسخ المدعوم بالذكاء الاصطناعي" ,
},
"auto-subtitles" : {
name : "ترجمة تلقائية" ,
description : "إنشاء ملفات ترجمة من المسارات الصوتية للفيديو" ,
},
2026-05-15 17:02:49 +08:00
"transparency-fixer" : {
name : "إصلاح شفافية PNG" ,
description : "إصلاح ملفات PNG ذات الشفافية المزيفة بنقرة واحدة" ,
},
2026-06-13 10:19:23 +08:00
"background-replace" : {
name : "استبدال الخلفية" ,
description : "استبدال خلفية الصورة بلون واحد" ,
},
"blur-background" : {
name : "تمويه الخلفية" ,
description : "تمويه الخلفية مع الحفاظ على وضوح الهدف" ,
},
2026-05-15 17:02:49 +08:00
"watermark-text" : {
name : "علامة مائية نصية" ,
description : "إضافة علامة مائية نصية" ,
},
"watermark-image" : {
name : "علامة مائية بصورة" ,
description : "إضافة شعار كعلامة مائية" ,
},
"text-overlay" : {
name : "نص فوق الصورة" ,
description : "إضافة نص منسق فوق الصور" ,
},
compose : {
name : "تركيب الصور" ,
description : "تراكب الصور مع التحكم بالموضع والشفافية" ,
},
"meme-generator" : {
name : "صانع Meme" ,
description :
"إنشاء Meme باستخدام القوالب الشائعة أو صورك الخاصة. نص بنمط Impact الكلاسيكي مع خطوط وألوان ومواضع قابلة للتخصيص." ,
},
info : {
name : "معلومات الصورة" ,
description : "عرض جميع البيانات الوصفية وخصائص الصورة" ,
},
compare : {
name : "مقارنة الصور" ,
description : "مقارنة صورتين جنبًا إلى جنب" ,
},
"find-duplicates" : {
name : "البحث عن المتكررات" ,
description : "اكتشاف الصور المكررة والمتشابهة" ,
},
"color-palette" : {
name : "لوحة الألوان" ,
description : "استخراج الألوان السائدة من الصورة" ,
},
"qr-generate" : {
name : "مولّد رمز QR" ,
description : "إنشاء رموز QR مخصصة بألوان وأنماط وشعارات مميزة" ,
},
2026-06-06 20:47:08 +08:00
"html-to-image" : {
name : "HTML to Image" ,
description : "Capture webpages as high-quality images" ,
},
2026-05-15 17:02:49 +08:00
"barcode-read" : {
name : "قارئ الباركود" ,
description : "مسح الصور بحثًا عن رموز QR والباركود والرموز ثنائية الأبعاد" ,
},
collage : {
name : "صورة مجمّعة / شبكة" ,
description : "دمج الصور في شبكات مجمّعة جميلة مع أكثر من 25 قالبًا" ,
},
stitch : {
name : "دمج / تجميع" ,
description : "ربط الصور جنبًا إلى جنب أو فوق بعضها أو في شبكة" ,
},
split : {
name : "تقسيم الصور" ,
description : "تقسيم الصور إلى مربعات شبكية أو حسب حجم البكسل مع معاينة مباشرة" ,
},
border : {
name : "إطار وحدود" ,
description : "إضافة حدود وحشو وزوايا مستديرة وظلال مع قوالب جاهزة بنقرة واحدة" ,
},
beautify : {
name : "تجميل لقطة الشاشة" ,
description : "إضافة خلفيات متدرجة وإطارات أجهزة وظلال وأحجام وسائل التواصل للقطات الشاشة" ,
},
2026-06-13 10:19:16 +08:00
"circle-crop" : {
name : "Circle Crop" ,
description : "Crop image to a centered circle with transparent corners" ,
},
duotone : {
name : "Duotone" ,
description : "Apply a two-color duotone effect with custom shadow and highlight colors" ,
},
"image-pad" : {
name : "Image Pad" ,
description : "Pad image to a target aspect ratio with a solid color background" ,
},
pixelate : {
name : "Pixelate" ,
description : "Apply a pixelation effect to the full image or a specific region" ,
},
vignette : {
name : "Vignette" ,
description : "Add a vignette effect with adjustable strength and color" ,
},
"gif-webp" : {
name : "GIF/WebP Converter" ,
description : "Convert animated GIF to WebP and vice versa, preserving all frames" ,
},
histogram : {
name : "Histogram" ,
description : "Generate an RGB histogram chart from an image" ,
},
"lqip-placeholder" : {
name : "LQIP Placeholder" ,
description : "Generate a tiny low-quality image placeholder with base64 data URI" ,
},
"sprite-sheet" : {
name : "Sprite Sheet" ,
description : "Combine multiple images into a single sprite sheet grid" ,
},
2026-05-15 17:02:49 +08:00
"svg-to-raster" : {
name : "SVG إلى صورة نقطية" ,
description :
"تحويل SVG إلى PNG أو JPEG أو WebP أو AVIF أو TIFF أو GIF أو HEIF بمقياس و DPI مخصص" ,
},
vectorize : {
name : "صورة إلى SVG" ,
description : "تحويل الصور إلى رسومات متجهية قابلة للتحجيم" ,
},
"gif-tools" : {
name : "أدوات GIF" ,
description :
"تغيير الحجم والتحسين وتغيير السرعة والعكس واستخراج الإطارات وتدوير صور GIF المتحركة" ,
},
"image-to-base64" : {
name : "صورة إلى Base64" ,
description : "تحويل الصور إلى سلاسل Base64 لتضمينها في HTML و CSS والمزيد" ,
},
2026-06-13 10:19:16 +08:00
"barcode-generate" : {
name : "Barcode Generator" ,
description : "Generate barcodes in Code 128, EAN-13, UPC-A, Code 39, ITF-14, and Data Matrix" ,
},
"chart-maker" : {
name : "Chart Maker" ,
description : "Create bar, line, or pie charts from CSV or JSON data" ,
},
2026-06-13 10:18:49 +08:00
"convert-video" : {
name : "Convert Video" ,
description : "Convert videos between MP4, MOV, and WebM" ,
},
"compress-video" : {
name : "Compress Video" ,
description : "Shrink video file size with quality control" ,
},
"trim-video" : {
name : "Trim Video" ,
description : "Cut a clip out of a video" ,
},
"mute-video" : {
name : "Mute Video" ,
description : "Remove the audio track from a video" ,
},
"video-to-gif" : {
name : "Video to GIF" ,
description : "Turn a video clip into an animated GIF" ,
},
2026-06-13 10:19:00 +08:00
"resize-video" : {
name : "Resize Video" ,
description : "Scale a video to a new resolution or preset size" ,
},
"crop-video" : {
name : "Crop Video" ,
description : "Crop a region out of a video" ,
},
"rotate-video" : {
name : "Rotate Video" ,
description : "Rotate or flip a video" ,
},
"change-fps" : {
name : "Change FPS" ,
description : "Change the frame rate of a video" ,
},
"video-color" : {
name : "Video Color" ,
description : "Adjust brightness, contrast, saturation, and gamma" ,
},
"video-speed" : {
name : "Video Speed" ,
description : "Speed up or slow down a video" ,
},
"reverse-video" : {
name : "Reverse Video" ,
description : "Play a video clip backwards" ,
},
"video-loudnorm" : {
name : "Normalize Audio" ,
description : "Normalize video audio volume to broadcast standard" ,
},
"aspect-pad" : {
name : "Aspect Pad" ,
description : "Add solid-color bars to fit a target aspect ratio" ,
},
"blur-pad" : {
name : "Blur Pad" ,
description : "Fill bars with a blurred copy of the video" ,
},
"watermark-video" : {
name : "Watermark Video" ,
description : "Burn a text watermark onto video frames" ,
},
"stabilize-video" : {
name : "Stabilize Video" ,
description : "Reduce camera shake with two-pass stabilization" ,
},
"gif-to-video" : {
name : "GIF to Video" ,
description : "Convert an animated GIF into an MP4 or WebM video" ,
},
"video-to-webp" : {
name : "Video to WebP" ,
description : "Convert a video clip into an animated WebP image" ,
},
"video-to-frames" : {
name : "Video to Frames" ,
description : "Extract frames from a video as a ZIP of images" ,
},
"merge-videos" : {
name : "Merge Videos" ,
description : "Join multiple video clips into one file" ,
},
"replace-audio" : {
name : "Replace Audio" ,
description : "Swap the audio track of a video with another file" ,
},
"burn-subtitles" : {
name : "Burn Subtitles" ,
description : "Permanently render subtitles onto video frames" ,
},
"embed-subtitles" : {
name : "Embed Subtitles" ,
description : "Mux a subtitle track into the video container" ,
},
"extract-subtitles" : {
name : "Extract Subtitles" ,
description : "Pull the subtitle track out of a video as an SRT file" ,
},
"images-to-video" : {
name : "Images to Video" ,
description : "Turn a set of images into a slideshow video" ,
},
"video-metadata" : {
name : "Clean Video Metadata" ,
description : "Strip metadata from a video and report what was found" ,
},
2026-06-13 10:18:49 +08:00
"convert-audio" : {
name : "Convert Audio" ,
description : "Convert audio between MP3, WAV, OGG, and more" ,
},
"trim-audio" : {
name : "Trim Audio" ,
description : "Cut a section out of an audio file" ,
},
"extract-audio" : {
name : "Extract Audio" ,
description : "Pull the audio track out of a video" ,
},
2026-06-13 10:19:06 +08:00
"volume-adjust" : {
name : "Volume Adjust" ,
description : "Increase or decrease audio volume by a fixed gain" ,
},
"normalize-audio" : {
name : "Normalize Audio" ,
description : "Even out loudness to broadcast standard levels" ,
},
"fade-audio" : {
name : "Fade Audio" ,
description : "Add fade-in and fade-out effects to audio" ,
},
"reverse-audio" : {
name : "Reverse Audio" ,
description : "Play audio backwards" ,
},
"audio-speed" : {
name : "Audio Speed" ,
description : "Speed up or slow down audio playback" ,
},
"pitch-shift" : {
name : "Pitch Shift" ,
description : "Raise or lower pitch by semitones without changing speed" ,
},
"audio-channels" : {
name : "Audio Channels" ,
description : "Convert between mono, stereo, or swap left and right channels" ,
},
"silence-removal" : {
name : "Silence Removal" ,
description : "Strip silent sections from audio" ,
},
"noise-reduction" : {
name : "Noise Reduction" ,
description : "Reduce background noise with FFT-based denoising" ,
},
"merge-audio" : {
name : "Merge Audio" ,
description : "Combine multiple audio files into one" ,
},
"split-audio" : {
name : "Split Audio" ,
description : "Split audio by time, equal parts, or silence detection" ,
},
"ringtone-maker" : {
name : "Ringtone Maker" ,
description : "Create a ringtone clip from any audio file" ,
},
"waveform-image" : {
name : "Waveform Image" ,
description : "Generate a waveform visualization as a PNG image" ,
},
"audio-metadata" : {
name : "Audio Metadata" ,
description : "View, edit, or strip audio tags (ID3)" ,
},
2026-06-13 10:18:49 +08:00
"merge-pdf" : {
name : "Merge PDFs" ,
description : "Combine multiple PDFs into one" ,
},
"split-pdf" : {
name : "Split PDF" ,
description : "Extract pages or split into parts" ,
},
"compress-pdf" : {
name : "Compress PDF" ,
description : "Shrink PDF file size" ,
},
"rotate-pdf" : {
name : "Rotate PDF" ,
description : "Rotate pages in a PDF" ,
},
2026-06-13 10:19:11 +08:00
"convert-document" : {
name : "Convert Document" ,
description : "Convert between Word, OpenDocument, RTF, and plain text formats" ,
},
"convert-presentation" : {
name : "Convert Presentation" ,
description : "Convert between PowerPoint and OpenDocument presentation formats" ,
},
"convert-spreadsheet" : {
name : "Convert Spreadsheet" ,
description :
"Convert between Excel, OpenDocument, and CSV formats. Multi-sheet workbooks export the first sheet to CSV." ,
},
"excel-to-pdf" : {
name : "Excel to PDF" ,
description : "Convert spreadsheets to PDF. Wide sheets may paginate across multiple pages." ,
},
2026-06-13 10:18:49 +08:00
"word-to-pdf" : {
name : "Word to PDF" ,
description : "Convert Word documents to PDF" ,
},
2026-06-13 10:18:55 +08:00
"extract-pages" : {
name : "Extract Pages" ,
description : "Pull selected pages into a new PDF" ,
},
"remove-pages" : {
name : "Remove Pages" ,
description : "Delete specific pages from a PDF" ,
},
"organize-pdf" : {
name : "Organize PDF" ,
description : "Reorder pages with an explicit page order" ,
},
"protect-pdf" : {
name : "Protect PDF" ,
description : "Add password protection (AES-256 encryption)" ,
},
"unlock-pdf" : {
name : "Unlock PDF" ,
description : "Remove password protection from a PDF" ,
},
"repair-pdf" : {
name : "Repair PDF" ,
description : "Attempt to repair a damaged or corrupted PDF" ,
},
"linearize-pdf" : {
name : "Web-Optimize PDF" ,
description : "Linearize a PDF for fast web viewing" ,
},
"grayscale-pdf" : {
name : "Grayscale PDF" ,
description : "Convert all colors to grayscale" ,
},
"pdfa-convert" : {
name : "PDF/A Convert" ,
description : "Convert to archival PDF/A-2" ,
},
"crop-pdf" : {
name : "Crop PDF" ,
description : "Crop all pages with a uniform margin" ,
},
"nup-pdf" : {
name : "N-up PDF" ,
description : "Arrange multiple pages per sheet" ,
},
"booklet-pdf" : {
name : "Booklet PDF" ,
description : "Arrange pages for folding into a booklet" ,
},
"watermark-pdf" : {
name : "Watermark PDF" ,
description : "Add a text watermark to every page" ,
},
"pdf-page-numbers" : {
name : "PDF Page Numbers" ,
description : "Add page numbers to every page" ,
},
"flatten-pdf" : {
name : "Flatten PDF" ,
description : "Bake forms and annotations into page content" ,
},
"redact-pdf" : {
name : "Redact PDF" ,
description : "Permanently remove text occurrences (verified true redaction)" ,
},
"pdf-to-text" : {
name : "PDF to Text" ,
description : "Extract plain text from a PDF" ,
},
"pdf-to-word" : {
name : "PDF to Word" ,
description : "Best for text-based PDFs; scanned pages need OCR" ,
},
"pdf-metadata" : {
name : "PDF Metadata" ,
description : "Read and write PDF document metadata" ,
},
2026-06-13 10:19:11 +08:00
"powerpoint-to-pdf" : {
name : "PowerPoint to PDF" ,
description : "Convert presentations to PDF" ,
},
2026-06-13 10:18:55 +08:00
"html-to-pdf" : {
name : "HTML to PDF" ,
description : "Convert an HTML file to PDF. Remote resources are disabled for privacy." ,
},
2026-06-13 10:19:11 +08:00
"markdown-to-docx" : {
name : "Markdown to Word" ,
description : "Convert a Markdown file to a Word document (DOCX)" ,
},
"markdown-to-html" : {
name : "Markdown to HTML" ,
description :
"Convert a Markdown file to a standalone HTML page. Remote images in the source are left as-is in the output." ,
},
2026-06-13 10:18:55 +08:00
"markdown-to-pdf" : {
name : "Markdown to PDF" ,
description :
"Convert a Markdown file to a styled PDF. Remote resources are disabled for privacy." ,
},
2026-06-13 10:19:11 +08:00
"epub-convert" : {
name : "Convert EPUB" ,
description :
"Convert an EPUB to PDF, DOCX, HTML, or Markdown. Remote resources inside the book are not fetched." ,
},
"to-epub" : {
name : "Convert to EPUB" ,
description : "Convert Word, Markdown, HTML, or plain text files to EPUB" ,
},
2026-06-13 10:18:49 +08:00
"csv-excel" : {
name : "CSV to Excel" ,
description : "Convert between CSV and Excel (XLSX), both directions" ,
},
"csv-json" : {
name : "CSV to JSON" ,
description : "Convert between CSV and JSON, both directions" ,
},
"json-xml" : {
name : "JSON to XML" ,
description : "Convert between JSON and XML, both directions" ,
},
"split-csv" : {
name : "Split CSV" ,
description : "Split a CSV into smaller files by row count" ,
},
2026-06-13 10:19:11 +08:00
"merge-csvs" : {
name : "Merge CSVs" ,
description : "Combine multiple CSV or TSV files with matching columns into one" ,
},
"yaml-json" : {
name : "YAML / JSON" ,
description : "Convert between YAML and JSON, both directions" ,
},
"xml-to-csv" : {
name : "XML to CSV" ,
description : "Extract repeating elements from XML into a CSV table" ,
},
"create-zip" : {
name : "Create ZIP" ,
description : "Bundle multiple files into a single ZIP archive" ,
},
"extract-zip" : {
name : "Extract ZIP" ,
description :
"Safely extract files from a ZIP archive with bomb protection. Single-file archives return the file directly." ,
},
2026-05-15 17:02:49 +08:00
pipeline : {
name : "منشئ Pipeline" ,
description : "ربط عدة أدوات في سير عمل واحد" ,
},
2026-06-13 10:17:13 +08:00
processing : { canceled : "Processing canceled" },
2026-06-13 10:18:39 +08:00
mediaPlayer : {
unsupported : "Your browser does not support this media format." ,
},
documentView : {
loadFailed : "Failed to load document." ,
previousPage : "Previous page" ,
nextPage : "Next page" ,
},
2026-05-15 17:02:49 +08:00
},
toolSettings : {
compress : {
compressionMode : "وضع الضغط" ,
targetSize : "الحجم المستهدف" ,
quality : "الجودة" ,
smallestFile : "أصغر ملف" ,
bestQuality : "أفضل جودة" ,
submit : "ضغط" ,
submitBatch : "ضغط ({count} ملف)" ,
progressLabel : "جاري الضغط" ,
original : "الأصلي: {size} KB" ,
processed : "المعالج: {size} KB" ,
saved : "التوفير: {percent}%" ,
},
resize : {
customSize : "حجم مخصص" ,
scale : "مقياس" ,
presets : "قوالب جاهزة" ,
contentAware : "مراعاة المحتوى" ,
widthPx : "العرض (px)" ,
heightPx : "الارتفاع (px)" ,
fitMode : "وضع الملاءمة" ,
cropToFit : "قص للملاءمة" ,
fitInside : "ملاءمة داخلية" ,
stretch : "تمديد" ,
limitToOriginalSize : "تقييد بالحجم الأصلي" ,
limitToOriginalSizeHint :
"إذا كانت صورتك أصغر من الهدف، يتم الإبقاء عليها كما هي بدلًا من تكبيرها" ,
scalePercent : "المقياس (%)" ,
resizeToSquare : "تغيير الحجم إلى مربع" ,
protectFaces : "حماية الوجوه" ,
smoothing : "التنعيم" ,
edgeSensitivity : "حساسية الحواف" ,
submit : "تغيير الحجم" ,
submitBatch : "تغيير الحجم ({count} ملف)" ,
progressLabel : "جاري تغيير الحجم" ,
},
crop : {
aspectRatio : "نسبة الأبعاد" ,
custom : "مخصص" ,
positionAndSize : "الموضع والحجم" ,
ruleOfThirds : "قاعدة الأثلاث" ,
leftOffsetPx : "الإزاحة اليسرى (px)" ,
topOffsetPx : "الإزاحة العلوية (px)" ,
submit : "قص" ,
submitBatch : "قص ({count} ملف)" ,
progressLabel : "جاري القص" ,
},
rotate : {
rotate : "تدوير" ,
angle : "الزاوية" ,
straighten : "تعديل الاستقامة" ,
flip : "عكس" ,
horizontal : "أفقي" ,
vertical : "عمودي" ,
resetAllChanges : "إعادة تعيين جميع التغييرات" ,
submit : "تطبيق" ,
submitBatch : "تطبيق ({count} ملف)" ,
progressLabel : "جاري التطبيق" ,
},
convert : {
targetFormat : "الصيغة المستهدفة" ,
sourceFormat : "الصيغة المصدر" ,
quality : "الجودة" ,
submit : "تحويل" ,
submitBatch : "تحويل ({count} ملف)" ,
progressLabel : "جاري التحويل" ,
},
"optimize-for-web" : {
outputFormat : "صيغة الإخراج" ,
quality : "الجودة" ,
smallestFile : "أصغر ملف" ,
bestQuality : "أفضل جودة" ,
maxDimensions : "الأبعاد القصوى" ,
maxWidth : "العرض الأقصى" ,
maxHeight : "الارتفاع الأقصى" ,
stripMetadata : "إزالة البيانات الوصفية" ,
sizeComparison : "مقارنة الحجم" ,
optimized : "محسّن:" ,
smaller : "أصغر بنسبة {percent}%" ,
larger : "أكبر بنسبة {percent}%" ,
submit : "معالجة وتحميل" ,
submitBatch : "معالجة وتحميل ({count} ملف)" ,
progressLabel : "جاري التحسين" ,
},
"strip-metadata" : {
currentMetadata : "البيانات الوصفية الحالية" ,
readingMetadata : "جاري قراءة البيانات الوصفية..." ,
noMetadataFound : "لا توجد بيانات وصفية في هذه الصورة." ,
removeAllMetadata : "إزالة جميع البيانات الوصفية" ,
selectSpecific : "أو حدد بيانات وصفية محددة:" ,
stripExif : "إزالة EXIF (معلومات الكاميرا والتاريخ والتعريض)" ,
stripGps : "إزالة GPS (بيانات الموقع)" ,
stripIcc : "إزالة ICC (ملف تعريف الألوان)" ,
stripXmp : "إزالة XMP (البيانات الوصفية الموسعة)" ,
locationFound : "تم العثور على الموقع" ,
locationWarning : "تحتوي هذه الصورة على موقعك الدقيق. يُنصح بإزالة بيانات GPS قبل المشاركة." ,
metadataSections : "تم العثور على {count} قسم بيانات وصفية" ,
metadataSectionsPlural : "تم العثور على {count} أقسام بيانات وصفية" ,
metadataRemoved : "تمت إزالة البيانات الوصفية: {size} KB" ,
submit : "إزالة البيانات الوصفية" ,
progressLabel : "جاري إزالة البيانات الوصفية" ,
},
"edit-metadata" : {
readingMetadata : "جاري قراءة البيانات الوصفية..." ,
couldNotReadMetadata : "تعذرت قراءة البيانات الوصفية - ستبدأ الحقول فارغة." ,
basicInfo : "المعلومات الأساسية" ,
description : "الوصف" ,
artist : "الفنان" ,
copyright : "حقوق النشر" ,
software : "البرنامج" ,
iptc : "IPTC" ,
title : "العنوان" ,
headline : "العنوان الرئيسي" ,
city : "المدينة" ,
stateProvince : "الولاية/المقاطعة" ,
country : "البلد" ,
dateAndTime : "التاريخ والوقت" ,
editDates : "تعديل التواريخ" ,
shiftAllDates : "تحريك جميع التواريخ" ,
dateModified : "تاريخ التعديل" ,
dateTaken : "تاريخ الالتقاط" ,
shiftHint : "تحريك جميع حقول التاريخ بفارق زمني (مفيد لتصحيح المنطقة الزمنية)" ,
direction : "الاتجاه" ,
forward : "+ للأمام" ,
backward : "- للخلف" ,
hoursMinutes : "ساعات:دقائق" ,
locationGps : "الموقع (GPS)" ,
locationDataFound : "تم العثور على بيانات الموقع" ,
noGpsData : "لا توجد بيانات GPS. أضف الإحداثيات أدناه." ,
latitude : "خط العرض" ,
longitude : "خط الطول" ,
altitudeMeters : "الارتفاع (بالأمتار)" ,
removeAllGpsData : "إزالة جميع بيانات GPS" ,
keywords : "الكلمات المفتاحية" ,
addKeywordPlaceholder : "أضف كلمة مفتاحية واضغط Enter" ,
addToExisting : "إضافة إلى الموجود" ,
replaceAll : "استبدال الكل" ,
allMetadata : "جميع البيانات الوصفية" ,
templates : "القوالب" ,
templateNamePlaceholder : "اسم القالب" ,
uploadPrompt : "ارفع صورة لتعديل بياناتها الوصفية." ,
changes : "{count} تغييرات:" ,
modified : "{count} معدّل" ,
removed : "{count} محذوف" ,
gpsCleared : "تم مسح GPS" ,
gpsAdded : "تم إضافة GPS" ,
datesShifted : "تم تحريك التواريخ" ,
submit : "تطبيق البيانات الوصفية" ,
progressLabel : "جاري كتابة البيانات الوصفية" ,
},
"bulk-rename" : {
pattern : "النمط" ,
patternHint : "المتغيرات: {{index}}، {{padded}}، {{original}}" ,
startIndex : "فهرس البداية" ,
preview : "معاينة" ,
andMore : "... و {count} إضافي" ,
renaming : "جاري إعادة التسمية..." ,
submit : "إعادة تسمية {count} ملف" ,
zipDownloaded : "تم تحميل ملف ZIP بنجاح" ,
},
"image-to-pdf" : {
imageCount : "سيتم تحويل {count} صورة إلى {mode}" ,
imageCountPlural : "سيتم تحويل {count} صور إلى {mode}" ,
singlePdfMode : "PDF واحد، صورة واحدة لكل صفحة" ,
separatePdfMode : "ملفات PDF منفصلة، واحد لكل صورة" ,
combineAllImages : "دمج جميع الصور في PDF واحد" ,
pageSize : "حجم الصفحة" ,
orientation : "الاتجاه" ,
portrait : "عمودي" ,
landscape : "أفقي" ,
margin : "الهامش" ,
targetSizeLabel : "حجم الملف المستهدف (اختياري)" ,
targetSizePlaceholder : "مثال: 2" ,
targetSizeHint : "اتركه فارغًا للحصول على أقصى جودة" ,
targetSizeMet : "تم تحقيق الهدف" ,
targetSizeNotMet : "تعذر الوصول للحجم المستهدف. تم ضغط الملف بأدنى جودة." ,
targetSizeTooSmall : "يجب أن يكون الهدف 50KB على الأقل" ,
jpegQualityLabel : "جودة JPEG المستخدمة" ,
noImage : "لا توجد صورة" ,
submitCollate : "إنشاء PDF ({count} صفحة)" ,
submitSeparate : "إنشاء {count} ملف PDF" ,
downloadPdf : "تحميل PDF" ,
downloadZip : "تحميل ZIP" ,
progressLabel : "جاري إنشاء PDF" ,
uploadingImages : "جاري رفع الصور..." ,
processingPages : "جاري معالجة {count} صفحة..." ,
},
"pdf-to-image" : {
dropPdf : "اسحب ملف PDF هنا أو اضغط للاختيار" ,
readingPdf : "جاري قراءة PDF..." ,
pageCount : "{count} صفحة" ,
pageCountPlural : "{count} صفحات" ,
outputFormat : "صيغة الإخراج" ,
quality : "الجودة" ,
resolutionDpi : "الدقة (DPI)" ,
dpiScreen : "شاشة" ,
dpiStandard : "قياسي" ,
dpiPrint : "طباعة" ,
dpiHighQuality : "جودة عالية" ,
colorMode : "وضع الألوان" ,
colorModeColor : "ملون" ,
colorModeGrayscale : "رمادي" ,
colorModeBw : "أبيض وأسود" ,
pages : "الصفحات" ,
allPages : "جميع الصفحات" ,
pagesHint : "مثال: 1-3، 5، 8-10 (المستند يحتوي على {count} صفحة)" ,
converting : "جاري التحويل..." ,
submit : "تحويل {count} صفحة" ,
submitPlural : "تحويل {count} صفحات" ,
downloadAllZip : "تحميل الكل (ZIP)" ,
},
favicon : {
uploadHint :
"ارفع صورًا مربعة (يُفضل 512x512 أو أكبر) لإنشاء جميع أحجام Favicon وأيقونات التطبيقات." ,
multipleHint : "كل صورة من الصور {count} تحصل على مجلد خاص في ملف ZIP." ,
generatedSizes : "الأحجام المولّدة (لكل صورة)" ,
plusManifest : "+ manifest.json + مقتطف HTML" ,
submit : "إنشاء Favicons ({count} صورة)" ,
submitPlural : "إنشاء Favicons ({count} صور)" ,
downloadZip : "تحميل ملف Favicons المضغوط" ,
progressLabel : "جاري إنشاء Favicons" ,
},
"adjust-colors" : {
light : "الإضاءة" ,
brightness : "السطوع" ,
contrast : "التباين" ,
exposure : "التعريض" ,
color : "اللون" ,
saturation : "التشبع" ,
temperature : "درجة الحرارة" ,
temperatureHint : "بارد / دافئ" ,
tint : "الصبغة" ,
tintHint : "أخضر / أرجواني" ,
hue : "درجة اللون" ,
detail : "التفاصيل" ,
sharpness : "الحدة" ,
effects : "التأثيرات" ,
none : "بدون" ,
grayscale : "رمادي" ,
sepia : "بني داكن" ,
invert : "عكس" ,
colorChannels : "قنوات الألوان" ,
channelModified : "معدّل" ,
red : "أحمر" ,
green : "أخضر" ,
blue : "أزرق" ,
resetAll : "إعادة تعيين الكل" ,
submit : "تطبيق" ,
submitBatch : "تطبيق ({count} ملف)" ,
progressLabel : "جاري تعديل الألوان" ,
},
sharpening : {
method : "الطريقة" ,
adaptive : "تكيفية" ,
unsharpMask : "قناع إخفاء الحدة" ,
highPass : "الحدة العالية" ,
presets : "قوالب جاهزة" ,
textureAmount : "مقدار الملمس" ,
amount : "المقدار" ,
strength : "القوة" ,
noiseReduction : "تقليل التشويش" ,
off : "إيقاف" ,
lightDenoise : "خفيف" ,
mediumDenoise : "متوسط" ,
strongDenoise : "قوي" ,
advancedControls : "إعدادات متقدمة" ,
radius : "نصف القطر" ,
flatProtection : "حماية المناطق المسطحة" ,
detailThreshold : "عتبة التفاصيل" ,
haloLimitLight : "حد الهالة (فاتح)" ,
haloLimitDark : "حد الهالة (داكن)" ,
threshold : "العتبة" ,
kernelSize : "حجم النواة" ,
submit : "زيادة الحدة" ,
submitBatch : "زيادة الحدة ({count} ملف)" ,
progressLabel : "جاري زيادة الحدة" ,
},
"replace-color" : {
sourceColor : "اللون المصدر (للاستبدال)" ,
targetColor : "اللون المستهدف (البديل)" ,
makeTransparent : "جعله شفافًا بدلًا من ذلك" ,
tolerance : "التسامح" ,
exactMatch : "مطابقة دقيقة" ,
wideRange : "نطاق واسع" ,
submit : "استبدال اللون" ,
submitBatch : "استبدال اللون ({count} ملف)" ,
progressLabel : "جاري استبدال اللون" ,
},
"color-blindness" : {
simulationType : "نوع المحاكاة" ,
redGreen : "أحمر-أخضر" ,
blueYellow : "أزرق-أصفر" ,
monochromatic : "أحادي اللون" ,
submit : "محاكاة" ,
submitBatch : "محاكاة ({count} ملف)" ,
progressLabel : "جاري محاكاة عمى الألوان" ,
},
"remove-background" : {
subject : "الموضوع" ,
people : "أشخاص" ,
products : "منتجات" ,
general : "عام" ,
passportIdPhoto : "صورة جواز سفر / هوية" ,
quality : "الجودة" ,
fast : "سريع" ,
hd : "HD" ,
max : "الأقصى" ,
ultra : "فائق" ,
background : "الخلفية" ,
transparent : "شفاف" ,
bgColor : "لون" ,
gradient : "تدرج" ,
image : "صورة" ,
gradientDirection : "الاتجاه" ,
chooseBackgroundImage : "اختيار صورة خلفية" ,
effectsSection : "التأثيرات" ,
effectsActive : "نشط" ,
blurBackground : "تمويه الخلفية" ,
intensity : "الشدة" ,
addShadow : "إضافة ظل" ,
opacity : "الشفافية" ,
2026-06-05 23:14:57 +08:00
outputFormat : "Output Format" ,
edgeSmoothing : "Edge Smoothing" ,
edgeSmoothingOff : "Off" ,
edgeSmoothingLight : "Light" ,
edgeSmoothingMedium : "Medium" ,
edgeSmoothingStrong : "Strong" ,
colorDecontamination : "Color Decontamination" ,
2026-05-15 17:02:49 +08:00
rendering : "جاري المعالجة..." ,
submit : "إزالة الخلفية" ,
submitBatch : "إزالة الخلفية ({count} ملف)" ,
progressLabel : "جاري إزالة الخلفية" ,
},
upscale : {
scaleFactor : "عامل التكبير" ,
quality : "الجودة" ,
enhanceFaces : "تحسين الوجوه" ,
noiseReduction : "تقليل التشويش" ,
noiseReductionHint :
"تنعيم الحبيبات والتشويش. القيم الأعلى تزيل تشويشًا أكثر لكن قد تخفف التفاصيل." ,
outputFormat : "صيغة الإخراج" ,
submit : "تكبير {scale}x" ,
submitBatch : "تكبير {scale}x ({count} ملف)" ,
progressLabel : "جاري تكبير الصورة" ,
progressLabelBatch : "جاري تكبير {count} صورة" ,
},
"erase-object" : {
brushSize : "حجم الفرشاة" ,
fine : "دقيق" ,
wide : "عريض" ,
undo : "تراجع" ,
clear : "مسح" ,
outputFormat : "صيغة الإخراج" ,
quality : "الجودة" ,
paintHint : "ارسم فوق الكائنات التي تريد إزالتها. استخدم Ctrl+Z للتراجع." ,
submit : "مسح الكائن" ,
submitBatch : "مسح الكل ({count})" ,
progressLabel : "جاري مسح الكائن" ,
},
ocr : {
quality : "الجودة" ,
enhanceBeforeScanning : "تحسين قبل المسح" ,
enhanceHint :
"تعديل الميلان وتحسين التباين وإزالة التشويش وتكبير الصورة تلقائيًا قبل المسح لدقة أفضل." ,
language : "اللغة" ,
autoDetect : "اكتشاف تلقائي" ,
extractedText : "النص المستخرج" ,
noTextDetected : "لم يتم اكتشاف نص في هذه الصورة" ,
characters : "{count} حرف" ,
submit : "استخراج النص" ,
submitBatch : "استخراج النص ({count} ملف)" ,
progressLabel : "جاري استخراج النص" ,
},
2026-06-13 10:19:23 +08:00
"ocr-pdf" : {
quality : "الجودة" ,
language : "اللغة" ,
autoDetect : "اكتشاف تلقائي" ,
pages : "الصفحات" ,
pagesPlaceholder : "all, 1-3, 5" ,
pagesHint : "ادخل ارقام الصفحات او النطاقات (مثال 1-3, 5, 8-10). الحد الاقصى 50 صفحة." ,
submit : "استخراج النص" ,
submitBatch : "استخراج النص ({count} ملف)" ,
progressLabel : "جاري استخراج النص من PDF" ,
},
2026-05-15 17:02:49 +08:00
"blur-faces" : {
blurRadius : "نصف قطر التمويه" ,
blurLight : "خفيف" ,
blurHeavy : "قوي" ,
detectionSensitivity : "حساسية الاكتشاف" ,
moreFaces : "وجوه أكثر" ,
fewerFaces : "وجوه أقل" ,
submit : "تمويه الوجوه" ,
progressLabel : "جاري تمويه الوجوه" ,
},
"enhance-faces" : {
quality : "الجودة" ,
enhancementStrength : "قوة التحسين" ,
onlyCenterFace : "الوجه المركزي فقط" ,
detectionSensitivity : "حساسية الاكتشاف" ,
submit : "تحسين الوجوه" ,
submitBatch : "تحسين الوجوه ({count} ملف)" ,
progressLabel : "جاري تحسين الوجوه" ,
},
"smart-crop" : {
subjectFocus : "التركيز على الموضوع" ,
faceFocus : "التركيز على الوجه" ,
autoTrim : "تقليم تلقائي" ,
customSize : "حجم مخصص" ,
socialPresets : "قوالب وسائل التواصل" ,
detectionStrategy : "استراتيجية الاكتشاف" ,
detectionStrategyHint :
"الانتباه يجد المنطقة الأكثر بروزًا بصريًا. الإنتروبيا تجد المنطقة الأغنى بالتفاصيل والمعلومات." ,
attention : "الانتباه" ,
entropy : "الإنتروبيا" ,
padding : "المساحة الإضافية" ,
paddingHint : "مساحة تنفس إضافية حول منطقة التركيز" ,
outputQuality : "جودة الإخراج" ,
outputQualityHint : "لمخرجات JPEG و WebP. تكون PNG بدون فقدان دائمًا." ,
subjectDescription :
"يكتشف المنطقة الأكثر إثارة للاهتمام باستخدام تحليل البروز ويقص حسب الحجم المستهدف." ,
framing : "التأطير" ,
facePadding : "مساحة حول الوجه" ,
facePaddingHint : "مساحة إضافية حول الوجوه المكتشفة" ,
fewerFalsePositives : "نتائج إيجابية خاطئة أقل" ,
faceDescription :
"يستخدم اكتشاف الوجوه بـ AI للحفاظ على تأطير مناسب للوجوه. يعود إلى التركيز على الموضوع إذا لم يتم اكتشاف وجوه." ,
trimTolerance : "التسامح" ,
trimDescription :
"مقدار اختلاف بكسل الحافة عن لون الحد الذي يظل قابلًا للتقليم. الأعلى = أكثر شدة." ,
padToSquare : "ملء إلى مربع" ,
targetSizePx : "الحجم المستهدف (px)" ,
padColor : "لون الملء" ,
trimHint :
'يزيل الحدود ذات اللون الموحد حول الموضوع. فعّل "ملء إلى مربع" للحصول على صور جاهزة للتجارة الإلكترونية.' ,
submitSubject : "قص ذكي" ,
submitFace : "قص الوجه" ,
submitTrim : "تقليم الحدود" ,
},
imageEnhancement : {
enhancementMode : "وضع التحسين" ,
auto : "تلقائي" ,
portrait : "صورة شخصية" ,
landscape : "منظر طبيعي" ,
lowLight : "إضاءة منخفضة" ,
food : "طعام" ,
document : "مستند" ,
intensity : "الشدة" ,
deepEnhance : "تحسين عميق (AI)" ,
deepEnhanceDescription : "يزيل التشويش والتشوهات باستخدام AI" ,
deepEnhanceRequires : "يتطلب حزمة التكبير والتحسين" ,
analyzingImage : "جاري تحليل الصورة..." ,
detectedIssues : "المشاكل المكتشفة" ,
imageLooksGood : "تبدو الصورة جيدة. اضبط بدقة باستخدام شريط الشدة." ,
issueUnderexposed : "تعريض منخفض" ,
issueOverexposed : "تعريض زائد" ,
issueLowContrast : "تباين ضعيف" ,
issueColorCast : "انحراف لوني" ,
issueDesaturated : "منزوع التشبع" ,
issueSoftFocus : "تركيز ناعم" ,
issueNoisy : "مشوّش" ,
submit : "تحسين" ,
submitDeep : "تحسين عميق" ,
submitBatch : "تحسين ({count} ملف)" ,
submitDeepBatch : "تحسين عميق ({count} ملف)" ,
progressLabel : "جاري تحسين الصورة" ,
progressLabelBatch : "جاري تحسين {count} صورة" ,
},
"noise-removal" : {
denoisingTier : "مستوى إزالة التشويش" ,
quick : "سريع" ,
balanced : "متوازن" ,
quality : "جودة" ,
maximum : "أقصى" ,
quickDesc : "سريع وخفيف" ,
balancedDesc : "جودة جيدة وسرعة معتدلة" ,
qualityDesc : "مدعوم بـ AI، بطيء" ,
maximumDesc : "أفضل نموذج AI، الأبطأ" ,
strength : "القوة" ,
subtle : "خفيف" ,
aggressive : "قوي" ,
detailPreservation : "الحفاظ على التفاصيل" ,
smooth : "سلس" ,
sharp : "حاد" ,
colorNoise : "تشويش لوني" ,
heavy : "قوي" ,
outputFormat : "صيغة الإخراج" ,
gifAiWarning :
"إزالة التشويش بـ AI لملفات GIF تعالج الإطار الأول فقط. للصور المتحركة، استخدم المستوى السريع أو المتوازن." ,
submit : "إزالة التشويش" ,
submitBatch : "إزالة التشويش ({count} ملف)" ,
progressLabel : "جاري إزالة التشويش" ,
progressLabelBatch : "جاري إزالة التشويش من {count} صورة" ,
},
"red-eye-removal" : {
sensitivity : "الحساسية" ,
strict : "صارم" ,
aggressive : "قوي" ,
correctionStrength : "قوة التصحيح" ,
subtle : "خفيف" ,
dark : "داكن" ,
outputFormat : "صيغة الإخراج" ,
quality : "الجودة" ,
submit : "إصلاح العين الحمراء" ,
submitBatch : "إصلاح العين الحمراء ({count} ملف)" ,
progressLabel : "جاري إصلاح العين الحمراء" ,
progressLabelBatch : "جاري إصلاح العين الحمراء في {count} صورة" ,
},
"restore-photo" : {
scratchRemoval : "إزالة الخدوش" ,
scratchRemovalDesc : "اكتشاف وإصلاح الخدوش والتمزقات والبقع" ,
faceEnhancement : "تحسين الوجوه" ,
faceEnhancementDesc : "استعادة الوجوه المتدهورة بتقنية CodeFormer AI" ,
faceFidelity : "دقة الوجه" ,
enhanced : "محسّن" ,
faithful : "مطابق" ,
noiseReduction : "تقليل التشويش" ,
noiseReductionDesc : "إزالة الحبيبات والتشويش من الصور القديمة" ,
denoiseStrength : "قوة إزالة التشويش" ,
autoColorize : "تلوين تلقائي" ,
autoColorizeDesc : "إضافة الألوان للصور بالأبيض والأسود باستخدام DDColor AI" ,
colorizeStrength : "قوة التلوين" ,
vivid : "حيوي" ,
submit : "استعادة الصورة" ,
submitBatch : "استعادة الصور ({count})" ,
progressLabel : "جاري استعادة الصورة" ,
progressLabelBatch : "جاري استعادة {count} صورة" ,
},
"content-aware-resize" : {
widthPx : "العرض (px)" ,
heightPx : "الارتفاع (px)" ,
resizeToSquare : "تغيير الحجم إلى مربع" ,
protectFaces : "حماية الوجوه" ,
protectFacesHint : "اكتشاف وحماية مناطق الوجه من إزالة الخيوط باستخدام اكتشاف الوجوه" ,
smoothing : "التنعيم" ,
edgeSensitivity : "حساسية الحواف" ,
submit : "تغيير الحجم" ,
submitBatch : "تغيير الحجم ({count} ملف)" ,
progressLabel : "تغيير حجم ذكي" ,
},
"ai-canvas-expand" : {
quality : "الجودة" ,
fast : "سريع" ,
balanced : "متوازن" ,
highQuality : "جودة عالية" ,
fastDesc : "معاينة سريعة، تمريرات AI أقل" ,
balancedDesc : "جودة جيدة وسرعة معتدلة" ,
highQualityDesc : "أفضل النتائج، أبطأ" ,
extendToAspectRatio : "توسيع إلى نسبة أبعاد" ,
extendByPixels : "توسيع بمقدار (بالبكسل)" ,
top : "أعلى" ,
right : "يمين" ,
bottom : "أسفل" ,
left : "يسار" ,
newSize : "الحجم الجديد: {width} x {height}" ,
submit : "توسيع اللوحة" ,
submitBatch : "توسيع ({count} ملف)" ,
progressLabel : "جاري توسيع اللوحة" ,
},
colorize : {
aiModel : "نموذج AI" ,
fast : "سريع" ,
fastDesc : "نتائج سريعة" ,
balanced : "متوازن" ,
balancedDesc : "أفضل متاح" ,
best : "الأفضل" ,
bestDesc : "أعلى جودة" ,
colorIntensity : "شدة اللون" ,
grayscaleLabel : "رمادي" ,
subtleLabel : "خفيف" ,
naturalLabel : "طبيعي" ,
vividLabel : "حيوي" ,
intensityHint : "القيم المنخفضة تنتج ألوانًا باهتة بنمط كلاسيكي." ,
strength : "قوة التلوين" ,
submit : "تلوين" ,
submitBatch : "تلوين ({count} ملف)" ,
progressLabel : "جاري التلوين" ,
progressLabelBatch : "جاري تلوين {count} صورة" ,
},
"passport-photo" : {
country : "البلد" ,
searchCountries : "البحث في البلدان..." ,
noCountriesFound : "لم يتم العثور على بلدان" ,
customDimensions : "أبعاد مخصصة" ,
documentType : "نوع المستند" ,
dimensionsMm : "الأبعاد (مم)" ,
dpi : "DPI" ,
pixelsPerInch : "بكسل لكل بوصة" ,
backgroundColor : "لون الخلفية" ,
maxFileSize : "الحجم الأقصى للملف" ,
noLimit : "بدون حد" ,
customKb : "مخصص KB..." ,
uploadPortrait : "ارفع صورة شخصية" ,
uploadHint : "اسحب أو ارفع صورة في اللوحة اليسرى لمعاينة صورة جواز السفر" ,
analyzingPhoto : "جاري تحليل الصورة" ,
detectingLandmarks : "جاري اكتشاف معالم الوجه وإزالة الخلفية..." ,
generatePassportPhoto : "إنشاء صورة جواز السفر" ,
generating : "جاري الإنشاء..." ,
downloadPhoto : "تحميل الصورة" ,
faceCentered : "الوجه في المنتصف" ,
headLevel : "الرأس مستوٍ" ,
lookingStraight : "النظر للأمام مباشرة" ,
faceSize : "حجم الوجه" ,
whatYouSee : "ما تراه هو ما ستحمّله" ,
dragToAdjust : "اسحب للتعديل" ,
scrollToZoom : "مرر للتكبير" ,
photoGenerated : "تم إنشاء الصورة. حمّلها من اللوحة اليسرى." ,
},
2026-06-13 10:19:23 +08:00
"transcribe-audio" : {
language : "اللغة" ,
autoDetect : "اكتشاف تلقائي" ,
outputFormat : "صيغة الإخراج" ,
plainText : "نص عادي" ,
submit : "تحويل إلى نص" ,
submitBatch : "تحويل إلى نص ({count} ملف)" ,
progressLabel : "جاري تحويل الصوت إلى نص" ,
},
"auto-subtitles" : {
language : "اللغة" ,
autoDetect : "اكتشاف تلقائي" ,
format : "صيغة الترجمة" ,
submit : "إنشاء ترجمة" ,
submitBatch : "إنشاء ترجمة ({count} ملف)" ,
progressLabel : "جاري إنشاء الترجمة" ,
},
2026-05-15 17:02:49 +08:00
"transparency-fixer" : {
description : "ارفع ملف PNG بخلفية شفافة مزيفة وسنصلحه بنقرة واحدة." ,
removeWatermark : "إزالة العلامة المائية" ,
removeWatermarkHelp : "اكتشاف وإزالة العلامات المائية شبه الشفافة" ,
requiresEraser : "يتطلب حزمة ممحاة الكائنات" ,
advanced : "متقدم" ,
defringe : "إزالة الهالة" ,
outputFormat : "صيغة الإخراج" ,
submit : "إصلاح الشفافية" ,
submitBatch : "إصلاح الشفافية ({count} ملف)" ,
progressLabel : "جاري إصلاح الشفافية" ,
},
2026-06-13 10:19:23 +08:00
"background-replace" : {
color : "لون الخلفية" ,
submit : "استبدال الخلفية" ,
submitBatch : "استبدال الخلفية ({count} ملفات)" ,
progressLabel : "جاري استبدال الخلفية" ,
},
"blur-background" : {
intensity : "شدة التمويه" ,
submit : "تمويه الخلفية" ,
submitBatch : "تمويه الخلفية ({count} ملفات)" ,
progressLabel : "جاري تمويه الخلفية" ,
},
2026-05-15 17:02:49 +08:00
"watermark-text" : {
watermarkText : "نص العلامة المائية" ,
fontSize : "حجم الخط" ,
color : "اللون" ,
opacity : "الشفافية" ,
position : "الموضع" ,
rotation : "التدوير" ,
center : "الوسط" ,
topLeft : "أعلى اليسار" ,
topRight : "أعلى اليمين" ,
bottomLeft : "أسفل اليسار" ,
bottomRight : "أسفل اليمين" ,
tiled : "متكرر" ,
submit : "إضافة علامة مائية" ,
submitBatch : "إضافة علامة مائية ({count} ملف)" ,
progressLabel : "جاري إضافة العلامة المائية" ,
},
"watermark-image" : {
uploadWatermark : "رفع صورة العلامة المائية" ,
position : "الموضع" ,
opacity : "الشفافية" ,
scale : "المقياس" ,
submit : "تطبيق العلامة المائية" ,
submitBatch : "تطبيق العلامة المائية ({count} ملف)" ,
},
"text-overlay" : {
text : "النص" ,
fontSize : "حجم الخط" ,
color : "اللون" ,
position : "الموضع" ,
top : "أعلى" ,
center : "وسط" ,
bottom : "أسفل" ,
backgroundBox : "مربع الخلفية" ,
backgroundColor : "لون الخلفية" ,
shadow : "ظل" ,
submit : "إضافة نص" ,
submitBatch : "إضافة نص ({count} ملف)" ,
progressLabel : "جاري إضافة النص" ,
2026-06-07 18:27:09 +08:00
download : "Download" ,
defaultText : "Your Text Here" ,
2026-05-15 17:02:49 +08:00
},
compose : {
uploadOverlay : "رفع صورة التراكب" ,
xPosition : "الموضع الأفقي" ,
yPosition : "الموضع العمودي" ,
opacity : "الشفافية" ,
blendMode : "وضع المزج" ,
submit : "تركيب" ,
},
"meme-generator" : {
selectTemplate : "اختر قالبًا من المعرض أو ارفع صورتك الخاصة للبدء." ,
chooseLayout : "اختر تخطيط النص لصورتك المخصصة." ,
textContent : "محتوى النص" ,
textStyle : "نمط النص" ,
font : "الخط" ,
fontSize : "حجم الخط" ,
textColor : "لون النص" ,
strokeColor : "لون الحد" ,
allCaps : "أحرف كبيرة" ,
generate : "إنشاء Meme" ,
generating : "جاري الإنشاء..." ,
downloadMeme : "تحميل Meme" ,
backToGallery : "العودة للمعرض" ,
},
info : {
loadingInfo : "جاري تحميل المعلومات..." ,
filename : "اسم الملف" ,
fileSize : "حجم الملف" ,
dimensions : "الأبعاد" ,
format : "الصيغة" ,
channels : "القنوات" ,
colorSpace : "فضاء الألوان" ,
density : "الكثافة" ,
bitDepth : "عمق البت" ,
progressive : "تدريجي" ,
pages : "الصفحات" ,
hasAlpha : "قناة ألفا" ,
hasProfile : "ملف تعريف" ,
hasExif : "بيانات EXIF" ,
hasIcc : "بيانات ICC" ,
hasXmp : "بيانات XMP" ,
2026-06-07 18:27:09 +08:00
readInfo : "Read Info" ,
reading : "Reading..." ,
channelStats : "Channel Stats" ,
yes : "Yes" ,
no : "No" ,
na : "N/A" ,
failedToRead : "Failed to read info" ,
2026-05-15 17:02:49 +08:00
},
compare : {
uploadSecondImage : "رفع الصورة الثانية" ,
similarity : "التشابه: {percent}%" ,
submit : "مقارنة" ,
downloadDiff : "تحميل الفرق" ,
},
"find-duplicates" : {
preset : "القالب" ,
exact : "مطابق" ,
similar : "متشابه" ,
loose : "تقريبي" ,
exactDesc : "نسخ مطابقة للبكسل، نفس الصورة بصيغ مختلفة." ,
similarDesc : "نسخ معاد تحجيمها أو مضغوطة أو معدلة بشكل طفيف." ,
looseDesc : "صور مرتبطة بصريًا، قص طفيف، تعريض مختلف." ,
threshold : "العتبة" ,
submit : "البحث عن المتكررات" ,
scanning : "جاري المسح..." ,
},
"color-palette" : {
submit : "استخراج لوحة الألوان" ,
extracting : "جاري الاستخراج..." ,
dominantColors : "الألوان السائدة" ,
clickToCopy : "اضغط للنسخ" ,
},
"qr-generate" : {
contentType : "نوع المحتوى" ,
url : "URL" ,
text : "نص" ,
wifi : "WiFi" ,
vcard : "بطاقة جهة اتصال" ,
email : "البريد الإلكتروني" ,
phone : "الهاتف" ,
sms : "SMS" ,
styling : "التنسيق" ,
dotStyle : "نمط النقاط" ,
cornerSquareStyle : "نمط مربعات الزوايا" ,
cornerDotStyle : "نمط نقاط الزوايا" ,
foregroundColor : "لون المقدمة" ,
bgColor : "لون الخلفية" ,
logo : "الشعار" ,
downloadFormat : "صيغة التحميل" ,
submit : "إنشاء رمز QR" ,
download : "تحميل رمز QR" ,
},
2026-06-06 20:47:08 +08:00
"html-to-image" : {
2026-06-06 21:31:05 +08:00
modeUrl : "URL" ,
modeHtml : "HTML File" ,
htmlFile : "HTML File" ,
2026-06-06 20:47:08 +08:00
url : "URL" ,
2026-06-06 21:29:06 +08:00
urlPlaceholder : "https://snapotter.com" ,
2026-06-06 20:47:08 +08:00
format : "Output Format" ,
quality : "Quality" ,
devicePreset : "Device" ,
viewportWidth : "Width" ,
viewportHeight : "Height" ,
fullPage : "Full Page" ,
submit : "Capture" ,
download : "Download Screenshot" ,
capturing : "Capturing webpage..." ,
errorTimeout : "Page took too long to load" ,
errorBlocked : "This URL cannot be captured" ,
errorUnavailable : "Screenshot service is not available" ,
errorFailed : "Failed to capture the page" ,
placeholder : "Enter a URL and click Capture" ,
presets : {
desktop : "Desktop" ,
tablet : "Tablet" ,
mobile : "Mobile" ,
custom : "Custom" ,
},
},
2026-05-15 17:02:49 +08:00
"barcode-read" : {
submit : "مسح الباركود" ,
submitBatch : "مسح ({count} ملف)" ,
scanning : "جاري المسح..." ,
noBarcodesFound : "لم يتم العثور على باركود" ,
barcodesFound : "تم العثور على {count} باركود" ,
barcodesFoundPlural : "تم العثور على {count} باركود" ,
},
collage : {
template : "القالب" ,
aspectRatio : "نسبة الأبعاد" ,
gap : "الفجوة" ,
cornerRadius : "نصف قطر الزوايا" ,
backgroundColor : "لون الخلفية" ,
outputFormat : "صيغة الإخراج" ,
quality : "الجودة" ,
submit : "إنشاء صورة مجمّعة" ,
downloadCollage : "تحميل الصورة المجمّعة" ,
},
stitch : {
direction : "الاتجاه" ,
horizontal : "أفقي" ,
vertical : "عمودي" ,
grid : "شبكة" ,
gridColumns : "أعمدة الشبكة" ,
resizeMode : "وضع تغيير الحجم" ,
fit : "ملاءمة" ,
original : "أصلي" ,
stretchMode : "تمديد" ,
cropMode : "قص" ,
alignment : "المحاذاة" ,
start : "البداية" ,
center : "الوسط" ,
end : "النهاية" ,
gap : "الفجوة" ,
border : "حدود" ,
cornerRadius : "نصف قطر الزوايا" ,
backgroundColor : "لون الخلفية" ,
outputFormat : "صيغة الإخراج" ,
quality : "الجودة" ,
submit : "دمج الصور" ,
},
split : {
modeGrid : "شبكة" ,
modeTileSize : "حجم المربع" ,
presets : "قوالب جاهزة" ,
columns : "أعمدة" ,
rows : "صفوف" ,
tileWidth : "عرض المربع" ,
tileHeight : "ارتفاع المربع" ,
outputFormat : "صيغة الإخراج" ,
quality : "الجودة" ,
submit : "تقسيم الصورة" ,
downloadAll : "تحميل الكل (ZIP)" ,
},
border : {
presets : "قوالب جاهزة" ,
borderWidth : "سمك الحدود" ,
borderColor : "لون الحدود" ,
padding : "الحشو" ,
paddingColor : "لون الحشو" ,
cornerRadius : "نصف قطر الزوايا" ,
shadow : "ظل" ,
shadowBlur : "تمويه الظل" ,
shadowOffsetX : "إزاحة الظل أفقيًا" ,
shadowOffsetY : "إزاحة الظل عموديًا" ,
shadowColor : "لون الظل" ,
shadowOpacity : "شفافية الظل" ,
submit : "إضافة حدود" ,
submitBatch : "إضافة حدود ({count} ملف)" ,
progressLabel : "جاري إضافة الحدود" ,
},
beautify : {
preset : "القالب" ,
backgroundType : "نوع الخلفية" ,
solidColor : "لون صلب" ,
linearGradient : "تدرج خطي" ,
radialGradient : "تدرج شعاعي" ,
customImage : "صورة مخصصة" ,
gradientAngle : "زاوية التدرج" ,
padding : "الحشو" ,
borderRadius : "نصف قطر الحدود" ,
shadowPreset : "قالب الظل" ,
deviceFrame : "إطار الجهاز" ,
submit : "تجميل" ,
submitBatch : "تجميل ({count} ملف)" ,
progressLabel : "جاري تجميل لقطة الشاشة" ,
},
2026-06-13 10:19:16 +08:00
"circle-crop" : {
submit : "Circle Crop" ,
submitBatch : "Circle Crop ({count} files)" ,
progressLabel : "Cropping to circle" ,
},
duotone : {
shadow : "Shadow Color" ,
highlight : "Highlight Color" ,
submit : "Apply Duotone" ,
submitBatch : "Apply Duotone ({count} files)" ,
progressLabel : "Applying duotone" ,
},
"image-pad" : {
target : "Target Ratio" ,
color : "Background Color" ,
submit : "Pad Image" ,
submitBatch : "Pad Image ({count} files)" ,
progressLabel : "Padding image" ,
},
pixelate : {
blockSize : "Block Size" ,
submit : "Pixelate" ,
submitBatch : "Pixelate ({count} files)" ,
progressLabel : "Pixelating" ,
},
vignette : {
strength : "Strength" ,
color : "Vignette Color" ,
submit : "Apply Vignette" ,
submitBatch : "Apply Vignette ({count} files)" ,
progressLabel : "Applying vignette" ,
},
"gif-webp" : {
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting animation" ,
},
histogram : {
submit : "Generate Histogram" ,
submitBatch : "Generate Histogram ({count} files)" ,
progressLabel : "Generating histogram" ,
},
"lqip-placeholder" : {
width : "Width" ,
blur : "Blur" ,
submit : "Generate Placeholder" ,
submitBatch : "Generate Placeholder ({count} files)" ,
progressLabel : "Generating placeholder" ,
},
"sprite-sheet" : {
columns : "Columns" ,
padding : "Padding" ,
background : "Background Color" ,
submit : "Create Sprite Sheet" ,
submitBatch : "Create Sprite Sheet" ,
progressLabel : "Creating sprite sheet" ,
},
2026-05-15 17:02:49 +08:00
"svg-to-raster" : {
outputFormat : "صيغة الإخراج" ,
sizing : "التحجيم" ,
scaleMode : "مقياس" ,
customMode : "مخصص" ,
scalePresets : "قوالب المقياس" ,
dpiPresets : "قوالب DPI" ,
customWidth : "العرض (px)" ,
customHeight : "الارتفاع (px)" ,
background : "الخلفية" ,
bgTransparent : "شفاف" ,
bgColor : "لون" ,
quality : "الجودة" ,
submit : "تحويل SVG" ,
submitBatch : "تحويل ({count} ملف)" ,
progressLabel : "جاري تحويل SVG" ,
},
vectorize : {
preset : "القالب" ,
logo : "شعار" ,
illustration : "رسم توضيحي" ,
photo : "صورة" ,
sketch : "رسم يدوي" ,
customPreset : "مخصص" ,
colorMode : "وضع الألوان" ,
bw : "أبيض وأسود" ,
colorModeColor : "ملون" ,
threshold : "العتبة" ,
colorPrecision : "دقة الألوان" ,
layerDifference : "فرق الطبقات" ,
filterSpeckle : "تصفية البقع" ,
pathMode : "وضع المسار" ,
cornerThreshold : "عتبة الزوايا" ,
invertColors : "عكس الألوان" ,
submit : "تحويل للمتجهات" ,
submitBatch : "تحويل للمتجهات ({count} ملف)" ,
progressLabel : "جاري التحويل للمتجهات" ,
},
"gif-tools" : {
mode : "الوضع" ,
resize : "تغيير الحجم" ,
optimize : "تحسين" ,
speed : "السرعة" ,
reverse : "عكس" ,
extract : "استخراج" ,
rotateMode : "تدوير" ,
pixel : "بكسل" ,
percentage : "نسبة مئوية" ,
colors : "الألوان" ,
dither : "التمويج" ,
effort : "الجهد" ,
speedFactor : "عامل السرعة" ,
loopControl : "التحكم بالتكرار" ,
infinite : "لا نهائي" ,
once : "مرة واحدة" ,
customLoop : "مخصص" ,
loopCount : "عدد التكرارات" ,
extractSingle : "مفرد" ,
extractRange : "نطاق" ,
extractAll : "الكل" ,
frameNumber : "رقم الإطار" ,
frameStart : "إطار البداية" ,
frameEnd : "إطار النهاية" ,
extractFormat : "الصيغة" ,
submit : "معالجة GIF" ,
submitBatch : "معالجة ({count} ملف)" ,
progressLabel : "جاري معالجة GIF" ,
},
"image-to-base64" : {
outputFormat : "صيغة الإخراج" ,
keepOriginal : "الإبقاء على الأصلي" ,
quality : "الجودة" ,
maxWidth : "العرض الأقصى" ,
maxHeight : "الارتفاع الأقصى" ,
submit : "تحويل إلى Base64" ,
submitBatch : "تحويل ({count} ملف)" ,
copyBase64 : "نسخ Base64" ,
copyDataUri : "نسخ Data URI" ,
copyImgTag : "نسخ وسم <img>" ,
copyCssUrl : "نسخ CSS url()" ,
},
2026-06-13 10:19:16 +08:00
"barcode-generate" : {
text : "Text" ,
type : "Barcode Type" ,
scale : "Scale" ,
includeText : "Include Text" ,
submit : "Generate Barcode" ,
download : "Download Barcode" ,
},
"chart-maker" : {
kind : "Chart Type" ,
title : "Title" ,
width : "Width" ,
height : "Height" ,
submit : "Create Chart" ,
submitBatch : "Create Chart ({count} files)" ,
progressLabel : "Creating chart" ,
},
2026-05-15 17:02:49 +08:00
"enhance-faces-standalone" : {
model : "النموذج" ,
fast : "سريع" ,
balanced : "متوازن" ,
best : "الأفضل" ,
},
2026-06-13 10:18:49 +08:00
"convert-video" : {
format : "Output format" ,
quality : "Quality" ,
high : "High" ,
balanced : "Balanced" ,
small : "Smallest" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"compress-video" : {
quality : "Compression" ,
light : "Light" ,
balanced : "Balanced" ,
strong : "Strong" ,
resolution : "Resolution" ,
original : "Original" ,
submit : "Compress" ,
submitBatch : "Compress ({count} files)" ,
progressLabel : "Compressing" ,
},
"trim-video" : {
start : "Start (seconds)" ,
end : "End (seconds)" ,
precise : "Frame-accurate (re-encodes)" ,
submit : "Trim" ,
submitBatch : "Trim ({count} files)" ,
progressLabel : "Trimming" ,
},
"mute-video" : {
submit : "Remove audio" ,
submitBatch : "Remove audio ({count} files)" ,
progressLabel : "Muting" ,
},
"video-to-gif" : {
fps : "Frames per second" ,
width : "Width (px)" ,
start : "Start (seconds)" ,
duration : "Duration (seconds)" ,
submit : "Create GIF" ,
submitBatch : "Create GIFs ({count} files)" ,
progressLabel : "Creating GIF" ,
},
2026-06-13 10:19:00 +08:00
"resize-video" : {
preset : "Preset" ,
width : "Width (px)" ,
height : "Height (px)" ,
hint : "Leave one dimension empty to keep aspect ratio" ,
submit : "Resize" ,
submitBatch : "Resize ({count} files)" ,
progressLabel : "Resizing" ,
},
"crop-video" : {
width : "Width (px)" ,
height : "Height (px)" ,
x : "X offset" ,
y : "Y offset" ,
submit : "Crop" ,
submitBatch : "Crop ({count} files)" ,
progressLabel : "Cropping" ,
},
"rotate-video" : {
transform : "Transform" ,
cw90 : "Rotate 90 clockwise" ,
ccw90 : "Rotate 90 counter-clockwise" ,
rotate180 : "Rotate 180" ,
hflip : "Flip horizontal" ,
vflip : "Flip vertical" ,
submit : "Rotate" ,
submitBatch : "Rotate ({count} files)" ,
progressLabel : "Rotating" ,
},
"change-fps" : {
fps : "Frames per second" ,
submit : "Change FPS" ,
submitBatch : "Change FPS ({count} files)" ,
progressLabel : "Changing FPS" ,
},
"video-color" : {
brightness : "Brightness" ,
contrast : "Contrast" ,
saturation : "Saturation" ,
gamma : "Gamma" ,
submit : "Apply" ,
submitBatch : "Apply ({count} files)" ,
progressLabel : "Adjusting color" ,
},
"video-speed" : {
factor : "Speed factor" ,
keepPitch : "Keep original pitch" ,
submit : "Change speed" ,
submitBatch : "Change speed ({count} files)" ,
progressLabel : "Changing speed" ,
},
"reverse-video" : {
hint : "Limited to clips up to 5 minutes" ,
submit : "Reverse" ,
submitBatch : "Reverse ({count} files)" ,
progressLabel : "Reversing" ,
},
"video-loudnorm" : {
hint : "Normalizes audio to EBU R128 broadcast standard" ,
submit : "Normalize" ,
submitBatch : "Normalize ({count} files)" ,
progressLabel : "Normalizing" ,
},
"aspect-pad" : {
target : "Target ratio" ,
color : "Background color" ,
colorHint : "Hex color, e.g. #000000" ,
submit : "Pad" ,
submitBatch : "Pad ({count} files)" ,
progressLabel : "Padding" ,
},
"blur-pad" : {
target : "Target ratio" ,
blur : "Blur strength" ,
submit : "Pad" ,
submitBatch : "Pad ({count} files)" ,
progressLabel : "Padding" ,
},
"watermark-video" : {
text : "Watermark text" ,
position : "Position" ,
fontSize : "Font size" ,
opacity : "Opacity" ,
color : "Color" ,
colorHint : "Hex color, e.g. #ffffff" ,
submit : "Watermark" ,
submitBatch : "Watermark ({count} files)" ,
progressLabel : "Watermarking" ,
},
"stabilize-video" : {
smoothing : "Smoothing" ,
hint : "Runs two passes and takes longer than most tools" ,
submit : "Stabilize" ,
submitBatch : "Stabilize ({count} files)" ,
progressLabel : "Stabilizing" ,
},
"gif-to-video" : {
format : "Output format" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"video-to-webp" : {
fps : "Frames per second" ,
width : "Width (px)" ,
quality : "Quality" ,
loop : "Loop animation" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"video-to-frames" : {
mode : "Extraction mode" ,
modeAll : "All frames" ,
modeNth : "Every Nth frame" ,
modeTimestamps : "Specific timestamps" ,
n : "Take every Nth frame" ,
timestamps : "Timestamps (seconds)" ,
timestampsHint : "Comma-separated, e.g. 0.5, 2, 4.5" ,
format : "Image format" ,
submit : "Extract Frames" ,
submitBatch : "Extract Frames ({count} files)" ,
progressLabel : "Extracting frames" ,
},
"merge-videos" : {
hint : "Files are joined in upload order" ,
submit : "Merge" ,
submitBatch : "Merge ({count} files)" ,
progressLabel : "Merging" ,
},
"replace-audio" : {
hint : "Upload the video first, then the audio" ,
submit : "Replace Audio" ,
submitBatch : "Replace Audio ({count} files)" ,
progressLabel : "Replacing audio" ,
},
"burn-subtitles" : {
fontSize : "Font size" ,
hint : "Upload a video and a subtitle file (.srt or .vtt)" ,
submit : "Burn Subtitles" ,
submitBatch : "Burn Subtitles ({count} files)" ,
progressLabel : "Burning subtitles" ,
},
"embed-subtitles" : {
language : "Language code" ,
languageHint : "Three-letter ISO 639-2 code, e.g. eng, spa, fra" ,
submit : "Embed Subtitles" ,
submitBatch : "Embed Subtitles ({count} files)" ,
progressLabel : "Embedding subtitles" ,
},
"extract-subtitles" : {
submit : "Extract Subtitles" ,
submitBatch : "Extract Subtitles ({count} files)" ,
progressLabel : "Extracting subtitles" ,
},
"images-to-video" : {
secondsPerImage : "Seconds per image" ,
resolution : "Resolution" ,
fps : "Frames per second" ,
submit : "Create Video" ,
submitBatch : "Create Video ({count} files)" ,
progressLabel : "Creating slideshow" ,
},
"video-metadata" : {
hint : "Metadata report appears in the result" ,
submit : "Strip Metadata" ,
submitBatch : "Strip Metadata ({count} files)" ,
progressLabel : "Stripping metadata" ,
},
2026-06-13 10:18:49 +08:00
"convert-audio" : {
format : "Output format" ,
bitrate : "Bitrate (kbps)" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"trim-audio" : {
start : "Start (seconds)" ,
end : "End (seconds)" ,
submit : "Trim" ,
submitBatch : "Trim ({count} files)" ,
progressLabel : "Trimming" ,
},
"extract-audio" : {
format : "Output format" ,
submit : "Extract" ,
submitBatch : "Extract ({count} files)" ,
progressLabel : "Extracting" ,
},
2026-06-13 10:19:06 +08:00
"volume-adjust" : {
"gain-db" : "Gain (dB)" ,
submit : "Adjust Volume" ,
submitBatch : "Adjust Volume ({count} files)" ,
progressLabel : "Adjusting volume" ,
},
"normalize-audio" : {
hint : "EBU R128 loudness normalization" ,
submit : "Normalize" ,
submitBatch : "Normalize ({count} files)" ,
progressLabel : "Normalizing" ,
},
"fade-audio" : {
"fade-in-s" : "Fade in (seconds)" ,
"fade-out-s" : "Fade out (seconds)" ,
submit : "Apply Fade" ,
submitBatch : "Apply Fade ({count} files)" ,
progressLabel : "Applying fade" ,
},
"reverse-audio" : {
submit : "Reverse" ,
submitBatch : "Reverse ({count} files)" ,
progressLabel : "Reversing" ,
},
"audio-speed" : {
factor : "Speed factor" ,
submit : "Change Speed" ,
submitBatch : "Change Speed ({count} files)" ,
progressLabel : "Changing speed" ,
},
"pitch-shift" : {
semitones : "Semitones" ,
hint : "0 semitones is not allowed" ,
submit : "Shift Pitch" ,
submitBatch : "Shift Pitch ({count} files)" ,
progressLabel : "Shifting pitch" ,
},
"audio-channels" : {
mode : "Channel mode" ,
"stereo-to-mono" : "Stereo to mono" ,
"mono-to-stereo" : "Mono to stereo" ,
swap : "Swap left/right" ,
submit : "Convert Channels" ,
submitBatch : "Convert Channels ({count} files)" ,
progressLabel : "Converting channels" ,
},
"silence-removal" : {
"threshold-db" : "Silence threshold (dB)" ,
"min-silence-s" : "Minimum silence duration (seconds)" ,
submit : "Remove Silence" ,
submitBatch : "Remove Silence ({count} files)" ,
progressLabel : "Removing silence" ,
},
"noise-reduction" : {
strength : "Strength" ,
light : "Light" ,
medium : "Medium" ,
strong : "Strong" ,
submit : "Reduce Noise" ,
submitBatch : "Reduce Noise ({count} files)" ,
progressLabel : "Reducing noise" ,
},
"merge-audio" : {
format : "Output format" ,
mp3 : "MP3" ,
wav : "WAV" ,
flac : "FLAC" ,
m4a : "M4A" ,
"order-hint" : "Files will be joined in upload order" ,
submit : "Merge Audio" ,
submitBatch : "Merge Audio ({count} files)" ,
progressLabel : "Merging audio" ,
},
"split-audio" : {
mode : "Split mode" ,
time : "By time" ,
parts : "Equal parts" ,
silence : "By silence" ,
"segment-s" : "Segment length (seconds)" ,
"num-parts" : "Number of parts" ,
"threshold-db" : "Silence threshold (dB)" ,
"min-silence-s" : "Minimum silence duration (seconds)" ,
submit : "Split Audio" ,
submitBatch : "Split Audio ({count} files)" ,
progressLabel : "Splitting audio" ,
},
"ringtone-maker" : {
"start-s" : "Start time (seconds)" ,
"duration-s" : "Duration (seconds)" ,
"max-hint" : "Maximum 30 seconds" ,
submit : "Create Ringtone" ,
submitBatch : "Create Ringtone ({count} files)" ,
progressLabel : "Creating ringtone" ,
},
"waveform-image" : {
width : "Width (px)" ,
height : "Height (px)" ,
color : "Waveform color" ,
submit : "Generate Waveform" ,
submitBatch : "Generate Waveform ({count} files)" ,
progressLabel : "Generating waveform" ,
},
"audio-metadata" : {
strip : "Strip all metadata" ,
title : "Title" ,
artist : "Artist" ,
album : "Album" ,
submit : "Apply Metadata" ,
submitBatch : "Apply Metadata ({count} files)" ,
progressLabel : "Applying metadata" ,
},
2026-06-13 10:18:49 +08:00
"merge-pdf" : {
addFiles : "Add PDFs to merge" ,
needTwo : "At least two PDFs are required" ,
orderHint : "{count} PDFs will merge in this order" ,
submit : "Merge" ,
submitBatch : "Merge ({count} files)" ,
progressLabel : "Merging" ,
},
"split-pdf" : {
mode : "Split mode" ,
range : "Page range" ,
rangeHint : "e.g. 1-3, 5, 7-z" ,
everyN : "Pages per part" ,
submit : "Split" ,
submitBatch : "Split ({count} files)" ,
progressLabel : "Splitting" ,
},
"compress-pdf" : {
preset : "Quality preset" ,
screen : "Screen (smallest)" ,
ebook : "Ebook (balanced)" ,
printer : "Printer (best quality)" ,
submit : "Compress" ,
submitBatch : "Compress ({count} files)" ,
progressLabel : "Compressing" ,
},
"rotate-pdf" : {
angle : "Rotation angle" ,
range : "Page range" ,
rangeHint : "e.g. 1-3, 5, 1-z (all pages)" ,
submit : "Rotate" ,
submitBatch : "Rotate ({count} files)" ,
progressLabel : "Rotating" ,
},
2026-06-13 10:19:11 +08:00
"convert-document" : {
format : "Output format" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"convert-presentation" : {
format : "Output format" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"convert-spreadsheet" : {
format : "Output format" ,
hint : "Multi-sheet workbooks export the first sheet to CSV." ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"excel-to-pdf" : {
submit : "Convert to PDF" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"powerpoint-to-pdf" : {
submit : "Convert to PDF" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
2026-06-13 10:18:49 +08:00
"word-to-pdf" : {
submit : "Convert to PDF" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
2026-06-13 10:18:55 +08:00
"extract-pages" : {
range : "Page range" ,
rangeHint : "e.g. 1-3, 5, 7-z" ,
submit : "Extract" ,
submitBatch : "Extract ({count} files)" ,
progressLabel : "Extracting" ,
},
"remove-pages" : {
pages : "Pages to remove" ,
pagesHint : "e.g. 2, 4-6, z (last page)" ,
submit : "Remove" ,
submitBatch : "Remove ({count} files)" ,
progressLabel : "Removing" ,
},
"organize-pdf" : {
order : "Page order" ,
orderHint : "e.g. 3,1,2 or 1-z (identity)" ,
submit : "Reorder" ,
submitBatch : "Reorder ({count} files)" ,
progressLabel : "Reordering" ,
},
"protect-pdf" : {
userPassword : "User password" ,
ownerPassword : "Owner password (optional)" ,
ownerPasswordHint : "Defaults to user password if empty" ,
submit : "Protect" ,
submitBatch : "Protect ({count} files)" ,
progressLabel : "Encrypting" ,
},
"unlock-pdf" : {
password : "Password" ,
submit : "Unlock" ,
submitBatch : "Unlock ({count} files)" ,
progressLabel : "Decrypting" ,
},
"repair-pdf" : {
submit : "Repair" ,
submitBatch : "Repair ({count} files)" ,
progressLabel : "Repairing" ,
},
"linearize-pdf" : {
submit : "Optimize" ,
submitBatch : "Optimize ({count} files)" ,
progressLabel : "Linearizing" ,
},
"grayscale-pdf" : {
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"pdfa-convert" : {
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"crop-pdf" : {
margin : "Margin (points)" ,
submit : "Crop" ,
submitBatch : "Crop ({count} files)" ,
progressLabel : "Cropping" ,
},
"nup-pdf" : {
perSheet : "Pages per sheet" ,
submit : "Arrange" ,
submitBatch : "Arrange ({count} files)" ,
progressLabel : "Arranging" ,
},
"booklet-pdf" : {
perSheet : "Pages per sheet" ,
submit : "Create Booklet" ,
submitBatch : "Create Booklet ({count} files)" ,
progressLabel : "Creating booklet" ,
},
"watermark-pdf" : {
text : "Watermark text" ,
position : "Position" ,
fontSize : "Font size" ,
opacity : "Opacity" ,
rotation : "Rotation" ,
submit : "Watermark" ,
submitBatch : "Watermark ({count} files)" ,
progressLabel : "Watermarking" ,
},
"pdf-page-numbers" : {
position : "Position" ,
fontSize : "Font size" ,
submit : "Add Numbers" ,
submitBatch : "Add Numbers ({count} files)" ,
progressLabel : "Numbering" ,
},
"flatten-pdf" : {
submit : "Flatten" ,
submitBatch : "Flatten ({count} files)" ,
progressLabel : "Flattening" ,
},
"redact-pdf" : {
terms : "Terms to redact" ,
termsHint : "One term per line (max 50)" ,
caseSensitive : "Case sensitive" ,
submit : "Redact" ,
submitBatch : "Redact ({count} files)" ,
progressLabel : "Redacting" ,
},
"pdf-to-text" : {
submit : "Extract Text" ,
submitBatch : "Extract Text ({count} files)" ,
progressLabel : "Extracting" ,
},
"pdf-to-word" : {
hint : "Best for text-based PDFs; scanned pages need OCR" ,
submit : "Convert to Word" ,
submitBatch : "Convert to Word ({count} files)" ,
progressLabel : "Converting" ,
},
"pdf-metadata" : {
title : "Title" ,
author : "Author" ,
subject : "Subject" ,
keywords : "Keywords" ,
submit : "Set Metadata" ,
submitBatch : "Set Metadata ({count} files)" ,
progressLabel : "Setting metadata" ,
},
"html-to-pdf" : {
hint : "Remote resources are disabled for privacy." ,
submit : "Convert to PDF" ,
submitBatch : "Convert to PDF ({count} files)" ,
progressLabel : "Converting" ,
},
2026-06-13 10:19:11 +08:00
"markdown-to-docx" : {
submit : "Convert to DOCX" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"markdown-to-html" : {
hint : "Remote images in the source are left as-is in the output." ,
submit : "Convert to HTML" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
2026-06-13 10:18:55 +08:00
"markdown-to-pdf" : {
hint : "Remote resources are disabled for privacy." ,
submit : "Convert to PDF" ,
submitBatch : "Convert to PDF ({count} files)" ,
progressLabel : "Converting" ,
},
2026-06-13 10:19:11 +08:00
"epub-convert" : {
format : "Output format" ,
hint : "Remote resources inside the book are not fetched." ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"to-epub" : {
submit : "Convert to EPUB" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
2026-06-13 10:18:49 +08:00
"csv-excel" : {
sheet : "Worksheet number" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"csv-json" : {
pretty : "Pretty print" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"json-xml" : {
pretty : "Pretty print" ,
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"split-csv" : {
rowsPerFile : "Rows per file" ,
keepHeader : "Keep header in each file" ,
submit : "Split" ,
submitBatch : "Split ({count} files)" ,
progressLabel : "Splitting" ,
},
2026-06-13 10:19:11 +08:00
"merge-csvs" : {
submit : "Merge" ,
submitBatch : "Merge ({count} files)" ,
progressLabel : "Merging" ,
},
"yaml-json" : {
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"xml-to-csv" : {
submit : "Convert" ,
submitBatch : "Convert ({count} files)" ,
progressLabel : "Converting" ,
},
"create-zip" : {
submit : "Create ZIP" ,
submitBatch : "Create ZIP ({count} files)" ,
progressLabel : "Zipping" ,
},
"extract-zip" : {
submit : "Extract" ,
submitBatch : "Extract ({count} files)" ,
progressLabel : "Extracting" ,
},
2026-05-15 17:02:49 +08:00
},
urlImport : {
title : "استيراد من روابط" ,
placeholder : "الصق روابط الصور، رابط واحد في كل سطر..." ,
importButton : "استيراد الروابط" ,
addButton : "إضافة {count} ملف" ,
adding : "جاري الإضافة..." ,
retryButton : "إعادة المحاولة" ,
cancelButton : "إلغاء" ,
readyCount : "{count} جاهز" ,
failedStatus : "فشل" ,
},
comparison : {
original : "الأصلي" ,
processed : "المعالج" ,
before : "قبل" ,
after : "بعد" ,
savings : "التوفير" ,
},
toolPage : {
emptyPrompt : "اسحب أو ارفع صورة للبدء" ,
filesCount : "الملفات ({count})" ,
addMore : "+ إضافة المزيد" ,
clearAll : "مسح الكل" ,
acceptDescription : "ملفات {exts} فقط" ,
notFound : "الأداة غير موجودة" ,
configureAndGenerate : "اضبط الإعدادات ثم ابدأ الإنشاء." ,
processingFailed : "فشلت المعالجة لهذا الملف" ,
conversionComplete : "اكتملت عملية التحويل" ,
cannotPreviewDownload : "لا يمكن معاينة ملفات {type} في المتصفح. استخدم زر التحميل لحفظ ملفك." ,
generatingPreview : "جاري إنشاء المعاينة..." ,
cannotPreviewWillProcess :
"لا يمكن معاينة ملفات {ext} في المتصفح. ستتم معالجة الملف بشكل طبيعي." ,
previousImage : "الصورة السابقة" ,
nextImage : "الصورة التالية" ,
imageCounter : "{current} / {total}" ,
settingsLabel : "الإعدادات" ,
downloadAllZip : "تحميل الكل (ZIP)" ,
hideSettings : "إخفاء الإعدادات" ,
imageArea : "منطقة الصورة" ,
},
homePage : {
generatingPreview : "جاري إنشاء المعاينة..." ,
loadingPreview : "جاري تحميل المعاينة..." ,
changeFile : "تغيير الملف" ,
quickActions : "إجراءات سريعة" ,
allTools : "جميع الأدوات" ,
},
fullscreenGrid : {
searchPlaceholder : "البحث في الأدوات..." ,
hideDetails : "إخفاء التفاصيل" ,
showDetails : "عرض التفاصيل" ,
switchToSidebar : "التبديل إلى عرض الشريط الجانبي" ,
sidebarButton : "الشريط الجانبي" ,
noToolsFound : "لم يتم العثور على أدوات" ,
tryDifferent : "جرّب مصطلح بحث مختلف" ,
},
editor : {
menu : {
file : {
label : "ملف" ,
new : "جديد" ,
open : "فتح" ,
save : "حفظ" ,
exportAs : "تصدير كـ..." ,
quickExportPng : "تصدير سريع كـ PNG" ,
close : "إغلاق" ,
},
edit : {
label : "تعديل" ,
undo : "تراجع" ,
redo : "إعادة" ,
cut : "قص" ,
copy : "نسخ" ,
copyMerged : "نسخ مدمج" ,
paste : "لصق" ,
pasteInPlace : "لصق في المكان" ,
delete : "حذف" ,
freeTransform : "تحويل حر" ,
transform : {
label : "تحويل" ,
scale : "تحجيم" ,
rotate : "تدوير" ,
skew : "إمالة" ,
flipHorizontal : "عكس أفقي" ,
flipVertical : "عكس عمودي" ,
},
},
image : {
label : "صورة" ,
imageSize : "حجم الصورة..." ,
canvasSize : "حجم اللوحة..." ,
rotation : {
label : "تدوير الصورة" ,
cw90 : "90 درجة مع عقارب الساعة" ,
ccw90 : "90 درجة عكس عقارب الساعة" ,
r180 : "180 درجة" ,
flipHorizontal : "عكس أفقي" ,
flipVertical : "عكس عمودي" ,
},
trim : "تقليم" ,
adjustments : {
label : "التعديلات" ,
brightnessContrast : "السطوع/التباين" ,
hueSaturation : "درجة اللون/التشبع" ,
colorBalance : "توازن الألوان" ,
levels : "المستويات" ,
curves : "المنحنيات" ,
},
},
layer : {
label : "طبقة" ,
newLayer : "طبقة جديدة" ,
duplicateLayer : "مضاعفة الطبقة" ,
deleteLayer : "حذف الطبقة" ,
arrange : {
label : "ترتيب" ,
bringToFront : "نقل للأمام" ,
bringForward : "تقديم" ,
sendBackward : "تأخير" ,
sendToBack : "نقل للخلف" ,
},
mergeDown : "دمج للأسفل" ,
flattenImage : "تسطيح الصورة" ,
},
select : {
label : "تحديد" ,
all : "تحديد الكل" ,
deselect : "إلغاء التحديد" ,
inverse : "عكس التحديد" ,
colorRange : "نطاق الألوان..." ,
},
filter : {
label : "مرشح" ,
blur : {
label : "تمويه" ,
gaussian : "تمويه غاوسي" ,
motion : "تمويه حركي" ,
radial : "تمويه شعاعي" ,
surface : "تمويه سطحي" ,
},
sharpen : {
label : "حدة" ,
sharpen : "زيادة الحدة" ,
unsharpMask : "قناع إخفاء الحدة" ,
},
noise : {
label : "تشويش" ,
addNoise : "إضافة تشويش" ,
reduceNoise : "تقليل التشويش" ,
},
pixelate : {
label : "تقطيع" ,
pixelate : "تقطيع بكسل" ,
mosaic : "فسيفساء" ,
},
stylize : {
label : "تنميط" ,
emboss : "نقش بارز" ,
solarize : "تشميس" ,
posterize : "تبسيط الألوان" ,
},
grayscale : "رمادي" ,
sepia : "بني داكن" ,
invert : "عكس" ,
},
view : {
label : "عرض" ,
zoomIn : "تكبير" ,
zoomOut : "تصغير" ,
fitOnScreen : "ملاءمة الشاشة" ,
actualPixels : "الحجم الفعلي" ,
rulers : "المساطر" ,
grid : "الشبكة" ,
guides : "الأدلة" ,
snap : "الالتقاط" ,
panels : "اللوحات" ,
},
},
menuBar : {
backTitle : "العودة إلى SnapOtter" ,
},
welcome : {
ariaLabel : "منطقة إسقاط الصور" ,
heading : "محرر الصور" ,
dropDescription : "اسحب صورة هنا للبدء" ,
openImageButton : "فتح صورة" ,
newDocumentButton : "مستند جديد" ,
pasteHint : "أو الصق من الحافظة (Ctrl+V)" ,
},
mobile : {
heading : "يُفضل استخدام سطح المكتب" ,
description :
"يعمل محرر الصور بشكل أفضل على شاشات سطح المكتب. يرجى التبديل إلى جهاز بشاشة أكبر للحصول على تجربة التحرير الكاملة." ,
},
errors : {
serverDecodeFailed : "فشل فك الترميز من الخادم" ,
},
2026-06-05 16:40:57 +08:00
shapes : {
shape : "Shape" ,
fill : "Fill" ,
stroke : "Stroke" ,
strokeWidth : "Width" ,
cornerRadius : "Radius" ,
sides : "Sides" ,
points : "Points" ,
dashStyle : "Dash" ,
solid : "Solid" ,
dashed : "Dashed" ,
dotted : "Dotted" ,
none : "None" ,
opacity : "Opacity" ,
rectangle : "Rectangle" ,
ellipse : "Ellipse" ,
line : "Line" ,
arrow : "Arrow" ,
polygon : "Polygon" ,
star : "Star" ,
},
2026-05-15 17:02:49 +08:00
},
settings : {
heading : "الإعدادات" ,
nav : {
general : "عام" ,
systemSettings : "إعدادات النظام" ,
security : "الأمان" ,
people : "الأعضاء" ,
teams : "الفرق" ,
roles : "الأدوار" ,
auditLog : "سجل التدقيق" ,
2026-06-13 10:17:13 +08:00
usage : "Usage" ,
2026-05-15 17:02:49 +08:00
apiKeys : "مفاتيح API" ,
aiFeatures : "ميزات AI" ,
tools : "الأدوات" ,
productAnalytics : "تحليلات المنتج" ,
about : "حول" ,
},
general : {
heading : "عام" ,
description : "تفضيلات المستخدم وإعدادات العرض." ,
loading : "جاري التحميل..." ,
logOut : "تسجيل الخروج" ,
defaultToolViewLabel : "عرض الأدوات الافتراضي" ,
defaultToolViewDescription : "طريقة عرض الأدوات في الصفحة الرئيسية" ,
sidebarOption : "الشريط الجانبي" ,
fullscreenGridOption : "شبكة ملء الشاشة" ,
appVersionLabel : "إصدار التطبيق" ,
appVersionDescription : "الإصدار الحالي من SnapOtter" ,
saveButton : "حفظ الإعدادات" ,
saveSuccess : "تم حفظ الإعدادات." ,
saveFailed : "فشل حفظ الإعدادات." ,
},
system : {
heading : "إعدادات النظام" ,
description : "إعدادات الخادم والحدود." ,
fileUploadLimitLabel : "حد رفع الملفات (MB)" ,
fileUploadLimitDescription : "الحجم الأقصى للملف في كل رفع" ,
defaultThemeLabel : "السمة الافتراضية" ,
defaultThemeDescription : "السمة المطبقة للجلسات الجديدة" ,
lightOption : "فاتح" ,
darkOption : "داكن" ,
systemOption : "النظام" ,
languageLabel : "اللغة" ,
languageDescription : "لغة الواجهة" ,
loginAttemptLimitLabel : "حد محاولات تسجيل الدخول" ,
loginAttemptLimitDescription :
"الحد الأقصى لمحاولات تسجيل الدخول الفاشلة في الدقيقة قبل القفل" ,
fileManagementHeading : "إدارة الملفات" ,
maxFileAgeLabel : "عمر الملف الأقصى (بالساعات)" ,
maxFileAgeDescription : "مدة الاحتفاظ بالملفات المعالجة قبل التنظيف التلقائي" ,
startupCleanupLabel : "تنظيف عند بدء التشغيل" ,
startupCleanupDescription : "تنظيف الملفات المؤقتة القديمة عند بدء تشغيل الخادم" ,
saveButton : "حفظ الإعدادات" ,
saveSuccess : "تم حفظ الإعدادات." ,
saveFailed : "فشل حفظ الإعدادات." ,
limitsAndResources : "الحدود والموارد" ,
maxFileSize : "حجم الملف الأقصى" ,
maxBatchSize : "حجم الدفعة الأقصى" ,
concurrentJobs : "المهام المتزامنة" ,
workerThreads : "خيوط العمال" ,
maxPipelineSteps : "خطوات Pipeline القصوى" ,
processingTimeout : "مهلة المعالجة" ,
rateLimitPerMin : "حد الطلبات (طلب/دقيقة)" ,
unlimited : "غير محدود" ,
auto : "تلقائي" ,
envOverride : "محدد بمتغير البيئة" ,
maxCanvasPixels : "بكسل اللوحة القصوى" ,
maxSvgSize : "حجم SVG الأقصى" ,
maxSplitGrid : "شبكة التقسيم القصوى" ,
maxPdfPages : "صفحات PDF القصوى" ,
sessionDuration : "مدة الجلسة" ,
2026-06-13 10:17:13 +08:00
supportBundleButton : "Download Support Bundle" ,
supportBundleDescription :
"Download a diagnostic zip with redacted config, logs, and job data for troubleshooting." ,
supportBundleFailed : "Failed to download support bundle." ,
2026-05-15 17:02:49 +08:00
},
security : {
heading : "الأمان" ,
description : "إعدادات كلمة المرور والمصادقة." ,
changePasswordHeading : "تغيير كلمة المرور" ,
currentPasswordPlaceholder : "كلمة المرور الحالية" ,
newPasswordPlaceholder : "كلمة المرور الجديدة" ,
confirmPasswordPlaceholder : "تأكيد كلمة المرور الجديدة" ,
passwordsMismatch : "كلمتا المرور غير متطابقتين" ,
passwordTooShort : "يجب أن تتكون كلمة المرور من 4 أحرف على الأقل" ,
changeSuccess : "تم تغيير كلمة المرور بنجاح" ,
changeFailed : "فشل تغيير كلمة المرور" ,
currentPasswordIncorrect : "كلمة المرور الحالية غير صحيحة" ,
changePasswordButton : "تغيير كلمة المرور" ,
loginAttemptLimitNote : "يمكن ضبط حدود محاولات تسجيل الدخول في إعدادات النظام." ,
},
people : {
heading : "الأعضاء" ,
description : "إدارة أعضاء مساحة العمل وصلاحياتهم" ,
userCount : "{count} مستخدم" ,
userCountPlural : "{count} مستخدمين" ,
searchPlaceholder : "البحث في الأعضاء..." ,
addMembersButton : "إضافة أعضاء" ,
newMemberHeading : "عضو جديد" ,
usernamePlaceholder : "اسم المستخدم" ,
passwordPlaceholder : "كلمة المرور" ,
roleUserOption : "مستخدم" ,
roleEditorOption : "محرر" ,
roleAdminOption : "مسؤول" ,
roleUserDescription : "وصول أساسي للأدوات" ,
roleEditorDescription : "جميع الملفات و Pipeline" ,
roleAdminDescription : "وصول كامل" ,
noDescription : "بدون وصف" ,
defaultTeamOption : "افتراضي" ,
createButton : "إنشاء" ,
cancelButton : "إلغاء" ,
createSuccess : "تم إنشاء المستخدم بنجاح" ,
createFailed : "فشل إنشاء المستخدم" ,
userLimitReached : "تم الوصول لحد المستخدمين ({max} كحد أقصى)" ,
deleteConfirm : 'حذف المستخدم "{username}"؟ لا يمكن التراجع عن هذا الإجراء.' ,
deleteSuccess : 'تم حذف المستخدم "{username}"' ,
deleteFailed : "فشل حذف المستخدم" ,
editHeading : "تعديل {username}" ,
updateSuccess : "تم تحديث المستخدم" ,
updateFailed : "فشل تحديث المستخدم" ,
cannotRemoveOwnAdmin : "لا يمكنك إزالة دور المسؤول الخاص بك" ,
resetPasswordHeading : "إعادة تعيين كلمة مرور {username}" ,
newPasswordLabel : "كلمة المرور الجديدة (8 أحرف كحد أدنى)" ,
resetPasswordButton : "إعادة تعيين كلمة المرور" ,
resetPasswordWarning : "سيؤدي هذا إلى إبطال جميع الجلسات ومفاتيح API لهذا المستخدم." ,
resetSuccess : "تم إعادة تعيين كلمة المرور بنجاح" ,
resetFailed : "فشل إعادة تعيين كلمة المرور" ,
tableHeaderUser : "المستخدم" ,
tableHeaderRole : "الدور" ,
tableHeaderTeam : "الفريق" ,
noSearchResults : "لا يوجد أعضاء يطابقون بحثك." ,
noUsersFound : "لم يتم العثور على مستخدمين." ,
authBadgeLocalOidc : "محلي + OIDC" ,
authBadgeOidc : "OIDC" ,
editRoleTeamAction : "تعديل الدور / الفريق" ,
resetPasswordAction : "إعادة تعيين كلمة المرور" ,
deleteUserAction : "حذف المستخدم" ,
saveButton : "حفظ" ,
2026-05-16 23:08:19 +08:00
copyPasswordButton : "نسخ كلمة المرور" ,
passwordCopied : "تم النسخ!" ,
copyPasswordWarning : "انسخ كلمة المرور الآن. لن تتمكن من رؤيتها بعد إنشاء المستخدم." ,
2026-05-15 17:02:49 +08:00
},
teams : {
heading : "الفرق" ,
description : "تنظيم الأعضاء في فرق لإدارة أفضل." ,
createButton : "إنشاء فريق جديد" ,
newTeamHeading : "فريق جديد" ,
teamNamePlaceholder : "اسم الفريق" ,
createSubmitButton : "إنشاء" ,
cancelButton : "إلغاء" ,
createSuccess : "تم إنشاء الفريق بنجاح" ,
createFailed : "فشل إنشاء الفريق" ,
duplicateTeamError : "يوجد فريق بهذا الاسم بالفعل" ,
renameSuccess : "تمت إعادة تسمية الفريق" ,
renameFailed : "فشلت إعادة تسمية الفريق" ,
deleteConfirm : 'حذف الفريق "{name}"؟ سيتم إلغاء تعيين الأعضاء.' ,
deleteSuccess : 'تم حذف الفريق "{name}"' ,
deleteFailed : "فشل حذف الفريق" ,
cannotDeleteDefault : "لا يمكن حذف الفريق الافتراضي أو فريق يحتوي على أعضاء" ,
tableHeaderTeamName : "اسم الفريق" ,
tableHeaderMembers : "الأعضاء" ,
emptyState : "لم يتم العثور على فرق." ,
renameSaveButton : "حفظ" ,
renameCancelButton : "إلغاء" ,
renameAction : "إعادة تسمية" ,
deleteAction : "حذف" ,
totalMembers : "إجمالي الأعضاء" ,
nameRequired : "اسم الفريق مطلوب" ,
nameTooLong : "يجب ألا يتجاوز اسم الفريق 50 حرفًا" ,
duplicateName : "يوجد فريق بهذا الاسم بالفعل" ,
},
roles : {
heading : "الأدوار" ,
description : "إدارة الأدوار وصلاحياتها. لا يمكن تعديل الأدوار المدمجة." ,
createButton : "إنشاء دور مخصص" ,
newRoleHeading : "دور جديد" ,
roleNamePlaceholder : "اسم الدور" ,
descriptionPlaceholder : "الوصف (اختياري)" ,
permissionsLabel : "الصلاحيات" ,
createSubmitButton : "إنشاء" ,
cancelButton : "إلغاء" ,
createSuccess : "تم إنشاء الدور بنجاح" ,
createFailed : "فشل إنشاء الدور" ,
duplicateRoleError : "يوجد دور بهذا الاسم بالفعل" ,
editHeading : "تعديل الدور: {name}" ,
editSaveButton : "حفظ" ,
editCancelButton : "إلغاء" ,
updateSuccess : "تم تحديث الدور" ,
updateFailed : "فشل تحديث الدور" ,
deleteConfirm : 'حذف الدور "{name}"؟ يحتاج {count} مستخدم(ين) إلى إعادة تعيين.' ,
deleteConfirmSimple : 'حذف الدور "{name}"؟' ,
deleteSuccess : 'تم حذف الدور "{name}"' ,
deleteFailed : "فشل حذف الدور" ,
emptyState : "لم يتم العثور على أدوار." ,
builtInBadge : "مدمج" ,
userCountBadge : "{count} مستخدم(ين)" ,
editRoleTitle : "تعديل الدور" ,
deleteRoleTitle : "حذف الدور" ,
permGroup : {
tools : "الأدوات" ,
files : "الملفات" ,
apiKeys : "مفاتيح API" ,
pipelines : "Pipeline" ,
settings : "الإعدادات" ,
users : "المستخدمون" ,
teams : "الفرق" ,
system : "النظام" ,
},
},
auditLog : {
heading : "سجل التدقيق" ,
allActionsFilter : "جميع الإجراءات" ,
emptyState : "لا توجد سجلات تدقيق." ,
tableHeaderTime : "الوقت" ,
tableHeaderUser : "المستخدم" ,
tableHeaderAction : "الإجراء" ,
tableHeaderTarget : "الهدف" ,
paginationInfo : "الصفحة {page} من {totalPages} ({total} سجل)" ,
previousButton : "السابق" ,
nextButton : "التالي" ,
justNow : "الآن" ,
minutesAgo : "منذ {mins} دقيقة" ,
hoursAgo : "منذ {hrs} ساعة" ,
daysAgo : "منذ {days} يوم" ,
},
2026-06-13 10:17:13 +08:00
usage : {
heading : "Usage" ,
description : "Local usage statistics from jobs and file storage." ,
periodLabel : "Period" ,
days7 : "7 days" ,
days30 : "30 days" ,
days90 : "90 days" ,
jobsPerDayHeading : "Jobs per day" ,
topToolsHeading : "Top tools" ,
perUserHeading : "Per-user volume" ,
durationsHeading : "Duration percentiles" ,
noData : "No data for this period." ,
dayColumn : "Day" ,
totalColumn : "Total" ,
completedColumn : "Completed" ,
failedColumn : "Failed" ,
toolColumn : "Tool" ,
runsColumn : "Runs" ,
userColumn : "User" ,
bytesInColumn : "Bytes in" ,
poolColumn : "Pool" ,
p50Column : "p50" ,
p95Column : "p95" ,
storageHeading : "Library storage" ,
storageFiles : "{count} files" ,
unknownUser : "(unknown)" ,
},
2026-05-15 17:02:49 +08:00
apiKeys : {
heading : "مفاتيح API" ,
description : "إدارة مفاتيح API للوصول البرمجي إلى SnapOtter." ,
keyNamePlaceholder : "اسم المفتاح (اختياري)" ,
generateButton : "إنشاء مفتاح API" ,
removeScopingLabel : "إزالة تحديد الصلاحيات" ,
restrictPermissionsLabel : "تقييد الصلاحيات (اختياري)" ,
expiresLabel : "ينتهي:" ,
clearButton : "مسح" ,
copyTitle : "نسخ" ,
keyWarning : "احفظ هذا المفتاح بأمان. لن يظهر مرة أخرى." ,
existingKeysHeading : "المفاتيح الحالية" ,
createdPrefix : "أُنشئ {date}" ,
scopedPrefix : "محدد:" ,
expiresPrefix : "ينتهي {date}" ,
deleteKeyTitle : "حذف المفتاح" ,
deleteConfirm : "حذف مفتاح API هذا؟ ستتوقف أي عمليات تكامل تستخدمه." ,
emptyState : "لا توجد مفاتيح API بعد. أنشئ واحدًا للبدء." ,
},
tools : {
heading : "الأدوات" ,
description : "تفعيل أو تعطيل الأدوات الفردية. الأدوات المعطلة مخفية عن جميع المستخدمين." ,
restartBanner : "يلزم إعادة التشغيل لتفعيل التغييرات." ,
searchPlaceholder : "البحث في الأدوات..." ,
noSearchResults : "لا توجد أدوات تطابق بحثك." ,
loadFailedError : "فشل تحميل إعدادات الأدوات. تم تعطيل الحفظ لمنع فقدان البيانات." ,
saveButton : "حفظ إعدادات الأدوات" ,
disabledCount : "{count} أداة معطلة" ,
},
experimental : {
label : "تفعيل الأدوات التجريبية" ,
description : "عرض الأدوات التي لا تزال قيد التطوير. قد تكون غير مستقرة." ,
},
fileManagement : {
title : "إدارة الملفات" ,
maxAge : "عمر الملف الأقصى (بالساعات)" ,
maxAgeDescription : "مدة الاحتفاظ بالملفات المعالجة قبل التنظيف التلقائي" ,
startupCleanup : "تنظيف عند بدء التشغيل" ,
startupCleanupDescription : "تنظيف الملفات المؤقتة القديمة عند بدء تشغيل الخادم" ,
},
analytics : {
heading : "تحليلات المنتج" ,
description : "مشاركة بيانات الاستخدام المجهولة للمساعدة في تحسين SnapOtter." ,
privacyNote : "صورك لا تغادر جهازك أبدًا." ,
disabledByAdmin : "تم تعطيل تحليلات المنتج بواسطة مسؤول الخادم." ,
enabledLabel : "التحليلات مفعّلة" ,
disabledLabel : "التحليلات معطّلة" ,
learnMore : "معرفة المزيد" ,
},
aiFeatures : {
title : "AI Features" ,
description : "Manage AI model bundles for advanced image processing." ,
installAll : "Install All" ,
diskUsage : "Disk usage:" ,
installed : "Installed" ,
notInstalled : "Not installed" ,
queued : "Queued" ,
install : "Install" ,
repair : "Repair" ,
uninstall : "Uninstall" ,
installing : "Installing..." ,
2026-06-13 10:17:13 +08:00
importBundle : "Import Bundle" ,
importDescription : "Upload a .tar.gz bundle archive exported from another installation." ,
importButton : "Import from file" ,
importing : "Importing..." ,
importSuccess : "Bundle imported successfully." ,
importError : "Bundle import failed: {error}" ,
2026-05-15 17:02:49 +08:00
},
about : {
heading : "حول" ,
appName : "SnapOtter" ,
appDescription :
2026-06-13 10:18:49 +08:00
"مجموعة أدوات معالجة صور ذاتية الاستضافة تركز على الخصوصية مع 70+ أداة. تغيير الحجم والضغط والتحويل والعلامات المائية وأتمتة سير عمل الصور دون إرسال البيانات إلى السحابة." ,
2026-05-15 17:02:49 +08:00
versionLabel : "الإصدار:" ,
linksHeading : "روابط" ,
githubLink : "مستودع GitHub" ,
docsLink : "التوثيق" ,
apiRefLink : "مرجع API (Swagger)" ,
2026-06-05 22:31:28 +08:00
licenseLabel : "License:" ,
2026-06-05 23:14:57 +08:00
licenseDescription :
"SnapOtter is open-source software licensed under the GNU Affero General Public License v3 (AGPLv3)." ,
2026-05-15 17:02:49 +08:00
},
},
auth : {
login : "تسجيل الدخول" ,
logout : "تسجيل الخروج" ,
username : "اسم المستخدم" ,
password : "كلمة المرور" ,
loginButton : "تسجيل الدخول" ,
loggingIn : "جاري تسجيل الدخول..." ,
invalidCredentials : "اسم المستخدم أو كلمة المرور غير صحيحة" ,
connectionError : "خطأ في الاتصال" ,
signInWith : "تسجيل الدخول بـ {provider}" ,
signInWithSso : "تسجيل الدخول بـ SSO" ,
or : "أو" ,
methodLocal : "محلي" ,
methodOidc : "OIDC" ,
methodBoth : "محلي + OIDC" ,
oidcAuthFailed : "فشلت المصادقة. يرجى المحاولة مرة أخرى." ,
oidcProviderUnreachable : "تعذر الوصول إلى مزود الهوية. يرجى المحاولة لاحقًا." ,
oidcSessionExpired : "انتهت صلاحية جلسة تسجيل الدخول. يرجى المحاولة مرة أخرى." ,
oidcUserNotAuthorized : "حسابك غير مصرح له بالوصول إلى هذا التطبيق. تواصل مع المسؤول." ,
oidcUserLimitReached : "تم الوصول لحد المستخدمين. تواصل مع المسؤول." ,
oidcGenericError : "خطأ في المصادقة. يرجى المحاولة مرة أخرى." ,
passwordManagedByProvider : "يتم إدارة تغيير كلمة المرور بواسطة مزود الهوية الخاص بك." ,
enterUsername : "أدخل اسم المستخدم" ,
enterPassword : "أدخل كلمة المرور" ,
heroTitle : "صورك. تبقى ملكك." ,
heroSubtitle : "كل أدوات الصور التي تحتاجها." ,
rotatingPhrases : [
"بدون تسجيل. بدون حسابات." ,
"لا شيء يُرفع للسحابة. أبدًا." ,
"معالجة محلية بالكامل." ,
"مجاني. للأبد." ,
"بلا حدود. بلا قيود خفية." ,
"يعمل بدون إنترنت." ,
"معالجة جماعية بلا حدود." ,
2026-06-13 10:18:49 +08:00
"70+ أداة للصور." ,
2026-05-15 17:02:49 +08:00
"15 نموذج AI. على جهازك." ,
"سريع كالبرق. مبني على Sharp." ,
"يعمل في بيئات معزولة." ,
"حاوية Docker واحدة." ,
"مفتوح المصدر. دائمًا." ,
"كل بكسل يبقى على جهازك." ,
"خادمك. قواعدك." ,
"نشر بأمر docker pull واحد." ,
"البديل ذاتي الاستضافة." ,
"تغيير الحجم والضغط والتحويل. محليًا." ,
"محرر صور مجاني. بدون علامات مائية." ,
"معالجة صور جماعية. بلا حدود." ,
"إزالة الخلفية بدون إنترنت." ,
"بديل Canva ذاتي الاستضافة." ,
"بدون مفاتيح API." ,
"متوافق مع GDPR بالتصميم." ,
"يعمل بدون اتصال بالإنترنت." ,
],
},
changePassword : {
title : "غيّر كلمة المرور" ,
description :
"تحتاج إلى تعيين كلمة مرور جديدة قبل المتابعة. يجب أن تتكون كلمة المرور من 8 أحرف على الأقل مع أحرف كبيرة وصغيرة ورقم." ,
usernameLabel : "اسم المستخدم" ,
currentPasswordLabel : "كلمة المرور الحالية" ,
currentPasswordPlaceholder : "أدخل كلمة المرور الحالية" ,
newPasswordLabel : "كلمة المرور الجديدة" ,
generateButton : "إنشاء كلمة مرور قوية" ,
newPasswordPlaceholder : "8 أحرف على الأقل" ,
confirmPasswordLabel : "تأكيد كلمة المرور الجديدة" ,
confirmPasswordPlaceholder : "أعد كتابة كلمة المرور الجديدة" ,
passwordsMismatch : "كلمتا المرور غير متطابقتين" ,
failedError : "فشل تغيير كلمة المرور" ,
connectionError : "خطأ في الاتصال" ,
changingButton : "جاري التغيير..." ,
changeButton : "تغيير كلمة المرور" ,
sidebarTitle : "أوشكت على الانتهاء" ,
sidebarDescription : "عيّن كلمة مرور قوية لتأمين حسابك، وستكون جاهزًا للانطلاق." ,
},
automate : {
title : "أتمتة" ,
invalidPipelineFile : "ليس ملف Pipeline صالحًا لـ SnapOtter" ,
newerVersion : "تم إنشاء هذا الـ Pipeline بإصدار أحدث من SnapOtter" ,
missingName : "ملف Pipeline يفتقد للاسم" ,
noSteps : "ملف Pipeline لا يحتوي على خطوات" ,
importFailed : "فشل الاستيراد" ,
couldNotRead : "تعذرت قراءة ملف Pipeline" ,
fileCount : "{count} ملف" ,
fileCountPlural : "{count} ملفات" ,
importFromLibrary : "استيراد من المكتبة" ,
addButton : "+ إضافة" ,
libraryButton : "المكتبة" ,
clearButton : "مسح" ,
processingFailed : "فشلت المعالجة لهذا الملف" ,
processingMultiple : "جاري معالجة {count} ملف..." ,
processingPipeline : "جاري معالجة Pipeline..." ,
processButton : "معالجة" ,
processButtonMultiple : "معالجة ({count})" ,
processAllButton : "معالجة الكل ({count})" ,
addTool : "إضافة أداة" ,
toolPalette : "لوحة الأدوات" ,
clickToAdd : "اضغط للإضافة إلى Pipeline" ,
savedLabel : "محفوظ" ,
importButton : "استيراد" ,
noSavedPipelines : "لا توجد Pipeline محفوظة" ,
stepCount : "({count} خطوة)" ,
stepCountPlural : "({count} خطوات)" ,
exportPipeline : "تصدير Pipeline" ,
deletePipeline : "حذف Pipeline" ,
moreCount : "+{count} إضافي" ,
pipelineBuilder : "منشئ Pipeline" ,
addToolsPrompt : "أضف أدوات من اللوحة للبدء" ,
stepsConfigured : "{count} خطوة مهيأة" ,
stepsConfiguredPlural : "{count} خطوات مهيأة" ,
noFilesLoaded : "لم يتم تحميل ملفات" ,
downloadZip : "تحميل ZIP" ,
saveButton : "حفظ" ,
pipelineNamePlaceholder : "اسم Pipeline" ,
descriptionPlaceholder : "الوصف" ,
savingIndicator : "..." ,
cancelButton : "إلغاء" ,
preview : "معاينة" ,
previousImage : "الصورة السابقة" ,
nextImage : "الصورة التالية" ,
imageCounter : "{current} / {total}" ,
imageArea : "منطقة الصورة" ,
templateSocialMedia : "جاهز لوسائل التواصل" ,
templatePrivacyClean : "تنظيف الخصوصية" ,
templateWebOptimization : "تحسين للويب" ,
templateProfilePicture : "صورة الملف الشخصي" ,
templateWatermarkBatch : "علامة مائية جماعية" ,
createNew : "إنشاء أتمتة جديدة" ,
savedAutomations : "الأتمتة المحفوظة" ,
templates : "القوالب" ,
addStep : "إضافة خطوة" ,
removeStep : "إزالة" ,
moveUp : "نقل لأعلى" ,
moveDown : "نقل لأسفل" ,
savePipeline : "حفظ Pipeline" ,
runPipeline : "معالجة" ,
pipelineName : "اسم Pipeline" ,
pipelineDescription : "الوصف (اختياري)" ,
noStepsPrompt : "أضف خطوات لبناء أتمتتك" ,
2026-06-06 20:47:08 +08:00
noStepsHeading : "No steps yet" ,
2026-06-05 22:31:28 +08:00
searchToolsPlaceholder : "Search tools..." ,
2026-06-06 20:47:08 +08:00
step : "خطوة" ,
2026-05-15 17:02:49 +08:00
},
nav : {
tools : "الأدوات" ,
reader : "القارئ" ,
automate : "أتمتة" ,
editor : "المحرر" ,
files : "الملفات" ,
help : "المساعدة" ,
settings : "الإعدادات" ,
grid : "شبكة" ,
},
files : {
2026-06-05 22:31:28 +08:00
myFiles : "My Files" ,
2026-06-05 23:14:57 +08:00
recentTab : "Recent" ,
uploadTab : "Upload Files" ,
fileDetailsAriaLabel : "File Details" ,
fileDetailsHeading : "File Details" ,
2026-06-05 22:31:28 +08:00
searchPlaceholder : "Search files..." ,
selectedCount : "{count} selected" ,
fileCount : "{count} files" ,
fileCountSingular : "{count} file" ,
noFilesFound : "No files found" ,
selectFilePrompt : "Select a file to view details" ,
openFile : "Open File" ,
openInPipeline : "Open in Pipeline" ,
name : "Name" ,
format : "Format" ,
size : "Size" ,
dimensions : "Dimensions" ,
version : "Version" ,
toolsUsed : "Tools Used" ,
none : "None" ,
delete : "Delete" ,
pipeline : "Pipeline" ,
download : "Download" ,
2026-05-15 17:02:49 +08:00
},
dropzone : {
unsupportedFileType : "نوع الملف هذا غير مدعوم بهذه الأداة" ,
urlFetchFailed : "تعذر جلب الصورة من الرابط" ,
ariaLabel : "منطقة إسقاط الملفات" ,
dropPrompt : "اسحب صورك هنا" ,
browseOrPaste : "اضغط في أي مكان للتصفح، أو الصق من الحافظة" ,
uploadButton : "رفع" ,
defaultFormats : "PNG، JPG، WebP، HEIC، RAW، PSD، وأكثر من 65 صيغة" ,
orSeparator : "أو" ,
urlPlaceholder : "الصق رابط الصورة..." ,
urlLoadingIndicator : "..." ,
addUrlButton : "إضافة" ,
importMultipleUrls : "استيراد روابط متعددة..." ,
filesSelected : "تم اختيار {count} ملف" ,
},
reviewPanel : {
processedResultAlt : "النتيجة المعالجة" ,
sizeLabel : "الحجم: {size}" ,
typeLabel : "النوع: {type}" ,
processedLabel : "المعالجة: {time}" ,
undoButton : "تراجع" ,
downloadButton : "تحميل" ,
openInEditor : "فتح في المحرر" ,
reviewHeading : "مراجعة" ,
continueEditing : "متابعة التعديل" ,
},
features : {
notEnabledTitle : "الميزة غير مفعّلة" ,
notEnabledDescription : "هذه الميزة غير مفعّلة. اطلب من المسؤول تفعيلها في الإعدادات." ,
requiresDownload : "تتطلب هذه الميزة تحميلًا إضافيًا (~{size})" ,
retryButton : "إعادة المحاولة" ,
queued : "في انتظار التثبيت..." ,
enableButton : "تفعيل {name}" ,
2026-06-09 23:09:34 +08:00
repairRequired : "Repair Required" ,
repairDescription : "Some model files are missing or corrupted. Repair will re-download them." ,
repairButton : "Repair {name}" ,
2026-05-15 17:02:49 +08:00
lessThanMinute : "أقل من دقيقة" ,
oneMinuteLeft : "~دقيقة واحدة متبقية" ,
minutesLeft : "~{mins} دقائق متبقية" ,
progressMessages : [
"أوشكنا على الانتهاء... على الأرجح..." ,
"الصبر مفتاح الفرج..." ,
"أسرع من انتظار غليان الماء..." ,
"صبرك يستحق الثناء..." ,
"نعمل بجد خلف الكواليس..." ,
"هذا هو الجزء الممتع، ثق بنا..." ,
"نقوم بأشياء مهمة في الخلفية..." ,
"إذا كنت تقرأ هذا، فكل شيء يسير على ما يرام..." ,
"نحضّر شيئًا رائعًا..." ,
"تستحق كل ثانية، وعد..." ,
"التشويق جزء من التجربة..." ,
"نعلّم جهازك حيلًا جديدة..." ,
"نجهّز قدراتك الخارقة..." ,
"صورك ستشكرك لاحقًا..." ,
"جاري التحميل... بأناقة..." ,
"وقت مناسب لفنجان قهوة..." ,
"روما لم تُبنَ في يوم واحد..." ,
"صمتًا... عبقري يعمل..." ,
"نحضّر مفاجأة لصورك..." ,
"نجمّع فريق الأحلام..." ,
"نفتح صندوق الإبداع..." ,
"كدنا ننتهي من التفكير في البدء... نمزح فقط..." ,
"مفاجأة: نحن نعمل فعلًا..." ,
"نُحمّي محركات الإبداع..." ,
"الخيال قيد التحميل..." ,
"ليست شاشة توقف، نعدك..." ,
"الفن العظيم يحتاج وقتًا للتثبيت..." ,
"ذاتك المستقبلية ستشكرك..." ,
"نجلب بعض الملفات الذكية جدًا..." ,
"تمسّك، الأفضل لم يأتِ بعد..." ,
],
},
help : {
heading : "المساعدة" ,
gettingStarted : {
heading : "البدء" ,
description :
"اختر أداة من الشريط الجانبي أو ابحث عن واحدة. ارفع صورة بسحبها إلى الصفحة أو بالضغط على منطقة الرفع. اضبط الإعدادات وحمّل نتيجتك." ,
},
keyboardShortcuts : {
heading : "اختصارات لوحة المفاتيح" ,
focusSearchBar : "التركيز على شريط البحث" ,
goToTools : "الانتقال للأدوات" ,
toggleTheme : "تبديل السمة" ,
goToResize : "الانتقال لتغيير الحجم" ,
goToCrop : "الانتقال للقص" ,
goToCompress : "الانتقال للضغط" ,
goToConvert : "الانتقال للتحويل" ,
goToRemoveBackground : "الانتقال لإزالة الخلفية" ,
goToWatermarkText : "الانتقال للعلامة المائية النصية" ,
goToStripMetadata : "الانتقال لإزالة البيانات الوصفية" ,
goToImageInfo : "الانتقال لمعلومات الصورة" ,
},
resources : {
heading : "الموارد" ,
githubLink : "مستودع GitHub" ,
reportIssueLink : "الإبلاغ عن مشكلة" ,
docsLink : "التوثيق" ,
apiRefLink : "مرجع API (Swagger)" ,
},
versionLabel : "SnapOtter v{version}" ,
},
errors : {
generic : "حدث خطأ" ,
offline : "أنت غير متصل بالإنترنت" ,
reconnecting : "جاري إعادة الاتصال بالخادم..." ,
connected : "متصل" ,
processingFailed : "فشلت المعالجة لهذا الملف" ,
timeout : "انتهت مهلة الطلب. قد يكون الخادم محملًا بشكل زائد. حاول مرة أخرى." ,
networkError : "خطأ في الشبكة. تحقق من اتصالك." ,
invalidCredentials : "اسم المستخدم أو كلمة المرور غير صحيحة" ,
connectionError : "خطأ في الاتصال" ,
},
analytics : {
consentTitle : "ساعد في تحسين SnapOtter" ,
consentDescription :
"إحصائيات الاستخدام المجهولة تساعدنا في إصلاح الأخطاء وبناء الأدوات التي تحتاجها فعلًا. صورك وملفاتك تبقى على جهازك." ,
consentChangeable : "يمكنك إيقاف هذا في أي وقت من الإعدادات." ,
acceptButton : "بالتأكيد، موافق" ,
declineButton : "ليس الآن" ,
settingsTitle : "تحليلات المنتج" ,
settingsDescription : "مشاركة بيانات الاستخدام المجهولة للمساعدة في تحسين SnapOtter." ,
settingsPrivacy : "صورك لا تغادر جهازك أبدًا." ,
settingsDisabledByAdmin : "تم تعطيل تحليلات المنتج بواسطة مسؤول الخادم." ,
learnMore : "معرفة المزيد" ,
},
sidebar : {
tools : "الأدوات" ,
grid : "شبكة" ,
automate : "أتمتة" ,
editor : "المحرر" ,
files : "الملفات" ,
help : "المساعدة" ,
settings : "الإعدادات" ,
},
toolCard : {
addToFavourites : "إضافة إلى المفضلة" ,
},
appLayout : {
mobileNavTools : "الأدوات" ,
mobileNavAutomate : "أتمتة" ,
mobileNavEditor : "المحرر" ,
mobileNavFiles : "الملفات" ,
mobileNavSettings : "الإعدادات" ,
},
2026-06-07 21:48:08 +08:00
a11y : {
skipToContent : "Skip to main content" ,
openSidebar : "Open sidebar" ,
closeSidebar : "Close sidebar" ,
closeSettings : "Close settings" ,
closeHelp : "Close help" ,
closeDialog : "Close dialog" ,
zoomIn : "Zoom in" ,
zoomOut : "Zoom out" ,
fitToView : "Fit to view" ,
actualSize : "Actual size" ,
previousImage : "Previous image" ,
nextImage : "Next image" ,
imageArea : "Image area" ,
imageViewer : "Image viewer" ,
fileDropZone : "File drop zone" ,
imageDropZone : "Image drop zone" ,
beforeAfterSlider : "Before/after comparison slider" ,
imageControls : "Image controls" ,
zoomControls : "Zoom controls" ,
dragToReorder : "Drag to reorder" ,
whiteBackground : "White background" ,
blackBackground : "Black background" ,
expandPanel : "Expand panel" ,
collapsePanel : "Collapse panel" ,
swapDimensions : "Swap dimensions" ,
applyCrop : "Apply crop" ,
cancelCrop : "Cancel crop" ,
fontFamily : "Font family" ,
textColor : "Text color" ,
flipHorizontal : "Flip horizontal" ,
flipVertical : "Flip vertical" ,
hexColorValue : "Hex color value" ,
backgroundColor : "Background color" ,
foregroundColor : "Foreground color" ,
swapColors : "Swap foreground and background colors" ,
resetColors : "Reset to default black and white" ,
foregroundHex : "Foreground color hex value" ,
undo : "Undo" ,
redo : "Redo" ,
layers : "Layers" ,
addLayer : "Add layer" ,
deleteLayer : "Delete layer" ,
cancelOperation : "Cancel operation" ,
fill : "Fill" ,
fileDetails : "File details" ,
language : "Language" ,
selected : "Selected" ,
deleteKey : "Delete key" ,
editRole : "Edit role" ,
deleteRole : "Delete role" ,
notInstalled : "Not installed" ,
queued : "Queued for install" ,
installing : "Installing" ,
imageNOfTotal : "Image {n} of {total}" ,
processingComplete : "Image processed successfully" ,
processingFailed : "Processing failed" ,
settingsDialog : "Settings" ,
helpDialog : "Help" ,
navigationMenu : "Navigation" ,
},
2026-05-15 17:02:49 +08:00
} as const ;