diff --git a/Cargo.lock b/Cargo.lock index 839dce8..4ee66d0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -60,6 +60,12 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "arc-swap" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" + [[package]] name = "async-channel" version = "2.2.0" @@ -1454,22 +1460,23 @@ dependencies = [ [[package]] name = "rust-i18n" -version = "2.3.1" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0689038d25403d8f4437ef84070cacf8c438a9f66fa27402ffaa5d426c6c1019" +checksum = "9dcd94370631e5658a0a23635f7f47e43d06a00ad948e0bb5de79b00d85b880c" dependencies = [ "globwalk", "once_cell", "regex", "rust-i18n-macro", "rust-i18n-support", + "smallvec", ] [[package]] name = "rust-i18n-macro" -version = "2.3.1" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8531ce329f57af4dc91cb56f22e17eeb6507f7e80d09c24073fc2c9d334624f1" +checksum = "355763801dcf287e777e42def7c578410783477b804b1107852119e0b2518396" dependencies = [ "glob", "once_cell", @@ -1484,10 +1491,11 @@ dependencies = [ [[package]] name = "rust-i18n-support" -version = "2.3.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "151a35407f48bac5521e9c9813d1ec97289a36aca4ad6444ab9430fd76835b71" +checksum = "399801f4d955abf1c3ce3ce2215dc76bd40beb4ae39e3a84936b21a79ce2caa5" dependencies = [ + "arc-swap", "globwalk", "lazy_static", "normpath", @@ -1498,6 +1506,7 @@ dependencies = [ "serde_json", "serde_yaml 0.8.26", "toml", + "triomphe", ] [[package]] @@ -1715,6 +1724,12 @@ dependencies = [ "autocfg", ] +[[package]] +name = "smallvec" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" + [[package]] name = "socket2" version = "0.5.5" @@ -1725,6 +1740,12 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "strsim" version = "0.10.0" @@ -2093,6 +2114,17 @@ dependencies = [ "once_cell", ] +[[package]] +name = "triomphe" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "859eb650cfee7434994602c3a68b25d77ad9e68c8a6cd491616ef86661382eb3" +dependencies = [ + "arc-swap", + "serde", + "stable_deref_trait", +] + [[package]] name = "try-lock" version = "0.2.5" diff --git a/Cargo.toml b/Cargo.toml index 4b5aee9..5bc950d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ pretty_env_logger = "0.5.0" regex = "1.6.0" reqwest = "0.11.12" rrule = "0.11.0" -rust-i18n = "2.3.0" +rust-i18n = "3.0.1" serde = { version = "1.0.145", features = ["derive"] } serde_yaml = "0.9.13" strum = { version = "0.25.0", features = ["derive"] } diff --git a/src/bot.rs b/src/bot.rs index cb5e5df..39033dc 100644 --- a/src/bot.rs +++ b/src/bot.rs @@ -253,7 +253,7 @@ async fn set_reminders(bot: Throttle, msg: Message, db: Database) -> Result .intersperse("\n".to_string()) .collect::(); - let text = t!("messages.reminders_set", locale = &chat.locale) + &reminders_text; + let text = t!("messages.reminders_set", locale = &chat.locale).into_owned() + &reminders_text; bot.send_message(msg.chat.id, text) .reply_to_message_id(msg.id) diff --git a/src/db.rs b/src/db.rs index ba046a6..7d10a7f 100644 --- a/src/db.rs +++ b/src/db.rs @@ -63,11 +63,8 @@ impl Reminder { delta = self.delta.num_hours(); }; let pluralization = if delta == 1 { "one" } else { "other" }; - let delta_string = t!( - &format!("reminders.{}.{}", delta_mode, pluralization), - locale = locale.as_ref(), - delta = delta, - ); + let delta_key = format!("reminders.{}.{}", delta_mode, pluralization); + let delta_string = t!(&delta_key, locale = locale.as_ref(), delta = delta,); let message_key = if self.delta.num_hours() > 0 { "reminders.delta" } else { @@ -77,7 +74,8 @@ impl Reminder { message_key, locale = locale.as_ref(), delta_text = &delta_string, - ); + ) + .into_owned(); if let Some(time) = self.time { result += &t!( "reminders.time", diff --git a/src/main.rs b/src/main.rs index c137566..d153c39 100644 --- a/src/main.rs +++ b/src/main.rs @@ -172,7 +172,7 @@ async fn check_task(bot: &Throttle, db: &Database) -> Result<()> { if now >= appointment.start { reminder = Some(ReminderMessage { time: appointment.start, - text: t!("messages.starting_now", locale = &chat_info.locale), + text: t!("messages.starting_now", locale = &chat_info.locale).into_owned(), }); } else { let most_recent_active_reminder = chat_info @@ -226,7 +226,7 @@ async fn check_task(bot: &Throttle, db: &Database) -> Result<()> { ); reminder = Some(ReminderMessage { time: reminder_date_time, - text: reminder_text, + text: reminder_text.into_owned(), }); } }