# █ █ ▀ █▄▀ ▄▀█ █▀█ ▀
# █▀█ █ █ █ █▀█ █▀▄ █
# © 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"),
)