# █ █ ▀ █▄▀ ▄▀█ █▀█ ▀ # █▀█ █ █ █ █▀█ █▀▄ █ # © Copyright 2022 # https://t.me/hikariatama # # 🔒 Licensed under the GNU AGPLv3 # 🌐 https://www.gnu.org/licenses/agpl-3.0.html from .. import loader, utils, translations from telethon.tl.types import Message import logging logger = logging.getLogger(__name__) @loader.tds class Translations(loader.Module): """Processes internal translations""" strings = { "name": "Translations", "lang_saved": "{} Language saved!", "pack_saved": ( "👍 Translate pack" " saved!" ), "incorrect_language": ( "🚫 Incorrect language" " specified" ), "lang_removed": ( "👍 Translations reset" " to default ones" ), "check_pack": ( "🚫 Invalid pack format" " in url" ), "check_url": ( "🚫 You need to specify" " valid url containing a langpack" ), "too_long": ( "📁 Command output seems" " to be too long, so it's sent in file." ), "opening_form": " Opening form...", "opening_gallery": " Opening gallery...", "opening_list": " Opening list...", "inline403": "🚫 You can't send inline units in this chat", "invoke_failed": "🚫 Unit invoke failed! More info in logs", } strings_ru = { "lang_saved": "{} Язык сохранён!", "pack_saved": ( "👍 Пакет переводов" " сохранён!" ), "incorrect_language": ( "🚫 Указан неверный" " язык" ), "lang_removed": ( "👍 Переводы сброшены" " на стандартные" ), "check_pack": ( "🚫 Неверный формат" " пакета переводов в ссылке" ), "check_url": ( "🚫 Вы должны указать" " ссылку, содержащую пакет переводов" ), "too_long": ( "📁 Вывод команды слишком" " длинный, поэтому он отправлен в файле." ), "opening_form": " Открываю форму...", "opening_gallery": " Открываю галерею...", "opening_list": " Открываю список...", "inline403": "🚫 Вы не можете отправлять встроенные элементы в этом чате", "invoke_failed": "🚫 Вызов модуля не удался! Подробнее в логах", } strings_de = { "lang_saved": "{} Sprache gespeichert!", "pack_saved": ( "👍 Übersetzungs" " Paket gespeichert!" ), "incorrect_language": ( "🚫 Falsche Sprache" " angegeben" ), "lang_removed": ( "👍 Übersetzungen" " auf Standard zurückgesetzt" ), "check_pack": ( "🚫 Ungültiges" " Übersetzungs Paket in der URL" ), "check_url": ( "🚫 Sie müssen eine" " gültige URL angeben, die ein Übersetzungs Paket enthält" ), "too_long": ( "📁 Befehlsausgabe scheint" " zu lang zu sein, daher wird sie in einer Datei gesendet." ), "opening_form": " Formular wird geöffnet...", "opening_gallery": " Galerie wird geöffnet...", "opening_list": " Liste wird geöffnet...", "inline403": "🚫 Sie können Inline-Einheiten in diesem Chat nicht senden", "invoke_failed": ( "🚫 Modulaufruf fehlgeschlagen! Weitere Informationen in den" " Protokollen" ), } strings_tr = { "lang_saved": "{} Dil kaydedildi!", "pack_saved": ( "👍 Çeviri paketi" " kaydedildi!" ), "incorrect_language": ( "🚫 Yanlış dil" " belirtildi" ), "lang_removed": ( "👍 Çeviriler varsayılan" " hale getirildi" ), "check_pack": ( "🚫 URL'deki çeviri" " paketi geçersiz" ), "check_url": ( "🚫 Geçerli bir URL" " belirtmelisiniz" ), "too_long": ( "📁 Komut çıktısı çok uzun" " görünüyor, bu yüzden dosya olarak gönderildi." ), "opening_form": " Form açılıyor...", "opening_gallery": " Galeri açılıyor...", "opening_list": " Liste açılıyor...", "inline403": "🚫 Bu sohbette inline öğeleri gönderemezsiniz", "invoke_failed": "🚫 Modül çağrısı başarısız! Ayrıntılar günlüklerde", } strings_uz = { "lang_saved": "{} Til saqlandi!", "pack_saved": ( "👍 Tarjima paketi" " saqlandi!" ), "incorrect_language": ( "🚫 Noto'g'ri til" " belgilandi" ), "lang_removed": ( "👍 Tarjimalar" " standart holatga qaytarildi" ), "check_pack": ( "🚫 URL'dagi tarjima" " paketi noto'g'ri" ), "check_url": ( "🚫 Siz noto'g'ri URL" " belirtdingiz" ), "too_long": ( "📁 Bajarilgan buyruq" " natijasi juda uzun, shuning uchun fayl sifatida yuborildi." ), "opening_form": " Formani ochish...", "opening_gallery": " Galeriyani ochish...", "opening_list": " Ro'yxatni ochish...", "inline403": ( "🚫 Siz bu guruhda inline obyektlarni yuborishingiz mumkin emas" ), "invoke_failed": ( "🚫 Modulni chaqirish muvaffaqiyatsiz! Batafsil ma'lumotlar" " jurnallarda" ), } strings_hi = { "lang_saved": "{} भाषा सहेजा गया!", "pack_saved": ( "👍 अनुवाद पैक" " सहेजा गया!" ), "incorrect_language": ( "🚫 गलत भाषा" " निर्दिष्ट किया गया" ), "lang_removed": ( "👍 अनुवाद डिफ़ॉल्ट" " पर रीसेट किए गए" ), "check_pack": ( "🚫 यूआरएल में गलत" " अनुवाद पैक निर्दिष्ट किया गया" ), "check_url": ( "🚫 आपने गलत यूआरएल" " निर्दिष्ट किया है" ), "too_long": ( "📁 कमांड आउटपुट बहुत लंबा" " लगता है, इसलिए फ़ाइल में भेजा जाता है." ), "opening_form": " फॉर्म खोल रहा है...", "opening_gallery": " गैलरी खोल रहा है...", "opening_list": " सूची खोल रहा है...", "inline403": "🚫 आप इस ग्रुप में इनलाइन आइटम नहीं भेज सकते हैं", "invoke_failed": "🚫 मॉड्यूल इन्वोक विफल! विस्तृत जानकारी लॉग में है", } @loader.command( ru_doc="[языки] - Изменить стандартный язык", de_doc="[Sprachen] - Ändere die Standard-Sprache", tr_doc="[Diller] - Varsayılan dil değiştir", uz_doc="[til] - Standart tili o'zgartirish", hi_doc="[भाषाएं] - डिफ़ॉल्ट भाषा बदलें", ) async def setlang(self, message: Message): """[languages in the order of priority] - Change default language""" args = utils.get_args_raw(message) if not args or any(len(i) != 2 for i in args.split(" ")): await utils.answer(message, self.strings("incorrect_language")) return self._db.set(translations.__name__, "lang", args.lower()) await self.translator.init() for module in self.allmodules.modules: try: module.config_complete(reload_dynamic_translate=True) except Exception as e: logger.debug( "Can't complete dynamic translations reload of %s due to %s", module, e, ) fixmap = {"en": "gb", "hi": "in"} await utils.answer( message, self.strings("lang_saved").format( "".join( [ utils.get_lang_flag(fixmap.get(lang, lang)) for lang in args.lower().split(" ") ] ) ), ) @loader.command( ru_doc="[ссылка на пак | пустое чтобы удалить] - Изменить внешний пак перевода", de_doc=( "[Link zum Paket | leer um zu entfernen] - Ändere das externe Übersetzungs" " Paket" ), tr_doc=( "[Çeviri paketi bağlantısı | boş bırakmak varsayılan hale getirir] - Harici" " çeviri paketini değiştir" ), uz_doc=( "[tarjima paketi havolasini | bo'sh qoldirish standart holatga qaytaradi] -" " Tashqi tarjima paketini o'zgartirish" ), hi_doc="[अनुवाद पैक का लिंक | खाली छोड़ दें] - बाहरी अनुवाद पैक बदलें", ) async def dllangpackcmd(self, message: Message): """[link to a langpack | empty to remove] - Change Hikka translate pack (external) """ args = utils.get_args_raw(message) if not args: self._db.set(translations.__name__, "pack", False) await self.translator.init() await utils.answer(message, self.strings("lang_removed")) return if not utils.check_url(args): await utils.answer(message, self.strings("check_url")) return self._db.set(translations.__name__, "pack", args) success = await self.translator.init() for module in self.allmodules.modules: try: module.config_complete(reload_dynamic_translate=True) except Exception as e: logger.debug( "Can't complete dynamic translations reload of %s due to %s", module, e, ) await utils.answer( message, self.strings("pack_saved" if success else "check_pack"), )