i18ntk 4.7.0 → 4.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +34 -1
- package/README.md +15 -4
- package/main/i18ntk-ui.js +35 -30
- package/main/i18ntk-usage.js +2 -2
- package/main/i18ntk-validate.js +1 -1
- package/main/manage/commands/ValidateCommand.js +1 -1
- package/main/manage/index.js +52 -47
- package/main/manage/managers/LanguageMenu.js +3 -1
- package/main/manage/services/ConfigurationService.js +1 -1
- package/main/manage/services/FrameworkDetectionService.js +1 -1
- package/main/manage/services/UsageService.js +2 -2
- package/package.json +11 -7
- package/settings/settings-manager.js +19 -3
- package/ui-locales/ar.json +2636 -0
- package/ui-locales/cs.json +2636 -0
- package/ui-locales/de.json +17 -1
- package/ui-locales/el.json +2636 -0
- package/ui-locales/en.json +17 -1
- package/ui-locales/es.json +17 -1
- package/ui-locales/fr.json +17 -1
- package/ui-locales/he.json +2636 -0
- package/ui-locales/hi.json +2636 -0
- package/ui-locales/hu.json +2636 -0
- package/ui-locales/it.json +2636 -0
- package/ui-locales/ja.json +17 -1
- package/ui-locales/ko.json +2636 -0
- package/ui-locales/nl.json +2636 -0
- package/ui-locales/pl.json +2636 -0
- package/ui-locales/pt.json +2636 -0
- package/ui-locales/ru.json +17 -1
- package/ui-locales/sv.json +2636 -0
- package/ui-locales/th.json +2636 -0
- package/ui-locales/tr.json +2636 -0
- package/ui-locales/uk.json +2636 -0
- package/ui-locales/vi.json +2636 -0
- package/ui-locales/zh.json +17 -1
- package/utils/config-helper.js +2 -2
- package/utils/config-manager.js +3 -4
- package/utils/env-manager.js +1 -1
- package/utils/locale-optimizer.js +1 -1
|
@@ -0,0 +1,2636 @@
|
|
|
1
|
+
{
|
|
2
|
+
"meta": {
|
|
3
|
+
"version": "4.7.0",
|
|
4
|
+
"updated": "2026-07-07",
|
|
5
|
+
"lang": "ar"
|
|
6
|
+
},
|
|
7
|
+
"common": {
|
|
8
|
+
"welcome": "مرحباً",
|
|
9
|
+
"hello": "مرحبًا",
|
|
10
|
+
"goodbye": "مع السلامة",
|
|
11
|
+
"yes": "نعم",
|
|
12
|
+
"no": "لا",
|
|
13
|
+
"save": "يحفظ",
|
|
14
|
+
"cancel": "يلغي",
|
|
15
|
+
"delete": "يمسح",
|
|
16
|
+
"edit": "يحرر",
|
|
17
|
+
"loading": "تحميل...",
|
|
18
|
+
"offlineTitle": "أنت غير متصل",
|
|
19
|
+
"offlineMessage": "يرجى التحقق من اتصالك بالإنترنت",
|
|
20
|
+
"tryReconnect": "حاول إعادة الاتصال",
|
|
21
|
+
"logout": "تسجيل الخروج",
|
|
22
|
+
"login": "تسجيل الدخول",
|
|
23
|
+
"amount": "كمية",
|
|
24
|
+
"success": "نجاح",
|
|
25
|
+
"error": "خطأ",
|
|
26
|
+
"warning": "تحذير",
|
|
27
|
+
"info": "معلومات:",
|
|
28
|
+
"debug": "تصحيح",
|
|
29
|
+
"progress": "تقدم:",
|
|
30
|
+
"remaining": "متبقي:",
|
|
31
|
+
"total": "المجموع:",
|
|
32
|
+
"completed": "7. اكتمل بنجاح!",
|
|
33
|
+
"missing": "مفتقد",
|
|
34
|
+
"partial": "جزئي",
|
|
35
|
+
"sameAsSource": "نفس المصدر :",
|
|
36
|
+
"formatMismatch": "عدم تطابق التنسيق:",
|
|
37
|
+
"typeMismatch": "عدم تطابق النوع:",
|
|
38
|
+
"structureMismatch": "عدم تطابق الهيكل:",
|
|
39
|
+
"invalidOption": "خيار غير صالح",
|
|
40
|
+
"separator": "==================================================",
|
|
41
|
+
"initializationFailed": "❌ فشلت التهيئة: {error}",
|
|
42
|
+
"stackTrace": "تتبع المكدس: {stack}",
|
|
43
|
+
"pressEnterToContinue": "اضغط على Enter للمتابعة...",
|
|
44
|
+
"pressEnterToReturn": "اضغط على Enter للعودة إلى القائمة الرئيسية...",
|
|
45
|
+
"stepCompleted": "خطوة '{stepName}' مكتمل.",
|
|
46
|
+
"stepFailed": "خطوة '{stepName}' فشل.",
|
|
47
|
+
"runningStep": "خطوة التشغيل: {stepName}",
|
|
48
|
+
"command": "يأمر: {command}",
|
|
49
|
+
"startingWorkflow": "بدء سير العمل...",
|
|
50
|
+
"workflowCompleted": "اكتمل سير العمل.",
|
|
51
|
+
"checkReports": "تحقق من التقارير للحصول على التفاصيل.",
|
|
52
|
+
"errorExecutingCommand": "خطأ في تنفيذ الأمر: {error}",
|
|
53
|
+
"genericError": "❌ خطأ: {error}",
|
|
54
|
+
"errors": {
|
|
55
|
+
"errors": "الأخطاء:",
|
|
56
|
+
"genericError": "❌ خطأ: {error}",
|
|
57
|
+
"initializationFailed": "❌ فشلت التهيئة: {error}",
|
|
58
|
+
"initializationCancelled": "❌ تم إلغاء التهيئة من قبل المستخدم.",
|
|
59
|
+
"translationKeyNotFound": "لم يتم العثور على مفتاح الترجمة: {key}",
|
|
60
|
+
"sourceDirectoryNotFound": "لم يتم العثور على الدليل المصدر: {directory}",
|
|
61
|
+
"configLoadingFailed": "فشل تحميل التكوين",
|
|
62
|
+
"invalidSourceDirectory": "دليل المصدر غير صالح: {directory}",
|
|
63
|
+
"securityViolation": "تم اكتشاف انتهاك أمني",
|
|
64
|
+
"authenticationFailed": "فشلت المصادقة",
|
|
65
|
+
"sourceEqualsI18nWarn": "⚠️ sourceDir يساوي i18nDir ({sourceDir}). التراجع إلى {fallback} لمسح المصدر"
|
|
66
|
+
},
|
|
67
|
+
"errorGeneratingStatusSummary": "حدث خطأ أثناء إنشاء ملخص الحالة: {error}",
|
|
68
|
+
"errorRunningDebugTool": "خطأ في تشغيل أداة التصحيح '{displayName}': {error}",
|
|
69
|
+
"errorReadingDebugLogs": "خطأ في قراءة سجلات التصحيح: {error}",
|
|
70
|
+
"errorAnalyzingLogFile": "خطأ في تحليل ملف السجل: {error}",
|
|
71
|
+
"errorAnalyzingTranslationKeys": "خطأ في تحليل مفاتيح الترجمة: {error}",
|
|
72
|
+
"errorAnalyzingTranslationCompleteness": "خطأ في تحليل اكتمال الترجمة: {error}",
|
|
73
|
+
"analyzingTranslationCompleteness": "تحليل اكتمال الترجمة عبر جميع اللغات...",
|
|
74
|
+
"i18nDirectoryNotFound": "⚠️ لم يتم العثور على دليل i18n: {i18nDir}",
|
|
75
|
+
"translationCompletenessAnalysisFailed": "⚠️ فشل تحليل اكتمال الترجمة: {error}",
|
|
76
|
+
"failedToAnalyzeLanguage": "❌فشل في تحليل اللغة {language}: {error}",
|
|
77
|
+
"errorReadingI18nDirectory": "❌ خطأ في قراءة دليل i18n:",
|
|
78
|
+
"languageCompletenessTitle": "📈 اكتمال الترجمة حسب اللغة",
|
|
79
|
+
"errorAnalyzingTranslationFormat": "خطأ في تحليل تنسيق الترجمة: {error}",
|
|
80
|
+
"errorAnalyzingTranslationType": "خطأ في تحليل نوع الترجمة: {error}",
|
|
81
|
+
"errorAnalyzingTranslationStructure": "خطأ في تحليل بنية الترجمة: {error}",
|
|
82
|
+
"errorAnalyzingTranslationFormatMismatch": "خطأ في تحليل عدم تطابق تنسيق الترجمة: {error}",
|
|
83
|
+
"errorAnalyzingTranslationTypeMismatch": "خطأ في تحليل عدم تطابق نوع الترجمة: {error}",
|
|
84
|
+
"errorAnalyzingTranslationStructureMismatch": "خطأ في تحليل عدم تطابق بنية الترجمة: {error}",
|
|
85
|
+
"errorAnalyzingTranslationSameAsSource": "خطأ في تحليل الترجمة مثل المصدر: {error}",
|
|
86
|
+
"title": "حالة",
|
|
87
|
+
"nextStep1": "1. التحقق من تحليل الاستخدام:",
|
|
88
|
+
"nextStep2": "2. التحقق من صحة الترجمات:",
|
|
89
|
+
"nextStep3": "3. تحليل الاكتمال:",
|
|
90
|
+
"nextStep4": "4. أكمل الترجمات المفقودة:",
|
|
91
|
+
"nextStep5": "5. إنشاء تقرير موجز:",
|
|
92
|
+
"nextStep6": "6. مراجعة الترجمات وإنهائها:",
|
|
93
|
+
"generating": "جارٍ إنشاء تقرير ملخص...",
|
|
94
|
+
"review": "مراجعة الترجمات...",
|
|
95
|
+
"finalizing": "إنهاء الترجمات...",
|
|
96
|
+
"finalized": "تم الانتهاء بنجاح!",
|
|
97
|
+
"warnings": "التحذيرات:",
|
|
98
|
+
"completedKeys": "المفاتيح المكتملة:",
|
|
99
|
+
"missingKeys": "المفاتيح المفقودة:",
|
|
100
|
+
"partialKeys": "المفاتيح الجزئية:",
|
|
101
|
+
"home": "بيت",
|
|
102
|
+
"settings": "إعدادات",
|
|
103
|
+
"startingSettings": "🎛️ بدء تشغيل الإعدادات CLI...",
|
|
104
|
+
"confirm": "يتأكد",
|
|
105
|
+
"errorExiting": "حدث خطأ أثناء الخروج."
|
|
106
|
+
},
|
|
107
|
+
"errors": {
|
|
108
|
+
"invalidOption": "❌ خيار غير صالح: {option}. يرجى المحاولة مرة أخرى.",
|
|
109
|
+
"readlineClosed": "دفق الإدخال مغلق؛ يعمل في الوضع غير التفاعلي.",
|
|
110
|
+
"noPackageJson": "لم يتم العثور على package.json. لا يمكن الكشف التلقائي عن إطار عمل i18n.",
|
|
111
|
+
"noI18nDir": "لم يتم العثور على دليل i18n في جذر المشروع.",
|
|
112
|
+
"noI18nConfig": "لم يتم العثور على ملف تكوين i18n في جذر المشروع.",
|
|
113
|
+
"errorReadingDebugLogs": "خطأ في قراءة سجلات التصحيح: {error}"
|
|
114
|
+
},
|
|
115
|
+
"scanner": {
|
|
116
|
+
"help_message": "استخدام الماسح الضوئي للنص I18n: العقدة i18ntk-scanner.js [خيارات] الخيارات: --source-dir <dir> الدليل المصدر المراد مسحه (الافتراضي: ./src) --output <file> ملف الإخراج لنتائج المسح (الافتراضي: ./i18ntk-scanner-report.json) - الإطار <name> إطار العمل المستهدف (رد الفعل، vue، الزاوي، الفانيليا) - الأنماط <patterns> أنماط التعبير العادي المخصصة (مفصولة بفواصل) --اختبارات التضمين تضمين ملفات الاختبار في الفحص --استبعاد-dirs <dirs> الدلائل المراد استبعادها (مفصولة بفواصل) --مساعدة في إظهار هذه المساعدة أمثلة: العقدة i18ntk-scanner.js --source-dir=./src --framework=react العقدة i18ntk-scanner.js --patterns 'console.log\\((.*?)\\)' --عقدة تضمين الاختبارات i18ntk-scanner.js --output=./scan-results.json",
|
|
117
|
+
"help_options": {
|
|
118
|
+
"source_dir": "الدليل المصدر للبحث عن مشكلات i18n",
|
|
119
|
+
"output_dir": "دليل لتقارير المسح والنتائج",
|
|
120
|
+
"framework": "الإطار المستهدف (الرد، الرؤية، الزاوي، الفانيليا)",
|
|
121
|
+
"patterns": "أنماط regex المخصصة للكشف عن النص",
|
|
122
|
+
"exclude": "أنماط الملفات المراد استبعادها من المسح",
|
|
123
|
+
"output_report": "إنشاء تقرير المسح التفصيلي",
|
|
124
|
+
"min_length": "الحد الأدنى لطول النص الذي يجب مراعاته عند الترجمة",
|
|
125
|
+
"max_length": "الحد الأقصى لطول النص الذي يجب مراعاته عند الترجمة",
|
|
126
|
+
"include_tests": "قم بتضمين ملفات الاختبار في عملية المسح"
|
|
127
|
+
},
|
|
128
|
+
"starting": "🔍 بدء تشغيل الماسح الضوئي للنص لإطار العمل: {framework}",
|
|
129
|
+
"sourceDirectory": "📁 دليل المسح: {sourceDir}",
|
|
130
|
+
"frameworkDetected": "🎯 الإطار المكتشف: {framework}",
|
|
131
|
+
"scanningFiles": "📊 المسح {fileCount} ملفات...",
|
|
132
|
+
"foundTexts": "📝 وجدت {textCount} النصوص التي تحتاج إلى ترجمة",
|
|
133
|
+
"generatingReport": "📊 إصدار تقرير مفصل...",
|
|
134
|
+
"reportSaved": "💾 تم حفظ تقرير المسح في: {reportPath}",
|
|
135
|
+
"noTextsFound": "✅ لم يتم العثور على نصوص إنجليزية مشفرة",
|
|
136
|
+
"scanComplete": "🎉 تم الانتهاء من الفحص بنجاح!",
|
|
137
|
+
"analysisTitle": "🔍 تحليل فحص الترجمة",
|
|
138
|
+
"fileSummary": "📄 {file}: {count} تم العثور على النصوص",
|
|
139
|
+
"textLocation": "📍الخط {line}: {text}",
|
|
140
|
+
"foundText": "وجد {count} حالات النص المضمنة المحتملة",
|
|
141
|
+
"context": "📝 السياق: {context}",
|
|
142
|
+
"severity": "⚠️ الشدة: {severity}",
|
|
143
|
+
"recommendation": "💡 التوصية: {recommendation}",
|
|
144
|
+
"welcome": {
|
|
145
|
+
"title": "🎯 مرحبًا بك في ماسح النصوص!",
|
|
146
|
+
"description": "تقوم هذه الأداة بمسح كود المصدر الخاص بك بحثًا عن نص باللغة الإنجليزية مضمن والذي قد يحتاج إلى ترجمة."
|
|
147
|
+
},
|
|
148
|
+
"frameworkPrompt": {
|
|
149
|
+
"title": "🎯 حدد الإطار",
|
|
150
|
+
"available": "الأطر المتاحة: رد الفعل، vue، الزاوي، الفانيليا",
|
|
151
|
+
"description": "أدخل نوع الإطار (أو اضغط على Enter للاكتشاف التلقائي):",
|
|
152
|
+
"input": "نطاق:"
|
|
153
|
+
},
|
|
154
|
+
"directoryPrompt": {
|
|
155
|
+
"title": "📁 حدد دليل المصدر",
|
|
156
|
+
"current": "الدليل الحالي: {dir}",
|
|
157
|
+
"description": "أدخل الدليل المراد مسحه (أو اضغط على Enter للتيار):",
|
|
158
|
+
"input": "دليل:"
|
|
159
|
+
},
|
|
160
|
+
"options": {
|
|
161
|
+
"includeTests": "تضمين ملفات الاختبار؟",
|
|
162
|
+
"excludeDirs": "الدلائل المراد استبعادها (مفصولة بفواصل):",
|
|
163
|
+
"customPatterns": "الأنماط المخصصة للبحث عن (regex):"
|
|
164
|
+
},
|
|
165
|
+
"reportGenerated": "تم إنشاء تقرير المسح: {path}"
|
|
166
|
+
},
|
|
167
|
+
"fixer": {
|
|
168
|
+
"help_message": "استخدام أداة تثبيت الترجمة I18n: عقدة i18ntk-fixer.js [خيارات] الخيارات: --source-dir <dir> الدليل المصدر المراد مسحه (الافتراضي: ./locales) --languages <langs> قائمة اللغات المفصولة بفواصل لإصلاح علامات -- <markers> علامات مفصولة بفواصل للتعامل معها على أنها غير مترجمة --no-backup تخطي إنشاء النسخ الاحتياطي التلقائي --مساعدة إظهار هذه المساعدة أمثلة: العقدة i18ntk-fixer.js --languages de,fr العقدة i18ntk-fixer.js --source-dir=./locales --markers NOT_TRANSLATED العقدة i18ntk-fixer.js --no-backup",
|
|
169
|
+
"starting": "🚀 البدء في إصلاح الترجمة للغات: {languages}",
|
|
170
|
+
"sourceDirectory": "📁 دليل المصدر: {sourceDir}",
|
|
171
|
+
"sourceLanguage": "🔤 لغة المصدر: {sourceLanguage}",
|
|
172
|
+
"markers": "🏷️ علامات للإصلاح: {markers}",
|
|
173
|
+
"scanningLanguage": "📊 المسح {language}...",
|
|
174
|
+
"noLanguages": "❌ لا توجد لغات محددة للإصلاح.",
|
|
175
|
+
"allComplete": "🎉 جميع الترجمات كاملة بالفعل!",
|
|
176
|
+
"fullReportSaved": "📊 تم حفظ التقرير كاملاً في: {reportPath}",
|
|
177
|
+
"reviewReport": "برجاء مراجعة التقرير قبل المتابعة.",
|
|
178
|
+
"backupCreated": "💾 تم إنشاء النسخة الاحتياطية بنجاح.",
|
|
179
|
+
"applyingFixes": "🔄تطبيق الإصلاحات...",
|
|
180
|
+
"fixingComplete": "✅ اكتمل إصلاح الترجمة!",
|
|
181
|
+
"operationCancelled": "❌ تم إلغاء العملية من قبل المستخدم.",
|
|
182
|
+
"analysisTitle": "🔍 تحليل إصلاح الترجمة",
|
|
183
|
+
"analysisSeparator": "==================================================",
|
|
184
|
+
"totalIssues": "إجمالي المشكلات التي تم العثور عليها: {totalIssues}",
|
|
185
|
+
"missingTranslations": "الترجمات المفقودة: {missing}",
|
|
186
|
+
"placeholderTranslations": "ترجمات العناصر النائبة: {placeholder}",
|
|
187
|
+
"noIssues": "✅ لم يتم العثور على مشاكل. جميع الترجمات كاملة.",
|
|
188
|
+
"detailedIssues": "📋 DETAILED ISSUES:",
|
|
189
|
+
"detailedSeparator": "--------------------------------------------------",
|
|
190
|
+
"filePath": "📄 {file} → {path}",
|
|
191
|
+
"missingKey": "❌ مفقود: {source} → {new}",
|
|
192
|
+
"placeholderKey": "⚠️ العنصر النائب: \"{target}\" → \"{new}\"",
|
|
193
|
+
"moreIssues": "... و {count} المزيد من القضايا. تحقق من ملف التقرير للحصول على التفاصيل الكاملة.",
|
|
194
|
+
"confirmationTitle": "🤔 هل تريد الاستمرار في هذه الإصلاحات؟",
|
|
195
|
+
"confirmationOptions": "خيارات:",
|
|
196
|
+
"optionYes": "y - نعم، قم بتطبيق كافة الإصلاحات",
|
|
197
|
+
"optionNo": "ن - لا، قم بإلغاء العملية",
|
|
198
|
+
"optionShow": "ق - عرض القضايا التفصيلية",
|
|
199
|
+
"choicePrompt": "اختيارك (ص / لا / ق):",
|
|
200
|
+
"nonInteractiveMode": "⚡ تم اكتشاف الوضع غير التفاعلي - تطبيق الإصلاحات تلقائيًا...",
|
|
201
|
+
"reportGenerated": "📊 تم إنشاء تقرير المصلح: {path}",
|
|
202
|
+
"summary": "ملخص المثبت:",
|
|
203
|
+
"welcome": {
|
|
204
|
+
"title": "🎯 مرحبًا بك في مُثبت الترجمة!",
|
|
205
|
+
"description": "ستساعدك هذه الأداة على إصلاح الترجمات والعناصر النائبة المعطلة عبر ملفاتك المحلية."
|
|
206
|
+
},
|
|
207
|
+
"markerPrompt": {
|
|
208
|
+
"title": "🏷️ تكوين علامات العناصر النائبة",
|
|
209
|
+
"description": "أدخل العلامات التي تشير إلى النص غير المترجم (مفصول بفواصل):",
|
|
210
|
+
"currentDefaults": "العلامات الافتراضية: {markers}",
|
|
211
|
+
"input": "العلامات (أو اضغط على Enter للإعدادات الافتراضية):"
|
|
212
|
+
},
|
|
213
|
+
"languagePrompt": {
|
|
214
|
+
"title": "🌍 حدد اللغات لإصلاحها",
|
|
215
|
+
"available": "اللغات المتاحة: {languages}",
|
|
216
|
+
"description": "أدخل اللغات المراد إصلاحها (مفصولة بفواصل) أو اضغط على Enter للكل:",
|
|
217
|
+
"input": "اللغات:",
|
|
218
|
+
"noLanguages": "لم يتم العثور على لغات لإصلاحها."
|
|
219
|
+
},
|
|
220
|
+
"directoryPrompt": {
|
|
221
|
+
"title": "📁 اختر الدليل",
|
|
222
|
+
"current": "الدليل الحالي: {dir}",
|
|
223
|
+
"description": "أدخل الدليل الذي يحتوي على ملفاتك المحلية (أو اضغط على Enter للتيار):",
|
|
224
|
+
"input": "دليل:"
|
|
225
|
+
},
|
|
226
|
+
"backupLocation": "موقع النسخ الاحتياطي: {dir}",
|
|
227
|
+
"completed": "تم الانتهاء من التثبيت.",
|
|
228
|
+
"creatingBackup": "إنشاء نسخة احتياطية في {dir}...",
|
|
229
|
+
"dryRunMode": "وضع التشغيل الجاف: {mode}",
|
|
230
|
+
"error": "فشل المثبت: {error}",
|
|
231
|
+
"fixing": "تحديد {language}...",
|
|
232
|
+
"foundLanguages": "وجد {count} اللغات: {languages}",
|
|
233
|
+
"languageFixed": "{language}: مُثَبَّت {fixed} المفتاح (المفاتيح)، تم تخطيه {skipped}.",
|
|
234
|
+
"running": "جارٍ تشغيل أداة إصلاح الترجمة...",
|
|
235
|
+
"totalFixed": "مجموع ثابت: {count}"
|
|
236
|
+
},
|
|
237
|
+
"autorun": {
|
|
238
|
+
"stepAnalyzeTranslations": "تحليل الترجمات",
|
|
239
|
+
"stepCompletedWithIcon": "✅ مكتمل: {stepName}",
|
|
240
|
+
"stepValidateTranslations": "التحقق من صحة الترجمات",
|
|
241
|
+
"stepRunning": "◀️ خطوة {stepNumber}/{totalSteps}: {stepName}",
|
|
242
|
+
"separator": "==================================================",
|
|
243
|
+
"stepFailed": "❌ فشل: {stepName}",
|
|
244
|
+
"errorLabel": "خطأ",
|
|
245
|
+
"autoRunScriptTitle": "🧪 سير العمل التشغيل التلقائي",
|
|
246
|
+
"usageTitle": "الاستخدام",
|
|
247
|
+
"runAllSteps": "تشغيل: العقدة i18ntk-autorun.js",
|
|
248
|
+
"configureSettingsFirst": "التكوين: علامات i18ntk-config.json أو CLI",
|
|
249
|
+
"runSpecificSteps": "استخدم --steps=1,3 أو --list لإظهار الخطوات",
|
|
250
|
+
"showHelp": "- مساعدة لمزيد من المعلومات",
|
|
251
|
+
"examplesTitle": "أمثلة",
|
|
252
|
+
"configExample": "العقدة i18ntk-autorun.js --ui-language=zh",
|
|
253
|
+
"stepsExample1": "العقدة i18ntk-autorun.js --steps=analyze,validate",
|
|
254
|
+
"stepsExample2": "العقدة i18ntk-autorun.js --list",
|
|
255
|
+
"customSettingsConfiguration": "إعدادات التشغيل التلقائي المخصصة",
|
|
256
|
+
"availableSteps": "الخطوات المتاحة",
|
|
257
|
+
"startingAutoRunWorkflow": "🚀 بدء سير عمل التشغيل التلقائي...",
|
|
258
|
+
"workflowIncludesSteps": "يتضمن سير العمل {count} خطوات:",
|
|
259
|
+
"missingRequiredFile": "الملف المطلوب مفقود: {file}",
|
|
260
|
+
"workflowStopped": "توقف سير العمل بسبب فشل.",
|
|
261
|
+
"workflowCompleted": "🎉 اكتمل سير العمل!",
|
|
262
|
+
"successfulSteps": "الخطوات الناجحة: {count}",
|
|
263
|
+
"failedSteps": "خطوات فاشلة: {count}",
|
|
264
|
+
"stepInitializeProject": "تهيئة المشروع",
|
|
265
|
+
"stepCheckUsage": "التحقق من استخدام المفتاح",
|
|
266
|
+
"stepGenerateSummary": "إنشاء تقرير موجز",
|
|
267
|
+
"runInitializationFirst": "الرجاء تشغيل التهيئة أولاً.",
|
|
268
|
+
"initializationCheckPassed": "تم اجتياز فحص التهيئة.",
|
|
269
|
+
"runningStep": "خطوة التشغيل: {stepName}",
|
|
270
|
+
"commandLabel": "يأمر: {command}",
|
|
271
|
+
"stepCompletedWithTime": "خطوة '{stepName}\"اكتمل في {duration}آنسة.",
|
|
272
|
+
"stepCompleted": "خطوة '{stepName}' مكتمل.",
|
|
273
|
+
"stepFailedWithError": "خطوة '{stepName}'فشل بسبب الخطأ: {error}",
|
|
274
|
+
"requiredStepFailed": "فشلت الخطوة المطلوبة. إيقاف سير العمل.",
|
|
275
|
+
"optionalStepFailed": "فشلت الخطوة الاختيارية. استمرار سير العمل.",
|
|
276
|
+
"stepRequired": "(مطلوب)",
|
|
277
|
+
"stepOptional": "(خياري)",
|
|
278
|
+
"startingExecution": "البدء بالتنفيذ...",
|
|
279
|
+
"pressEnterToContinue": "اضغط على Enter للمتابعة...",
|
|
280
|
+
"runningSelectedSteps": "تشغيل الخطوات المحددة...",
|
|
281
|
+
"invalidStepNumber": "رقم الخطوة غير صالح: {stepNum}",
|
|
282
|
+
"executionReport": "تقرير التنفيذ:",
|
|
283
|
+
"requiredFailedSteps": "فشلت الخطوات المطلوبة: {count}",
|
|
284
|
+
"stepDetails": "تفاصيل الخطوة:",
|
|
285
|
+
"reportSavedTo": "تم حفظ التقرير في: {path}",
|
|
286
|
+
"overallStatusSuccess": "SUCCESS",
|
|
287
|
+
"overallStatusFailed": "FAILED",
|
|
288
|
+
"overallStatus": "الحالة العامة: {status}",
|
|
289
|
+
"pressEnterForDefaults": "اضغط على Enter لاستخدام الإعدادات الافتراضية لأي مطالبة.",
|
|
290
|
+
"sourceDirPrompt": "أدخل الدليل المصدر (الافتراضي: {default}):",
|
|
291
|
+
"sourceLangPrompt": "أدخل لغة المصدر (الافتراضي: {default}):",
|
|
292
|
+
"targetLangsPrompt": "أدخل اللغات المستهدفة (مفصولة بفواصل، الافتراضية: {default}):",
|
|
293
|
+
"translationMarkerPrompt": "أدخل علامة الترجمة (الافتراضي: {default}):",
|
|
294
|
+
"outputDirPrompt": "أدخل دليل الإخراج للتقارير (الافتراضي: {default}):",
|
|
295
|
+
"settingsUpdatedSuccessfully": "تم تحديث الإعدادات بنجاح!",
|
|
296
|
+
"errorConfiguringSettings": "خطأ في تكوين الإعدادات: {error}",
|
|
297
|
+
"configurationComplete": "اكتمل التكوين.",
|
|
298
|
+
"runAutoRunCommand": "الآن يمكنك تشغيل أمر التشغيل التلقائي.",
|
|
299
|
+
"configurationFailed": "فشل التكوين: {error}",
|
|
300
|
+
"noValidStepNumbers": "لم يتم توفير أرقام خطوات صالحة.",
|
|
301
|
+
"autoRunFailed": "فشل التشغيل التلقائي: {error}",
|
|
302
|
+
"stepCompleteTranslations": "ترجمات كاملة",
|
|
303
|
+
"stepAnalyzeSizing": "تحليل الحجم",
|
|
304
|
+
"stepCompletedIcon": "✅",
|
|
305
|
+
"stepRunningWithNumber": "[{stepNumber}/{totalSteps}] خطوة '{stepName}' جري...",
|
|
306
|
+
"stepFailedIcon": "❌",
|
|
307
|
+
"translationLoadWarning": "تحذير: لا يمكن التحميل {lang} ترجمات",
|
|
308
|
+
"configReadError": "خطأ في القراءة {file}"
|
|
309
|
+
},
|
|
310
|
+
"analyze": {
|
|
311
|
+
"help_message": "استخدام محلل ترجمة I18n: عقدة i18ntk-analyze.js [خيارات] الخيارات: --source-dir <dir> الدليل المصدر المراد مسحه (الافتراضي: ./src) --i18n-dir <dir> دليل I18n (الافتراضي: ./src/locales) --output-report إنشاء تقرير مفصل --output-dir <dir> دليل الإخراج للتقارير (الافتراضي: ./reports) --help عرض هذه المساعدة أمثلة: العقدة i18ntk-analyze.js --output-report العقدة i18ntk-analyze.js --source-dir=./app --i18n-dir=./locales العقدة i18ntk-analyze.js --output-dir=./ana Analysis --output-report",
|
|
312
|
+
"source_directory": "📁 دليل المصدر: {sourceDir}",
|
|
313
|
+
"i18n_directory": "🌐 دليل I18n: {i18nDir}",
|
|
314
|
+
"loading_translation_files": "📋 جاري تحميل ملفات الترجمة...",
|
|
315
|
+
"sourceDirectoryLabel": "📁 دليل المصدر: {sourceDir}",
|
|
316
|
+
"sourceLanguageLabel": "🌍 لغة المصدر: {sourceLanguage}",
|
|
317
|
+
"strictModeLabel": "⚙️ الوضع الصارم: {mode}",
|
|
318
|
+
"found_translation_files_count": "✅ وجدت {count} ملفات الترجمة",
|
|
319
|
+
"analyzing_translations": "🔍 تحليل الترجمات...",
|
|
320
|
+
"analysis_completed_successfully": "🎉 تم الانتهاء من التحليل بنجاح!",
|
|
321
|
+
"analysis_results": "📊 ANALYSIS RESULTS",
|
|
322
|
+
"language_analysis_stats": "{language}: {translatedKeys}/{totalKeys} ({percentage}النسبة المئوية المترجمة)",
|
|
323
|
+
"sample_missing_keys": "عينة من المفاتيح المفقودة:",
|
|
324
|
+
"missing_key": "- {key}",
|
|
325
|
+
"and_more_missing": "...و {count} أكثر.",
|
|
326
|
+
"sample_unused_keys": "عينة من المفاتيح غير المستخدمة:",
|
|
327
|
+
"unused_key": "- {key}",
|
|
328
|
+
"and_more_unused": "...و {count} أكثر.",
|
|
329
|
+
"recommendations": "📋 التوصيات",
|
|
330
|
+
"add_missing_translations": "💡 أضف الترجمات المفقودة لتحسين التغطية.",
|
|
331
|
+
"remove_unused_translations": "💡 قم بإزالة الترجمات غير المستخدمة للحفاظ على نظافة مشروعك.",
|
|
332
|
+
"next_steps": "📋 NEXT STEPS",
|
|
333
|
+
"review_analysis_results": "1. قم بمراجعة نتائج التحليل في وحدة التحكم أو التقرير الذي تم إنشاؤه.",
|
|
334
|
+
"run_with_output_report": "2. قم بتشغيل --output-report للحصول على تقرير مفصل.",
|
|
335
|
+
"add_or_remove_translations": "3. أضف الترجمات المفقودة أو قم بإزالة الترجمات غير المستخدمة.",
|
|
336
|
+
"rerun_analysis": "4. أعد تشغيل التحليل للتحقق من التحسينات.",
|
|
337
|
+
"analysis_summary": "📊 ANALYSIS SUMMARY",
|
|
338
|
+
"source_files_scanned": "الملفات المصدرية التي تم فحصها: {fileCount}",
|
|
339
|
+
"translation_files_checked": "فحص ملفات الترجمة: {translationFileCount}",
|
|
340
|
+
"total_keys": "إجمالي المفاتيح: {totalKeys}",
|
|
341
|
+
"translated_keys": "المفاتيح المترجمة: {translatedKeys}",
|
|
342
|
+
"missing_keys": "المفاتيح المفقودة: {missingKeys}",
|
|
343
|
+
"unused_keys": "المفاتيح غير المستخدمة: {unusedKeys}",
|
|
344
|
+
"translation_coverage": "تغطية الترجمة: {coverage}%",
|
|
345
|
+
"analysis_passed_for_language": "✅تم اجتياز التحليل ل {language}",
|
|
346
|
+
"analysis_failed_for_language": "❌فشل التحليل ل {language} ({missingKeys} مفتقد، {unusedKeys} غير مستخدم)",
|
|
347
|
+
"starting": "🔍 البدء بتحليل الترجمة...",
|
|
348
|
+
"foundLanguages": "📋 وجدت {count} اللغات المراد تحليلها: {languages}",
|
|
349
|
+
"analyzing": "🔄 التحليل {language}...",
|
|
350
|
+
"reportTitle": "📊 تقرير تحليل الترجمة",
|
|
351
|
+
"generated": "تم إنشاؤها: {timestamp}",
|
|
352
|
+
"status": "حالة: {translated}/{total} المفاتيح ({percentage}النسبة المئوية المترجمة)",
|
|
353
|
+
"filesAnalyzed": "الملفات التي تم تحليلها: {analyzed}/{total}",
|
|
354
|
+
"keysNeedingTranslation": "المفاتيح التي تحتاج إلى ترجمة: {count}",
|
|
355
|
+
"fileBreakdown": "📋 انهيار الملف",
|
|
356
|
+
"error": "خطأ",
|
|
357
|
+
"completed": "✅ تم الانتهاء من التحليل ل {language}",
|
|
358
|
+
"progress": "📊 التقدم العام: {translated}/{total} اللغات التي تمت معالجتها",
|
|
359
|
+
"reportSaved": "تم حفظ التقرير: {reportPath}",
|
|
360
|
+
"summary": "📊 ANALYSIS SUMMARY",
|
|
361
|
+
"finished": "✅ تم التحليل بنجاح!",
|
|
362
|
+
"statusFileMissing": "❌ملف الترجمة مفقود",
|
|
363
|
+
"sourceKeys": "📊 مفاتيح المصدر: {count}",
|
|
364
|
+
"translation": "📊 الترجمة : {translated}/{total} ({percentage}%)",
|
|
365
|
+
"structure": "🗂️ الهيكل: {status}",
|
|
366
|
+
"consistent": "ثابت",
|
|
367
|
+
"inconsistent": "غير متناسق",
|
|
368
|
+
"missingKeys": "المفاتيح المفقودة: {count}",
|
|
369
|
+
"extraKeys": "مفاتيح اضافية: {count}",
|
|
370
|
+
"issues": "⚠️ المشكلات التي تم العثور عليها: {count}",
|
|
371
|
+
"issueType": {
|
|
372
|
+
"not_translated": "غير مترجم: {count}",
|
|
373
|
+
"empty_value": "القيم الفارغة: {count}",
|
|
374
|
+
"partial_translation": "الترجمات الجزئية: {count}",
|
|
375
|
+
"format_mismatch": "عدم تطابق التنسيق: {count}",
|
|
376
|
+
"type_mismatch": "عدم تطابق النوع: {count}",
|
|
377
|
+
"structure_mismatch": "عدم تطابق الهيكل: {count}",
|
|
378
|
+
"same_as_source": "نفس المصدر : {count}"
|
|
379
|
+
},
|
|
380
|
+
"keysToTranslate": "📋 مفاتيح للترجمة",
|
|
381
|
+
"key": "مفتاح",
|
|
382
|
+
"english": "إنجليزي",
|
|
383
|
+
"needsTranslation": "يحتاج إلى ترجمة",
|
|
384
|
+
"andMoreKeys": "...و {count} المزيد من المفاتيح.",
|
|
385
|
+
"noLanguages": "⚠️ لم يتم العثور على اللغات المستهدفة.",
|
|
386
|
+
"languageStats": "{language}: {percentage}٪ مكتمل ({translated}/{total} المفاتيح)",
|
|
387
|
+
"invalidReportFilePath": "مسار ملف التقرير غير صالح",
|
|
388
|
+
"failedToWriteReportFile": "فشل في كتابة ملف التقرير بشكل آمن"
|
|
389
|
+
},
|
|
390
|
+
"complete": {
|
|
391
|
+
"configLoadedSuccessfully": "تم تحميل التكوين بنجاح",
|
|
392
|
+
"configLoadingFailed": "فشل تحميل التكوين",
|
|
393
|
+
"sourceLanguageNotFound": "لم يتم العثور على دليل اللغة المصدر: {sourceLanguage}",
|
|
394
|
+
"couldNotParseTarget": "لا يمكن تحليل الملف الهدف: {file}",
|
|
395
|
+
"couldNotParseSource": "لا يمكن تحليل الملف المصدر: {file}",
|
|
396
|
+
"reportGenerated": "تم إنشاء التقرير: {path}",
|
|
397
|
+
"generateReportPrompt": "هل ترغب في إنشاء تقرير؟",
|
|
398
|
+
"title": "🌍 إكمال ترجمة I18NTK",
|
|
399
|
+
"separator": "============================================================",
|
|
400
|
+
"sourceDir": "📁 دليل المصدر: {sourceDir}",
|
|
401
|
+
"sourceLanguage": "🌐 لغة المصدر: {sourceLanguage}",
|
|
402
|
+
"dryRunMode": "🧪 وضع التشغيل الجاف - لن يتم إجراء أي تغييرات",
|
|
403
|
+
"languages": "🌍 اللغات المتاحة: {languages}",
|
|
404
|
+
"addingMissingKeys": "➕ إضافة المفاتيح المفقودة لملفات الترجمة...",
|
|
405
|
+
"processing": "🔄 المعالجة {language}...",
|
|
406
|
+
"addedKeys": "✅ تمت الإضافة {count} المفاتيح المفقودة",
|
|
407
|
+
"noChangesNeeded": "✅ لا حاجة لأي تغييرات {language}",
|
|
408
|
+
"summaryTitle": "📊 ملخص الإنجاز",
|
|
409
|
+
"totalChanges": "📝 إجمالي التغييرات: {totalChanges}",
|
|
410
|
+
"languagesProcessed": "🌍 اللغات المعالجة: {languagesProcessed}",
|
|
411
|
+
"missingKeysAdded": "➕ تمت إضافة المفاتيح المفقودة: {missingKeysAdded}",
|
|
412
|
+
"nextStepsTitle": "📋 NEXT STEPS",
|
|
413
|
+
"nextStep1": "1. تشغيل تحليل الاستخدام:",
|
|
414
|
+
"nextStep2": "العقدة i18ntk-usage.js --output-report",
|
|
415
|
+
"nextStep3": "2. التحقق من صحة الترجمات:",
|
|
416
|
+
"nextStep4": "العقدة i18ntk-validate.js",
|
|
417
|
+
"nextStep5": "3. تحليل الأنماط:",
|
|
418
|
+
"nextStep6": "العقدة i18ntk-analyze.js",
|
|
419
|
+
"allKeysAvailable": "🎉 جميع مفاتيح الترجمة متاحة الآن!",
|
|
420
|
+
"runWithoutDryRun": "💡 قم بالتشغيل بدون --dry-run لتطبيق التغييرات",
|
|
421
|
+
"deletingOldReport": "🗑️ حذف التقرير القديم...",
|
|
422
|
+
"generatingFreshAnalysis": "📊 إنشاء تحليل الاستخدام الجديد...",
|
|
423
|
+
"couldNotGenerate": "❌ لا يمكن إنشاء تحليل الاستخدام",
|
|
424
|
+
"reportNotFound": "📋 لم يتم العثور على تقرير الاستخدام. استخدام المفاتيح المشتركة...",
|
|
425
|
+
"foundMissingKeys": "📋 وجدت {count} المفاتيح المفقودة من تحليل الاستخدام",
|
|
426
|
+
"couldNotParse": "❌ لا يمكن تحليل تقرير الاستخدام. استخدام المفاتيح المشتركة...",
|
|
427
|
+
"errorDuringCompletion": "❌ خطأ أثناء الإكمال: {error}",
|
|
428
|
+
"fatalError": "❌ خطأ فادح: {error}",
|
|
429
|
+
"configurationValidationFailed": "فشل التحقق من صحة التكوين: الحقول المطلوبة مفقودة"
|
|
430
|
+
},
|
|
431
|
+
"sizing": {
|
|
432
|
+
"separator": "================================================================================",
|
|
433
|
+
"lineSeparator": "--------------------------------------------------------------------------------",
|
|
434
|
+
"analysisStats": "{stats}",
|
|
435
|
+
"sourceDirectoryLabel": "📁 دليل المصدر: {sourceDir}",
|
|
436
|
+
"sourceLanguageLabel": "🌍 لغة المصدر: {sourceLanguage}",
|
|
437
|
+
"strictModeLabel": "⚙️ الوضع الصارم: {mode}",
|
|
438
|
+
"invalidSourceDirectoryError": "مسار الدليل المصدر غير صالح: {sourceDir}",
|
|
439
|
+
"sourceDirectoryNotFoundError": "لم يتم العثور على الدليل المصدر: {sourceDir}",
|
|
440
|
+
"invalidOutputDirectoryError": "مسار دليل الإخراج غير صالح: {outputDir}",
|
|
441
|
+
"invalidReportFileError": "مسار ملف التقرير غير صالح",
|
|
442
|
+
"problematic_keys": "مفاتيح المشكلة: {problematicKeys}",
|
|
443
|
+
"problematicKeysLabel": "مفاتيح المشكلة: {problematicKeys}",
|
|
444
|
+
"long_translations": "الترجمات الطويلة: {longTranslations}",
|
|
445
|
+
"failedToSaveReportError": "فشل حفظ التقرير بشكل آمن",
|
|
446
|
+
"invalidCsvFileError": "مسار ملف CSV غير صالح",
|
|
447
|
+
"failedToSaveCsvError": "فشل في حفظ تقرير CSV بشكل آمن",
|
|
448
|
+
"fatalError": "❌ فشل تحليل الحجم: {error}",
|
|
449
|
+
"starting_i18n_sizing_analysis": "بدء تحليل حجم i18n...",
|
|
450
|
+
"source_directory": "الدليل المصدر: {sourceDir}",
|
|
451
|
+
"found_languages": "اللغات التي تم العثور عليها: {languages}",
|
|
452
|
+
"analyzing_file_sizes": "جارٍ تحليل أحجام الملفات...",
|
|
453
|
+
"analyzing_translation_content": "تحليل محتوى الترجمة...",
|
|
454
|
+
"generating_size_comparisons": "جارٍ إنشاء مقارنات الحجم...",
|
|
455
|
+
"no_languages_found_for_comparison": "لم يتم العثور على لغات للمقارنة",
|
|
456
|
+
"sizing_analysis_results": "نتائج تحليل التحجيم I18n",
|
|
457
|
+
"file_sizes_title": "أحجام الملفات",
|
|
458
|
+
"file_sizes_header": "حجم اللغة (كيلو بايت) خطوط الأحرف",
|
|
459
|
+
"file_size_row": "{lang} {sizeKB} {lines} {characters}",
|
|
460
|
+
"language_statistics_title": "إحصائيات اللغة",
|
|
461
|
+
"language_stats_header": "مفاتيح اللغة الأحرف متوسط الطول الحد الأقصى للطول فارغ طويل",
|
|
462
|
+
"language_stats_row": "{lang} {totalKeys} {totalCharacters} {averageKeyLength} {maxKeyLength} {emptyKeys} {longKeys}",
|
|
463
|
+
"size_variations_title": "اختلافات الحجم",
|
|
464
|
+
"size_variations_header": "اللغة Char Diff % Diff إشكالية",
|
|
465
|
+
"size_variation_row": "{lang} {characterDifference} {percentageDifference}% {problematic}",
|
|
466
|
+
"problematic_yes": "نعم",
|
|
467
|
+
"problematic_no": "لا",
|
|
468
|
+
"recommendations_title": "التوصيات",
|
|
469
|
+
"recommendation_item": "{index}. {recommendation}",
|
|
470
|
+
"problematic_key_detail": "{index}. مفتاح: '{key}'- الاختلافات: {variations}",
|
|
471
|
+
"generating_detailed_report": "جارٍ إنشاء تقرير مفصل...",
|
|
472
|
+
"keysHaveSignificantSizeVariations": "المفاتيح لها اختلافات كبيرة في الحجم",
|
|
473
|
+
"longTranslationsDetected": "${lang} يحتوي على ترجمات ${data.longKeys} أطول من 100 حرف - فكر في تقسيمها",
|
|
474
|
+
"longer": "أطول",
|
|
475
|
+
"shorter": "أقصر",
|
|
476
|
+
"review_translations": "النظر في المراجعة {lang} الترجمات - هم {percentageDifference}% {comparison} من خط الأساس",
|
|
477
|
+
"report_saved_to": "تم حفظ التقرير في: {reportPath}",
|
|
478
|
+
"considerReviewingTranslations": "النظر في المراجعة ${lang} الترجمات - أطول بمقدار ${data.percentageDifference}% من خط الأساس",
|
|
479
|
+
"csv_report_saved_to": "تم حفظ تقرير CSV في: {csvPath}",
|
|
480
|
+
"human_report_saved": "تم حفظ التقرير المقروء: {reportPath}",
|
|
481
|
+
"folder_summary_title": "ملخص المجلد",
|
|
482
|
+
"folder_summary_table_header": "حجم اللغة (كيلو بايت) المفاتيح متوسط الطول إجمالي الأحرف",
|
|
483
|
+
"folder_summary_row": "{lang} {sizeKB} {totalKeys} {avgLength} {totalChars}",
|
|
484
|
+
"language_comparison_title": "مقارنة اللغة",
|
|
485
|
+
"language_comparison_row": "{lang}: {diff} الأحرف ({percent}%) {status}",
|
|
486
|
+
"summary_stats": "📊 الملخص: {totalLanguages} اللغات, {totalKeys} المفاتيح - التقارير المحفوظة في {reportPath}",
|
|
487
|
+
"detailedKeysDescription": "عرض تحليل مفصل على مستوى المفتاح في وحدة التحكم",
|
|
488
|
+
"too_many_keys_warning": "⚠️ هناك عدد كبير جدًا من المفاتيح التي يمكن عرضها في وحدة التحكم - تحقق من ملف التقرير التفصيلي للتحليل الكامل",
|
|
489
|
+
"no_translation_files_found": "لم يتم العثور على ملفات الترجمة",
|
|
490
|
+
"analysis_completed": "انتهى التحليل في {duration}آنسة",
|
|
491
|
+
"analysis_failed": "فشل التحليل: {errorMessage}",
|
|
492
|
+
"starting_analysis": "بدء التحليل...",
|
|
493
|
+
"found_files": "وجد {count} ملفات",
|
|
494
|
+
"failed_to_parse_language_error": "فشل التحليل {language} الترجمات: {errorMessage}",
|
|
495
|
+
"recommendations": {
|
|
496
|
+
"keys_have_significant_size_variations": "المفاتيح لها اختلافات كبيرة في الحجم",
|
|
497
|
+
"consider_reviewing_translations": "النظر في المراجعة {lang} الترجمات - هم {percentageDifference}% {comparison} من خط الأساس",
|
|
498
|
+
"long_translations_detected": "{lang} لديه {longKeys} الترجمات أطول من {threshold} الشخصيات - فكر في تقسيمها"
|
|
499
|
+
},
|
|
500
|
+
"detailed_key_analysis_title": "التحليل الرئيسي التفصيلي",
|
|
501
|
+
"key_analysis_detail": "{lang}: {length} الأحرف ({status}) - {translation}",
|
|
502
|
+
"key_analysis_header": "مفتاح: {key}",
|
|
503
|
+
"status_empty": "فارغ",
|
|
504
|
+
"status_long": "طويل",
|
|
505
|
+
"status_ok": "نعم"
|
|
506
|
+
},
|
|
507
|
+
"usage": {
|
|
508
|
+
"help_message": "استخدام محلل استخدام I18n: العقدة i18ntk-usage.js [خيارات] الخيارات: --source-dir <dir> الدليل المصدر المراد مسحه (الافتراضي: ./src) --i18n-dir <dir> دليل I18n (الافتراضي: ./src/locales) --output-report إنشاء تقرير مفصل --output-dir <dir> دليل الإخراج للتقارير (الافتراضي: ./reports) --help عرض هذه المساعدة أمثلة: العقدة i18ntk-usage.js --output-report العقدة i18ntk-usage.js --source-dir=./app --i18n-dir=./locales العقدة i18ntk-usage.js --output-dir=./ana Analysis --output-report",
|
|
509
|
+
"source_directory_thissourcedir": "📁 دليل المصدر: {sourceDir}",
|
|
510
|
+
"translationCompletenessTitle": "🌍 اكتمال الترجمة:",
|
|
511
|
+
"i18n_directory_thisi18ndir": "🌐 دليل I18n: {i18nDir}",
|
|
512
|
+
"failed_to_parse_filename_error": "⚠️ فشل التحليل {fileName}: {errorMessage}",
|
|
513
|
+
"analyzing_source_files": "🔍 تحليل الملفات المصدرية...",
|
|
514
|
+
"found_files_in_source": "📂 وجدت {numFiles} الملفات في الدليل المصدر",
|
|
515
|
+
"found_thisusedkeyssize_unique_": "🎯 وجدت {usedKeysSize} مفاتيح مستعملة فريدة من نوعها",
|
|
516
|
+
"total_key_usages_totalkeysfoun": "📊 إجمالي استخدامات المفاتيح: {totalKeysFound}",
|
|
517
|
+
"loading_available_translation_": "📋 جارٍ تحميل مفاتيح الترجمة المتوفرة...",
|
|
518
|
+
"found_thisavailablekeyssize_av": "✅ وجدت {availableKeysSize} المفاتيح المتاحة",
|
|
519
|
+
"foundTranslationFiles": "✅ وجدت {count} ملفات الترجمة",
|
|
520
|
+
"errorReadingI18nDirectory": "⚠️ خطأ في قراءة دليل i18n: {error}",
|
|
521
|
+
"pressEnterToReturnToMenu": "📝 اضغط على Enter للعودة إلى القائمة الرئيسية...",
|
|
522
|
+
"notTranslatedKeysTotal": "⚠️ المفاتيح غير المترجمة: {total}",
|
|
523
|
+
"noSourceFilesFound": "⚠️ لم يتم العثور على ملفات المصدر في الدليل المصدر.",
|
|
524
|
+
"reviewNotTranslatedKeys": "💡 مراجعة المفاتيح غير المترجمة",
|
|
525
|
+
"analysisCompletedSuccessfully": "🎉 تم الانتهاء من التحليل بنجاح!",
|
|
526
|
+
"detectedSourceDirectory": "دليل المصدر المكتشف: {sourceDir}",
|
|
527
|
+
"detectedI18nDirectory": "تم اكتشاف دليل i18n: {i18nDir}",
|
|
528
|
+
"fileInfo": "📄 {namespace}: {keys} مفاتيح",
|
|
529
|
+
"failedToAnalyzeUsage": "❌ فشل تحليل الاستخدام: {error}",
|
|
530
|
+
"failedToAnalyzeFile": "❌ فشل تحليل الملف: {error}",
|
|
531
|
+
"failedToExtractKeys": "❌ فشل في استخراج المفاتيح من {filePath}: {error}",
|
|
532
|
+
"analysisFailedError": "❌ فشل التحليل: {error}",
|
|
533
|
+
"analyzerInitialized": "تمت تهيئة المحلل",
|
|
534
|
+
"analyzerInitFailed": "فشلت تهيئة المحلل: {error}",
|
|
535
|
+
"argsParsed": "تم تحليل الحجج",
|
|
536
|
+
"processedFiles": "تمت معالجتها {processedFiles} ل {totalFiles} ملفات.",
|
|
537
|
+
"argsParseFailed": "فشل تحليل الوسيطة: {error}",
|
|
538
|
+
"translationDiscoveryError": "خطأ في اكتشاف الترجمة: {error}",
|
|
539
|
+
"fileTraversalError": "خطأ في اجتياز الملف: {error}",
|
|
540
|
+
"sourceEqualsI18nWarn": "{reason}. لن يقوم تحليل الاستخدام بفحص الملفات المحلية كرمز مصدر.",
|
|
541
|
+
"i18nEqualsSourceWarn": "⚠️ دليل I18n والدليل المصدر هما نفس الشيء. قد يسبب هذا مشاكل في التحليل.",
|
|
542
|
+
"usageAnalysisFailed": "⚠️ فشل تحليل الاستخدام: {error}",
|
|
543
|
+
"translationFileParseError": "⚠️ خطأ في تحليل ملف الترجمة: {error}",
|
|
544
|
+
"translationKeysLoadError": "⚠️ خطأ في تحميل مفاتيح الترجمة: {error}",
|
|
545
|
+
"languageCompletenessStats": "🌐 {language}: {translated}/{total} ({completeness}النسبة المئوية المترجمة)",
|
|
546
|
+
"missingKeysCount": "⚠️ المفاتيح المفقودة: {count}",
|
|
547
|
+
"analyzingTranslationCompleteness": "تحليل اكتمال الترجمة...",
|
|
548
|
+
"unusedKeysCount": "المفاتيح غير المستخدمة: {count}",
|
|
549
|
+
"usedKeysCount": "المفاتيح المستعملة: {count}",
|
|
550
|
+
"availableKeysCount": "المفاتيح المتاحة: {count}",
|
|
551
|
+
"analysisResults": "نتائج التحليل:",
|
|
552
|
+
"i18nDirectoryNotFound": "⚠️ لم يتم العثور على دليل I18n. يرجى التحقق من المسار.",
|
|
553
|
+
"sourceDirectoryNotFound": "⚠️ لم يتم العثور على دليل المصدر: {dir}",
|
|
554
|
+
"checkUsage": {
|
|
555
|
+
"title": "🔍 I18NTK USAGE ANALYSIS",
|
|
556
|
+
"analyzing_source_files": "🔍 تحليل الملفات المصدرية...",
|
|
557
|
+
"source_directory_thissourcedir": "📁 دليل المصدر: {sourceDir}",
|
|
558
|
+
"i18n_directory_thisi18ndir": "📁 دليل i18n: {i18nDir}",
|
|
559
|
+
"found_files_in_source": "✅ وجدت {numFiles} الملفات في الدليل المصدر",
|
|
560
|
+
"no_source_files_found": "⚠️ لم يتم العثور على ملفات المصدر في الدليل المحدد",
|
|
561
|
+
"processedFiles": "📊 تمت المعالجة {processedFiles} ل {totalFiles} ملفات",
|
|
562
|
+
"failedToProcessFile": "❌فشلت المعالجة",
|
|
563
|
+
"found_thisusedkeyssize_unique_": "🔍 وجدت {usedKeysSize} مفاتيح مستعملة فريدة من نوعها",
|
|
564
|
+
"total_key_usages_totalkeysfoun": "📊 إجمالي استخدامات المفاتيح: {totalKeysFound}",
|
|
565
|
+
"loading_available_translation_": "📂 جارٍ تحميل مفاتيح الترجمة المتوفرة...",
|
|
566
|
+
"found_thisavailablekeyssize_av": "✅ وجدت {availableKeysSize} المفاتيح المتاحة",
|
|
567
|
+
"message": "جارٍ تحليل استخدام مفتاح الترجمة عبر مشروعك...",
|
|
568
|
+
"usage_analysis_results": "📊 USAGE ANALYSIS RESULTS",
|
|
569
|
+
"source_files_scanned_thisfileu": "📁 الملفات المصدرية الممسوحة ضوئيا: {fileUsageSize}",
|
|
570
|
+
"available_translation_keys_thi": "✅ مفاتيح الترجمة المتاحة: {availableKeysSize}",
|
|
571
|
+
"used_translation_keys_thisused": "🔍 مفاتيح الترجمة المستخدمة: {usedKeysSize}",
|
|
572
|
+
"dynamic_keys_detected_dynamick": "⚡ تم اكتشاف المفاتيح الديناميكية: {dynamicKeysLength}",
|
|
573
|
+
"unused_keys_unusedkeyslength": "🗑️ المفاتيح غير المستخدمة: {unusedKeysLength}",
|
|
574
|
+
"missing_keys_missingkeyslength": "❌ المفاتيح المفقودة: {missingKeysLength}",
|
|
575
|
+
"translation_completeness_title": "📈 اكتمال الترجمة",
|
|
576
|
+
"language_completeness_stats": "{language}: {translated}/{total} المفاتيح ({percentage}%)",
|
|
577
|
+
"n_sample_unused_keys": "🗑️ نماذج من المفاتيح غير المستخدمة (أول 5):",
|
|
578
|
+
"key": "🔑 {key}",
|
|
579
|
+
"and_unusedkeyslength_5_more": "... و {count} المزيد من المفاتيح غير المستخدمة",
|
|
580
|
+
"n_sample_missing_keys": "❌ عينة من المفاتيح المفقودة (أول 5):",
|
|
581
|
+
"and_missingkeyslength_5_more": "... و {count} المزيد من المفاتيح المفقودة",
|
|
582
|
+
"n_generating_detailed_report": "📊 إصدار تقرير مفصل...",
|
|
583
|
+
"report_saved_reportpath": "📄 تم حفظ التقرير: {reportPath}",
|
|
584
|
+
"n_recommendations": "💡 التوصيات:",
|
|
585
|
+
"consider_removing_unused_trans": "🗑️ فكر في إزالة الترجمات غير المستخدمة لتقليل حجم الحزمة",
|
|
586
|
+
"add_missing_translation_keys_t": "➕ أضف مفاتيح الترجمة المفقودة للحفاظ على الاتساق",
|
|
587
|
+
"review_dynamic_keys_manually_t": "🔍 مراجعة المفاتيح الديناميكية يدويًا (قد تكون صالحة)",
|
|
588
|
+
"all_translation_keys_are_prope": "✅ يتم استخدام جميع مفاتيح الترجمة بشكل صحيح!",
|
|
589
|
+
"n_next_steps": "🎯 NEXT STEPS:",
|
|
590
|
+
"2_check_the_detailed_report_fo": "2. التحقق من التقرير التفصيلي لقضايا محددة",
|
|
591
|
+
"help_message": "استخدام محلل استخدام I18n: العقدة i18ntk-usage.js [خيارات] الخيارات: --source-dir <dir> الدليل المصدر المراد مسحه (الافتراضي: ./src) --i18n-dir <dir> دليل I18n (الافتراضي: ./src/locales) --output-report إنشاء تقرير مفصل --output-dir <dir> دليل الإخراج للتقارير (الافتراضي: ./reports) --help عرض هذه المساعدة أمثلة: العقدة i18ntk-usage.js --output-report العقدة i18ntk-usage.js --source-dir=./app --i18n-dir=./locales العقدة i18ntk-usage.js --output-dir=./ana Analysis --output-report",
|
|
592
|
+
"1_review_the_analysis_results": "1. قم بمراجعة نتائج التحليل في وحدة التحكم أو التقرير الذي تم إنشاؤه.",
|
|
593
|
+
"2_run_with_outputreport_for_de": "2. قم بتشغيل --output-report للحصول على تقرير مفصل.",
|
|
594
|
+
"3_remove_unused_keys_or_add_mi": "3. قم بإزالة المفاتيح غير المستخدمة أو أضف المفاتيح المفقودة إلى كود المصدر الخاص بك.",
|
|
595
|
+
"4_rerun_analysis_to_verify_imp": "4. أعد تشغيل التحليل للتحقق من التحسينات.",
|
|
596
|
+
"noSourceFilesFound": "لم يتم العثور على ملفات مصدر لتحليلها.",
|
|
597
|
+
"i18nDirectoryNotFound": "لم يتم العثور على دليل I18n: {i18nDir}",
|
|
598
|
+
"noTranslationLanguagesFound": "لم يتم العثور على لغات الترجمة.",
|
|
599
|
+
"failedToAnalyzeFile": "فشل في تحليل الملف {filePath}: {error}",
|
|
600
|
+
"failedToAnalyzeLanguage": "فشل في تحليل اللغة {language}: {error}",
|
|
601
|
+
"translationCompletenessAnalysisFailed": "فشل تحليل اكتمال الترجمة: {error}",
|
|
602
|
+
"n": "\\n"
|
|
603
|
+
},
|
|
604
|
+
"complete": {
|
|
605
|
+
"configLoadedSuccessfully": "تم تحميل التكوين بنجاح",
|
|
606
|
+
"configLoadingFailed": "فشل تحميل التكوين",
|
|
607
|
+
"title": "🌍 إكمال ترجمة I18NTK",
|
|
608
|
+
"separator": "============================================================",
|
|
609
|
+
"sourceDir": "📁 دليل المصدر: {sourceDir}",
|
|
610
|
+
"sourceLanguage": "🌐 لغة المصدر: {sourceLanguage}",
|
|
611
|
+
"dryRunMode": "🧪 وضع التشغيل الجاف - لن يتم إجراء أي تغييرات",
|
|
612
|
+
"languages": "🌍 اللغات المتاحة: {languages}",
|
|
613
|
+
"addingMissingKeys": "➕ إضافة المفاتيح المفقودة لملفات الترجمة...",
|
|
614
|
+
"processing": "🔄 المعالجة {language}...",
|
|
615
|
+
"addedKeys": "✅ تمت الإضافة {count} المفاتيح المفقودة",
|
|
616
|
+
"changeDetails": "📝 {file}: {key}",
|
|
617
|
+
"andMore": "...و {count} أكثر",
|
|
618
|
+
"noChangesNeeded": "✅ لا حاجة لأي تغييرات {language}",
|
|
619
|
+
"summaryTitle": "📊 ملخص الإنجاز",
|
|
620
|
+
"totalChanges": "📝 إجمالي التغييرات: {totalChanges}",
|
|
621
|
+
"languagesProcessed": "🌍 اللغات المعالجة: {languagesProcessed}",
|
|
622
|
+
"missingKeysAdded": "➕ تمت إضافة المفاتيح المفقودة: {missingKeysAdded}",
|
|
623
|
+
"nextStepsTitle": "📋 NEXT STEPS",
|
|
624
|
+
"nextStep1": "1. تشغيل تحليل الاستخدام:",
|
|
625
|
+
"nextStep2": "العقدة i18ntk-usage.js --output-report",
|
|
626
|
+
"nextStep3": "2. التحقق من صحة الترجمات:",
|
|
627
|
+
"nextStep4": "العقدة i18ntk-validate.js",
|
|
628
|
+
"nextStep5": "3. تحليل الأنماط:",
|
|
629
|
+
"nextStep6": "العقدة i18ntk-analyze.js",
|
|
630
|
+
"allKeysAvailable": "🎉 جميع مفاتيح الترجمة متاحة الآن!",
|
|
631
|
+
"runWithoutDryRun": "💡 قم بالتشغيل بدون --dry-run لتطبيق التغييرات",
|
|
632
|
+
"deletingOldReport": "🗑️ حذف التقرير القديم...",
|
|
633
|
+
"generatingFreshAnalysis": "📊 إنشاء تحليل الاستخدام الجديد...",
|
|
634
|
+
"couldNotGenerate": "❌ لا يمكن إنشاء تحليل الاستخدام",
|
|
635
|
+
"reportNotFound": "📋 لم يتم العثور على تقرير الاستخدام. استخدام المفاتيح المشتركة...",
|
|
636
|
+
"foundMissingKeys": "📋 وجدت {count} المفاتيح المفقودة من تحليل الاستخدام",
|
|
637
|
+
"couldNotParse": "❌ لا يمكن تحليل تقرير الاستخدام. استخدام المفاتيح المشتركة..."
|
|
638
|
+
},
|
|
639
|
+
"noTranslationLanguagesFound": "لم يتم العثور على لغات الترجمة",
|
|
640
|
+
"failedToAnalyzeLanguage": "فشل في تحليل اللغة",
|
|
641
|
+
"translationCompletenessAnalysisFailed": "فشل تحليل اكتمال الترجمة",
|
|
642
|
+
"failedToProcessFile": "فشل في معالجة الملف:",
|
|
643
|
+
"failedToSaveReport": "فشل حفظ تقرير الاستخدام: {error}",
|
|
644
|
+
"i18nDirectoryDoesNotExist": "دليل I18n غير موجود: {dir}",
|
|
645
|
+
"reportSavedTo": "تم حفظ تقرير الاستخدام في: {reportPath}",
|
|
646
|
+
"sourceDirectoryDoesNotExist": "الدليل المصدر غير موجود: {dir}",
|
|
647
|
+
"noSourceDirectoryConfigured": "(لم يتم تكوين أي شيء)"
|
|
648
|
+
},
|
|
649
|
+
"validate": {
|
|
650
|
+
"help_message": "استخدام أداة التحقق من ترجمة I18n: عقدة i18ntk-validate.js [خيارات] الخيارات: --source-dir <dir> الدليل المصدر المراد مسحه (الافتراضي: ./src) --i18n-dir <dir> دليل I18n (الافتراضي: ./src/locales) --output-report إنشاء تقرير مفصل --output-dir <dir> دليل الإخراج للتقارير (الافتراضي: ./reports) --help إظهار هذه المساعدة أمثلة: العقدة i18ntk-validate.js --output-report العقدة i18ntk-validate.js --source-dir=./app --i18n-dir=./locales العقدة i18ntk-validate.js --output-dir=./ana Analysis --output-report",
|
|
651
|
+
"title": "🔍 مدقق الترجمة I18n",
|
|
652
|
+
"message": "بدء عملية التحقق...",
|
|
653
|
+
"sourceDirectory": "📁 دليل المصدر: {dir}",
|
|
654
|
+
"sourceLanguage": "🌍 لغة المصدر: {sourceLanguage}",
|
|
655
|
+
"strictMode": "⚙️ الوضع الصارم: {mode}",
|
|
656
|
+
"noTargetLanguages": "لم يتم تكوين اللغات المستهدفة؛ تخطي التحقق من صحة الهدف. أضف لغات عبر \"i18ntk init --languages=de,fr\".",
|
|
657
|
+
"validatingLanguages": "🌍 التحقق من اللغات: {langs}",
|
|
658
|
+
"validatingLanguage": "🔍 التحقق من اللغة: {lang}",
|
|
659
|
+
"filesCount": "📄 الملفات: {count}",
|
|
660
|
+
"keysCount": "🔑 المفاتيح: {count}",
|
|
661
|
+
"missingFilesCount": "📁 الملفات المفقودة: {count}",
|
|
662
|
+
"syntaxErrorsCount": "❌ أخطاء نحوية: {count}",
|
|
663
|
+
"translationPercentage": "🎯 الترجمة: {percentage}% ({translated}/{total} المفاتيح)",
|
|
664
|
+
"validationSummary": "📊 ملخص التحقق",
|
|
665
|
+
"validation_failed": "❌ فشل التحقق: {error}",
|
|
666
|
+
"totalErrors": "❌ إجمالي الأخطاء: {count}",
|
|
667
|
+
"totalWarnings": "⚠️ إجمالي التحذيرات: {count}",
|
|
668
|
+
"errorsSection": "❌ ERRORS",
|
|
669
|
+
"warningsSection": "⚠️ WARNINGS",
|
|
670
|
+
"recommendationsSection": "💡 التوصيات",
|
|
671
|
+
"fixErrorsFirst": "1. قم بإصلاح جميع الأخطاء أولاً",
|
|
672
|
+
"resolveMissingFilesAndSyntaxErrors": "1. حل الملفات المفقودة وأخطاء بناء الجملة",
|
|
673
|
+
"fixStructuralInconsistencies": "2. إصلاح التناقضات الهيكلية",
|
|
674
|
+
"completeMissingTranslations": "3. أكمل الترجمات المفقودة",
|
|
675
|
+
"rerunValidation": "4. أعد تشغيل التحقق من الصحة للتحقق من الإصلاحات",
|
|
676
|
+
"addressWarnings": "معالجة التحذيرات لتحسين الجودة",
|
|
677
|
+
"reviewWarnings": "قم بمراجعة التحذيرات وإصلاحها عند الاقتضاء",
|
|
678
|
+
"considerRunningWithStrict": "2. فكر في التشغيل باستخدام علامة --strict للتحقق من الصحة بشكل أكثر صرامة",
|
|
679
|
+
"allValidationsPassed": "🎉 تم اجتياز جميع عمليات التحقق!",
|
|
680
|
+
"considerRunningUsageAnalysis": "فكر في تشغيل تحليل الاستخدام: العقدة i18ntk-usage.js",
|
|
681
|
+
"deletedOldReport": "🗑️ تم حذف تقرير التحقق القديم",
|
|
682
|
+
"sourceDir": "📁 دليل المصدر: {sourceDir}",
|
|
683
|
+
"i18nDir": "🌐 دليل I18n: {i18nDir}",
|
|
684
|
+
"loadingTranslationFiles": "📋 جاري تحميل ملفات الترجمة...",
|
|
685
|
+
"foundTranslationFilesCount": "✅ وجدت {count} ملفات الترجمة",
|
|
686
|
+
"analyzingTranslations": "🔍 تحليل الترجمات...",
|
|
687
|
+
"validationCompletedSuccessfully": "🎉 تم التحقق من الصحة بنجاح!",
|
|
688
|
+
"validationErrorsFound": "⚠️ تم العثور على أخطاء في التحقق: {count}",
|
|
689
|
+
"validationWarningsFound": "⚠️ تم العثور على تحذيرات التحقق: {count}",
|
|
690
|
+
"validationPassed": "✅ تم التحقق من الصحة بدون أخطاء",
|
|
691
|
+
"validationFailed": "فشل التحقق من الصحة: {error}",
|
|
692
|
+
"startingValidationProcess": "🔍 بدء عملية التحقق...",
|
|
693
|
+
"validationProcessCompletedSuccessfully": "✅ تمت عملية التحقق بنجاح",
|
|
694
|
+
"stackTrace": "تتبع المكدس: {stack}",
|
|
695
|
+
"authenticationFailed": "❌فشلت المصادقة. تم الرفض.",
|
|
696
|
+
"fatalValidationError": "❌ خطأ فادح في التحقق من الصحة: {error}",
|
|
697
|
+
"configAccess": "الوصول إلى التكوين للتحقق من الصحة",
|
|
698
|
+
"configValidated": "تم التحقق من صحة التكوين بنجاح",
|
|
699
|
+
"configError": "خطأ في التكوين: {error}",
|
|
700
|
+
"validatorInit": "تهيئة أداة التحقق من صحة I18n",
|
|
701
|
+
"validatorInitialized": "تمت تهيئة أداة التحقق من صحة I18n بنجاح",
|
|
702
|
+
"validatorInitError": "خطأ في تهيئة أداة التحقق: {error}",
|
|
703
|
+
"argsParsing": "تحليل وسيطات سطر الأوامر",
|
|
704
|
+
"argsParsed": "تم تحليل وسيطات سطر الأوامر بنجاح",
|
|
705
|
+
"argsParseError": "خطأ في تحليل الوسيطة: {error}",
|
|
706
|
+
"languagesScan": "مسح اللغات المتاحة",
|
|
707
|
+
"languagesFound": "وجد {count} اللغات",
|
|
708
|
+
"languagesScanError": "خطأ في مسح اللغة: {error}",
|
|
709
|
+
"filesScan": "وجد {count} الملفات في {language}",
|
|
710
|
+
"filesScanError": "خطأ في فحص الملف: {error}",
|
|
711
|
+
"jsonValidated": "تم التحقق من صحة بناء جملة JSON: {filePath}",
|
|
712
|
+
"jsonValidationError": "خطأ في التحقق من صحة JSON: {error}",
|
|
713
|
+
"languageValidation": "التحقق من صحة اللغة: {language}",
|
|
714
|
+
"languageValidationError": "خطأ في التحقق من صحة اللغة: {error}",
|
|
715
|
+
"fileDeleted": "تم حذف الملف",
|
|
716
|
+
"runStarted": "بدء تشغيل التحقق من الصحة",
|
|
717
|
+
"runCompleted": "تم إكمال عملية التحقق من الصحة بنجاح",
|
|
718
|
+
"runError": "فشل تشغيل التحقق من الصحة: {error}",
|
|
719
|
+
"scriptExecution": "تنفيذ البرنامج النصي",
|
|
720
|
+
"validationCompleted": "اكتمل التحقق",
|
|
721
|
+
"validationError": "خطأ في التحقق: {error}",
|
|
722
|
+
"separator": "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━",
|
|
723
|
+
"languageHeader": "🌐 اللغة: {language}",
|
|
724
|
+
"validationResults": "📊 نتائج التحقق",
|
|
725
|
+
"noErrors": "✅ لم يتم العثور على أخطاء",
|
|
726
|
+
"noWarnings": "✅ لم يتم العثور على أي تحذيرات",
|
|
727
|
+
"summaryHeader": "📋 OVERALL SUMMARY",
|
|
728
|
+
"progressIndicator": "⏳ المعالجة...",
|
|
729
|
+
"completedIndicator": "✅ مكتمل",
|
|
730
|
+
"errorIndicator": "❌ خطأ",
|
|
731
|
+
"warningIndicator": "⚠️تحذير",
|
|
732
|
+
"infoIndicator": "ℹ️ معلومات",
|
|
733
|
+
"sourceDirNotConfigured": "لم يتم تكوين الدليل المصدر",
|
|
734
|
+
"sourceLanguageNotConfigured": "لم يتم تكوين لغة المصدر",
|
|
735
|
+
"translationFunctionNotInitialized": "لم تتم تهيئة وظيفة الترجمة بشكل صحيح",
|
|
736
|
+
"sourceLanguageDirectoryNotFound": "لم يتم العثور على دليل اللغة المصدر",
|
|
737
|
+
"specifiedLanguageNotFound": "لم يتم العثور على اللغة المحددة",
|
|
738
|
+
"noJsonFilesFound": "لم يتم العثور على ملفات JSON في الدليل المصدر: {sourceDir}",
|
|
739
|
+
"i18nDirectoryNotFound": "لم يتم العثور على دليل I18n: {i18nDir}",
|
|
740
|
+
"invalidDirectoryPaths": "تم اكتشاف مسارات دليل غير صالحة",
|
|
741
|
+
"invalidSampleFilePath": "مسار ملف العينة غير صالح",
|
|
742
|
+
"failedToCreateSampleTranslationFile": "فشل في إنشاء ملف ترجمة نموذجي",
|
|
743
|
+
"invalidFilePathDetected": "تم اكتشاف مسار ملف غير صالح",
|
|
744
|
+
"failedToWriteFile": "فشل في كتابة الملف: {filePath}",
|
|
745
|
+
"invalidSourceDirectory": "دليل المصدر غير صالح: {sourceDir}",
|
|
746
|
+
"invalidSourceLanguageDirectory": "دليل اللغة المصدر غير صالح: {sourceDir}"
|
|
747
|
+
},
|
|
748
|
+
"adminCli": {
|
|
749
|
+
"setupPinProtectionTitle": "🔐 إعداد حماية رقم التعريف الشخصي للمسؤول",
|
|
750
|
+
"setupPinProtectionDescription": "سيتطلب ذلك رقم PIN مكونًا من 4 إلى 6 أرقام للعمليات الإدارية.",
|
|
751
|
+
"enablePinProtectionPrompt": "هل تريد تمكين حماية PIN للمشرف؟",
|
|
752
|
+
"setupCancelled": "تم إلغاء إعداد حماية رقم التعريف الشخصي للمشرف.",
|
|
753
|
+
"enterPinPrompt": "أدخل رقم التعريف الشخصي المكون من 4 إلى 6 أرقام:",
|
|
754
|
+
"pinFormatError": "❌ يجب أن يتكون رقم التعريف الشخصي من 4 إلى 6 أرقام. يرجى المحاولة مرة أخرى.",
|
|
755
|
+
"confirmPinPrompt": "تأكيد رقم التعريف الشخصي:",
|
|
756
|
+
"pinMismatchError": "❌ أرقام التعريف الشخصية غير متطابقة. يرجى المحاولة مرة أخرى.",
|
|
757
|
+
"pinProtectionEnabledSuccess": "✅ تم تمكين حماية PIN للمشرف بنجاح!",
|
|
758
|
+
"pinRecoveryWarning": "⚠️ تذكر رقم التعريف الشخصي الخاص بك - لا يمكن استعادته في حالة فقدانه.",
|
|
759
|
+
"setupPinProtectionFailed": "❌ فشل في إعداد حماية رقم التعريف الشخصي للمشرف.",
|
|
760
|
+
"errorSettingUpPin": "❌ خطأ في إعداد رقم التعريف الشخصي للمشرف: {message}",
|
|
761
|
+
"authRequiredForOperation": "🔐 مصادقة المسؤول مطلوبة من أجل: {operation}",
|
|
762
|
+
"invalidPinFormat": "❌ تنسيق رقم التعريف الشخصي غير صالح. يجب أن يتكون رقم التعريف الشخصي من 4 إلى 6 أرقام.",
|
|
763
|
+
"authenticationSuccess": "✅ المصادقة ناجحة!",
|
|
764
|
+
"invalidPinAttemptsRemaining": "❌ رقم التعريف الشخصي غير صالح. {remaining} باقي المحاولات",
|
|
765
|
+
"authenticationFailedAccessDenied": "❌فشلت المصادقة. تم الرفض.",
|
|
766
|
+
"authenticationError": "❌ خطأ في المصادقة: {message}",
|
|
767
|
+
"pinProtectionNotEnabled": "حماية PIN للمشرف غير ممكّنة حاليًا.",
|
|
768
|
+
"disablingPinProtectionTitle": "🔓 تعطيل حماية رقم التعريف الشخصي للمشرف",
|
|
769
|
+
"confirmDisablePinProtection": "هل أنت متأكد من أنك تريد تعطيل حماية PIN للمشرف؟",
|
|
770
|
+
"operationCancelled": "تم إلغاء العملية.",
|
|
771
|
+
"pinProtectionDisabledSuccess": "✅ تم تعطيل حماية PIN للمشرف.",
|
|
772
|
+
"disablePinProtectionFailed": "❌ فشل في تعطيل حماية رقم التعريف الشخصي للمشرف.",
|
|
773
|
+
"errorDisablingPinProtection": "❌ خطأ في تعطيل حماية المسؤول: {message}",
|
|
774
|
+
"adminProtectionStatusTitle": "🔐 حالة حماية المسؤول",
|
|
775
|
+
"statusEnabled": "الحالة: ✅ ممكّن",
|
|
776
|
+
"protectionDetails": "الحماية: مطلوب رقم PIN مكون من 4 إلى 6 أرقام لعمليات الإدارة",
|
|
777
|
+
"lockoutDetails": "الإغلاق: 3 محاولات فاشلة = إغلاق لمدة 15 دقيقة",
|
|
778
|
+
"statusDisabled": "الحالة: ❌ معاق",
|
|
779
|
+
"noAuthRequired": "الحماية: لا حاجة للمصادقة",
|
|
780
|
+
"unprotectedRisk": "الخطر: العمليات الإدارية غير محمية",
|
|
781
|
+
"errorCheckingAdminStatus": "❌ خطأ في التحقق من حالة المسؤول: {message}",
|
|
782
|
+
"authRequired": "🔐 مصادقة المسؤول مطلوبة.",
|
|
783
|
+
"invalidPin": "❌ رقم التعريف الشخصي غير صالح.",
|
|
784
|
+
"authSuccess": "✅ المصادقة ناجحة!",
|
|
785
|
+
"adminPinSetupCli": "admin_pin_setup_cli",
|
|
786
|
+
"adminAuthFailedCli": "admin_auth_failed_cli",
|
|
787
|
+
"adminAuthDisabledCli": "admin_auth_disabled_cli",
|
|
788
|
+
"protectedAccess": "الوصول المحمي: مصادقة المسؤول مطلوبة للعمليات الحساسة.",
|
|
789
|
+
"enterPin": "أدخل رقم التعريف الشخصي للمشرف:",
|
|
790
|
+
"accessGranted": "تم منح الوصول."
|
|
791
|
+
},
|
|
792
|
+
"adminPin": {
|
|
793
|
+
"setup_title": "🔐 إعداد رقم التعريف الشخصي للمسؤول",
|
|
794
|
+
"setup_separator": "============================================================",
|
|
795
|
+
"setup_description": "قم بإنشاء رقم تعريف شخصي مكون من 4 إلى 6 أرقام لوصول المسؤول إلى الإعدادات الحساسة.",
|
|
796
|
+
"required_for_title": "سيكون رقم التعريف الشخصي هذا مطلوبًا من أجل:",
|
|
797
|
+
"required_for_1": "• تغيير إعدادات الأمان",
|
|
798
|
+
"required_for_2": "• تعديل التكوينات المتقدمة",
|
|
799
|
+
"required_for_3": "• الوصول إلى أدوات التصحيح",
|
|
800
|
+
"required_for_4": "• إعادة ضبط الإعدادات",
|
|
801
|
+
"setup_note": "💡 ملحوظة: سترى العلامات النجمية (*) أثناء الكتابة - هذه مجرد أحرف مخفية.",
|
|
802
|
+
"setup_digits_only": "يتم قبول الأرقام من 0 إلى 9 فقط كأرقام PIN.",
|
|
803
|
+
"invalid_pin_length": "❌ رقم التعريف الشخصي غير صالح. يجب أن يتكون من 4 إلى 6 أرقام (الأرقام من 0 إلى 9 فقط).",
|
|
804
|
+
"invalid_pin_example": "مثال: 1234 أو 567890",
|
|
805
|
+
"pins_do_not_match": "❌ أرقام التعريف الشخصية غير متطابقة.",
|
|
806
|
+
"setup_success": "✅ تم تعيين رقم التعريف الشخصي للمشرف بنجاح!",
|
|
807
|
+
"setup_warning": "⚠️ حافظ على رقم التعريف الشخصي هذا آمنًا. ولا يمكن استعادتها في حالة فقدانها.",
|
|
808
|
+
"setup_error": "❌ خطأ في إعداد رقم التعريف الشخصي:",
|
|
809
|
+
"session_expired": "⏰ انتهت صلاحية جلسة الإدارة بسبب عدم النشاط.",
|
|
810
|
+
"no_pin_set_setting_up": "⚠️ لم يتم تعيين رقم تعريف شخصي للمشرف. جارٍ إعداد رقم التعريف الشخصي...",
|
|
811
|
+
"no_pin_configured_access_denied": "⚠️ لم يتم تكوين رقم التعريف الشخصي للمشرف. تم الرفض.",
|
|
812
|
+
"use_admin_settings_to_set_pin": "💡 استخدم إعدادات المسؤول لإعداد رقم التعريف الشخصي أولاً.",
|
|
813
|
+
"locked_out": "🔒 تم قفل وصول المسؤول بسبب عدد كبير جدًا من المحاولات الفاشلة.",
|
|
814
|
+
"wait_before_retry": "يرجى الانتظار لمدة 5 دقائق قبل المحاولة مرة أخرى.",
|
|
815
|
+
"access_granted": "✅ تم منح حق الوصول الإداري.",
|
|
816
|
+
"incorrect_pin": "❌ رقم التعريف الشخصي غير صحيح. {attempts} باقي المحاولات",
|
|
817
|
+
"verify_pin_error": "❌ خطأ في التحقق من رقم التعريف الشخصي:",
|
|
818
|
+
"already_configured": "✅ تم تكوين رقم التعريف الشخصي للمشرف بالفعل.",
|
|
819
|
+
"optional_setup_title": "🔐 إعداد رقم التعريف الشخصي للمسؤول (اختياري)",
|
|
820
|
+
"optional_setup_description": "تضيف حماية رقم التعريف الشخصي للمشرف الأمان للعمليات الحساسة مثل:",
|
|
821
|
+
"setup_prompt": "هل ترغب في إعداد رقم PIN للمشرف؟ (ص / لا):",
|
|
822
|
+
"skipping_setup": "⏭️ تخطي إعداد رقم التعريف الشخصي للمشرف. يمكنك إعداده لاحقًا في الإعدادات.",
|
|
823
|
+
"setup_prompt_error": "❌ خطأ أثناء مطالبة إعداد رقم التعريف الشخصي:",
|
|
824
|
+
"protectedAccess": "الوصول المحمي: مصادقة المسؤول مطلوبة للعمليات الحساسة.",
|
|
825
|
+
"enterPin": "أدخل رقم التعريف الشخصي للمشرف:",
|
|
826
|
+
"accessGranted": "تم منح الوصول.",
|
|
827
|
+
"invalidPin": "❌ رقم التعريف الشخصي غير صالح. يرجى المحاولة مرة أخرى.",
|
|
828
|
+
"weak_pin_warning": "⚠️ تحذير: يبدو أن رقم التعريف الشخصي هذا ضعيف أو شائع.",
|
|
829
|
+
"weak_pin_suggestion": "💡 فكر في استخدام رقم تعريف شخصي أقوى بأرقام متنوعة.",
|
|
830
|
+
"use_anyway_prompt": "اكتب \"yes\" لاستخدامه على أي حال، أو اضغط على Enter لاختيار رقم PIN مختلف:",
|
|
831
|
+
"enter_new_pin": "أدخل رقم التعريف الشخصي الجديد للمشرف (4-6 أرقام):",
|
|
832
|
+
"confirm_pin": "تأكيد رقم التعريف الشخصي للمشرف:",
|
|
833
|
+
"not_set": "غير محدد",
|
|
834
|
+
"pin_display_mask": "####"
|
|
835
|
+
},
|
|
836
|
+
"debug": {
|
|
837
|
+
"title": "🔧 أدوات التصحيح",
|
|
838
|
+
"separator": "============================================================",
|
|
839
|
+
"mainDebuggerSystemDiagnostics": "1. تشخيص النظام",
|
|
840
|
+
"_consoleTranslationsCheck": "// 2. التحقق من ترجمات وحدة التحكم",
|
|
841
|
+
"_exportMissingKeys": "// 3. تصدير مفاتيح الترجمة المفقودة",
|
|
842
|
+
"_replaceHardcodedConsole": "// 4. استبدال سلاسل وحدة التحكم المشفرة",
|
|
843
|
+
"_consoleKeyChecker": "// 5. مدقق مفتاح وحدة التحكم",
|
|
844
|
+
"debugLogs": "2. سجلات التصحيح",
|
|
845
|
+
"backToMainMenu": "0. العودة إلى القائمة الرئيسية",
|
|
846
|
+
"selectOption": "حدد أداة التصحيح:",
|
|
847
|
+
"runningDebugTool": "جري {displayName}...",
|
|
848
|
+
"debugToolNotFound": "❌ لم يتم العثور على أداة التصحيح: {toolName}",
|
|
849
|
+
"errorRunningDebugTool": "خطأ في تشغيل أداة التصحيح '{displayName}': {error}",
|
|
850
|
+
"recentDebugLogs": "📄 سجلات التصحيح الأخيرة",
|
|
851
|
+
"noDebugLogsFound": "❌ لم يتم العثور على سجلات التصحيح.",
|
|
852
|
+
"debugLogsDirectoryNotFound": "❌ لم يتم العثور على دليل سجلات التصحيح.",
|
|
853
|
+
"selectLogPrompt": "حدد ملف السجل لعرضه (1-{count}):",
|
|
854
|
+
"invalidChoiceSelectRange": "اختيار غير صالح. يرجى الاختيار من النطاق المتاح.",
|
|
855
|
+
"contentOf": "📄 محتوى {filename}:",
|
|
856
|
+
"pressEnterToContinue": "اضغط على Enter للمتابعة..."
|
|
857
|
+
},
|
|
858
|
+
"detect_language_mismatches": {
|
|
859
|
+
"tool_title": "🔍 أداة كشف عدم تطابق اللغة",
|
|
860
|
+
"separator": "=====================================",
|
|
861
|
+
"analyzing_file": "📄 التحليل {language}.json...",
|
|
862
|
+
"error_analyzing_file": "❌ خطأ في التحليل {filename}: {errorMessage}",
|
|
863
|
+
"results_title": "📊 نتائج اكتشاف عدم تطابق اللغة",
|
|
864
|
+
"results_separator": "========================================",
|
|
865
|
+
"summary_title": "📋 SUMMARY:",
|
|
866
|
+
"total_files_analyzed": "إجمالي الملفات التي تم تحليلها: {totalFiles}",
|
|
867
|
+
"files_with_mismatches": "الملفات ذات عدم التطابق: {filesWithMismatches}",
|
|
868
|
+
"total_mismatches_found": "إجمالي حالات عدم التطابق التي تم العثور عليها: {totalMismatches}",
|
|
869
|
+
"no_mismatches_found": "✅ لم يتم العثور على عدم تطابق في اللغة! يبدو أن جميع الترجمات موجودة باللغات الصحيحة.",
|
|
870
|
+
"detailed_results_title": "🔍 DETAILED RESULTS:",
|
|
871
|
+
"file_mismatch_header": "📄 {filename} ({language})",
|
|
872
|
+
"mismatches_count": "وجد {count} عدم التطابق (التطابقات):",
|
|
873
|
+
"mismatch_details": "{index}. مفتاح: {key}",
|
|
874
|
+
"mismatch_value": "قيمة: \"{value}\"",
|
|
875
|
+
"mismatch_issue": "مشكلة: {description}",
|
|
876
|
+
"recommendations_title": "💡 التوصيات:",
|
|
877
|
+
"recommendation_1": "1. قم بمراجعة وترجمة جميع الإدخالات المميزة بـ [ترجمة]",
|
|
878
|
+
"recommendation_2": "2. استبدل بادئات اللغة (على سبيل المثال، [DE]، [FR]) بالترجمات المناسبة",
|
|
879
|
+
"recommendation_3": "3. ترجمة النص الإنجليزي إلى اللغة المستهدفة المناسبة",
|
|
880
|
+
"recommendation_4": "4. استخدم مرادفات اللغة الأصلية لجميع النصوص التي يواجهها المستخدم",
|
|
881
|
+
"recommendation_5": "5. قم بتشغيل هذه الأداة مرة أخرى بعد إجراء التصحيحات للتحقق من الإصلاحات",
|
|
882
|
+
"detailed_report_saved": "📄 التقرير التفصيلي محفوظ في: {reportPath}",
|
|
883
|
+
"error_saving_report": "❌ خطأ في حفظ التقرير: {errorMessage}",
|
|
884
|
+
"auto_fix_mode": "🔧 وضع الإصلاح التلقائي {dryRun}",
|
|
885
|
+
"auto_fix_separator": "=====================================",
|
|
886
|
+
"fixed_file": "✅ ثابت {filename}",
|
|
887
|
+
"auto_fix_summary_title": "📊 ملخص الإصلاح التلقائي:",
|
|
888
|
+
"total_fixes_applied": "إجمالي الإصلاحات المطبقة: {count}",
|
|
889
|
+
"preview_fixes_title": "🔍 معاينة الإصلاحات:",
|
|
890
|
+
"fix_details": "{file}: {key} قديم: \"{old}\" جديد: \"{new}\"",
|
|
891
|
+
"more_fixes": "... و {count} المزيد من الإصلاحات",
|
|
892
|
+
"run_with_apply_fixes": "💡 قم بالتشغيل باستخدام --apply لتطبيق هذه الإصلاحات",
|
|
893
|
+
"error_general": "❌ خطأ:",
|
|
894
|
+
"mainDebuggerSystemDiagnostics": "المصحح الرئيسي/تشخيص النظام",
|
|
895
|
+
"exportMissingKeys": "تصدير المفاتيح المفقودة",
|
|
896
|
+
"replaceHardcodedConsole": "استبدال وحدة التحكم المضمنة",
|
|
897
|
+
"consoleKeyChecker": "مدقق مفتاح وحدة التحكم",
|
|
898
|
+
"debugLogs": "سجلات التصحيح",
|
|
899
|
+
"backToMainMenu": "العودة إلى القائمة الرئيسية",
|
|
900
|
+
"invalidChoiceSelectRange": "❌ الاختيار غير صالح. الرجاء تحديد رقم ضمن النطاق المعروض.",
|
|
901
|
+
"runningDebugTool": "تشغيل أداة التصحيح: {displayName}",
|
|
902
|
+
"debugToolNotFound": "أداة التصحيح '{toolName}لم يتم العثور عليه.",
|
|
903
|
+
"recentDebugLogs": "سجلات التصحيح الأخيرة",
|
|
904
|
+
"noDebugLogsFound": "لم يتم العثور على سجلات التصحيح.",
|
|
905
|
+
"logEntry": "إدخال السجل: {timestamp} - {message}",
|
|
906
|
+
"debugLogsDirectoryNotFound": "لم يتم العثور على دليل سجلات التصحيح."
|
|
907
|
+
},
|
|
908
|
+
"help": {
|
|
909
|
+
"title": "📊 مساعدة إدارة I18NTK",
|
|
910
|
+
"usage": "الاستخدام: العقدة الرئيسية/الإدارة/index.js [خيارات]",
|
|
911
|
+
"interactiveMode": "💡 الاستخدام: العقدة الرئيسية/manage/index.js --command=<command> للتنفيذ المباشر",
|
|
912
|
+
"showHelp": "📖 استخدم: العقدة الرئيسية/إدارة/index.js --تعليمات للأوامر المتاحة",
|
|
913
|
+
"availableCommands": "📖 الأوامر المتوفرة:",
|
|
914
|
+
"initProject": "🚀 تهيئة لغات جديدة",
|
|
915
|
+
"analyzeTranslations": "🔍 تحليل الترجمات",
|
|
916
|
+
"validateTranslations": "✅ التحقق من صحة الترجمات",
|
|
917
|
+
"checkUsage": "📊 التحقق من استخدام المفتاح",
|
|
918
|
+
"initCommand": "الحرف الأول - تهيئة لغات جديدة",
|
|
919
|
+
"analyzeCommand": "تحليل - تحليل الترجمات",
|
|
920
|
+
"validateCommand": "التحقق من صحة - التحقق من صحة الترجمات",
|
|
921
|
+
"usageCommand": "الاستخدام - التحقق من استخدام المفتاح",
|
|
922
|
+
"sizingCommand": "التحجيم - تحليل التحجيم",
|
|
923
|
+
"completeCommand": "كاملة - ترجمات كاملة (تغطية 100%)",
|
|
924
|
+
"summaryCommand": "ملخص - إظهار حالة المشروع",
|
|
925
|
+
"debugCommand": "تصحيح - تصحيح مشكلات الترجمة",
|
|
926
|
+
"scannerCommand": "الماسح الضوئي - البحث عن المفاتيح",
|
|
927
|
+
"translateCommand": "ترجمة - ترجمة الملفات المحلية تلقائيًا",
|
|
928
|
+
"menu": {
|
|
929
|
+
"pressEnterToContinue": "اضغط على Enter للمتابعة...",
|
|
930
|
+
"title": "🌐 قائمة إدارة I18NTK",
|
|
931
|
+
"description": "القائمة التفاعلية لإدارة التدويل",
|
|
932
|
+
"exit": "🚪 خروج"
|
|
933
|
+
},
|
|
934
|
+
"commands": {
|
|
935
|
+
"init": "الحرف الأول - تهيئة لغات جديدة",
|
|
936
|
+
"analyze": "تحليل - تحليل الترجمات",
|
|
937
|
+
"validate": "التحقق من صحة - التحقق من صحة الترجمات",
|
|
938
|
+
"usage": "الاستخدام - التحقق من استخدام المفتاح",
|
|
939
|
+
"sizing": "التحجيم - تحليل التحجيم",
|
|
940
|
+
"complete": "كاملة - ترجمات كاملة (تغطية 100%)",
|
|
941
|
+
"summary": "ملخص - إظهار حالة المشروع",
|
|
942
|
+
"debug": "تصحيح - تصحيح مشكلات الترجمة"
|
|
943
|
+
},
|
|
944
|
+
"options": {
|
|
945
|
+
"sourceDir": "--مصدر-دير <dir> الدليل المصدر للتحليل",
|
|
946
|
+
"output": "--output <file> ملف الإخراج للتقرير",
|
|
947
|
+
"verbose": "--verbose, -v عرض المعلومات التفصيلية",
|
|
948
|
+
"keepReports": "--keep-reports احتفظ بالتقارير الموجودة",
|
|
949
|
+
"deleteReports": "--delete-reports حذف التقارير الموجودة",
|
|
950
|
+
"help": "--help, -h أظهر هذه المساعدة"
|
|
951
|
+
},
|
|
952
|
+
"examples": {
|
|
953
|
+
"title": "أمثلة:",
|
|
954
|
+
"example1": "العقدة i18ntk-manage.js",
|
|
955
|
+
"example2": "العقدة i18ntk-manage.js --source-dir ./locales",
|
|
956
|
+
"example3": "العقدة i18ntk-manage.js --ملخص الإخراج-report.txt",
|
|
957
|
+
"example4": "العقدة i18ntk-manage.js --verbose",
|
|
958
|
+
"example5": "العقدة i18ntk-manage.js --source-dir ./locales --output report.json"
|
|
959
|
+
},
|
|
960
|
+
"features": {
|
|
961
|
+
"initProject": "🚀 تهيئة لغات جديدة",
|
|
962
|
+
"analyzeTranslations": "🔍 تحليل الترجمات",
|
|
963
|
+
"validateTranslations": "✅ التحقق من صحة الترجمات",
|
|
964
|
+
"checkUsage": "📊 التحقق من استخدام المفتاح",
|
|
965
|
+
"completeTranslations": "🎯 ترجمات كاملة (تغطية 100%)",
|
|
966
|
+
"showSizing": "📏 تحليل الحجم",
|
|
967
|
+
"runWorkflow": "🔄 تشغيل سير العمل بالكامل",
|
|
968
|
+
"showStatus": "📋 إظهار حالة المشروع",
|
|
969
|
+
"deleteReports": "🗑️ حذف كافة التقارير",
|
|
970
|
+
"changeLanguage": "🌍 تغيير لغة واجهة المستخدم",
|
|
971
|
+
"settings": "⚙️ الإعدادات",
|
|
972
|
+
"showHelp": "❓ مساعدة",
|
|
973
|
+
"debugTools": "🔧 أدوات التصحيح"
|
|
974
|
+
},
|
|
975
|
+
"messages": {
|
|
976
|
+
"selectOption": "حدد خيارًا:",
|
|
977
|
+
"invalidOption": "خيار غير صالح. يرجى المحاولة مرة أخرى.",
|
|
978
|
+
"operationCompleted": "✅ تمت العملية بنجاح!",
|
|
979
|
+
"pressEnter": "اضغط على Enter للمتابعة...",
|
|
980
|
+
"goodbye": "👋 وداعا!",
|
|
981
|
+
"unknownCommand": "أمر غير معروف: {command}",
|
|
982
|
+
"nonInteractive": "⚠️ تم اكتشاف الوضع غير التفاعلي. القائمة المعروضة للاشارة فقط."
|
|
983
|
+
},
|
|
984
|
+
"i18n_helper": {
|
|
985
|
+
"translation_file_not_found": "لم يتم العثور على ملف الترجمة: {translationFile}",
|
|
986
|
+
"error_loading_translations": "حدث خطأ أثناء تحميل الترجمات: {errorMessage}",
|
|
987
|
+
"translation_not_found": "لم يتم العثور على ترجمة للمفتاح: {key}",
|
|
988
|
+
"translation_key_not_string": "مفتاح الترجمة لا يتحول إلى سلسلة: {key}",
|
|
989
|
+
"error_reading_locales_directory": "خطأ في قراءة دليل اللغات: {errorMessage}"
|
|
990
|
+
}
|
|
991
|
+
},
|
|
992
|
+
"init": {
|
|
993
|
+
"initializationTitle": "🚀 مجموعة أدوات إدارة i18n - تهيئة المشروع",
|
|
994
|
+
"initializationCancelled": "🚫 تم إلغاء التهيئة من قبل المستخدم.",
|
|
995
|
+
"sourceDirectoryLabel": "📁 دليل المصدر: {dir}",
|
|
996
|
+
"requiredTitle": "التهيئة مطلوبة",
|
|
997
|
+
"requiredBody": "يجب تهيئة هذا المشروع قبل تشغيل هذا الأمر.",
|
|
998
|
+
"promptRunNow": "هل ترغب في تشغيل التهيئة الآن؟ (ص / لا):",
|
|
999
|
+
"sourceLanguageLabel": "🌍 لغة المصدر: {language}",
|
|
1000
|
+
"detectedI18nFrameworks": "🔍 إطار (إطارات) i18n المكتشفة: {frameworks}",
|
|
1001
|
+
"pinMustBe4Digits": "🔐 يجب أن يتكون رقم التعريف الشخصي من 4 أرقام.",
|
|
1002
|
+
"existingDirectoriesFound": "📁 تم العثور على أدلة الترجمة الموجودة:",
|
|
1003
|
+
"useExistingDirectoryPrompt": "هل تريد استخدام الدليل الموجود؟ (ص / ن)",
|
|
1004
|
+
"selectDirectoryPrompt": "حدد دليلاً عن طريق إدخال الرقم (أو اختر \"إنشاء دليل جديد\")",
|
|
1005
|
+
"enterNewDirectoryName": "أدخل اسم دليل الترجمة الجديد الخاص بك",
|
|
1006
|
+
"createdNewDirectory": "✅ تم إنشاء دليل جديد: {dir}",
|
|
1007
|
+
"directoryAlreadyExists": "⚠️ الدليل موجود بالفعل: {dir}",
|
|
1008
|
+
"invalidDirectoryName": "❌ تم تقديم اسم دليل غير صالح.",
|
|
1009
|
+
"usingExistingDirectory": "باستخدام الدليل الموجود: {dir}",
|
|
1010
|
+
"adminPinSetupOptional": "🔐 إعداد رقم التعريف الشخصي للمشرف اختياري (موصى به للأمان)",
|
|
1011
|
+
"adminPinSeparator": "------------------------------",
|
|
1012
|
+
"adminPinDescription1": "رقم التعريف الشخصي للمسؤول: رقم مكون من 4 أرقام للوصول الآمن",
|
|
1013
|
+
"adminPinDescription2": "اتركه فارغًا لتخطي إعداد رقم التعريف الشخصي",
|
|
1014
|
+
"adminPinDescription3": "إذا قمت بتعيين رقم PIN، فسيكون مطلوبًا لجميع الإجراءات الآمنة المستقبلية.",
|
|
1015
|
+
"adminPinDescription4": "تشفير AES-256-GCM يستخدم للتخزين الآمن لرقم التعريف الشخصي.",
|
|
1016
|
+
"adminPinSetupPrompt": "أدخل رقم التعريف الشخصي للمشرف (4 أرقام) أو اتركه فارغًا لتخطي:",
|
|
1017
|
+
"skippingAdminPinSetup": "جارٍ تخطي إعداد رقم التعريف الشخصي للمشرف...",
|
|
1018
|
+
"settingUpAdminPin": "🔐 إعداد رقم التعريف الشخصي للمسؤول...",
|
|
1019
|
+
"enterAdminPin": "أدخل رقم التعريف الشخصي للمسؤول:",
|
|
1020
|
+
"confirmAdminPin": "تأكيد رقم التعريف الشخصي للمسؤول:",
|
|
1021
|
+
"pinMismatch": "أرقام التعريف الشخصية غير متطابقة. يرجى المحاولة مرة أخرى.",
|
|
1022
|
+
"adminPinSetupSuccess": "🔐 تم إعداد رقم التعريف الشخصي للمشرف بنجاح!",
|
|
1023
|
+
"adminPinSetupFailure": "🔐 فشل إعداد رقم التعريف الشخصي للمشرف. يرجى المحاولة مرة أخرى.",
|
|
1024
|
+
"adminProtectionEnabled": "🔐 تم تمكين حماية المسؤول. تتطلب كافة الإجراءات مصادقة PIN.",
|
|
1025
|
+
"adminProtectionDisabled": "🔐 تم تعطيل حماية المسؤول. جميع الإجراءات متاحة الآن بدون رقم التعريف الشخصي (PIN).",
|
|
1026
|
+
"autoDetectedI18nDirectory": "دليل i18n المكتشف تلقائيًا: {directory}",
|
|
1027
|
+
"initializingProject": "⚙️ بدء تكوين المشروع...",
|
|
1028
|
+
"createdSampleTranslationFile": "✅ تم إنشاء ملف ترجمة نموذجي: {file}",
|
|
1029
|
+
"languageSelectionTitle": "🌐 تكوين اللغة",
|
|
1030
|
+
"available": "متاح",
|
|
1031
|
+
"defaultLanguages": "📝 اللغات الافتراضية: {languages}",
|
|
1032
|
+
"enterLanguageCodes": "🎯 أدخل رموز اللغة المستهدفة (مفصولة بفواصل، على سبيل المثال de, es, fr, ru):",
|
|
1033
|
+
"targetLanguages": "🌍 اللغات المستهدفة",
|
|
1034
|
+
"foundSourceFiles": "📄 وجدت {count} ملفات المصدر للتحليل",
|
|
1035
|
+
"processingLanguage": "🔄 لغة المعالجة: {language}",
|
|
1036
|
+
"fileProcessingResult": "✅معالجة {file}: {translated}/{total} المفاتيح ({percentage}%)",
|
|
1037
|
+
"overallProgress": "📊 التقدم العام: {translated}/{total} المفاتيح المعالجة ({percentage}%)",
|
|
1038
|
+
"initializationSummaryTitle": "📋 ملخص التهيئة",
|
|
1039
|
+
"languageSummary": "{icon} {name} ({code}): {percentage}٪ مكتمل",
|
|
1040
|
+
"languageFiles": "📄 الملفات: {count}",
|
|
1041
|
+
"languageKeys": "🔤 المفاتيح: {translated}/{total}",
|
|
1042
|
+
"languageMissing": "⚠️ مفقود: {count}",
|
|
1043
|
+
"initializationCompletedSuccessfully": "🎉 تم الانتهاء من تهيئة المشروع بنجاح!",
|
|
1044
|
+
"nextStepsTitle": "🚀 الخطوات التالية",
|
|
1045
|
+
"nextStep1": "1. قم بمراجعة ملفات الترجمة التي تم إنشاؤها في الدليل المحلي/الخاص بك",
|
|
1046
|
+
"nextStep2": "2. أضف ترجمات لكل لغة مستهدفة",
|
|
1047
|
+
"nextStep3": "3. قم بتشغيل \"npm run i18ntk\" مرة أخرى للتحقق من صحة الترجمات",
|
|
1048
|
+
"detectedFrameworks": "✅ تم اكتشاف إطار (إطارات) i18n: {frameworks}",
|
|
1049
|
+
"setup": {
|
|
1050
|
+
"title": "يثبت",
|
|
1051
|
+
"question": "سؤال الإعداد",
|
|
1052
|
+
"opt_single": "ملف واحد",
|
|
1053
|
+
"opt_modular": "وحدات",
|
|
1054
|
+
"opt_existing": "موجود",
|
|
1055
|
+
"choice_prompt": "اختر خيارًا:",
|
|
1056
|
+
"opt_confirm": "يتأكد",
|
|
1057
|
+
"opt_cancel": "يلغي",
|
|
1058
|
+
"apply_all_prompt": "هل تريد تطبيق هذا الهيكل على جميع اللغات؟ (ص / لا):",
|
|
1059
|
+
"per_language_intro": "لقد اخترت تكوين اللغات بشكل فردي. فيما يلي اللغات المتاحة:",
|
|
1060
|
+
"available_languages": "اللغات المتاحة: {languages}",
|
|
1061
|
+
"include_prompt": "أدخل رموز اللغة المفصولة بفواصل لتضمينها (على سبيل المثال، 'de,fr,es'):"
|
|
1062
|
+
},
|
|
1063
|
+
"warnings": {
|
|
1064
|
+
"noPackageJson": "لم يتم العثور على package.json. لا يمكن الكشف التلقائي عن إطار عمل i18n."
|
|
1065
|
+
},
|
|
1066
|
+
"errorsPackageJsonRead": "خطأ في قراءة package.json: {error}",
|
|
1067
|
+
"errorsNoFramework": "لم يتم اكتشاف إطار عمل i18n. يرجى تثبيت واحد أو تحديده يدويًا.",
|
|
1068
|
+
"suggestions": {
|
|
1069
|
+
"noFramework": "لم يتم اكتشاف إطار عمل i18n. فكر في استخدام أحد الإجراءات التالية:",
|
|
1070
|
+
"installFramework": "لتثبيت إطار عمل، قم بتشغيل: npm install <package-name>"
|
|
1071
|
+
},
|
|
1072
|
+
"frameworks": {
|
|
1073
|
+
"react": "- رد فعل i18next (رد فعل i18next)",
|
|
1074
|
+
"vue": "- فيو i18n (vue-i18n)",
|
|
1075
|
+
"i18next": "- i18next (i18next)",
|
|
1076
|
+
"nuxt": "- نوكست i18n (@nuxtjs/i18n)",
|
|
1077
|
+
"svelte": "- svelte i18n (svelte-i18n)"
|
|
1078
|
+
},
|
|
1079
|
+
"continueWithoutI18nPrompt": "لم يتم اكتشاف إطار عمل i18n. هل تريد الاستمرار بدون واحد؟ (ص / لا):",
|
|
1080
|
+
"detectedI18nFramework": "إطار عمل i18n المكتشف: {frameworks}",
|
|
1081
|
+
"existingDirectoryItem": "{index}. {location}",
|
|
1082
|
+
"usingExistingStructure": "باستخدام الهيكل الحالي: {dir}",
|
|
1083
|
+
"creatingSourceDirectory": "إنشاء الدليل المصدر: {dir}",
|
|
1084
|
+
"creatingSourceLanguageDirectory": "إنشاء دليل اللغة المصدر: {dir}",
|
|
1085
|
+
"errors": {
|
|
1086
|
+
"errorExecutingCommand": "خطأ في تنفيذ الأمر: {error}",
|
|
1087
|
+
"sourceDirectoryNotFound": "لم يتم العثور على الدليل المصدر: {dir}",
|
|
1088
|
+
"sourceLanguageDirectoryNotFound": "لم يتم العثور على دليل اللغة المصدر: {dir}",
|
|
1089
|
+
"noJsonFilesInSourceDirectory": "لم يتم العثور على ملفات JSON في الدليل المصدر: {dir}",
|
|
1090
|
+
"invalidFilePathDetected": "تم اكتشاف مسار ملف غير صالح",
|
|
1091
|
+
"initializationFailed": "فشلت التهيئة: {error}",
|
|
1092
|
+
"noFramework": "لم يتم اكتشاف إطار عمل i18n. تابع مع الوضع العام.",
|
|
1093
|
+
"packageJsonRead": "حدث خطأ أثناء قراءة package.json."
|
|
1094
|
+
},
|
|
1095
|
+
"processingFile": "يعالج {file} ل {language}...",
|
|
1096
|
+
"fileAlreadyExistsMerging": "ملف {file} موجود بالفعل. دمج المفاتيح الجديدة.",
|
|
1097
|
+
"createdNewFile": "تم إنشاء ملف جديد: {file}",
|
|
1098
|
+
"updatedFile": "ملف محدث: {file}",
|
|
1099
|
+
"skippingExcludedFile": "تخطي {file} ل {language} كما هو مستبعد.",
|
|
1100
|
+
"continuingWithoutAdminPin": "المتابعة بدون إعداد رقم التعريف الشخصي (PIN) للمشرف.",
|
|
1101
|
+
"createdSourceLanguageDirectory": "تم إنشاء دليل اللغة المصدر: {dir}",
|
|
1102
|
+
"errorSettingUpAdminPin": "خطأ في إعداد رقم التعريف الشخصي للمشرف: {error}",
|
|
1103
|
+
"noTargetLanguagesSpecified": "لم يتم تحديد اللغات المستهدفة.",
|
|
1104
|
+
"translationFilesCreatedWarning": "تم إنشاء ملفات الترجمة باستخدام العناصر النائبة؛ مراجعة قبل استخدام الإنتاج.",
|
|
1105
|
+
"warningCannotReadSourceDir": "تحذير: لا يمكن قراءة الدليل المصدر {dir}: {error}",
|
|
1106
|
+
"warningInvalidLanguageCodes": "تحذير: تم تجاهل رموز اللغة غير الصالحة: {languages}",
|
|
1107
|
+
"warningProceedingWithoutFramework": "المتابعة بدون إطار عمل i18n المكتشف.",
|
|
1108
|
+
"backup": {
|
|
1109
|
+
"title": "إعدادات النسخ الاحتياطي",
|
|
1110
|
+
"description": "يتم تعطيل النسخ الاحتياطية بشكل افتراضي لتجنب تكرار النسخ الاحتياطي وتلوث الريبو.",
|
|
1111
|
+
"enablePrompt": "هل تريد تفعيل النسخ الاحتياطية التلقائية؟ (ص / لا):",
|
|
1112
|
+
"keepPrompt": "كم عدد النسخ الاحتياطية التي يجب الاحتفاظ بها تلقائيًا (1-3، الافتراضي 1):"
|
|
1113
|
+
},
|
|
1114
|
+
"completionSummaryTitle": "ملخص الإنجاز",
|
|
1115
|
+
"completionSummaryBasicTitle": "ملخص الإنجاز (الأساسي)",
|
|
1116
|
+
"totalChanges": "إجمالي التغييرات: {count}",
|
|
1117
|
+
"languagesProcessed": "اللغات المعالجة: {count}",
|
|
1118
|
+
"missingKeysAdded": "تمت إضافة المفاتيح المفقودة: {count}",
|
|
1119
|
+
"reportPrompt": "هل ترغب في إنشاء تقرير؟ (ص / ن):",
|
|
1120
|
+
"reportGenerated": "تم إنشاء التقرير: {reportPath}",
|
|
1121
|
+
"reportFailed": "فشل في إنشاء التقرير: {error}",
|
|
1122
|
+
"completionError": "خطأ أثناء الإكمال: {error}",
|
|
1123
|
+
"optimize": {
|
|
1124
|
+
"title": "تحسين حجم الحزمة",
|
|
1125
|
+
"preview": "جارٍ تشغيل معاينة تحسين اللغة...",
|
|
1126
|
+
"reduceTip": "يمكنك تقليل حجم الحزمة عن طريق تحديد اللغات التي تحتاجها فقط.",
|
|
1127
|
+
"prompt": "هل ترغب في تشغيل التحسين التفاعلي الآن؟ (ص / ن):",
|
|
1128
|
+
"starting": "بدء تحسين اللغة التفاعلية...",
|
|
1129
|
+
"completed": "تم الانتهاء من تحسين الحزمة.",
|
|
1130
|
+
"later": "يمكنك تشغيل تحسين اللغة لاحقًا باستخدام:",
|
|
1131
|
+
"unavailable": "لا يمكن تقديم تحسين اللغة: {error}"
|
|
1132
|
+
}
|
|
1133
|
+
},
|
|
1134
|
+
"language": {
|
|
1135
|
+
"title": "🌍 تغيير اللغة",
|
|
1136
|
+
"separator": "============================================================",
|
|
1137
|
+
"current": "اللغة الحالية: {language}",
|
|
1138
|
+
"available": "اللغات المتاحة:",
|
|
1139
|
+
"languageOption": "{index}. {displayName}{current}",
|
|
1140
|
+
"backToMainMenu": "العودة إلى القائمة الرئيسية",
|
|
1141
|
+
"prompt": "اختر لغة (0-8):",
|
|
1142
|
+
"cancelled": "تم إلغاء تغيير اللغة.",
|
|
1143
|
+
"invalid": "اختيار غير صالح. يرجى المحاولة مرة أخرى.",
|
|
1144
|
+
"changed": "تم تغيير اللغة إلى: {language}",
|
|
1145
|
+
"changeFailed": "فشل تغيير اللغة: {error}",
|
|
1146
|
+
"pressEnterToContinue": "اضغط على Enter للمتابعة..."
|
|
1147
|
+
},
|
|
1148
|
+
"maintainLanguagePurity": {
|
|
1149
|
+
"workflow_title": "🚀 سير عمل صيانة نقاء اللغة",
|
|
1150
|
+
"step1_title": "📊 الخطوة الأولى: التقييم الأولي لنقاء اللغة",
|
|
1151
|
+
"step2_title": "🔧 الخطوة 2: اكتشاف حالات عدم تطابق اللغة وإصلاحها تلقائيًا",
|
|
1152
|
+
"step3_title": "🌐 الخطوة 3: تطبيق الترجمات التلقائية",
|
|
1153
|
+
"step4_title": "✅ الخطوة 4: التقييم النهائي لنقاء اللغة",
|
|
1154
|
+
"workflow_error": "❌ خطأ في سير العمل: {errorMessage}",
|
|
1155
|
+
"running_initial_validation": "جارٍ تشغيل التحقق الأولي من نقاء اللغة...",
|
|
1156
|
+
"initial_assessment_complete": "✅ اكتمال التقييم الأولي: {count} تم العثور على الانتهاكات",
|
|
1157
|
+
"initial_assessment_warnings": "⚠️ تم الانتهاء من التقييم الأولي مع التحذيرات",
|
|
1158
|
+
"detecting_fixing_mismatches": "اكتشاف وإصلاح عدم تطابق اللغة...",
|
|
1159
|
+
"detection_complete_applying_fixes": "اكتمل الكشف. جارٍ تطبيق الإصلاحات التلقائية...",
|
|
1160
|
+
"mismatch_fixes_complete": "✅ اكتملت إصلاحات عدم تطابق اللغة: {count} تم تطبيق الإصلاحات",
|
|
1161
|
+
"mismatch_fixes_warnings": "⚠️ تم استكمال إصلاحات عدم تطابق اللغة مع التحذيرات",
|
|
1162
|
+
"applying_automatic_translations": "جارٍ تطبيق الترجمات التلقائية...",
|
|
1163
|
+
"translation_preview_complete": "اكتملت معاينة الترجمة. جارٍ تطبيق الترجمات..."
|
|
1164
|
+
},
|
|
1165
|
+
"menu": {
|
|
1166
|
+
"title": "🌐 قائمة إدارة I18NTK",
|
|
1167
|
+
"separator": "============================================================",
|
|
1168
|
+
"options": {
|
|
1169
|
+
"init": "🚀 تهيئة لغات جديدة",
|
|
1170
|
+
"analyze": "🔍 تحليل الترجمات",
|
|
1171
|
+
"validate": "✅ التحقق من صحة الترجمات",
|
|
1172
|
+
"usage": "📊 التحقق من استخدام المفتاح",
|
|
1173
|
+
"complete": "🎯 ترجمات كاملة (تغطية 100%)",
|
|
1174
|
+
"sizing": "📏 تحليل الحجم",
|
|
1175
|
+
"fix": "🛠️ إصلاح ترجمات العناصر النائبة",
|
|
1176
|
+
"scanner": "🔍 البحث عن مشاكل i18n",
|
|
1177
|
+
"translate": "🌐 ترجمة تلقائية",
|
|
1178
|
+
"workflow": "🔄 تشغيل سير العمل بالكامل",
|
|
1179
|
+
"status": "📋 إظهار حالة المشروع",
|
|
1180
|
+
"delete": "🗑️ حذف كافة التقارير",
|
|
1181
|
+
"language": "🌍 تغيير لغة واجهة المستخدم",
|
|
1182
|
+
"settings": "⚙️ الإعدادات",
|
|
1183
|
+
"help": "❓ مساعدة",
|
|
1184
|
+
"debug": "🔧 أدوات التصحيح",
|
|
1185
|
+
"exit": "🚪 خروج"
|
|
1186
|
+
},
|
|
1187
|
+
"update": "📦 تحديث الحزمة",
|
|
1188
|
+
"goodbye": "👋 وداعا!",
|
|
1189
|
+
"invalidChoice": "اختيار غير صالح. الرجاء تحديد 0-15.",
|
|
1190
|
+
"returning": "العودة إلى القائمة الرئيسية...",
|
|
1191
|
+
"invalidOption": "خيار غير صالح. يرجى المحاولة مرة أخرى.",
|
|
1192
|
+
"nonInteractiveModeWarning": "تم اكتشاف الوضع غير التفاعلي. القائمة المعروضة للاشارة فقط.",
|
|
1193
|
+
"useDirectExecution": "الاستخدام: العقدة الرئيسية/إدارة/index.js --command=<command> للتنفيذ المباشر.",
|
|
1194
|
+
"useHelpForCommands": "استخدم: العقدة main/manage/index.js --help للأوامر المتاحة.",
|
|
1195
|
+
"returnToMainMenu": "اضغط على Enter للعودة إلى القائمة الرئيسية.",
|
|
1196
|
+
"pressEnterToContinue": "اضغط على Enter للمتابعة...",
|
|
1197
|
+
"selectOptionPrompt": "حدد خيارًا:",
|
|
1198
|
+
"selectDebugToolPrompt": "حدد أداة التصحيح:",
|
|
1199
|
+
"selectLogPrompt": "حدد ملف السجل (1-{count}):",
|
|
1200
|
+
"autoDetectedI18nDirectory": "دليل i18n المكتشف تلقائيًا: {directory}",
|
|
1201
|
+
"executingCommand": "تنفيذ الأمر: {command}",
|
|
1202
|
+
"unknownCommand": "أمر غير معروف: {command}",
|
|
1203
|
+
"languageOption": "{index}. {displayName}{current}",
|
|
1204
|
+
"debugTools": {
|
|
1205
|
+
"1": "تحليل ملف السجل",
|
|
1206
|
+
"2": "تحليل استخدام مفتاح الترجمة",
|
|
1207
|
+
"3": "تحليل اكتمال الترجمة",
|
|
1208
|
+
"4": "تحليل تنسيق الترجمة",
|
|
1209
|
+
"5": "تحليل نوع الترجمة",
|
|
1210
|
+
"6": "تحليل هيكل الترجمة"
|
|
1211
|
+
},
|
|
1212
|
+
"native_translations": {
|
|
1213
|
+
"exact_translation_found": "✅ {keyPath}: {value}",
|
|
1214
|
+
"no_exact_translation": "⚠️ لا توجد ترجمة دقيقة لـ '{keyPath}\"، تم العثور على مفاتيح مماثلة:",
|
|
1215
|
+
"similar_key": "- {key} ({similarity}٪ مباراة)",
|
|
1216
|
+
"processing_language_files": "🔄 المعالجة {count} ملفات اللغة...",
|
|
1217
|
+
"file_not_found": "⚠️ لم يتم العثور على الملف: {file}",
|
|
1218
|
+
"processing_translations": "🌍 المعالجة {code} ترجمات...",
|
|
1219
|
+
"backup_created": "📋 تم إنشاء النسخة الاحتياطية: {filename}",
|
|
1220
|
+
"error_parsing_json": "❌ خطأ في التحليل {code}.json: {errorMessage}",
|
|
1221
|
+
"existing_keys_found": "📊 {code}: وجد {count} المفاتيح الموجودة",
|
|
1222
|
+
"error_writing_json": "❌ خطأ في الكتابة {code}.json: {errorMessage}",
|
|
1223
|
+
"translations_replaced": "📊 {code}: {count} تم استبدال الترجمات",
|
|
1224
|
+
"translation_replacement_complete": "✅ استبدال الترجمة كاملة!",
|
|
1225
|
+
"total_replacements": "📊 إجمالي الإبدالات: {count}",
|
|
1226
|
+
"dry_run_mode": "⚠️ وضع التشغيل الجاف - لم يتم تعديل أي ملفات",
|
|
1227
|
+
"tool_title": "🌍 بديل الترجمة الأصلي v1.9.1",
|
|
1228
|
+
"tool_separator": "======================================",
|
|
1229
|
+
"dry_run_warning": "⚠️ يعمل في وضع DRY RUN - لن يتم تعديل أي ملفات",
|
|
1230
|
+
"error_during_replacement": "❌ خطأ أثناء استبدال الترجمة:"
|
|
1231
|
+
}
|
|
1232
|
+
},
|
|
1233
|
+
"config": {
|
|
1234
|
+
"dirFallbackWarning": "⚠️ الدليل {dir} لم يتم العثور عليه. استخدام {fallback}.",
|
|
1235
|
+
"dirInvalidError": "❌ الدليل غير صالح: {dir}"
|
|
1236
|
+
},
|
|
1237
|
+
"operations": {
|
|
1238
|
+
"completed": "✅ تمت العملية بنجاح!",
|
|
1239
|
+
"deleteReportsTitle": "🗑️ حذف التقارير والسجلات وذاكرة التخزين المؤقت",
|
|
1240
|
+
"scanningForFiles": "🔍 البحث عن الملفات المراد حذفها...",
|
|
1241
|
+
"noFilesFoundToDelete": "✅ لم يتم العثور على ملفات لحذفها.",
|
|
1242
|
+
"availableDirectories": "📁 الأدلة المتاحة:",
|
|
1243
|
+
"allDirectories": "جميع الدلائل",
|
|
1244
|
+
"andMore": "وأكثر...",
|
|
1245
|
+
"cancelOption": "يلغي",
|
|
1246
|
+
"cancelReportOption": "إلغاء / العودة إلى القائمة",
|
|
1247
|
+
"invalidSelection": "❌ الاختيار غير صالح.",
|
|
1248
|
+
"foundFilesInSelectedDirectories": "📊 وجدت {count} الملفات في الدلائل المحددة:",
|
|
1249
|
+
"deletionOptions": "🗑️ خيارات الحذف:",
|
|
1250
|
+
"deleteAllFiles": "احذف كافة الملفات",
|
|
1251
|
+
"keepLast3Files": "احتفظ بآخر 3 ملفات (حسب التاريخ)",
|
|
1252
|
+
"keepLast5Files": "احتفظ بآخر 5 ملفات (حسب التاريخ)",
|
|
1253
|
+
"noFilesToDelete": "✅ لا توجد ملفات لحذفها.",
|
|
1254
|
+
"filesToDeleteCount": "📋 الملفات المراد حذفها: {count}",
|
|
1255
|
+
"filesToKeepCount": "📋 الملفات التي يجب الاحتفاظ بها: {count}",
|
|
1256
|
+
"confirmDeletion": "⚠️ هل أنت متأكد من رغبتك في حذف هذه الملفات؟ (ص / لا):",
|
|
1257
|
+
"deletedFile": "✅ تم الحذف: {filename}",
|
|
1258
|
+
"failedToDeleteFile": "❌ فشل الحذف {filename}: {error}",
|
|
1259
|
+
"cancelled": "❌ تم إلغاء العملية.",
|
|
1260
|
+
"init": {
|
|
1261
|
+
"title": "🚀 تهيئة لغة جديدة"
|
|
1262
|
+
},
|
|
1263
|
+
"usage": {
|
|
1264
|
+
"title": "📊 التحقق من استخدام المفتاح",
|
|
1265
|
+
"noUsedKeysHint": "تم العثور على ترجمات ولكن لا يوجد استخدام في المصدر. تحقق من --source-dir وtranslationPatterns."
|
|
1266
|
+
},
|
|
1267
|
+
"analyze": {
|
|
1268
|
+
"title": "🔍 تحليل الترجمات"
|
|
1269
|
+
},
|
|
1270
|
+
"validate": {
|
|
1271
|
+
"title": "✅ التحقق من صحة الترجمات"
|
|
1272
|
+
},
|
|
1273
|
+
"settings": {
|
|
1274
|
+
"title": "⚙️ إدارة الإعدادات",
|
|
1275
|
+
"separator": "============================================================"
|
|
1276
|
+
},
|
|
1277
|
+
"complete": {
|
|
1278
|
+
"deletingOldReport": "🗑️ حذف تقرير الاستخدام القديم لتحليل جديد",
|
|
1279
|
+
"generatingFreshAnalysis": "🔄 إنشاء تحليل الاستخدام الجديد...",
|
|
1280
|
+
"couldNotGenerate": "⚠️ لا يمكن إنشاء تحليل الاستخدام. استخدام المفاتيح المفقودة الشائعة.",
|
|
1281
|
+
"reportNotFound": "⚠️ لم يتم العثور على تقرير الاستخدام. جارٍ إنشاء تحليل جديد...",
|
|
1282
|
+
"foundMissingKeys": "🔍 وجدت {count} المفاتيح المفقودة من تحليل الاستخدام",
|
|
1283
|
+
"couldNotParse": "⚠️ تعذر تحليل تقرير الاستخدام. استخدام المفاتيح المفقودة الشائعة.",
|
|
1284
|
+
"title": "🎯 استكمال الترجمات",
|
|
1285
|
+
"separator": "============================================================",
|
|
1286
|
+
"sourceDir": "📁 دليل المصدر: {sourceDir}",
|
|
1287
|
+
"sourceLanguage": "🔤 لغة المصدر: {sourceLanguage}",
|
|
1288
|
+
"dryRunMode": "🧪 وضع التشغيل الجاف - لن يتم تعديل أي ملفات",
|
|
1289
|
+
"languages": "🎯 اللغات المستهدفة: {languages}",
|
|
1290
|
+
"addingMissingKeys": "➕ إضافة المفاتيح المفقودة لملفات الترجمة...",
|
|
1291
|
+
"processing": "🔄 المعالجة {language}...",
|
|
1292
|
+
"addedKeys": "✅ تمت الإضافة {count} مفاتيح",
|
|
1293
|
+
"changeDetails": "📝 {file}: {key}",
|
|
1294
|
+
"noChangesNeeded": "✅ لا حاجة لأي تغييرات {language}",
|
|
1295
|
+
"summaryTitle": "📊 ملخص الإنجاز",
|
|
1296
|
+
"totalChanges": "📝 إجمالي التغييرات: {totalChanges}",
|
|
1297
|
+
"languagesProcessed": "🌐 اللغات المعالجة: {languagesProcessed}",
|
|
1298
|
+
"missingKeysAdded": "➕ تمت إضافة المفاتيح المفقودة: {missingKeysAdded}",
|
|
1299
|
+
"nextStepsTitle": "📋 NEXT STEPS",
|
|
1300
|
+
"nextStep1": "1. تشغيل تحليل الاستخدام:",
|
|
1301
|
+
"nextStep2": "2. التحقق من صحة الترجمات:",
|
|
1302
|
+
"nextStep3": "3. تحليل الاكتمال:",
|
|
1303
|
+
"allKeysAvailable": "🎉 جميع مفاتيح الترجمة متاحة الآن!",
|
|
1304
|
+
"runWithoutDryRun": "💡 قم بالتشغيل بدون --dry-run لتطبيق التغييرات",
|
|
1305
|
+
"pressEnterToContinue": "اضغط على Enter للمتابعة..."
|
|
1306
|
+
},
|
|
1307
|
+
"updatePackage": {
|
|
1308
|
+
"title": "📦 تحديث حزمة أدوات i18n",
|
|
1309
|
+
"description": "سيؤدي هذا إلى تحديث حزمة أدوات i18n إلى أحدث إصدار متاح على npm.",
|
|
1310
|
+
"command": "الأمر بالتشغيل",
|
|
1311
|
+
"confirm": "هل أنت متأكد أنك تريد متابعة التحديث؟ (ص / لا):",
|
|
1312
|
+
"updating": "جارٍ تحديث الحزمة... قد يستغرق هذا بعض الوقت.",
|
|
1313
|
+
"success": "✅ تم تحديث مجموعة أدوات i18n بنجاح!",
|
|
1314
|
+
"error": "❌ فشل تحديث مجموعة أدوات i18n",
|
|
1315
|
+
"cancelled": "❌ تم إلغاء التحديث."
|
|
1316
|
+
}
|
|
1317
|
+
},
|
|
1318
|
+
"security": {
|
|
1319
|
+
"pathValidationFailed": "path_validation_failed",
|
|
1320
|
+
"invalidInputType": "valid_input_type",
|
|
1321
|
+
"pathTraversalAttempt": "path_traversal_attempt",
|
|
1322
|
+
"pathValidated": "✅ تم التحقق من صحة المسار بنجاح",
|
|
1323
|
+
"pathValidationError": "path_validation_error",
|
|
1324
|
+
"fileTooLarge": "الأمان: الملف كبير جدًا: {filePath}",
|
|
1325
|
+
"fileReadError": "الأمان: خطأ في قراءة الملف: {errorMessage}",
|
|
1326
|
+
"contentTooLargeForFile": "الأمان: المحتوى كبير جدًا بالنسبة للملف: {filePath}",
|
|
1327
|
+
"fileWriteError": "الأمان: خطأ في كتابة الملف: {errorMessage}",
|
|
1328
|
+
"jsonStringTooLarge": "الأمان: سلسلة JSON كبيرة جدًا",
|
|
1329
|
+
"jsonParseError": "الأمان: خطأ في تحليل JSON: {errorMessage}",
|
|
1330
|
+
"inputContainsDisallowedCharacters": "الأمان: يحتوي الإدخال على أحرف غير مسموح بها",
|
|
1331
|
+
"unknownCommandArgument": "الأمان: وسيطة أمر غير معروفة: {key}",
|
|
1332
|
+
"unknown_command_argument": "الأمان: وسيطة أمر غير معروفة: {key}",
|
|
1333
|
+
"unknownConfigKey": "الأمان: مفتاح التكوين غير معروف: {key}",
|
|
1334
|
+
"unknown_config_key": "الأمان: مفتاح التكوين غير معروف: {key}",
|
|
1335
|
+
"securityAlert": "[تنبيه أمني] {timestamp}: {event}",
|
|
1336
|
+
"contentTooLarge": "الأمان: المحتوى كبير جدًا بالنسبة للملف: {validatedPath}",
|
|
1337
|
+
"inputDisallowedCharacters": "الأمان: يحتوي الإدخال على أحرف غير مسموح بها",
|
|
1338
|
+
"unknownCommandArg": "وسيطة أمر غير معروفة",
|
|
1339
|
+
"logMessage": "[حماية {level}] {timestamp}: {event}",
|
|
1340
|
+
"alertMessage": "[تنبيه أمني] {timestamp}: {event}",
|
|
1341
|
+
"securityWarning": "[تحذير أمني] {timestamp}: {event}",
|
|
1342
|
+
"json_parse_error": "الأمان: خطأ في تحليل JSON: {errorMessage}",
|
|
1343
|
+
"file_too_large": "الملف كبير جدًا",
|
|
1344
|
+
"file_read_error": "خطأ في قراءة الملف",
|
|
1345
|
+
"content_too_large_for_file": "المحتوى كبير جدًا بالنسبة للملف",
|
|
1346
|
+
"file_write_error": "خطأ في كتابة الملف",
|
|
1347
|
+
"json_string_too_large": "سلسلة Json كبيرة جدًا",
|
|
1348
|
+
"recursion_detected": "تم الكشف عن العودية في {operation}",
|
|
1349
|
+
"operation_timeout": "مهلة العملية: {operation}",
|
|
1350
|
+
"operation_error": "خطأ في التشغيل {operation}: {error}",
|
|
1351
|
+
"directory_read_error": "خطأ في قراءة الدليل: {errorMessage}",
|
|
1352
|
+
"security_alert": "تنبيه أمني"
|
|
1353
|
+
},
|
|
1354
|
+
"settings-cli": {
|
|
1355
|
+
"settings": {
|
|
1356
|
+
"mainMenu": {
|
|
1357
|
+
"title": "القائمة الرئيسية:",
|
|
1358
|
+
"uiSettings": "إعدادات واجهة المستخدم",
|
|
1359
|
+
"uiSettingsDesc": "خيارات اللغة والموضوع والواجهة",
|
|
1360
|
+
"directorySettings": "إعدادات الدليل",
|
|
1361
|
+
"directorySettingsDesc": "مسارات دليل المصدر والإخراج",
|
|
1362
|
+
"scriptDirectorySettings": "إعدادات دليل البرنامج النصي",
|
|
1363
|
+
"scriptDirectorySettingsDesc": "مسارات الدليل لعمليات البرنامج النصي الفردية",
|
|
1364
|
+
"processingSettings": "إعدادات المعالجة",
|
|
1365
|
+
"processingSettingsDesc": "حجم الدفعة والتزامن والأداء",
|
|
1366
|
+
"advancedSettings": "الإعدادات المتقدمة",
|
|
1367
|
+
"advancedSettingsDesc": "التحقق من الصحة والتسجيل وخيارات الخبراء",
|
|
1368
|
+
"viewAllSettings": "عرض كافة الإعدادات",
|
|
1369
|
+
"viewAllSettingsDesc": "عرض التكوين الحالي",
|
|
1370
|
+
"importExport": "استيراد/تصدير",
|
|
1371
|
+
"importExportDesc": "إعدادات النسخ الاحتياطي والاستعادة",
|
|
1372
|
+
"resetToDefaults": "إعادة التعيين إلى الإعدادات الافتراضية",
|
|
1373
|
+
"resetToDefaultsDesc": "استعادة إعدادات المصنع",
|
|
1374
|
+
"reportBug": "الإبلاغ عن الخطأ",
|
|
1375
|
+
"reportBugDesc": "إرسال تقرير مشكلة على GitHub",
|
|
1376
|
+
"saveChanges": "حفظ التغييرات",
|
|
1377
|
+
"saveChangesDesc": "حفظ الإعدادات الحالية للملف",
|
|
1378
|
+
"updatePackage": "تحديث الحزمة",
|
|
1379
|
+
"updatePackageDesc": "قم بتحديث حزمة أدوات i18n عبر npm",
|
|
1380
|
+
"help": "يساعد",
|
|
1381
|
+
"helpDesc": "عرض معلومات المساعدة التفصيلية",
|
|
1382
|
+
"quit": "يترك",
|
|
1383
|
+
"quitDesc": "الخروج من الإعدادات (مع مطالبة الحفظ إذا لزم الأمر)",
|
|
1384
|
+
"unsavedChangesWarning": "⚠️ لديك تغييرات غير محفوظة",
|
|
1385
|
+
"saveChangesBeforeQuit": "هل تريد حفظ التغييرات قبل الإنهاء؟ (ص / لا):",
|
|
1386
|
+
"selectOption": "حدد خيارًا:",
|
|
1387
|
+
"goodbyeMessage": "شكرًا لك على استخدام مدير إعدادات i18n!"
|
|
1388
|
+
},
|
|
1389
|
+
"goodbyeMessage": "شكرًا لك على استخدام مدير إعدادات i18n!",
|
|
1390
|
+
"relativePathHint": "استخدم المسارات النسبية من هذا الدليل (على سبيل المثال، ./src/i18n/locales)",
|
|
1391
|
+
"currentDirectory": "دليل المشروع الحالي"
|
|
1392
|
+
},
|
|
1393
|
+
"settings_manager": {
|
|
1394
|
+
"error_loading_settings": "❌ خطأ في تحميل الإعدادات:",
|
|
1395
|
+
"error_saving_settings": "❌ خطأ في حفظ الإعدادات:",
|
|
1396
|
+
"error_setting_value": "❌ خطأ في ضبط القيمة:",
|
|
1397
|
+
"missing_required_setting": "❌ الإعداد المطلوب مفقود: {prop}",
|
|
1398
|
+
"invalid_language": "❌ لغة غير صالحة: {language}",
|
|
1399
|
+
"invalid_source_language": "❌ لغة المصدر غير صالحة: {sourceLanguage}",
|
|
1400
|
+
"default_languages_must_be_array": "❌ يجب أن تكون اللغات الافتراضية عبارة عن مصفوفة",
|
|
1401
|
+
"invalid_date_format": "❌ تنسيق التاريخ غير صالح: {dateFormat}. التنسيقات الصالحة: {validFormats}",
|
|
1402
|
+
"invalid_time_format": "❌ تنسيق الوقت غير صالح: {timeFormat}. التنسيقات الصالحة: {validFormats}",
|
|
1403
|
+
"notifications_types_must_be_object": "❌ notifications.types يجب أن تكون كائنًا",
|
|
1404
|
+
"exclude_files_must_be_array": "❌ يجب أن تكون الملفات المستبعدة عبارة عن مصفوفة",
|
|
1405
|
+
"exclude_dirs_must_be_array": "❌ يجب أن يكون ExceptDirs مصفوفة",
|
|
1406
|
+
"include_extensions_must_be_array": "❌ includeExtensions يجب أن يكون مصفوفة",
|
|
1407
|
+
"invalid_batch_size": "❌حجم الدفعة غير صالح. يجب أن يكون رقمًا موجبًا",
|
|
1408
|
+
"invalid_max_concurrent_files": "❌ الحد الأقصى للملفات المتزامنة غير صالح. يجب أن يكون رقمًا موجبًا",
|
|
1409
|
+
"invalid_sizing_threshold": "❌ حد التحجيم غير صالح. يجب أن يكون رقمًا موجبًا",
|
|
1410
|
+
"invalid_timeout": "❌ المهلة غير صالحة. يجب أن يكون على الأقل 1000 مللي ثانية",
|
|
1411
|
+
"invalid_sizing_format": "❌ تنسيق المقاسات غير صالح: {sizingFormat}. التنسيقات الصالحة: {validFormats}",
|
|
1412
|
+
"error_validating_settings": "❌ خطأ في التحقق من الإعدادات:",
|
|
1413
|
+
"backup_created": "📋 تم إنشاء النسخة الاحتياطية: {backupPath}",
|
|
1414
|
+
"error_creating_backup": "❌ خطأ في إنشاء نسخة احتياطية:",
|
|
1415
|
+
"language_not_supported": "لغة '{language}\"غير مدعوم. متاح: {availableLanguages}",
|
|
1416
|
+
"ui_language_set": "🌍 تم ضبط لغة واجهة المستخدم على: {language}"
|
|
1417
|
+
}
|
|
1418
|
+
},
|
|
1419
|
+
"settings": {
|
|
1420
|
+
"title": "⚙️ إدارة الإعدادات",
|
|
1421
|
+
"separator": "============================================================",
|
|
1422
|
+
"goodbyeMessage": "شكرًا لك على استخدام مدير إعدادات i18ntk!",
|
|
1423
|
+
"relativePathHint": "استخدم المسارات النسبية من هذا الدليل (على سبيل المثال، ./src/i18n/locales)",
|
|
1424
|
+
"currentDirectory": "دليل المشروع الحالي",
|
|
1425
|
+
"startingSettings": "إعدادات البداية:",
|
|
1426
|
+
"pin": "PIN:",
|
|
1427
|
+
"reportBug": {
|
|
1428
|
+
"title": "الإبلاغ عن الخطأ",
|
|
1429
|
+
"description": "الإبلاغ عن أي مشاكل أو أخطاء تواجهها",
|
|
1430
|
+
"guidance": "للإبلاغ عن المشكلات بشكل فعال:",
|
|
1431
|
+
"checkLogs": "1. تحقق من سجلات التصحيح في دليل المشروع الخاص بك",
|
|
1432
|
+
"documentIssue": "2. قم بتوثيق المشكلة بخطوات إعادة الإنتاج",
|
|
1433
|
+
"contactSupport": "3. اتصل بمسؤول النظام أو فريق الدعم",
|
|
1434
|
+
"completed": "تم عرض إرشادات الإبلاغ عن الأخطاء",
|
|
1435
|
+
"instructions": "اتبع التعليمات المذكورة أعلاه للإبلاغ عن الخطأ."
|
|
1436
|
+
},
|
|
1437
|
+
"mainMenu": {
|
|
1438
|
+
"title": "القائمة الرئيسية:",
|
|
1439
|
+
"uiSettings": "إعدادات واجهة المستخدم",
|
|
1440
|
+
"uiSettingsDesc": "خيارات اللغة والموضوع والواجهة",
|
|
1441
|
+
"directorySettings": "إعدادات الدليل",
|
|
1442
|
+
"directorySettingsDesc": "مسارات دليل المصدر والإخراج",
|
|
1443
|
+
"processingSettings": "إعدادات المعالجة",
|
|
1444
|
+
"processingSettingsDesc": "حجم الدفعة والتزامن والأداء",
|
|
1445
|
+
"advancedSettings": "الإعدادات المتقدمة",
|
|
1446
|
+
"advancedSettingsDesc": "التحقق من الصحة، والتسجيل، وخيارات الخبراء",
|
|
1447
|
+
"viewAllSettings": "عرض كافة الإعدادات",
|
|
1448
|
+
"viewAllSettingsDesc": "عرض التكوين الحالي",
|
|
1449
|
+
"importExport": "استيراد/تصدير",
|
|
1450
|
+
"updatePackage": "تحديث الحزمة",
|
|
1451
|
+
"updatePackageDesc": "قم بتحديث حزمة أدوات i18n عبر npm",
|
|
1452
|
+
"importExportDesc": "إعدادات النسخ الاحتياطي والاستعادة",
|
|
1453
|
+
"resetToDefaults": "إعادة التعيين إلى الإعدادات الافتراضية",
|
|
1454
|
+
"resetToDefaultsDesc": "استعادة إعدادات المصنع",
|
|
1455
|
+
"reportBug": "الإبلاغ عن الخطأ",
|
|
1456
|
+
"reportBugDesc": "إرسال تقرير مشكلة على GitHub",
|
|
1457
|
+
"saveChanges": "حفظ التغييرات",
|
|
1458
|
+
"saveChangesDesc": "حفظ الإعدادات الحالية للملف",
|
|
1459
|
+
"help": "يساعد",
|
|
1460
|
+
"helpDesc": "عرض معلومات المساعدة التفصيلية",
|
|
1461
|
+
"quit": "يترك",
|
|
1462
|
+
"quitDesc": "الخروج من الإعدادات (مع مطالبة الحفظ إذا لزم الأمر)",
|
|
1463
|
+
"unsavedChangesWarning": "⚠️ لديك تغييرات غير محفوظة",
|
|
1464
|
+
"saveChangesBeforeQuit": "هل تريد حفظ التغييرات قبل الإنهاء؟ (ص / لا):",
|
|
1465
|
+
"selectOption": "حدد خيارًا:",
|
|
1466
|
+
"goodbyeMessage": "شكرًا لك على استخدام مدير إعدادات i18n!",
|
|
1467
|
+
"selectSettingPrompt": "حدد إعدادًا لتحريره (أو \"b\" للرجوع):",
|
|
1468
|
+
"enterNewValue": "أدخل قيمة جديدة:",
|
|
1469
|
+
"updatedSuccessfully": "{setting} تم التحديث بنجاح!",
|
|
1470
|
+
"scriptDirectorySettings": "إعدادات دليل البرنامج النصي",
|
|
1471
|
+
"scriptDirectoryDesc": "تحديد الدلائل المخصصة لكل برنامج نصي",
|
|
1472
|
+
"scriptDirectorySettingsDesc": "يمكنك تعيين أدلة مخصصة لكل برنامج نصي. إذا لم يتم ضبطها، سيتم استخدام الإعدادات العامة.",
|
|
1473
|
+
"currentDirectory": "دليل المشروع الحالي",
|
|
1474
|
+
"securitySettings": "إعدادات الأمان",
|
|
1475
|
+
"securitySettingsDesc": "رقم التعريف الشخصي للمشرف وخيارات الأمان الأخرى",
|
|
1476
|
+
"backupSettings": "إعدادات النسخ الاحتياطي",
|
|
1477
|
+
"backupSettingsDesc": "النسخ الاحتياطي واستعادة إعدادات التكوين",
|
|
1478
|
+
"autoTranslate": "ترجمة تلقائية",
|
|
1479
|
+
"autoTranslateDesc": "ضبط معالجة العناصر النائبة والتزامن والتجميع والتقارير"
|
|
1480
|
+
},
|
|
1481
|
+
"updatePackage": {
|
|
1482
|
+
"title": "تحديث الحزمة",
|
|
1483
|
+
"description": "قم بتحديث حزمة أدوات i18n عبر npm",
|
|
1484
|
+
"command": "تحديث npm i18ntk -g",
|
|
1485
|
+
"success": "تم التحديث بنجاح.",
|
|
1486
|
+
"failed": "فشل التحديث.",
|
|
1487
|
+
"prompt": "هل تريد تحديث الحزمة الآن؟ (ص / لا):",
|
|
1488
|
+
"promptDesc": "ملاحظة: سيؤدي هذا إلى تحديث حزمة i18ntk إلى الإصدار الأحدث.",
|
|
1489
|
+
"confirm": "ذ",
|
|
1490
|
+
"cancelled": "تم إلغاء التحديث.",
|
|
1491
|
+
"error": "فشل تحديث الحزمة",
|
|
1492
|
+
"updating": "جارٍ تحديث الحزمة..."
|
|
1493
|
+
},
|
|
1494
|
+
"admin": {
|
|
1495
|
+
"selectOption": "حدد الخيار:",
|
|
1496
|
+
"updateSuccess": "تم تحديث رقم التعريف الشخصي للمشرف بنجاح!",
|
|
1497
|
+
"updateFailed": "فشل تحديث رقم التعريف الشخصي للمشرف.",
|
|
1498
|
+
"protectionRemoved": "تمت إزالة حماية رقم التعريف الشخصي للمشرف.",
|
|
1499
|
+
"configSuccess": "تم تكوين رقم التعريف الشخصي للمشرف بنجاح!",
|
|
1500
|
+
"configFailed": "فشل تكوين رقم التعريف الشخصي للمشرف.",
|
|
1501
|
+
"setupPinPrompt": "هل ترغب في إعداد رقم PIN للمشرف؟ (ص / لا):",
|
|
1502
|
+
"pinUpdatedSuccess": "تم تحديث رقم التعريف الشخصي للمشرف بنجاح!",
|
|
1503
|
+
"pinUpdatedFailed": "فشل تحديث رقم التعريف الشخصي للمشرف.",
|
|
1504
|
+
"pinRemoved": "تمت إزالة حماية رقم التعريف الشخصي للمشرف.",
|
|
1505
|
+
"pinConfiguredSuccess": "تم تكوين رقم التعريف الشخصي للمشرف بنجاح!",
|
|
1506
|
+
"pinConfiguredFailed": "فشل تكوين رقم التعريف الشخصي للمشرف.",
|
|
1507
|
+
"accessDenied": "❌ تم رفض الوصول. العودة إلى القائمة.",
|
|
1508
|
+
"setupPin": "🔐 إعداد رقم التعريف الشخصي للمسؤول...",
|
|
1509
|
+
"setupFailed": "❌ فشل في إعداد رقم التعريف الشخصي للمشرف. لم يتغير الإعداد.",
|
|
1510
|
+
"pinConfigured": "📌 تم تكوين رقم التعريف الشخصي للمشرف حاليًا.",
|
|
1511
|
+
"options": "خيارات:",
|
|
1512
|
+
"changePin": "1) تغيير رقم التعريف الشخصي الموجود",
|
|
1513
|
+
"removePin": "2) إزالة حماية PIN",
|
|
1514
|
+
"cancel": "3) إلغاء",
|
|
1515
|
+
"verifyCurrentPin": "🔐 تحقق من رقم التعريف الشخصي الحالي أولاً:",
|
|
1516
|
+
"settingNewPin": "🔄 إعداد رقم التعريف الشخصي الجديد...",
|
|
1517
|
+
"verifyToRemove": "🔐 تحقق من رقم التعريف الشخصي الحالي لإزالة الحماية:",
|
|
1518
|
+
"noPinConfigured": "🔓 لم يتم تكوين رقم PIN للمشرف حاليًا.",
|
|
1519
|
+
"pinBenefits": "سيؤدي إعداد رقم التعريف الشخصي للمشرف إلى إضافة الأمان لـ:",
|
|
1520
|
+
"benefitSecurity": "• تغيير إعدادات الأمان",
|
|
1521
|
+
"benefitAdvanced": "• تعديل التكوينات المتقدمة",
|
|
1522
|
+
"benefitDebug": "• الوصول إلى أدوات التصحيح",
|
|
1523
|
+
"benefitReset": "• إعادة ضبط الإعدادات",
|
|
1524
|
+
"setupCancelled": "⏭️ تم إلغاء إعداد رقم التعريف الشخصي للمشرف.",
|
|
1525
|
+
"operationCancelled": "❌ تم إلغاء العملية.",
|
|
1526
|
+
"startingSettings": "🎛️ بدء تشغيل الإعدادات CLI...",
|
|
1527
|
+
"authRequired": "🔒 مصادقة المسؤول مطلوبة من أجل: {label}",
|
|
1528
|
+
"pinSetupTitle": "إعداد رقم التعريف الشخصي للمسؤول",
|
|
1529
|
+
"browserOpenFailed": "لا يمكن فتح المتصفح تلقائيا.",
|
|
1530
|
+
"manualVisit": "يرجى زيارة الموقع يدويًا: {url}",
|
|
1531
|
+
"browserOpened": "✅تم فتح المتصفح بنجاح!"
|
|
1532
|
+
},
|
|
1533
|
+
"importExport": {
|
|
1534
|
+
"title": "إعدادات الاستيراد/التصدير",
|
|
1535
|
+
"export": "إعدادات التصدير",
|
|
1536
|
+
"import": "إعدادات الاستيراد",
|
|
1537
|
+
"backup": "إنشاء نسخة احتياطية",
|
|
1538
|
+
"enterFilename": "أدخل اسم الملف (أو اضغط على Enter افتراضيًا):",
|
|
1539
|
+
"exportSuccess": "تم تصدير الإعدادات إلى {file}",
|
|
1540
|
+
"exportFailed": "فشل تصدير الإعدادات: {error}",
|
|
1541
|
+
"importFilename": "أدخل اسم الملف للاستيراد:",
|
|
1542
|
+
"fileNotFound": "لم يتم العثور على الملف.",
|
|
1543
|
+
"invalidFormat": "تنسيق ملف الإعدادات غير صالح.",
|
|
1544
|
+
"confirmImport": "سيؤدي هذا إلى استبدال كافة الإعدادات الحالية. يكمل؟ (ص / لا):",
|
|
1545
|
+
"importSuccess": "تم استيراد الإعدادات بنجاح.",
|
|
1546
|
+
"importFailed": "فشل استيراد الإعدادات: {error}",
|
|
1547
|
+
"backupSuccess": "تم إنشاء النسخة الاحتياطية: {file}",
|
|
1548
|
+
"backupFailed": "فشل في إنشاء نسخة احتياطية: {error}",
|
|
1549
|
+
"exportFilenamePrompt": "أدخل اسم ملف التصدير:",
|
|
1550
|
+
"importConfirm": "هل تريد استيراد ملف الإعدادات هذا؟ (ص / لا):",
|
|
1551
|
+
"importFilenamePrompt": "أدخل اسم ملف الاستيراد:",
|
|
1552
|
+
"manageBackups": "إدارة النسخ الاحتياطية",
|
|
1553
|
+
"restore": "استعادة الإعدادات"
|
|
1554
|
+
},
|
|
1555
|
+
"selectOption": "حدد خيارًا:",
|
|
1556
|
+
"resetToDefaultsTitle": "إعادة ضبط الإعدادات على الإعدادات الافتراضية",
|
|
1557
|
+
"resetWarning1": "⚠️ سيؤدي هذا إلى إعادة تعيين جميع الإعدادات إلى قيمها الافتراضية.",
|
|
1558
|
+
"resetWarning2": "لا يمكن التراجع عن هذا الإجراء.",
|
|
1559
|
+
"resetConfirm": "هل أنت متأكد أنك تريد الاستمرار؟ (ص / لا):",
|
|
1560
|
+
"resetSuccess": "تمت إعادة ضبط الإعدادات على الإعدادات الافتراضية بنجاح.",
|
|
1561
|
+
"resetFailed": "فشل في إعادة ضبط الإعدادات: {error}",
|
|
1562
|
+
"resetDone": "تمت إعادة ضبط الإعدادات على الإعدادات الافتراضية بنجاح.",
|
|
1563
|
+
"resetScriptDirsDone": "تمت إعادة تعيين أدلة البرنامج النصي إلى إعدادات النظام الافتراضية بنجاح.",
|
|
1564
|
+
"saveSuccess": "تم حفظ الإعدادات بنجاح.",
|
|
1565
|
+
"saveFailed": "فشل في حفظ الإعدادات.",
|
|
1566
|
+
"saveError": "تم توفير إعدادات غير صالحة",
|
|
1567
|
+
"pressEnter": "اضغط على Enter للمتابعة...",
|
|
1568
|
+
"initFailed": "فشل في تهيئة الإعدادات: {error}",
|
|
1569
|
+
"invalidValueFormat": "تنسيق القيمة غير صالح.",
|
|
1570
|
+
"help": {
|
|
1571
|
+
"title": "تعليمات الإعدادات",
|
|
1572
|
+
"navigationTitle": "ملاحة",
|
|
1573
|
+
"navigation1": "1. الإعدادات العامة - تكوين لغة واجهة المستخدم والموضوع والتفضيلات الأساسية",
|
|
1574
|
+
"navigation2": "2. إعدادات الدليل - قم بتعيين أدلة المصدر والإخراج لملفات الترجمة",
|
|
1575
|
+
"navigation3": "3. إعدادات المعالجة - تكوين خيارات حجم الدفعة والتزامن والأداء",
|
|
1576
|
+
"navigation4": "4. الإعدادات المتقدمة - التحقق من صحة الوصول، والتسجيل، وخيارات التكوين المتخصصة",
|
|
1577
|
+
"categoriesTitle": "فئات الإعدادات",
|
|
1578
|
+
"categoryUI": "• إعدادات واجهة المستخدم: لغة الواجهة وموضوع الألوان وتفضيلات العرض",
|
|
1579
|
+
"categoryDirectory": "• إعدادات الدليل: موقع الملفات المصدر وأدلة تقرير الإخراج",
|
|
1580
|
+
"categoryProcessing": "• إعدادات المعالجة: المعالجة المجمعة، وحدود الملفات، وضبط الأداء",
|
|
1581
|
+
"categoryAdvanced": "• الإعدادات المتقدمة: وضع التصحيح، وتسجيل التدقيق، وخيارات الأمان",
|
|
1582
|
+
"envVarsTitle": "متغيرات البيئة",
|
|
1583
|
+
"envVar1": "• I18N_SOURCE_DIR: تجاوز مسار دليل المصدر الافتراضي",
|
|
1584
|
+
"envVar2": "• I18N_OUTPUT_DIR: تجاوز مسار دليل الإخراج الافتراضي",
|
|
1585
|
+
"envVar3": "• I18N_DEBUG: تمكين وضع التصحيح (صواب/خطأ)",
|
|
1586
|
+
"cliUsageTitle": "أمثلة على استخدام واجهة سطر الأوامر (CLI).",
|
|
1587
|
+
"cliUsage1": "• npx i18ntk --settings: افتح قائمة الإعدادات التفاعلية",
|
|
1588
|
+
"cliUsage2": "• npx i18ntk --settings --lang de: فتح الإعدادات باللغة الألمانية",
|
|
1589
|
+
"cliUsage3": "• npx i18ntk --reset-settings: إعادة ضبط كافة الإعدادات على الإعدادات الافتراضية",
|
|
1590
|
+
"navigation": "استخدم مفاتيح الأرقام لتحديد الخيارات، \"ب\" للعودة",
|
|
1591
|
+
"editing": "أدخل قيمًا جديدة عندما يُطلب منك ذلك، أو اضغط على Enter لتبقى محدثة",
|
|
1592
|
+
"saving": "استخدم 's' لحفظ التغييرات قبل الخروج",
|
|
1593
|
+
"reset": "استخدم الخيار 7 لإعادة ضبط كافة الإعدادات على الإعدادات الافتراضية"
|
|
1594
|
+
},
|
|
1595
|
+
"categories": {
|
|
1596
|
+
"uiSettings": "إعدادات واجهة المستخدم",
|
|
1597
|
+
"directorySettings": "إعدادات الدليل",
|
|
1598
|
+
"processingSettings": "إعدادات المعالجة",
|
|
1599
|
+
"advancedSettings": "الإعدادات المتقدمة",
|
|
1600
|
+
"scriptDirectorySettings": "إعدادات دليل البرنامج النصي",
|
|
1601
|
+
"securitySettings": "إعدادات الأمان",
|
|
1602
|
+
"autoTranslate": "إعدادات الترجمة التلقائية"
|
|
1603
|
+
},
|
|
1604
|
+
"security": {
|
|
1605
|
+
"title": "🔐 إعدادات الأمان",
|
|
1606
|
+
"description": "قم بتكوين حماية PIN للمشرف وخيارات الأمان",
|
|
1607
|
+
"currentPin": "رقم التعريف الشخصي الحالي:",
|
|
1608
|
+
"pinConfigured": "✅ تم تكوينه",
|
|
1609
|
+
"pinNotConfigured": "❌ غير مهيأة",
|
|
1610
|
+
"pinDisplay": "عرض رقم التعريف الشخصي:",
|
|
1611
|
+
"menu": {
|
|
1612
|
+
"enableDisable": "1) تمكين/تعطيل رقم التعريف الشخصي للمسؤول",
|
|
1613
|
+
"setupChange": "2) إعداد/تغيير رقم التعريف الشخصي للمسؤول",
|
|
1614
|
+
"sessionTimeout": "3) مهلة الجلسة",
|
|
1615
|
+
"maxAttempts": "4) ماكس المحاولات الفاشلة",
|
|
1616
|
+
"lockoutDuration": "5) مدة الإغلاق",
|
|
1617
|
+
"back": "ب) العودة إلى القائمة الرئيسية"
|
|
1618
|
+
},
|
|
1619
|
+
"prompts": {
|
|
1620
|
+
"enablePin": "هل تريد تفعيل حماية رقم التعريف الشخصي للمشرف؟ (ص / لا):",
|
|
1621
|
+
"disablePin": "هل تريد تعطيل حماية رقم التعريف الشخصي للمشرف؟ (ص / لا):",
|
|
1622
|
+
"enterTimeout": "أدخل مهلة الجلسة (بالدقائق):",
|
|
1623
|
+
"enterMaxAttempts": "أدخل الحد الأقصى للمحاولات الفاشلة:",
|
|
1624
|
+
"enterLockoutDuration": "أدخل مدة التأمين (بالدقائق):"
|
|
1625
|
+
},
|
|
1626
|
+
"messages": {
|
|
1627
|
+
"pinEnabled": "تم تمكين حماية رقم التعريف الشخصي للمشرف",
|
|
1628
|
+
"pinDisabled": "تم تعطيل حماية PIN للمشرف",
|
|
1629
|
+
"timeoutUpdated": "تم تحديث مهلة الجلسة إلى {minutes} دقائق",
|
|
1630
|
+
"maxAttemptsUpdated": "تم تحديث الحد الأقصى للمحاولات الفاشلة إلى {attempts}",
|
|
1631
|
+
"lockoutDurationUpdated": "تم تحديث مدة التأمين إلى {minutes} دقائق"
|
|
1632
|
+
}
|
|
1633
|
+
},
|
|
1634
|
+
"fields": {
|
|
1635
|
+
"backup.enabled": {
|
|
1636
|
+
"label": "Enable Backup",
|
|
1637
|
+
"description": "Enable automatic backup of settings",
|
|
1638
|
+
"help": "Enable/disable backup feature"
|
|
1639
|
+
},
|
|
1640
|
+
"backup.singleFileMode": {
|
|
1641
|
+
"label": "Single File Mode",
|
|
1642
|
+
"description": "Use single file for backups",
|
|
1643
|
+
"help": "Backup settings in a single file"
|
|
1644
|
+
},
|
|
1645
|
+
"backup.singleBackupFile": {
|
|
1646
|
+
"label": "Backup File Path",
|
|
1647
|
+
"description": "Path to the backup file",
|
|
1648
|
+
"help": "Path to the single backup file"
|
|
1649
|
+
},
|
|
1650
|
+
"backup.retentionDays": {
|
|
1651
|
+
"label": "Retention Period",
|
|
1652
|
+
"description": "Days to keep backup files",
|
|
1653
|
+
"help": "Number of days to retain old backup files"
|
|
1654
|
+
},
|
|
1655
|
+
"backup.maxBackups": {
|
|
1656
|
+
"label": "Maximum Backups",
|
|
1657
|
+
"description": "Maximum backup files to keep",
|
|
1658
|
+
"help": "Maximum number of backup files to keep"
|
|
1659
|
+
},
|
|
1660
|
+
"backup.confirm": {
|
|
1661
|
+
"label": "Confirm Backup",
|
|
1662
|
+
"description": "Require confirmation for backup operations",
|
|
1663
|
+
"help": "Confirm backup operation"
|
|
1664
|
+
},
|
|
1665
|
+
"i18nDir": {
|
|
1666
|
+
"label": "دليل I18n",
|
|
1667
|
+
"description": "الدليل الذي يحتوي على ملفات الترجمة",
|
|
1668
|
+
"current": "حاضِر: {value}",
|
|
1669
|
+
"help": "المسار إلى الدليل مع ملفات الترجمة"
|
|
1670
|
+
},
|
|
1671
|
+
"projectRoot": {
|
|
1672
|
+
"label": "جذر المشروع",
|
|
1673
|
+
"description": "الدليل الجذري للمشروع",
|
|
1674
|
+
"current": "حاضِر: {value}",
|
|
1675
|
+
"help": "المسار إلى الدليل الجذر للمشروع"
|
|
1676
|
+
},
|
|
1677
|
+
"checkUsage": {
|
|
1678
|
+
"usage_analysis_failed": "فشل تحليل الاستخدام",
|
|
1679
|
+
"usage_analysis_success": "تم تحليل الاستخدام بنجاح",
|
|
1680
|
+
"usage_analysis_complete": "اكتمل تحليل الاستخدام",
|
|
1681
|
+
"usage_analysis_in_progress": "تحليل الاستخدام قيد التقدم",
|
|
1682
|
+
"usage_analysis_started": "بدأ تحليل الاستخدام",
|
|
1683
|
+
"usage_analysis_skipped": "تم تخطي تحليل الاستخدام"
|
|
1684
|
+
},
|
|
1685
|
+
"language": {
|
|
1686
|
+
"label": "لغة الواجهة",
|
|
1687
|
+
"description": "لغة واجهة المستخدم",
|
|
1688
|
+
"current": "حاضِر: {value}",
|
|
1689
|
+
"help": "اختر لغة الواجهة المفضلة لديك"
|
|
1690
|
+
},
|
|
1691
|
+
"scriptDirectories": {
|
|
1692
|
+
"analyzeLabel": "تحليل أدلة البرنامج النصي",
|
|
1693
|
+
"analyzeHelp": "تحليل أدلة البرامج النصية للمشكلات",
|
|
1694
|
+
"completeLabel": "أدلة الإعداد كاملة",
|
|
1695
|
+
"initLabel": "تهيئة أدلة البرنامج النصي",
|
|
1696
|
+
"manageLabel": "إدارة أدلة البرامج النصية",
|
|
1697
|
+
"sizingLabel": "تحجيم أدلة البرنامج النصي",
|
|
1698
|
+
"summaryLabel": "ملخص تقرير الدلائل",
|
|
1699
|
+
"usageLabel": "أدلة تقارير الاستخدام",
|
|
1700
|
+
"validateLabel": "التحقق من صحة أدلة البرنامج النصي"
|
|
1701
|
+
},
|
|
1702
|
+
"theme": {
|
|
1703
|
+
"label": "موضوع اللون",
|
|
1704
|
+
"description": "تفضيل موضوع واجهة المستخدم",
|
|
1705
|
+
"current": "حاضِر: {value}",
|
|
1706
|
+
"help": "اختر بين السمات الفاتحة والداكنة"
|
|
1707
|
+
},
|
|
1708
|
+
"dateFormat": {
|
|
1709
|
+
"label": "تنسيق التاريخ",
|
|
1710
|
+
"description": "تنسيق لعرض التواريخ",
|
|
1711
|
+
"current": "حاضِر: {value}",
|
|
1712
|
+
"help": "اختر كيفية عرض التواريخ في التقارير"
|
|
1713
|
+
},
|
|
1714
|
+
"notifications": {
|
|
1715
|
+
"enabled": {
|
|
1716
|
+
"label": "تمكين الإخطارات",
|
|
1717
|
+
"description": "إظهار إشعارات سطح المكتب",
|
|
1718
|
+
"current": "حاضِر: {value}",
|
|
1719
|
+
"help": "تمكين إشعارات سطح المكتب للعمليات المكتملة"
|
|
1720
|
+
}
|
|
1721
|
+
},
|
|
1722
|
+
"sourceDir": {
|
|
1723
|
+
"label": "دليل المصدر",
|
|
1724
|
+
"description": "الدليل الذي يحتوي على ملفات الترجمة",
|
|
1725
|
+
"current": "حاضِر: {value}",
|
|
1726
|
+
"help": "المسار إلى الدليل مع ملفات الترجمة المصدر"
|
|
1727
|
+
},
|
|
1728
|
+
"sourceLanguage": {
|
|
1729
|
+
"label": "لغة المصدر",
|
|
1730
|
+
"description": "اللغة الأساسية للترجمات",
|
|
1731
|
+
"current": "حاضِر: {value}",
|
|
1732
|
+
"help": "اللغة الأساسية المستخدمة كمصدر للترجمات"
|
|
1733
|
+
},
|
|
1734
|
+
"outputDir": {
|
|
1735
|
+
"label": "دليل الإخراج",
|
|
1736
|
+
"description": "دليل التقارير التي تم إنشاؤها",
|
|
1737
|
+
"current": "حاضِر: {value}",
|
|
1738
|
+
"help": "حيث سيتم حفظ التقارير والملفات المعالجة"
|
|
1739
|
+
},
|
|
1740
|
+
"batchSize": {
|
|
1741
|
+
"label": "حجم الدفعة",
|
|
1742
|
+
"description": "عدد العناصر التي تتم معالجتها لكل دفعة",
|
|
1743
|
+
"current": "حاضِر: {value}",
|
|
1744
|
+
"help": "كم عدد الملفات التي سيتم معالجتها في كل دفعة"
|
|
1745
|
+
},
|
|
1746
|
+
"maxConcurrentFiles": {
|
|
1747
|
+
"label": "ماكس الملفات المتزامنة",
|
|
1748
|
+
"description": "معالجة الحد الأقصى من الملفات في وقت واحد",
|
|
1749
|
+
"current": "حاضِر: {value}",
|
|
1750
|
+
"help": "الحد الأقصى لعدد الملفات التي يمكن معالجتها في نفس الوقت"
|
|
1751
|
+
},
|
|
1752
|
+
"sizingThreshold": {
|
|
1753
|
+
"label": "عتبة الحجم (%)",
|
|
1754
|
+
"description": "عتبة تحذيرات اختلاف الحجم",
|
|
1755
|
+
"current": "حاضِر: {value}%",
|
|
1756
|
+
"help": "عتبة النسبة المئوية لاكتشاف عدم تطابق الحجم"
|
|
1757
|
+
},
|
|
1758
|
+
"strictMode": {
|
|
1759
|
+
"label": "وضع التحقق الصارم",
|
|
1760
|
+
"description": "تمكين وضع التحقق الصارم",
|
|
1761
|
+
"current": "حاضِر: {value}",
|
|
1762
|
+
"help": "تمكين التحقق الصارم من صحة ملفات الترجمة"
|
|
1763
|
+
},
|
|
1764
|
+
"enableAuditLog": {
|
|
1765
|
+
"label": "تمكين سجل التدقيق",
|
|
1766
|
+
"description": "تتبع جميع تغييرات الترجمة",
|
|
1767
|
+
"current": "حاضِر: {value}",
|
|
1768
|
+
"help": "تسجيل جميع التغييرات التي تم إجراؤها على ملفات الترجمة"
|
|
1769
|
+
},
|
|
1770
|
+
"backupBeforeChanges": {
|
|
1771
|
+
"label": "النسخ الاحتياطي التلقائي",
|
|
1772
|
+
"description": "إنشاء نسخ احتياطية قبل التعديلات",
|
|
1773
|
+
"current": "حاضِر: {value}",
|
|
1774
|
+
"help": "إنشاء نسخ احتياطية تلقائيًا قبل إجراء التغييرات"
|
|
1775
|
+
},
|
|
1776
|
+
"advanced_maxConcurrentFiles": {
|
|
1777
|
+
"label": "ماكس الملفات المتزامنة",
|
|
1778
|
+
"description": "معالجة الحد الأقصى من الملفات في وقت واحد",
|
|
1779
|
+
"current": "حاضِر: {value}",
|
|
1780
|
+
"help": "الحد الأقصى لعدد الملفات التي يمكن معالجتها في نفس الوقت"
|
|
1781
|
+
},
|
|
1782
|
+
"advanced_strictMode": {
|
|
1783
|
+
"label": "وضع التحقق الصارم",
|
|
1784
|
+
"description": "تمكين وضع التحقق الصارم",
|
|
1785
|
+
"current": "حاضِر: {value}",
|
|
1786
|
+
"help": "تمكين التحقق الصارم من صحة ملفات الترجمة"
|
|
1787
|
+
},
|
|
1788
|
+
"adminPinEnabled": {
|
|
1789
|
+
"label": "حماية رقم التعريف الشخصي للمشرف",
|
|
1790
|
+
"description": "تمكين مصادقة رقم التعريف الشخصي للمشرف للإعدادات الحساسة",
|
|
1791
|
+
"current": "حاضِر: {value}",
|
|
1792
|
+
"help": "يتطلب رقم التعريف الشخصي للمشرف لتغيير الأمان والإعدادات المتقدمة"
|
|
1793
|
+
},
|
|
1794
|
+
"sessionTimeout": {
|
|
1795
|
+
"label": "مهلة الجلسة",
|
|
1796
|
+
"description": "مهلة جلسة المشرف بالدقائق",
|
|
1797
|
+
"current": "حاضِر: {value} دقائق",
|
|
1798
|
+
"help": "المدة التي تظل فيها جلسات الإدارة نشطة قبل طلب إعادة المصادقة"
|
|
1799
|
+
},
|
|
1800
|
+
"maxFailedAttempts": {
|
|
1801
|
+
"label": "ماكس المحاولات الفاشلة",
|
|
1802
|
+
"description": "الحد الأقصى لمحاولات إدخال رقم التعريف الشخصي (PIN) الفاشلة قبل القفل",
|
|
1803
|
+
"current": "حاضِر: {value} محاولات",
|
|
1804
|
+
"help": "عدد محاولات إدخال رقم التعريف الشخصي الفاشلة المسموح بها قبل الإغلاق المؤقت"
|
|
1805
|
+
},
|
|
1806
|
+
"lockoutDuration": {
|
|
1807
|
+
"label": "مدة القفل",
|
|
1808
|
+
"description": "مدة الإغلاق بعد المحاولات الفاشلة",
|
|
1809
|
+
"current": "حاضِر: {value} دقائق",
|
|
1810
|
+
"help": "المدة التي يظل فيها النظام مغلقًا بعد الحد الأقصى من المحاولات الفاشلة"
|
|
1811
|
+
},
|
|
1812
|
+
"scriptDirectories_analyze": {
|
|
1813
|
+
"label": "تحليل أدلة البرنامج النصي",
|
|
1814
|
+
"description": "الدلائل المخصصة لتحليل البرنامج النصي",
|
|
1815
|
+
"current": "حاضِر: {value}",
|
|
1816
|
+
"help": "حدد دليل المصدر المخصص للبرنامج النصي للتحليل. اتركه فارغًا لاستخدام الإعداد العام."
|
|
1817
|
+
},
|
|
1818
|
+
"scriptDirectories_complete": {
|
|
1819
|
+
"label": "أدلة الإعداد كاملة",
|
|
1820
|
+
"description": "الدلائل المخصصة للبرنامج النصي للإعداد الكامل",
|
|
1821
|
+
"current": "حاضِر: {value}",
|
|
1822
|
+
"help": "حدد دليل المصدر المخصص للبرنامج النصي للإعداد الكامل. اتركه فارغًا لاستخدام الإعداد العام."
|
|
1823
|
+
},
|
|
1824
|
+
"scriptDirectories_init": {
|
|
1825
|
+
"label": "تهيئة أدلة البرنامج النصي",
|
|
1826
|
+
"description": "الدلائل المخصصة لتهيئة البرنامج النصي",
|
|
1827
|
+
"current": "حاضِر: {value}",
|
|
1828
|
+
"help": "حدد دليل المصدر المخصص للبرنامج النصي للتهيئة. اتركه فارغًا لاستخدام الإعداد العام."
|
|
1829
|
+
},
|
|
1830
|
+
"scriptDirectories_manage": {
|
|
1831
|
+
"label": "إدارة أدلة البرامج النصية",
|
|
1832
|
+
"description": "الدلائل المخصصة لإدارة البرنامج النصي",
|
|
1833
|
+
"current": "حاضِر: {value}",
|
|
1834
|
+
"help": "حدد دليل المصدر المخصص للبرنامج النصي للإدارة. اتركه فارغًا لاستخدام الإعداد العام."
|
|
1835
|
+
},
|
|
1836
|
+
"scriptDirectories_sizing": {
|
|
1837
|
+
"label": "تحجيم أدلة البرنامج النصي",
|
|
1838
|
+
"description": "الدلائل المخصصة لتحجيم البرنامج النصي",
|
|
1839
|
+
"current": "حاضِر: {value}",
|
|
1840
|
+
"help": "حدد دليل المصدر المخصص للبرنامج النصي للتحجيم. اتركه فارغًا لاستخدام الإعداد العام."
|
|
1841
|
+
},
|
|
1842
|
+
"scriptDirectories_summary": {
|
|
1843
|
+
"label": "ملخص تقرير الدلائل",
|
|
1844
|
+
"description": "الدلائل المخصصة للبرنامج النصي للتقرير الموجز",
|
|
1845
|
+
"current": "حاضِر: {value}",
|
|
1846
|
+
"help": "حدد دليل المصدر المخصص للبرنامج النصي للتقرير الموجز. اتركه فارغًا لاستخدام الإعداد العام."
|
|
1847
|
+
},
|
|
1848
|
+
"scriptDirectories_usage": {
|
|
1849
|
+
"label": "أدلة تقارير الاستخدام",
|
|
1850
|
+
"description": "الدلائل المخصصة للبرنامج النصي لتقرير الاستخدام",
|
|
1851
|
+
"current": "حاضِر: {value}",
|
|
1852
|
+
"help": "حدد دليل المصدر المخصص للبرنامج النصي لتقرير الاستخدام. اتركه فارغًا لاستخدام الإعداد العام."
|
|
1853
|
+
},
|
|
1854
|
+
"scriptDirectories_validate": {
|
|
1855
|
+
"label": "التحقق من صحة أدلة البرنامج النصي",
|
|
1856
|
+
"description": "الدلائل المخصصة للتحقق من صحة البرنامج النصي",
|
|
1857
|
+
"current": "حاضِر: {value}",
|
|
1858
|
+
"help": "حدد دليل المصدر المخصص للبرنامج النصي للتحقق. اتركه فارغًا لاستخدام الإعداد العام."
|
|
1859
|
+
},
|
|
1860
|
+
"security_adminPinEnabled": {
|
|
1861
|
+
"label": "حماية رقم التعريف الشخصي للمشرف",
|
|
1862
|
+
"description": "تمكين مصادقة رقم التعريف الشخصي للمشرف للإعدادات الحساسة",
|
|
1863
|
+
"current": "حاضِر: {value}",
|
|
1864
|
+
"help": "يتطلب رقم التعريف الشخصي للمشرف لتغيير الأمان والإعدادات المتقدمة"
|
|
1865
|
+
},
|
|
1866
|
+
"fields": {
|
|
1867
|
+
"adminPinEnabled": {
|
|
1868
|
+
"label": "حماية رقم التعريف الشخصي للمشرف",
|
|
1869
|
+
"description": "تمكين مصادقة رقم التعريف الشخصي للمشرف للإعدادات الحساسة",
|
|
1870
|
+
"help": "يتطلب رقم التعريف الشخصي للمشرف لتغيير الأمان والإعدادات المتقدمة"
|
|
1871
|
+
}
|
|
1872
|
+
},
|
|
1873
|
+
"security_pinProtection_enabled": {
|
|
1874
|
+
"label": "حماية رقم التعريف الشخصي",
|
|
1875
|
+
"description": "تمكين حماية PIN للإعدادات الحساسة",
|
|
1876
|
+
"current": "حاضِر: {value}",
|
|
1877
|
+
"help": "يتطلب رقم التعريف الشخصي لتغيير الأمان والإعدادات المتقدمة"
|
|
1878
|
+
},
|
|
1879
|
+
"pinProtection_configure": {
|
|
1880
|
+
"label": "تكوين البرامج النصية المحمية برقم التعريف الشخصي",
|
|
1881
|
+
"description": "قم بتكوين البرامج النصية التي تتطلب حماية PIN",
|
|
1882
|
+
"help": "حدد البرامج النصية الفردية التي تتطلب مصادقة PIN"
|
|
1883
|
+
},
|
|
1884
|
+
"pinProtection_debugMenu": {
|
|
1885
|
+
"label": "قائمة أدوات التصحيح",
|
|
1886
|
+
"description": "يتطلب رقم التعريف الشخصي لقائمة أدوات التصحيح",
|
|
1887
|
+
"current": "حاضِر: {value}",
|
|
1888
|
+
"help": "تمكين حماية PIN للوصول إلى أدوات التصحيح"
|
|
1889
|
+
},
|
|
1890
|
+
"pinProtection_deleteReports": {
|
|
1891
|
+
"label": "حذف التقارير",
|
|
1892
|
+
"description": "يتطلب رقم التعريف الشخصي لحذف التقارير",
|
|
1893
|
+
"current": "حاضِر: {value}",
|
|
1894
|
+
"help": "تمكين حماية PIN لحذف التقارير"
|
|
1895
|
+
},
|
|
1896
|
+
"pinProtection_summaryReports": {
|
|
1897
|
+
"label": "تقارير موجزة",
|
|
1898
|
+
"description": "يتطلب رقم التعريف الشخصي للتقارير الموجزة",
|
|
1899
|
+
"current": "حاضِر: {value}",
|
|
1900
|
+
"help": "قم بتمكين حماية رقم التعريف الشخصي (PIN) لإنشاء تقارير موجزة"
|
|
1901
|
+
},
|
|
1902
|
+
"pinProtection_settingsMenu": {
|
|
1903
|
+
"label": "قائمة الإعدادات",
|
|
1904
|
+
"description": "يتطلب رقم التعريف الشخصي لقائمة الإعدادات",
|
|
1905
|
+
"current": "حاضِر: {value}",
|
|
1906
|
+
"help": "تمكين حماية PIN للوصول إلى الإعدادات"
|
|
1907
|
+
},
|
|
1908
|
+
"pinProtection_initScript": {
|
|
1909
|
+
"label": "تهيئة البرنامج النصي",
|
|
1910
|
+
"description": "يتطلب رقم التعريف الشخصي لتهيئة البرنامج النصي",
|
|
1911
|
+
"current": "حاضِر: {value}",
|
|
1912
|
+
"help": "تمكين حماية PIN لتشغيل البرنامج النصي للتهيئة"
|
|
1913
|
+
},
|
|
1914
|
+
"pinProtection_resetDefaults": {
|
|
1915
|
+
"label": "إعادة تعيين حماية PIN",
|
|
1916
|
+
"description": "إعادة تعيين جميع إعدادات حماية PIN إلى الإعدادات الافتراضية",
|
|
1917
|
+
"help": "قم بإعادة تعيين جميع وسائل حماية رقم التعريف الشخصي (PIN) للبرنامج النصي الفردي إلى القيم الافتراضية"
|
|
1918
|
+
},
|
|
1919
|
+
"removeUiLanguages": {
|
|
1920
|
+
"label": "إزالة لغات واجهة المستخدم",
|
|
1921
|
+
"description": "قم بإزالة لغات واجهة المستخدم غير المثبتة",
|
|
1922
|
+
"help": "قم بإزالة لغات واجهة المستخدم غير المثبتة على النظام"
|
|
1923
|
+
},
|
|
1924
|
+
"${helperKey}": {
|
|
1925
|
+
"help": "يساعد"
|
|
1926
|
+
},
|
|
1927
|
+
"reports_format": {
|
|
1928
|
+
"label": "تنسيق التقرير",
|
|
1929
|
+
"help": "اختر تخفيض السعر للتقارير القابلة للقراءة، أو json للأتمتة، أو النص للسجلات العادية."
|
|
1930
|
+
},
|
|
1931
|
+
"autoTranslate_placeholderMode": {
|
|
1932
|
+
"label": "وضع التعامل مع العنصر النائب",
|
|
1933
|
+
"help": "كيف يتم التعامل مع السلاسل التي تحمل العنصر النائب أثناء الترجمة التلقائية."
|
|
1934
|
+
},
|
|
1935
|
+
"autoTranslate_concurrency": {
|
|
1936
|
+
"label": "طلبات الترجمة المتزامنة",
|
|
1937
|
+
"help": "الحد الأقصى لطلبات الموفر المتزامنة. جوجل تدعم ما يصل إلى 100 في i18ntk؛ تم وضع حد أدنى لـ DeepL وLibreTranslate."
|
|
1938
|
+
},
|
|
1939
|
+
"autoTranslate_batchSize": {
|
|
1940
|
+
"label": "شرائح النص لكل دفعة",
|
|
1941
|
+
"help": "عدد مقاطع النص المجدولة لكل دفعة."
|
|
1942
|
+
},
|
|
1943
|
+
"autoTranslate_progressInterval": {
|
|
1944
|
+
"label": "الفاصل الزمني لتحديث التقدم",
|
|
1945
|
+
"help": "أجزاء النص المكتملة بين تحديثات التقدم."
|
|
1946
|
+
},
|
|
1947
|
+
"autoTranslate_retryCount": {
|
|
1948
|
+
"label": "أعد محاولة العد",
|
|
1949
|
+
"help": "الحد الأقصى لعدد مرات إعادة المحاولة لكل طلب فاشل."
|
|
1950
|
+
},
|
|
1951
|
+
"autoTranslate_retryDelay": {
|
|
1952
|
+
"label": "تأخير إعادة المحاولة (مللي ثانية)",
|
|
1953
|
+
"help": "تأخير إعادة المحاولة الأساسية بالمللي ثانية."
|
|
1954
|
+
},
|
|
1955
|
+
"autoTranslate_timeout": {
|
|
1956
|
+
"label": "مهلة الطلب (مللي ثانية)",
|
|
1957
|
+
"help": "انتهت مهلة طلب موفر الترجمة."
|
|
1958
|
+
},
|
|
1959
|
+
"autoTranslate_dryRunFirst": {
|
|
1960
|
+
"label": "معاينة التشغيل الجاف أولاً",
|
|
1961
|
+
"help": "قم بمعاينة ما سيتم ترجمته قبل كتابة الملفات."
|
|
1962
|
+
},
|
|
1963
|
+
"autoTranslate_onlyMissingOrEnglish": {
|
|
1964
|
+
"label": "المفاتيح المفقودة أو الإنجليزية فقط",
|
|
1965
|
+
"help": "احتفظ بالقيم المستهدفة المترجمة الحالية وقم بترجمة القيم الإنجليزية المفقودة أو العلامة أو النسخة المصدر أو القيم الإنجليزية المحتملة فقط."
|
|
1966
|
+
},
|
|
1967
|
+
"autoTranslate_reportStdout": {
|
|
1968
|
+
"label": "طباعة التقرير إلى المحطة",
|
|
1969
|
+
"help": "اطبع تقرير ما بعد الترجمة إلى stdout."
|
|
1970
|
+
},
|
|
1971
|
+
"autoTranslate_bom": {
|
|
1972
|
+
"label": "اكتب UTF-8 BOM",
|
|
1973
|
+
"help": "اكتب ملفات JSON المترجمة باستخدام قائمة مكونات الصنف UTF-8."
|
|
1974
|
+
},
|
|
1975
|
+
"autoTranslate_protectionEnabled": {
|
|
1976
|
+
"label": "حماية مصطلحات العلامة التجارية ومفاتيحها وقيمها",
|
|
1977
|
+
"help": "تمكين المصطلحات والمفاتيح والقيم والأنماط المحمية القابلة للتحرير بواسطة المستخدم."
|
|
1978
|
+
},
|
|
1979
|
+
"autoTranslate_protectionFile": {
|
|
1980
|
+
"label": "حماية ملف JSON",
|
|
1981
|
+
"help": "ملف مشروع JSON يحتوي على قواعد حماية الترجمة التلقائية."
|
|
1982
|
+
},
|
|
1983
|
+
"autoTranslate_promptProtectionSetup": {
|
|
1984
|
+
"label": "اطلب إنشاء ملف الحماية",
|
|
1985
|
+
"help": "اطلب إنشاء ملف الحماية عند تشغيل الترجمة التلقائية لأول مرة."
|
|
1986
|
+
},
|
|
1987
|
+
"autoTranslate_promptProtectionUpdate": {
|
|
1988
|
+
"label": "اطلب تحديث قواعد الحماية",
|
|
1989
|
+
"help": "اسأل ما إذا كنت تريد تحديث قواعد الحماية قبل ترجمات المدير."
|
|
1990
|
+
},
|
|
1991
|
+
"backup": {
|
|
1992
|
+
"enabled": {
|
|
1993
|
+
"label": "تمكين النسخ الاحتياطي",
|
|
1994
|
+
"description": "تمكين النسخ الاحتياطي التلقائي للإعدادات",
|
|
1995
|
+
"help": "تمكين/تعطيل ميزة النسخ الاحتياطي"
|
|
1996
|
+
},
|
|
1997
|
+
"singleFileMode": {
|
|
1998
|
+
"label": "وضع ملف واحد",
|
|
1999
|
+
"description": "استخدم ملفًا واحدًا للنسخ الاحتياطية",
|
|
2000
|
+
"help": "إعدادات النسخ الاحتياطي في ملف واحد"
|
|
2001
|
+
},
|
|
2002
|
+
"singleBackupFile": {
|
|
2003
|
+
"label": "مسار ملف النسخ الاحتياطي",
|
|
2004
|
+
"description": "المسار إلى ملف النسخ الاحتياطي",
|
|
2005
|
+
"help": "المسار إلى ملف النسخ الاحتياطي واحد"
|
|
2006
|
+
},
|
|
2007
|
+
"retentionDays": {
|
|
2008
|
+
"label": "فترة الاحتفاظ",
|
|
2009
|
+
"description": "أيام للاحتفاظ بملفات النسخ الاحتياطي",
|
|
2010
|
+
"help": "عدد الأيام للاحتفاظ بملفات النسخ الاحتياطي القديمة"
|
|
2011
|
+
},
|
|
2012
|
+
"maxBackups": {
|
|
2013
|
+
"label": "الحد الأقصى من النسخ الاحتياطية",
|
|
2014
|
+
"description": "الحد الأقصى لملفات النسخ الاحتياطي للاحتفاظ بها",
|
|
2015
|
+
"help": "الحد الأقصى لعدد ملفات النسخ الاحتياطي للاحتفاظ بها"
|
|
2016
|
+
},
|
|
2017
|
+
"confirm": {
|
|
2018
|
+
"label": "تأكيد النسخ الاحتياطي",
|
|
2019
|
+
"description": "تتطلب تأكيدا لعمليات النسخ الاحتياطي",
|
|
2020
|
+
"help": "تأكيد عملية النسخ الاحتياطي"
|
|
2021
|
+
}
|
|
2022
|
+
}
|
|
2023
|
+
},
|
|
2024
|
+
"actions": {
|
|
2025
|
+
"editSetting": "يحرر {setting}:",
|
|
2026
|
+
"settingUpdated": "✅ {setting} تم التحديث بنجاح!",
|
|
2027
|
+
"invalidValue": "❌ قيمة غير صالحة. يرجى المحاولة مرة أخرى.",
|
|
2028
|
+
"pressEnter": "اضغط على Enter للمتابعة...",
|
|
2029
|
+
"backToMenu": "العودة إلى القائمة الرئيسية",
|
|
2030
|
+
"saveSuccess": "✅ تم حفظ الإعدادات بنجاح!",
|
|
2031
|
+
"saveFailed": "❌ فشل في حفظ الإعدادات: {error}",
|
|
2032
|
+
"resetConfirm": "هل أنت متأكد أنك تريد إعادة تعيين كافة الإعدادات إلى الإعدادات الافتراضية؟ (ص / لا):",
|
|
2033
|
+
"resetSuccess": "✅ تم إعادة ضبط الإعدادات على الإعدادات الافتراضية بنجاح!",
|
|
2034
|
+
"importSuccess": "✅ تم استيراد الإعدادات بنجاح!",
|
|
2035
|
+
"exportSuccess": "✅ تم تصدير الإعدادات بنجاح!",
|
|
2036
|
+
"fileNotFound": "❌ الملف غير موجود: {path}",
|
|
2037
|
+
"invalidFormat": "❌ تنسيق ملف الإعدادات غير صالح",
|
|
2038
|
+
"pinProtectionUpdated": "✅ حماية PIN لـ {script} تم التحديث بنجاح!",
|
|
2039
|
+
"pinProtectionReset": "✅ إعادة تعيين جميع إعدادات حماية PIN إلى الإعدادات الافتراضية!",
|
|
2040
|
+
"pinProtectionConfigure": "تكوين حماية PIN للبرامج النصية الفردية",
|
|
2041
|
+
"pinProtectionSelectScript": "حدد برنامجًا نصيًا لتبديل حماية رقم التعريف الشخصي:",
|
|
2042
|
+
"pinProtectionCurrentStatus": "الوضع الحالي: {status}",
|
|
2043
|
+
"pinProtectionEnabled": "ممكّن",
|
|
2044
|
+
"pinProtectionDisabled": "عاجز",
|
|
2045
|
+
"pinProtectionToggle": "تبديل حماية PIN",
|
|
2046
|
+
"pinProtectionResetAll": "إعادة تعيين الكل إلى الإعدادات الافتراضية",
|
|
2047
|
+
"pinProtectionBack": "العودة إلى إعدادات الأمان"
|
|
2048
|
+
},
|
|
2049
|
+
"themes": {
|
|
2050
|
+
"light": "ضوء",
|
|
2051
|
+
"dark": "مظلم",
|
|
2052
|
+
"system": "نظام"
|
|
2053
|
+
},
|
|
2054
|
+
"languages": {
|
|
2055
|
+
"en": "إنجليزي",
|
|
2056
|
+
"de": "الألمانية",
|
|
2057
|
+
"es": "الأسبانية",
|
|
2058
|
+
"fr": "فرنسي",
|
|
2059
|
+
"ru": "الروسية",
|
|
2060
|
+
"ja": "اليابانية",
|
|
2061
|
+
"zh": "الصينية",
|
|
2062
|
+
"it": "إيطالي",
|
|
2063
|
+
"pt": "برتغالي",
|
|
2064
|
+
"nl": "هولندي",
|
|
2065
|
+
"pl": "بولندي",
|
|
2066
|
+
"sv": "سويدي",
|
|
2067
|
+
"uk": "أوكراني",
|
|
2068
|
+
"cs": "تشيكي",
|
|
2069
|
+
"tr": "تركي",
|
|
2070
|
+
"ko": "كوري",
|
|
2071
|
+
"ar": "العربية",
|
|
2072
|
+
"hi": "هندي",
|
|
2073
|
+
"th": "تايلاندي",
|
|
2074
|
+
"vi": "فيتنامي",
|
|
2075
|
+
"he": "عبري",
|
|
2076
|
+
"el": "يوناني",
|
|
2077
|
+
"hu": "مجري"
|
|
2078
|
+
},
|
|
2079
|
+
"viewAll": {
|
|
2080
|
+
"title": "عرض كافة الإعدادات"
|
|
2081
|
+
},
|
|
2082
|
+
"current": "حاضِر",
|
|
2083
|
+
"back": "العودة إلى القائمة الرئيسية",
|
|
2084
|
+
"selectSettingPrompt": "حدد الإعداد لتحريره (أو b للخلف، r لإعادة التعيين):",
|
|
2085
|
+
"invalidOption": "خيار غير صالح.",
|
|
2086
|
+
"editing": "التحرير",
|
|
2087
|
+
"enterNewValue": "أدخل قيمة جديدة (أو اضغط على Enter لتبقى محدثًا، واكتب \"افتراضي\" لاستخدام النظام الافتراضي):",
|
|
2088
|
+
"validOptions": "خيارات صالحة",
|
|
2089
|
+
"updatedSuccessfully": "تم التحديث بنجاح!",
|
|
2090
|
+
"noHelp": "لا توجد تعليمات متاحة لهذا الإعداد",
|
|
2091
|
+
"resetScriptDirectories": "إعادة التعيين إلى القيم الافتراضية",
|
|
2092
|
+
"resetScriptDirectoriesTitle": "إعادة تعيين دلائل البرنامج النصي إلى الإعدادات الافتراضية",
|
|
2093
|
+
"resetScriptDirectoriesWarning1": "سيؤدي هذا إلى إعادة تعيين كافة تكوينات دليل البرنامج النصي إلى إعدادات النظام الافتراضية الخاصة بها.",
|
|
2094
|
+
"resetScriptDirectoriesWarning2": "سيتم مسح كافة مسارات الدليل المخصصة. لا يمكن التراجع عن هذا الإجراء.",
|
|
2095
|
+
"resetScriptDirectoriesConfirm": "هل أنت متأكد أنك تريد إعادة تعيين كافة أدلة البرامج النصية إلى الإعدادات الافتراضية؟ (ص / لا):",
|
|
2096
|
+
"backup": {
|
|
2097
|
+
"title": "إعدادات النسخ الاحتياطي",
|
|
2098
|
+
"description": "النسخ الاحتياطي للإعدادات الحالية إلى ملف",
|
|
2099
|
+
"confirm": "هل أنت متأكد أنك تريد النسخ الاحتياطي للإعدادات الحالية؟ (ص / لا):",
|
|
2100
|
+
"success": "✅ تم نسخ الإعدادات احتياطيًا بنجاح {backupFile}",
|
|
2101
|
+
"failed": "❌ فشل في عمل نسخة احتياطية للإعدادات: {error}",
|
|
2102
|
+
"enabled": "تمكين النسخ الاحتياطي",
|
|
2103
|
+
"enabledHelp": "تمكين/تعطيل ميزة النسخ الاحتياطي",
|
|
2104
|
+
"singleFileMode": "وضع ملف واحد",
|
|
2105
|
+
"singleFileModeHelp": "إعدادات النسخ الاحتياطي في ملف واحد",
|
|
2106
|
+
"singleBackupFile": "ملف النسخ الاحتياطي واحد",
|
|
2107
|
+
"singleBackupFileHelp": "المسار إلى ملف النسخ الاحتياطي واحد",
|
|
2108
|
+
"retentionDays": "أيام الاحتفاظ",
|
|
2109
|
+
"retentionDaysHelp": "عدد الأيام للاحتفاظ بملفات النسخ الاحتياطي القديمة",
|
|
2110
|
+
"maxBackups": "ماكس النسخ الاحتياطية",
|
|
2111
|
+
"maxBackupsHelp": "الحد الأقصى لعدد ملفات النسخ الاحتياطي للاحتفاظ بها",
|
|
2112
|
+
"confirmHelp": "تأكيد عملية النسخ الاحتياطي",
|
|
2113
|
+
"confirmYes": "نعم",
|
|
2114
|
+
"confirmNo": "لا"
|
|
2115
|
+
},
|
|
2116
|
+
"validation": {
|
|
2117
|
+
"valid": "صالح",
|
|
2118
|
+
"validatingPaths": "يتم الآن التحقق من صحة المسارات التي تم تكوينها...",
|
|
2119
|
+
"validationComplete": "اكتمال التحقق من صحة المسار: {valid}/{total} صالح."
|
|
2120
|
+
}
|
|
2121
|
+
},
|
|
2122
|
+
"summary": {
|
|
2123
|
+
"separator": "============================================================",
|
|
2124
|
+
"configurationTitle": "🔧 التكوين:",
|
|
2125
|
+
"sourceLanguage": "لغة المصدر: {sourceLanguage}",
|
|
2126
|
+
"supportedExtensions": "الامتدادات المدعومة: {extensions}",
|
|
2127
|
+
"excludedFiles": "الملفات المستبعدة: {files}",
|
|
2128
|
+
"reportContent": "{report}",
|
|
2129
|
+
"fatalError": "❌ خطأ فادح: {error}",
|
|
2130
|
+
"helpTitle": "📊 مولد التقرير الموجز I18NTK",
|
|
2131
|
+
"helpDescription": "يقوم بتحليل بنية مجلد i18n وإنشاء تقرير ملخص شامل يتضمن الإحصائيات الأساسية وتحليل بنية الملف وعمليات التحقق من الصحة.",
|
|
2132
|
+
"helpUsage": "الاستخدام: العقدة i18ntk-summary.js [خيارات]",
|
|
2133
|
+
"helpOptions": "--مصدر-دير <dir> الدليل المصدر للتحليل",
|
|
2134
|
+
"helpSourceDir": "--مصدر-دير <dir> الدليل المصدر للتحليل",
|
|
2135
|
+
"helpOutput": "--output <file> ملف الإخراج للتقرير",
|
|
2136
|
+
"helpVerbose": "--verbose, -v عرض المعلومات التفصيلية",
|
|
2137
|
+
"helpKeepReports": "--keep-reports احتفظ بالتقارير الموجودة",
|
|
2138
|
+
"helpDeleteReports": "--delete-reports حذف التقارير الموجودة",
|
|
2139
|
+
"helpHelp": "--help, -h أظهر هذه المساعدة",
|
|
2140
|
+
"helpExamples": "أمثلة:",
|
|
2141
|
+
"helpExample1": "العقدة i18ntk-summary.js",
|
|
2142
|
+
"helpExample2": "العقدة i18ntk-summary.js --source-dir ./locales",
|
|
2143
|
+
"helpExample3": "العقدة i18ntk-summary.js --ملخص الإخراج-report.txt",
|
|
2144
|
+
"helpExample4": "العقدة i18ntk-summary.js --verbose",
|
|
2145
|
+
"helpExample5": "العقدة i18ntk-summary.js --source-dir ./locales --output report.json",
|
|
2146
|
+
"couldNotReadFile": "⚠️ تعذرت قراءة الملف: {filePath}",
|
|
2147
|
+
"couldNotParseJSFile": "⚠️ تعذر تحليل ملف JS/TS: {filePath}",
|
|
2148
|
+
"errorReadingFile": "⚠️ خطأ في قراءة الملف {filePath}: {error}",
|
|
2149
|
+
"analyzingFolder": "🔍 تحليل بنية المجلد...",
|
|
2150
|
+
"noLanguageDirectoriesFound": "❌ لم يتم العثور على أدلة لغة في الدليل المصدر المحدد.",
|
|
2151
|
+
"foundLanguages": "✅ وجدت {count} اللغات: {languages}",
|
|
2152
|
+
"referenceLanguageFiles": "📁 اللغة المرجعية'{language}' لديه {count} ملفات",
|
|
2153
|
+
"analyzingLanguage": "🌍تحليل اللغة: {language}",
|
|
2154
|
+
"keysInFiles": "📊 وجدت {keys} المفاتيح عبر {files} ملفات",
|
|
2155
|
+
"checkingInconsistentKeys": "🔍 التحقق من عدم تناسق المفاتيح عبر اللغات...",
|
|
2156
|
+
"generatingSummaryReport": "📝 جارٍ إنشاء تقرير ملخص...",
|
|
2157
|
+
"reportTitle": "📊 I18NTK SUMMARY REPORT",
|
|
2158
|
+
"generated": "تم إنشاؤها: {timestamp}",
|
|
2159
|
+
"sourceDirectory": "الدليل المصدر: {dir}",
|
|
2160
|
+
"overview": "📈 OVERVIEW",
|
|
2161
|
+
"languagesCount": "اللغات: {count}",
|
|
2162
|
+
"totalFiles": "إجمالي الملفات: {count}",
|
|
2163
|
+
"totalKeys": "إجمالي المفاتيح: {count}",
|
|
2164
|
+
"avgKeysPerLanguage": "متوسط المفاتيح لكل لغة: {count}",
|
|
2165
|
+
"languagesBreakdown": "🌍 تقسيم اللغات",
|
|
2166
|
+
"languageBreakdown": "{language}: {files} ملفات, {keys} مفاتيح",
|
|
2167
|
+
"fileStructure": "📁 هيكل الملف",
|
|
2168
|
+
"fileKeys": "{file}: {keys} مفاتيح",
|
|
2169
|
+
"missingInLanguages": "⚠️ مفقود في: {languages}",
|
|
2170
|
+
"issuesFound": "❌ ISSUES FOUND",
|
|
2171
|
+
"missingFiles": "📁 الملفات المفقودة:",
|
|
2172
|
+
"emptyFiles": "📄 الملفات الفارغة:",
|
|
2173
|
+
"malformedFiles": "⚠️ الملفات المشوهة:",
|
|
2174
|
+
"duplicateKeys": "🔑 مفاتيح مكررة:",
|
|
2175
|
+
"inconsistentKeys": "🔍 مفاتيح غير متناسقة:",
|
|
2176
|
+
"missingKeys": "مفتقد: {keys}{more}",
|
|
2177
|
+
"extraKeys": "إضافي: {keys}{more}",
|
|
2178
|
+
"noIssuesFound": "✅ NO ISSUES FOUND",
|
|
2179
|
+
"allFilesConsistent": "جميع ملفات الترجمة متسقة عبر اللغات.",
|
|
2180
|
+
"recommendations": "💡 التوصيات",
|
|
2181
|
+
"createMissingFiles": "• إنشاء ملفات الترجمة المفقودة",
|
|
2182
|
+
"addContentToEmptyFiles": "• إضافة محتوى إلى ملفات الترجمة الفارغة",
|
|
2183
|
+
"fixMalformedFiles": "• إصلاح ملفات JSON/JS المشوهة",
|
|
2184
|
+
"removeDuplicateKeys": "• إزالة المفاتيح المكررة من الملفات",
|
|
2185
|
+
"synchronizeKeys": "• مزامنة المفاتيح عبر جميع اللغات",
|
|
2186
|
+
"splitLargeFiles": "• فكر في تقسيم الملفات الكبيرة إلى مساحات أسماء أصغر",
|
|
2187
|
+
"addMoreLanguages": "• النظر في إضافة المزيد من اللغات",
|
|
2188
|
+
"nextSteps": "🎯 NEXT STEPS",
|
|
2189
|
+
"nextStep1": "1. قم بإصلاح أية مشكلات تم تحديدها أعلاه",
|
|
2190
|
+
"nextStep2": "2. قم بتشغيل التحقق من الصحة لضمان الاتساق",
|
|
2191
|
+
"nextStep3": "3. فكر في استخدام i18ntk-validate للتحقق التفصيلي",
|
|
2192
|
+
"nextStep4": "4. يوصى بالمراقبة المنتظمة",
|
|
2193
|
+
"couldNotFindI18nDirectory": "❌تعذر العثور على دليل i18n. يرجى تحديد --source-dir.",
|
|
2194
|
+
"sourceDirectoryDoesNotExist": "❌ دليل المصدر غير موجود: {dir}",
|
|
2195
|
+
"i18nSummaryReportGenerator": "📊 مولد تقرير ملخص I18N",
|
|
2196
|
+
"analysisComplete": "✅ التحليل كامل",
|
|
2197
|
+
"analyzedLanguages": "📊 اللغات التي تم تحليلها: {count}",
|
|
2198
|
+
"processedFiles": "📁 الملفات المعالجة: {count}",
|
|
2199
|
+
"foundTranslationKeys": "🔑 تم العثور على مفاتيح الترجمة: {count}",
|
|
2200
|
+
"foundIssues": "❌ وجدت {count} مشاكل",
|
|
2201
|
+
"noIssuesConsole": "✅ لم يتم العثور على مشكلات - جميع الملفات متسقة!",
|
|
2202
|
+
"errorDuringAnalysis": "❌ خطأ أثناء التحليل: {error}",
|
|
2203
|
+
"usageReportTitle": "📊 I18NTK USAGE REPORT",
|
|
2204
|
+
"usageReportGenerated": "تم إنشاؤها: {timestamp}",
|
|
2205
|
+
"usageReportSourceDir": "الدليل المصدر: {sourceDir}",
|
|
2206
|
+
"usageReportI18nDir": "دليل I18n: {i18nDir}",
|
|
2207
|
+
"usageReportSummary": "📈 SUMMARY",
|
|
2208
|
+
"usageReportSourceFilesScanned": "الملفات المصدرية التي تم فحصها: {count}",
|
|
2209
|
+
"usageReportTranslationFilesFound": "تم العثور على ملفات الترجمة: {count}",
|
|
2210
|
+
"usageReportAvailableKeys": "مفاتيح الترجمة المتاحة: {count}",
|
|
2211
|
+
"usageReportUsedKeys": "مفاتيح الترجمة المستخدمة: {count}",
|
|
2212
|
+
"usageReportDynamicKeys": "مفاتيح الترجمة الديناميكية: {count}",
|
|
2213
|
+
"usageReportUnusedKeys": "مفاتيح الترجمة غير المستخدمة: {count}",
|
|
2214
|
+
"usageReportMissingKeys": "مفاتيح الترجمة المفقودة: {count}",
|
|
2215
|
+
"usageReportNotTranslatedKeys": "المفاتيح غير المترجمة: {count}",
|
|
2216
|
+
"usageReportTranslationCompleteness": "🌍 اكتمال الترجمة",
|
|
2217
|
+
"usageReportLanguageCompleteness": "{language}: {completeness}% ({translated}/{total})",
|
|
2218
|
+
"usageReportNotTranslatedInLanguage": "غير مترجم: {count} مفاتيح",
|
|
2219
|
+
"usageReportTranslationFilesDiscovered": "📁 ملفات الترجمة",
|
|
2220
|
+
"usageReportFileInfo": "{relativePath} (مساحة الاسم: {namespace}، يكتب: {type})",
|
|
2221
|
+
"usageReportUnusedTranslationKeys": "🗑️ مفاتيح الترجمة غير المستخدمة",
|
|
2222
|
+
"usageReportUnusedKeysDescription": "هذه المفاتيح موجودة في ملفات الترجمة ولكنها غير مستخدمة في التعليمات البرمجية المصدر:",
|
|
2223
|
+
"usageReportUnusedKey": "• {key}",
|
|
2224
|
+
"usageReportMoreUnusedKeys": "... و {count} المزيد من المفاتيح غير المستخدمة",
|
|
2225
|
+
"usageReportMissingTranslationKeys": "❌ مفاتيح الترجمة مفقودة",
|
|
2226
|
+
"usageReportMissingKeysDescription": "تُستخدم هذه المفاتيح في التعليمات البرمجية المصدر ولكنها مفقودة من ملفات الترجمة:",
|
|
2227
|
+
"usageReportMissingKey": "• {key}",
|
|
2228
|
+
"usageReportUsedIn": "تستخدم في: {filePath}",
|
|
2229
|
+
"usageReportMoreFiles": "... و {count} المزيد من الملفات",
|
|
2230
|
+
"usageReportDynamicTranslationKeys": "⚡ مفاتيح الترجمة الديناميكية",
|
|
2231
|
+
"usageReportDynamicKeysDescription": "يتم استخدام هذه المفاتيح ديناميكيًا (يتم إنشاؤها في وقت التشغيل):",
|
|
2232
|
+
"usageReportDynamicKey": "• {key}",
|
|
2233
|
+
"usageReportFileUsageBreakdown": "📊 توزيع استخدامات الملفات",
|
|
2234
|
+
"usageReportFileUsage": "{filePath}: {count} مفاتيح",
|
|
2235
|
+
"status": {
|
|
2236
|
+
"generating": "⏳ توليد...",
|
|
2237
|
+
"completed": "✅ مكتمل"
|
|
2238
|
+
},
|
|
2239
|
+
"help": {
|
|
2240
|
+
"usage": "الاستخدام: العقدة الرئيسية/الإدارة/index.js [خيارات]",
|
|
2241
|
+
"interactiveMode": "💡 الاستخدام: العقدة الرئيسية/manage/index.js --command=<command> للتنفيذ المباشر",
|
|
2242
|
+
"initProject": "🚀 تهيئة لغات جديدة",
|
|
2243
|
+
"analyzeTranslations": "🔍 تحليل الترجمات",
|
|
2244
|
+
"validateTranslations": "✅ التحقق من صحة الترجمات",
|
|
2245
|
+
"checkUsage": "📊 التحقق من استخدام المفتاح",
|
|
2246
|
+
"showHelp": "📖 استخدم: العقدة الرئيسية/إدارة/index.js --تعليمات للأوامر المتاحة",
|
|
2247
|
+
"availableCommands": "📖 الأوامر المتوفرة:",
|
|
2248
|
+
"initCommand": "الحرف الأول - تهيئة لغات جديدة",
|
|
2249
|
+
"analyzeCommand": "تحليل - تحليل الترجمات",
|
|
2250
|
+
"validateCommand": "التحقق من صحة - التحقق من صحة الترجمات",
|
|
2251
|
+
"usageCommand": "الاستخدام - التحقق من استخدام المفتاح",
|
|
2252
|
+
"sizingCommand": "التحجيم - تحليل التحجيم",
|
|
2253
|
+
"completeCommand": "كاملة - ترجمات كاملة (تغطية 100%)",
|
|
2254
|
+
"summaryCommand": "ملخص - إظهار حالة المشروع",
|
|
2255
|
+
"scannerCommand": "الماسح الضوئي - البحث عن مشكلات i18n",
|
|
2256
|
+
"translateCommand": "ترجمة - ترجمة الملفات المحلية تلقائيًا",
|
|
2257
|
+
"debugCommand": "تصحيح - تصحيح مشكلات الترجمة"
|
|
2258
|
+
},
|
|
2259
|
+
"test_complete_system": {
|
|
2260
|
+
"starting_test": "🧪 بدء اختبار النظام الكامل",
|
|
2261
|
+
"separator": "=",
|
|
2262
|
+
"testing_ui_translations": "📝 اختبار ترجمات واجهة المستخدم...",
|
|
2263
|
+
"testing_settings_manager": "⚙️ اختبار مدير الإعدادات...",
|
|
2264
|
+
"testing_main_scripts": "🔧 اختبار النصوص الرئيسية...",
|
|
2265
|
+
"checking_translation_consistency": "🌐 التحقق من تناسق الترجمة...",
|
|
2266
|
+
"non_critical_missing_keys": "ℹ️ {file}: {count} المفاتيح المفقودة غير الحرجة",
|
|
2267
|
+
"extra_keys": "ℹ️ {file}: {count} مفاتيح اضافية",
|
|
2268
|
+
"generating_report": "📊 جارٍ إنشاء التقرير...",
|
|
2269
|
+
"final_test_report_title": "📋 FINAL TEST REPORT",
|
|
2270
|
+
"passed": "✅ نجح: {passed}",
|
|
2271
|
+
"failed": "❌ فشل: {failed}",
|
|
2272
|
+
"warnings": "⚠️ تحذيرات: {warnings}",
|
|
2273
|
+
"missing_translations_title": "🔍 الترجمات المفقودة ({count}):",
|
|
2274
|
+
"missing_translation_key": "- {key}",
|
|
2275
|
+
"missing_translations_more": "... و {count} أكثر",
|
|
2276
|
+
"errors_title": "❌ الأخطاء:",
|
|
2277
|
+
"error_message": "- {error}",
|
|
2278
|
+
"overall_status": "📊 الحالة العامة: {status}",
|
|
2279
|
+
"success_message": "✅ {message}",
|
|
2280
|
+
"failure_message": "❌ {message}",
|
|
2281
|
+
"failure_error_message": "{errorMessage}",
|
|
2282
|
+
"warning_message": "⚠️ {message}",
|
|
2283
|
+
"test_runner_failed": "❌ فشل عداء الاختبار:",
|
|
2284
|
+
"recommendations": {
|
|
2285
|
+
"add_missing_translation_keys": "أضف مفاتيح الترجمة المفقودة للحفاظ على الاتساق",
|
|
2286
|
+
"fix_failing_scripts": "إصلاح البرامج النصية الفاشلة قبل النشر",
|
|
2287
|
+
"review_warning_messages": "مراجعة ومعالجة رسائل التحذير",
|
|
2288
|
+
"system_ready_for_deployment": "النظام جاهز للنشر"
|
|
2289
|
+
},
|
|
2290
|
+
"hardcodedTexts": {
|
|
2291
|
+
"addMissingTranslationKeys": "أضف مفاتيح الترجمة المفقودة للحفاظ على الاتساق",
|
|
2292
|
+
"fixFailingScripts": "إصلاح البرامج النصية الفاشلة قبل النشر",
|
|
2293
|
+
"reviewWarningMessages": "مراجعة ومعالجة رسائل التحذير",
|
|
2294
|
+
"systemReadyForDeployment": "النظام جاهز للنشر"
|
|
2295
|
+
}
|
|
2296
|
+
},
|
|
2297
|
+
"testConsoleI18n": {
|
|
2298
|
+
"found_target_file": "تم العثور على الملف الهدف: {fileName}",
|
|
2299
|
+
"scanning_files_for_console_statements": "يتم الآن فحص الملفات بحثاً عن بيانات وحدة التحكم...",
|
|
2300
|
+
"found_javascript_files": "وجد {count} ملفات جافا سكريبت.",
|
|
2301
|
+
"console_i18n_analysis_results": "نتائج تحليل وحدة التحكم I18n",
|
|
2302
|
+
"total_console_statements": "إجمالي بيانات وحدة التحكم: {count}",
|
|
2303
|
+
"translated_statements": "البيانات المترجمة: {count}",
|
|
2304
|
+
"hardcoded_statements": "البيانات المشفرة: {count}",
|
|
2305
|
+
"translation_coverage": "تغطية الترجمة: {percentage}%",
|
|
2306
|
+
"coverage_by_file": "التغطية حسب الملف:",
|
|
2307
|
+
"file_coverage_stats": "{emoji} {fileName}: {coverage}% ({translated}/{total})",
|
|
2308
|
+
"hardcoded_console_statements": "بيانات وحدة التحكم المشفرة:",
|
|
2309
|
+
"file_header": "ملف: {file}",
|
|
2310
|
+
"line_statement": "خط {line}: {statement}",
|
|
2311
|
+
"suggested_key": "المفتاح المقترح: {key}",
|
|
2312
|
+
"suggested_replacement": "الاستبدال المقترح: {replacement}",
|
|
2313
|
+
"recommendations": "التوصيات:",
|
|
2314
|
+
"recommendation_1": "1. استبدل السلاسل النصية المضمنة باستدعاءات i18n.t().",
|
|
2315
|
+
"recommendation_2": "2. أضف مفاتيح جديدة إلى ملفات الترجمة JSON ذات الصلة.",
|
|
2316
|
+
"recommendation_3": "3. تأكد من أن جميع رسائل وحدة التحكم موجهة للمستخدم وتتطلب الترجمة.",
|
|
2317
|
+
"recommendation_4": "4. استخدم القيم الحرفية للقالب أو تسلسل السلسلة للرسائل الديناميكية، وتمرير المتغيرات إلى i18n.t().",
|
|
2318
|
+
"translation_keys_to_add": "مفاتيح الترجمة المقترحة لإضافتها:",
|
|
2319
|
+
"add_keys_instruction": "انسخ بنية JSON التالية إلى ملفات الترجمة الخاصة بك:",
|
|
2320
|
+
"perfect_translation_coverage": "تغطية ترجمة مثالية!",
|
|
2321
|
+
"all_statements_using_translation": "جميع بيانات وحدة التحكم تستخدم نظام الترجمة.",
|
|
2322
|
+
"i18n_console_translation_checker": "مدقق ترجمة وحدة التحكم I18n",
|
|
2323
|
+
"script_description_line1": "يقوم هذا البرنامج النصي بفحص كافة ملفات JavaScript بحثًا عن بيانات وحدة التحكم",
|
|
2324
|
+
"script_description_line2": "ويتحقق مما إذا كانوا يستخدمون نظام الترجمة.",
|
|
2325
|
+
"analysis_completed_in_duration": "انتهى التحليل في {duration} ثواني.",
|
|
2326
|
+
"report_saved_to_path": "تم حفظ التقرير في: {path}",
|
|
2327
|
+
"found_hardcoded_messages": "وجد {count} رسائل مضمنة. الخروج مع رمز الخطأ 1.",
|
|
2328
|
+
"all_console_messages_use_translation": "تستخدم جميع رسائل وحدة التحكم الترجمة. الخروج بالرمز 0.",
|
|
2329
|
+
"consoleTranslationsCheck": "التحقق من ترجمات وحدة التحكم"
|
|
2330
|
+
},
|
|
2331
|
+
"translate_mismatches": {
|
|
2332
|
+
"title": "🌐 مساعد الترجمة {dryRun}",
|
|
2333
|
+
"separator": "=====================================",
|
|
2334
|
+
"processing_file": "📄 المعالجة {language}.json...",
|
|
2335
|
+
"translation_summary_title": "📊 ملخص الترجمة:",
|
|
2336
|
+
"total_translations_applied": "إجمالي الترجمات المطبقة: {totalTranslations}",
|
|
2337
|
+
"run_with_apply_instruction": "💡 قم بتشغيل --apply لتطبيق هذه الترجمات",
|
|
2338
|
+
"no_translation_mappings": "⚠️ لا تتوفر تعيينات ترجمة لـ {language}",
|
|
2339
|
+
"translation_applied": "✅ {key}: \"{oldValue}\" → \"{newValue}\"",
|
|
2340
|
+
"saved_translations": "💾 محفوظ {count} ترجمات ل {filename}",
|
|
2341
|
+
"found_translatable_items": "🔍 وجدت {count} عناصر قابلة للترجمة",
|
|
2342
|
+
"no_automatic_translations": "✨ لا تتوفر ترجمات تلقائية",
|
|
2343
|
+
"error_processing_file": "❌ معالجة الأخطاء {filename}: {errorMessage}",
|
|
2344
|
+
"coverage_report_title": "📊 تقرير تغطية الترجمة",
|
|
2345
|
+
"coverage_report_separator": "===============================",
|
|
2346
|
+
"file_header": "📄 {filename}:",
|
|
2347
|
+
"total_keys": "إجمالي المفاتيح: {total}",
|
|
2348
|
+
"translated_keys": "مترجم: {translated}",
|
|
2349
|
+
"untranslated_markers": "العلامات غير المترجمة: {untranslated}",
|
|
2350
|
+
"contains_english": "يحتوي على اللغة الإنجليزية: {hasEnglish}",
|
|
2351
|
+
"coverage_percentage": "التغطية: {coverage}%",
|
|
2352
|
+
"error_general": "❌ خطأ:",
|
|
2353
|
+
"use_help": "استخدم --help للحصول على معلومات الاستخدام"
|
|
2354
|
+
},
|
|
2355
|
+
"cleaningUpReportFiles": "تنظيف ملفات التقارير القديمة...",
|
|
2356
|
+
"couldNotDelete": "لا يمكن الحذف {file}: {error}",
|
|
2357
|
+
"deletedOldReportFiles": "تم الحذف {count} ملف (ملفات) التقرير القديم.",
|
|
2358
|
+
"errorCleaningUpReports": "خطأ في تنظيف التقارير: {error}",
|
|
2359
|
+
"noOldReportFilesToDelete": "لا توجد ملفات تقارير قديمة لحذفها.",
|
|
2360
|
+
"reportFilesPreserved": "تم حفظ ملفات التقرير.",
|
|
2361
|
+
"reportSaveFailed": "فشل حفظ التقرير إلى: {reportPath}",
|
|
2362
|
+
"reportSaved": "تم حفظ التقرير في: {reportPath}"
|
|
2363
|
+
},
|
|
2364
|
+
"ui": {
|
|
2365
|
+
"autoDetectedI18nDirectory": "دليل i18n المكتشف تلقائيًا: {path}",
|
|
2366
|
+
"executingCommand": "تنفيذ الأمر: {command}",
|
|
2367
|
+
"unknownCommand": "أمر غير معروف: {command}",
|
|
2368
|
+
"errorExecutingCommand": "خطأ في تنفيذ الأمر: {error}",
|
|
2369
|
+
"errorLoadingTranslationFile": "حدث خطأ أثناء تحميل ملف الترجمة لـ '{language}': {error}",
|
|
2370
|
+
"errorSavingLanguagePreference": "حدث خطأ أثناء حفظ تفضيلات اللغة: {error}",
|
|
2371
|
+
"noActiveReadlineInterface": "لا تتوفر واجهة قراءة نشطة",
|
|
2372
|
+
"uiLanguageUpdated": "تم تحديث لغة واجهة المستخدم إلى: {language}",
|
|
2373
|
+
"selectOptionPrompt": "حدد خيارًا:",
|
|
2374
|
+
"pressEnterToReturn": "اضغط على Enter للعودة إلى القائمة الرئيسية...",
|
|
2375
|
+
"detectedSourceDirectory": "دليل المصدر المكتشف: {sourceDir}",
|
|
2376
|
+
"detectedI18nDirectory": "تم اكتشاف دليل i18n: {directory}",
|
|
2377
|
+
"toolkitTitle": "i18ntk - مجموعة أدوات إدارة i18n للمؤسسات",
|
|
2378
|
+
"versionInfo": "إصدار: {version}",
|
|
2379
|
+
"releaseDate": "تاريخ الافراج عنه: {date}",
|
|
2380
|
+
"maintainer": "المشرف: {maintainer}",
|
|
2381
|
+
"nodeVersion": "نود.جي إس: {version}",
|
|
2382
|
+
"license": "رخصة: {license}",
|
|
2383
|
+
"whatsNew": "✨ ما الجديد في v{version}:",
|
|
2384
|
+
"changeItem": "{change}",
|
|
2385
|
+
"documentation": "📚 التوثيق : {url}",
|
|
2386
|
+
"issues": "🐛 القضايا: {url}",
|
|
2387
|
+
"versionInfoUnavailable": "معلومات إصدار i18ntk غير متوفرة",
|
|
2388
|
+
"versionInfoError": "خطأ: {error}"
|
|
2389
|
+
},
|
|
2390
|
+
"validateLanguagePurity": {
|
|
2391
|
+
"phrase_debug_tools": "أدوات التصحيح",
|
|
2392
|
+
"phrase_settings": "إعدادات",
|
|
2393
|
+
"phrase_configuration": "إعدادات",
|
|
2394
|
+
"phrase_invalid_choice": "اختيار غير صالح",
|
|
2395
|
+
"phrase_please_select": "يرجى التحديد",
|
|
2396
|
+
"phrase_back_to_main_menu": "العودة إلى القائمة الرئيسية",
|
|
2397
|
+
"phrase_error": "خطأ",
|
|
2398
|
+
"phrase_warning": "تحذير",
|
|
2399
|
+
"phrase_success": "نجاح",
|
|
2400
|
+
"phrase_failed": "فشل",
|
|
2401
|
+
"phrase_loading": "تحميل",
|
|
2402
|
+
"phrase_saving": "توفير",
|
|
2403
|
+
"phrase_full_system_debug": "تصحيح أخطاء النظام بالكامل",
|
|
2404
|
+
"phrase_configuration_debug": "تصحيح التكوين",
|
|
2405
|
+
"phrase_translation_debug": "تصحيح الترجمة",
|
|
2406
|
+
"phrase_performance_debug": "تصحيح الأداء",
|
|
2407
|
+
"phrase_admin_pin_setup": "إعداد دبوس المسؤول",
|
|
2408
|
+
"phrase_enter_admin_pin": "أدخل دبوس المسؤول",
|
|
2409
|
+
"phrase_confirm_admin_pin": "تأكيد دبوس المشرف",
|
|
2410
|
+
"phrase_authentication_failed": "فشلت المصادقة",
|
|
2411
|
+
"phrase_access_denied": "تم الرفض",
|
|
2412
|
+
"phrase_security_log": "سجل الأمان",
|
|
2413
|
+
"language_german": "الألمانية",
|
|
2414
|
+
"language_french": "فرنسي",
|
|
2415
|
+
"language_spanish": "الأسبانية",
|
|
2416
|
+
"language_russian": "الروسية",
|
|
2417
|
+
"language_japanese": "اليابانية",
|
|
2418
|
+
"language_chinese": "الصينية",
|
|
2419
|
+
"validator_title": "🔍 مدقق نقاء اللغة",
|
|
2420
|
+
"validating_file": "📄 التحقق {language}.json ({name})...",
|
|
2421
|
+
"valid_file_message": "✅ صالحة - لا توجد مخالفات لنقاء اللغة",
|
|
2422
|
+
"invalid_file_message": "❌ غير صالح - {count} تم العثور على الانتهاك (الانتهاكات).",
|
|
2423
|
+
"no_validation_rules": "لم يتم تحديد قواعد التحقق من الصحة للغة: {language}",
|
|
2424
|
+
"error_reading_file": "خطأ في قراءة الملف: {errorMessage}",
|
|
2425
|
+
"issue_forbidden_marker": "يحتوي على علامة ممنوعة: {marker}",
|
|
2426
|
+
"issue_english_phrase": "يحتوي على العبارة الإنجليزية: \"{phrase}\"",
|
|
2427
|
+
"issue_english_words": "يحتوي على كلمات انجليزية: {words}",
|
|
2428
|
+
"issue_missing_cyrillic": "يجب أن يحتوي النص الطويل على أحرف سيريلية للغة الروسية",
|
|
2429
|
+
"issue_missing_japanese": "يجب أن يحتوي النص الطويل على أحرف يابانية",
|
|
2430
|
+
"issue_missing_chinese": "يجب أن يحتوي النص الطويل على أحرف صينية",
|
|
2431
|
+
"summary_title": "📊 ملخص التحقق",
|
|
2432
|
+
"overall_results_header": "📋 النتائج العامة:",
|
|
2433
|
+
"total_files_validated": "إجمالي الملفات التي تم التحقق من صحتها: {count}",
|
|
2434
|
+
"valid_files": "الملفات الصالحة: {count}",
|
|
2435
|
+
"invalid_files": "ملفات غير صالحة: {count}",
|
|
2436
|
+
"total_violations": "إجمالي الانتهاكات: {count}",
|
|
2437
|
+
"violations_by_file_header": "❌المخالفات حسب الملف:"
|
|
2438
|
+
},
|
|
2439
|
+
"workflow": {
|
|
2440
|
+
"title": "إدارة سير العمل",
|
|
2441
|
+
"description": "إدارة سير عمل i18n.",
|
|
2442
|
+
"select_workflow_file": "حدد ملف سير العمل لتشغيله:",
|
|
2443
|
+
"no_workflow_files": "لم يتم العثور على ملفات سير عمل في دليل سير العمل.",
|
|
2444
|
+
"invalid_selection": "التحديد غير صالح. الرجاء إدخال رقم يتوافق مع ملف سير العمل.",
|
|
2445
|
+
"workflow_execution_started": "بدء سير العمل: {workflowName}",
|
|
2446
|
+
"workflow_execution_completed": "اكتمل سير العمل: {workflowName}",
|
|
2447
|
+
"workflow_execution_failed": "فشل سير العمل: {workflowName} - {error}",
|
|
2448
|
+
"workflow_cancelled": "تم إلغاء تنفيذ سير العمل.",
|
|
2449
|
+
"press_enter_to_continue": "اضغط على Enter للمتابعة!",
|
|
2450
|
+
"starting": "🚀 بدء سير العمل...",
|
|
2451
|
+
"completed": "✅ اكتمل سير العمل بنجاح!",
|
|
2452
|
+
"checkReports": "📄 التحقق من التقارير للحصول على التفاصيل.",
|
|
2453
|
+
"exitingCompleted": "📝 تم الانتهاء من سير العمل. جارٍ الخروج...",
|
|
2454
|
+
"summary": {
|
|
2455
|
+
"title": "📋 WORKFLOW SUMMARY",
|
|
2456
|
+
"separator": "===================",
|
|
2457
|
+
"completedAt": "🕐 اكتمل سير العمل في: {timestamp}",
|
|
2458
|
+
"initialViolations": "📊 المخالفات الأولية: {count}",
|
|
2459
|
+
"finalViolations": "📉المخالفات النهائية: {count}",
|
|
2460
|
+
"totalFixes": "🔧 إجمالي الإصلاحات المطبقة: {count}",
|
|
2461
|
+
"improvement": "📈 التحسين: {percentage}%",
|
|
2462
|
+
"stepResults": "📝 STEP RESULTS:",
|
|
2463
|
+
"stepDetail": "{number}. {status} {stepName}",
|
|
2464
|
+
"violations": "الانتهاكات: {count}",
|
|
2465
|
+
"fixesApplied": "الإصلاحات المطبقة: {count}",
|
|
2466
|
+
"nextSteps": "💡 NEXT STEPS:",
|
|
2467
|
+
"congratulations": "🎉 تهانينا! تتمتع جميع الملفات المحلية الآن بنقاء لغة مثالي!",
|
|
2468
|
+
"cicdIntegration": "✅ فكر في دمج أداة التحقق من الصحة في مسار CI/CD الخاص بك",
|
|
2469
|
+
"automatedChecks": "✅ قم بإعداد عمليات فحص آلية للترجمات الجديدة",
|
|
2470
|
+
"greatProgress": "🎯 تقدم عظيم! لقد تم حل معظم القضايا.",
|
|
2471
|
+
"manualReview": "🔍 مراجعة المخالفات المتبقية يدوياً",
|
|
2472
|
+
"addMappings": "🌐 فكر في إضافة المزيد من تعيينات الترجمة لحالات الحافة",
|
|
2473
|
+
"goodProgress": "📈 تم إحراز تقدم جيد، ولكن هناك حاجة إلى المزيد من العمل.",
|
|
2474
|
+
"expandMappings": "🔧 توسيع تعيينات الترجمة الآلية",
|
|
2475
|
+
"professionalReview": "👥 فكر في المراجعة اليدوية للترجمات المعقدة",
|
|
2476
|
+
"runAgain": "🔄 قم بتشغيل سير العمل مرة أخرى بعد إضافة المزيد من التعيينات",
|
|
2477
|
+
"limitedProgress": "⚠️تقدم محدود. قد تكون هناك حاجة للتدخل اليدوي.",
|
|
2478
|
+
"reviewMappings": "🔍 مراجعة تعيينات الترجمة وإضافة المفقودة منها",
|
|
2479
|
+
"professionalServices": "👥 فكر في خدمات الترجمة الاحترافية",
|
|
2480
|
+
"checkIssues": "🔧 التحقق من وجود مشكلات منهجية في الملفات المحلية",
|
|
2481
|
+
"success": "✅",
|
|
2482
|
+
"warning": "⚠️"
|
|
2483
|
+
}
|
|
2484
|
+
},
|
|
2485
|
+
"consoleI18nTester": {
|
|
2486
|
+
"found_target_file": "تم العثور على الملف الهدف",
|
|
2487
|
+
"scanning_files_for_console_statements": "فحص الملفات لبيانات وحدة التحكم",
|
|
2488
|
+
"found_javascript_files": "تم العثور على ملفات جافا سكريبت",
|
|
2489
|
+
"console_i18n_analysis_results": "نتائج تحليل وحدة التحكم i18n",
|
|
2490
|
+
"total_console_statements": "إجمالي بيانات وحدة التحكم",
|
|
2491
|
+
"translated_statements": "تصريحات مترجمة",
|
|
2492
|
+
"hardcoded_statements": "تصريحات مضمنة",
|
|
2493
|
+
"translation_coverage": "تغطية الترجمة",
|
|
2494
|
+
"coverage_by_file": "التغطية حسب الملف",
|
|
2495
|
+
"file_coverage_stats": "إحصائيات تغطية الملف",
|
|
2496
|
+
"hardcoded_console_statements": "بيانات وحدة التحكم المشفرة",
|
|
2497
|
+
"file_header": "رأس الملف",
|
|
2498
|
+
"line_statement": "بيان الخط",
|
|
2499
|
+
"suggested_key": "المفتاح المقترح",
|
|
2500
|
+
"suggested_replacement": "الاستبدال المقترح",
|
|
2501
|
+
"recommendations": "التوصيات",
|
|
2502
|
+
"recommendation_1": "التوصية 1",
|
|
2503
|
+
"recommendation_2": "التوصية 2",
|
|
2504
|
+
"recommendation_3": "التوصية 3",
|
|
2505
|
+
"recommendation_4": "التوصية 4",
|
|
2506
|
+
"translation_keys_to_add": "مفاتيح الترجمة المراد إضافتها",
|
|
2507
|
+
"add_keys_instruction": "إضافة تعليمات المفاتيح",
|
|
2508
|
+
"perfect_translation_coverage": "تغطية ترجمة مثالية",
|
|
2509
|
+
"all_statements_using_translation": "جميع البيانات باستخدام الترجمة",
|
|
2510
|
+
"i18n_console_translation_checker": "مدقق ترجمة وحدة التحكم I18n",
|
|
2511
|
+
"script_description_line1": "سطر وصف البرنامج النصي1",
|
|
2512
|
+
"script_description_line2": "سطر وصف البرنامج النصي2",
|
|
2513
|
+
"analysis_completed_in_duration": "اكتمل التحليل في المدة",
|
|
2514
|
+
"report_saved_to_path": "تم حفظ التقرير في المسار",
|
|
2515
|
+
"found_hardcoded_messages": "تم العثور على رسائل مشفرة",
|
|
2516
|
+
"all_console_messages_use_translation": "تستخدم جميع رسائل وحدة التحكم الترجمة"
|
|
2517
|
+
},
|
|
2518
|
+
"exportTranslations": {
|
|
2519
|
+
"createdDirectory": "الدليل الذي تم إنشاؤه",
|
|
2520
|
+
"foundFiles": "الملفات التي تم العثور عليها",
|
|
2521
|
+
"createdTemplate": "القالب الذي تم إنشاؤه",
|
|
2522
|
+
"skippedExisting": "تخطي الموجودة",
|
|
2523
|
+
"title": "عنوان",
|
|
2524
|
+
"creatingTemplates": "إنشاء القوالب",
|
|
2525
|
+
"summary": "ملخص",
|
|
2526
|
+
"summaryLanguages": "اللغات الموجزة",
|
|
2527
|
+
"summaryFilesPerLanguage": "ملفات ملخصة لكل لغة",
|
|
2528
|
+
"summaryTotalFiles": "ملخص إجمالي الملفات",
|
|
2529
|
+
"success": "نجاح",
|
|
2530
|
+
"location": "موقع",
|
|
2531
|
+
"nextSteps": "الخطوات التالية"
|
|
2532
|
+
},
|
|
2533
|
+
"dashboard": {
|
|
2534
|
+
"title": "عنوان",
|
|
2535
|
+
"overview": "ملخص"
|
|
2536
|
+
},
|
|
2537
|
+
"auth": {
|
|
2538
|
+
"title": "عنوان",
|
|
2539
|
+
"email": "بريد إلكتروني",
|
|
2540
|
+
"password": "كلمة المرور",
|
|
2541
|
+
"signIn": "تسجيل الدخول",
|
|
2542
|
+
"forgotPassword": "هل نسيت كلمة السر",
|
|
2543
|
+
"signUp": "اشتراك"
|
|
2544
|
+
},
|
|
2545
|
+
"checkUsage": {
|
|
2546
|
+
"usage_analysis_failed": "فشل تحليل الاستخدام."
|
|
2547
|
+
},
|
|
2548
|
+
"completeTranslations": {
|
|
2549
|
+
"warning_could_not_parse_filepa": "تحذير: لا يمكن تحليل مسار الملف: {filePath}"
|
|
2550
|
+
},
|
|
2551
|
+
"pressEnterToContinue": "اضغط على Enter للمتابعة...",
|
|
2552
|
+
"status": {
|
|
2553
|
+
"exitingCompleted": "اكتمل سير العمل. جارٍ الخروج..."
|
|
2554
|
+
},
|
|
2555
|
+
"prompt": {
|
|
2556
|
+
"yesTokens": [
|
|
2557
|
+
"ذ",
|
|
2558
|
+
"نعم"
|
|
2559
|
+
],
|
|
2560
|
+
"noTokens": [
|
|
2561
|
+
"ن",
|
|
2562
|
+
"لا"
|
|
2563
|
+
]
|
|
2564
|
+
},
|
|
2565
|
+
"translate": {
|
|
2566
|
+
"title": "ترجمة تلقائية",
|
|
2567
|
+
"sourceDirectory": {
|
|
2568
|
+
"title": "الدليل المحلي المصدر",
|
|
2569
|
+
"currentProject": "المشروع الحالي: {dir}",
|
|
2570
|
+
"accepted": "مقبول: مسار مطلق، أو مسار متعلق بالمشروع الحالي.",
|
|
2571
|
+
"localeRootExample": "./locales (ثم اختر لغة المصدر: en)",
|
|
2572
|
+
"folderHint": "يمكن أن يحتوي المجلد على ملفات JSON مباشرة، أو مجلدات لغة مثل ./locales/en.",
|
|
2573
|
+
"defaultNotFound": "لم يتم العثور على الدليل الافتراضي: {dir}",
|
|
2574
|
+
"enterExisting": "الرجاء إدخال دليل موجود يحتوي على ملفات لغة JSON.",
|
|
2575
|
+
"directoryNotFound": "لم يتم العثور على الدليل: {dir}",
|
|
2576
|
+
"enterFolderExample": "أدخل مجلدًا موجودًا، على سبيل المثال ./locales/en.",
|
|
2577
|
+
"notDirectory": "ليس دليلا: {dir}",
|
|
2578
|
+
"using": "باستخدام الدليل المصدر: {dir}"
|
|
2579
|
+
},
|
|
2580
|
+
"targetLanguages": {
|
|
2581
|
+
"title": "اللغة (اللغات) المستهدفة",
|
|
2582
|
+
"allConfigured": "أ) جميع اللغات المستهدفة التي تم تكوينها: {languages}",
|
|
2583
|
+
"noneConfigured": "أ) جميع اللغات المستهدفة التي تم تكوينها: لم يتم تكوين أي منها",
|
|
2584
|
+
"enterCodes": "أو أدخل واحدًا أو أكثر من رموز اللغة مفصولة بفواصل/مسافات.",
|
|
2585
|
+
"sourceExcluded": "لغة المصدر \"{lang}\" سيتم استبعاده تلقائيًا.",
|
|
2586
|
+
"noneSelected": "لم يتم تحديد لغات مستهدفة صالحة. الإجهاض.",
|
|
2587
|
+
"configureHint": "قم بتكوين اللغات الافتراضية في .i18ntk-config، أو أدخل رموز الهدف يدويًا.",
|
|
2588
|
+
"selected": "اللغات المستهدفة: {languages}"
|
|
2589
|
+
},
|
|
2590
|
+
"protection": {
|
|
2591
|
+
"title": "المصطلحات والمفاتيح المحمية"
|
|
2592
|
+
},
|
|
2593
|
+
"common": {
|
|
2594
|
+
"default": "تقصير: {value}",
|
|
2595
|
+
"examples": "أمثلة:",
|
|
2596
|
+
"exampleValue": "مثال: {value}",
|
|
2597
|
+
"examplesInline": "أمثلة: {examples}",
|
|
2598
|
+
"pressEnterDefault": "اضغط على Enter لاستخدام الإعداد الافتراضي.",
|
|
2599
|
+
"usingDefault": "باستخدام الافتراضي: {value}"
|
|
2600
|
+
},
|
|
2601
|
+
"sourceLanguage": {
|
|
2602
|
+
"title": "كود اللغة المصدر",
|
|
2603
|
+
"hint": "يجب أن يتطابق هذا مع لغة قيم JSON المصدر.",
|
|
2604
|
+
"using": "استخدام اللغة المصدر: {lang}",
|
|
2605
|
+
"invalid": "رمز اللغة غير صالح. استخدم أكثر من حرفين (مثل en وde وfr)."
|
|
2606
|
+
},
|
|
2607
|
+
"files": {
|
|
2608
|
+
"title": "ما الملف (الملفات) المراد ترجمته؟",
|
|
2609
|
+
"all": "أ) جميع ملفات JSON ({count}: {files})",
|
|
2610
|
+
"choicePrompt": "الاختيار [أ/الكل أو رقم الملف]:",
|
|
2611
|
+
"invalidChoice": "اختيار غير صالح. الإجهاض."
|
|
2612
|
+
},
|
|
2613
|
+
"dryRun": {
|
|
2614
|
+
"previewFor": "معاينة التشغيل الجاف لـ \"{lang}\"..."
|
|
2615
|
+
},
|
|
2616
|
+
"confirm": {
|
|
2617
|
+
"proceed": "المضي قدما في الترجمة الفعلية؟",
|
|
2618
|
+
"yesNoPrompt": "[ص] es / [ن] س:",
|
|
2619
|
+
"cancelled": "تم إلغاء الترجمة."
|
|
2620
|
+
},
|
|
2621
|
+
"run": {
|
|
2622
|
+
"translatingTo": "الترجمة إلى \"{lang}\"...",
|
|
2623
|
+
"failedFor": "فاشل ل\"{lang}\": {error}"
|
|
2624
|
+
},
|
|
2625
|
+
"summary": {
|
|
2626
|
+
"title": "ملخص:",
|
|
2627
|
+
"complete": "اكتملت الترجمة!"
|
|
2628
|
+
},
|
|
2629
|
+
"nonInteractive": {
|
|
2630
|
+
"useDirect": "الوضع غير التفاعلي. استخدم CLI المباشر بدلاً من ذلك:"
|
|
2631
|
+
},
|
|
2632
|
+
"errors": {
|
|
2633
|
+
"sourceDirectoryNotFound": "لم يتم العثور على دليل اللغة المصدر: {dir}"
|
|
2634
|
+
}
|
|
2635
|
+
}
|
|
2636
|
+
}
|