diff --git a/README.md b/README.md
index b2dab52..e29738f 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@
Open Ticket is the most advanced & customisable discord ticket bot that you will ever find! You can customise up to 300+ variables! This includes Html Transcripts, Advanced Plugins, Custom Embeds, Questions/Modals, Stats & more!
-You're also able to customise every little aspect of the bot! From embeds to transcripts. Open Ticket is also translated in more than 18 Languages! If you need any help, feel free to join our discord server!
+You're also able to customise every little aspect of the bot! From embeds to transcripts. Open Ticket is also translated in more than 19 Languages! If you need any help, feel free to join our discord server!
⭐️ Help us grow by giving a star! ⭐️
@@ -131,9 +131,9 @@ A big thanks to all our sponsors! Without them, it wouldn't be possible to creat
|🇹🇭 Thai |modshd |🟢 Up To Date |
|🇹🇷 Turkish |palestinian |🟢 Up To Date |
|🇫🇷 French |guillee.3 |🟢 Up To Date |
+|🇦🇪 Arabic |palestinian |🟢 Up To Date |
|🇪🇪 Estonian |iamnotmega |🔵 Up To Date (ChatGPT) |
|🇫🇮 Finnish |iamnotmega |🔵 Up To Date (ChatGPT) |
-|🇦🇪 Arabic |deqressing |🟠 Temporary Outdated (beta) |
|🇷🇺 Russian |apexo & ander |🟠 Temporary Outdated (beta) |
|🇵🇱 Polish |mkevas |🟠 Temporary Outdated (beta) |
|🇳🇴 Norwegian |noonenook |🟠 Temporary Outdated (beta) |
diff --git a/index.js b/index.js
index 5c6053b..13d1eda 100644
--- a/index.js
+++ b/index.js
@@ -4,7 +4,8 @@ const nodepath = require('path')
/////////////// STARTUP FLAGS ///////////////
const flags = [
- //add startup flags here (e.g. "--no-compile")
+ //PTERODACTYL PANEL
+ //add startup flags here (e.g. "--no-compile") when running via the panel
]
process.argv.push(...flags)
/////////////// STARTUP FLAGS ///////////////
diff --git a/languages/arabic.json b/languages/arabic.json
new file mode 100644
index 0000000..4402491
--- /dev/null
+++ b/languages/arabic.json
@@ -0,0 +1,478 @@
+{
+ "_TRANSLATION": {
+ "otversion": "v4.0.0",
+ "translators": ["palestinian"],
+ "lastedited": "06/12/2024",
+ "language": "Arabic",
+ "automated": false
+ },
+ "checker": {
+ "system": {
+ "typeError": "[خطأ]",
+ "headerOpenTicket": "فتح تذكرة",
+ "typeWarning": "[تحذير]",
+ "typeInfo": "[معلومات]",
+ "headerConfigChecker": "مدقق التكوين",
+ "headerDescription": "تحقق من الأخطاء في ملفات التكوين الخاصة بك!",
+ "footerError": "لن يبدأ البوت حتى يتم إصلاح جميع {0}!",
+ "footerWarning": "من المستحسن إصلاح جميع {0} قبل البدء!",
+ "footerSupport": "الدعم: {0} - الوثائق: {1}",
+ "compactInformation": "استخدم {0} لمزيد من المعلومات!",
+ "dataPath": "المسار",
+ "dataDocs": "الوثائق",
+ "dataMessages": "الرسالة"
+ },
+ "messages": {
+ "stringTooShort": "لا يمكن أن تكون هذه السلسلة أقصر من {0} حرفًا!",
+ "stringTooLong": "لا يمكن أن تكون هذه السلسلة أطول من {0} حرفًا!",
+ "stringLengthInvalid": "يجب أن تكون هذه السلسلة بطول {0} حرفًا!",
+ "stringStartsWith": "يجب أن تبدأ هذه السلسلة بـ {0}!",
+ "stringEndsWith": "يجب أن تنتهي هذه السلسلة بـ {0}!",
+ "stringContains": "يجب أن تحتوي هذه السلسلة على {0}!",
+ "stringChoices": "يمكن أن تكون هذه السلسلة واحدة فقط من القيم التالية: {0}!",
+ "stringRegex": "هذه السلسلة غير صالحة!",
+
+ "numberTooShort": "لا يمكن أن يكون هذا الرقم أقصر من {0} حرفًا!",
+ "numberTooLong": "لا يمكن أن يكون هذا الرقم أطول من {0} حرفًا!",
+ "numberLengthInvalid": "يجب أن يكون هذا الرقم بطول {0} حرفًا!",
+ "numberTooSmall": "يجب أن يكون هذا الرقم على الأقل {0}!",
+ "numberTooLarge": "يجب أن يكون هذا الرقم على الأكثر {0}!",
+ "numberNotEqual": "يجب أن يكون هذا الرقم {0}!",
+ "numberStep": "يجب أن يكون هذا الرقم مضاعفًا لـ {0}!",
+ "numberStepOffset": "يجب أن يكون هذا الرقم مضاعفًا لـ {0} بدءًا من {1}!",
+ "numberStartsWith": "يجب أن يبدأ هذا الرقم بـ {0}!",
+ "numberEndsWith": "يجب أن ينتهي هذا الرقم بـ {0}!",
+ "numberContains": "يجب أن يحتوي هذا الرقم على {0}!",
+ "numberChoices": "يمكن أن يكون هذا الرقم واحدًا فقط من القيم التالية: {0}!",
+ "numberFloat": "لا يمكن أن يكون هذا الرقم عددًا عشريًا!",
+ "numberNegative": "لا يمكن أن يكون هذا الرقم سالبًا!",
+ "numberPositive": "لا يمكن أن يكون هذا الرقم موجبًا!",
+ "numberZero": "لا يمكن أن يكون هذا الرقم صفرًا!",
+
+ "booleanTrue": "لا يمكن أن تكون هذه القيمة صحيحة!",
+ "booleanFalse": "لا يمكن أن تكون هذه القيمة خاطئة!",
+
+ "arrayEmptyDisabled": "لا يُسمح أن تكون هذه المصفوفة فارغة!",
+ "arrayEmptyRequired": "هذه المصفوفة مطلوبة أن تكون فارغة!",
+ "arrayTooShort": "يجب أن تحتوي هذه المصفوفة على طول لا يقل عن {0}!",
+ "arrayTooLong": "يجب أن تحتوي هذه المصفوفة على طول لا يزيد عن {0}!",
+ "arrayLengthInvalid": "يجب أن تحتوي هذه المصفوفة على طول {0}!",
+ "arrayInvalidTypes": "يمكن أن تحتوي هذه المصفوفة فقط على الأنواع التالية: {0}!",
+ "arrayDouble": "لا تسمح هذه المصفوفة بنفس القيمة مرتين!",
+
+ "discordInvalidId": "هذا هو معرف {0} غير صالح!",
+ "discordInvalidIdOptions": "هذا هو معرف {0} غير صالح! يمكنك أيضًا استخدام واحد من هؤلاء: {1}!",
+ "discordInvalidToken": "هذا هو رمز ديسكورد غير صالح (من الناحية التركيبية)!",
+ "colorInvalid": "هذا هو لون سداسي غير صالح!",
+ "emojiTooShort": "يجب أن تحتوي هذه السلسلة على ما لا يقل عن {0} رموز تعبيرية!",
+ "emojiTooLong": "يجب أن تحتوي هذه السلسلة على ما لا يزيد عن {0} رموز تعبيرية!",
+ "emojiCustom": "لا يمكن أن تكون هذه الرموز التعبيرية رمزًا مخصصًا لديسكورد!",
+ "emojiInvalid": "هذه الرموز التعبيرية غير صالحة!",
+ "urlInvalid": "هذا الرابط غير صالح!",
+ "urlInvalidHttp": "يمكن أن يستخدم هذا الرابط بروتوكول https:// فقط!",
+ "urlInvalidProtocol": "يمكن أن يستخدم هذا الرابط بروتوكولات http:// و https:// فقط!",
+ "urlInvalidHostname": "هذا الرابط يحتوي على اسم مضيف غير مسموح به!",
+ "urlInvalidExtension": "هذا الرابط يحتوي على امتداد غير صالح! اختر بين: {0}!",
+ "urlInvalidPath": "هذا الرابط يحتوي على مسار غير صالح!",
+ "idNotUnique": "هذا المعرف ليس فريدًا، استخدم معرفًا آخر بدلاً من ذلك!",
+ "idNonExistent": "المعرف {0} غير موجود!",
+
+ "invalidType": "تحتاج هذه الخاصية إلى أن تكون من النوع: {0}!",
+ "propertyMissing": "الخاصية {0} مفقودة من هذا الكائن!",
+ "propertyOptional": "الخاصية {0} اختيارية في هذا الكائن!",
+ "objectDisabled": "هذا الكائن معطل، قم بتمكينه باستخدام {0}!",
+ "nullInvalid": "لا يمكن أن تكون هذه الخاصية فارغة!",
+ "switchInvalidType": "يجب أن تكون واحدة من الأنواع التالية: {0}!",
+ "objectSwitchInvalid": "يجب أن يكون هذا الكائن واحدًا من الأنواع التالية: {0}!",
+
+ "invalidLanguage": "هذه لغة غير صالحة!",
+ "invalidButton": "يجب أن تحتوي هذه الزر على {0} أو {1} على الأقل!",
+ "unusedOption": "الخيار {0} غير مستخدم في أي مكان!",
+ "unusedQuestion": "السؤال {0} غير مستخدم في أي مكان!",
+ "dropdownOption": "يمكن أن تحتوي لوحة مع تمكين القائمة المنسدلة على خيارات من نوع 'تذكرة' فقط!"
+ }
+ },
+ "actions": {
+ "buttons": {
+ "create": "زيارة التذكرة",
+ "close": "إغلاق التذكرة",
+ "delete": "حذف التذكرة",
+ "reopen": "إعادة فتح التذكرة",
+ "claim": "مطالبة بالتذكرة",
+ "unclaim": "إلغاء المطالبة بالتذكرة",
+ "pin": "تثبيت التذكرة",
+ "unpin": "إلغاء تثبيت التذكرة",
+ "clear": "حذف التذاكر",
+ "helpSwitchSlash": "عرض أوامر الشريحة",
+ "helpSwitchText": "عرض أوامر النص",
+ "helpPage": "صفحة {0}",
+ "withReason": "مع سبب",
+ "withoutTranscript": "بدون نص"
+ },
+ "titles": {
+ "created": "تم إنشاء التذكرة",
+ "close": "تم إغلاق التذكرة",
+ "delete": "تم حذف التذكرة",
+ "reopen": "تم إعادة فتح التذكرة",
+ "claim": "تم المطالبة بالتذكرة",
+ "unclaim": "تم إلغاء المطالبة بالتذكرة",
+ "pin": "تم تثبيت التذكرة",
+ "unpin": "تم إلغاء تثبيت التذكرة",
+ "rename": "تم إعادة تسمية التذكرة",
+ "move": "تم نقل التذكرة",
+ "add": "تم إضافة مستخدم إلى التذكرة",
+ "remove": "تم إزالة مستخدم من التذكرة",
+
+ "help": "الأوامر المتاحة",
+ "statsReset": "إعادة تعيين الإحصائيات",
+ "blacklistAdd": "تم حظر المستخدم",
+ "blacklistRemove": "تم الإفراج عن المستخدم",
+ "blacklistGet": "المستخدم المحظور",
+ "blacklistView": "القائمة السوداء الحالية",
+ "blacklistAddDm": "تمت إضافتك إلى القائمة السوداء",
+ "blacklistRemoveDm": "تمت إزالتك من القائمة السوداء",
+ "clear": "تم مسح التذاكر",
+ "roles": "تم تحديث الأدوار",
+
+ "autoclose": "تم إغلاق التذكرة تلقائيًا",
+ "autocloseEnabled": "تم تمكين الإغلاق التلقائي",
+ "autocloseDisabled": "تم تعطيل الإغلاق التلقائي",
+ "autodelete": "تم حذف التذكرة تلقائيًا",
+ "autodeleteEnabled": "تم تمكين الحذف التلقائي",
+ "autodeleteDisabled": "تم تعطيل الحذف التلقائي"
+ },
+ "descriptions": {
+ "create": "تم إنشاء تذكرتك. انقر على الزر أدناه للوصول إليها!",
+ "close": "تم إغلاق التذكرة بنجاح!",
+ "delete": "تم حذف التذكرة بنجاح!",
+ "reopen": "تم إعادة فتح التذكرة بنجاح!",
+ "claim": "تم المطالبة بالتذكرة بنجاح!",
+ "unclaim": "تم إلغاء المطالبة بالتذكرة بنجاح!",
+ "pin": "تم تثبيت التذكرة بنجاح!",
+ "unpin": "تم إلغاء تثبيت التذكرة بنجاح!",
+ "rename": "تم إعادة تسمية التذكرة إلى {0} بنجاح!",
+ "move": "تم نقل التذكرة إلى {0} بنجاح!",
+ "add": "{0} تم إضافته إلى التذكرة بنجاح!",
+ "remove": "{0} تم إزالته من التذكرة بنجاح!",
+
+ "helpExplanation": "`` => معلمة مطلوبة\n`[name]` => معلمة اختيارية",
+ "statsReset": "تم إعادة تعيين إحصائيات البوت بنجاح!",
+ "statsError": "تعذر عرض إحصائيات التذكرة!\n{0} ليست تذكرة!",
+ "blacklistAdd": "{0} تم حظره بنجاح!",
+ "blacklistRemove": "{0} تم الإفراج عنه بنجاح!",
+ "blacklistGetSuccess": "{0} محظور حاليًا!",
+ "blacklistGetEmpty": "{0} غير محظور حاليًا!",
+ "blacklistViewEmpty": "لم يتم حظر أي شخص بعد!",
+ "blacklistViewTip": "استخدم \"/blacklist add\" لحظر مستخدم!",
+ "clearVerify": "هل أنت متأكد أنك تريد حذف عدة تذاكر؟\nلا يمكن التراجع عن هذا الإجراء!",
+ "clearReady": "{0} تذاكر تم حذفها بنجاح!",
+ "rolesEmpty": "لم يتم تحديث أي أدوار!",
+
+ "autocloseLeave": "تم إغلاق هذه التذكرة تلقائيًا لأن المنشئ غادر الخادم!",
+ "autocloseTimeout": "تم إغلاق هذه التذكرة تلقائيًا لأنها كانت غير نشطة لأكثر من `{0} ساعة`!",
+ "autodeleteLeave": "تم حذف هذه التذكرة تلقائيًا لأن المنشئ غادر الخادم!",
+ "autodeleteTimeout": "تم حذف هذه التذكرة تلقائيًا لأنها كانت غير نشطة لأكثر من `{0} يوم`!",
+ "autocloseEnabled": "تم تمكين الإغلاق التلقائي في هذه التذكرة!\nسيتم إغلاقها عندما تكون غير نشطة لأكثر من `{0} ساعة`!",
+ "autocloseDisabled": "تم تعطيل الإغلاق التلقائي في هذه التذكرة!\nلن يتم إغلاقها تلقائيًا بعد الآن!",
+ "autodeleteEnabled": "تم تمكين الحذف التلقائي في هذه التذكرة!\nسيتم حذفها عندما تكون غير نشطة لأكثر من `{0} يوم`!",
+ "autodeleteDisabled": "تم تعطيل الحذف التلقائي في هذه التذكرة!\nلن يتم حذفها تلقائيًا بعد الآن!",
+
+ "ticketMessageLimit": "يمكنك فقط إنشاء {0} تذكرة(ات) في نفس الوقت!",
+ "ticketMessageAutoclose": "ستغلق هذه التذكرة تلقائيًا عندما تكون غير نشطة لمدة {0} ساعة!",
+ "ticketMessageAutodelete": "ستحذف هذه التذكرة تلقائيًا عندما تكون غير نشطة لمدة {0} يوم!",
+ "panelReady": "يمكنك العثور على اللوحة أدناه!\nيمكن الآن حذف هذه الرسالة!"
+ },
+ "modal": {
+ "closePlaceholder": "لماذا أغلقت هذه التذكرة؟",
+ "deletePlaceholder": "لماذا حذفت هذه التذكرة؟",
+ "reopenPlaceholder": "لماذا أعادت فتح هذه التذكرة؟",
+ "claimPlaceholder": "لماذا طالبت بهذه التذكرة؟",
+ "unclaimPlaceholder": "لماذا ألغيت المطالبة بهذه التذكرة؟",
+ "pinPlaceholder": "لماذا ثبتت هذه التذكرة؟",
+ "unpinPlaceholder": "لماذا ألغيت تثبيت هذه التذكرة؟"
+ },
+ "logs": {
+ "createLog": "تم إنشاء تذكرة جديدة بواسطة {0}!",
+ "closeLog": "تم إغلاق هذه التذكرة بواسطة {0}!",
+ "closeDm": "تم إغلاق تذكرتك في خادمنا!",
+ "deleteLog": "تم حذف هذه التذكرة بواسطة {0}!",
+ "deleteDm": "تم حذف تذكرتك في خادمنا!",
+ "reopenLog": "تم إعادة فتح هذه التذكرة بواسطة {0}!",
+ "reopenDm": "تم إعادة فتح تذكرتك في خادمنا!",
+ "claimLog": "تم المطالبة بهذه التذكرة بواسطة {0}!",
+ "claimDm": "تم المطالبة بتذكرتك في خادمنا!",
+ "unclaimLog": "تم إلغاء المطالبة بهذه التذكرة بواسطة {0}!",
+ "unclaimDm": "تم إلغاء المطالبة بتذكرتك في خادمنا!",
+ "pinLog": "تم تثبيت هذه التذكرة بواسطة {0}!",
+ "pinDm": "تم تثبيت تذكرتك في خادمنا!",
+ "unpinLog": "تم إلغاء تثبيت هذه التذكرة بواسطة {0}!",
+ "unpinDm": "تم إلغاء تثبيت تذكرتك في خادمنا!",
+ "renameLog": "تم إعادة تسمية هذه التذكرة إلى {0} بواسطة {1}!",
+ "renameDm": "تمت إعادة تسمية تذكرتك إلى {0} في خادمنا!",
+ "moveLog": "تم نقل هذه التذكرة إلى {0} بواسطة {1}!",
+ "moveDm": "تم نقل تذكرتك إلى {0} في خادمنا!",
+ "addLog": "{0} تم إضافته إلى هذه التذكرة بواسطة {1}!",
+ "addDm": "{0} تم إضافته إلى تذكرتك في خادمنا!",
+ "removeLog": "{0} تم إزالته من هذه التذكرة بواسطة {1}!",
+ "removeDm": "{0} تم إزالته من تذكرتك في خادمنا!",
+
+ "blacklistAddLog": "{0} تم حظره بواسطة {1}!",
+ "blacklistRemoveLog": "{0} تم إزالته من القائمة السوداء بواسطة {1}!",
+ "blacklistAddDm": "لقد تم حظرك في خادمنا!\nمن الآن فصاعدًا، لا يمكنك إنشاء تذكرة!",
+ "blacklistRemoveDm": "تمت إزالتك من القائمة السوداء في خادمنا!\nالآن يمكنك إنشاء تذاكر مرة أخرى!",
+ "clearLog": "{0} تذاكر تم حذفها بواسطة {1}!"
+ }
+ },
+ "transcripts": {
+ "success": {
+ "visit": "زيارة النص",
+ "ready": "تم إنشاء النص",
+ "textFileDescription": "هذا هو النص النصي لتذكرة محذوفة!",
+ "htmlProgress": "يرجى الانتظار بينما يتم معالجة هذا النص html...",
+
+ "createdChannel": "تم إنشاء نص جديد من نوع {0} في الخادم!",
+ "createdCreator": "تم إنشاء نص جديد من نوع {0} لأحد تذاكرك!",
+ "createdParticipant": "تم إنشاء نص جديد من نوع {0} في إحدى التذاكر التي شاركت فيها!",
+ "createdActiveAdmin": "تم إنشاء نص جديد من نوع {0} في إحدى التذاكر التي كنت مشرفًا فيها!",
+ "createdEveryAdmin": "تم إنشاء نص جديد من نوع {0} في إحدى التذاكر التي كنت مشرفًا فيها!",
+ "createdOther": "تم إنشاء نص جديد من نوع {0}!"
+ },
+ "errors": {
+ "retry": "إعادة المحاولة",
+ "continue": "حذف بدون نص",
+ "backup": "إنشاء نص احتياطي",
+ "error": "حدث خطأ أثناء محاولة إنشاء النص.\nماذا تريد أن تفعل؟\n\nلن يتم حذف هذه التذكرة حتى تضغط على أحد هذه الأزرار."
+ }
+ },
+ "errors": {
+ "titles": {
+ "internalError": "خطأ داخلي",
+ "optionMissing": "خيار الأمر مفقود",
+ "optionInvalid": "خيار الأمر غير صالح",
+ "unknownCommand": "أمر غير معروف",
+ "noPermissions": "لا توجد أذونات",
+ "unknownTicket": "تذكرة غير معروفة",
+ "deprecatedTicket": "تذكرة قديمة",
+ "unknownOption": "خيار غير معروف",
+ "unknownPanel": "لوحة غير معروفة",
+ "notInGuild": "غير موجود في الخادم",
+ "channelRename": "غير قادر على إعادة تسمية القناة",
+ "busy": "التذكرة مشغولة"
+ },
+ "descriptions": {
+ "askForInfo": "اتصل بمالك هذا البوت لمزيد من المعلومات!",
+ "askForInfoResolve": "اتصل بمالك هذا البوت إذا لم تحل هذه المشكلة بعد عدة محاولات.",
+ "internalError": "فشل في الاستجابة لهذا {0} بسبب خطأ داخلي!",
+ "optionMissing": "معلمة مطلوبة مفقودة في هذا الأمر!",
+ "optionInvalid": "معلمة في هذا الأمر غير صالحة!",
+ "optionInvalidChoose": "اختر بين",
+ "unknownCommand": "حاول زيارة قائمة المساعدة لمزيد من المعلومات!",
+ "noPermissions": "ليس لديك إذن لاستخدام هذا {0}!",
+ "noPermissionsList": "الأذونات المطلوبة: (واحد منها)",
+ "noPermissionsCooldown": "ليس لديك إذن لاستخدام هذا {0} لأن لديك فترة انتظار!",
+ "noPermissionsBlacklist": "ليس لديك إذن لاستخدام هذا {0} لأنك محظور!",
+ "noPermissionsLimitGlobal": "ليس لديك إذن لإنشاء تذكرة لأن الخادم وصل إلى الحد الأقصى من التذاكر!",
+ "noPermissionsLimitGlobalUser ": "ليس لديك إذن لإنشاء تذكرة لأنك وصلت إلى الحد الأقصى من التذاكر!",
+ "noPermissionsLimitOption": "ليس لديك إذن لإنشاء تذكرة لأن الخادم وصل إلى الحد الأقصى من التذاكر لهذا الخيار!",
+ "noPermissionsLimitOptionUser ": "ليس لديك إذن لإنشاء تذكرة لأنك وصلت إلى الحد الأقصى من التذاكر لهذا الخيار!",
+ "unknownTicket": "حاول هذا الأمر مرة أخرى في تذكرة صالحة!",
+ "deprecatedTicket": "القناة الحالية ليست تذكرة صالحة! قد تكون تذكرة من إصدار قديم من Open Ticket!",
+ "notInGuild": "هذا {0} لا يعمل في DM! يرجى المحاولة مرة أخرى في خادم!",
+ "channelRename": "بسبب حدود معدل ديسكورد، من المستحيل حاليًا على البوت إعادة تسمية القناة. سيتم إعادة تسمية القناة تلقائيًا بعد 10 دقائق إذا لم يتم إعادة تشغيل البوت.",
+ "channelRenameSource": "مصدر هذا الخطأ هو: {0}",
+ "busy": "غير قادر على استخدام هذا {0}!\nالتذكرة قيد المعالجة حاليًا بواسطة البوت.\n\nيرجى المحاولة مرة أخرى بعد بضع ثوانٍ!"
+ },
+ "optionInvalidReasons": {
+ "stringRegex": "القيمة لا تتطابق مع النمط!",
+ "stringMinLength": "تحتاج القيمة إلى أن تكون على الأقل {0} حرفًا!",
+ "stringMaxLength": "تحتاج القيمة إلى أن تكون على الأكثر {0} حرفًا!",
+ "numberInvalid": "رقم غير صالح!",
+ "numberMin": "يحتاج الرقم إلى أن يكون على الأقل {0}!",
+ "numberMax": "يحتاج الرقم إلى أن يكون على الأكثر {0}!",
+ "numberDecimal": "الرقم غير مسموح به كعدد عشري!",
+ "numberNegative": "الرقم غير مسموح به كعدد سالب!",
+ "numberPositive": "الرقم غير مسموح به كعدد موجب!",
+ "numberZero": "الرقم غير مسموح به كعدد صفر!",
+ "channelNotFound": "غير قادر على العثور على القناة!",
+ "userNotFound": "غير قادر على العثور على المستخدم!",
+ "roleNotFound": "غير قادر على العثور على الدور!",
+ "memberNotFound": "غير قادر على العثور على المستخدم!",
+ "mentionableNotFound": "غير قادر على العثور على مستخدم أو دور!",
+ "channelType": "نوع القناة غير صالح!",
+ "notInGuild": "يتطلب هذا الخيار أن تكون في خادم!"
+ },
+ "permissions": {
+ "developer": "تحتاج إلى أن تكون مطور البوت.",
+ "owner": "تحتاج إلى أن تكون مالك الخادم.",
+ "admin": "تحتاج إلى أن تكون مشرف الخادم.",
+ "moderator": "تحتاج إلى أن تكون مشرفًا.",
+ "support": "تحتاج إلى أن تكون في فريق الدعم.",
+ "member": "تحتاج إلى أن تكون عضوًا.",
+ "discord-administrator": "تحتاج إلى الحصول على إذن `ADMINISTRATOR`."
+ },
+ "actionInvalid": {
+ "close": "التذكرة مغلقة بالفعل!",
+ "reopen": "التذكرة لم تُغلق بعد!",
+ "claim": "التذكرة مُطالبة بالفعل!",
+ "unclaim": "التذكرة لم تُطالب بعد!",
+ "pin": "التذكرة مثبتة بالفعل!",
+ "unpin": "التذكرة لم تُثبت بعد!",
+ "add": "هذا المستخدم لديه بالفعل إمكانية الوصول إلى التذكرة!",
+ "remove": "غير قادر على إزالة هذا المستخدم من التذكرة!"
+ }
+ },
+ "params": {
+ "uppercase": {
+ "ticket": "تذكرة",
+ "tickets": "تذاكر",
+ "reason": "سبب",
+ "creator": "المنشئ",
+ "remaining": "الوقت المتبقي",
+ "added": "تمت الإضافة",
+ "removed": "تمت الإزالة",
+ "filter": "تصفية",
+ "claimedBy": "مطالب بها من قبل {0}",
+ "method": "طريقة",
+ "type": "نوع",
+ "blacklisted": "محظور",
+ "panel": "لوحة",
+ "command": "أمر",
+ "system": "نظام",
+ "true": "صحيح",
+ "false": "خطأ",
+ "syntax": "بناء الجملة",
+ "originalName": "الاسم الأصلي",
+ "newName": "الاسم الجديد",
+ "until": "حتى",
+ "validOptions": "خيارات صالحة",
+ "validPanels": "لوحات صالحة",
+ "autoclose": "إغلاق تلقائي",
+ "autodelete": "حذف تلقائي",
+ "startupDate": "تاريخ بدء التشغيل",
+ "version": "إصدار",
+ "name": "اسم",
+ "role": "دور",
+ "status": "حالة",
+ "claimed": "مطالب بها",
+ "pinned": "مثبتة",
+ "creationDate": "تاريخ الإنشاء"
+ },
+ "lowercase": {
+ "text": "نص",
+ "html": "html",
+ "command": "أمر",
+ "modal": "نموذج",
+ "button": "زر",
+ "dropdown": "قائمة منسدلة",
+ "method": "طريقة"
+ }
+ },
+ "commands": {
+ "reason": "حدد سببًا اختياريًا سيكون مرئيًا في السجلات.",
+ "help": "احصل على قائمة بجميع الأوامر المتاحة.",
+ "panel": "قم بإنشاء رسالة مع قائمة منسدلة أو أزرار (لإنشاء تذكرة).",
+ "panelId": "معرف اللوحة التي تريد إنشائها.",
+ "panelAutoUpdate": "هل تريد أن يتم تحديث هذه اللوحة تلقائيًا عند تعديلها؟",
+ "ticket": "قم بإنشاء تذكرة على الفور.",
+ "ticketId": "معرف التذكرة التي تريد إنشائها.",
+ "close": "أغلق تذكرة.",
+ "delete": "احذف تذكرة.",
+ "deleteNoTranscript": "احذف هذه التذكرة دون إنشاء نص.",
+ "reopen": "أعد فتح تذكرة.",
+ "claim": "اطلب تذكرة.",
+ "claimUser ": "اطلب هذه التذكرة لشخص آخر بدلاً من نفسك.",
+ "unclaim": "ألغِ مطالبة بتذكرة.",
+ "pin": "ثبّت تذكرة.",
+ "unpin": "ألغِ تثبيت تذكرة.",
+ "move": "انقل تذكرة.",
+ "moveId": "معرف الخيار الذي تريد الانتقال إليه.",
+ "rename": "أعد تسمية تذكرة.",
+ "renameName": "الاسم الجديد لهذه التذكرة.",
+ "add": "أضف مستخدمًا إلى تذكرة.",
+ "addUser ": "المستخدم الذي تريد إضافته.",
+ "remove": "إزالة مستخدم من تذكرة.",
+ "removeUser ": "المستخدم الذي تريد إزالته.",
+ "blacklist": "إدارة القائمة السوداء للتذاكر.",
+ "blacklistView": "عرض قائمة بالمستخدمين المحظورين حاليًا.",
+ "blacklistAdd": "إضافة مستخدم إلى القائمة السوداء.",
+ "blacklistRemove": "إزالة مستخدم من القائمة السوداء.",
+ "blacklistGet": "احصل على تفاصيل من مستخدم محظور.",
+ "blacklistGetUser ": "المستخدم الذي تريد الحصول على تفاصيل منه.",
+ "stats": "عرض إحصائيات من البوت، أو عضو، أو تذكرة.",
+ "statsReset": "إعادة تعيين جميع إحصائيات البوت (والبدء من الصفر).",
+ "statsGlobal": "عرض الإحصائيات العالمية.",
+ "statsUser ": "عرض إحصائيات مستخدم في الخادم.",
+ "statsUser User": "المستخدم الذي تريد عرض إحصائياته.",
+ "statsTicket": "عرض إحصائيات تذكرة في الخادم.",
+ "statsTicketTicket": "التذكرة التي تريد عرض إحصائياتها.",
+ "clear": "احذف عدة تذاكر في نفس الوقت.",
+ "clearFilter": "الفلتر لحذف التذاكر.",
+ "clearFilters": {
+ "all": "الكل",
+ "open": "مفتوحة",
+ "close": "مغلقة",
+ "claim": "مطالب بها",
+ "unclaim": "غير مطلوبة",
+ "pin": "مثبتة",
+ "unpin": "غير مثبتة",
+ "autoclose": "مغلقة تلقائيًا"
+ },
+ "autoclose": "إدارة الإغلاق التلقائي في تذكرة.",
+ "autocloseDisable": "تعطيل الإغلاق التلقائي في هذه التذكرة.",
+ "autocloseEnable": "تمكين الإغلاق التلقائي في هذه التذكرة.",
+ "autocloseEnableTime": "عدد الساعات التي تحتاجها هذه التذكرة لتكون غير نشطة لإغلاقها.",
+ "autodelete": "إدارة الحذف التلقائي في تذكرة.",
+ "autodeleteDisable": "تعطيل الحذف التلقائي في هذه التذكرة.",
+ "autodeleteEnable": "تمكين الحذف التلقائي في هذه التذكرة.",
+ "autodeleteEnableTime": "عدد الأيام التي تحتاجها هذه التذكرة لتكون غير نشطة لحذفها."
+ },
+ "helpMenu": {
+ "help": "احصل على قائمة بجميع الأوامر المتاحة.",
+ "ticket": "قم بإنشاء تذكرة على الفور.",
+ "close": "أغلق تذكرة، هذا يعطل الكتابة في هذه القناة.",
+ "delete": "احذف تذكرة، هذا ينشئ نصًا عند تمكينه.",
+ "reopen": "أعد فتح تذكرة، هذا يمكّن الكتابة في هذه القناة مرة أخرى.",
+ "pin": "ثبّت تذكرة. سيؤدي ذلك إلى نقل التذكرة إلى الأعلى وإضافة رمز '📌' إلى الاسم.",
+ "unpin": "ألغِ تثبيت تذكرة. ستبقى التذكرة في مكانها ولكن ستفقد رمز '📌'.",
+ "move": "انقل تذكرة. سيؤدي ذلك إلى تغيير نوع هذه التذكرة.",
+ "rename": "أعد تسمية تذكرة. سيؤدي ذلك إلى تغيير اسم القناة لهذه التذكرة.",
+ "claim": "اطلب تذكرة. باستخدام هذا، يمكنك إبلاغ فريقك أنك تتعامل مع هذه التذكرة.",
+ "unclaim": "ألغِ مطالبة بتذكرة. باستخدام هذا، يمكنك إبلاغ فريقك أن هذه التذكرة متاحة مرة أخرى.",
+ "add": "أضف مستخدمًا إلى تذكرة. سيسمح ذلك للمستخدم بقراءة وكتابة في هذه التذكرة.",
+ "remove": "إزالة مستخدم من تذكرة. سيؤدي ذلك إلى إزالة القدرة على القراءة والكتابة لمستخدم في هذه التذكرة.",
+ "panel": "قم بإنشاء رسالة مع قائمة منسدلة أو أزرار (لإنشاء تذكرة).",
+ "blacklistView": "عرض قائمة بالمستخدمين المحظورين حاليًا.",
+ "blacklistAdd": "إضافة مستخدم إلى القائمة السوداء.",
+ "blacklistRemove": "إزالة مستخدم من القائمة السوداء.",
+ "blacklistGet": "احصل على تفاصيل من مستخدم محظور.",
+ "statsGlobal": "عرض الإحصائيات العالمية.",
+ "statsTicket": "عرض إحصائيات تذكرة في الخادم.",
+ "statsUser ": "عرض إحصائيات مستخدم في الخادم.",
+ "statsReset": "إعادة تعيين جميع إحصائيات البوت (والبدء من الصفر).",
+ "autocloseDisable": "تعطيل الإغلاق التلقائي في هذه التذكرة.",
+ "autocloseEnable": "تمكين الإغلاق التلقائي في هذه الت ذكرة.",
+ "autodeleteDisable": "تعطيل الحذف التلقائي في هذه التذكرة.",
+ "autodeleteEnable": "تمكين الحذف التلقائي في هذه التذكرة."
+ },
+ "stats": {
+ "scopes": {
+ "global": "إحصائيات عالمية",
+ "system": "إحصائيات النظام",
+ "user": "إحصائيات المستخدم",
+ "ticket": "إحصائيات التذكرة",
+ "participants": "المشاركون"
+ },
+ "properties": {
+ "ticketsCreated": "التذاكر التي تم إنشاؤها",
+ "ticketsClosed": "التذاكر المغلقة",
+ "ticketsDeleted": "التذاكر المحذوفة",
+ "ticketsReopened": "التذاكر المعاد فتحها",
+ "ticketsAutoclosed": "التذاكر المغلقة تلقائيًا",
+ "ticketsClaimed": "التذاكر المطالب بها",
+ "ticketsPinned": "التذاكر المثبتة",
+ "ticketsMoved": "التذاكر المنقولة",
+ "usersBlacklisted": "المستخدمون المحظورون",
+ "transcriptsCreated": "النصوص التي تم إنشاؤها"
+ }
+ }
+}
\ No newline at end of file
diff --git a/languages/turkish.json b/languages/turkish.json
index 9eed6e8..d77a434 100644
--- a/languages/turkish.json
+++ b/languages/turkish.json
@@ -2,7 +2,7 @@
"_TRANSLATION": {
"otversion": "v4.0.0",
"translators": ["palestinian"],
- "lastedited": "26/08/2024",
+ "lastedited": "26/11/2024",
"language": "Turkish",
"automated": false
},
diff --git a/src/core/api/defaults/language.ts b/src/core/api/defaults/language.ts
index 0f98a18..fc62c7e 100644
--- a/src/core/api/defaults/language.ts
+++ b/src/core/api/defaults/language.ts
@@ -463,6 +463,7 @@ export interface ODLanguageManagerIds_Default {
"openticket:thai":ODLanguage,
"openticket:turkish":ODLanguage,
"openticket:french":ODLanguage,
+ "openticket:arabic":ODLanguage,
//ADD NEW LANGUAGES HERE!!!
}
diff --git a/src/data/framework/languageLoader.ts b/src/data/framework/languageLoader.ts
index 6e4f2bc..ccb3983 100644
--- a/src/data/framework/languageLoader.ts
+++ b/src/data/framework/languageLoader.ts
@@ -21,6 +21,7 @@ export const loadAllLanguages = async () => {
openticket.languages.add(new api.ODJsonLanguage("openticket:thai","thai.json"))
openticket.languages.add(new api.ODJsonLanguage("openticket:turkish","turkish.json"))
openticket.languages.add(new api.ODJsonLanguage("openticket:french","french.json"))
+ openticket.languages.add(new api.ODJsonLanguage("openticket:arabic","arabic.json"))
/** How to add more languages?
* - Register the language to the manager (see above)