feat(i18n): Add complete Arabic language support with RTL

Add comprehensive Arabic (العربية) language support to OmniTools with full RTL (Right-to-Left) functionality:

- Add Arabic to supported languages list and language selector
- Translate all 12 namespace files to Arabic (audio, csv, image, json, list, number, pdf, string, time, translation, video, xml)
- Implement RTL support with stylis-plugin-rtl for proper Arabic text rendering
- Create RTL-aware theme variants (lightThemeRTL, darkThemeRTL)
- Add automatic document direction switching based on selected language

This enables full Arabic language support for all tools and UI elements in the application, providing a native experience for Arabic-speaking users.
This commit is contained in:
rumanagency 2025-10-26 17:11:04 +03:00
commit fa231a3c3b
18 changed files with 1956 additions and 49 deletions

33
package-lock.json generated
View file

@ -64,6 +64,7 @@
"react-konva": "^18.2.10",
"react-router-dom": "^6.23.1",
"styled-components": "^6.1.19",
"stylis-plugin-rtl": "^2.1.1",
"tesseract.js": "^6.0.0",
"type-fest": "^4.35.0",
"use-deep-compare-effect": "^1.8.1",
@ -3523,7 +3524,6 @@
"version": "18.3.7",
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz",
"integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==",
"dev": true,
"license": "MIT",
"peerDependencies": {
"@types/react": "^18.0.0"
@ -3584,7 +3584,6 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-1.0.6.tgz",
"integrity": "sha512-230RC8sFeHoT6sSUlRO6a8cAnclO06eeiq1QDfiv2FGCLWFvvERWgwIQD4FWqD9A69BN7Lzee4OXwoMVnnsWDw==",
"dev": true,
"license": "MIT"
},
"node_modules/@typescript-eslint/eslint-plugin": {
@ -5329,6 +5328,15 @@
"node": ">=4"
}
},
"node_modules/cssjanus": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/cssjanus/-/cssjanus-2.3.0.tgz",
"integrity": "sha512-ZZXXn51SnxRxAZ6fdY7mBDPmA4OZd83q/J9Gdqz3YmE9TUq+9tZl+tdOnCi7PpNygI6PEkehj9rgifv5+W8a5A==",
"license": "Apache-2.0",
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
@ -5784,7 +5792,7 @@
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz",
"integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==",
"dev": true,
"devOptional": true,
"license": "MIT",
"dependencies": {
"iconv-lite": "^0.6.2"
@ -7694,7 +7702,7 @@
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
"dev": true,
"devOptional": true,
"license": "MIT",
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3.0.0"
@ -9395,7 +9403,6 @@
"version": "0.53.0",
"resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.53.0.tgz",
"integrity": "sha512-0WNThgC6CMWNXXBxTbaYYcunj08iB5rnx4/G56UOPeL9UVIUGGHA1GR0EWIh9Ebabj7NpCRawQ5b0hfN1jQmYQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/trusted-types": "^1.0.6"
@ -11578,7 +11585,7 @@
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true,
"devOptional": true,
"license": "MIT"
},
"node_modules/sax": {
@ -12510,6 +12517,18 @@
"integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==",
"license": "MIT"
},
"node_modules/stylis-plugin-rtl": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/stylis-plugin-rtl/-/stylis-plugin-rtl-2.1.1.tgz",
"integrity": "sha512-q6xIkri6fBufIO/sV55md2CbgS5c6gg9EhSVATtHHCdOnbN/jcI0u3lYhNVeuI65c4lQPo67g8xmq5jrREvzlg==",
"license": "MIT",
"dependencies": {
"cssjanus": "^2.0.1"
},
"peerDependencies": {
"stylis": "4.x"
}
},
"node_modules/sucrase": {
"version": "3.35.0",
"resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",
@ -13045,7 +13064,7 @@
"version": "5.9.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"dev": true,
"devOptional": true,
"license": "Apache-2.0",
"bin": {
"tsc": "bin/tsc",

View file

@ -83,6 +83,7 @@
"react-konva": "^18.2.10",
"react-router-dom": "^6.23.1",
"styled-components": "^6.1.19",
"stylis-plugin-rtl": "^2.1.1",
"tesseract.js": "^6.0.0",
"type-fest": "^4.35.0",
"use-deep-compare-effect": "^1.8.1",

View file

@ -0,0 +1,61 @@
{
"changeSpeed": {
"description": "تغيير سرعة تشغيل ملفات الصوت. تسريع أو إبطاء الصوت مع الحفاظ على طبقة الصوت.",
"inputTitle": "إدخال الصوت",
"newAudioSpeed": "سرعة الصوت الجديدة",
"outputFormat": "تنسيق الإخراج",
"resultTitle": "الصوت المعدل",
"settingSpeed": "ضبط السرعة",
"shortDescription": "تغيير سرعة ملفات الصوت",
"speedDescription": "المضاعف الافتراضي: 2 يعني أسرع مرتين",
"title": "تغيير سرعة الصوت",
"toolInfo": {
"title": "ما هو {{title}}؟"
}
},
"extractAudio": {
"description": "استخراج المسار الصوتي من ملفات الفيديو.",
"extractingAudio": "استخراج الصوت",
"inputTitle": "إدخال الفيديو",
"outputFormat": "تنسيق الإخراج",
"outputFormatDescription": "حدد تنسيق الصوت المراد استخراجه.",
"resultTitle": "الصوت المستخرج",
"shortDescription": "استخراج الصوت من ملفات الفيديو (MP4، MOV، إلخ) إلى AAC، MP3، أو WAV.",
"title": "استخراج الصوت من الفيديو",
"toolInfo": {
"description": "تتيح لك هذه الأداة استخراج المسار الصوتي من ملفات الفيديو. يمكنك الاختيار من بين تنسيقات صوتية مختلفة بما في ذلك AAC و MP3 و WAV.",
"title": "ما هو {{title}}؟"
}
},
"mergeAudio": {
"description": "دمج ملفات صوتية متعددة في ملف صوتي واحد عن طريق ربطها بالتسلسل.",
"inputTitle": "إدخال ملفات الصوت",
"longDescription": "تتيح لك هذه الأداة دمج ملفات صوتية متعددة في ملف واحد عن طريق ربطها بالترتيب الذي تقوم بتحميلها به. مثالية لدمج مقاطع البودكاست أو المقطوعات الموسيقية أو أي ملفات صوتية تحتاج إلى دمجها معًا. تدعم تنسيقات صوتية متنوعة بما في ذلك MP3 و AAC و WAV.",
"mergingAudio": "دمج الصوت",
"outputFormat": "تنسيق الإخراج",
"resultTitle": "الصوت المدمج",
"shortDescription": "دمج ملفات صوتية متعددة في ملف واحد (MP3، AAC، WAV).",
"title": "دمج الصوت",
"toolInfo": {
"title": "ما هو {{title}}؟"
}
},
"trim": {
"description": "قص وتقليم ملفات الصوت لاستخراج مقاطع محددة عن طريق تحديد أوقات البداية والنهاية.",
"endTime": "وقت النهاية",
"endTimeDescription": "وقت النهاية بتنسيق HH:MM:SS (مثال: 00:01:30)",
"inputTitle": "إدخال الصوت",
"longDescription": "تتيح لك هذه الأداة تقليم ملفات الصوت عن طريق تحديد أوقات البداية والنهاية. يمكنك استخراج مقاطع محددة من ملفات صوتية أطول، أو إزالة أجزاء غير مرغوب فيها، أو إنشاء مقاطع أقصر. تدعم تنسيقات صوتية متنوعة بما في ذلك MP3 و AAC و WAV. مثالية لتحرير البودكاست أو إنتاج الموسيقى أو أي احتياجات تحرير صوتية.",
"outputFormat": "تنسيق الإخراج",
"resultTitle": "الصوت المقلم",
"shortDescription": "تقليم ملفات الصوت لاستخراج مقاطع زمنية محددة (MP3، AAC، WAV).",
"startTime": "وقت البداية",
"startTimeDescription": "وقت البداية بتنسيق HH:MM:SS (مثال: 00:00:30)",
"timeSettings": "إعدادات الوقت",
"title": "تقليم الصوت",
"toolInfo": {
"title": "ما هو {{title}}؟"
},
"trimmingAudio": "تقليم الصوت"
}
}

120
public/locales/ar/csv.json Normal file
View file

@ -0,0 +1,120 @@
{
"changeCsvSeparator": {
"description": "تغيير الفاصل في ملفات CSV. التحويل بين تنسيقات CSV المختلفة مثل الفاصلة أو الفاصلة المنقوطة أو علامة التبويب أو فواصل مخصصة.",
"shortDescription": "تغيير فاصل ملف CSV",
"title": "تغيير فاصل CSV"
},
"csvRowsToColumns": {
"description": "تقوم هذه الأداة بتحويل صفوف ملف CSV (القيم المفصولة بفواصل) إلى أعمدة. تستخرج الأسطر الأفقية من CSV المدخل واحدة تلو الأخرى، وتدورها 90 درجة، وتخرجها كأعمدة عمودية واحدة تلو الأخرى، مفصولة بفواصل.",
"longDescription": "تقوم هذه الأداة بتحويل صفوف ملف CSV (القيم المفصولة بفواصل) إلى أعمدة. على سبيل المثال، إذا كانت بيانات CSV المدخلة تحتوي على 6 صفوف، فسيحتوي الإخراج على 6 أعمدة وسيتم ترتيب عناصر الصفوف من الأعلى إلى الأسفل. في CSV المنسق بشكل جيد، يكون عدد القيم في كل صف هو نفسه. ومع ذلك، في الحالات التي تفتقد فيها الصفوف حقولاً، يمكن للبرنامج إصلاحها ويمكنك الاختيار من الخيارات المتاحة: ملء البيانات المفقودة بعناصر فارغة أو استبدال البيانات المفقودة بعناصر مخصصة، مثل",
"shortDescription": "تحويل صفوف CSV إلى أعمدة.",
"title": "تحويل صفوف CSV إلى أعمدة"
},
"csvToJson": {
"columnSeparator": "فاصل الأعمدة (مثال: , ; \\t)",
"commentSymbol": "رمز التعليق (مثال: #)",
"conversionOptions": "خيارات التحويل",
"description": "تحويل ملفات CSV إلى تنسيق JSON مع خيارات قابلة للتخصيص للفواصل وعلامات الاقتباس وتنسيق الإخراج. دعم للرؤوس والتعليقات والتحويل الديناميكي للنوع.",
"dynamicTypes": "الأنواع الديناميكية",
"dynamicTypesDescription": "تحويل الأرقام والقيم المنطقية تلقائيًا",
"error": "خطأ",
"errorParsing": "خطأ في تحليل CSV: {{error}}",
"fieldQuote": "علامة اقتباس الحقل (مثال: \")",
"inputCsvFormat": "تنسيق CSV المدخل",
"inputTitle": "إدخال CSV",
"invalidCsvFormat": "تنسيق CSV غير صالح",
"resultTitle": "إخراج JSON",
"shortDescription": "تحويل بيانات CSV إلى تنسيق JSON.",
"skipEmptyLines": "تخطي الأسطر الفارغة",
"skipEmptyLinesDescription": "تجاهل الأسطر الفارغة في CSV المدخل",
"title": "تحويل CSV إلى JSON",
"toolInfo": {
"description": "تقوم هذه الأداة بتحويل ملفات القيم المفصولة بفواصل (CSV) إلى بنى بيانات JavaScript Object Notation (JSON). تدعم تنسيقات CSV المختلفة مع فواصل وأحرف اقتباس ورموز تعليق قابلة للتخصيص. يمكن للمحول معاملة الصف الأول كرؤوس، وتخطي الأسطر الفارغة، واكتشاف أنواع البيانات مثل الأرقام والقيم المنطقية تلقائيًا. يمكن استخدام JSON الناتج لترحيل البيانات أو النسخ الاحتياطية أو كمدخل لتطبيقات أخرى.",
"title": "ما هو محول CSV إلى JSON؟"
},
"useHeaders": "استخدام الرؤوس",
"useHeadersDescription": "معاملة الصف الأول كرؤوس أعمدة"
},
"csvToTsv": {
"description": "قم بتحميل ملف CSV الخاص بك في النموذج أدناه وسيتم تحويله تلقائيًا إلى ملف TSV. في خيارات الأداة، يمكنك تخصيص تنسيق CSV المدخل - تحديد فاصل الحقول وحرف الاقتباس ورمز التعليق، بالإضافة إلى تخطي أسطر CSV الفارغة، واختيار ما إذا كنت تريد الحفاظ على رؤوس أعمدة CSV.",
"longDescription": "تحول هذه الأداة بيانات القيم المفصولة بفواصل (CSV) إلى بيانات القيم المفصولة بعلامات تبويب (TSV). كل من CSV و TSV هما تنسيقان شائعان لتخزين البيانات الجدولية لكنهما يستخدمان فواصل مختلفة لفصل القيم - يستخدم CSV الفواصل (",
"shortDescription": "تحويل بيانات CSV إلى تنسيق TSV.",
"title": "تحويل CSV إلى TSV"
},
"csvToXml": {
"description": "تحويل ملفات CSV إلى تنسيق XML مع خيارات قابلة للتخصيص.",
"shortDescription": "تحويل بيانات CSV إلى تنسيق XML.",
"title": "تحويل CSV إلى XML"
},
"csvToYaml": {
"description": "ما عليك سوى تحميل ملف CSV الخاص بك في النموذج أدناه وسيتم تحويله تلقائيًا إلى ملف YAML. في خيارات الأداة، يمكنك تحديد حرف فاصل الحقول وحرف اقتباس الحقل وحرف التعليق لتكييف الأداة مع تنسيقات CSV المخصصة. بالإضافة إلى ذلك، يمكنك تحديد تنسيق YAML الإخراج: تنسيق يحافظ على رؤوس CSV أو تنسيق يستبعد رؤوس CSV.",
"longDescription": "تحول هذه الأداة بيانات CSV (القيم المفصولة بفواصل) إلى بيانات YAML (لغة ترميز أخرى). CSV هو تنسيق جدولي بسيط يُستخدم لتمثيل أنواع البيانات الشبيهة بالمصفوفة المكونة من صفوف وأعمدة. من ناحية أخرى، YAML هو تنسيق أكثر تقدمًا (في الواقع مجموعة فرعية من JSON)، والذي ينشئ بيانات أكثر قابلية للقراءة للتسلسل، ويدعم القوائم والقواميس والكائنات المتداخلة. يدعم هذا البرنامج تنسيقات CSV المدخلة المختلفة - يمكن أن تكون البيانات المدخلة مفصولة بفواصل (افتراضي)، أو مفصولة بفواصل منقوطة، أو مفصولة بأنابيب، أو تستخدم فاصلًا مختلفًا تمامًا. يمكنك تحديد الفاصل الدقيق الذي تستخدمه بياناتك في الخيارات. وبالمثل، في الخيارات، يمكنك تحديد حرف الاقتباس المستخدم لتغليف حقول CSV (افتراضيًا رمز اقتباس مزدوج). يمكنك أيضًا تخطي الأسطر التي تبدأ بالتعليقات عن طريق تحديد رموز التعليق في الخيارات. هذا يسمح لك بالحفاظ على بياناتك نظيفة عن طريق تخطي الأسطر غير الضرورية. هناك طريقتان لتحويل CSV إلى YAML. الطريقة الأولى تحول كل صف CSV إلى قائمة YAML. الطريقة الثانية تستخرج الرؤوس من صف CSV الأول وتنشئ كائنات YAML بمفاتيح بناءً على هذه الرؤوس. يمكنك أيضًا تخصيص تنسيق YAML الإخراج عن طريق تحديد عدد المسافات للمسافة البادئة لبنى YAML. إذا كنت بحاجة إلى إجراء التحويل العكسي، أي تحويل YAML إلى CSV، يمكنك استخدام أداة تحويل YAML إلى CSV الخاصة بنا. Csv-abulous!",
"shortDescription": "تحويل ملف CSV إلى ملف YAML بسرعة.",
"title": "تحويل CSV إلى YAML"
},
"findIncompleteCsvRecords": {
"checkingOptions": "خيارات الفحص",
"commentCharacterDescription": "أدخل الحرف الذي يشير إلى بداية سطر تعليق. سيتم تخطي الأسطر التي تبدأ بهذا الرمز.",
"csvInputOptions": "خيارات إدخال CSV",
"csvSeparatorDescription": "أدخل الحرف المستخدم لتحديد الأعمدة في ملف CSV المدخل.",
"deleteLinesWithNoData": "حذف الأسطر التي لا تحتوي على بيانات",
"deleteLinesWithNoDataDescription": "إزالة الأسطر الفارغة من ملف CSV المدخل.",
"description": "ما عليك سوى تحميل ملف CSV الخاص بك في النموذج أدناه وستتحقق هذه الأداة تلقائيًا مما إذا كان أي من الصفوف أو الأعمدة مفقودًا قيمًا. في خيارات الأداة، يمكنك ضبط تنسيق ملف الإدخال (تحديد الفاصل وحرف الاقتباس وحرف التعليق). بالإضافة إلى ذلك، يمكنك تمكين التحقق من القيم الفارغة، وتخطي الأسطر الفارغة، وتعيين حد لعدد رسائل الخطأ في الإخراج.",
"findEmptyValues": "البحث عن القيم الفارغة",
"findEmptyValuesDescription": "عرض رسالة حول حقول CSV الفارغة (هذه ليست حقولاً مفقودة ولكنها حقول لا تحتوي على أي شيء).",
"inputTitle": "إدخال CSV",
"limitNumberOfMessages": "الحد من عدد الرسائل",
"messageLimitDescription": "تعيين حد عدد الرسائل في الإخراج.",
"quoteCharacterDescription": "أدخل حرف الاقتباس المستخدم لاقتباس حقول CSV المدخلة.",
"resultTitle": "حالة CSV",
"shortDescription": "البحث بسرعة عن الصفوف والأعمدة في CSV التي تفتقد قيمًا.",
"title": "البحث عن سجلات CSV غير المكتملة",
"toolInfo": {
"title": "ما هو {{title}}؟"
}
},
"insertCsvColumns": {
"appendColumns": "إلحاق الأعمدة",
"commentCharacterDescription": "أدخل الحرف الذي يشير إلى بداية سطر تعليق. سيتم تخطي الأسطر التي تبدأ بهذا الرمز.",
"csvOptions": "خيارات CSV",
"csvSeparator": "فاصل CSV",
"csvToInsert": "CSV المراد إدراجه",
"csvToInsertDescription": "أدخل عمودًا واحدًا أو أكثر تريد إدراجه في CSV. يجب أن يكون الحرف المستخدم لتحديد الأعمدة هو نفسه الموجود في ملف CSV المدخل. ملاحظة: سيتم تجاهل الأسطر الفارغة",
"customFillDescription": "إذا كان ملف CSV المدخل غير مكتمل (قيم مفقودة)، فأضف حقولاً فارغة أو رموزًا مخصصة إلى السجلات لإنشاء CSV منسق بشكل جيد؟",
"customFillValueDescription": "استخدم هذه القيمة المخصصة لملء الحقول المفقودة. (يعمل فقط مع وضع \"القيم المخصصة\" أعلاه.)",
"customPosition": "موضع مخصص",
"customPositionOptionsDescription": "حدد الطريقة لإدراج الأعمدة في ملف CSV.",
"description": "إضافة أعمدة جديدة إلى بيانات CSV في مواضع محددة.",
"fillWithCustomValues": "الملء بالقيم المخصصة",
"fillWithEmptyValues": "الملء بقيم فارغة",
"headerName": "اسم الرأس",
"headerNameDescription": "رأس العمود الذي تريد إدراج الأعمدة بعده.",
"inputTitle": "إدخال CSV",
"insertingPositionDescription": "حدد مكان إدراج الأعمدة في ملف CSV.",
"position": "الموضع",
"positionOptions": "خيارات الموضع",
"prependColumns": "إلحاق الأعمدة في البداية",
"quoteCharDescription": "أدخل حرف الاقتباس المستخدم لاقتباس حقول CSV المدخلة.",
"resultTitle": "إخراج CSV",
"rowNumberDescription": "رقم العمود الذي تريد إدراج الأعمدة بعده.",
"separatorDescription": "أدخل الحرف المستخدم لتحديد الأعمدة في ملف CSV المدخل.",
"shortDescription": "إدراج عمود واحد أو أكثر بسرعة في أي مكان في ملف CSV.",
"title": "إدراج أعمدة CSV",
"toolInfo": {
"description": "تتيح لك هذه الأداة إدراج أعمدة جديدة في بيانات CSV في مواضع محددة. يمكنك الإلحاق في البداية أو النهاية أو إدراج الأعمدة في مواضع مخصصة بناءً على أسماء الرؤوس أو أرقام الأعمدة.",
"title": "إدراج أعمدة CSV"
}
},
"swapCsvColumns": {
"description": "ما عليك سوى تحميل ملف CSV الخاص بك في النموذج أدناه، وتحديد الأعمدة المراد تبديلها، وستقوم الأداة تلقائيًا بتغيير مواضع الأعمدة المحددة في ملف الإخراج. في خيارات الأداة، يمكنك تحديد مواضع الأعمدة أو الأسماء التي تريد تبديلها، بالإضافة إلى إصلاح البيانات غير المكتملة واختياريًا إزالة السجلات الفارغة والسجلات التي تم التعليق عليها.",
"longDescription": "تعيد هذه الأداة تنظيم بيانات CSV عن طريق تبديل مواضع أعمدتها. يمكن أن يعزز تبديل الأعمدة قابلية قراءة ملف CSV من خلال وضع البيانات المستخدمة بشكل متكرر معًا أو في المقدمة لتسهيل مقارنة البيانات وتحريرها. على سبيل المثال، يمكنك تبديل العمود الأول مع الأخير أو تبديل العمود الثاني مع الثالث. لتبديل الأعمدة بناءً على مواضعها، حدد",
"shortDescription": "إعادة ترتيب أعمدة CSV.",
"title": "تبديل أعمدة CSV"
},
"transposeCsv": {
"description": "ما عليك سوى تحميل ملف CSV الخاص بك في النموذج أدناه، وستقوم هذه الأداة تلقائيًا بتبديل CSV الخاص بك. في خيارات الأداة، يمكنك تحديد الحرف الذي يبدأ أسطر التعليقات في CSV لإزالتها. بالإضافة إلى ذلك، إذا كان CSV غير مكتمل (قيم مفقودة)، يمكنك استبدال القيم المفقودة بالحرف الفارغ أو حرف مخصص.",
"longDescription": "تقوم هذه الأداة بتبديل القيم المفصولة بفواصل (CSV). تعامل CSV كمصفوفة من البيانات وتقلب جميع العناصر عبر القطر الرئيسي. يحتوي الإخراج على نفس بيانات CSV الموجودة في المدخل، لكن الآن أصبحت جميع الصفوف أعمدة، وأصبحت جميع الأعمدة صفوفًا. بعد التبديل، سيكون لملف CSV أبعاد معاكسة. على سبيل المثال، إذا كان ملف الإدخال يحتوي على 4 أعمدة و 3 صفوف، فسيحتوي ملف الإخراج على 3 أعمدة و 4 صفوف. أثناء التحويل، ينظف البرنامج أيضًا البيانات من الأسطر غير الضرورية ويصحح البيانات غير المكتملة. على وجه التحديد، تحذف الأداة تلقائيًا جميع السجلات الفارغة والتعليقات التي تبدأ بحرف معين، والذي يمكنك تعيينه في الخيار. بالإضافة إلى ذلك، في الحالات التي تكون فيها بيانات CSV تالفة أو مفقودة، تكمل الأداة الملف بحقول فارغة أو حقول مخصصة يمكن تحديدها في الخيارات. Csv-abulous!",
"shortDescription": "تبديل ملف CSV بسرعة.",
"title": "تبديل CSV"
}
}

View file

@ -0,0 +1,105 @@
{
"changeColors": {
"description": "تغيير الألوان في الصورة بسهولة.",
"shortDescription": "تبديل الألوان في الصورة بسرعة",
"title": "تغيير الألوان في الصورة"
},
"changeOpacity": {
"description": "قم بتعديل شفافية صورك بسهولة. ما عليك سوى تحميل صورتك، واستخدام شريط التمرير لضبط مستوى الشفافية المطلوب بين 0 (شفاف تمامًا) و 1 (معتم تمامًا)، وتنزيل الصورة المعدلة.",
"shortDescription": "ضبط شفافية الصور",
"title": "تغيير شفافية الصورة"
},
"compress": {
"compressedSize": "الحجم المضغوط",
"compressionOptions": "خيارات الضغط",
"description": "تقليل حجم ملف الصورة مع الحفاظ على الجودة.",
"failedToCompress": "فشل ضغط الصورة. يرجى المحاولة مرة أخرى.",
"fileSizes": "أحجام الملفات",
"inputTitle": "إدخال الصورة",
"maxFileSizeDescription": "الحد الأقصى لحجم الملف بالميجابايت",
"originalSize": "الحجم الأصلي",
"qualityDescription": "نسبة جودة الصورة (كلما قلت كلما صغر حجم الملف)",
"resultTitle": "الصورة المضغوطة",
"shortDescription": "ضغط الصور لتقليل حجم الملف مع الحفاظ على جودة معقولة.",
"title": "ضغط الصورة"
},
"compressPng": {
"description": "هذا برنامج لضغط صور PNG. بمجرد لصق صورة PNG الخاصة بك في منطقة الإدخال، سيضغطها البرنامج ويعرض النتيجة في منطقة الإخراج. في الخيارات، يمكنك ضبط مستوى الضغط، بالإضافة إلى العثور على أحجام ملفات الصور القديمة والجديدة.",
"shortDescription": "ضغط PNG بسرعة",
"title": "ضغط PNG"
},
"convertJgpToPng": {
"description": "قم بتحويل صور JPG الخاصة بك إلى PNG بسرعة. ما عليك سوى استيراد صورة PNG الخاصة بك في المحرر على اليسار",
"shortDescription": "تحويل صور JPG إلى PNG بسرعة",
"title": "تحويل JPG إلى PNG"
},
"convertToJpg": {
"description": "تحويل تنسيقات الصور المختلفة (PNG، GIF، TIF، PSD، SVG، WEBP، HEIC، RAW) إلى JPG مع إعدادات مخصصة للجودة ولون الخلفية.",
"shortDescription": "تحويل الصور إلى JPG مع التحكم في الجودة",
"title": "تحويل الصور إلى JPG"
},
"createTransparent": {
"description": "إنشاء صور شفافة بسهولة.",
"shortDescription": "جعل الصورة شفافة بسرعة",
"title": "إنشاء PNG شفاف"
},
"crop": {
"description": "اقتصاص الصور لإزالة المناطق غير المرغوب فيها.",
"inputTitle": "إدخال الصورة",
"resultTitle": "الصورة المقتصة",
"shortDescription": "اقتصاص الصور بسرعة.",
"title": "اقتصاص الصورة"
},
"editor": {
"description": "محرر صور متقدم مع أدوات للاقتصاص والتدوير والتعليق وضبط الألوان وإضافة العلامات المائية. قم بتحرير صورك باستخدام أدوات احترافية مباشرة في متصفحك.",
"shortDescription": "تحرير الصور بأدوات وميزات متقدمة",
"title": "محرر الصور"
},
"imageToText": {
"description": "استخراج النص من الصور (JPG، PNG) باستخدام التعرف الضوئي على الأحرف (OCR).",
"shortDescription": "استخراج النص من الصور باستخدام OCR.",
"title": "الصورة إلى نص (OCR)"
},
"qrCode": {
"description": "إنشاء رموز QR لأنواع البيانات المختلفة: عنوان URL، نص، بريد إلكتروني، هاتف، رسالة نصية، WiFi، vCard، والمزيد.",
"shortDescription": "إنشاء رموز QR مخصصة لتنسيقات البيانات المختلفة.",
"title": "منشئ رمز QR"
},
"removeBackground": {
"description": "إزالة الخلفيات من الصور تلقائيًا.",
"shortDescription": "إزالة الخلفيات من الصور تلقائيًا",
"title": "إزالة الخلفية من الصورة"
},
"resize": {
"description": "تغيير حجم الصور إلى أبعاد مختلفة.",
"dimensionType": "نوع البُعد",
"heightDescription": "الارتفاع (بالبكسل)",
"inputTitle": "إدخال الصورة",
"maintainAspectRatio": "الحفاظ على نسبة العرض إلى الارتفاع",
"maintainAspectRatioDescription": "الحفاظ على نسبة العرض إلى الارتفاع الأصلية للصورة.",
"percentage": "النسبة المئوية",
"percentageDescription": "النسبة المئوية من الحجم الأصلي (مثلاً، 50 للنصف، 200 للضعف)",
"resizeByPercentage": "تغيير الحجم بالنسبة المئوية",
"resizeByPercentageDescription": "تغيير الحجم عن طريق تحديد نسبة مئوية من الحجم الأصلي.",
"resizeByPixels": "تغيير الحجم بالبكسل",
"resizeByPixelsDescription": "تغيير الحجم عن طريق تحديد الأبعاد بالبكسل.",
"resizeMethod": "طريقة تغيير الحجم",
"resultTitle": "الصورة بحجم جديد",
"setHeight": "تعيين الارتفاع",
"setHeightDescription": "تحديد الارتفاع بالبكسل وحساب العرض بناءً على نسبة العرض إلى الارتفاع.",
"setWidth": "تعيين العرض",
"setWidthDescription": "تحديد العرض بالبكسل وحساب الارتفاع بناءً على نسبة العرض إلى الارتفاع.",
"shortDescription": "تغيير حجم الصور بسهولة.",
"title": "تغيير حجم الصورة",
"toolInfo": {
"description": "تتيح لك هذه الأداة تغيير حجم صور JPG أو PNG أو SVG أو GIF. يمكنك تغيير الحجم عن طريق تحديد الأبعاد بالبكسل أو بالنسبة المئوية، مع خيارات للحفاظ على نسبة العرض إلى الارتفاع الأصلية.",
"title": "تغيير حجم الصورة"
},
"widthDescription": "العرض (بالبكسل)"
},
"rotate": {
"description": "تدوير صورة بزاوية محددة.",
"shortDescription": "تدوير الصورة بسهولة.",
"title": "تدوير الصورة"
}
}

View file

@ -0,0 +1,67 @@
{
"comparison": {
"description": "مقارنة كائنين JSON لتحديد الاختلافات في البنية والقيم.",
"shortDescription": "البحث عن الاختلافات بين كائنين JSON",
"title": "مقارنة JSON"
},
"escapeJson": {
"description": "تجاهل الأحرف الخاصة في سلاسل JSON. تحويل بيانات JSON إلى تنسيق متجاهل بشكل صحيح للنقل أو التخزين الآمن.",
"shortDescription": "تجاهل الأحرف الخاصة في JSON",
"title": "تجاهل JSON"
},
"jsonToXml": {
"description": "تحويل بيانات JSON إلى تنسيق XML. تحويل كائنات JSON المنظمة إلى مستندات XML متكاملة.",
"shortDescription": "تحويل JSON إلى تنسيق XML",
"title": "JSON إلى XML"
},
"minify": {
"description": "إزالة جميع المسافات البيضاء غير الضرورية من JSON.",
"inputTitle": "إدخال JSON",
"resultTitle": "JSON مصغر",
"shortDescription": "تصغير JSON عن طريق إزالة المسافات البيضاء",
"title": "تصغير JSON",
"toolInfo": {
"description": "تصغير JSON هو عملية إزالة جميع أحرف المسافات البيضاء غير الضرورية من بيانات JSON مع الحفاظ على صلاحيتها. يتضمن ذلك إزالة المسافات والأسطر الجديدة والمسافات البادئة التي ليست مطلوبة لتحليل JSON بشكل صحيح. يقلل التصغير من حجم بيانات JSON، مما يجعلها أكثر كفاءة للتخزين والنقل مع الحفاظ على نفس بنية البيانات والقيم بالضبط.",
"title": "ما هو تصغير JSON؟"
}
},
"prettify": {
"description": "تنسيق JSON بمسافات بادئة ومسافات مناسبة.",
"indentation": "المسافة البادئة",
"inputTitle": "إدخال JSON",
"resultTitle": "JSON منسق",
"shortDescription": "تنسيق وتجميل كود JSON",
"title": "تجميل JSON",
"toolInfo": {
"description": "تتيح لك هذه الأداة تنسيق بيانات JSON بمسافات بادئة ومسافات مناسبة، مما يجعلها أكثر قابلية للقراءة وأسهل في العمل معها.",
"title": "تجميل JSON"
},
"useSpaces": "استخدام المسافات",
"useSpacesDescription": "إضافة مسافة بادئة للمخرجات بالمسافات",
"useTabs": "استخدام علامات التبويب",
"useTabsDescription": "إضافة مسافة بادئة للمخرجات بعلامات التبويب."
},
"stringify": {
"description": "تحويل كائنات JavaScript إلى تنسيق سلسلة JSON. تسلسل بنى البيانات إلى سلاسل JSON للتخزين أو النقل.",
"shortDescription": "تحويل الكائنات إلى سلسلة JSON",
"title": "تحويل JSON إلى سلسلة"
},
"tsvToJson": {
"description": "تحويل بيانات TSV (القيم المفصولة بعلامات التبويب) إلى تنسيق JSON. تحويل البيانات الجدولية إلى كائنات JSON منظمة.",
"shortDescription": "تحويل TSV إلى تنسيق JSON",
"title": "TSV إلى JSON"
},
"validateJson": {
"description": "التحقق مما إذا كان JSON صالحًا ومنسقًا بشكل جيد.",
"inputTitle": "إدخال JSON",
"invalidJson": "❌ {{error}}",
"resultTitle": "نتيجة التحقق",
"shortDescription": "التحقق من صحة كود JSON للكشف عن الأخطاء",
"title": "التحقق من صحة JSON",
"toolInfo": {
"description": "JSON (JavaScript Object Notation) هو تنسيق خفيف الوزن لتبادل البيانات. يضمن التحقق من صحة JSON أن بنية البيانات تتوافق مع معيار JSON. يجب أن يحتوي كائن JSON الصالح على: - أسماء الخصائص محاطة بعلامات اقتباس مزدوجة. - أقواس معقوفة {} متوازنة بشكل صحيح. - عدم وجود فواصل زائدة بعد آخر زوج مفتاح-قيمة. - تداخل صحيح للكائنات والمصفوفات. تتحقق هذه الأداة من JSON المدخل وتوفر ملاحظات للمساعدة في تحديد وإصلاح الأخطاء الشائعة.",
"title": "ما هو التحقق من صحة JSON؟"
},
"validJson": "✅ JSON صالح"
}
}

258
public/locales/ar/list.json Normal file
View file

@ -0,0 +1,258 @@
{
"duplicate": {
"concatenate": "دمج",
"concatenateDescription": "دمج النسخ (إذا تم إلغاء التحديد، سيتم تشابك العناصر)",
"copyDescription": "عدد النسخ (يمكن أن يكون كسريًا)",
"description": "أبسط أداة في العالم قائمة على المتصفح لتكرار عناصر القائمة. أدخل قائمتك وحدد معايير التكرار لإنشاء نسخ من العناصر. مثالي لتوسيع البيانات أو الاختبار أو إنشاء أنماط متكررة.",
"duplicationOptions": "خيارات التكرار",
"error": "خطأ",
"example1Description": "يوضح هذا المثال كيفية تكرار قائمة من الكلمات.",
"example1Title": "تكرار بسيط",
"example2Description": "يوضح هذا المثال كيفية تكرار قائمة بترتيب عكسي.",
"example2Title": "تكرار عكسي",
"example3Description": "يوضح هذا المثال كيفية تشابك العناصر بدلاً من دمجها.",
"example3Title": "تشابك العناصر",
"example4Description": "يوضح هذا المثال كيفية تكرار قائمة بعدد كسري من النسخ.",
"example4Title": "تكرار كسري",
"examples": {
"fractional": {
"description": "يوضح هذا المثال كيفية تكرار قائمة بعدد كسري من النسخ.",
"title": "تكرار كسري"
},
"interweave": {
"description": "يوضح هذا المثال كيفية تشابك العناصر بدلاً من دمجها.",
"title": "تشابك العناصر"
},
"reverse": {
"description": "يوضح هذا المثال كيفية تكرار قائمة بترتيب عكسي.",
"title": "تكرار عكسي"
},
"simple": {
"description": "يوضح هذا المثال كيفية تكرار قائمة من الكلمات.",
"title": "تكرار بسيط"
}
},
"inputTitle": "قائمة الإدخال",
"joinSeparatorDescription": "الفاصل لضم القائمة المكررة",
"resultTitle": "القائمة المكررة",
"reverse": "عكس",
"reverseDescription": "عكس العناصر المكررة",
"shortDescription": "تكرار عناصر القائمة بمعايير محددة",
"splitByRegex": "التقسيم بتعبير نمطي",
"splitBySymbol": "التقسيم برمز",
"splitOptions": "خيارات التقسيم",
"splitSeparatorDescription": "الفاصل لتقسيم القائمة",
"title": "تكرار",
"toolInfo": {
"description": "تتيح لك هذه الأداة تكرار العناصر في القائمة. يمكنك تحديد عدد النسخ (بما في ذلك القيم الكسرية)، والتحكم في ما إذا كانت العناصر مدمجة أو متشابكة، وحتى عكس العناصر المكررة. إنها مفيدة لإنشاء أنماط متكررة أو إنشاء بيانات اختبار أو توسيع القوائم بمحتوى يمكن التنبؤ به.",
"title": "تكرار القائمة"
},
"unknownError": "حدث خطأ غير معروف",
"validation": {
"copyMustBeNumber": "يجب أن يكون عدد النسخ رقمًا",
"copyMustBePositive": "يجب أن يكون عدد النسخ موجبًا",
"copyRequired": "عدد النسخ مطلوب",
"joinSeparatorRequired": "فاصل الضم مطلوب",
"separatorRequired": "الفاصل مطلوب"
}
},
"findMostPopular": {
"description": "أبسط أداة في العالم قائمة على المتصفح للعثور على العناصر الأكثر شيوعًا في القائمة. أدخل قائمتك واحصل فورًا على العناصر التي تظهر بشكل أكثر تكرارًا. مثالي لتحليل البيانات أو تحديد الاتجاهات أو العثور على العناصر المشتركة.",
"displayFormatDescription": "كيفية عرض عناصر القائمة الأكثر شيوعًا؟",
"displayOptions": {
"count": "عرض عدد العناصر",
"percentage": "عرض نسبة العناصر",
"total": "عرض إجمالي العناصر"
},
"extractListItems": "كيفية استخراج عناصر القائمة؟",
"ignoreItemCase": "تجاهل حالة العنصر",
"ignoreItemCaseDescription": "مقارنة جميع عناصر القائمة بأحرف صغيرة.",
"inputTitle": "قائمة الإدخال",
"itemComparison": "مقارنة العناصر",
"outputFormat": "تنسيق إخراج العناصر العليا",
"removeEmptyItems": "إزالة العناصر الفارغة",
"removeEmptyItemsDescription": "تجاهل العناصر الفارغة من المقارنة.",
"resultTitle": "العناصر الأكثر شيوعًا",
"shortDescription": "العثور على العناصر الأكثر تكرارًا",
"sortOptions": {
"alphabetic": "فرز أبجديًا",
"count": "فرز حسب العدد"
},
"sortingMethodDescription": "حدد طريقة الفرز.",
"splitOperators": {
"regex": {
"description": "فصل عناصر قائمة الإدخال بتعبير نمطي.",
"title": "استخدام تعبير نمطي للتقسيم"
},
"symbol": {
"description": "فصل عناصر قائمة الإدخال بحرف.",
"title": "استخدام رمز للتقسيم"
}
},
"splitSeparatorDescription": "تعيين رمز فاصل أو تعبير نمطي.",
"title": "العثور على الأكثر شيوعًا",
"trimItems": "قص عناصر القائمة العليا",
"trimItemsDescription": "إزالة المسافات البادئة والنهائية قبل مقارنة العناصر"
},
"findUnique": {
"caseSensitiveItems": "عناصر حساسة لحالة الأحرف",
"caseSensitiveItemsDescription": "إخراج العناصر بحالات أحرف مختلفة كعناصر فريدة في القائمة.",
"delimiterDescription": "تعيين رمز فاصل أو تعبير نمطي.",
"description": "أبسط أداة في العالم قائمة على المتصفح للعثور على العناصر الفريدة في القائمة. أدخل قائمتك واحصل فورًا على جميع القيم الفريدة مع إزالة التكرارات. مثالي لتنظيف البيانات أو إزالة التكرارات أو العثور على العناصر المميزة.",
"findAbsolutelyUniqueItems": "العثور على العناصر الفريدة تمامًا",
"findAbsolutelyUniqueItemsDescription": "عرض العناصر فقط من القائمة التي توجد في نسخة واحدة.",
"inputListDelimiter": "فاصل قائمة الإدخال",
"inputTitle": "قائمة الإدخال",
"outputListDelimiter": "فاصل قائمة الإخراج",
"resultTitle": "العناصر الفريدة",
"shortDescription": "العثور على العناصر الفريدة في القائمة",
"skipEmptyItems": "تخطي العناصر الفارغة",
"skipEmptyItemsDescription": "عدم تضمين عناصر القائمة الفارغة في الإخراج.",
"title": "العثور على الفريد",
"trimItems": "قص عناصر القائمة",
"trimItemsDescription": "إزالة المسافات البادئة والنهائية قبل مقارنة العناصر.",
"uniqueItemOptions": "خيارات العناصر الفريدة"
},
"group": {
"deleteEmptyItems": "حذف العناصر الفارغة",
"deleteEmptyItemsDescription": "تجاهل العناصر الفارغة وعدم تضمينها في المجموعات.",
"description": "أبسط أداة في العالم قائمة على المتصفح لتجميع عناصر القائمة. أدخل قائمتك وحدد معايير التجميع لتنظيم العناصر في مجموعات منطقية. مثالي لتصنيف البيانات أو تنظيم المعلومات أو إنشاء قوائم منظمة. يدعم الفواصل المخصصة وخيارات التجميع المتنوعة.",
"emptyItemsAndPadding": "العناصر الفارغة والحشو",
"groupNumberDescription": "عدد العناصر في المجموعة",
"groupSeparatorDescription": "حرف فاصل المجموعة",
"groupSizeAndSeparators": "حجم المجموعة والفواصل",
"inputItemSeparator": "فاصل عناصر الإدخال",
"inputTitle": "قائمة الإدخال",
"itemSeparatorDescription": "حرف فاصل العناصر",
"leftWrapDescription": "رمز الالتفاف الأيسر للمجموعة.",
"padNonFullGroups": "حشو المجموعات غير الكاملة",
"padNonFullGroupsDescription": "ملء المجموعات غير الكاملة بعنصر مخصص (أدخل أدناه).",
"paddingCharDescription": "استخدم هذا الحرف أو العنصر لحشو المجموعات غير الكاملة.",
"resultTitle": "العناصر المجمعة",
"rightWrapDescription": "رمز الالتفاف الأيمن للمجموعة.",
"shortDescription": "تجميع عناصر القائمة حسب الخصائص المشتركة",
"splitOperators": {
"regex": {
"description": "فصل عناصر قائمة الإدخال بتعبير نمطي.",
"title": "استخدام تعبير نمطي للتقسيم"
},
"symbol": {
"description": "فصل عناصر قائمة الإدخال بحرف.",
"title": "استخدام رمز للتقسيم"
}
},
"splitSeparatorDescription": "تعيين رمز فاصل أو تعبير نمطي.",
"title": "تجميع"
},
"reverse": {
"description": "هذا تطبيق قائم على المتصفح بسيط للغاية يطبع جميع عناصر القائمة بالعكس. يمكن فصل عناصر الإدخال بأي رمز ويمكنك أيضًا تغيير فاصل عناصر القائمة المعكوسة.",
"inputTitle": "قائمة الإدخال",
"itemSeparator": "فاصل العناصر",
"itemSeparatorDescription": "تعيين رمز فاصل أو تعبير نمطي.",
"outputListOptions": "خيارات قائمة الإخراج",
"outputSeparatorDescription": "فاصل عناصر قائمة الإخراج.",
"resultTitle": "القائمة المعكوسة",
"shortDescription": "عكس القائمة بسرعة",
"splitOperators": {
"regex": {
"description": "فصل عناصر قائمة الإدخال بتعبير نمطي.",
"title": "استخدام تعبير نمطي للتقسيم"
},
"symbol": {
"description": "فصل عناصر قائمة الإدخال بحرف.",
"title": "استخدام رمز للتقسيم"
}
},
"splitterMode": "وضع التقسيم",
"title": "عكس",
"toolInfo": {
"description": "باستخدام هذه الأداة، يمكنك عكس ترتيب العناصر في القائمة. تقوم الأداة أولاً بتقسيم قائمة الإدخال إلى عناصر فردية ثم تكرر خلالها من العنصر الأخير إلى العنصر الأول، وطباعة كل عنصر إلى الإخراج أثناء التكرار. قد تحتوي قائمة الإدخال على أي شيء يمكن تمثيله كبيانات نصية، والتي تشمل الأرقام والأعداد والسلاسل والكلمات والجمل وما إلى ذلك. يمكن أن يكون فاصل عناصر الإدخال أيضًا تعبيرًا نمطيًا. على سبيل المثال، سيسمح لك التعبير النمطي /[;,]/ باستخدام العناصر المفصولة بفاصلة أو فاصلة منقوطة. يمكن تخصيص فواصل عناصر قائمة الإدخال والإخراج في الخيارات. بشكل افتراضي، كلا قائمتي الإدخال والإخراج مفصولتان بفاصلة. رائع!",
"title": "ما هو عاكس القائمة؟"
}
},
"rotate": {
"description": "أبسط أداة في العالم قائمة على المتصفح لتدوير عناصر القائمة. أدخل قائمتك وحدد مقدار التدوير لنقل العناصر بعدد محدد من المواضع. مثالي لمعالجة البيانات أو التحولات الدائرية أو إعادة ترتيب القوائم.",
"shortDescription": "تدوير عناصر القائمة بمواضع محددة",
"title": "تدوير"
},
"shuffle": {
"delimiterDescription": "تعيين رمز فاصل أو تعبير نمطي.",
"description": "أبسط أداة في العالم قائمة على المتصفح لخلط عناصر القائمة. أدخل قائمتك واحصل فورًا على نسخة عشوائية مع عناصر بترتيب عشوائي. مثالي لإنشاء التنوع أو اختبار العشوائية أو خلط البيانات المرتبة.",
"inputListSeparator": "فاصل قائمة الإدخال",
"inputTitle": "قائمة الإدخال",
"joinSeparatorDescription": "استخدم هذا الفاصل في القائمة العشوائية.",
"outputLengthDescription": "إخراج هذا العدد الكثير من العناصر العشوائية",
"resultTitle": "القائمة المخلوطة",
"shortDescription": "عشوائية ترتيب عناصر القائمة",
"shuffledListLength": "طول القائمة المخلوطة",
"shuffledListSeparator": "فاصل القائمة المخلوطة",
"title": "خلط"
},
"sort": {
"caseSensitive": "فرز حساس لحالة الأحرف",
"caseSensitiveDescription": "فرز العناصر بأحرف كبيرة وصغيرة بشكل منفصل. تسبق الأحرف الكبيرة الأحرف الصغيرة في القائمة التصاعدية. (يعمل فقط في وضع الفرز الأبجدي.)",
"description": "أبسط أداة في العالم قائمة على المتصفح لفرز عناصر القائمة. أدخل قائمتك وحدد معايير الفرز لتنظيم العناصر بترتيب تصاعدي أو تنازلي. مثالي لتنظيم البيانات أو معالجة النص أو إنشاء قوائم مرتبة.",
"inputItemSeparator": "فاصل عناصر الإدخال",
"inputTitle": "قائمة الإدخال",
"joinSeparatorDescription": "استخدم هذا الرمز كموصل بين العناصر في القائمة المفروزة.",
"orderDescription": "حدد ترتيب الفرز.",
"orderOptions": {
"decreasing": "ترتيب تنازلي",
"increasing": "ترتيب تصاعدي"
},
"removeDuplicates": "إزالة التكرارات",
"removeDuplicatesDescription": "حذف عناصر القائمة المكررة.",
"resultTitle": "القائمة المفروزة",
"shortDescription": "فرز عناصر القائمة بترتيب محدد",
"sortMethod": "طريقة الفرز",
"sortMethodDescription": "حدد طريقة الفرز.",
"sortOptions": {
"alphabetic": "فرز أبجديًا",
"length": "فرز حسب الطول",
"numeric": "فرز رقميًا"
},
"sortedItemProperties": "خصائص العناصر المفروزة",
"splitOperators": {
"regex": {
"description": "فصل عناصر قائمة الإدخال بتعبير نمطي.",
"title": "استخدام تعبير نمطي للتقسيم"
},
"symbol": {
"description": "فصل عناصر قائمة الإدخال بحرف.",
"title": "استخدام رمز للتقسيم"
}
},
"splitSeparatorDescription": "تعيين رمز فاصل أو تعبير نمطي.",
"title": "فرز"
},
"truncate": {
"description": "أبسط أداة في العالم قائمة على المتصفح لاقتطاع القوائم. أدخل قائمتك وحدد العدد الأقصى من العناصر للاحتفاظ بها. مثالي لمعالجة البيانات أو إدارة القوائم أو تحديد طول المحتوى.",
"shortDescription": "اقتطاع القائمة إلى عدد محدد من العناصر",
"title": "اقتطاع"
},
"unwrap": {
"description": "أبسط أداة في العالم قائمة على المتصفح لفك التفاف عناصر القائمة. أدخل قائمتك الملفوفة وحدد معايير فك الالتفاف لتسطيح العناصر المنظمة. مثالي لمعالجة البيانات أو معالجة النص أو استخراج المحتوى من القوائم المنظمة.",
"shortDescription": "فك التفاف عناصر القائمة من التنسيق المنظم",
"title": "فك الالتفاف"
},
"wrap": {
"description": "إضافة نص قبل وبعد كل عنصر في القائمة.",
"inputTitle": "قائمة الإدخال",
"joinSeparatorDescription": "الفاصل لضم القائمة الملفوفة",
"leftTextDescription": "النص المراد إضافته قبل كل عنصر",
"removeEmptyItems": "إزالة العناصر الفارغة",
"resultTitle": "القائمة الملفوفة",
"rightTextDescription": "النص المراد إضافته بعد كل عنصر",
"shortDescription": "التفاف عناصر القائمة بمعايير محددة",
"splitByRegex": "التقسيم بتعبير نمطي",
"splitBySymbol": "التقسيم برمز",
"splitOptions": "خيارات التقسيم",
"splitSeparatorDescription": "الفاصل لتقسيم القائمة",
"title": "الالتفاف",
"toolInfo": {
"description": "تتيح لك هذه الأداة إضافة نص قبل وبعد كل عنصر في القائمة. يمكنك تحديد نص مختلف للجانبين الأيسر والأيمن، والتحكم في كيفية معالجة القائمة. إنها مفيدة لإضافة علامات اقتباس أو أقواس أو تنسيقات أخرى لعناصر القائمة أو إعداد البيانات لتنسيقات مختلفة أو إنشاء نص منظم.",
"title": "التفاف القائمة"
},
"wrapOptions": "خيارات الالتفاف"
}
}

View file

@ -0,0 +1,192 @@
{
"arithmeticSequence": {
"commonDifferenceDescription": "الفرق المشترك بين الحدود (d)",
"description": "إنشاء متتاليات حسابية بمعاملات قابلة للتخصيص.",
"firstTermDescription": "الحد الأول من المتتالية (a₁)",
"numberOfTermsDescription": "عدد الحدود المراد إنشاؤها (n)",
"outputFormat": "تنسيق الإخراج",
"resultTitle": "المتتالية المُنشأة",
"separatorDescription": "الفاصل بين الحدود",
"sequenceParameters": "معاملات المتتالية",
"shortDescription": "إنشاء متتاليات حسابية",
"title": "المتتالية الحسابية",
"toolInfo": {
"description": "المتتالية الحسابية هي تسلسل من الأرقام حيث يكون الفرق بين كل حدين متتاليين ثابتًا. يُسمى هذا الفرق الثابت بالفرق المشترك. بمعلومية الحد الأول (a₁) والفرق المشترك (d)، يمكن إيجاد كل حد بإضافة الفرق المشترك إلى الحد السابق.",
"title": "ما هي المتتالية الحسابية؟"
}
},
"generate": {
"arithmeticSequenceOption": "خيار المتتالية الحسابية",
"description": "إنشاء تسلسل من الأرقام بمعاملات قابلة للتخصيص.",
"numberOfElementsDescription": "عدد العناصر في المتتالية.",
"resultTitle": "الأرقام المُنشأة",
"separator": "الفاصل",
"separatorDescription": "فصل العناصر في المتتالية الحسابية بهذا الحرف.",
"shortDescription": "إنشاء أرقام عشوائية في نطاقات محددة",
"startSequenceDescription": "بدء المتتالية من هذا الرقم.",
"stepDescription": "زيادة كل عنصر بهذا المقدار",
"title": "إنشاء",
"toolInfo": {
"description": "تتيح لك هذه الأداة إنشاء تسلسل من الأرقام بمعاملات قابلة للتخصيص. يمكنك تحديد القيمة الابتدائية وحجم الخطوة وعدد العناصر.",
"title": "إنشاء الأرقام"
}
},
"ohmsLaw": {
"description": "حساب الجهد والتيار والمقاومة",
"longDescription": "تطبق هذه الآلة الحاسبة قانون أوم (V = I × R) لتحديد أي من المعاملات الكهربائية الثلاثة عندما يكون الاثنان الآخران معروفين. قانون أوم هو مبدأ أساسي في الهندسة الكهربائية يصف العلاقة بين الجهد (V) والتيار (I) والمقاومة (R). هذه الأداة ضرورية لهواة الإلكترونيات والمهندسين الكهربائيين والطلاب الذين يعملون مع الدوائر لحل القيم غير المعروفة في تصميماتهم الكهربائية بسرعة.",
"shortDescription": "حساب الجهد أو التيار أو المقاومة في الدوائر الكهربائية باستخدام قانون أوم",
"title": "قانون أوم"
},
"randomNumberGenerator": {
"description": "إنشاء أرقام عشوائية ضمن نطاق محدد مع خيارات قابلة للتخصيص.",
"error": {
"generationFailed": "فشل إنشاء الأرقام العشوائية. يرجى التحقق من معاملات الإدخال."
},
"info": {
"description": "مولد الأرقام العشوائية ينشئ أرقامًا غير قابلة للتنبؤ ضمن نطاق محدد. تستخدم هذه الأداة توليد أرقام عشوائية آمن تشفيريًا لضمان نتائج عشوائية حقيقية. مفيد للمحاكاة والألعاب والعينات الإحصائية وسيناريوهات الاختبار.",
"title": "ما هو مولد الأرقام العشوائية؟"
},
"longDescription": "إنشاء أرقام عشوائية ضمن نطاق محدد مع خيارات للأعداد الصحيحة أو الكسور العشرية، والسماح بالتكرارات أو منعها، وفرز النتائج. مثالي للمحاكاة والاختبار والألعاب والتحليل الإحصائي.",
"options": {
"generation": {
"allowDecimals": {
"description": "إنشاء أرقام عشرية بدلاً من الأعداد الصحيحة",
"title": "السماح بالأرقام العشرية"
},
"allowDuplicates": {
"description": "السماح بظهور نفس الرقم عدة مرات",
"title": "السماح بالتكرارات"
},
"countDescription": "عدد الأرقام العشوائية المراد إنشاؤها (1-10,000)",
"sortResults": {
"description": "فرز الأرقام المُنشأة بترتيب تصاعدي",
"title": "فرز النتائج"
},
"title": "خيارات الإنشاء"
},
"output": {
"separatorDescription": "الحرف (الأحرف) لفصل الأرقام المُنشأة",
"title": "إعدادات الإخراج"
},
"range": {
"maxDescription": "القيمة القصوى (شاملة)",
"minDescription": "القيمة الدنيا (شاملة)",
"title": "إعدادات النطاق"
}
},
"result": {
"count": "العدد",
"hasDuplicates": "يحتوي على تكرارات",
"isSorted": "مفروز",
"range": "النطاق",
"title": "الأرقام العشوائية المُنشأة"
},
"shortDescription": "إنشاء أرقام عشوائية في نطاقات مخصصة",
"title": "مولد الأرقام العشوائية"
},
"randomPortGenerator": {
"description": "إنشاء منافذ شبكة عشوائية ضمن نطاقات محددة مع خيارات قابلة للتخصيص.",
"error": {
"generationFailed": "فشل إنشاء المنافذ العشوائية. يرجى التحقق من معاملات الإدخال."
},
"info": {
"description": "مولد المنافذ العشوائية ينشئ أرقام منافذ شبكة غير قابلة للتنبؤ ضمن نطاقات محددة. تتبع هذه الأداة معايير أرقام منافذ IANA وتشمل تحديد الخدمات الشائعة. مفيد للتطوير والاختبار وتكوين الشبكة وتجنب تعارضات المنافذ.",
"title": "ما هو مولد المنافذ العشوائية؟"
},
"longDescription": "إنشاء منافذ شبكة عشوائية ضمن نطاقات محددة (معروفة، مسجلة، ديناميكية، أو مخصصة). مثالي للتطوير والاختبار وتكوين الشبكة. يتضمن تحديد خدمة المنفذ للمنافذ الشائعة.",
"options": {
"generation": {
"allowDuplicates": {
"description": "السماح بظهور نفس المنفذ عدة مرات",
"title": "السماح بالتكرارات"
},
"countDescription": "عدد المنافذ العشوائية المراد إنشاؤها (1-1,000)",
"sortResults": {
"description": "فرز المنافذ المُنشأة بترتيب تصاعدي",
"title": "فرز النتائج"
},
"title": "خيارات الإنشاء"
},
"output": {
"separatorDescription": "الحرف (الأحرف) لفصل المنافذ المُنشأة",
"title": "إعدادات الإخراج"
},
"range": {
"custom": "نطاق مخصص",
"dynamic": "المنافذ الديناميكية (49152-65535)",
"maxPortDescription": "رقم المنفذ الأقصى (1-65535)",
"minPortDescription": "رقم المنفذ الأدنى (1-65535)",
"registered": "المنافذ المسجلة (1024-49151)",
"title": "إعدادات نطاق المنفذ",
"wellKnown": "المنافذ المعروفة (1-1023)"
}
},
"result": {
"count": "العدد",
"hasDuplicates": "يحتوي على تكرارات",
"isSorted": "مفروز",
"portDetails": "تفاصيل المنفذ",
"range": "نطاق المنفذ",
"title": "المنافذ العشوائية المُنشأة"
},
"shortDescription": "إنشاء منافذ شبكة عشوائية",
"title": "مولد المنافذ العشوائية"
},
"slackline": {
"description": "حساب التوتر في حبل مشدود",
"longDescription": "تفترض هذه الآلة الحاسبة وجود حمل في منتصف الحبل",
"shortDescription": "حساب التوتر التقريبي لحبل مشدود أو حبل غسيل. لا تعتمد على هذا للسلامة.",
"title": "توتر الحبل المشدود"
},
"sphereArea": {
"description": "مساحة الكرة",
"longDescription": "تحدد هذه الآلة الحاسبة مساحة سطح الكرة باستخدام الصيغة A = 4πr². يمكنك إما إدخال نصف القطر لإيجاد مساحة السطح أو إدخال مساحة السطح لحساب نصف القطر المطلوب. هذه الأداة مفيدة للطلاب الذين يدرسون الهندسة، والمهندسين الذين يعملون مع الأجسام الكروية، وأي شخص يحتاج إلى إجراء حسابات تتعلق بالأسطح الكروية.",
"shortDescription": "حساب مساحة سطح الكرة بناءً على نصف قطرها",
"title": "مساحة الكرة"
},
"sphereVolume": {
"description": "حجم الكرة",
"longDescription": "تحسب هذه الآلة الحاسبة حجم الكرة باستخدام الصيغة V = (4/3)πr³. يمكنك إدخال نصف القطر أو القطر لإيجاد الحجم، أو إدخال الحجم لتحديد نصف القطر المطلوب. الأداة ذات قيمة للطلاب والمهندسين والمهنيين الذين يعملون مع الأجسام الكروية في مجالات مثل الفيزياء والهندسة والتصنيع.",
"shortDescription": "حساب حجم الكرة باستخدام نصف القطر أو القطر",
"title": "حجم الكرة"
},
"sum": {
"description": "حساب مجموع قائمة من الأرقام. أدخل الأرقام مفصولة بفواصل أو أسطر جديدة للحصول على مجموعها الكلي.",
"example1Description": "في هذا المثال، نحسب مجموع عشرة أعداد صحيحة موجبة. هذه الأعداد الصحيحة مدرجة كعمود ومجموعها الكلي يساوي 19494.",
"example1Title": "مجموع عشرة أرقام موجبة",
"example2Description": "يعكس هذا المثال عمودًا من عشرين اسمًا مكونًا من ثلاثة مقاطع ويطبع جميع الكلمات من الأسفل إلى الأعلى. لفصل عناصر القائمة، يستخدم الحرف \\n كفاصل عناصر الإدخال، مما يعني أن كل عنصر في سطره الخاص.",
"example2Title": "عد الأشجار في الحديقة",
"example3Description": "في هذا المثال، نجمع تسعين قيمة مختلفة معًا - أرقام موجبة وأرقام سالبة وأعداد صحيحة وكسور عشرية. نضبط فاصل الإدخال على الفاصلة وبعد جمعها معًا، نحصل على 0 كإخراج.",
"example3Title": "مجموع الأعداد الصحيحة والكسور العشرية",
"example4Description": "في هذا المثال، نحسب مجموع جميع الأرقام العشرة ونمكن خيار \\\"طباعة المجموع الجاري\\\". نحصل على القيم الوسيطة للمجموع في عملية الجمع. وبالتالي، لدينا التسلسل التالي في الإخراج: 0، 1 (0 + 1)، 3 (0 + 1 + 2)، 6 (0 + 1 + 2 + 3)، 10 (0 + 1 + 2 + 3 + 4)، وهكذا.",
"example4Title": "المجموع الجاري للأرقام",
"extractionTypes": {
"delimiter": {
"description": "قم بتخصيص فاصل الأرقام هنا. (افتراضيًا سطر جديد.)",
"title": "فاصل الأرقام"
},
"smart": {
"description": "اكتشاف الأرقام تلقائيًا في الإدخال.",
"title": "مجموع ذكي"
}
},
"inputTitle": "الإدخال",
"numberExtraction": "استخراج الأرقام",
"printRunningSum": "طباعة المجموع الجاري",
"printRunningSumDescription": "عرض المجموع أثناء حسابه خطوة بخطوة.",
"resultTitle": "الإجمالي",
"runningSum": "المجموع الجاري",
"shortDescription": "حساب مجموع الأرقام",
"title": "المجموع",
"toolInfo": {
"description": "هذه أداة عبر الإنترنت قائمة على المتصفح لحساب مجموع مجموعة من الأرقام. يمكنك إدخال الأرقام مفصولة بفاصلة أو مسافة أو أي حرف آخر، بما في ذلك فاصل الأسطر. يمكنك أيضًا ببساطة لصق جزء من البيانات النصية التي تحتوي على قيم رقمية تريد جمعها وستستخرجها الأداة وتجد مجموعها.",
"title": "ما هي آلة حاسبة مجموع الأرقام؟"
}
},
"voltageDropInWire": {
"description": "حساب انخفاض الجهد وفقدان الطاقة ذهابًا وإيابًا في كابل ثنائي الموصل",
"longDescription": "تساعد هذه الآلة الحاسبة في تحديد انخفاض الجهد وفقدان الطاقة في كابل كهربائي ثنائي الموصل. تأخذ في الاعتبار طول الكابل ومقياس السلك (المساحة المقطعية) ومقاومة المادة وتدفق التيار. تحسب الأداة انخفاض الجهد ذهابًا وإيابًا، والمقاومة الكلية للكابل، والطاقة المبددة كحرارة. هذا مفيد بشكل خاص للمهندسين الكهربائيين والكهربائيين والهواة عند تصميم الأنظمة الكهربائية لضمان بقاء مستويات الجهد ضمن الحدود المقبولة عند الحمل.",
"shortDescription": "حساب انخفاض الجهد وفقدان الطاقة في الكابلات الكهربائية بناءً على الطول والمادة والتيار",
"title": "انخفاض الجهد ذهابًا وإيابًا في الكابل"
}
}

114
public/locales/ar/pdf.json Normal file
View file

@ -0,0 +1,114 @@
{
"compressPdf": {
"compressedFileSize": "حجم الملف المضغوط",
"compressingPdf": "جاري ضغط PDF...",
"compressionLevel": "مستوى الضغط",
"compressionSettings": "إعدادات الضغط",
"description": "تقليل حجم ملف PDF مع الحفاظ على الجودة باستخدام Ghostscript",
"errorCompressingPdf": "فشل ضغط PDF: {{error}}",
"errorReadingPdf": "فشل قراءة ملف PDF. يرجى التأكد من أنه ملف PDF صالح.",
"fileSize": "حجم الملف الأصلي",
"highCompression": "ضغط عالي",
"highCompressionDescription": "أقصى تقليل لحجم الملف مع بعض فقدان الجودة",
"inputTitle": "إدخال PDF",
"longDescription": "ضغط ملفات PDF بشكل آمن في متصفحك باستخدام Ghostscript. لا تغادر ملفاتك جهازك أبدًا، مما يضمن خصوصية كاملة أثناء تقليل أحجام الملفات لمشاركة البريد الإلكتروني أو التحميل على المواقع الإلكترونية أو توفير مساحة التخزين. مدعوم بتقنية WebAssembly.",
"lowCompression": "ضغط منخفض",
"lowCompressionDescription": "تقليل طفيف لحجم الملف مع الحد الأدنى من فقدان الجودة",
"mediumCompression": "ضغط متوسط",
"mediumCompressionDescription": "توازن بين حجم الملف والجودة",
"pages": "عدد الصفحات",
"resultTitle": "PDF مضغوط",
"shortDescription": "ضغط ملفات PDF بشكل آمن في متصفحك",
"title": "ضغط PDF"
},
"editor": {
"description": "محرر PDF متقدم مع قدرات التعليق وملء النماذج والتظليل والتصدير. قم بتحرير ملفات PDF الخاصة بك مباشرة في المتصفح باستخدام أدوات احترافية بما في ذلك إدراج النص والرسم والتظليل والتوقيع وملء النماذج.",
"shortDescription": "تحرير ملفات PDF بأدوات تعليق وتوقيع وتحرير متقدمة",
"title": "محرر PDF"
},
"merge": {
"inputTitle": "إدخال PDF",
"loadingText": "استخراج الصفحات",
"resultTitle": "إخراج PDF مدمج",
"toolInfo": {
"description": "تتيح لك هذه الأداة دمج ملفات PDF متعددة في مستند واحد. لاستخدام الأداة، ما عليك سوى تحميل ملفات PDF التي تريد دمجها. ستجمع الأداة بعد ذلك جميع الصفحات من الملفات المدخلة في مستند PDF واحد.",
"title": "كيفية استخدام أداة دمج PDF؟"
}
},
"mergePdf": {
"description": "دمج ملفات PDF متعددة في مستند واحد.",
"inputTitle": "إدخال ملفات PDF",
"mergingPdfs": "دمج ملفات PDF",
"pdfOptions": "خيارات PDF",
"resultTitle": "PDF مدمج",
"shortDescription": "دمج ملفات PDF متعددة في مستند واحد",
"sortByFileName": "الترتيب حسب اسم الملف",
"sortByFileNameDescription": "ترتيب ملفات PDF أبجديًا حسب اسم الملف",
"sortByUploadOrder": "الترتيب حسب ترتيب التحميل",
"sortByUploadOrderDescription": "الحفاظ على ملفات PDF بالترتيب الذي تم تحميلها به",
"title": "دمج PDF",
"toolInfo": {
"description": "تتيح لك هذه الأداة دمج ملفات PDF متعددة في مستند واحد. يمكنك اختيار كيفية ترتيب ملفات PDF وستقوم الأداة بدمجها بالترتيب المحدد.",
"title": "دمج ملفات PDF"
}
},
"pdfToEpub": {
"description": "تحويل مستندات PDF إلى ملفات EPUB لتوافق أفضل مع قارئ الكتب الإلكترونية.",
"shortDescription": "تحويل ملفات PDF إلى تنسيق EPUB",
"title": "PDF إلى EPUB"
},
"pdfToPng": {
"description": "تحويل مستندات PDF إلى صور PNG.",
"longDescription": "قم بتحميل PDF وتحويل كل صفحة إلى صورة PNG عالية الجودة مباشرة في متصفحك. هذه الأداة مثالية لاستخراج المحتوى المرئي أو مشاركة الصفحات الفردية. لا يتم تحميل أي بيانات - كل شيء يعمل محليًا.",
"shortDescription": "تحويل PDF إلى صور PNG",
"title": "PDF إلى PNG"
},
"protectPdf": {
"description": "إضافة حماية بكلمة مرور إلى ملفات PDF الخاصة بك بشكل آمن في متصفحك",
"shortDescription": "حماية ملفات PDF بكلمة مرور بشكل آمن",
"title": "حماية PDF"
},
"rotatePdf": {
"allPagesWillBeRotated": "سيتم تدوير جميع {{count}} صفحة",
"angleOptions": {
"clockwise90": "90° باتجاه عقارب الساعة",
"counterClockwise270": "270° (90° عكس عقارب الساعة)",
"upsideDown180": "180° (رأسًا على عقب)"
},
"applyToAllPages": "تطبيق على جميع الصفحات",
"description": "تدوير الصفحات في مستند PDF.",
"inputTitle": "إدخال PDF",
"longDescription": "تغيير اتجاه صفحات PDF عن طريق تدويرها 90 أو 180 أو 270 درجة. مفيد لإصلاح المستندات الممسوحة ضوئيًا بشكل غير صحيح أو إعداد ملفات PDF للطباعة.",
"pageRangesDescription": "أدخل أرقام الصفحات أو النطاقات مفصولة بفواصل (مثال: 1,3,5-7)",
"pageRangesPlaceholder": "مثال: 1,5-8",
"pagesWillBeRotated": "سيتم تدوير {{count}} صفحة{{count !== 1 ? '' : ''}}",
"pdfPageCount": "يحتوي PDF على {{count}} صفحة{{count !== 1 ? '' : ''}}",
"resultTitle": "PDF مدور",
"rotatingPages": "تدوير الصفحات",
"rotationAngle": "زاوية الدوران",
"rotationSettings": "إعدادات الدوران",
"shortDescription": "تدوير الصفحات في مستند PDF",
"title": "تدوير PDF",
"toolInfo": {
"description": "تتيح لك هذه الأداة تدوير الصفحات في مستند PDF. يمكنك تدوير جميع الصفحات أو تحديد صفحات فردية لتدويرها. اختر زاوية الدوران: 90° باتجاه عقارب الساعة، 180° (رأسًا على عقب)، أو 270° (90° عكس عقارب الساعة). لتدوير صفحات محددة، قم بإلغاء تحديد \"تطبيق على جميع الصفحات\" وأدخل أرقام الصفحات أو النطاقات مفصولة بفواصل (مثال: 1,3,5-7).",
"title": "كيفية استخدام أداة تدوير PDF"
}
},
"splitPdf": {
"description": "استخراج صفحات محددة من مستند PDF.",
"extractingPages": "استخراج الصفحات",
"inputTitle": "إدخال PDF",
"pageExtractionPreview": "سيتم استخراج {{count}} صفحة{{count !== 1 ? '' : ''}}",
"pageRangesDescription": "أدخل أرقام الصفحات أو النطاقات مفصولة بفواصل (مثال: 1,3,5-7)",
"pageRangesPlaceholder": "مثال: 1,5-8",
"pageSelection": "تحديد الصفحات",
"pdfPageCount": "يحتوي PDF على {{count}} صفحة{{count !== 1 ? '' : ''}}",
"resultTitle": "PDF مستخرج",
"shortDescription": "استخراج صفحات محددة من ملف PDF",
"title": "تقسيم PDF",
"toolInfo": {
"description": "تتيح لك هذه الأداة استخراج صفحات محددة من مستند PDF. يمكنك تحديد صفحات فردية أو نطاقات من الصفحات لاستخراجها.",
"title": "تقسيم PDF"
}
}
}

View file

@ -0,0 +1,311 @@
{
"base64": {
"decode": "فك تشفير Base64",
"description": "تشفير أو فك تشفير النص باستخدام ترميز Base64.",
"encode": "تشفير Base64",
"inputTitle": "بيانات الإدخال",
"optionsTitle": "خيارات Base64",
"resultTitle": "النتيجة",
"shortDescription": "تشفير أو فك تشفير البيانات باستخدام Base64.",
"title": "مشفر/فاك تشفير Base64",
"toolInfo": {
"description": "Base64 هو مخطط ترميز يمثل البيانات بتنسيق سلسلة ASCII عن طريق ترجمتها إلى تمثيل أساس-64. على الرغم من أنه يمكن استخدامه لتشفير السلاسل، إلا أنه يُستخدم عادةً لتشفير البيانات الثنائية للإرسال عبر وسائط مصممة للتعامل مع البيانات النصية.",
"title": "ما هو Base64؟"
}
},
"censor": {
"description": "أداة لرقابة الكلمات في النص. قم بتحميل نصك في نموذج الإدخال على اليسار، وحدد جميع الكلمات السيئة في الخيارات، وستحصل فورًا على نص خاضع للرقابة في منطقة الإخراج.\", longDescription: 'باستخدام هذه الأداة عبر الإنترنت، يمكنك فرض رقابة على كلمات معينة في أي نص. يمكنك تحديد قائمة بالكلمات غير المرغوب فيها (مثل الكلمات البذيئة أو الكلمات السرية) وسيستبدلها البرنامج بكلمات بديلة وينشئ نصًا آمنًا للقراءة. يمكن تحديد الكلمات في حقل نص متعدد الأسطر في الخيارات عن طريق إدخال كلمة واحدة لكل سطر.', keywords: ['text', 'censor', 'words', 'characters'], component: lazy(() => import('./index')), i18n: { name: 'string:censor.title', description: 'string:censor.description",
"shortDescription": "إخفاء الكلمات السيئة بسرعة أو استبدالها بكلمات بديلة.",
"title": "رقابة النص"
},
"createPalindrome": {
"description": "أبسط أداة في العالم قائمة على المتصفح لإنشاء متناظرات من أي نص. أدخل النص وحوّله فورًا إلى متناظر يُقرأ بنفس الطريقة من الأمام والخلف. مثالي لألعاب الكلمات أو إنشاء أنماط نصية متناظرة أو استكشاف فضول لغوي.",
"shortDescription": "إنشاء نص يُقرأ بنفس الطريقة من الأمام والخلف",
"title": "إنشاء متناظر"
},
"extractSubstring": {
"description": "أبسط أداة في العالم قائمة على المتصفح لاستخراج سلاسل فرعية من النص. أدخل نصك وحدد مواضع البداية والنهاية لاستخراج الجزء المطلوب. مثالي لمعالجة البيانات أو تحليل النص أو استخراج محتوى محدد من كتل نصية أكبر.",
"shortDescription": "استخراج جزء من النص بين مواضع محددة",
"title": "استخراج سلسلة فرعية"
},
"hiddenCharacterDetector": {
"analysisOptions": "خيارات التحليل",
"category": "الفئة",
"description": "اكتشاف أحرف Unicode المخفية، خاصة أحرف تجاوز RTL التي يمكن استخدامها في الهجمات.",
"foundChars": "تم العثور على {{count}} حرف (أحرف) مخفية:",
"inputPlaceholder": "أدخل نصًا للتحقق من الأحرف المخفية...",
"inputTitle": "النص للتحليل",
"invisibleChar": "حرف غير مرئي",
"invisibleFound": "تم العثور على أحرف غير مرئية",
"longDescription": "تساعدك هذه الأداة في اكتشاف أحرف Unicode المخفية في النص، وخاصة أحرف تجاوز من اليمين إلى اليسار (RTL) التي يمكن استخدامها في الهجمات. يمكنها تحديد الأحرف غير المرئية وأحرف العرض الصفري وتسلسلات Unicode الضارة الأخرى التي قد تكون مخفية في نص يبدو بريئًا.",
"noHiddenChars": "لم يتم اكتشاف أحرف مخفية في النص.",
"optionsDescription": "قم بتكوين أنواع الأحرف المخفية التي سيتم اكتشافها وكيفية عرض النتائج.",
"position": "الموضع",
"rtlAlert": "⚠️ تم اكتشاف أحرف تجاوز RTL! قد يحتوي هذا النص على أحرف مخفية ضارة.",
"rtlFound": "تم العثور على تجاوز RTL",
"rtlOverride": "حرف تجاوز RTL",
"rtlWarning": "تحذير: تم اكتشاف أحرف تجاوز RTL! قد يتم استخدام هذا في الهجمات.",
"shortDescription": "العثور على أحرف Unicode المخفية في النص",
"summary": "ملخص التحليل",
"title": "كاشف الأحرف المخفية",
"totalChars": "إجمالي الأحرف المخفية: {{count}}",
"unicode": "Unicode",
"zeroWidthChar": "حرف بعرض صفري",
"zeroWidthFound": "تم العثور على أحرف بعرض صفري"
},
"join": {
"blankLinesAndTrailingSpaces": "الأسطر الفارغة والمسافات الختامية",
"deleteBlankDescription": "حذف الأسطر التي لا تحتوي على رموز نصية.",
"deleteBlankTitle": "حذف الأسطر الفارغة",
"deleteTrailingDescription": "إزالة المسافات والجدولة في نهاية الأسطر.",
"deleteTrailingTitle": "حذف المسافات الختامية",
"description": "ضم أجزاء النص معًا باستخدام فواصل قابلة للتخصيص.",
"inputTitle": "أجزاء النص",
"joinCharacterDescription": "الرمز الذي يربط الأجزاء المكسورة من النص. (المسافة افتراضيًا.)",
"joinCharacterPlaceholder": "حرف الضم",
"resultTitle": "النص المضموم",
"shortDescription": "ضم عناصر النص بفاصل محدد",
"textMergedOptions": "خيارات دمج النص",
"title": "ضم النص",
"toolInfo": {
"description": "باستخدام هذه الأداة يمكنك ضم أجزاء النص معًا. تأخذ قائمة من قيم النص، مفصولة بأسطر جديدة، وتدمجها معًا. يمكنك تعيين الحرف الذي سيتم وضعه بين أجزاء النص المدمج. أيضًا، يمكنك تجاهل جميع الأسطر الفارغة وإزالة المسافات والجدولة في نهاية جميع الأسطر. رائع!",
"title": "ما هو ضامّ النص؟"
}
},
"palindrome": {
"description": "أبسط أداة في العالم قائمة على المتصفح للتحقق مما إذا كان النص متناظرًا. تحقق فورًا مما إذا كان نصك يُقرأ بنفس الطريقة من الأمام والخلف. مثالي لألغاز الكلمات أو التحليل اللغوي أو التحقق من أنماط النصوص المتناظرة. يدعم فواصل مختلفة واكتشاف المتناظرات متعددة الكلمات.",
"shortDescription": "تحقق مما إذا كان النص يُقرأ بنفس الطريقة من الأمام والخلف",
"title": "متناظر"
},
"passwordGenerator": {
"avoidAmbiguous": "تجنب الأحرف الملتبسة (i, I, l, 0, O)",
"description": "إنشاء كلمات مرور عشوائية آمنة بطول قابل للتخصيص وأنواع الأحرف. اختر من الأحرف الصغيرة والكبيرة والأرقام والأحرف الخاصة. خيار لتجنب الأحرف الملتبسة لقراءة أفضل.",
"includeLowercase": "تضمين الأحرف الصغيرة (a-z)",
"includeNumbers": "تضمين الأرقام (0-9)",
"includeSymbols": "تضمين الأحرف الخاصة",
"includeUppercase": "تضمين الأحرف الكبيرة (A-Z)",
"lengthDesc": "طول كلمة المرور",
"lengthPlaceholder": "مثلاً 12",
"optionsTitle": "خيارات كلمة المرور",
"resultTitle": "كلمة المرور المُنشأة",
"shortDescription": "إنشاء كلمات مرور عشوائية آمنة مع خيارات مخصصة",
"title": "مولد كلمات المرور",
"toolInfo": {
"description": "تنشئ هذه الأداة كلمات مرور عشوائية آمنة بناءً على المعايير المحددة. يمكنك تخصيص الطول، وتضمين أو استبعاد أنواع أحرف مختلفة، وتجنب الأحرف الملتبسة لقراءة أفضل. مثالي لإنشاء كلمات مرور قوية للحسابات أو التطبيقات أو أي احتياجات أمنية.",
"title": "حول مولد كلمات المرور"
}
},
"quote": {
"allowDoubleQuotation": "السماح بعلامات الاقتباس المزدوجة",
"description": "إضافة علامات اقتباس حول النص مع خيارات قابلة للتخصيص.",
"inputTitle": "إدخال النص",
"leftQuoteDescription": "حرف (أحرف) علامة الاقتباس اليسرى",
"processAsMultiLine": "معالجة كنص متعدد الأسطر",
"quoteEmptyLines": "اقتباس الأسطر الفارغة",
"quoteOptions": "خيارات الاقتباس",
"resultTitle": "النص المقتبس",
"rightQuoteDescription": "حرف (أحرف) علامة الاقتباس اليمنى",
"shortDescription": "إضافة علامات اقتباس حول النص بأنماط مختلفة",
"title": "مُقتبِس النص",
"toolInfo": {
"description": "تتيح لك هذه الأداة إضافة علامات اقتباس حول النص. يمكنك اختيار أحرف اقتباس مختلفة، والتعامل مع النص متعدد الأسطر، والتحكم في كيفية معالجة الأسطر الفارغة. إنها مفيدة لإعداد النص للبرمجة أو تنسيق البيانات أو إنشاء نص منمّق.",
"title": "مُقتبِس النص"
}
},
"randomizeCase": {
"description": "أبسط أداة في العالم قائمة على المتصفح لعشوائية حالة النص. أدخل نصك وحوّله فورًا بأحرف كبيرة وصغيرة عشوائية. مثالي لإنشاء تأثيرات نصية فريدة أو اختبار حساسية حالة الأحرف أو إنشاء أنماط نصية متنوعة.",
"shortDescription": "عشوائية حالة الأحرف في النص",
"title": "عشوائية الحالة"
},
"removeDuplicateLines": {
"description": "قم بتحميل نصك في نموذج الإدخال على اليسار وستحصل فورًا على نص بدون أسطر مكررة في منطقة الإخراج. قوي ومجاني وسريع. تحميل أسطر النص - الحصول على أسطر نص فريدة",
"shortDescription": "حذف جميع الأسطر المتكررة من النص بسرعة",
"title": "إزالة الأسطر المكررة"
},
"repeat": {
"delimiterDescription": "الفاصل لنسخ الإخراج.",
"delimiterPlaceholder": "الفاصل",
"description": "تكرار النص عدة مرات مع فواصل قابلة للتخصيص.",
"inputTitle": "إدخال النص",
"numberPlaceholder": "الرقم",
"repeatAmountDescription": "عدد التكرارات.",
"repetitionsDelimiter": "فاصل التكرارات",
"resultTitle": "النص المتكرر",
"shortDescription": "تكرار النص عدة مرات",
"textRepetitions": "تكرارات النص",
"title": "تكرار النص",
"toolInfo": {
"description": "تتيح لك هذه الأداة تكرار نص معين عدة مرات مع فاصل اختياري.",
"title": "تكرار النص"
}
},
"reverse": {
"description": "أبسط أداة في العالم قائمة على المتصفح لعكس النص. أدخل أي نص واحصل عليه معكوسًا فورًا، حرفًا بحرف. مثالي لإنشاء نص مرآة أو تحليل المتناظرات أو اللعب بأنماط النصوص. يحافظ على المسافات والأحرف الخاصة أثناء العكس.",
"inputTitle": "النص للعكس",
"processMultiLine": "معالجة النص متعدد الأسطر",
"processMultiLineDescription": "سيتم عكس كل سطر بشكل مستقل",
"resultTitle": "النص المعكوس",
"reversalOptions": "خيارات العكس",
"shortDescription": "عكس أي نص حرفًا بحرف",
"skipEmptyLines": "تخطي الأسطر الفارغة",
"skipEmptyLinesDescription": "ستتم إزالة الأسطر الفارغة من الإخراج",
"title": "عكس",
"trimWhitespace": "قص المسافات البيضاء",
"trimWhitespaceDescription": "إزالة المسافات البيضاء البادئة والختامية من كل سطر"
},
"rot13": {
"description": "تشفير أو فك تشفير النص باستخدام شفرة ROT13.",
"inputTitle": "إدخال النص",
"resultTitle": "نتيجة ROT13",
"shortDescription": "تشفير أو فك تشفير النص باستخدام شفرة ROT13.",
"title": "مشفر/فاك تشفير ROT13",
"toolInfo": {
"description": "ROT13 (التدوير بـ 13 موضعًا) هي شفرة استبدال أحرف بسيطة تستبدل حرفًا بالحرف الثالث عشر بعده في الأبجدية. ROT13 هي حالة خاصة من شفرة قيصر التي تم تطويرها في روما القديمة. نظرًا لوجود 26 حرفًا في الأبجدية الإنجليزية، فإن ROT13 هي معكوسة نفسها؛ أي لإلغاء ROT13، يتم تطبيق نفس الخوارزمية، لذلك يمكن استخدام نفس الإجراء للتشفير وفك التشفير.",
"title": "ما هو ROT13؟"
}
},
"rotate": {
"description": "تدوير الأحرف في النص بمواضع محددة.",
"inputTitle": "إدخال النص",
"processAsMultiLine": "معالجة كنص متعدد الأسطر (تدوير كل سطر بشكل منفصل)",
"resultTitle": "النص المدور",
"rotateLeft": "تدوير لليسار",
"rotateRight": "تدوير لليمين",
"rotationOptions": "خيارات التدوير",
"shortDescription": "تحريك الأحرف في النص حسب الموضع.",
"stepDescription": "عدد المواضع للتدوير",
"title": "تدوير النص",
"toolInfo": {
"description": "تتيح لك هذه الأداة تدوير الأحرف في سلسلة بعدد محدد من المواضع. يمكنك التدوير لليسار أو اليمين، ومعالجة النص متعدد الأسطر عن طريق تدوير كل سطر بشكل منفصل. تدوير السلاسل مفيد للتحويلات النصية البسيطة أو إنشاء الأنماط أو تطبيق تقنيات التشفير الأساسية.",
"title": "تدوير السلسلة"
}
},
"split": {
"charAfterChunkDescription": "الحرف بعد كل جزء",
"charBeforeChunkDescription": "الحرف قبل كل جزء",
"chunksDescription": "عدد الأجزاء ذات الطول المتساوي في الإخراج.",
"chunksTitle": "استخدام عدد من الأجزاء",
"description": "أبسط أداة في العالم قائمة على المتصفح لتقسيم النص. أدخل نصك وحدد فاصلاً لتقسيمه إلى أجزاء متعددة. مثالي لمعالجة البيانات أو معالجة النص أو استخراج محتوى محدد من كتل نصية أكبر.",
"lengthDescription": "عدد الأحرف التي سيتم وضعها في كل جزء إخراج.",
"lengthTitle": "استخدام الطول للتقسيم",
"outputSeparatorDescription": "الحرف الذي سيتم وضعه بين الأجزاء المقسمة. (إنه سطر جديد \\\"\\n\\\" افتراضيًا.)",
"outputSeparatorOptions": "خيارات الفاصل الإخراج",
"regexDescription": "التعبير النمطي الذي سيتم استخدامه لتقسيم النص إلى أجزاء. (مسافات متعددة افتراضيًا.)",
"regexTitle": "استخدام تعبير نمطي للتقسيم",
"resultTitle": "نتيجة التقسيم",
"shortDescription": "تقسيم النص إلى أجزاء متعددة باستخدام فاصل",
"splitSeparatorOptions": "خيارات فاصل التقسيم",
"symbolDescription": "الحرف الذي سيتم استخدامه لتقسيم النص إلى أجزاء. (المسافة افتراضيًا.)",
"symbolTitle": "استخدام رمز للتقسيم",
"title": "تقسيم"
},
"statistic": {
"characterFrequencyAnalysis": "تحليل تكرار الأحرف",
"characterFrequencyAnalysisDescription": "عد عدد مرات ظهور كل حرف في النص",
"delimitersOptions": "خيارات الفواصل",
"description": "تحليل النص وإنشاء إحصائيات شاملة.",
"includeEmptyLines": "تضمين الأسطر الفارغة",
"includeEmptyLinesDescription": "تضمين الأسطر الفارغة عند عد الأسطر",
"inputTitle": "إدخال النص",
"resultTitle": "إحصائيات النص",
"sentenceDelimitersDescription": "أدخل أحرفًا مخصصة تستخدم لفصل الجمل بلغتك (مفصولة بفاصلة) أو اتركها فارغة للافتراضي.",
"sentenceDelimitersPlaceholder": "مثل ., !, ?, ...",
"shortDescription": "الحصول على إحصائيات حول نصك",
"statisticsOptions": "خيارات الإحصائيات",
"title": "إحصائيات النص",
"toolInfo": {
"description": "تتيح لك هذه الأداة تحليل النص وإنشاء إحصائيات شاملة بما في ذلك عدد الأحرف وعدد الكلمات وعدد الأسطر وتحليل تكرار الأحرف والكلمات.",
"title": "ما هو {{title}}؟"
},
"wordDelimitersDescription": "أدخل تعبيرًا نمطيًا مخصصًا لعد الكلمات أو اتركه فارغًا للافتراضي.",
"wordDelimitersPlaceholder": "مثل \\s.,;:!?\"«»()…",
"wordFrequencyAnalysis": "تحليل تكرار الكلمات",
"wordFrequencyAnalysisDescription": "عد عدد مرات ظهور كل كلمة في النص"
},
"textReplacer": {
"description": "استبدال أنماط النص بمحتوى جديد.",
"findPatternInText": "العثور على هذا النمط في النص",
"findPatternUsingRegexp": "العثور على نمط باستخدام تعبير نمطي",
"inputTitle": "النص للاستبدال",
"newTextPlaceholder": "النص الجديد",
"regexpDescription": "أدخل التعبير النمطي الذي تريد استبداله.",
"replacePatternDescription": "أدخل النمط المستخدم للاستبدال.",
"replaceText": "استبدال النص",
"resultTitle": "النص مع الاستبدالات",
"searchPatternDescription": "أدخل نمط النص الذي تريد استبداله.",
"searchText": "البحث عن نص",
"shortDescription": "استبدال النص في محتواك بسرعة",
"title": "مستبدل النص",
"toolInfo": {
"description": "استبدل نصًا محددًا في محتواك بسهولة باستخدام هذه الأداة البسيطة القائمة على المتصفح. ما عليك سوى إدخال نصك وتعيين النص الذي تريد استبداله وقيمة الاستبدال، والحصول فورًا على الإصدار المحدث.",
"title": "مستبدل النص"
}
},
"toMorse": {
"dashSymbolDescription": "الرمز الذي سيتوافق مع الشرطة في شفرة مورس.",
"description": "تحويل النص إلى شفرة مورس.",
"dotSymbolDescription": "الرمز الذي سيتوافق مع النقطة في شفرة مورس.",
"longSignal": "إشارة طويلة",
"resultTitle": "شفرة مورس",
"shortDescription": "تشفير النص إلى مورس بسرعة",
"shortSignal": "إشارة قصيرة",
"title": "النص إلى مورس"
},
"truncate": {
"addTruncationIndicator": "إضافة مؤشر الاقتطاع",
"charactersPlaceholder": "الأحرف",
"description": "تقصير النص إلى طول محدد.",
"indicatorDescription": "الأحرف المراد إضافتها في النهاية (أو البداية) من النص. ملاحظة: يتم احتسابها في الطول.",
"inputTitle": "إدخال النص",
"leftSideDescription": "إزالة الأحرف من بداية النص.",
"leftSideTruncation": "اقتطاع الجانب الأيسر",
"lengthAndLines": "الطول والأسطر",
"lineByLineDescription": "اقتطاع كل سطر بشكل منفصل.",
"lineByLineTruncating": "الاقتطاع سطرًا بسطر",
"maxLengthDescription": "عدد الأحرف المراد تركها في النص.",
"numberPlaceholder": "الرقم",
"resultTitle": "النص المقتطع",
"rightSideDescription": "إزالة الأحرف من نهاية النص.",
"rightSideTruncation": "اقتطاع الجانب الأيمن",
"shortDescription": "اقتطاع النص إلى طول محدد",
"suffixAndAffix": "اللاحقة والإلحاقة",
"title": "اقتطاع النص",
"toolInfo": {
"description": "قم بتحميل نصك في نموذج الإدخال على اليسار وستحصل تلقائيًا على نص مقتطع على اليمين.",
"title": "اقتطاع النص"
},
"truncationSide": "جانب الاقتطاع"
},
"uppercase": {
"description": "تحويل النص إلى أحرف كبيرة.",
"inputTitle": "إدخال النص",
"resultTitle": "النص بأحرف كبيرة",
"shortDescription": "تحويل النص إلى أحرف كبيرة",
"title": "تحويل إلى أحرف كبيرة"
},
"urlDecode": {
"inputTitle": "إدخال السلسلة (مشفرة URL)",
"resultTitle": "سلسلة الإخراج",
"toolInfo": {
"description": "قم بتحميل سلسلتك وسيتم فك تشفير URL تلقائيًا.",
"longDescription": "تقوم هذه الأداة بفك تشفير URL لسلسلة مشفرة URL مسبقًا. فك تشفير URL هو العملية العكسية لتشفير URL. يتم فك تشفير جميع الأحرف المشفرة بالنسبة المئوية إلى أحرف يمكنك فهمها. من أشهر القيم المشفرة بالنسبة المئوية %20 للمسافة، و%3a للنقطتين، و%2f للشرطة المائلة، و%3f لعلامة الاستفهام. الرقمان التاليان لعلامة النسبة المئوية هما قيم كود الحرف بالنظام الست عشري.",
"shortDescription": "فك تشفير URL لسلسلة بسرعة.",
"title": "فاك تشفير URL للسلسلة"
}
},
"urlEncode": {
"encodingOption": {
"nonSpecialCharDescription": "إذا تم التحديد، فسيتم تحويل جميع الأحرف في سلسلة الإدخال إلى تشفير URL (وليس فقط الخاصة).",
"nonSpecialCharPlaceholder": "تشفير الأحرف غير الخاصة",
"title": "خيارات التشفير"
},
"inputTitle": "إدخال السلسلة",
"resultTitle": "السلسلة المشفرة بـ URL",
"toolInfo": {
"description": "قم بتحميل سلسلتك وسيتم تشفير URL تلقائيًا.",
"longDescription": "تقوم هذه الأداة بتشفير URL لسلسلة. يتم تحويل أحرف URL الخاصة إلى تشفير علامة النسبة المئوية. يُسمى هذا التشفير بتشفير النسبة المئوية لأن القيمة الرقمية لكل حرف يتم تحويلها إلى علامة نسبة مئوية متبوعة بقيمة ست عشرية من رقمين. يتم تحديد القيم الست عشرية بناءً على قيمة نقطة كود الحرف. على سبيل المثال، يتم تشفير المسافة إلى %20، والنقطتان إلى %3a، والشرطة المائلة إلى %2f. الأحرف التي ليست خاصة تبقى دون تغيير. في حالة حاجتك أيضًا إلى تحويل الأحرف غير الخاصة إلى تشفير النسبة المئوية، فقد أضفنا أيضًا خيارًا إضافيًا يتيح لك القيام بذلك. حدد خيار تشفير-الأحرف-غير-الخاصة لتمكين هذا السلوك.",
"shortDescription": "تشفير URL لسلسلة بسرعة.",
"title": "مشفر URL للسلسلة"
}
}
}

117
public/locales/ar/time.json Normal file
View file

@ -0,0 +1,117 @@
{
"checkLeapYears": {
"description": "تحقق مما إذا كانت السنة سنة كبيسة واحصل على معلومات السنة الكبيسة.",
"exampleDescription": "إحدى صديقاتنا ولدت في سنة كبيسة في 29 فبراير ونتيجة لذلك، لديها عيد ميلاد مرة واحدة فقط كل 4 سنوات. نظرًا لأننا لا نستطيع تذكر موعد عيد ميلادها بشكل دائم، فإننا نستخدم برنامجنا لإنشاء قائمة تذكير للسنوات الكبيسة القادمة. لإنشاء قائمة بأعياد ميلادها القادمة، نقوم بتحميل تسلسل من السنوات من 2025 إلى 2040 في المدخلات ونحصل على حالة كل سنة. إذا قال البرنامج أنها سنة كبيسة، فنحن نعلم أننا سنتم دعوتنا إلى حفلة عيد ميلاد في 29 فبراير.",
"exampleTitle": "البحث عن أعياد الميلاد في 29 فبراير",
"inputTitle": "إدخال السنة",
"resultTitle": "نتيجة السنة الكبيسة",
"shortDescription": "التحقق من السنة الكبيسة",
"title": "التحقق من السنوات الكبيسة",
"toolInfo": {
"description": "السنة الكبيسة هي سنة تحتوي على يوم إضافي واحد (29 فبراير) للحفاظ على تزامن السنة التقويمية مع السنة الفلكية. تحدث السنوات الكبيسة كل 4 سنوات، باستثناء السنوات القابلة للقسمة على 100 ولكن ليس على 400.",
"title": "ما هي السنة الكبيسة؟"
}
},
"convertDaysToHours": {
"addHoursName": "إضافة اسم الساعات",
"addHoursNameDescription": "إلحاق سلسلة الساعات بقيم الإخراج",
"description": "تحويل الأيام إلى ساعات مع خيارات قابلة للتخصيص.",
"hoursName": "اسم الساعات",
"shortDescription": "تحويل الأيام إلى ساعات",
"title": "تحويل الأيام إلى ساعات",
"toolInfo": {
"description": "تتيح لك هذه الأداة تحويل الأيام إلى ساعات. يمكنك إدخال الأيام كأرقام أو مع وحدات، وستقوم الأداة بتحويلها إلى ساعات. يمكنك أيضًا اختيار إلحاق لاحقة 'ساعات' بقيم الإخراج.",
"title": "تحويل الأيام إلى ساعات"
}
},
"convertHoursToDays": {
"addDaysName": "إضافة اسم الأيام",
"addDaysNameDescription": "إلحاق سلسلة الأيام بقيم الإخراج",
"daysName": "اسم الأيام",
"description": "تحويل الساعات إلى أيام مع خيارات قابلة للتخصيص.",
"shortDescription": "تحويل الساعات إلى أيام",
"title": "تحويل الساعات إلى أيام",
"toolInfo": {
"description": "تتيح لك هذه الأداة تحويل الساعات إلى أيام. يمكنك إدخال الساعات كأرقام أو مع وحدات، وستقوم الأداة بتحويلها إلى أيام. يمكنك أيضًا اختيار إلحاق لاحقة 'أيام' بقيم الإخراج.",
"title": "تحويل الساعات إلى أيام"
}
},
"convertSecondsToTime": {
"addPadding": "إضافة حشو",
"addPaddingDescription": "إضافة حشو صفري للساعات والدقائق والثواني.",
"description": "تحويل الثواني إلى تنسيق وقت قابل للقراءة (ساعات:دقائق:ثواني). أدخل عدد الثواني للحصول على الوقت المنسق.",
"shortDescription": "تحويل الثواني إلى تنسيق الوقت",
"timePadding": "حشو الوقت",
"title": "تحويل الثواني إلى وقت",
"toolInfo": {
"title": "ما هو {{title}}؟"
}
},
"convertTimeToSeconds": {
"description": "تحويل الوقت المنسق (HH:MM:SS) إلى ثواني.",
"inputTitle": "إدخال الوقت",
"resultTitle": "الثواني",
"shortDescription": "تحويل تنسيق الوقت إلى ثواني",
"title": "تحويل الوقت إلى ثواني",
"toolInfo": {
"description": "تتيح لك هذه الأداة تحويل سلاسل الوقت المنسقة (HH:MM:SS) إلى ثواني. إنها مفيدة لحساب المدد والفترات الزمنية.",
"title": "تحويل الوقت إلى ثواني"
}
},
"convertUnixToDate": {
"addUtcLabel": "إضافة لاحقة 'UTC'",
"addUtcLabelDescription": "عرض 'UTC' بعد التاريخ المحول (فقط لوضع UTC)",
"description": "تحويل الطابع الزمني Unix إلى تاريخ قابل للقراءة من قبل الإنسان.",
"outputOptions": "خيارات الإخراج",
"shortDescription": "تحويل الطابع الزمني Unix إلى تاريخ",
"title": "تحويل Unix إلى تاريخ",
"toolInfo": {
"description": "تقوم هذه الأداة بتحويل الطابع الزمني Unix (بالثواني) إلى تنسيق تاريخ قابل للقراءة من قبل الإنسان (مثل YYYY-MM-DD HH:MM:SS). وهي تدعم كلاً من الإخراج المحلي و UTC، مما يجعلها مفيدة لتفسير الطوابع الزمنية بسرعة من السجلات أو واجهات برمجة التطبيقات أو الأنظمة التي تستخدم وقت Unix.",
"title": "تحويل Unix إلى تاريخ"
},
"useLocalTime": "استخدام الوقت المحلي",
"useLocalTimeDescription": "عرض التاريخ المحول في منطقتك الزمنية المحلية بدلاً من UTC",
"withLabel": "الخيارات"
},
"crontabGuru": {
"description": "إنشاء وفهم تعبيرات cron. إنشاء جداول cron للمهام الآلية ووظائف النظام.",
"shortDescription": "إنشاء وفهم تعبيرات cron",
"title": "Crontab Guru"
},
"timeBetweenDates": {
"description": "حساب فرق الوقت بين تاريخين. احصل على المدة الدقيقة بالأيام والساعات والدقائق والثواني.",
"endDate": "تاريخ الانتهاء",
"endDateTime": "تاريخ ووقت الانتهاء",
"endTime": "وقت الانتهاء",
"endTimezone": "المنطقة الزمنية للانتهاء",
"shortDescription": "حساب الوقت بين تاريخين",
"startDate": "تاريخ البداية",
"startDateTime": "تاريخ ووقت البداية",
"startTime": "وقت البداية",
"startTimezone": "المنطقة الزمنية للبداية",
"title": "الوقت بين التواريخ",
"toolInfo": {
"description": "احسب فرق الوقت الدقيق بين تاريخين ووقتين، مع دعم مناطق زمنية مختلفة. توفر هذه الأداة تفصيلاً مفصلاً لفرق الوقت في وحدات مختلفة (سنوات، أشهر، أيام، ساعات، دقائق، وثواني).",
"title": "حاسبة الوقت بين التواريخ"
}
},
"truncateClockTime": {
"description": "اقتطاع وقت الساعة لإزالة الثواني أو الدقائق. تقريب الوقت إلى أقرب ساعة أو دقيقة أو فترة مخصصة.",
"printDroppedComponents": "طباعة المكونات المسقطة",
"shortDescription": "اقتطاع وقت الساعة إلى الدقة المحددة",
"timePadding": "حشو الوقت",
"title": "اقتطاع وقت الساعة",
"toolInfo": {
"title": "ما هو {{title}}؟"
},
"truncateMinutesAndSeconds": "اقتطاع الدقائق والثواني",
"truncateMinutesAndSecondsDescription": "إسقاط كليهما - مكونات الدقائق والثواني من كل وقت ساعة.",
"truncateOnlySeconds": "اقتطاع الثواني فقط",
"truncateOnlySecondsDescription": "إسقاط مكون الثواني من كل وقت ساعة.",
"truncationSide": "جانب الاقتطاع",
"useZeroPadding": "استخدام الحشو الصفري",
"zeroPaddingDescription": "اجعل جميع مكونات الوقت دائمًا بعرض رقمين.",
"zeroPrintDescription": "عرض الأجزاء المسقطة كقيم صفرية \"00\".",
"zeroPrintTruncatedParts": "طباعة الأجزاء المقتطعة بالصفر"
}
}

View file

@ -0,0 +1,255 @@
{
"audio": {
"changeSpeed": {
"description": "تغيير سرعة تشغيل ملفات الصوت. تسريع أو إبطاء الصوت مع الحفاظ على طبقة الصوت.",
"name": "تغيير سرعة الصوت",
"shortDescription": "تغيير سرعة ملفات الصوت"
},
"extractAudio": {
"description": "استخراج مسار الصوت من ملف فيديو وحفظه كملف صوتي منفصل بالتنسيق الذي تختاره (AAC، MP3، WAV).",
"name": "استخراج الصوت",
"shortDescription": "استخراج الصوت من ملفات الفيديو (MP4، MOV، إلخ) إلى AAC أو MP3 أو WAV."
}
},
"baseFileInput": {
"copyFailed": "فشل النسخ: {{error}}",
"dropFileHere": "أسقط {{type}} الخاص بك هنا",
"fileCopied": "تم نسخ الملف",
"selectFileDescription": "انقر هنا لتحديد {{type}} من جهازك، أو اضغط على Ctrl+V لاستخدام {{type}} من الحافظة، أو اسحب وأفلت ملفًا من سطح المكتب"
},
"categories": {
"audio": {
"description": "أدوات للعمل مع الصوت - استخراج الصوت من الفيديو، وضبط سرعة الصوت، ودمج ملفات صوتية متعددة والمزيد.",
"title": "أدوات الصوت"
},
"csv": {
"description": "أدوات للعمل مع ملفات CSV - تحويل CSV إلى تنسيقات مختلفة، ومعالجة بيانات CSV، والتحقق من صحة بنية CSV، ومعالجة ملفات CSV بكفاءة.",
"title": "أدوات CSV"
},
"gif": {
"description": "أدوات للعمل مع رسوم GIF المتحركة - إنشاء صور GIF شفافة، واستخراج إطارات GIF، وإضافة نص إلى GIF، والاقتصاص، والتدوير، وعكس صور GIF، والمزيد.",
"title": "أدوات GIF"
},
"image-generic": {
"description": "أدوات للعمل مع الصور - الضغط، وتغيير الحجم، والاقتصاص، والتحويل إلى JPG، والتدوير، وإزالة الخلفية والمزيد.",
"title": "أدوات الصور"
},
"json": {
"description": "أدوات للعمل مع هياكل بيانات JSON - تجميل وتصغير كائنات JSON، وتسطيح مصفوفات JSON، وتحويل قيم JSON إلى سلاسل، وتحليل البيانات، والمزيد",
"title": "أدوات JSON"
},
"list": {
"description": "أدوات للعمل مع القوائم - الفرز، والعكس، وعشوائية القوائم، والعثور على عناصر القائمة الفريدة والمكررة، وتغيير فواصل عناصر القائمة، والمزيد.",
"title": "أدوات القوائم"
},
"number": {
"description": "أدوات للعمل مع الأرقام - إنشاء تسلسلات الأرقام، وتحويل الأرقام إلى كلمات والكلمات إلى أرقام، والفرز، والتقريب، وتحليل الأرقام، والمزيد.",
"title": "أدوات الأرقام"
},
"pdf": {
"description": "أدوات للعمل مع ملفات PDF - استخراج النص من ملفات PDF، وتحويل ملفات PDF إلى تنسيقات أخرى، ومعالجة ملفات PDF، والمزيد.",
"title": "أدوات PDF"
},
"png": {
"description": "أدوات للعمل مع صور PNG - تحويل صور PNG إلى JPG، وإنشاء صور PNG شفافة، وتغيير ألوان PNG، والاقتصاص، والتدوير، وتغيير حجم صور PNG، والمزيد.",
"title": "أدوات PNG"
},
"seeAll": "عرض جميع {{title}}",
"string": {
"description": "أدوات للعمل مع النصوص - تحويل النص إلى صور، والبحث عن النص واستبداله، وتقسيم النص إلى أجزاء، وضم أسطر النص، وتكرار النص، والمزيد.",
"title": "أدوات النصوص"
},
"time": {
"description": "أدوات للعمل مع الوقت والتاريخ - حساب فروق الوقت، والتحويل بين المناطق الزمنية، وتنسيق التواريخ، وإنشاء تسلسلات التواريخ، والمزيد.",
"title": "أدوات الوقت"
},
"try": "جرب {{title}}",
"video": {
"description": "أدوات للعمل مع مقاطع الفيديو - استخراج الإطارات من مقاطع الفيديو، وإنشاء صور GIF من مقاطع الفيديو، وتحويل مقاطع الفيديو إلى تنسيقات مختلفة، والمزيد.",
"title": "أدوات الفيديو"
},
"xml": {
"description": "أدوات للعمل مع هياكل بيانات XML - عارض، ومجمِّل، ومدقق صحة والمزيد",
"title": "أدوات XML"
}
},
"csv": {
"findIncompleteCsvRecords": {
"description": "ما عليك سوى تحميل ملف CSV الخاص بك في النموذج أدناه وستتحقق هذه الأداة تلقائيًا مما إذا كانت أي من الصفوف أو الأعمدة تفتقد القيم. في خيارات الأداة، يمكنك ضبط تنسيق ملف الإدخال (تحديد الفاصل وحرف الاقتباس وحرف التعليق). بالإضافة إلى ذلك، يمكنك تمكين التحقق من القيم الفارغة، وتخطي الأسطر الفارغة، وتعيين حد لعدد رسائل الخطأ في الإخراج.",
"name": "العثور على سجلات CSV غير الكاملة",
"shortDescription": "العثور بسرعة على الصفوف والأعمدة في CSV التي تفتقد القيم."
}
},
"hero": {
"brand": "OmniTools",
"description": "عزز إنتاجيتك مع OmniTools، مجموعة الأدوات النهائية لإنجاز الأمور بسرعة! الوصول إلى آلاف الأدوات سهلة الاستخدام لتحرير الصور والنصوص والقوائم والبيانات، كل ذلك مباشرة من متصفحك.",
"examples": {
"calculateNumberSum": "حساب مجموع الأرقام",
"changeGifSpeed": "تغيير سرعة GIF",
"compressPng": "ضغط PNG",
"createTransparentImage": "إنشاء صورة شفافة",
"prettifyJson": "تجميل JSON",
"sortList": "فرز قائمة",
"splitPdf": "تقسيم PDF",
"splitText": "تقسيم نص",
"trimVideo": "تقليم فيديو"
},
"searchPlaceholder": "البحث في جميع الأدوات",
"title": "إنجاز الأمور بسرعة مع"
},
"inputFooter": {
"clear": "مسح",
"copyToClipboard": "نسخ إلى الحافظة",
"importFromFile": "استيراد من ملف"
},
"list": {
"group": {
"description": "أبسط أداة في العالم قائمة على المتصفح لتجميع عناصر القائمة. أدخل قائمتك وحدد معايير التجميع لتنظيم العناصر في مجموعات منطقية. مثالي لتصنيف البيانات أو تنظيم المعلومات أو إنشاء قوائم منظمة. يدعم الفواصل المخصصة وخيارات التجميع المتنوعة.",
"name": "تجميع",
"shortDescription": "تجميع عناصر القائمة حسب الخصائص المشتركة"
},
"reverse": {
"description": "هذا تطبيق قائم على المتصفح بسيط للغاية يطبع جميع عناصر القائمة بالعكس. يمكن فصل عناصر الإدخال بأي رمز ويمكنك أيضًا تغيير فاصل عناصر القائمة المعكوسة.",
"name": "عكس",
"shortDescription": "عكس القائمة بسرعة"
},
"sort": {
"description": "هذا تطبيق قائم على المتصفح بسيط للغاية يفرز العناصر في القائمة ويرتبها بترتيب متزايد أو متناقص. يمكنك فرز العناصر أبجديًا أو رقميًا أو حسب طولها. يمكنك أيضًا إزالة العناصر المكررة والفارغة، بالإضافة إلى قص العناصر الفردية التي تحتوي على مسافات بيضاء حولها. يمكنك استخدام أي حرف فاصل لفصل عناصر قائمة الإدخال أو بدلاً من ذلك استخدام تعبير نمطي لفصلها. بالإضافة إلى ذلك، يمكنك إنشاء فاصل جديد لقائمة الإخراج المفروزة.",
"name": "فرز",
"shortDescription": "فرز القائمة بسرعة"
}
},
"navbar": {
"buyMeACoffee": "اشترِ لي قهوة",
"hireMe": "وظفني",
"home": "الرئيسية",
"tools": "الأدوات"
},
"number": {
"generate": {
"description": "احسب قائمة من الأعداد الصحيحة بسرعة في متصفحك. للحصول على قائمتك، ما عليك سوى تحديد العدد الصحيح الأول وتغيير القيمة والعدد الإجمالي في الخيارات أدناه، وستنشئ هذه الأداة هذا العدد الكثير من الأعداد الصحيحة",
"name": "إنشاء الأرقام",
"shortDescription": "حساب قائمة من الأعداد الصحيحة بسرعة في متصفحك"
},
"sum": {
"description": "هذا تطبيق قائم على المتصفح بسيط للغاية يجمع الأرقام. يمكن فصل الأرقام المدخلة بأي رمز ويمكنك أيضًا تغيير فاصل الأرقام المجموعة.",
"name": "جمع الأرقام",
"shortDescription": "جمع قائمة من الأرقام بسرعة"
}
},
"numericInputWithUnit": {
"unit": "الوحدة"
},
"pdf": {
"compressPdf": {
"description": "تقليل حجم ملف PDF مع الحفاظ على الجودة باستخدام Ghostscript",
"name": "ضغط PDF",
"shortDescription": "ضغط ملفات PDF بشكل آمن في متصفحك"
},
"mergePdf": {
"description": "دمج ملفات PDF متعددة في مستند واحد.",
"name": "دمج PDF",
"shortDescription": "دمج ملفات PDF متعددة في مستند واحد"
},
"pdfToEpub": {
"description": "تحويل مستندات PDF إلى ملفات EPUB لتوافق أفضل مع قارئ الكتب الإلكترونية.",
"name": "PDF إلى EPUB",
"shortDescription": "تحويل ملفات PDF إلى تنسيق EPUB"
},
"protectPdf": {
"description": "إضافة حماية بكلمة مرور إلى ملفات PDF الخاصة بك بشكل آمن في متصفحك",
"name": "حماية PDF",
"shortDescription": "حماية ملفات PDF بكلمة مرور بشكل آمن"
},
"splitPdf": {
"description": "استخراج صفحات محددة من ملف PDF باستخدام أرقام الصفحات أو النطاقات (مثل 1,5-8)",
"name": "تقسيم PDF",
"shortDescription": "استخراج صفحات محددة من ملف PDF"
}
},
"resultFooter": {
"copy": "نسخ إلى الحافظة",
"download": "تحميل"
},
"string": {
"createPalindrome": {
"description": "أبسط أداة في العالم قائمة على المتصفح لإنشاء متناظرات من أي نص. أدخل النص وحوّله فورًا إلى متناظر يُقرأ بنفس الطريقة من الأمام والخلف. مثالي لألعاب الكلمات أو إنشاء أنماط نصية متناظرة أو استكشاف فضول لغوي.",
"name": "إنشاء متناظر",
"shortDescription": "إنشاء نص يُقرأ بنفس الطريقة من الأمام والخلف"
},
"palindrome": {
"description": "أبسط أداة في العالم قائمة على المتصفح للتحقق مما إذا كان النص متناظرًا. تحقق فورًا مما إذا كان نصك يُقرأ بنفس الطريقة من الأمام والخلف. مثالي لألغاز الكلمات أو التحليل اللغوي أو التحقق من أنماط النصوص المتناظرة. يدعم فواصل مختلفة واكتشاف المتناظرات متعددة الكلمات.",
"name": "متناظر",
"shortDescription": "تحقق مما إذا كان النص يُقرأ بنفس الطريقة من الأمام والخلف"
},
"repeat": {
"description": "تتيح لك هذه الأداة تكرار نص معين عدة مرات مع فاصل اختياري.",
"name": "تكرار النص",
"shortDescription": "تكرار النص عدة مرات"
},
"reverse": {
"description": "أبسط أداة في العالم قائمة على المتصفح لعكس النص. أدخل أي نص واحصل عليه معكوسًا فورًا، حرفًا بحرف. مثالي لإنشاء نص مرآة أو تحليل المتناظرات أو اللعب بأنماط النصوص. يحافظ على المسافات والأحرف الخاصة أثناء العكس.",
"name": "عكس",
"shortDescription": "عكس أي نص حرفًا بحرف"
},
"toMorse": {
"description": "أبسط أداة في العالم قائمة على المتصفح لتحويل النص إلى شفرة مورس. قم بتحميل نصك في نموذج الإدخال على اليسار وستحصل فورًا على شفرة مورس في منطقة الإخراج. قوي ومجاني وسريع. تحميل النص - الحصول على شفرة مورس.",
"name": "النص إلى مورس",
"shortDescription": "تشفير النص إلى مورس بسرعة"
},
"uppercase": {
"description": "أبسط أداة في العالم قائمة على المتصفح لتحويل النص إلى أحرف كبيرة. ما عليك سوى إدخال نصك وسيتم تحويله تلقائيًا إلى جميع الأحرف الكبيرة. مثالي لإنشاء عناوين أو التأكيد على النص أو توحيد تنسيق النص. يدعم تنسيقات نص مختلفة ويحافظ على الأحرف الخاصة.",
"name": "أحرف كبيرة",
"shortDescription": "تحويل النص إلى أحرف كبيرة"
}
},
"toolExamples": {
"subtitle": "انقر للتجربة!",
"title": "أمثلة {{title}}"
},
"toolFileResult": {
"copied": "تم نسخ الملف",
"copyFailed": "فشل النسخ: {{error}}",
"loading": "جاري التحميل... قد يستغرق هذا لحظة.",
"result": "النتيجة"
},
"toolHeader": {
"seeExamples": "عرض الأمثلة"
},
"toolLayout": {
"allToolsTitle": "جميع {{type}}"
},
"toolMultiFileResult": {
"copied": "تم نسخ الملف",
"copyFailed": "فشل النسخ: {{error}}",
"loading": "جاري التحميل... قد يستغرق هذا لحظة.",
"result": "النتيجة"
},
"toolMultipleAudioInput": {
"inputTitle": "إدخال {{type}}",
"noFilesSelected": "لم يتم تحديد ملفات"
},
"toolMultiplePdfInput": {
"inputTitle": "إدخال {{type}}",
"noFilesSelected": "لم يتم تحديد ملفات"
},
"toolOptions": {
"title": "خيارات الأداة"
},
"toolTextInput": {
"copied": "تم نسخ النص",
"copyFailed": "فشل النسخ: {{error}}",
"input": "إدخال النص",
"placeholder": "أدخل نصك هنا..."
},
"toolTextResult": {
"copied": "تم نسخ النص",
"copyFailed": "فشل النسخ: {{error}}",
"loading": "جاري التحميل... قد يستغرق هذا لحظة.",
"result": "النتيجة"
},
"userTypes": {
"developers": "المطورون",
"generalUsers": "المستخدمون العامون"
}
}

View file

@ -0,0 +1,120 @@
{
"changeSpeed": {
"defaultMultiplier": "المضاعف الافتراضي: 2 يعني أسرع مرتين",
"description": "تغيير سرعة تشغيل ملفات الفيديو. تسريع أو إبطاء مقاطع الفيديو مع الحفاظ على مزامنة الصوت. يدعم مضاعفات سرعة متنوعة وتنسيقات فيديو شائعة.",
"inputTitle": "إدخال الفيديو",
"newVideoSpeed": "سرعة الفيديو الجديدة",
"resultTitle": "الفيديو المعدل",
"settingSpeed": "ضبط السرعة",
"shortDescription": "تغيير سرعة تشغيل الفيديو",
"title": "تغيير سرعة الفيديو",
"toolInfo": {
"title": "ما هو {{title}}؟"
}
},
"compress": {
"default": "افتراضي",
"description": "ضغط مقاطع الفيديو عن طريق تحجيمها إلى دقات مختلفة مثل 240p و 480p و 720p وما إلى ذلك. تساعد هذه الأداة في تقليل حجم الملف مع الحفاظ على جودة مقبولة. تدعم تنسيقات الفيديو الشائعة مثل MP4 و WebM و OGG.",
"inputTitle": "إدخال الفيديو",
"loadingText": "ضغط الفيديو...",
"lossless": "بدون فقدان",
"quality": "الجودة (CRF)",
"resolution": "الدقة",
"resultTitle": "الفيديو المضغوط",
"shortDescription": "ضغط مقاطع الفيديو عن طريق التحجيم إلى دقات مختلفة",
"title": "ضغط الفيديو",
"worst": "الأسوأ"
},
"cropVideo": {
"cropCoordinates": "إحداثيات الاقتصاص",
"croppingVideo": "اقتصاص الفيديو",
"description": "اقتصاص الفيديو لإزالة المناطق غير المرغوب فيها.",
"errorBeyondHeight": "تمتد منطقة الاقتصاص إلى ما بعد ارتفاع الفيديو ({{height}}px)",
"errorBeyondWidth": "تمتد منطقة الاقتصاص إلى ما بعد عرض الفيديو ({{width}}px)",
"errorCroppingVideo": "خطأ في اقتصاص الفيديو. يرجى التحقق من المعاملات وملف الفيديو.",
"errorLoadingDimensions": "فشل تحميل أبعاد الفيديو",
"errorNonNegativeCoordinates": "يجب أن تكون إحداثيات X و Y غير سالبة",
"errorPositiveDimensions": "يجب أن يكون العرض والارتفاع موجبين",
"height": "الارتفاع",
"inputTitle": "إدخال الفيديو",
"loadVideoForDimensions": "قم بتحميل فيديو لرؤية الأبعاد",
"longDescription": "تتيح لك هذه الأداة اقتصاص ملفات الفيديو لإزالة المناطق غير المرغوب فيها أو التركيز على أجزاء محددة من الفيديو. مفيد لإزالة الأشرطة السوداء أو ضبط نسب العرض إلى الارتفاع أو التركيز على محتوى مهم. يدعم تنسيقات فيديو متنوعة بما في ذلك MP4 و MOV و AVI.",
"resultTitle": "الفيديو المقتص",
"shortDescription": "اقتصاص الفيديو لإزالة المناطق غير المرغوب فيها",
"title": "اقتصاص الفيديو",
"toolInfo": {
"description": "تتيح لك هذه الأداة اقتصاص ملفات الفيديو لإزالة المناطق غير المرغوب فيها. يمكنك تحديد منطقة الاقتصاص عن طريق تعيين إحداثيات X و Y وأبعاد العرض والارتفاع.",
"title": "اقتصاص الفيديو"
},
"videoDimensions": "أبعاد الفيديو: {{width}} × {{height}} بكسل",
"videoInformation": "معلومات الفيديو",
"width": "العرض",
"xCoordinate": "X (يسار)",
"yCoordinate": "Y (أعلى)"
},
"flip": {
"description": "قلب ملفات الفيديو أفقيًا أو عموديًا. عكس مقاطع الفيديو للحصول على تأثيرات خاصة أو تصحيح مشاكل الاتجاه.",
"flippingVideo": "قلب الفيديو",
"horizontalLabel": "أفقي (مرآة)",
"inputTitle": "إدخال الفيديو",
"orientation": "الاتجاه",
"resultTitle": "الفيديو المقلوب",
"shortDescription": "قلب الفيديو أفقيًا أو عموديًا",
"title": "قلب الفيديو",
"verticalLabel": "عمودي (رأسًا على عقب)"
},
"gif": {
"changeSpeed": {
"description": "تغيير سرعة تشغيل رسوم GIF المتحركة. تسريع أو إبطاء صور GIF مع الحفاظ على الحركة السلسة.",
"shortDescription": "تغيير سرعة رسوم GIF المتحركة",
"title": "تغيير سرعة GIF"
}
},
"loop": {
"description": "إنشاء فيديو متكرر عن طريق تكرار الفيديو الأصلي عدة مرات.",
"inputTitle": "إدخال الفيديو",
"loopingVideo": "تكرار الفيديو",
"loops": "التكرارات",
"numberOfLoops": "عدد التكرارات",
"resultTitle": "الفيديو المتكرر",
"shortDescription": "إنشاء ملفات فيديو متكررة",
"title": "تكرار الفيديو",
"toolInfo": {
"description": "تتيح لك هذه الأداة إنشاء فيديو متكرر عن طريق تكرار الفيديو الأصلي عدة مرات. يمكنك تحديد عدد مرات تكرار الفيديو.",
"title": "ما هو {{title}}؟"
}
},
"mergeVideo": {
"description": "دمج ملفات فيديو متعددة في فيديو واحد متواصل.",
"longDescription": "تتيح لك هذه الأداة دمج أو إلحاق ملفات فيديو متعددة في فيديو واحد متواصل. ما عليك سوى تحميل ملفات الفيديو الخاصة بك، وترتيبها بالترتيب المطلوب، ودمجها في ملف واحد لسهولة المشاركة أو التحرير.",
"shortDescription": "إلحاق ودمج مقاطع الفيديو بسهولة.",
"title": "دمج مقاطع الفيديو"
},
"rotate": {
"180Degrees": "180° (رأسًا على عقب)",
"270Degrees": "270° (90° عكس عقارب الساعة)",
"90Degrees": "90° باتجاه عقارب الساعة",
"description": "تدوير ملفات الفيديو بمقدار 90 أو 180 أو 270 درجة. تصحيح اتجاه الفيديو أو إنشاء تأثيرات خاصة مع تحكم دقيق في التدوير.",
"inputTitle": "إدخال الفيديو",
"resultTitle": "الفيديو المدور",
"rotatingVideo": "تدوير الفيديو",
"rotation": "الدوران",
"shortDescription": "تدوير الفيديو بدرجات محددة",
"title": "تدوير الفيديو"
},
"trim": {
"description": "تقليم ملفات الفيديو عن طريق تحديد أوقات البداية والنهاية. إزالة المقاطع غير المرغوب فيها من بداية أو نهاية مقاطع الفيديو.",
"endTime": "وقت النهاية",
"inputTitle": "إدخال الفيديو",
"resultTitle": "الفيديو المقلم",
"shortDescription": "تقليم الفيديو بإزالة المقاطع غير المرغوب فيها",
"startTime": "وقت البداية",
"timestamps": "الطوابع الزمنية",
"title": "تقليم الفيديو"
},
"videoToGif": {
"description": "تحويل ملفات الفيديو إلى تنسيق GIF متحرك. استخراج نطاقات زمنية محددة وإنشاء صور متحركة قابلة للمشاركة.",
"shortDescription": "تحويل الفيديو إلى GIF متحرك",
"title": "فيديو إلى GIF"
}
}

View file

@ -0,0 +1,38 @@
{
"xmlBeautifier": {
"description": "تنسيق XML بمسافات بادئة ومسافات مناسبة.",
"indentation": "المسافة البادئة",
"inputTitle": "إدخال XML",
"resultTitle": "XML منسق",
"shortDescription": "تنسيق وتجميل كود XML",
"title": "أداة تجميل XML",
"toolInfo": {
"description": "تتيح لك هذه الأداة تنسيق بيانات XML بمسافات بادئة ومسافات مناسبة، مما يجعلها أكثر قابلية للقراءة وأسهل في العمل معها.",
"title": "أداة تجميل XML"
},
"useSpaces": "استخدام المسافات",
"useSpacesDescription": "إضافة مسافة بادئة للمخرجات بالمسافات",
"useTabs": "استخدام علامات التبويب",
"useTabsDescription": "إضافة مسافة بادئة للمخرجات بعلامات التبويب."
},
"xmlValidator": {
"description": "التحقق من صحة بناء جملة XML والهيكل.",
"placeholder": "الصق أو استورد XML هنا...",
"shortDescription": "التحقق من صحة كود XML للكشف عن الأخطاء",
"title": "أداة التحقق من XML",
"toolInfo": {
"description": "تتيح لك هذه الأداة التحقق من صحة بناء جملة XML والهيكل. تتحقق مما إذا كان XML منسقًا بشكل صحيح وتوفر رسائل خطأ مفصلة لأية مشاكل يتم العثور عليها.",
"title": "أداة التحقق من XML"
}
},
"xmlViewer": {
"description": "عرض واستكشاف بنية XML بتنسيق شجري.",
"inputTitle": "إدخال XML",
"resultTitle": "عرض شجرة XML",
"title": "عارض XML",
"toolInfo": {
"description": "تتيح لك هذه الأداة عرض بيانات XML بتنسيق شجري هرمي، مما يسهل استكشاف وفهم بنية مستندات XML.",
"title": "عارض XML"
}
}
}

View file

@ -8,14 +8,35 @@ import { CustomSnackBarProvider } from '../contexts/CustomSnackBarContext';
import { SnackbarProvider } from 'notistack';
import { tools } from '../tools';
import './index.css';
import { darkTheme, lightTheme } from '../config/muiConfig';
import {
darkTheme,
lightTheme,
darkThemeRTL,
lightThemeRTL
} from '../config/muiConfig';
import ScrollToTopButton from './ScrollToTopButton';
import { I18nextProvider } from 'react-i18next';
import i18n from '../i18n';
import { UserTypeFilterProvider } from 'providers/UserTypeFilterProvider';
import { CacheProvider } from '@emotion/react';
import createCache from '@emotion/cache';
import rtlPlugin from 'stylis-plugin-rtl';
export type Mode = 'dark' | 'light' | 'system';
// Create RTL cache
const cacheRtl = createCache({
key: 'muirtl',
stylisPlugins: [rtlPlugin]
});
const cacheLtr = createCache({
key: 'muiltr'
});
// RTL languages
const RTL_LANGUAGES = ['ar'];
const AppRoutes = () => {
const updatedRoutesConfig = [...routesConfig];
tools.forEach((tool) => {
@ -28,8 +49,31 @@ function App() {
const [mode, setMode] = useState<Mode>(
() => (localStorage.getItem('theme') || 'system') as Mode
);
const [theme, setTheme] = useState<Theme>(() => getTheme(mode));
useEffect(() => setTheme(getTheme(mode)), [mode]);
const [isRTL, setIsRTL] = useState<boolean>(() =>
RTL_LANGUAGES.includes(i18n.language)
);
const [theme, setTheme] = useState<Theme>(() => getTheme(mode, isRTL));
useEffect(() => setTheme(getTheme(mode, isRTL)), [mode, isRTL]);
// Update RTL state and document direction when language changes
useEffect(() => {
const handleLanguageChange = (lng: string) => {
const shouldBeRTL = RTL_LANGUAGES.includes(lng);
setIsRTL(shouldBeRTL);
document.documentElement.dir = shouldBeRTL ? 'rtl' : 'ltr';
};
// Set initial direction
handleLanguageChange(i18n.language);
// Listen for language changes
i18n.on('languageChanged', handleLanguageChange);
return () => {
i18n.off('languageChanged', handleLanguageChange);
};
}, []);
// Make sure to update the theme when the mode changes
useEffect(() => {
@ -37,59 +81,73 @@ function App() {
'(prefers-color-scheme: dark)'
);
const handleThemeChange = (e: MediaQueryListEvent) => {
setTheme(e.matches ? darkTheme : lightTheme);
setTheme(
e.matches
? isRTL
? darkThemeRTL
: darkTheme
: isRTL
? lightThemeRTL
: lightTheme
);
};
systemDarkModeQuery.addEventListener('change', handleThemeChange);
return () => {
systemDarkModeQuery.removeEventListener('change', handleThemeChange);
};
}, []);
}, [isRTL]);
return (
<I18nextProvider i18n={i18n}>
<ThemeProvider theme={theme}>
<CssBaseline />
<SnackbarProvider
maxSnack={5}
anchorOrigin={{
vertical: 'bottom',
horizontal: 'right'
}}
>
<CustomSnackBarProvider>
<UserTypeFilterProvider>
<BrowserRouter>
<Navbar
mode={mode}
onChangeMode={() => {
setMode((prev) => nextMode(prev));
localStorage.setItem('theme', nextMode(mode));
}}
/>
<Suspense fallback={<Loading />}>
<AppRoutes />
</Suspense>
</BrowserRouter>
</UserTypeFilterProvider>
</CustomSnackBarProvider>
</SnackbarProvider>
<ScrollToTopButton />
</ThemeProvider>
<CacheProvider value={isRTL ? cacheRtl : cacheLtr}>
<ThemeProvider theme={theme}>
<CssBaseline />
<SnackbarProvider
maxSnack={5}
anchorOrigin={{
vertical: 'bottom',
horizontal: 'right'
}}
>
<CustomSnackBarProvider>
<UserTypeFilterProvider>
<BrowserRouter>
<Navbar
mode={mode}
onChangeMode={() => {
setMode((prev) => nextMode(prev));
localStorage.setItem('theme', nextMode(mode));
}}
/>
<Suspense fallback={<Loading />}>
<AppRoutes />
</Suspense>
</BrowserRouter>
</UserTypeFilterProvider>
</CustomSnackBarProvider>
</SnackbarProvider>
<ScrollToTopButton />
</ThemeProvider>
</CacheProvider>
</I18nextProvider>
);
}
function getTheme(mode: Mode): Theme {
function getTheme(mode: Mode, isRTL: boolean): Theme {
switch (mode) {
case 'dark':
return darkTheme;
return isRTL ? darkThemeRTL : darkTheme;
case 'light':
return lightTheme;
return isRTL ? lightThemeRTL : lightTheme;
default:
return window.matchMedia('(prefers-color-scheme: dark)').matches
? darkTheme
: lightTheme;
? isRTL
? darkThemeRTL
: darkTheme
: isRTL
? lightThemeRTL
: lightTheme;
}
}

View file

@ -38,7 +38,8 @@ const languages = [
{ code: 'hi', label: 'हिंदी' },
{ code: 'nl', label: 'Nederlands' },
{ code: 'ru', label: 'Русский' },
{ code: 'zh', label: '中文' }
{ code: 'zh', label: '中文' },
{ code: 'ar', label: 'العربية' }
];
const Navbar: React.FC<NavbarProps> = ({

View file

@ -8,7 +8,18 @@ const sharedThemeOptions: ThemeOptions = {
},
zIndex: { snackbar: 100000 }
};
export const lightTheme = createTheme({
const createThemeWithDirection = (
options: ThemeOptions,
direction: 'ltr' | 'rtl' = 'ltr'
) => {
return createTheme({
...options,
direction
});
};
export const lightTheme = createThemeWithDirection({
...sharedThemeOptions,
palette: {
background: {
@ -27,7 +38,7 @@ export const lightTheme = createTheme({
}
});
export const darkTheme = createTheme({
export const darkTheme = createThemeWithDirection({
...sharedThemeOptions,
palette: {
mode: 'dark',
@ -48,3 +59,50 @@ export const darkTheme = createTheme({
}
}
});
export const lightThemeRTL = createThemeWithDirection(
{
...sharedThemeOptions,
palette: {
background: {
default: '#F5F5FA',
hover: '#FAFAFD',
lightSecondary: '#EBF5FF',
darkSecondary: '#5581b5'
}
},
components: {
MuiButton: {
styleOverrides: {
contained: { color: '#ffffff', backgroundColor: '#1976d2' }
}
}
}
},
'rtl'
);
export const darkThemeRTL = createThemeWithDirection(
{
...sharedThemeOptions,
palette: {
mode: 'dark',
background: {
default: '#1C1F20',
paper: '#181a1b',
hover: '#1a1c1d',
lightSecondary: '#1E2021',
darkSecondary: '#3C5F8A'
},
text: { primary: '#ffffff' }
},
components: {
MuiButton: {
styleOverrides: {
contained: { color: '#ffffff', backgroundColor: '#145ea8' }
}
}
}
},
'rtl'
);

View file

@ -28,7 +28,19 @@ i18n
.use(LanguageDetector)
.use(initReactI18next)
.init({
supportedLngs: ['en', 'de', 'es', 'fr', 'pt', 'ja', 'hi', 'nl', 'ru', 'zh'],
supportedLngs: [
'en',
'de',
'es',
'fr',
'pt',
'ja',
'hi',
'nl',
'ru',
'zh',
'ar'
],
fallbackLng: 'en',
interpolation: {
escapeValue: false // react already safes from xss => https://www.i18next.com/translation-function/interpolation#unescape