Multilanguage support for /ciclopi command (work in progress)
This commit is contained in:
parent
438a88d92d
commit
dc660de57f
@ -25,6 +25,49 @@ default_ciclopi_messages = {
|
||||
'en': "CicloPi 🚲",
|
||||
'it': "CicloPi 🚲"
|
||||
},
|
||||
'updating': {
|
||||
'en': "Updating",
|
||||
'it': "Aggiornamento in corso",
|
||||
},
|
||||
'unavailable_website': {
|
||||
'en': "CicloPi's website cannot be reached at the moment.\n"
|
||||
"Please retry later :/",
|
||||
'it': "Il sito del CicloPi è momentaneamente irraggiungibile.\n"
|
||||
"Riprova tra un po' :/"
|
||||
},
|
||||
'no_station_available': {
|
||||
'en': "No station available",
|
||||
'it': "Nessuna stazione"
|
||||
},
|
||||
'title': {
|
||||
'en': "CicloPi stations",
|
||||
'it': "Stazioni CicloPi"
|
||||
},
|
||||
'buttons': {
|
||||
'all': {
|
||||
'en': "All",
|
||||
'it': "Tutte"
|
||||
},
|
||||
'only_fav': {
|
||||
'en': "Favourites only",
|
||||
'it': "Solo preferite"
|
||||
},
|
||||
'first_n': {
|
||||
'en': "First {n}",
|
||||
'it': "Prime {n}"
|
||||
},
|
||||
'update': {
|
||||
'en': "🔄 Update",
|
||||
'it': "🔄 Aggiorna"
|
||||
},
|
||||
'legend': {
|
||||
'en': "📜 Legend",
|
||||
'it': "📜 Legenda"
|
||||
},
|
||||
'settings': {
|
||||
'en': "⚙️ Settings",
|
||||
'it': "⚙️ Impostazioni"
|
||||
},
|
||||
}
|
||||
},
|
||||
'settings': {
|
||||
@ -154,6 +197,18 @@ default_ciclopi_messages = {
|
||||
'en': "Only favourite stations",
|
||||
'it': "Solo le preferite"
|
||||
},
|
||||
'all': {
|
||||
'en': "favourite stations first",
|
||||
'it': "prima le preferite"
|
||||
},
|
||||
'only': {
|
||||
'en': "only favourite stations",
|
||||
'it': "solo le preferite"
|
||||
}
|
||||
},
|
||||
'num': {
|
||||
'en': "first {n}",
|
||||
'it': "prime {n}"
|
||||
},
|
||||
'all': {
|
||||
'name': {
|
||||
@ -185,6 +240,7 @@ default_ciclopi_messages = {
|
||||
'en': "Not available",
|
||||
'it': "Non disponibile"
|
||||
}
|
||||
},
|
||||
'set_position': {
|
||||
'success': {
|
||||
'en': "Position set!\n"
|
||||
@ -205,6 +261,20 @@ default_ciclopi_messages = {
|
||||
"Per riprovare fai "
|
||||
"/ciclopi > Impostazioni > Cambia posizione"
|
||||
}
|
||||
},
|
||||
'button': {
|
||||
'title': {
|
||||
'en': "CicloPi Settings",
|
||||
'it': "Impostazioni CicloPi"
|
||||
},
|
||||
'back_to_settings': {
|
||||
'en': "Back to settings",
|
||||
'it': "Torna alle impostazioni"
|
||||
},
|
||||
'back_to_stations': {
|
||||
'en': "Back to stations",
|
||||
'it': "Torna alle stazioni"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -769,15 +839,20 @@ async def _ciclopi_command(bot, update, user_record, sent_message=None,
|
||||
else:
|
||||
await bot.edit_message_text(
|
||||
update=sent_message,
|
||||
text="<i>Aggiornamento in corso...</i>",
|
||||
text="<i>{message}...</i>".format(
|
||||
message=bot.get_message(
|
||||
'ciclopi', 'command', 'updating',
|
||||
update=update, user_record=user_record
|
||||
)
|
||||
),
|
||||
parse_mode='HTML',
|
||||
reply_markup=None
|
||||
)
|
||||
ciclopi_data = await ciclopi_webpage.get_page()
|
||||
if ciclopi_data is None or isinstance(ciclopi_data, Exception):
|
||||
text = (
|
||||
"Il sito del CicloPi è momentaneamente irraggiungibile, "
|
||||
"riprova tra un po' :/"
|
||||
text = bot.get_message(
|
||||
'ciclopi', 'command', 'unavailable_website',
|
||||
update=update, user_record=user_record
|
||||
)
|
||||
else:
|
||||
with bot.db as db:
|
||||
@ -861,13 +936,41 @@ async def _ciclopi_command(bot, update, user_record, sent_message=None,
|
||||
and not show_all
|
||||
):
|
||||
stations = stations[:stations_to_show]
|
||||
filter_label = ""
|
||||
if stations_to_show == -1:
|
||||
filter_label = bot.get_message(
|
||||
'ciclopi', 'filters', 'fav', 'all' if show_all else 'only',
|
||||
update=update, user_record=user_record
|
||||
)
|
||||
elif len(stations) < len(Station.stations):
|
||||
filter_label = bot.get_message(
|
||||
'ciclopi', 'filters', 'num',
|
||||
update=update, user_record=user_record,
|
||||
n=stations_to_show
|
||||
)
|
||||
if filter_label:
|
||||
filter_label = ' ({label})'.format(
|
||||
label=filter_label
|
||||
)
|
||||
text = (
|
||||
"🚲 Stazioni ciclopi {order}"
|
||||
"{lim} {sort[symbol]}\n"
|
||||
"🚲 {title} {order}"
|
||||
"{filter} {sort[symbol]}\n"
|
||||
"\n"
|
||||
"{s}"
|
||||
"{stations_list}"
|
||||
).format(
|
||||
s=(
|
||||
title=bot.get_message(
|
||||
'ciclopi', 'command', 'title',
|
||||
update=update, user_record=user_record
|
||||
),
|
||||
sort=CICLOPI_SORTING_CHOICES[sorting_code],
|
||||
order=bot.get_message(
|
||||
'ciclopi', 'sorting',
|
||||
CICLOPI_SORTING_CHOICES[sorting_code]['id'],
|
||||
'short_description',
|
||||
update=update, user_record=user_record
|
||||
),
|
||||
filter=filter_label,
|
||||
stations_list=(
|
||||
'\n\n'.join(
|
||||
station.status.format(
|
||||
not_available=bot.get_message(
|
||||
@ -877,25 +980,13 @@ async def _ciclopi_command(bot, update, user_record, sent_message=None,
|
||||
)
|
||||
for station in stations
|
||||
) if len(stations)
|
||||
else "<i>- Nessuna stazione -</i>"
|
||||
),
|
||||
sort=CICLOPI_SORTING_CHOICES[sorting_code],
|
||||
order=bot.get_message(
|
||||
'ciclopi', 'sorting',
|
||||
CICLOPI_SORTING_CHOICES[sorting_code]['id'],
|
||||
'short_description',
|
||||
else "<i>- {message} -</i>".format(
|
||||
message=bot.get_message(
|
||||
'ciclopi', 'command', 'no_station_available',
|
||||
update=update, user_record=user_record
|
||||
)
|
||||
)
|
||||
),
|
||||
lim=(
|
||||
" ({adv} le preferite)".format(
|
||||
adv='prima' if show_all else 'solo'
|
||||
) if stations_to_show == -1
|
||||
else " (prime {n})".format(
|
||||
n=stations_to_show
|
||||
)
|
||||
if len(stations) < len(Station.stations)
|
||||
else ""
|
||||
)
|
||||
)
|
||||
if not text:
|
||||
return
|
||||
@ -903,19 +994,29 @@ async def _ciclopi_command(bot, update, user_record, sent_message=None,
|
||||
(
|
||||
[
|
||||
make_button(
|
||||
"💯 Tutte",
|
||||
text="💯 {message}".format(
|
||||
message=bot.get_message(
|
||||
'ciclopi', 'command', 'buttons', 'all',
|
||||
update=update, user_record=user_record
|
||||
)
|
||||
),
|
||||
prefix='ciclopi:///',
|
||||
data=['show', 'all']
|
||||
)
|
||||
] if len(stations) < len(Station.stations)
|
||||
else [
|
||||
make_button(
|
||||
"{sy} {t}".format(
|
||||
t=(
|
||||
"Solo preferite" if stations_to_show == -1
|
||||
else "Prime {n}"
|
||||
).format(
|
||||
"{sy} {message}".format(
|
||||
message=(
|
||||
bot.get_message(
|
||||
'ciclopi', 'command', 'buttons', 'only_fav',
|
||||
update=update, user_record=user_record
|
||||
) if stations_to_show == -1
|
||||
else bot.get_message(
|
||||
'ciclopi', 'command', 'buttons', 'first_n',
|
||||
update=update, user_record=user_record,
|
||||
n=stations_to_show
|
||||
)
|
||||
),
|
||||
sy=CICLOPI_STATIONS_TO_SHOW[stations_to_show]['symbol']
|
||||
),
|
||||
@ -926,7 +1027,10 @@ async def _ciclopi_command(bot, update, user_record, sent_message=None,
|
||||
else []
|
||||
) + [
|
||||
make_button(
|
||||
"🔄 Aggiorna",
|
||||
text=bot.get_message(
|
||||
'ciclopi', 'command', 'buttons', 'update',
|
||||
update=update, user_record=user_record
|
||||
),
|
||||
prefix='ciclopi:///',
|
||||
data=(
|
||||
['show'] + (
|
||||
@ -936,12 +1040,18 @@ async def _ciclopi_command(bot, update, user_record, sent_message=None,
|
||||
)
|
||||
),
|
||||
make_button(
|
||||
"📜 Legenda",
|
||||
text=bot.get_message(
|
||||
'ciclopi', 'command', 'buttons', 'legend',
|
||||
update=update, user_record=user_record
|
||||
),
|
||||
prefix='ciclopi:///',
|
||||
data=['legend']
|
||||
),
|
||||
make_button(
|
||||
"⚙️ Impostazioni",
|
||||
text=bot.get_message(
|
||||
'ciclopi', 'command', 'buttons', 'settings',
|
||||
update=update, user_record=user_record
|
||||
),
|
||||
prefix='ciclopi:///',
|
||||
data=['main']
|
||||
)
|
||||
@ -963,14 +1073,55 @@ async def _ciclopi_command(bot, update, user_record, sent_message=None,
|
||||
return
|
||||
|
||||
|
||||
def get_menu_back_buttons(bot, update, user_record,
|
||||
include_back_to_settings=True):
|
||||
"""Return a list of menu buttons to navigate back in the menu.
|
||||
|
||||
`include_back_to_settings` : Bool
|
||||
Set it to True to include a 'back to settings' menu button.
|
||||
"""
|
||||
if include_back_to_settings:
|
||||
buttons = [
|
||||
make_button(
|
||||
text="⚙️ {message}".format(
|
||||
message=bot.get_message(
|
||||
'ciclopi', 'button', 'back_to_settings',
|
||||
update=update, user_record=user_record
|
||||
)
|
||||
),
|
||||
prefix='ciclopi:///',
|
||||
data=['main']
|
||||
)
|
||||
]
|
||||
else:
|
||||
buttons = []
|
||||
buttons += [
|
||||
make_button(
|
||||
text="🚲 {message}".format(
|
||||
message=bot.get_message(
|
||||
'ciclopi', 'button', 'back_to_stations',
|
||||
update=update, user_record=user_record
|
||||
)
|
||||
),
|
||||
prefix='ciclopi:///',
|
||||
data=['show']
|
||||
)
|
||||
]
|
||||
return buttons
|
||||
|
||||
|
||||
async def _ciclopi_button_main(bot, update, user_record, arguments):
|
||||
result, text, reply_markup = '', '', None
|
||||
text = (
|
||||
"⚙️ Impostazioni CicloPi 🚲\n"
|
||||
"⚙️ {settings_title} 🚲\n"
|
||||
"\n"
|
||||
"{c}"
|
||||
"{settings_list}"
|
||||
).format(
|
||||
c='\n'.join(
|
||||
settings_title=bot.get_message(
|
||||
'ciclopi', 'button', 'title',
|
||||
update=update, user_record=user_record
|
||||
),
|
||||
settings_list='\n'.join(
|
||||
"- {symbol} {name}: {description}".format(
|
||||
symbol=bot.get_message(
|
||||
'ciclopi', 'settings', setting, 'symbol',
|
||||
@ -1005,13 +1156,10 @@ async def _ciclopi_button_main(bot, update, user_record, arguments):
|
||||
data=[setting]
|
||||
)
|
||||
for setting in bot.messages['ciclopi']['settings']
|
||||
] + [
|
||||
make_button(
|
||||
text="🚲 Torna alle stazioni",
|
||||
prefix='ciclopi:///',
|
||||
data=['show']
|
||||
] + get_menu_back_buttons(
|
||||
bot=bot, update=update, user_record=user_record,
|
||||
include_back_to_settings=False
|
||||
)
|
||||
]
|
||||
)
|
||||
return result, text, reply_markup
|
||||
|
||||
@ -1091,18 +1239,10 @@ async def _ciclopi_button_sort(bot, update, user_record, arguments):
|
||||
data=['sort', code]
|
||||
)
|
||||
for code, choice in CICLOPI_SORTING_CHOICES.items()
|
||||
] + [
|
||||
make_button(
|
||||
text="⚙️ Torna alle impostazioni",
|
||||
prefix='ciclopi:///',
|
||||
data=['main']
|
||||
),
|
||||
make_button(
|
||||
text="🚲 Torna alle stazioni",
|
||||
prefix='ciclopi:///',
|
||||
data=['show']
|
||||
] + get_menu_back_buttons(
|
||||
bot=bot, update=update, user_record=user_record,
|
||||
include_back_to_settings=True
|
||||
)
|
||||
]
|
||||
)
|
||||
return result, text, reply_markup
|
||||
|
||||
@ -1179,18 +1319,10 @@ async def _ciclopi_button_limit(bot, update, user_record, arguments):
|
||||
data=['limit', code]
|
||||
)
|
||||
for code, choice in CICLOPI_STATIONS_TO_SHOW.items()
|
||||
] + [
|
||||
make_button(
|
||||
text="⚙️ Torna alle impostazioni",
|
||||
prefix='ciclopi:///',
|
||||
data=['main']
|
||||
),
|
||||
make_button(
|
||||
text="🚲 Torna alle stazioni",
|
||||
prefix='ciclopi:///',
|
||||
data=['show']
|
||||
] + get_menu_back_buttons(
|
||||
bot=bot, update=update, user_record=user_record,
|
||||
include_back_to_settings=True
|
||||
)
|
||||
]
|
||||
)
|
||||
return result, text, reply_markup
|
||||
|
||||
@ -1229,18 +1361,10 @@ async def _ciclopi_button_legend(bot, update, user_record, arguments):
|
||||
}
|
||||
)
|
||||
reply_markup = make_inline_keyboard(
|
||||
[
|
||||
make_button(
|
||||
text="⚙️ Torna alle impostazioni",
|
||||
prefix='ciclopi:///',
|
||||
data=['main']
|
||||
),
|
||||
make_button(
|
||||
text="🚲 Torna alle stazioni",
|
||||
prefix='ciclopi:///',
|
||||
data=['show']
|
||||
+ get_menu_back_buttons(
|
||||
bot=bot, update=update, user_record=user_record,
|
||||
include_back_to_settings=True
|
||||
)
|
||||
]
|
||||
)
|
||||
return result, text, reply_markup
|
||||
|
||||
@ -1344,18 +1468,11 @@ async def _ciclopi_button_favorites_add(bot, update, user_record, arguments,
|
||||
text="🔃 Riordina",
|
||||
prefix="ciclopi:///",
|
||||
data=["fav"]
|
||||
),
|
||||
make_button(
|
||||
text="⚙️ Torna alle impostazioni",
|
||||
prefix='ciclopi:///',
|
||||
data=['main']
|
||||
),
|
||||
make_button(
|
||||
text="🚲 Torna alle stazioni",
|
||||
prefix='ciclopi:///',
|
||||
data=['show']
|
||||
)
|
||||
],
|
||||
] + get_menu_back_buttons(
|
||||
bot=bot, update=update, user_record=user_record,
|
||||
include_back_to_settings=True
|
||||
),
|
||||
3
|
||||
)
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user