Skip to content

Commit b431a7a

Browse files
committed
refactor(languages): improve language handling functions
1 parent 4b2f7cb commit b431a7a

File tree

6 files changed

+68
-62
lines changed

6 files changed

+68
-62
lines changed

locales/bot.pot

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ msgid ""
88
msgstr ""
99
"Project-Id-Version: PROJECT VERSION\n"
1010
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
11-
"POT-Creation-Date: 2025-04-19 19:11-0300\n"
11+
"POT-Creation-Date: 2025-04-19 19:18-0300\n"
1212
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
1313
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
1414
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -156,7 +156,7 @@ msgid "✅ Confirm Deletion"
156156
msgstr ""
157157

158158
#: src/korone/modules/filters/handlers/delall.py:24
159-
#: src/korone/modules/languages/handlers/select.py:38
159+
#: src/korone/modules/languages/handlers/select.py:51
160160
msgid "❌ Cancel"
161161
msgstr ""
162162

@@ -340,48 +340,48 @@ msgstr ""
340340
msgid "Charging"
341341
msgstr ""
342342

343-
#: src/korone/modules/languages/handlers/apply.py:22
343+
#: src/korone/modules/languages/handlers/apply.py:23
344344
msgid "Something went wrong."
345345
msgstr ""
346346

347-
#: src/korone/modules/languages/handlers/apply.py:44
347+
#: src/korone/modules/languages/handlers/apply.py:46
348348
#, python-brace-format
349349
msgid "Language changed to {new_lang}."
350350
msgstr ""
351351

352-
#: src/korone/modules/languages/handlers/apply.py:50
352+
#: src/korone/modules/languages/handlers/apply.py:52
353353
msgid ""
354354
"\n"
355355
"This is the bot's native language.\n"
356356
"If you find any errors, please file an issue in the GitHub Repository."
357357
msgstr ""
358358

359-
#: src/korone/modules/languages/handlers/apply.py:57
359+
#: src/korone/modules/languages/handlers/apply.py:59
360360
#, python-brace-format
361361
msgid ""
362362
"\n"
363363
"The language is {percent}% translated."
364364
msgstr ""
365365

366-
#: src/korone/modules/languages/handlers/apply.py:69
366+
#: src/korone/modules/languages/handlers/apply.py:71
367367
msgid ""
368368
"\n"
369369
"In case you find any errors, please file an issue in the GitHub "
370370
"Repository."
371371
msgstr ""
372372

373-
#: src/korone/modules/languages/handlers/apply.py:73
373+
#: src/korone/modules/languages/handlers/apply.py:75
374374
msgid ""
375375
"\n"
376376
"Please help us translate this language by completing it on our "
377377
"translations platform."
378378
msgstr ""
379379

380-
#: src/korone/modules/languages/handlers/apply.py:91
380+
#: src/korone/modules/languages/handlers/apply.py:93
381381
msgid "🐞 Open GitHub"
382382
msgstr ""
383383

384-
#: src/korone/modules/languages/handlers/apply.py:92
384+
#: src/korone/modules/languages/handlers/apply.py:94
385385
msgid "🌍 Open Translations"
386386
msgstr ""
387387

@@ -391,52 +391,52 @@ msgid ""
391391
"/language command."
392392
msgstr ""
393393

394-
#: src/korone/modules/languages/handlers/info.py:41
394+
#: src/korone/modules/languages/handlers/info.py:40
395395
#, python-brace-format
396396
msgid "<b>Chat language:</b> {language}\n"
397397
msgstr ""
398398

399-
#: src/korone/modules/languages/handlers/info.py:44
399+
#: src/korone/modules/languages/handlers/info.py:43
400400
msgid "This is the bot's native language. So it is 100% translated."
401401
msgstr ""
402402

403-
#: src/korone/modules/languages/handlers/info.py:46
403+
#: src/korone/modules/languages/handlers/info.py:45
404404
msgid ""
405405
"\n"
406406
"<b>Language Information:</b>\n"
407407
msgstr ""
408408

409-
#: src/korone/modules/languages/handlers/info.py:47
409+
#: src/korone/modules/languages/handlers/info.py:46
410410
#, python-brace-format
411411
msgid "Translated strings: <code>{translated}</code>\n"
412412
msgstr ""
413413

414-
#: src/korone/modules/languages/handlers/info.py:50
414+
#: src/korone/modules/languages/handlers/info.py:49
415415
#, python-brace-format
416416
msgid "Untranslated strings: <code>{untranslated}</code>\n"
417417
msgstr ""
418418

