translations.py 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845
  1. # ©️ Dan Gazizullin, 2021-2023
  2. # This file is a part of Hikka Userbot
  3. # 🌐 https://github.com/hikariatama/Hikka
  4. # You can redistribute it and/or modify it under the terms of the GNU AGPLv3
  5. # 🔑 https://www.gnu.org/licenses/agpl-3.0.html
  6. import logging
  7. from telethon.tl.types import Message
  8. from .. import loader, translations, utils
  9. from ..inline.types import InlineCall
  10. logger = logging.getLogger(__name__)
  11. SUPPORTED_LANGUAGES = {
  12. "en": "🇬🇧 English",
  13. "ru": "🇷🇺 Русский",
  14. "fr": "🇫🇷 Français",
  15. "it": "🇮🇹 Italiano",
  16. "de": "🇩🇪 Deutsch",
  17. "tr": "🇹🇷 Türkçe",
  18. "uz": "🇺🇿 O'zbekcha",
  19. "es": "🇪🇸 Español",
  20. "kk": "🇰🇿 Қазақша",
  21. "tt": "🥟 Татарча",
  22. }
  23. @loader.tds
  24. class Translations(loader.Module):
  25. """Processes internal translations"""
  26. strings = {
  27. "name": "Translations",
  28. "lang_saved": "{} <b>Language saved!</b>",
  29. "pack_saved": (
  30. "<emoji document_id=5197474765387864959>👍</emoji> <b>Translate pack"
  31. " saved!</b>"
  32. ),
  33. "incorrect_language": (
  34. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Incorrect language"
  35. " specified</b>"
  36. ),
  37. "lang_removed": (
  38. "<emoji document_id=5197474765387864959>👍</emoji> <b>Translations reset"
  39. " to default ones</b>"
  40. ),
  41. "check_pack": (
  42. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Invalid pack format"
  43. " in url</b>"
  44. ),
  45. "check_url": (
  46. "<emoji document_id=5312526098750252863>🚫</emoji> <b>You need to specify"
  47. " valid url containing a langpack</b>"
  48. ),
  49. "too_long": (
  50. "<emoji document_id=5433653135799228968>📁</emoji> <b>Command output seems"
  51. " to be too long, so it's sent in file.</b>"
  52. ),
  53. "opening_form": " <b>Opening form...</b>",
  54. "opening_gallery": " <b>Opening gallery...</b>",
  55. "opening_list": " <b>Opening list...</b>",
  56. "inline403": (
  57. "<emoji document_id=5312526098750252863>🚫</emoji> <b>You can't send inline"
  58. " units in this chat</b>"
  59. ),
  60. "invoke_failed": "<b>🚫 Unit invoke failed! More info in logs</b>",
  61. "show_inline_cmds": "📄 Show all available inline commands",
  62. "no_inline_cmds": "You have no available commands",
  63. "no_inline_cmds_msg": (
  64. "<b>😔 There are no available inline commands or you lack access to them</b>"
  65. ),
  66. "inline_cmds": "ℹ️ You have {} available command(-s)",
  67. "inline_cmds_msg": "<b>ℹ️ Available inline commands:</b>\n\n{}",
  68. "run_command": "🏌️ Run command",
  69. "command_msg": "<b>🌘 Command «{}»</b>\n\n<i>{}</i>",
  70. "command": "🌘 Command «{}»",
  71. "button403": "You are not allowed to press this button!",
  72. "keep_id": "⚠️ Do not remove ID! {}",
  73. "choose_language": "🗽 <b>Choose language</b>",
  74. "not_official": (
  75. "<emoji document_id=5312383351217201533>⚠️</emoji> <b>This language is not"
  76. " officially supported</b>"
  77. ),
  78. "requested_join": (
  79. "💫 <b>Module</b> <code>{}</code> <b>requested to join channel <a"
  80. " href='https://t.me/{}'>{}</a></b>\n\n<b>❓ Reason:</b> <i>{}</i>"
  81. ),
  82. "fw_error": (
  83. "<emoji document_id=5877458226823302157>🕒</emoji> <b>Call"
  84. "</b> <code>{}</code> <b>caused FloodWait of {} on method"
  85. "</b> <code>{}</code>"
  86. ),
  87. "rpc_error": (
  88. "<emoji document_id=5877477244938489129>🚫</emoji> <b>Call"
  89. "</b> <code>{}</code> <b>failed due to RPC error:</b>"
  90. " <code>{}</code>"
  91. ),
  92. }
  93. strings_ru = {
  94. "lang_saved": "{} <b>Язык сохранён!</b>",
  95. "pack_saved": (
  96. "<emoji document_id=5197474765387864959>👍</emoji> <b>Пакет переводов"
  97. " сохранён!</b>"
  98. ),
  99. "incorrect_language": (
  100. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Указан неверный"
  101. " язык</b>"
  102. ),
  103. "lang_removed": (
  104. "<emoji document_id=5197474765387864959>👍</emoji> <b>Переводы сброшены"
  105. " на стандартные</b>"
  106. ),
  107. "check_pack": (
  108. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Неверный формат"
  109. " пакета переводов в ссылке</b>"
  110. ),
  111. "check_url": (
  112. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Вы должны указать"
  113. " ссылку, содержащую пакет переводов</b>"
  114. ),
  115. "too_long": (
  116. "<emoji document_id=5433653135799228968>📁</emoji> <b>Вывод команды слишком"
  117. " длинный, поэтому он отправлен в файле.</b>"
  118. ),
  119. "opening_form": " <b>Открываю форму...</b>",
  120. "opening_gallery": " <b>Открываю галерею...</b>",
  121. "opening_list": " <b>Открываю список...</b>",
  122. "inline403": (
  123. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Вы не можете"
  124. " отправлять встроенные элементы в этом чате</b>"
  125. ),
  126. "invoke_failed": "<b>🚫 Вызов модуля не удался! Подробнее в логах</b>",
  127. "show_inline_cmds": "📄 Показать все доступные встроенные команды",
  128. "no_inline_cmds": "У вас нет доступных inline команд",
  129. "no_inline_cmds_msg": (
  130. "<b>😔 Нет доступных inline команд или у вас нет доступа к ним</b>"
  131. ),
  132. "inline_cmds": "ℹ️ У вас {} доступная(-ых) команда(-ы)",
  133. "inline_cmds_msg": "<b>ℹ️ Доступные inline команды:</b>\n\n{}",
  134. "run_command": "🏌️ Выполнить команду",
  135. "command_msg": "<b>🌘 Команда «{}»</b>\n\n<i>{}</i>",
  136. "command": "🌘 Команда «{}»",
  137. "button403": "Вы не можете нажать на эту кнопку!",
  138. "keep_id": "⚠️ Не удаляйте ID! {}",
  139. "choose_language": "🗽 <b>Выберите язык</b>",
  140. "not_official": (
  141. "<emoji document_id=5312383351217201533>⚠️</emoji> <b>Этот язык не"
  142. " поддерживается официально</b>"
  143. ),
  144. "requested_join": (
  145. "💫 <b>Модуль</b> <code>{}</code> <b>запросил присоединение к каналу <a"
  146. " href='https://t.me/{}'>{}</a></b>\n\n<b>❓ Причина:</b> <i>{}</i>"
  147. ),
  148. "fw_error": (
  149. "<emoji document_id=5877458226823302157>🕒</emoji> <b>Команда"
  150. "</b> <code>{}</code> <b>вызвал FloodWait {} в методе</b> <code> {}</code>"
  151. ),
  152. "rpc_error": (
  153. "<emoji document_id=5877477244938489129>🚫</emoji> <b>Команда"
  154. "</b> <code>{}</code> <b>не удалась из-за ошибки RPC:</b>"
  155. " <code>{}</code>"
  156. ),
  157. }
  158. strings_fr = {
  159. "lang_saved": "{} <b>Langue enregistrée!</b>",
  160. "pack_saved": (
  161. "<emoji document_id=5197474765387864959>👍</emoji> <b>Paquet de traduction"
  162. " enregistré!</b>"
  163. ),
  164. "incorrect_language": (
  165. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Langue incorrecte</b>"
  166. ),
  167. "lang_removed": (
  168. "<emoji document_id=5197474765387864959>👍</emoji> <b>Traductions"
  169. " réinitialisées à celles par défaut</b>"
  170. ),
  171. "check_pack": (
  172. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Format de paquet de"
  173. " traduction invalide dans le lien</b>"
  174. ),
  175. "check_url": (
  176. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Vous devez fournir un"
  177. " lien contenant un paquet de traduction</b>"
  178. ),
  179. "too_long": (
  180. "<emoji document_id=5433653135799228968>📁</emoji> <b>La sortie de la"
  181. " commande est trop longue, donc elle a été envoyée dans un fichier.</b>"
  182. ),
  183. "opening_form": " <b>Ouverture du formulaire...</b>",
  184. "opening_gallery": " <b>Ouverture de la galerie...</b>",
  185. "opening_list": " <b>Ouverture de la liste...</b>",
  186. "inline403": (
  187. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Vous ne pouvez pas"
  188. " envoyer d'éléments intégrés dans ce chat</b>"
  189. ),
  190. "invoke_failed": (
  191. "<b>🚫 L'appel du module a échoué! Voir les journaux pour plus de"
  192. " détails</b>"
  193. ),
  194. "show_inline_cmds": "📄 Afficher toutes les commandes intégrées disponibles",
  195. "no_inline_cmds": "Vous n'avez aucune commande inline disponible",
  196. "no_inline_cmds_msg": (
  197. "<b>😔 Vous n'avez aucune commande inline disponible ou vous n'avez pas"
  198. " accès à celles-ci</b>"
  199. ),
  200. "inline_cmds": "ℹ️ Vous avez {} commande disponible",
  201. "inline_cmds_msg": "<b>ℹ️ Commandes inline disponibles:</b>\n\n{}",
  202. "run_command": "🏌️ Exécuter la commande",
  203. "command_msg": "<b>🌘 Commande «{}»</b>\n\n<i>{}</i>",
  204. "command": "🌘 Commande «{}»",
  205. "button403": "Vous ne pouvez pas appuyer sur ce bouton!",
  206. "keep_id": "⚠️ Ne supprimez pas l'ID! {}",
  207. "choose_language": "🗽 <b>Choisissez la langue</b>",
  208. "not_official": (
  209. "<emoji document_id=5312383351217201533>⚠️</emoji> <b>Cette langue n'est"
  210. " pas officiellement prise en charge</b>"
  211. ),
  212. "requested_join": (
  213. "💫 <b>Le module</b> <code>{}</code> <b>a demandé à rejoindre le canal <a"
  214. " href='https://t.me/{}'>{}</a></b>\n\n<b>❓ Raison:</b> <i>{}</i>"
  215. ),
  216. "fw_error": (
  217. "<emoji document_id=5877458226823302157>🕒</emoji> <b>La commande</b>"
  218. " <code>{}</code> <b>a provoqué un FloodWait {} dans la méthode</b> <code>"
  219. " {}</code>"
  220. ),
  221. "rpc_error": (
  222. "<emoji document_id=5877477244938489129>🚫</emoji> <b>La commande</b>"
  223. " <code>{}</code> <b>ne s'est pas déroulée en raison d'une erreur RPC:</b>"
  224. " <code>{}</code>"
  225. ),
  226. }
  227. strings_it = {
  228. "lang_saved": "{} <b>Lingua salvata!</b>",
  229. "pack_saved": (
  230. "<emoji document_id=5197474765387864959>👍</emoji> <b>Pacchetto di"
  231. " traduzione salvato!</b>"
  232. ),
  233. "incorrect_language": (
  234. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Lingua specificata"
  235. " non corretta</b>"
  236. ),
  237. "lang_removed": (
  238. "<emoji document_id=5197474765387864959>👍</emoji> <b>Traduzioni"
  239. " ripristinate</b>"
  240. ),
  241. "check_pack": (
  242. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Formato pacchetto di"
  243. " traduzione specificato errato</b>"
  244. ),
  245. "check_url": (
  246. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Deve essere"
  247. " specificata un url contenente il pacchetto di traduzione</b>"
  248. ),
  249. "too_long": (
  250. "<emoji document_id=5433653135799228968>📁</emoji> <b>Output della stringa"
  251. " troppo lungo, viene inviato in un file</b>"
  252. ),
  253. "opening_form": " <b>Apertura form...</b>",
  254. "opening_gallery": " <b>Apertura galleria...</b>",
  255. "opening_list": " <b>Apertura lista...</b>",
  256. "inline403": (
  257. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Non puoi"
  258. " inviare inline in questo chat</b>"
  259. ),
  260. "invoke_failed": "<b>🚫 Invocazione modulo fallita! controlla i log</b>",
  261. "show_inline_cmds": "📄 Mostra tutti i comandi inline disponibili",
  262. "no_inline_cmds": "Non hai comandi inline disponibili",
  263. "no_inline_cmds_msg": (
  264. "<b>😔 Non hai comandi inline disponibili o non hai accesso a loro</b>"
  265. ),
  266. "inline_cmds": "ℹ️ Hai {} comando(-i) disponibili",
  267. "inline_cmds_msg": "<b>ℹ️ Comandi inline disponibili:</b>\n\n{}",
  268. "run_command": "🏌️ Esegui comando",
  269. "command_msg": "<b>🌘 Comando «{}»</b>\n\n<i>{}</i>",
  270. "command": "🌘 Comando «{}»",
  271. "button403": "Non puoi premere questo pulsante!",
  272. "keep_id": "⚠️ Non cancellare ID! {}",
  273. "choose_language": "🗽 <b>Scegli la lingua</b>",
  274. "not_official": (
  275. "<emoji document_id=5312383351217201533>⚠️</emoji> <b>Questa lingua non"
  276. " è supportata ufficialmente</b>"
  277. ),
  278. "requested_join": (
  279. "💫 <b>Il modulo</b> <code>{}</code> <b>ha richiesto di unirsi al canale <a"
  280. " href='https://t.me/{}'>{}</a></b>\n\n<b>❓ Motivo:</b> <i>{}</i>"
  281. ),
  282. "fw_error": (
  283. "<emoji document_id=5877458226823302157>🕒</emoji> <b>Il comando</b>"
  284. " <code>{}</code> <b>ha causato un FloodWait di {} nel metodo</b> <code>"
  285. " {}</code>"
  286. ),
  287. "rpc_error": (
  288. "<emoji document_id=5877477244938489129>🚫</emoji> <b>Il comando"
  289. "</b> <code>{}</code> <b>non è riuscito a causa di un RPC error:</b>"
  290. " <code>{}</code>"
  291. ),
  292. }
  293. strings_de = {
  294. "lang_saved": "{} <b>Sprache gespeichert!</b>",
  295. "pack_saved": (
  296. "<emoji document_id=5197474765387864959>👍</emoji> <b>Übersetzungs"
  297. " Paket gespeichert!</b>"
  298. ),
  299. "incorrect_language": (
  300. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Falsche Sprache"
  301. " angegeben</b>"
  302. ),
  303. "lang_removed": (
  304. "<emoji document_id=5197474765387864959>👍</emoji> <b>Übersetzungen"
  305. " auf Standard zurückgesetzt</b>"
  306. ),
  307. "check_pack": (
  308. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Ungültiges"
  309. " Übersetzungs Paket in der URL</b>"
  310. ),
  311. "check_url": (
  312. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Sie müssen eine"
  313. " gültige URL angeben, die ein Übersetzungs Paket enthält</b>"
  314. ),
  315. "too_long": (
  316. "<emoji document_id=5433653135799228968>📁</emoji> <b>Befehlsausgabe scheint"
  317. " zu lang zu sein, daher wird sie in einer Datei gesendet.</b>"
  318. ),
  319. "opening_form": " <b>Formular wird geöffnet...</b>",
  320. "opening_gallery": " <b>Galerie wird geöffnet...</b>",
  321. "opening_list": " <b>Liste wird geöffnet...</b>",
  322. "inline403": (
  323. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Sie können"
  324. " Inline-Einheiten in diesem Chat nicht senden</b>"
  325. ),
  326. "invoke_failed": (
  327. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Modulaufruf"
  328. " fehlgeschlagen! Weitere Informationen in den Protokollen</b>"
  329. ),
  330. "show_inline_cmds": "📄 Zeige alle verfügbaren Inline-Befehle",
  331. "no_inline_cmds": "Sie haben keine verfügbaren Inline-Befehle",
  332. "no_inline_cmds_msg": (
  333. "<b>😔 Keine verfügbaren Inline-Befehle oder Sie haben keinen Zugriff"
  334. " auf sie</b>"
  335. ),
  336. "inline_cmds": "ℹ️ Sie haben {} verfügbare(n) Befehl(e)",
  337. "inline_cmds_msg": "<b>ℹ️ Verfügbare Inline-Befehle:</b>\n\n{}",
  338. "run_command": "🏌️ Befehl ausführen",
  339. "command_msg": "<b>🌘 Befehl «{}»</b>\n\n<i>{}</i>",
  340. "command": "🌘 Befehl «{}»",
  341. "button403": "Sie können auf diese Schaltfläche nicht klicken!",
  342. "keep_id": "⚠️ Löschen sie das ID nicht! {}",
  343. "choose_language": "🗽 <b>Wählen Sie eine Sprache</b>",
  344. "not_official": (
  345. "<emoji document_id=5312383351217201533>⚠️</emoji> <b>Diese Sprache wird"
  346. " nicht offiziell unterstützt</b>"
  347. ),
  348. "requested_join": (
  349. "💫 <b>Modul</b> <code>{}</code> <b>hat den Beitritt zum Kanal <a"
  350. " href='https://t.me/{}'>{}</a> angefordert</b>\n\n<b>❓ Grund:"
  351. "</b> <i>{}</i>"
  352. ),
  353. "fw_error": (
  354. "<emoji document_id=5877458226823302157>🕒</emoji> <b>Befehl"
  355. "</b> <code>{}</code> <b>hat FloodWait {} in der Methode"
  356. "</b> <code>{}</code>"
  357. ),
  358. "rpc_error": (
  359. "<emoji document_id=5877477244938489129>🚫</emoji> <b>Befehl"
  360. "</b> <code>{}</code> <b>ist fehlgeschlagen wegen RPC-Fehler"
  361. ":</b> <code>{}</code>"
  362. ),
  363. }
  364. strings_tr = {
  365. "lang_saved": "{} <b>Dil kaydedildi!</b>",
  366. "pack_saved": (
  367. "<emoji document_id=5197474765387864959>👍</emoji> <b>Çeviri paketi"
  368. " kaydedildi!</b>"
  369. ),
  370. "incorrect_language": (
  371. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Yanlış dil"
  372. " belirtildi</b>"
  373. ),
  374. "lang_removed": (
  375. "<emoji document_id=5197474765387864959>👍</emoji> <b>Çeviriler varsayılan"
  376. " hale getirildi</b>"
  377. ),
  378. "check_pack": (
  379. "<emoji document_id=5312526098750252863>🚫</emoji> <b>URL'deki çeviri"
  380. " paketi geçersiz</b>"
  381. ),
  382. "check_url": (
  383. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Geçerli bir dil paketi"
  384. " içeren URL belirtmelisiniz</b>"
  385. ),
  386. "too_long": (
  387. "<emoji document_id=5433653135799228968>📁</emoji> <b>Komut çıktısı çok uzun"
  388. " görünüyor, bu yüzden dosya olarak gönderildi.</b>"
  389. ),
  390. "opening_form": " <b>Form açılıyor...</b>",
  391. "opening_gallery": " <b>Galeri açılıyor...</b>",
  392. "opening_list": " <b>Liste açılıyor...</b>",
  393. "inline403": (
  394. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Bu sohbete satır içi"
  395. " birimler gönderemezsin</b>"
  396. ),
  397. "invoke_failed": (
  398. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Modül çağrısı"
  399. " başarısız! Kayıtlardan daha fazla bilgiye erişebilirsin</b>"
  400. ),
  401. "show_inline_cmds": "📄 Tüm kullanılabilir satır içi komutlarını göster",
  402. "no_inline_cmds": "Kullanılabilir satır içi komutunuz yok",
  403. "no_inline_cmds_msg": (
  404. "<b>😔 Kullanılabilir satır içi komutunuz yok veya erişiminiz yok</b>"
  405. ),
  406. "inline_cmds": "ℹ️ {} adet kullanılabilir komutunuz var",
  407. "inline_cmds_msg": "<b>ℹ️ Kullanılabilir satır içi komutlar:</b>\n\n{}",
  408. "run_command": "🏌️ Komutu çalıştır",
  409. "command_msg": "<b>🌘 Komut «{}»</b>\n\n<i>{}</i>",
  410. "command": "🌘 Komut «{}»",
  411. "button403": "Bu düğmeye basamazsınız!",
  412. "keep_id": "⚠️ ID'yi silmeyin! {}",
  413. "choose_language": "🗽 <b>Bir dil seçin</b>",
  414. "not_official": (
  415. "<emoji document_id=5312383351217201533>⚠️</emoji> <b>Bu dil resmi olarak"
  416. " desteklenmiyor</b>"
  417. ),
  418. "requested_join": (
  419. "💫 <b>Modül</b> <code>{}</code> <b><a href='https://t.me/{}'>{}</a>"
  420. " kanalına katılma isteği gönderdi</b>\n\n<b>❓ Sebep:</b> <i>{}</i>"
  421. ),
  422. "fw_error": (
  423. "<emoji document_id=5877458226823302157>🕒</emoji> <b>Komut"
  424. "</b> <code>{}</code> <b>FloodWait {} nedeniyle</b> <code>{}</code><b>"
  425. " yönteminde başarısız oldu</b>"
  426. ),
  427. "rpc_error": (
  428. "<emoji document_id=5877477244938489129>🚫</emoji> <b>Komut"
  429. "</b> <code>{}</code> <b>RPC hatası nedeniyle başarısız"
  430. " oldu:</b> <code>{}</code>"
  431. ),
  432. }
  433. strings_uz = {
  434. "lang_saved": "{} <b>Til saqlandi!</b>",
  435. "pack_saved": (
  436. "<emoji document_id=5197474765387864959>👍</emoji> <b>Tarjima paketi"
  437. " saqlandi!</b>"
  438. ),
  439. "incorrect_language": (
  440. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Noto'g'ri til"
  441. " belgilandi</b>"
  442. ),
  443. "lang_removed": (
  444. "<emoji document_id=5197474765387864959>👍</emoji> <b>Tarjimalar"
  445. " standart holatga qaytarildi</b>"
  446. ),
  447. "check_pack": (
  448. "<emoji document_id=5312526098750252863>🚫</emoji> <b>URL'dagi tarjima"
  449. " paketi noto'g'ri</b>"
  450. ),
  451. "check_url": (
  452. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Siz noto'g'ri URL"
  453. " belirtdingiz</b>"
  454. ),
  455. "too_long": (
  456. "<emoji document_id=5433653135799228968>📁</emoji> <b>Bajarilgan buyruq"
  457. " natijasi juda uzun, shuning uchun fayl sifatida yuborildi.</b>"
  458. ),
  459. "opening_form": " <b>Formani ochish...</b>",
  460. "opening_gallery": " <b>Galeriyani ochish...</b>",
  461. "opening_list": " <b>Ro'yxatni ochish...</b>",
  462. "inline403": (
  463. "🚫 <b>Siz bu guruhda inline obyektlarni yuborishingiz mumkin emas</b>"
  464. ),
  465. "invoke_failed": (
  466. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Modulni chaqirish"
  467. " muvaffaqiyatsiz! Batafsil ma'lumotlar jurnallarda</b>"
  468. ),
  469. "show_inline_cmds": "📄 Barcha mavjud inline buyruqlarini ko'rsatish",
  470. "no_inline_cmds": "Sizda mavjud inline buyruqlar yo'q",
  471. "no_inline_cmds_msg": (
  472. "<b>😔 Sizda mavjud inline buyruqlar yo'q yoki ularga kirish huquqingiz"
  473. " yo'q</b>"
  474. ),
  475. "inline_cmds": "ℹ️ Sizda {} mavjud buyruq bor",
  476. "inline_cmds_msg": "<b>ℹ️ Mavjud inline buyruqlar:</b>\n\n{}",
  477. "run_command": "🏌️ Buyruqni bajarish",
  478. "command_msg": "<b>🌘 Buyruq «{}»</b>\n\n<i>{}</i>",
  479. "command": "🌘 Buyruq «{}»",
  480. "button403": "Siz ushbu tugmani bosib bo'lmaysiz!",
  481. "keep_id": "⚠️ ID-ni o'chirmang! {}",
  482. "choose_language": "🗽 <b>Tilni tanlang</b>",
  483. "not_official": (
  484. "<emoji document_id=5312383351217201533>⚠️</emoji> <b>Ushbu til"
  485. " rasmiylashtirilmagan</b>"
  486. ),
  487. "requested_join": (
  488. "💫 <b>Modul</b> <code>{}</code> <b><a href='https://t.me/{}'>{}</a>"
  489. " guruhiga qo'shilish so'rovi yubordi</b>\n\n<b>❓ Sababi:</b> <i>{}</i>"
  490. ),
  491. "fw_error": (
  492. "<emoji document_id=5877458226823302157>🕒</emoji> <b>Buyruq"
  493. "</b> <code>{}</code> <b>FloodWait {} sababli</b> <code>{}</code> <b>usuli"
  494. " bilan muvaffaqiyatsiz bo'ldi</b>"
  495. ),
  496. "rpc_error": (
  497. "<emoji document_id=5877477244938489129>🚫</emoji> <b>Buyruq"
  498. "</b> <code>{}</code> <b>RPC xatosi sababli muvaffaqiyatsiz"
  499. " bo'ldi:</b> <code>{}</code>"
  500. ),
  501. }
  502. strings_es = {
  503. "lang_saved": "{} <b>¡Idioma guardado!</b>",
  504. "pack_saved": (
  505. "<emoji document_id=5197474765387864959>👍</emoji> <b>¡Paquete de"
  506. " traducción guardado!</b>"
  507. ),
  508. "incorrect_language": (
  509. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Idioma"
  510. " incorrecto seleccionado</b>"
  511. ),
  512. "lang_removed": (
  513. "<emoji document_id=5197474765387864959>👍</emoji> <b>Restablecer la"
  514. " traducción a los valores predeterminados</b>"
  515. ),
  516. "check_pack": (
  517. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Paquete de"
  518. " traducción seleccionado incorrecto</b>"
  519. ),
  520. "check_url": (
  521. "<emoji document_id=5312526098750252863>🚫</emoji> <b>URL incorrecta"
  522. " seleccionada</b>"
  523. ),
  524. "too_long": (
  525. "<emoji document_id=5433653135799228968>📁</emoji> <b>El resultado del"
  526. " comando excede el límite. Enviado como archivo.</b>"
  527. ),
  528. "opening_form": " <b>Abriendo formulario...</b>",
  529. "opening_gallery": " <b>Abriendo galería...</b>",
  530. "opening_list": " <b>Abriendo lista...</b>",
  531. "inline403": (
  532. "🚫 <b>No se permiten elementos de interfaz de usuario en este grupo</b>"
  533. ),
  534. "invoke_failed": (
  535. "<emoji document_id=5312526098750252863>🚫</emoji> <b>¡Error al invocar la"
  536. " unidad! Consulte el registro para obtener más detalles</b>"
  537. ),
  538. "show_inline_cmds": "📄 Mostrar todos los comandos disponibles",
  539. "no_inline_cmds": "No hay comandos disponibles",
  540. "no_inline_cmds_msg": (
  541. "<b>😔 No hay comandos disponibles o no tienes permiso para acceder a"
  542. " los comandos</b>"
  543. ),
  544. "inline_cmds": "ℹ️ {} comandos disponibles",
  545. "inline_cmds_msg": "<b>ℹ️ Comandos disponibles:</b>\n\n{}",
  546. "run_command": "🏌️ Ejecutar comando",
  547. "command_msg": "<b>🌘 Comando '{}'</b>\n\n<i>{}</i>",
  548. "command": "🌘 Comando '{}'",
  549. "button403": "¡No puedes presionar este botón!",
  550. "button404": "¡No puedes presionar este botón ahora!",
  551. "keep_id": "⚠️ ¡No elimines el ID! {}",
  552. "choose_language": "🗽 <b>Elige un idioma</b>",
  553. "not_official": (
  554. "<emoji document_id=5312383351217201533>⚠️</emoji> <b>Este idioma no está"
  555. " oficialmente respaldado</b>"
  556. ),
  557. "requested_join": (
  558. "💫 <b>El módulo</b> <code>{}</code> <b><a href='https://t.me/{}'>{}</a>"
  559. " solicitó unirse al grupo</b>\n\n<b>❓ Razón:</b> <i>{}</i>"
  560. ),
  561. "fw_error": (
  562. "<emoji document_id=5877458226823302157>🕒</emoji> <b>El comando"
  563. "</b> <code>{}</code> <b>falló debido a FloodWait {}:</b> <code>{}</code>"
  564. ),
  565. "rpc_error": (
  566. "<emoji document_id=5877477244938489129>🚫</emoji> <b>El comando"
  567. "</b> <code>{}</code> <b>falló debido a un error RPC:</b>"
  568. " <code>{}</code>"
  569. ),
  570. }
  571. strings_kk = {
  572. "lang_saved": "{} <b>Тіл сақталды!</b>",
  573. "pack_saved": (
  574. "<emoji document_id=5197474765387864959>👍</emoji> <b>Аударма пакеті"
  575. " сақталды!</b>"
  576. ),
  577. "incorrect_language": (
  578. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Жарамсыз тіл"
  579. " белгіленді</b>"
  580. ),
  581. "lang_removed": (
  582. "<emoji document_id=5197474765387864959>👍</emoji> <b>Аударма пакеті"
  583. " өшірілді</b>"
  584. ),
  585. "check_pack": (
  586. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Аударма пакеті"
  587. " сілтемесінің пішімі жарамсыз</b>"
  588. ),
  589. "check_url": (
  590. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Сіз аударма пакеті"
  591. " бар сілтемені көрсетуіңіз керек</b>"
  592. ),
  593. "too_long": (
  594. "<emoji document_id=5433653135799228968>📁</emoji> <b>Команда жауап"
  595. " өте ұзын, ол файлда жіберілді.</b>"
  596. ),
  597. "opening_form": " <b>Форманы ашу...</b>",
  598. "opening_gallery": " <b>Галереяны ашу...</b>",
  599. "opening_list": " <b>Тізімні ашу...</b>",
  600. "inline403": (
  601. "🚫 <b>Сіз бұл сөйлесуде кірістірілген элементтерді жібере алмайсыз</b>"
  602. ),
  603. "invoke_failed": (
  604. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Модульді іске қосу"
  605. " сәтсіз аяқталды! Толығырақ құжаттың журналында</b>"
  606. ),
  607. "show_inline_cmds": "📄 Барлық қол жетімді кірістірілген командаларды көрсету",
  608. "no_inline_cmds": "Сіздің қол жетімді inline командаларыңыз жоқ",
  609. "no_inline_cmds_msg": (
  610. "<b>😔 Қол жетімді inline командалар жоқ немесе Сізге оларға қатынасуға"
  611. " рұқсат жоқ</b>"
  612. ),
  613. "inline_cmds": "ℹ️ Сіздің {} қол жетімді команда(-лар)ыңыз бар",
  614. "inline_cmds_msg": "<b>ℹ️ Қол жетімді inline командалар:</b>\n\n{}",
  615. "run_command": "🏌️ Команданы іске қосу",
  616. "command_msg": "<b>🌘 «{}» командасы</b>\n\n<i>{}</i>",
  617. "command": "🌘 «{}» командасы",
  618. "button403": "Сіз бұл түймешіге баса алмайсыз!",
  619. "keep_id": "⚠️ ID тастамаңыз! {}",
  620. "choose_language": "🗽 <b>Тілді таңдаңыз</b>",
  621. "not_official": (
  622. "<emoji document_id=5312383351217201533>⚠️</emoji> <b>Бұл тіл официалдықтың"
  623. " тағы да қолдауы көрсетілмейді</b>"
  624. ),
  625. "requested_join": (
  626. "💫 <b>Модуль</b> <code>{}</code> <b><a href='https://t.me/{}'>{}< арнаға"
  627. " қосылуды сұрады. /a></b>\n\n<b>❓ Себебі:</b> <i>{}</i>"
  628. ),
  629. "fw_error": (
  630. "<emoji document_id=5877458226823302157>🕒</emoji> <b>Команда"
  631. "</b> <code>{}</code> <b>{} секундтан кейін қайталап көрінеді</b>"
  632. ),
  633. "rpc_error": (
  634. "<emoji document_id=5877477244938489129>🚫</emoji> <b>Команда"
  635. "</b> <code>{}</code> <b>RPC қатесінен қате орындалды:</b>"
  636. " <code>{}</code>"
  637. ),
  638. }
  639. strings_tt = {
  640. "lang_saved": "{} <b>Тел сакланган!</b>",
  641. "pack_saved": (
  642. "<emoji document_id=5197474765387864959>👍</emoji> <b>Тәрҗемә пакеты"
  643. " сакланган!</b>"
  644. ),
  645. "incorrect_language": (
  646. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Дөрес булмаган тел"
  647. " күрсәтелгән</b>"
  648. ),
  649. "lang_removed": (
  650. "<emoji document_id=5197474765387864959>👍</emoji> <b>Тәрҗемәләр стандартка"
  651. " ташланган</b>"
  652. ),
  653. "check_pack": (
  654. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Сылтамада тәрҗемә"
  655. " пакетларының дөрес булмаган форматы</b>"
  656. ),
  657. "check_url": (
  658. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Сез тәрҗемә пакеты"
  659. " булган сылтаманы кертергә тиеш/b>"
  660. ),
  661. "too_long": (
  662. "<emoji document_id=5433653135799228968>📁</emoji> <b>Команда чыгышы бик"
  663. " озын, шуңа күрә ул файлда җибәрелә.</b>"
  664. ),
  665. "opening_form": " <b>Мин форманы ачам...</b>",
  666. "opening_gallery": " <b>Мин галереяны ачам...</b>",
  667. "opening_list": " <b>Исемлекне ачу...</b>",
  668. "inline403": (
  669. "<emoji document_id=5312526098750252863>🚫</emoji> <b>Сез бу чатта"
  670. " урнаштырылган элементларны җибәрә алмыйсыз</b>"
  671. ),
  672. "invoke_failed": "<b>🚫 Модуль проблемасы уңышлы булмады! Логларда тулырак</b>",
  673. "show_inline_cmds": "📄 Барлык урнаштырылган командаларны күрсәтегез",
  674. "no_inline_cmds": "Сезнең inline командаларыгыз юк",
  675. "no_inline_cmds_msg": (
  676. "<b>😔 Inline командалар юк яисә аларга керү мөмкинлеге юк</b>"
  677. ),
  678. "inline_cmds": "ℹ️ Сездә {} уңайлы командалар бар",
  679. "inline_cmds_msg": "<b>ℹ️ Inline командалар:</b>\n\n{}",
  680. "run_command": "🏌️ Команданы үтәгез",
  681. "command_msg": "<b>🌘 Команда «{}»</b>\n\n<i>{}</i>",
  682. "command": "🌘 Команда «{}»",
  683. "button403": "Сез төймәгә баса алмыйсыз!",
  684. "keep_id": "⚠️ ID'ны бетеремэгез {}",
  685. "choose_language": "🗽 <b>Телне таңдаңыз</b>",
  686. "not_official": (
  687. "<emoji document_id=5312383351217201533>⚠️</emoji> <b>Бу тел официалдықтың"
  688. " тағы да қолдауы көрсетілмейді</b>"
  689. ),
  690. "fw_error": (
  691. "<emoji document_id=5877458226823302157>🕒</emoji> <b>Команда"
  692. "</b> <code>{}</code> <b>FloodWait {} методына туры"
  693. " килде</b><code>{}</code>"
  694. ),
  695. "rpc_error": (
  696. "<emoji document_id=5877477244938489129>🚫</emoji> <b>Команда"
  697. "</b> <code>{}</code> <b>RPC хатасынан баш тартылды:</b>"
  698. " <code>{}</code>"
  699. ),
  700. }
  701. async def _change_language(self, call: InlineCall, lang: str):
  702. self._db.set(translations.__name__, "lang", lang)
  703. await self.allmodules.reload_translations()
  704. await call.edit(self.strings("lang_saved").format(self._get_flag(lang)))
  705. def _get_flag(self, lang: str) -> str:
  706. emoji_flags = {
  707. "🇬🇧": "<emoji document_id=6323589145717376403>🇬🇧</emoji>",
  708. "🇺🇿": "<emoji document_id=6323430017179059570>🇺🇿</emoji>",
  709. "🇷🇺": "<emoji document_id=6323139226418284334>🇷🇺</emoji>",
  710. "🇮🇹": "<emoji document_id=6323471399188957082>🇮🇹</emoji>",
  711. "🇩🇪": "<emoji document_id=6320817337033295141>🇩🇪</emoji>",
  712. "🇪🇸": "<emoji document_id=6323315062379382237>🇪🇸</emoji>",
  713. "🇹🇷": "<emoji document_id=6321003171678259486>🇹🇷</emoji>",
  714. "🇰🇿": "<emoji document_id=6323135275048371614>🇰🇿</emoji>",
  715. "🥟": "<emoji document_id=5382337996123020810>🥟</emoji>",
  716. }
  717. lang2country = {"en": "🇬🇧", "tt": "🥟", "kk": "🇰🇿"}
  718. lang = lang2country.get(lang) or utils.get_lang_flag(lang)
  719. return emoji_flags.get(lang, lang)
  720. @loader.command(
  721. ru_doc="[языки] - Изменить стандартный язык",
  722. fr_doc="[langues] - Changer la langue par défaut",
  723. it_doc="[lingue] - Cambia la lingua predefinita",
  724. de_doc="[Sprachen] - Ändere die Standard-Sprache",
  725. tr_doc="[Diller] - Varsayılan dili değiştir",
  726. uz_doc="[til] - Standart tili o'zgartirish",
  727. es_doc="[Idiomas] - Cambiar el idioma predeterminado",
  728. kk_doc="[тілдер] - Бастапқы тілді өзгерту",
  729. )
  730. async def setlang(self, message: Message):
  731. """[languages in the order of priority] - Change default language"""
  732. args = utils.get_args_raw(message)
  733. if not args:
  734. await self.inline.form(
  735. message=message,
  736. text=self.strings("choose_language"),
  737. reply_markup=utils.chunks(
  738. [
  739. {
  740. "text": text,
  741. "callback": self._change_language,
  742. "args": (lang,),
  743. }
  744. for lang, text in SUPPORTED_LANGUAGES.items()
  745. ],
  746. 2,
  747. ),
  748. )
  749. return
  750. if any(len(i) != 2 for i in args.split(" ")):
  751. await utils.answer(message, self.strings("incorrect_language"))
  752. return
  753. self._db.set(translations.__name__, "lang", args.lower())
  754. await self.allmodules.reload_translations()
  755. await utils.answer(
  756. message,
  757. self.strings("lang_saved").format(
  758. "".join([self._get_flag(lang) for lang in args.lower().split()])
  759. )
  760. + (
  761. ("\n\n" + self.strings("not_official"))
  762. if any(lang not in SUPPORTED_LANGUAGES for lang in args.lower().split())
  763. else ""
  764. ),
  765. )
  766. @loader.command(
  767. ru_doc="[ссылка на пак | пустое чтобы удалить] - Изменить внешний пак перевода",
  768. fr_doc=(
  769. "[lien vers le paquet | vide pour supprimer] - Changer le paquet de"
  770. " traduction externe"
  771. ),
  772. it_doc=(
  773. "[link al pacchetto | vuoto per rimuovere] - Cambia il pacchetto di"
  774. " traduzione esterno"
  775. ),
  776. de_doc=(
  777. "[Link zum Paket | leer um zu entfernen] - Ändere das externe Übersetzungs"
  778. " Paket"
  779. ),
  780. tr_doc=(
  781. "[Çeviri paketi bağlantısı | boş bırakmak varsayılan hale getirir] - Harici"
  782. " çeviri paketini değiştir"
  783. ),
  784. uz_doc=(
  785. "[tarjima paketi havolasini | bo'sh qoldirish standart holatga qaytaradi] -"
  786. " Tashqi tarjima paketini o'zgartirish"
  787. ),
  788. es_doc="[Enlace al paquete | vacío para eliminar] - Cambiar el paquete de",
  789. kk_doc=(
  790. "[тілдік пакеттің сілтемесі | бос қалдырып бастапқы қалдыру] - Сыртқы"
  791. " тілдік пакетін өзгерту"
  792. ),
  793. )
  794. async def dllangpackcmd(self, message: Message):
  795. """[link to a langpack | empty to remove] - Change Hikka translate pack (external)
  796. """
  797. args = utils.get_args_raw(message)
  798. if not args:
  799. self._db.set(translations.__name__, "pack", False)
  800. await self.translator.init()
  801. await utils.answer(message, self.strings("lang_removed"))
  802. return
  803. if not utils.check_url(args):
  804. await utils.answer(message, self.strings("check_url"))
  805. return
  806. self._db.set(translations.__name__, "pack", args)
  807. await utils.answer(
  808. message,
  809. self.strings(
  810. "pack_saved"
  811. if await self.allmodules.reload_translations()
  812. else "check_pack"
  813. ),
  814. )