Added support for multiple languages
This commit is contained in:
@@ -40,16 +40,16 @@ pub async fn menu_markup(
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn make_button(text: &str, command: &str, hash: &str) -> InlineKeyboardButton {
|
||||
fn make_button(text: &str, command: &str, param: &str) -> InlineKeyboardButton {
|
||||
let mut data = command.to_owned();
|
||||
data.reserve(44);
|
||||
data.reserve(param.len() + 1);
|
||||
data.push(' ');
|
||||
data.push_str(hash);
|
||||
data.push_str(param);
|
||||
InlineKeyboardButton::callback(text, data)
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn account_markup(name: &str, is_encrypted: bool) -> InlineKeyboardMarkup {
|
||||
pub fn account_markup(name: &str, is_encrypted: bool, locale: LocaleRef) -> InlineKeyboardMarkup {
|
||||
let mut hash = [0; 43];
|
||||
B64_ENGINE
|
||||
.encode_slice(<Sha256 as Digest>::digest(name), &mut hash)
|
||||
@@ -57,31 +57,41 @@ pub fn account_markup(name: &str, is_encrypted: bool) -> InlineKeyboardMarkup {
|
||||
let hash = std::str::from_utf8(&hash).unwrap();
|
||||
|
||||
let encryption_button = if is_encrypted {
|
||||
("Decrypt", "decrypt")
|
||||
(locale.decrypt_button.as_ref(), "decrypt")
|
||||
} else {
|
||||
("Hide", "get")
|
||||
(locale.hide_button.as_ref(), "get")
|
||||
};
|
||||
|
||||
let main_buttons = [
|
||||
("Alter name", "an"),
|
||||
("Alter login", "al"),
|
||||
("Alter password", "ap"),
|
||||
(locale.change_name_button.as_ref(), "an"),
|
||||
(locale.change_login_button.as_ref(), "al"),
|
||||
(locale.change_password_button.as_ref(), "ap"),
|
||||
encryption_button,
|
||||
("Delete account", "delete0"),
|
||||
(locale.delete_account_button.as_ref(), "delete0"),
|
||||
]
|
||||
.into_iter()
|
||||
.map(|(text, command)| make_button(text, command, hash))
|
||||
.chunks(3);
|
||||
|
||||
let menu_button = InlineKeyboardButton::callback("Back to the menu", "get_menu");
|
||||
let menu_button = InlineKeyboardButton::callback(locale.menu_button.as_ref(), "get_menu");
|
||||
|
||||
InlineKeyboardMarkup::new(&main_buttons).append_row([menu_button])
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn language_markup() -> InlineKeyboardMarkup {
|
||||
let languages = [("🇷🇺 Русский", "ru"), ("🇬🇧 English", "en")]
|
||||
.into_iter()
|
||||
.map(|(text, param)| make_button(text, "change_locale", param))
|
||||
.chunks(3);
|
||||
InlineKeyboardMarkup::new(&languages)
|
||||
}
|
||||
|
||||
/// Creates a markup with a "Delete message" button.
|
||||
/// This markup should be added for all messages that won't be deleted afterwards
|
||||
#[inline]
|
||||
pub fn deletion_markup() -> InlineKeyboardMarkup {
|
||||
let button = InlineKeyboardButton::callback("Delete message", "delete_message");
|
||||
pub fn deletion_markup(locale: LocaleRef) -> InlineKeyboardMarkup {
|
||||
let button =
|
||||
InlineKeyboardButton::callback(locale.delete_message_button.as_ref(), "delete_message");
|
||||
InlineKeyboardMarkup::new([[button]])
|
||||
}
|
||||
|
Reference in New Issue
Block a user