419-
#: src/korone/modules/languages/handlers/info.py:53
419+
#: src/korone/modules/languages/handlers/info.py:52
420420
#, python-brace-format
421421
msgid "Strings requiring review: <code>{fuzzy}</code>\n"
422422
msgstr ""
423423

424-
#: src/korone/modules/languages/handlers/info.py:60
424+
#: src/korone/modules/languages/handlers/info.py:59
425425
msgid "👤 Change your language"
426426
msgstr ""
427427

428-
#: src/korone/modules/languages/handlers/info.py:62
428+
#: src/korone/modules/languages/handlers/info.py:61
429429
msgid "🌍 Change group language"
430430
msgstr ""
431431

432-
#: src/korone/modules/languages/handlers/info.py:74
433-
#: src/korone/modules/languages/handlers/select.py:45
432+
#: src/korone/modules/languages/handlers/info.py:70
433+
#: src/korone/modules/languages/handlers/select.py:58
434434
#: src/korone/modules/pm_menu/handlers/about.py:55
435435
#: src/korone/modules/pm_menu/handlers/help.py:34
436436
msgid "⬅️ Back"
437437
msgstr ""
438438

439-
#: src/korone/modules/languages/handlers/select.py:49
439+
#: src/korone/modules/languages/handlers/select.py:27
440440
msgid "Please select the language you want to use for the chat."
441441
msgstr ""
442442

src/korone/modules/languages/handlers/apply.py

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# SPDX-License-Identifier: BSD-3-Clause
22
# Copyright (c) 2025 Hitalo M. <https://github.com/HitaloM>
33

4+
45
from hairydogm.keyboard import InlineKeyboardBuilder
56
from hydrogram import Client
67
from hydrogram.enums import ChatType
@@ -12,7 +13,7 @@
1213
from korone.modules.languages.callback_data import SetLangCallback
1314
from korone.modules.languages.database import set_chat_language
1415
from korone.utils.caching import cache
15-
from korone.utils.i18n import get_i18n
16+
from korone.utils.i18n import I18nNew, get_i18n
1617
from korone.utils.i18n import gettext as _
1718

1819

@@ -29,18 +30,19 @@ async def set_lang_callback(client: Client, callback: CallbackQuery) -> None:
2930
await cache.delete(f"fetch_locale:{callback.message.chat.id}")
3031

3132
i18n = get_i18n()
32-
text = build_language_changed_message(language, i18n)
33+
text = _build_language_changed_message(language, i18n)
34+
keyboard = _build_keyboard(language, i18n)
3335

34-
keyboard = build_keyboard(language, i18n)
36+
if not keyboard:
37+
await callback.message.edit(text, disable_web_page_preview=True)
38+
return
3539

3640
await callback.message.edit(
37-
text,
38-
reply_markup=keyboard.as_markup() if keyboard else None, # type: ignore
39-
disable_web_page_preview=True,
41+
text, reply_markup=keyboard.as_markup(), disable_web_page_preview=True
4042
)
4143

4244

43-
def build_language_changed_message(language: str, i18n) -> str:
45+
def _build_language_changed_message(language: str, i18n: I18nNew) -> str:
4446
text = _("Language changed to {new_lang}.", locale=language).format(
4547
new_lang=i18n.locale_display(i18n.babel(language))
4648
)
@@ -58,12 +60,12 @@ def build_language_changed_message(language: str, i18n) -> str:
5860
locale=language,
5961
).format(percent=stats.percent_translated)
6062

61-
text += get_translation_status_message(stats.percent_translated, language)
63+
text += _get_translation_status_message(stats.percent_translated, language)
6264

6365
return text
6466

6567

66-
def get_translation_status_message(percent_translated: int, language: str) -> str:
68+
def _get_translation_status_message(percent_translated: int, language: str) -> str:
6769
if percent_translated > 99:
6870
return _(
6971
"\nIn case you find any errors, please file an issue in the GitHub Repository.",
@@ -75,16 +77,16 @@ def get_translation_status_message(percent_translated: int, language: str) -> st
7577
)
7678

7779

78-
def build_keyboard(language: str, i18n) -> InlineKeyboardBuilder:
80+
def _build_keyboard(language: str, i18n: I18nNew) -> InlineKeyboardBuilder:
7981
keyboard = InlineKeyboardBuilder()
8082

81-
button_text, button_url = get_button_text_and_url(language, i18n)
83+
button_text, button_url = _get_button_text_and_url(language, i18n)
8284
keyboard.button(text=button_text, url=button_url)
8385

8486
return keyboard
8587

8688

