| """ |
| Internationalization (i18n) system for the bot. |
| Provides multi-language support with emoji placeholders and fallback handling. |
| COMPLETE SYSTEM: All commands, descriptions, buttons, panels, and messages. |
| """ |
|
|
| from bot.emojis import ui |
|
|
| |
| |
| |
|
|
| TRANSLATIONS: dict[str, dict[str, str]] = {} |
|
|
| |
| |
| |
|
|
| TRANSLATIONS["ar"] = { |
| |
| "lang.current": "{globe} لغة السيرفر الحالية: **العربية**.", |
| "lang.updated": "{ok} تم تغيير لغة البوت إلى **العربية**. استخدم `/menu` لرؤية الأوامر باللغة المحددة.", |
| "lang.invalid": "{no} لغة غير مدعومة. استخدم: `ar`, `de`, `en`, `es`, `fr`, `he`, `hi`, `id`, `it`, `ja`, `pt`, `ru`, `tr`, `zh`.", |
| |
| |
| "menu.title": "{menu} قائمة أوامر البوت", |
| "menu.desc": "اختر القسم من القائمة لعرض أوامر واضحة ومختصرة.", |
| "menu.all": "الكل", |
| "menu.ai": "لوحة الذكاء الاصطناعي", |
| "menu.none": "لا توجد أوامر متاحة.", |
| "menu.total": "الإجمالي: {count} أمر", |
| "menu.category": "القسم: {name}", |
| "menu.category_count": "{name}: {count} أمر", |
| "menu.refresh": "تحديث", |
| "menu.invite_button": "أضِفنا إلى سيرفرك", |
| "menu.support_button": "دعم على GitHub", |
| "menu.stats_title": "إحصاءات النيون", |
| "menu.stats.commands": "الأوامر: {total}", |
| "menu.stats.categories": "الفئات: {categories}", |
| "menu.stats.selected": "{name}: {count} أمر", |
| "menu.categories_header": "أبرز الفئات", |
| "menu.tip_title": "نصيحة", |
| "menu.tip": "استخدم القائمة لاستكشاف الأوامر أو اضغط تحديث للحصول على معلومات جديدة.", |
| "menu.footer": "الحالة الحالية: {selected}", |
| "menu.select_placeholder": "📂 اختر قسم...", |
| "menu.select_all_desc": "📚 عرض جميع الأوامر", |
| "menu.select_ai_desc": "🤖 أوامر الذكاء الاصطناعي", |
| "menu.hub_title": "📚 مركز الأوامر", |
| "menu.hub_welcome": "✨ **مرحباً بك في مركز الأوامر!**", |
| "menu.hub_explore": "🔍 استخدم القائمة أدناه لاستكشاف جميع الأوامر", |
| "menu.hub_usage": "⌨️ اكتب `/<أمر>` لاستخدام أي أمر", |
| "menu.stats_heading": "📊 الإحصائيات", |
| "menu.categories_heading": "🏆 أفضل الفئات", |
| "menu.tips_heading": "💡 نصائح سريعة", |
| "menu.quick_heading": "✨ أوامر سريعة", |
| "menu.tip_line_1": "استخدم `/help <أمر>` للتفاصيل", |
| "menu.tip_line_2": "معظم الأوامر تدعم السلاش والبادئة", |
| "menu.tip_line_3": "تحقق من `/menu` لجميع الأوامر", |
| "menu.quick_music": "تحكم الموسيقى", |
| "menu.quick_gamehub": "غرف الألعاب", |
| "menu.quick_tournament": "البطولات", |
| "menu.quick_economy": "لوحة الاقتصاد", |
| "menu.footer_viewing": "📚 عرض: {selected}", |
| "menu.category_desc.music": "🎵 أوامر الموسيقى والتحكم بالتشغيل", |
| "menu.category_desc.admin": "🛡️ أدوات إدارة السيرفر", |
| "menu.category_desc.fun": "🎮 ألعاب وترفيه", |
| "menu.category_desc.ai": "🤖 ميزات الذكاء الاصطناعي", |
| "menu.category_desc.utility": "🔧 أوامر مفيدة يومية", |
| "menu.category_desc.config": "⚙️ إعدادات البوت", |
| |
| |
| |
| "menu.cmd.play": "تشغيل أغنية بالرابط أو الاسم", |
| "menu.cmd.music_play": "تشغيل أغنية داخل لوحة الموسيقى", |
| "menu.cmd.music_panel": "فتح لوحة التحكم بالموسيقى", |
| "menu.cmd.music_skip": "تخطي المقطع الحالي", |
| "menu.cmd.music_stop": "إيقاف الموسيقى وتفريغ الطابور", |
| "menu.cmd.music_pause": "إيقاف مؤقت للموسيقى", |
| "menu.cmd.music_resume": "استئناف التشغيل", |
| "menu.cmd.music_queue": "عرض طابور الموسيقى", |
| "menu.cmd.music_volume": "تغيير مستوى الصوت", |
| "menu.cmd.music_nowplaying": "عرض المقطع الحالي", |
| "menu.cmd.music_filter": "تطبيق فلتر صوتي", |
| "menu.cmd.music_loop": "تغيير وضع التكرار", |
| "menu.cmd.music_shuffle": "خلط ترتيب الطابور", |
| "menu.cmd.music_247": "تفعيل/إيقاف وضع 24/7", |
| "menu.cmd.music_previous": "تشغيل المقطع السابق", |
| "menu.cmd.music_seek": "الانتقال لوقت محدد", |
| "menu.cmd.music_clear": "مسح طابور الموسيقى", |
| "menu.cmd.music_remove": "إزالة مقطع من الطابور", |
| "menu.cmd.music_move": "تحريك مقطع في الطابور", |
| "menu.cmd.music_jump": "القفز لمقطع محدد", |
| "menu.cmd.music_lyrics": "عرض كلمات الأغنية", |
| |
| |
| "menu.cmd.purge": "حذف عدد من الرسائل بسرعة", |
| "menu.cmd.ban": "حظر عضو من السيرفر", |
| "menu.cmd.unban": "فك حظر عضو", |
| "menu.cmd.kick": "طرد عضو من السيرفر", |
| "menu.cmd.mute": "كتم عضو لمدة محددة", |
| "menu.cmd.unmute": "فك كتم عضو", |
| "menu.cmd.warn": "تحذير عضو", |
| "menu.cmd.warnings": "عرض تحذيرات العضو", |
| "menu.cmd.clearwarn": "مسح تحذيرات العضو", |
| "menu.cmd.slowmode": "ضبط البطيء في القناة", |
| "menu.cmd.lock": "قفل القناة الحالية", |
| "menu.cmd.unlock": "فتح القناة المقفلة", |
| "menu.cmd.cloneemoji": "نسخ إيموجي للسيرفر", |
| "menu.cmd.awesomeroles": "إنشاء أدوار ملونة رائعة", |
| "menu.cmd.backupserver": "إنشاء نسخة احتياطية للسيرفر", |
| |
| |
| "menu.cmd.8ball": "اسأل الكرة السحرية", |
| "menu.cmd.meme": "صورة مضحكة عشوائية", |
| "menu.cmd.trivia": "أسئلة ثقافية متنوعة", |
| "menu.cmd.gaming_news": "آخر أخبار الألعاب", |
| "menu.cmd.free_games": "عروض ألعاب مجانية", |
| "menu.cmd.gamehub": "مركز الألعاب مع غرف خاصة", |
| "menu.cmd.xo": "لعبة إكس-أو", |
| "menu.cmd.choose": "اختيار عشوائي من خيارات", |
| "menu.cmd.mario": "تحدي ماريو الآركيد", |
| "menu.cmd.dice": "رمي نرد", |
| "menu.cmd.slots": "لعبة سلوتس", |
| "menu.cmd.coinflip": "رمي عملة", |
| "menu.cmd.roll": "رمي رقم عشوائي", |
| |
| |
| "menu.cmd.chat": "دردشة مع الذكاء الاصطناعي", |
| "menu.cmd.ask_image": "تحليل صورة بالذكاء الاصطناعي", |
| "menu.cmd.imagine": "إنشاء وصف لتوليد صور", |
| "menu.cmd.image_gen": "توليد صورة من وصف", |
| "menu.cmd.upscale": "تحسين جودة صورة", |
| "menu.cmd.summarize": "تلخيص محادثات القناة", |
| "menu.cmd.ai": "إعدادات الذكاء الاصطناعي", |
| "menu.cmd.ai_model": "تغيير موديل AI", |
| "menu.cmd.ai_channel": "تحديد قناة الشات التلقائي", |
| "menu.cmd.ai_auto": "تفعيل/إيقاف الشات التلقائي", |
| |
| |
| "menu.cmd.serverinfo": "معلومات السيرفر التفصيلية", |
| "menu.cmd.userinfo": "معلومات العضو التفصيلية", |
| "menu.cmd.botstats": "إحصائيات البوت", |
| "menu.cmd.poll": "إنشاء تصويت تفاعلي", |
| "menu.cmd.remind": "تعيين تذكير", |
| "menu.cmd.avatar": "عرض صورة البروفايل", |
| "menu.cmd.banner": "عرض بانر العضو", |
| "menu.cmd.translate": "ترجمة نص", |
| |
| |
| "menu.cmd.set": "إعدادات السيرفر", |
| "menu.cmd.set_log": "تحديد قناة السجلات", |
| "menu.cmd.set_welcome": "تحديد قناة الترحيب", |
| "menu.cmd.set_suggestions": "تحديد قناة الاقتراحات", |
| "menu.cmd.set_automod": "تفعيل/إيقاف المراقبة التلقائية", |
| "menu.cmd.set_dailymessage": "رسالة اليومية", |
| "menu.cmd.set_dailychannel": "قناة الرسالة اليومية", |
| "menu.cmd.set_dailytime": "وقت الرسالة اليومية", |
| "menu.cmd.set_dailytitle": "عنوان الرسالة اليومية", |
| "menu.cmd.set_dailyimage": "صورة الرسالة اليومية", |
| "menu.cmd.set_dailybutton": "زر الرسالة اليومية", |
| "menu.cmd.set_dailytoggle": "تفعيل/إيقاف اليومية", |
| "menu.cmd.set_pollchannel": "قناة التصويتات", |
| "menu.cmd.set_freegames": "قناة عروض الألعاب", |
| "menu.cmd.set_gamenews": "قناة أخبار الألعاب", |
| "menu.cmd.set_supportai": "قناة الدعم الذكي", |
| "menu.cmd.set_wisdom": "قناة الحكم اليومية", |
| |
| |
| "menu.cmd.language": "تغيير لغة البوت", |
| "menu.cmd.languages": "عرض اللغات المدعومة", |
| |
| |
| "menu.cmd.menu": "عرض قائمة الأوامر التفاعلية", |
| "menu.cmd.ping": "فحص سرعة البوت", |
| |
| |
| "menu.cmd.verify": "التحقق في السيرفر", |
| "menu.cmd.verifysetup": "إعداد نظام التحقق", |
| |
| |
| "menu.cmd.economy": "لوحة الاقتصاد", |
| "menu.cmd.balance": "عرض رصيدك", |
| "menu.cmd.daily": "المكافأة اليومية", |
| "menu.cmd.work": "اعمل واكسب مالاً", |
| "menu.cmd.gamble": "قمار برصيدك", |
| "menu.cmd.rob": "سرقة من عضو", |
| "menu.cmd.leaderboard": "لوحة المتصدرين", |
| "menu.cmd.shop": "المتجر", |
| "menu.cmd.buy": "شراء من المتجر", |
| "menu.cmd.inventory": "مخزونك", |
| "menu.cmd.transfer": "تحويل أموال لعضو", |
| |
| |
| "menu.cmd.xp": "عرض نقاط خبرتك", |
| "menu.cmd.level": "عرض مستواك", |
| "menu.cmd.rank": "عرض رتبتك", |
| |
| |
| "menu.cmd.tournament": "إدارة البطولات", |
| "menu.cmd.tournament_panel": "لوحة البطولة", |
| "menu.cmd.tournament_create": "إنشاء بطولة جديدة", |
| "menu.cmd.tournament_join": "الانضمام لبطولة", |
| "menu.cmd.tournament_start": "بدء البطولة", |
| "menu.cmd.tournament_end": "إنهاء البطولة", |
| "menu.cmd.tournament_lb": "لوحة تصنيف البطولات", |
| |
| |
| "menu.cmd.join": "دخول الروم الصوتي", |
| "menu.cmd.leave": "الخروج من الروم الصوتي", |
| "menu.cmd.play": "تشغيل أغنية", |
| "menu.cmd.pause": "إيقاف مؤقت", |
| "menu.cmd.skip": "تخطي المقطع", |
| "menu.cmd.stop": "إيقاف التشغيل", |
| "menu.cmd.queue": "عرض الطابور", |
| |
| |
| "menu.cmd.boardgames": "عرض ألعاب اللوح", |
| "menu.cmd.board_start": "بدء لعبة لوح", |
| "menu.cmd.board_move": "لعب حركة", |
| "menu.cmd.board_forfeit": "الانسحاب من اللعبة", |
| "menu.cmd.chess": "بدء لعبة شطرنج", |
| "menu.cmd.checkers": "بدء لعبة الداما", |
| "menu.cmd.connect4": "بدء لعبة الاتصال 4", |
| "menu.cmd.othello": "بدء لعبة أوثيلو", |
| "menu.cmd.games_panel": "لوحة الألعاب", |
| |
| |
| "menu.cmd.createpoll": "إنشاء تصويت", |
| "menu.cmd.quickpoll": "تصويت سريع", |
| "menu.cmd.votepoll": "تصويت بخيارات", |
| "menu.cmd.strawpoll": "تصويت مجهول", |
| "menu.cmd.pollpanel": "لوحة التصويت", |
| "menu.cmd.pollstats": "إحصائيات التصويت", |
| "menu.cmd.endpoll": "إنهاء التصويت", |
| "menu.cmd.poll": "إنشاء تصويت", |
| |
| |
| "menu.cmd.suggest": "إرسال اقتراح", |
| "menu.cmd.suggestion": "إدارة الاقتراحات", |
| "menu.cmd.setsuggestionchannel": "قناة الاقتراحات", |
| "menu.cmd.setpollchannel": "قناة التصويتات", |
| |
| |
| "menu.cmd.deposit": "إيداع في البنك", |
| "menu.cmd.withdraw": "سحب من البنك", |
| "menu.cmd.profile": "ملفك الشخصي", |
| |
| |
| "menu.cmd.wisdom_today": "حكمة اليوم", |
| |
| |
| "menu.cmd.gaming_news": "أخبار الألعاب", |
| "menu.cmd.free_games": "ألعاب مجانية", |
| "menu.cmd.gamehub": "مركز الألعاب", |
| |
| |
| "menu.cmd.guess": "لعبة التخمين", |
| "menu.cmd.rps": "حجر ورقة مقص", |
| "menu.cmd.make_event": "إنشاء فعالية", |
| "menu.cmd.setupserver": "إعداد السيرفر", |
| "menu.cmd.listbackups": "عرض النسخ الاحتياطية", |
| "menu.cmd.restorebackup": "استعادة نسخة احتياطية", |
| "menu.cmd.organizechannels": "ترتيب القنوات", |
| |
| |
| "menu.cmd.botstats": "إحصائيات البوت", |
| |
| |
| "music.panel.title": "{music} لوحة الموسيقى", |
| "music.panel.desc": "لوحة موسيقى محسنة: تشغيل، بحث، اقتراحات، معاينة، السابق/التالي، إيقاف، وطابور + 24/7.", |
| "music.need_voice": "ادخل روم صوتي أولاً.", |
| "music.joined": "{join} دخلت إلى {channel}", |
| "music.not_in_voice": "لست داخل أي روم صوتي.", |
| "music.left": "👋 تم الخروج من الروم الصوتي.", |
| "music.added": "{ok} تمت الإضافة للطابور: **{title}**", |
| "music.nothing_playing": "لا يوجد تشغيل حالي.", |
| "music.skipped": "{skip} تم التخطي", |
| "music.stopped": "{stop} تم إيقاف التشغيل وتفريغ الطابور.", |
| "music.paused": "{pause} تم إيقاف الموسيقى مؤقتاً.", |
| "music.resumed": "{resume} تم استئناف التشغيل.", |
| "music.queue_empty": "الطابور فارغ.", |
| "music.now_playing": "{queue} الآن يتم التشغيل", |
| "music.play.prompt": "أرسل اسم الأغنية أو رابط الفيديو/الصوت.", |
| "music.video.result": "{video} نتيجة الفيديو", |
| "music.playlist.detected": "{music} تم اكتشاف قائمة تشغيل - جاري تحميل جميع المقاطع...", |
| "music.extract_failed": "{no} تعذر تشغيل هذا الرابط/الاسم. جرّب رابطًا آخر أو أعد المحاولة.", |
| "music.volume.set": "🔊 تم ضبط الصوت على **{volume}%**", |
| "music.filter.set": "🎛️ تم تطبيق الفلتر: **{filter}**", |
| "music.loop.off": "🔁 التكرار: **مغلق**", |
| "music.loop.track": "🔂 التكرار: **المقطع الحالي**", |
| "music.loop.queue": "🔄 التكرار: **الطابور كامل**", |
| "music.shuffle.done": "🔀 تم خلط الطابور!", |
| "music.247.enabled": "♾️ وضع 24/7 **مفعّل** - البوت لن يغادر الروم.", |
| "music.247.disabled": "✅ وضع 24/7 **معطّل**.", |
| |
| |
| "music.btn.join": "دخول", |
| "music.btn.leave": "خروج", |
| "music.btn.play": "تشغيل", |
| "music.btn.pause": "إيقاف مؤقت", |
| "music.btn.stop": "إيقاف", |
| "music.btn.skip": "تخطي", |
| "music.btn.previous": "السابق", |
| "music.btn.queue": "الطابور", |
| "music.btn.filters": "الفلاتر", |
| "music.btn.247": "24/7", |
| "music.btn.refresh": "تحديث", |
| "music.btn.preview": "معاينة", |
| "music.btn.close": "إغلاق", |
| "music.btn.shuffle": "خلط", |
| "music.btn.clear": "مسح", |
| "music.btn.mute": "كتم", |
| "music.btn.unmute": "فك الكتم", |
|
|
| |
| "music.panel.now_playing": "🎵 يعمل الآن", |
| "music.panel.up_next": "📜 التالي", |
| "music.panel.playback_status": "⚙️ حالة التشغيل", |
| "music.panel.status": "الحالة", |
| "music.panel.volume": "الصوت", |
| "music.panel.loop": "التكرار", |
| "music.panel.247": "24/7", |
| "music.enabled": "مفعّل", |
| "music.disabled": "معطّل", |
| "music.panel.no_track": "لا يوجد مقطع يعمل حالياً.", |
| "music.panel.empty_queue": "الطابور فارغ.", |
| "music.panel.queue_hint": "أضف مقاطع باستخدام `/music play` أو لوحة الموسيقى.", |
| "music.panel.and_more": "أخرى", |
| "music.loop.off_label": "إيقاف", |
| "music.loop.track_label": "مقطع", |
| "music.loop.queue_label": "الطابور", |
| "music.panel.playing": "يعزف", |
| "music.panel.paused": "متوقف مؤقتاً", |
| "music.panel.stopped": "متوقف", |
|
|
| |
| "music.field.now_playing": "🎵 الآن يعمل", |
| "music.field.up_next": "📜 التالي ({count} مقطع)", |
| "music.field.playback": "⚙️ التشغيل", |
| "music.field.volume": "🔊 الصوت", |
| "music.field.loop": "🔁 التكرار", |
| "music.field.status": "📊 الحالة", |
| "music.field.filter": "🎛️ الفلتر", |
| "music.field.requester": "🙋 الطالب", |
| "music.field.duration": "⏱️ المدة", |
| |
| |
| "filters.title": "🎛️ لوحة الفلاتر الصوتية", |
| "filters.current": "الفلتر الحالي", |
| "filters.volume": "الصوت", |
| "filters.select": "اختر فلتر...", |
| "filters.none": "بدون فلتر", |
| "filters.nightcore": "نايتكور", |
| "filters.vaporwave": "فايبوريف", |
| "filters.bassboost": "تعزيز الباس", |
| "filters.8d": "صوت 8D", |
| "filters.karaoke": "كاريوكي", |
| "filters.tremolo": "تريمولو", |
| "filters.vibrato": "فيبراتو", |
| "filters.echo": "صدى", |
| "filters.chipmunk": "سنجاب", |
| "filters.deep": "صوت عميق", |
| "filters.speedup": "تسريع", |
| "filters.slowdown": "تبطيء", |
| "filters.pop": "بوب", |
| "filters.rock": "روك", |
| "filters.electronic": "إلكترونية", |
| "filters.classical": "كلاسيكية", |
| |
| |
| "utility.serverinfo.title": "{stats} معلومات السيرفر", |
| "utility.serverinfo.members": "{members} الأعضاء", |
| "utility.serverinfo.channels": "{channels} القنوات", |
| "utility.serverinfo.roles": "{roles} الرتب", |
| "utility.serverinfo.boost": "{boost} مستوى البوست", |
| "utility.serverinfo.created": "تاريخ الإنشاء", |
| "utility.serverinfo.id": "معرف السيرفر", |
| "utility.userinfo.title": "{user} معلومات العضو", |
| "utility.userinfo.id": "{user} المعرف", |
| "utility.userinfo.joined": "{join} انضم للسيرفر", |
| "utility.userinfo.created": "{stats} تاريخ إنشاء الحساب", |
| "utility.userinfo.level": "المستوى", |
| "utility.userinfo.xp": "الخبرة", |
| "utility.userinfo.xp_progress": "تقدم الخبرة", |
| "utility.userinfo.xp_next": "الخبرة للمستوى التالي", |
| "utility.refresh": "{refresh} تحديث", |
| "botstats.title": "{bot} إحصائيات البوت", |
| "botstats.servers": "{globe} السيرفرات", |
| "botstats.users": "{members} المستخدمون", |
| "botstats.latency": "{ping} اللاتنسي", |
| "botstats.cpu": "{settings} المعالج", |
| "botstats.ram": "{stats} الرام", |
| "botstats.uptime": "{refresh} مدة التشغيل", |
| |
| |
| "trivia.title": "{trivia} تراڤيا مباشرة", |
| "trivia.category": "القسم", |
| "trivia.topics": "التصنيفات", |
| "trivia.invalid_category": "{no} قسم غير مدعوم. استخدم: gaming أو movies أو series.", |
| "trivia.correct": "✅ إجابة صحيحة!", |
| "trivia.wrong": "❌ إجابة خاطئة.", |
| "trivia.answered": "⚠️ تمت الإجابة بالفعل.", |
| "trivia.not_owner": "❌ هذا السؤال لصاحب الأمر فقط.", |
| "trivia.reward": "💰 **+{reward}** عملة!", |
| |
| |
| "gamehub.title": "{gamehub} مركز الألعاب", |
| "gamehub.desc": "اختر لعبة لإنشاء غرفة خاصة. ادعُ صديقًا أو العب ضد البوت.", |
| "gamehub.room_created": "✅ تم إنشاء الغرفة: {room}", |
| "gamehub.invited": " | تمت دعوة {invitee}", |
| "gamehub.select_game": "🎮 اختر لعبة", |
| "gamehub.close_room": "🔒 أغلق الغرفة عند الانتهاء", |
| "gamehub.invite_friend": "➕ دعوة صديق", |
| "gamehub.room_ready": "🎮 الغرفة جاهزة. العب الآن!", |
| "gamehub.host": "👤 المضيف", |
| "gamehub.invitee": "🎯 المدعو", |
| |
| |
| "games.tictactoe.title": "❎ تيك تاك تو", |
| "games.tictactoe.turn": "🎮 الدور", |
| "games.tictactoe.winner": "🏆 الفائز", |
| "games.tictactoe.draw": "🤝 تعادل!", |
| "games.tictactoe.vs": "ضد", |
| "games.tictactoe.bot": "🤖 بوت", |
| |
| "games.8ball.title": "🎱 الكرة السحرية", |
| "games.8ball.question": "❓ السؤال", |
| "games.8ball.answer": "🎱 الجواب", |
| |
| "games.dice.title": "🎲 رمي النرد", |
| "games.dice.result": "🎯 النتيجة", |
| "games.dice.sides": "وجوه", |
| |
| "games.slots.title": "🎰 سلوتس", |
| "games.slots.bet": "الرهان", |
| "games.slots.win": "فوز!", |
| "games.slots.lose": "خسارة!", |
| "games.slots.jackpot": "🎉 جاكبوت!", |
| |
| "games.choose.title": "🎲 اختيار عشوائي", |
| "games.choose.options": "📝 الخيارات", |
| "games.choose.selected": "🎯 المختار", |
| |
| "games.coinflip.title": " رمي عملة", |
| "games.coinflip.result": "النتيجة", |
| "games.coinflip.heads": "صورة", |
| "games.coinflip.tails": "كتابة", |
| |
| "games.mario.title": "🍄 تحدي الآركيد", |
| "games.mario.coins": "عملات", |
| "games.mario.level": "مرحلة", |
| "games.mario.bonus": "🎁 مكافأة", |
| |
| |
| "economy.panel.title": "💰 لوحة الاقتصاد", |
| "economy.balance": "الرصيد", |
| "economy.wallet": "المحفظة", |
| "economy.bank": "البنك", |
| "economy.daily": "يومي", |
| "economy.daily.claimed": "🕒 لقد استلمت مكافأتك اليومية بالفعل. ارجع غدًا!", |
| "economy.daily.reward": "🎁 مكافأتك اليومية: **{reward}** عملة!", |
| "economy.work.cooldown": "⏳ ارجع بعد **{mins}** دقيقة.", |
| "economy.work.earned": "💼 عملت وربحت `{reward}` عملة!", |
| "economy.gamble.win": "🎲 رهنت `{bet}` و **فزت** 🤑! `+{bet}` عملة.", |
| "economy.gamble.lose": "🎲 رهنت `{bet}` و **خسرت** 💀! `-{bet}` عملة.", |
| "economy.gamble.need": "❌ تحتاج على الأقل 50 عملة للمقامرة.", |
| "economy.rob.success": "🦝 نجحت! سرقت `{stolen}` عملة من {target}.", |
| "economy.rob.fail": "🚨 تم القبض عليك! دفعت `{fine}` عملة كغرامة.", |
| "economy.rob.target_poor": "❌ الهدف لديه أقل من 100 عملة، لا يستحق.", |
| "economy.transfer.done": "✅ تم تحويل **{amount}** عملة إلى {target}.", |
| "economy.transfer.insufficient": "❌ رصيدك غير كافي.", |
| "economy.leaderboard.title": "🏆 لوحة المتصدرين", |
| "economy.shop.title": "🛒 المتجر", |
| "economy.shop.buy": "شراء", |
| "economy.inventory.title": "📦 مخزونك", |
| |
| |
| "admin.purge.title": "🗑️ حذف الرسائل", |
| "admin.purge.done": "📝 تم حذف **{count}** رسالة.", |
| "admin.purge.moderator": "👤 المشرف", |
| |
| "admin.warn.title": "⚠️ تحذير للعضو", |
| "admin.warn.user": "👤 المستخدم", |
| "admin.warn.moderator": "🛡️ المشرف", |
| "admin.warn.reason": "📝 السبب", |
| "admin.warn.dm_title": "⚠️ تم تحذيرك", |
| "admin.warn.server": "🏛️ السيرفر", |
| "admin.warn.cleared": "✅ تم مسح التحذيرات", |
| "admin.warn.none": "لا توجد تحذيرات. ✅", |
| "admin.warn.title_list": "📋 التحذيرات", |
| |
| "admin.kick.title": "👢 طرد عضو", |
| "admin.kick.done": "تم طرد العضو", |
| "admin.kick.dm_title": "👢 تم طردك", |
| |
| "admin.ban.title": "🔨 حظر عضو", |
| "admin.ban.done": "تم حظر العضو", |
| "admin.ban.dm_title": "🔨 تم حظرك", |
| |
| "admin.unban.title": "🔓 فك حظر", |
| "admin.unban.done": "تم فك الحظر", |
| |
| "admin.mute.title": "🔇 كتم عضو", |
| "admin.mute.done": "تم كتم العضو", |
| "admin.mute.duration": "⏰ المدة", |
| |
| "admin.unmute.title": "🔊 فك كتم", |
| "admin.unmute.done": "تم فك الكتم", |
| |
| "admin.slowmode.title": "⏱️ الوضع البطيء", |
| "admin.slowmode.enabled": "تم تفعيل الوضع البطيء", |
| "admin.slowmode.disabled": "تم إيقاف الوضع البطيء", |
| "admin.slowmode.duration": "🕒 المدة", |
| "admin.slowmode.channel": "📺 القناة", |
| |
| "admin.lock.title": "🔒 قفل القناة", |
| "admin.lock.done": "تم قفل القناة", |
| "admin.unlock.title": "🔓 فتح القناة", |
| "admin.unlock.done": "تم فتح القناة", |
| |
| "admin.cloneemoji.title": "✅ تم نسخ الإيموجي", |
| "admin.cloneemoji.new": "😀 الإيموجي الجديد", |
| "admin.cloneemoji.name": "📝 الاسم", |
| |
| "admin.awesomeroles.title": "✨ الأدوار الرائعة", |
| "admin.awesomeroles.created": "✅ تم إنشاؤها", |
| "admin.awesomeroles.skipped": "⏭️ موجودة مسبقاً", |
| "admin.awesomeroles.tip": "💡 نصيحة", |
| |
| "admin.backup.title": "💾 نسخة احتياطية", |
| "admin.backup.done": "تم إنشاء نسخة احتياطية", |
| "admin.backup.roles": "🎭 الأدوار", |
| "admin.backup.channels": "📺 القنوات", |
| "admin.backup.by": "👤 أنشئت بواسطة", |
| |
| "admin.permission.denied": "❌ لا يمكنك فعل ذلك مع شخص برتبة أعلى أو مساوية.", |
| |
| |
| "ai.title": "🤖 الذكاء الاصطناعي", |
| "ai.panel.title": "🤖 لوحة تحكم الذكاء الاصطناعي", |
| "ai.panel.desc": "إعدادات الذكاء الاصطناعي المباشرة للسيرفر مع معلومات تشخيصية.", |
| "ai.model": "🧠 الموديل الحالي", |
| "ai.model_default": "🧩 الموديل الافتراضي", |
| "ai.channel": "💬 قناة الشات", |
| "ai.auto": "⚙️ الوضع التلقائي", |
| "ai.enabled": "✅ مفعّل", |
| "ai.disabled": "❌ متوقف", |
| "ai.ready": "✅ جاهز", |
| "ai.not_ready": "❌ غير مضبوط", |
| "ai.cache": "📚 كاش الموديلات المجانية", |
| "ai.refresh": "اضغط تحديث لتحديث الحالة فوراً", |
| "ai.select_personality": "اختر شخصية الرد", |
| "ai.select_model": "اختر موديل مجاني من القائمة", |
| "ai.regenerate": "🔄 إعادة التوليد", |
| "ai.summarize": "📝 تلخيص الرد", |
| "ai.change_personality": "👤 تغيير الشخصية", |
| "ai.copy_code": "📋 نسخ الكود", |
| "ai.publish": "📢 نشر", |
| "ai.retry": "🔁 إعادة المحاولة", |
| "ai.prev": "⬅️ السابق", |
| "ai.next": "➡️ التالي", |
| "ai.toggle_auto": "🤖 تفعيل/إيقاف Auto", |
| "ai.change_model": "🧠 تغيير Model", |
| |
| "ai.personality.wise": "🧠 حكيم", |
| "ai.personality.sarcastic": "😏 ساخر", |
| "ai.personality.technical": "🛠️ تقني", |
| "ai.personality.funny": "😄 فكاهي", |
| |
| "ai.error.no_content": "لا يوجد محتوى كافٍ للتلخيص.", |
| "ai.error.owner_only": "هذا الزر لصاحب الطلب فقط.", |
| "ai.error.server_only": "هذا الأمر يعمل داخل السيرفر فقط.", |
| "ai.error.manage_required": "تحتاج صلاحية Manage Server.", |
| "ai.error.model_failed": "الموديل المختار غير متاح حالياً.", |
| "ai.error.rate_limit": "تم تجاوز الحصة (429). حاول بعد دقيقة.", |
| "ai.error.memory": "استهلاك ذاكرة مرتفع. جرّب طلباً أقصر.", |
| |
| |
| "config.title": "⚙️ إعدادات السيرفر", |
| "config.log_channel": "📝 قناة السجلات", |
| "config.welcome_channel": "👋 قناة الترحيب", |
| "config.suggestion_channel": "💡 قناة الاقتراحات", |
| "config.verify_channel": "✅ قناة التحقق", |
| "config.verify_role": "🎭 رتبة التحقق", |
| "config.automod": "🛡️ المراقبة التلقائية", |
| "config.daily_channel": "📨 قناة الرسالة اليومية", |
| "config.daily_enabled": "📅 اليومية", |
| "config.daily_time": "⏰ وقت اليومية", |
| "config.daily_utc": "🌍 توقيت UTC", |
| "config.daily_title": "🖋️ عنوان اليومية", |
| "config.daily_message": "📝 نص اليومية", |
| "config.daily_image": "🖼️ صورة اليومية", |
| "config.daily_button": "🔗 زر اليومية", |
| "config.poll_channel": "📊 قناة التصويتات", |
| "config.free_games_channel": "🎁 قناة العروض المجانية", |
| "config.free_games_role": "🎭 رتبة العروض", |
| "config.support_channel": "🛟 قناة الدعم الذكي", |
| "config.support_ai": "🤖 الدعم الذكي", |
| "config.wisdom_channel": "🧠 قناة الحكم", |
| "config.wisdom_enabled": "📖 الحكمة اليومية", |
| "config.game_news_channel": "📰 قناة أخبار الألعاب", |
| "config.game_news_role": "🎭 رتبة الأخبار", |
| "config.not_set": "غير محدد", |
| "config.on": "مفعّل", |
| "config.off": "معطّل", |
| "config.refresh_panel": "🔄 تحديث اللوحة", |
| "config.footer": "استخدم أوامر /set للتحديث • اضغط تحديث للوحة", |
| |
| |
| "poll.title": "🗳️ تصويت المجتمع", |
| "poll.total_voters": "إجمالي المصوتين", |
| "poll.by": "تصويت بواسطة", |
| "poll.can_change": "يمكنك تغيير تصويتك في أي وقت", |
| "poll.vote_saved": "✅ تم حفظ التصويت: **{option}**", |
| |
| |
| "remind.set": "⏰ تم تعيين تذكير بعد **{seconds}** ثانية.", |
| "remind.message": "⏰ تذكير: {message}", |
| |
| |
| "error.generic": "⚠️ حدث خطأ. حاول مرة أخرى!", |
| "error.server_only": "هذا الأمر يعمل داخل السيرفر فقط.", |
| "error.no_permission": "❌ ليس لديك صلاحية لاستخدام هذا الأمر.", |
| "error.not_found": "❌ غير موجود.", |
| "error.cooldown": "⏳ انتظر قليلاً قبل إعادة المحاولة.", |
| "error.missing_argument": "❌ ينقص معلومة مطلوبة.", |
| "error.invalid_input": "❌ إدخال غير صحيح.", |
| |
| |
| "success.done": "✅ تم بنجاح!", |
| "success.updated": "✅ تم التحديث!", |
| "success.created": "✅ تم الإنشاء!", |
| "success.deleted": "🗑️ تم الحذف!", |
| "success.saved": "💾 تم الحفظ!", |
| |
| |
| "general.loading": "⏳ جاري التحميل...", |
| "general.processing": "⚙️ جاري المعالجة...", |
| "general.please_wait": "⏳ يرجى الانتظار...", |
| "general.click_below": "👇 اضغط أدناه", |
| "general.or": "أو", |
| "general.and": "و", |
| } |
|
|
| |
| |
| |
|
|
| TRANSLATIONS["en"] = { |
| |
| "lang.current": "{globe} Current server language: **English**.", |
| "lang.updated": "{ok} Bot language changed to **English**. Use `/menu` to view commands in the selected language.", |
| "lang.invalid": "{no} Unsupported language. Use: `ar`, `de`, `en`, `es`, `fr`, `he`, `hi`, `id`, `it`, `ja`, `pt`, `ru`, `tr`, `zh`.", |
| |
| |
| "menu.title": "{menu} Bot Command Menu", |
| "menu.desc": "Choose a category to see clear command docs.", |
| "menu.all": "All", |
| "menu.ai": "AI Dashboard", |
| "menu.none": "No commands available.", |
| "menu.total": "Total: {count} commands", |
| "menu.category": "Category: {name}", |
| "menu.category_count": "{name}: {count} commands", |
| "menu.refresh": "Refresh", |
| "menu.invite_button": "Add to your server", |
| "menu.support_button": "Support on GitHub", |
| "menu.stats_title": "Neon Stats", |
| "menu.stats.commands": "Commands: {total}", |
| "menu.stats.categories": "Categories: {categories}", |
| "menu.stats.selected": "{name}: {count} commands", |
| "menu.categories_header": "Category Highlights", |
| "menu.tip_title": "Need more?", |
| "menu.tip": "Use the selector to explore commands and refresh anytime for new highlights.", |
| "menu.footer": "Current view: {selected}", |
| "menu.select_placeholder": "📂 Select a category...", |
| "menu.select_all_desc": "📚 View all commands", |
| "menu.select_ai_desc": "🤖 AI-powered commands", |
| "menu.hub_title": "📚 Master Hub", |
| "menu.hub_welcome": "✨ **Welcome to the Command Center!**", |
| "menu.hub_explore": "🔍 Use the dropdown below to explore all commands", |
| "menu.hub_usage": "⌨️ Type `/<command>` to use any command", |
| "menu.stats_heading": "📊 Statistics", |
| "menu.categories_heading": "🏆 Top Categories", |
| "menu.tips_heading": "💡 Pro Tips", |
| "menu.quick_heading": "✨ Quick Commands", |
| "menu.tip_line_1": "Use `/help <command>` for details", |
| "menu.tip_line_2": "Most commands support slash & prefix", |
| "menu.tip_line_3": "Check `/menu` for all commands", |
| "menu.quick_music": "Music controls", |
| "menu.quick_gamehub": "Game rooms", |
| "menu.quick_tournament": "Tournaments", |
| "menu.quick_economy": "Economy dashboard", |
| "menu.footer_viewing": "📚 Viewing: {selected}", |
| "menu.category_desc.music": "🎵 Music commands for playback control", |
| "menu.category_desc.admin": "🛡️ Server administration tools", |
| "menu.category_desc.fun": "🎮 Fun games and entertainment", |
| "menu.category_desc.ai": "🤖 AI-powered features", |
| "menu.category_desc.utility": "🔧 Useful utility commands", |
| "menu.category_desc.config": "⚙️ Bot configuration settings", |
| |
| |
| |
| "menu.cmd.play": "Play a song by URL or name", |
| "menu.cmd.music_play": "Play music from the music panel", |
| "menu.cmd.music_panel": "Open the music control panel", |
| "menu.cmd.music_skip": "Skip the current track", |
| "menu.cmd.music_stop": "Stop music and clear the queue", |
| "menu.cmd.music_pause": "Pause the music", |
| "menu.cmd.music_resume": "Resume playback", |
| "menu.cmd.music_queue": "View the music queue", |
| "menu.cmd.music_volume": "Change the volume level", |
| "menu.cmd.music_nowplaying": "Show current track info", |
| "menu.cmd.music_filter": "Apply an audio filter", |
| "menu.cmd.music_loop": "Change loop mode", |
| "menu.cmd.music_shuffle": "Shuffle the queue", |
| "menu.cmd.music_247": "Toggle 24/7 mode", |
| "menu.cmd.music_previous": "Play the previous track", |
| "menu.cmd.music_seek": "Seek to a specific time", |
| "menu.cmd.music_clear": "Clear the music queue", |
| "menu.cmd.music_remove": "Remove a track from queue", |
| "menu.cmd.music_move": "Move a track in the queue", |
| "menu.cmd.music_jump": "Jump to a specific track", |
| "menu.cmd.music_lyrics": "Show song lyrics", |
| |
| |
| "menu.cmd.purge": "Delete a number of recent messages.", |
| "menu.cmd.ban": "Ban a member from the server", |
| "menu.cmd.unban": "Unban a member", |
| "menu.cmd.kick": "Kick a member from the server", |
| "menu.cmd.mute": "Mute a member for a duration", |
| "menu.cmd.unmute": "Unmute a member", |
| "menu.cmd.warn": "Warn a member", |
| "menu.cmd.warnings": "View member's warnings", |
| "menu.cmd.clearwarn": "Clear member's warnings", |
| "menu.cmd.slowmode": "Set slowmode in channel", |
| "menu.cmd.lock": "Lock the current channel", |
| "menu.cmd.unlock": "Unlock a locked channel", |
| "menu.cmd.cloneemoji": "Clone an emoji to this server", |
| "menu.cmd.awesomeroles": "Create awesome colored roles", |
| "menu.cmd.backupserver": "Create a server backup", |
| |
| |
| "menu.cmd.8ball": "Ask the magic 8-ball", |
| "menu.cmd.meme": "Random meme image", |
| "menu.cmd.trivia": "Various trivia questions", |
| "menu.cmd.gaming_news": "Latest gaming news", |
| "menu.cmd.free_games": "Free game offers", |
| "menu.cmd.gamehub": "Game hub with private rooms", |
| "menu.cmd.xo": "Tic-tac-toe game", |
| "menu.cmd.choose": "Random choice from options", |
| "menu.cmd.mario": "Mario arcade challenge", |
| "menu.cmd.dice": "Roll a dice", |
| "menu.cmd.slots": "Slots game", |
| "menu.cmd.coinflip": "Flip a coin", |
| "menu.cmd.roll": "Roll a random number", |
| |
| |
| "menu.cmd.chat": "Chat with AI directly", |
| "menu.cmd.ask_image": "Analyze image with AI", |
| "menu.cmd.imagine": "Create prompt for image generation", |
| "menu.cmd.image_gen": "Generate image from description", |
| "menu.cmd.upscale": "Upscale an image", |
| "menu.cmd.summarize": "Summarize channel messages", |
| "menu.cmd.ai": "AI settings panel", |
| "menu.cmd.ai_model": "Change AI model", |
| "menu.cmd.ai_channel": "Set auto-chat channel", |
| "menu.cmd.ai_auto": "Toggle auto-chat mode", |
| |
| |
| "menu.cmd.serverinfo": "Detailed server information", |
| "menu.cmd.userinfo": "Detailed user information", |
| "menu.cmd.botstats": "Bot statistics", |
| "menu.cmd.poll": "Create an interactive poll", |
| "menu.cmd.remind": "Set a reminder", |
| "menu.cmd.avatar": "View profile picture", |
| "menu.cmd.banner": "View member banner", |
| "menu.cmd.translate": "Translate text", |
| |
| |
| "menu.cmd.set": "Server settings panel", |
| "menu.cmd.set_log": "Set log channel", |
| "menu.cmd.set_welcome": "Set welcome channel", |
| "menu.cmd.set_suggestions": "Set suggestions channel", |
| "menu.cmd.set_automod": "Toggle auto-moderation", |
| "menu.cmd.set_dailymessage": "Daily message text", |
| "menu.cmd.set_dailychannel": "Daily message channel", |
| "menu.cmd.set_dailytime": "Daily message time", |
| "menu.cmd.set_dailytitle": "Daily message title", |
| "menu.cmd.set_dailyimage": "Daily message image", |
| "menu.cmd.set_dailybutton": "Daily message button", |
| "menu.cmd.set_dailytoggle": "Toggle daily message", |
| "menu.cmd.set_pollchannel": "Poll channel", |
| "menu.cmd.set_freegames": "Free games channel", |
| "menu.cmd.set_gamenews": "Gaming news channel", |
| "menu.cmd.set_supportai": "AI support channel", |
| "menu.cmd.set_wisdom": "Daily wisdom channel", |
| |
| |
| "menu.cmd.language": "Change bot language", |
| "menu.cmd.languages": "View supported languages", |
| |
| |
| "menu.cmd.menu": "Show the interactive command menu.", |
| "menu.cmd.ping": "Check bot latency", |
| |
| |
| "menu.cmd.verify": "Verify in the server", |
| "menu.cmd.verifysetup": "Setup verification system", |
| |
| |
| "menu.cmd.economy": "Economy panel", |
| "menu.cmd.balance": "View your balance", |
| "menu.cmd.daily": "Daily reward", |
| "menu.cmd.work": "Work and earn money", |
| "menu.cmd.gamble": "Gamble your balance", |
| "menu.cmd.rob": "Rob from a member", |
| "menu.cmd.leaderboard": "Leaderboard", |
| "menu.cmd.shop": "Shop", |
| "menu.cmd.buy": "Buy from shop", |
| "menu.cmd.inventory": "Your inventory", |
| "menu.cmd.transfer": "Transfer money to member", |
| |
| |
| "menu.cmd.xp": "View your XP points", |
| "menu.cmd.level": "View your level", |
| "menu.cmd.rank": "View your rank", |
| |
| |
| "menu.cmd.tournament": "Tournament management", |
| "menu.cmd.tournament_panel": "Tournament panel", |
| "menu.cmd.tournament_create": "Create a new tournament", |
| "menu.cmd.tournament_join": "Join a tournament", |
| "menu.cmd.tournament_start": "Start tournament", |
| "menu.cmd.tournament_end": "End tournament", |
| "menu.cmd.tournament_lb": "Tournament leaderboard", |
| |
| |
| "menu.cmd.join": "Join a voice channel", |
| "menu.cmd.leave": "Leave voice channel", |
| "menu.cmd.play": "Play a song", |
| "menu.cmd.pause": "Pause playback", |
| "menu.cmd.skip": "Skip current track", |
| "menu.cmd.stop": "Stop playback", |
| "menu.cmd.queue": "View the queue", |
| |
| |
| "menu.cmd.boardgames": "Show board games", |
| "menu.cmd.board_start": "Start a board game", |
| "menu.cmd.board_move": "Play a move", |
| "menu.cmd.board_forfeit": "Forfeit the game", |
| "menu.cmd.chess": "Start a chess game", |
| "menu.cmd.checkers": "Start a checkers game", |
| "menu.cmd.connect4": "Start a connect 4 game", |
| "menu.cmd.othello": "Start an othello game", |
| "menu.cmd.games_panel": "Games panel", |
| |
| |
| "menu.cmd.createpoll": "Create a poll", |
| "menu.cmd.quickpoll": "Quick yes/no poll", |
| "menu.cmd.votepoll": "Create vote poll", |
| "menu.cmd.strawpoll": "Create anonymous poll", |
| "menu.cmd.pollpanel": "Poll creation panel", |
| "menu.cmd.pollstats": "Show active polls", |
| "menu.cmd.endpoll": "End an active poll", |
| "menu.cmd.poll": "Create a poll", |
| |
| |
| "menu.cmd.suggest": "Submit a suggestion", |
| "menu.cmd.suggestion": "Manage suggestions", |
| "menu.cmd.setsuggestionchannel": "Set suggestion channel", |
| "menu.cmd.setpollchannel": "Set poll channel", |
| |
| |
| "menu.cmd.deposit": "Deposit to bank", |
| "menu.cmd.withdraw": "Withdraw from bank", |
| "menu.cmd.profile": "Your profile", |
| |
| |
| "menu.cmd.wisdom_today": "Today's wisdom", |
| |
| |
| "menu.cmd.gaming_news": "Gaming news", |
| "menu.cmd.free_games": "Free games", |
| "menu.cmd.gamehub": "Game hub", |
| |
| |
| "menu.cmd.guess": "Guessing game", |
| "menu.cmd.rps": "Rock paper scissors", |
| "menu.cmd.make_event": "Create an event", |
| "menu.cmd.setupserver": "Setup server", |
| "menu.cmd.listbackups": "List backups", |
| "menu.cmd.restorebackup": "Restore a backup", |
| "menu.cmd.organizechannels": "Organize channels", |
| |
| |
| "menu.cmd.botstats": "Bot statistics", |
| |
| |
| "music.panel.title": "{music} Music Panel", |
| "music.panel.desc": "Enhanced controls: play, search, suggestions, preview, previous/next, stop, queue + 24/7 mode.", |
| "music.need_voice": "Join a voice channel first.", |
| "music.joined": "{join} Joined {channel}", |
| "music.not_in_voice": "I'm not in any voice channel.", |
| "music.left": "👋 Left the voice channel.", |
| "music.added": "{ok} Added to queue: **{title}**", |
| "music.nothing_playing": "Nothing is currently playing.", |
| "music.skipped": "{skip} Skipped.", |
| "music.stopped": "{stop} Stopped playback and cleared queue.", |
| "music.paused": "{pause} Paused.", |
| "music.resumed": "{resume} Resumed.", |
| "music.queue_empty": "The queue is empty.", |
| "music.now_playing": "{queue} Now Playing", |
| "music.play.prompt": "Send a song name or a video/audio URL.", |
| "music.video.result": "{video} Video Result", |
| "music.playlist.detected": "{music} Playlist detected — loading all tracks...", |
| "music.extract_failed": "{no} Could not play this song/link. Please try another one.", |
| "music.volume.set": "🔊 Volume set to **{volume}%**", |
| "music.filter.set": "🎛️ Filter applied: **{filter}**", |
| "music.loop.off": "🔁 Loop: **Off**", |
| "music.loop.track": "🔂 Loop: **Current Track**", |
| "music.loop.queue": "🔄 Loop: **Full Queue**", |
| "music.shuffle.done": "🔀 Queue shuffled!", |
| "music.247.enabled": "♾️ 24/7 mode **enabled** - Bot won't leave the voice channel.", |
| "music.247.disabled": "✅ 24/7 mode **disabled**.", |
| |
| |
| "music.btn.join": "Join", |
| "music.btn.leave": "Leave", |
| "music.btn.play": "Play", |
| "music.btn.pause": "Pause", |
| "music.btn.stop": "Stop", |
| "music.btn.skip": "Skip", |
| "music.btn.previous": "Previous", |
| "music.btn.queue": "Queue", |
| "music.btn.filters": "Filters", |
| "music.btn.247": "24/7", |
| "music.btn.refresh": "Refresh", |
| "music.btn.preview": "Preview", |
| "music.btn.close": "Close", |
| "music.btn.shuffle": "Shuffle", |
| "music.btn.clear": "Clear", |
| "music.btn.mute": "Mute", |
| "music.btn.unmute": "Unmute", |
|
|
| |
| "music.panel.now_playing": "🎵 Now Playing", |
| "music.panel.up_next": "📜 Up Next", |
| "music.panel.playback_status": "⚙️ Playback Status", |
| "music.panel.status": "Status", |
| "music.panel.volume": "Volume", |
| "music.panel.loop": "Loop", |
| "music.panel.247": "24/7", |
| "music.enabled": "Enabled", |
| "music.disabled": "Disabled", |
| "music.panel.no_track": "No track is currently playing.", |
| "music.panel.empty_queue": "The queue is empty.", |
| "music.panel.queue_hint": "Add tracks with `/music play` or the music panel.", |
| "music.panel.and_more": "more", |
| "music.loop.off_label": "Off", |
| "music.loop.track_label": "Track", |
| "music.loop.queue_label": "Queue", |
| "music.panel.playing": "Playing", |
| "music.panel.paused": "Paused", |
| "music.panel.stopped": "Stopped", |
|
|
| |
| "music.field.now_playing": "🎵 Now Playing", |
| "music.field.up_next": "📜 Up Next ({count} tracks)", |
| "music.field.playback": "⚙️ Playback", |
| "music.field.volume": "🔊 Volume", |
| "music.field.loop": "🔁 Loop", |
| "music.field.status": "📊 Status", |
| "music.field.filter": "🎛️ Filter", |
| "music.field.requester": "🙋 Requester", |
| "music.field.duration": "⏱️ Duration", |
| |
| |
| "filters.title": "🎛️ Audio Filters Panel", |
| "filters.current": "Current Filter", |
| "filters.volume": "Volume", |
| "filters.select": "Select a filter...", |
| "filters.none": "No Filter", |
| "filters.nightcore": "Nightcore", |
| "filters.vaporwave": "Vaporwave", |
| "filters.bassboost": "Bass Boost", |
| "filters.8d": "8D Audio", |
| "filters.karaoke": "Karaoke", |
| "filters.tremolo": "Tremolo", |
| "filters.vibrato": "Vibrato", |
| "filters.echo": "Echo", |
| "filters.chipmunk": "Chipmunk", |
| "filters.deep": "Deep Voice", |
| "filters.speedup": "Speed Up", |
| "filters.slowdown": "Slow Down", |
| "filters.pop": "Pop", |
| "filters.rock": "Rock", |
| "filters.electronic": "Electronic", |
| "filters.classical": "Classical", |
| |
| |
| "utility.serverinfo.title": "{stats} Server Info", |
| "utility.serverinfo.members": "{members} Members", |
| "utility.serverinfo.channels": "{channels} Channels", |
| "utility.serverinfo.roles": "{roles} Roles", |
| "utility.serverinfo.boost": "{boost} Boost Level", |
| "utility.serverinfo.created": "Created", |
| "utility.serverinfo.id": "Server ID", |
| "utility.userinfo.title": "{user} User Info", |
| "utility.userinfo.id": "{user} ID", |
| "utility.userinfo.joined": "{join} Joined Server", |
| "utility.userinfo.created": "{stats} Account Created", |
| "utility.userinfo.level": "Level", |
| "utility.userinfo.xp": "XP", |
| "utility.userinfo.xp_progress": "XP Progress", |
| "utility.userinfo.xp_next": "XP to next level", |
| "utility.refresh": "{refresh} Refresh", |
| "botstats.title": "{bot} Bot Stats", |
| "botstats.servers": "{globe} Servers", |
| "botstats.users": "{members} Users", |
| "botstats.latency": "{ping} Latency", |
| "botstats.cpu": "{settings} CPU", |
| "botstats.ram": "{stats} RAM", |
| "botstats.uptime": "{refresh} Uptime", |
| |
| |
| "trivia.title": "{trivia} Live Trivia", |
| "trivia.category": "Category", |
| "trivia.topics": "Topics", |
| "trivia.invalid_category": "{no} Unsupported category. Use: gaming, movies, or series.", |
| "trivia.correct": "✅ Correct answer!", |
| "trivia.wrong": "❌ Wrong answer.", |
| "trivia.answered": "⚠️ Already answered.", |
| "trivia.not_owner": "❌ This question is for the command author only.", |
| "trivia.reward": "💰 **+{reward}** coins!", |
| |
| |
| "gamehub.title": "{gamehub} Game Hub", |
| "gamehub.desc": "Select a game to create a private room. Invite a friend or play vs the bot.", |
| "gamehub.room_created": "✅ Room created: {room}", |
| "gamehub.invited": " | Invited {invitee}", |
| "gamehub.select_game": "🎮 Choose a game", |
| "gamehub.close_room": "🔒 Close the room when done", |
| "gamehub.invite_friend": "➕ Invite Friend", |
| "gamehub.room_ready": "🎮 Room is ready. Play now!", |
| "gamehub.host": "👤 Host", |
| "gamehub.invitee": "🎯 Invited", |
| |
| |
| "games.tictactoe.title": "❎ TicTacToe", |
| "games.tictactoe.turn": "🎮 Turn", |
| "games.tictactoe.winner": "🏆 Winner", |
| "games.tictactoe.draw": "🤝 Draw!", |
| "games.tictactoe.vs": "vs", |
| "games.tictactoe.bot": "🤖 Bot", |
| |
| "games.8ball.title": "🎱 Magic 8 Ball", |
| "games.8ball.question": "❓ Question", |
| "games.8ball.answer": "🎱 Answer", |
| |
| "games.dice.title": "🎲 Dice Roll", |
| "games.dice.result": "🎯 Result", |
| "games.dice.sides": "sides", |
| |
| "games.slots.title": "🎰 Slots", |
| "games.slots.bet": "Bet", |
| "games.slots.win": "Win!", |
| "games.slots.lose": "Lose!", |
| "games.slots.jackpot": "🎉 Jackpot!", |
| |
| "games.choose.title": "🎲 Random Choice", |
| "games.choose.options": "📝 Options", |
| "games.choose.selected": "🎯 Selected", |
| |
| "games.coinflip.title": " Coin Flip", |
| "games.coinflip.result": "Result", |
| "games.coinflip.heads": "Heads", |
| "games.coinflip.tails": "Tails", |
| |
| "games.mario.title": "🍄 Arcade Challenge", |
| "games.mario.coins": "coins", |
| "games.mario.level": "level", |
| "games.mario.bonus": "🎁 Bonus", |
| |
| |
| "economy.panel.title": "💰 Economy Panel", |
| "economy.balance": "Balance", |
| "economy.wallet": "Wallet", |
| "economy.bank": "Bank", |
| "economy.daily": "Daily", |
| "economy.daily.claimed": "🕒 Already claimed today. Come back tomorrow!", |
| "economy.daily.reward": "🎁 Your daily reward: **{reward}** coins!", |
| "economy.work.cooldown": "⏳ Come back in **{mins}** minutes.", |
| "economy.work.earned": "💼 You worked and earned `{reward}` coins!", |
| "economy.gamble.win": "🎲 You bet `{bet}` and **won** 🤑! `+{bet}` coins.", |
| "economy.gamble.lose": "🎲 You bet `{bet}` and **lost** 💀! `-{bet}` coins.", |
| "economy.gamble.need": "❌ Need at least 50 coins to gamble.", |
| "economy.rob.success": "🦝 Success! You stole `{stolen}` coins from {target}.", |
| "economy.rob.fail": "🚨 You got caught! Paid `{fine}` coins as a fine.", |
| "economy.rob.target_poor": "❌ Target has less than 100 coins, not worth it.", |
| "economy.transfer.done": "✅ Transferred **{amount}** coins to {target}.", |
| "economy.transfer.insufficient": "❌ Insufficient balance.", |
| "economy.leaderboard.title": "🏆 Leaderboard", |
| "economy.shop.title": "🛒 Shop", |
| "economy.shop.buy": "Buy", |
| "economy.inventory.title": "📦 Your Inventory", |
| |
| |
| "admin.purge.title": "🗑️ Messages Purged", |
| "admin.purge.done": "📝 Deleted **{count}** messages.", |
| "admin.purge.moderator": "👤 Moderator", |
| |
| "admin.warn.title": "⚠️ Member Warned", |
| "admin.warn.user": "👤 User", |
| "admin.warn.moderator": "🛡️ Moderator", |
| "admin.warn.reason": "📝 Reason", |
| "admin.warn.dm_title": "⚠️ You have been warned", |
| "admin.warn.server": "🏛️ Server", |
| "admin.warn.cleared": "✅ Warnings Cleared", |
| "admin.warn.none": "has no warnings. ✅", |
| "admin.warn.title_list": "📋 Warnings", |
| |
| "admin.kick.title": "👢 Member Kicked", |
| "admin.kick.done": "Member kicked", |
| "admin.kick.dm_title": "👢 You have been kicked", |
| |
| "admin.ban.title": "🔨 Member Banned", |
| "admin.ban.done": "Member banned", |
| "admin.ban.dm_title": "🔨 You have been banned", |
| |
| "admin.unban.title": "🔓 Member Unbanned", |
| "admin.unban.done": "Member unbanned", |
| |
| "admin.mute.title": "🔇 Member Muted", |
| "admin.mute.done": "Member muted", |
| "admin.mute.duration": "⏰ Duration", |
| |
| "admin.unmute.title": "🔊 Member Unmuted", |
| "admin.unmute.done": "Member unmuted", |
| |
| "admin.slowmode.title": "⏱️ Slowmode", |
| "admin.slowmode.enabled": "Slowmode enabled", |
| "admin.slowmode.disabled": "Slowmode disabled", |
| "admin.slowmode.duration": "🕒 Duration", |
| "admin.slowmode.channel": "📺 Channel", |
| |
| "admin.lock.title": "🔒 Channel Locked", |
| "admin.lock.done": "Channel locked", |
| "admin.unlock.title": "🔓 Channel Unlocked", |
| "admin.unlock.done": "Channel unlocked", |
| |
| "admin.cloneemoji.title": "✅ Emoji Cloned", |
| "admin.cloneemoji.new": "😀 New Emoji", |
| "admin.cloneemoji.name": "📝 Name", |
| |
| "admin.awesomeroles.title": "✨ Awesome Roles", |
| "admin.awesomeroles.created": "✅ Created", |
| "admin.awesomeroles.skipped": "⏭️ Already Exist", |
| "admin.awesomeroles.tip": "💡 Tip", |
| |
| "admin.backup.title": "💾 Server Backup", |
| "admin.backup.done": "Backup created", |
| "admin.backup.roles": "🎭 Roles", |
| "admin.backup.channels": "📺 Channels", |
| "admin.backup.by": "👤 Created by", |
| |
| "admin.permission.denied": "❌ You cannot do that to someone with a higher or equal role.", |
| |
| |
| "ai.title": "🤖 Artificial Intelligence", |
| "ai.panel.title": "🤖 AI Control Panel", |
| "ai.panel.desc": "Live AI configuration for this server with quick diagnostics.", |
| "ai.model": "🧠 Active Model", |
| "ai.model_default": "🧩 Default Model", |
| "ai.channel": "💬 Chat Channel", |
| "ai.auto": "⚙️ Auto Mode", |
| "ai.enabled": "✅ Enabled", |
| "ai.disabled": "❌ Disabled", |
| "ai.ready": "✅ Ready", |
| "ai.not_ready": "❌ Missing API key", |
| "ai.cache": "📚 Free Models Cache", |
| "ai.refresh": "Press Refresh to update status instantly", |
| "ai.select_personality": "Choose response personality", |
| "ai.select_model": "Select a free model from the list", |
| "ai.regenerate": "🔄 Regenerate", |
| "ai.summarize": "📝 Summarize Response", |
| "ai.change_personality": "👤 Change Personality", |
| "ai.copy_code": "📋 Copy Code", |
| "ai.publish": "📢 Publish", |
| "ai.retry": "🔁 Retry", |
| "ai.prev": "⬅️ Previous", |
| "ai.next": "➡️ Next", |
| "ai.toggle_auto": "🤖 Toggle Auto", |
| "ai.change_model": "🧠 Change Model", |
| |
| "ai.personality.wise": "🧠 Wise", |
| "ai.personality.sarcastic": "😏 Sarcastic", |
| "ai.personality.technical": "🛠️ Technical", |
| "ai.personality.funny": "😄 Funny", |
| |
| "ai.error.no_content": "No content to summarize.", |
| "ai.error.owner_only": "This button is for the request owner only.", |
| "ai.error.server_only": "This command works in servers only.", |
| "ai.error.manage_required": "You need Manage Server permission.", |
| "ai.error.model_failed": "Selected model is currently unavailable.", |
| "ai.error.rate_limit": "Rate limit exceeded (429). Try again in a minute.", |
| "ai.error.memory": "High memory usage. Try a shorter request.", |
| |
| |
| "config.title": "⚙️ Server Settings", |
| "config.log_channel": "📝 Log Channel", |
| "config.welcome_channel": "👋 Welcome Channel", |
| "config.suggestion_channel": "💡 Suggestion Channel", |
| "config.verify_channel": "✅ Verification Channel", |
| "config.verify_role": "🎭 Verification Role", |
| "config.automod": "🛡️ Auto Moderation", |
| "config.daily_channel": "📨 Daily Channel", |
| "config.daily_enabled": "📅 Daily Enabled", |
| "config.daily_time": "⏰ Daily Time", |
| "config.daily_utc": "🌍 UTC Offset", |
| "config.daily_title": "🖋️ Daily Title", |
| "config.daily_message": "📝 Daily Message", |
| "config.daily_image": "🖼️ Daily Image", |
| "config.daily_button": "🔗 Daily Button", |
| "config.poll_channel": "📊 Poll Channel", |
| "config.free_games_channel": "🎁 Free Games Channel", |
| "config.free_games_role": "🎭 Free Games Role", |
| "config.support_channel": "🛟 Support AI Channel", |
| "config.support_ai": "🤖 Support AI", |
| "config.wisdom_channel": "🧠 Wisdom Channel", |
| "config.wisdom_enabled": "📖 Daily Wisdom", |
| "config.game_news_channel": "📰 Game News Channel", |
| "config.game_news_role": "🎭 Game News Role", |
| "config.not_set": "Not set", |
| "config.on": "On", |
| "config.off": "Off", |
| "config.refresh_panel": "🔄 Refresh Panel", |
| "config.footer": "Use /set commands to update • Click Refresh to update panel", |
| |
| |
| "poll.title": "🗳️ Community Poll", |
| "poll.total_voters": "Total voters", |
| "poll.by": "Poll by", |
| "poll.can_change": "You can change your vote any time", |
| "poll.vote_saved": "✅ Vote saved: **{option}**", |
| |
| |
| "remind.set": "⏰ Reminder set in **{seconds}** seconds.", |
| "remind.message": "⏰ Reminder: {message}", |
| |
| |
| "error.generic": "⚠️ An error occurred. Try again!", |
| "error.server_only": "This command works in servers only.", |
| "error.no_permission": "❌ You don't have permission to use this command.", |
| "error.not_found": "❌ Not found.", |
| "error.cooldown": "⏳ Wait a bit before trying again.", |
| "error.missing_argument": "❌ Missing required information.", |
| "error.invalid_input": "❌ Invalid input.", |
| |
| |
| "success.done": "✅ Done!", |
| "success.updated": "✅ Updated!", |
| "success.created": "✅ Created!", |
| "success.deleted": "🗑️ Deleted!", |
| "success.saved": "💾 Saved!", |
| |
| |
| "general.loading": "⏳ Loading...", |
| "general.processing": "⚙️ Processing...", |
| "general.please_wait": "⏳ Please wait...", |
| "general.click_below": "👇 Click below", |
| "general.or": "or", |
| "general.and": "and", |
| } |
|
|
| |
| |
| |
|
|
| |
| TRANSLATIONS["es"] = { |
| "lang.current": "{globe} Idioma actual del servidor: **Español**.", |
| "lang.updated": "{ok} El idioma del bot se cambió a **Español**.", |
| "lang.invalid": "{no} Idioma no compatible.", |
| "menu.title": "{menu} Menú de comandos", |
| "menu.all": "Todo", |
| "menu.ai": "Panel IA", |
| "menu.refresh": "Actualizar", |
| "menu.invite_button": "Invitar al bot", |
| "menu.cmd.play": "Reproducir canción por URL o nombre", |
| "menu.cmd.purge": "Eliminar varios mensajes recientes", |
| "menu.cmd.ban": "Banear un miembro", |
| "menu.cmd.kick": "Expulsar un miembro", |
| "menu.cmd.mute": "Silenciar un miembro", |
| "menu.cmd.warn": "Advertir a un miembro", |
| "menu.cmd.serverinfo": "Información del servidor", |
| "menu.cmd.userinfo": "Información del usuario", |
| "menu.cmd.botstats": "Estadísticas del bot", |
| "menu.cmd.poll": "Crear una encuesta", |
| "menu.cmd.chat": "Chatear con IA", |
| "menu.cmd.gamehub": "Centro de juegos", |
| "menu.cmd.trivia": "Preguntas de trivia", |
| "menu.cmd.8ball": "Preguntar a la bola 8", |
| "menu.cmd.meme": "Meme aleatorio", |
| "menu.cmd.language": "Cambiar idioma", |
| "menu.cmd.menu": "Mostrar menú de comandos", |
| "ping.title": "{ping} Pong", |
| "ping.desc": "Latencia: **{latency}ms**", |
| } |
|
|
| |
| TRANSLATIONS["fr"] = { |
| "lang.current": "{globe} Langue actuelle du serveur : **Français**.", |
| "lang.updated": "{ok} La langue du bot a été changée en **Français**.", |
| "lang.invalid": "{no} Langue non prise en charge.", |
| "menu.title": "{menu} Menu des commandes", |
| "menu.all": "Tout", |
| "menu.ai": "Panneau IA", |
| "menu.refresh": "Actualiser", |
| "menu.invite_button": "Inviter le bot", |
| "menu.cmd.play": "Jouer une chanson par URL ou nom", |
| "menu.cmd.purge": "Supprimer plusieurs messages", |
| "menu.cmd.ban": "Bannir un membre", |
| "menu.cmd.kick": "Expulser un membre", |
| "menu.cmd.mute": "Rendre muet un membre", |
| "menu.cmd.serverinfo": "Informations du serveur", |
| "menu.cmd.userinfo": "Informations de l'utilisateur", |
| "menu.cmd.chat": "Discuter avec l'IA", |
| "menu.cmd.gamehub": "Centre de jeux", |
| "menu.cmd.language": "Changer la langue", |
| "ping.title": "{ping} Pong", |
| "ping.desc": "Latence : **{latency}ms**", |
| } |
|
|
| |
| TRANSLATIONS["de"] = { |
| "lang.current": "{globe} Aktuelle Serversprache: **Deutsch**.", |
| "lang.updated": "{ok} Bot-Sprache wurde auf **Deutsch** gesetzt.", |
| "lang.invalid": "{no} Nicht unterstützte Sprache.", |
| "menu.title": "{menu} Befehlsmenü", |
| "menu.all": "Alle", |
| "menu.ai": "KI-Dashboard", |
| "menu.refresh": "Aktualisieren", |
| "menu.invite_button": "Bot einladen", |
| "menu.cmd.play": "Musik nach URL oder Name abspielen", |
| "menu.cmd.purge": "Mehrere Nachrichten löschen", |
| "menu.cmd.ban": "Mitglied bannen", |
| "menu.cmd.kick": "Mitglied kicken", |
| "menu.cmd.serverinfo": "Server-Informationen", |
| "menu.cmd.chat": "Mit KI chatten", |
| "menu.cmd.gamehub": "Spielzentrum", |
| "menu.cmd.language": "Sprache ändern", |
| "ping.title": "{ping} Pong", |
| "ping.desc": "Latenz: **{latency}ms**", |
| } |
|
|
| |
| TRANSLATIONS["tr"] = { |
| "lang.current": "{globe} Sunucu dili: **Türkçe**.", |
| "lang.updated": "{ok} Bot dili **Türkçe** olarak değiştirildi.", |
| "lang.invalid": "{no} Desteklenmeyen dil.", |
| "menu.title": "{menu} Komut Menüsü", |
| "menu.all": "Tümü", |
| "menu.ai": "YZ Paneli", |
| "menu.refresh": "Yenile", |
| "menu.invite_button": "Botu davet et", |
| "menu.cmd.play": "URL veya isimle şarkı çal", |
| "menu.cmd.purge": "Mesajları sil", |
| "menu.cmd.ban": "Üye yasakla", |
| "menu.cmd.kick": "Üye at", |
| "menu.cmd.serverinfo": "Sunucu bilgileri", |
| "menu.cmd.chat": "YZ ile sohbet", |
| "menu.cmd.gamehub": "Oyun merkezi", |
| "menu.cmd.language": "Dili değiştir", |
| "ping.title": "{ping} Pong", |
| "ping.desc": "Gecikme: **{latency}ms**", |
| } |
|
|
| |
| TRANSLATIONS["it"] = { |
| "lang.current": "{globe} Lingua corrente del server: **Italiano**.", |
| "lang.updated": "{ok} Lingua del bot impostata su **Italiano**.", |
| "lang.invalid": "{no} Lingua non supportata.", |
| "menu.title": "{menu} Menu Comandi", |
| "menu.all": "Tutto", |
| "menu.ai": "Pannello IA", |
| "menu.refresh": "Aggiorna", |
| "menu.cmd.play": "Riproduci brano per URL o nome", |
| "menu.cmd.serverinfo": "Info server", |
| "menu.cmd.chat": "Chatta con IA", |
| "ping.title": "{ping} Pong", |
| "ping.desc": "Latenza: **{latency}ms**", |
| } |
|
|
| |
| TRANSLATIONS["pt"] = { |
| "lang.current": "{globe} Idioma atual do servidor: **Português**.", |
| "lang.updated": "{ok} Idioma do bot alterado para **Português**.", |
| "lang.invalid": "{no} Idioma não suportado.", |
| "menu.title": "{menu} Menu de Comandos", |
| "menu.all": "Tudo", |
| "menu.ai": "Painel IA", |
| "menu.refresh": "Atualizar", |
| "menu.cmd.play": "Tocar música por URL ou nome", |
| "menu.cmd.serverinfo": "Info do servidor", |
| "menu.cmd.chat": "Conversar com IA", |
| "ping.title": "{ping} Pong", |
| "ping.desc": "Latência: **{latency}ms**", |
| } |
|
|
| |
| TRANSLATIONS["ru"] = { |
| "lang.current": "{globe} Текущий язык сервера: **Русский**.", |
| "lang.updated": "{ok} Язык бота изменён на **Русский**.", |
| "lang.invalid": "{no} Язык не поддерживается.", |
| "menu.title": "{menu} Меню команд", |
| "menu.all": "Все", |
| "menu.ai": "Панель ИИ", |
| "menu.refresh": "Обновить", |
| "menu.cmd.play": "Играть песню по URL или названию", |
| "menu.cmd.serverinfo": "Информация о сервере", |
| "menu.cmd.chat": "Чат с ИИ", |
| "ping.title": "{ping} Pong", |
| "ping.desc": "Задержка: **{latency}ms**", |
| } |
|
|
| |
| TRANSLATIONS["hi"] = { |
| "lang.current": "{globe} सर्वर की वर्तमान भाषा: **हिन्दी**.", |
| "lang.updated": "{ok} बॉट की भाषा **हिन्दी** कर दी गई है।", |
| "lang.invalid": "{no} यह भाषा समर्थित नहीं है।", |
| "menu.title": "{menu} कमांड मेनू", |
| "menu.all": "सभी", |
| "menu.ai": "AI पैनल", |
| "menu.refresh": "रिफ्रेश", |
| "menu.cmd.play": "URL या नाम से गाना बजाएं", |
| "menu.cmd.serverinfo": "सर्वर जानकारी", |
| "menu.cmd.chat": "AI से चैट", |
| "ping.title": "{ping} Pong", |
| "ping.desc": "विलंबता: **{latency}ms**", |
| } |
|
|
| |
| TRANSLATIONS["id"] = { |
| "lang.current": "{globe} Bahasa server saat ini: **Indonesia**.", |
| "lang.updated": "{ok} Bahasa bot diubah ke **Indonesia**.", |
| "lang.invalid": "{no} Bahasa tidak didukung.", |
| "menu.title": "{menu} Menu Perintah", |
| "menu.all": "Semua", |
| "menu.ai": "Panel AI", |
| "menu.refresh": "Segarkan", |
| "menu.cmd.play": "Putar lagu dengan URL atau nama", |
| "menu.cmd.serverinfo": "Info server", |
| "menu.cmd.chat": "Chat dengan AI", |
| "ping.title": "{ping} Pong", |
| "ping.desc": "Latensi: **{latency}ms**", |
| } |
|
|
| |
| TRANSLATIONS["ja"] = { |
| "lang.current": "{globe} 現在のサーバー言語: **日本語**。", |
| "lang.updated": "{ok} ボットの言語を **日本語** に変更しました。", |
| "lang.invalid": "{no} サポートされていない言語です。", |
| "menu.title": "{menu} コマンドメニュー", |
| "menu.all": "すべて", |
| "menu.ai": "AIパネル", |
| "menu.refresh": "更新", |
| "menu.cmd.play": "URLまたは名前で曲を再生", |
| "menu.cmd.serverinfo": "サーバー情報", |
| "menu.cmd.chat": "AIとチャット", |
| "ping.title": "{ping} Pong", |
| "ping.desc": "レイテンシ: **{latency}ms**", |
| } |
|
|
| |
| TRANSLATIONS["he"] = { |
| "lang.current": "{globe} שפת השרת הנוכחית: **עברית**.", |
| "lang.updated": "{ok} שפת הבוט שונתה ל-**עברית**.", |
| "lang.invalid": "{no} שפה לא נתמכת.", |
| "menu.title": "{menu} תפריט פקודות", |
| "menu.all": "הכל", |
| "menu.ai": "לוח AI", |
| "menu.refresh": "רענון", |
| "menu.cmd.play": "נגן שיר לפי URL או שם", |
| "menu.cmd.serverinfo": "מידע על השרת", |
| "menu.cmd.chat": "צ'אט עם AI", |
| "ping.title": "{ping} Pong", |
| "ping.desc": "זמן תגובה: **{latency}ms**", |
| } |
|
|
| |
| TRANSLATIONS["zh"] = { |
| "lang.current": "{globe} 当前服务器语言: **中文**。", |
| "lang.updated": "{ok} 机器人语言已切换为 **中文**。", |
| "lang.invalid": "{no} 不支持的语言。", |
| "menu.title": "{menu} 命令菜单", |
| "menu.all": "全部", |
| "menu.ai": "AI 面板", |
| "menu.refresh": "刷新", |
| "ping.title": "{ping} Pong", |
| "ping.desc": "延迟: **{latency}ms**", |
| } |
|
|
| |
| |
| |
|
|
| SUPPORTED_LANGUAGES = tuple(sorted(TRANSLATIONS.keys())) |
|
|
| |
| for _lang, _pack in TRANSLATIONS.items(): |
| for _key, _value in TRANSLATIONS["en"].items(): |
| _pack.setdefault(_key, _value) |
|
|
| _MISSING = object() |
|
|
|
|
| def t(lang: str, key: str, **kwargs: object) -> str: |
| """Get a translation with proper fallback handling. |
| |
| Falls back to English if the key is missing in the target language, |
| then falls back to the key itself if not found anywhere. |
| """ |
| val = TRANSLATIONS.get(lang, {}).get(key, _MISSING) |
| if val is _MISSING: |
| val = TRANSLATIONS.get("en", {}).get(key, key) |
| if not isinstance(val, str): |
| return key |
| result = val |
| for k, v in kwargs.items(): |
| result = result.replace("{" + k + "}", str(v)) |
| return result |
|
|
|
|
| def translate(lang: str, key: str, **kwargs: object) -> str: |
| """Translate a key with emoji placeholders and custom kwargs.""" |
| lang_pack = TRANSLATIONS.get(lang, TRANSLATIONS["ar"]) |
| text = lang_pack.get(key) or TRANSLATIONS["en"].get(key) or key |
| emoji_kwargs: dict[str, object] = { |
| "ok": ui("ok"), |
| "no": ui("no"), |
| "warn": ui("warn"), |
| "globe": ui("globe"), |
| "music": ui("music"), |
| "join": ui("join"), |
| "leave": ui("leave"), |
| "play": ui("play"), |
| "pause": ui("pause"), |
| "resume": ui("resume"), |
| "skip": ui("skip"), |
| "stop": ui("stop"), |
| "queue": ui("queue"), |
| "video": ui("video"), |
| "mario": ui("mario"), |
| "choose": ui("choose"), |
| "coin": ui("coin"), |
| "ping": ui("ping"), |
| "roll": ui("roll"), |
| "menu": ui("menu"), |
| "stats": ui("stats"), |
| "members": ui("members"), |
| "channels": ui("channels"), |
| "roles": ui("roles"), |
| "boost": ui("boost"), |
| "refresh": ui("refresh"), |
| "settings": ui("settings"), |
| "user": ui("user"), |
| "trivia": ui("trivia"), |
| "bot": ui("bot"), |
| "gamehub": ui("gamehub"), |
| "diamond": ui("diamond"), |
| "star": ui("star"), |
| "catjam": ui("catjam"), |
| "djpeepo": ui("djpeepo"), |
| "spotify": ui("spotify"), |
| "partytime": ui("partytime"), |
| "letsgo": ui("letsgo"), |
| "shield": ui("shield"), |
| "gift": ui("gift"), |
| "hype": ui("hype"), |
| "notebook": ui("notebook"), |
| } |
| merged = {**emoji_kwargs, **kwargs} |
| try: |
| return text.format(**merged) |
| except Exception: |
| return text |
|
|
|
|
| |
| |
| |
|
|
| import json |
| from pathlib import Path as _Path |
|
|
| _LOCALES_DIR = _Path(__file__).parent / "locales" |
| _CMD_DESC_CACHE: dict[str, str] | None = None |
|
|
|
|
| def _load_cmd_descs() -> dict[str, str]: |
| """Load all command descriptions from JSON locale files (English defaults).""" |
| global _CMD_DESC_CACHE |
| if _CMD_DESC_CACHE is not None: |
| return _CMD_DESC_CACHE |
| _CMD_DESC_CACHE = {} |
| en_path = _LOCALES_DIR / "en.json" |
| if not en_path.exists(): |
| return _CMD_DESC_CACHE |
| try: |
| data = json.loads(en_path.read_text(encoding="utf-8")) |
| except Exception: |
| return _CMD_DESC_CACHE |
|
|
| def _flatten(d: dict, prefix: str = "") -> None: |
| for k, v in d.items(): |
| nk = f"{prefix}.{k}" if prefix else k |
| if isinstance(v, str) and k.endswith("_desc"): |
| _CMD_DESC_CACHE[k] = v |
| _CMD_DESC_CACHE[nk] = v |
| elif isinstance(v, dict): |
| _flatten(v, nk) |
|
|
| _flatten(data) |
| return _CMD_DESC_CACHE |
|
|
|
|
| def get_cmd_desc(cmd_name: str, fallback: str = "") -> str: |
| """Get a command description from JSON locale files (English default). |
| |
| This is used at cog setup time to provide translated descriptions |
| to Discord slash commands. The description shown when the user types / |
| will match their client language if Discord supports it. |
| """ |
| descs = _load_cmd_descs() |
| |
| return descs.get(cmd_name, descs.get(f"{cmd_name}_desc", fallback)) |
|
|