87-
def get_button_text_and_url(language: str, i18n) -> tuple[str, str]:
89+
def _get_button_text_and_url(language: str, i18n: I18nNew) -> tuple[str, str]:
8890
if language == i18n.default_locale or (
8991
(stats := i18n.get_locale_stats(locale_code=language)) and stats.percent_translated > 99
9092
):

src/korone/modules/languages/handlers/cancel.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616

1717
@router.callback_query(LangMenuCallback.filter(F.menu == LangMenu.Cancel))
18-
async def language_cancel_callback(client: Client, callback: CallbackQuery):
18+
async def language_cancel_callback(client: Client, callback: CallbackQuery) -> None:
1919
message = callback.message
2020

2121
await message.edit(
@@ -26,6 +26,7 @@ async def language_cancel_callback(client: Client, callback: CallbackQuery):
2626
)
2727

2828
await asyncio.sleep(5)
29+
2930
with suppress(MessageDeleteForbidden, BadRequest):
3031
await message.reply_to_message.delete()
3132
await message.delete()

src/korone/modules/languages/handlers/info.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,8 @@ async def handle_language(client: Client, update: Message | CallbackQuery) -> No
2525
chat_type = update.chat.type if is_message else update.message.chat.type
2626

2727
i18n = get_i18n()
28-
text = build_language_info_text(i18n)
29-
30-
keyboard = build_keyboard(chat_type)
28+
text = _build_language_info_text(i18n)
29+
keyboard = _build_keyboard(chat_type)
3130

3231
if is_message:
3332
await update.reply(text, reply_markup=keyboard.as_markup())
@@ -37,7 +36,7 @@ async def handle_language(client: Client, update: Message | CallbackQuery) -> No
3736
await update.message.edit(text, reply_markup=keyboard.as_markup())
3837

3938

40-
def build_language_info_text(i18n: I18nNew) -> str:
39+
def _build_language_info_text(i18n: I18nNew) -> str:
4140
text = _("<b>Chat language:</b> {language}\n").format(language=i18n.current_locale_display)
4241

4342
if i18n.current_locale == i18n.default_locale:
@@ -55,23 +54,21 @@ def build_language_info_text(i18n: I18nNew) -> str:
5554
return text
5655

5756

58-
def get_button_text(chat_type: ChatType) -> str:
59-
return (
57+
def _build_keyboard(chat_type: ChatType) -> InlineKeyboardBuilder:
58+
button_text = (
6059
_("👤 Change your language")
6160
if chat_type == ChatType.PRIVATE
6261
else _("🌍 Change group language")
6362
)
6463

65-
66-
def build_keyboard(chat_type: ChatType) -> InlineKeyboardBuilder:
67-
button_text = get_button_text(chat_type)
68-
6964
keyboard = InlineKeyboardBuilder()
7065
keyboard.button(text=button_text, callback_data=LangMenuCallback(menu=LangMenu.Languages))
66+
7167
if chat_type == ChatType.PRIVATE:
7268
keyboard.row(
7369
InlineKeyboardButton(
7470
text=_("⬅️ Back"), callback_data=PMMenuCallback(menu=PMMenu.Start).pack()
7571
)
7672
)
73+
7774
return keyboard

src/korone/modules/languages/handlers/select.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,19 @@
2222
async def handle_languages(client: Client, update: Message | CallbackQuery) -> None:
2323
i18n = get_i18n()
2424
chat_type = update.chat.type if isinstance(update, Message) else update.message.chat.type
25+
26+
keyboard = _build_language_selection_keyboard(i18n, chat_type)
27+
text = _("Please select the language you want to use for the chat.")
28+
29+
if isinstance(update, Message):
30+
await update.reply(text, reply_markup=keyboard.as_markup())
31+
return
32+
33+
with suppress(MessageNotModified):
34+
await update.edit_message_text(text, reply_markup=keyboard.as_markup())
35+
36+
37+
def _build_language_selection_keyboard(i18n, chat_type: ChatType) -> InlineKeyboardBuilder:
2538
keyboard = InlineKeyboardBuilder()
2639

2740
for language in (*i18n.available_locales, i18n.default_locale):
@@ -46,11 +59,4 @@ async def handle_languages(client: Client, update: Message | CallbackQuery) -> N
4659
)
4760
)
4861

49-
text = _("Please select the language you want to use for the chat.")
50-
51-
if isinstance(update, Message):
52-
await update.reply(text, reply_markup=keyboard.as_markup())
53-
return
54-
55-
with suppress(MessageNotModified):
56-
await update.edit_message_text(text, reply_markup=keyboard.as_markup())
62+
return keyboard

uv.lock

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)