From 33a7a6803a0d1cf6797db371cb41369009b4ad2b Mon Sep 17 00:00:00 2001 From: Alex Kotov Date: Wed, 21 Oct 2020 15:13:12 +0500 Subject: [PATCH] Handle translation errors --- src/responses.rs | 8 ++++++++ src/routes/home.rs | 6 +++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/responses.rs b/src/responses.rs index 9699345..22fdb72 100644 --- a/src/responses.rs +++ b/src/responses.rs @@ -1,3 +1,4 @@ +use crate::i18n::I18nError; use crate::views; use rocket::response::Redirect; @@ -6,6 +7,7 @@ use rocket_contrib::templates::Template; #[derive(Debug, rocket::response::Responder)] #[response(content_type = "text/html")] pub enum CommonResponse { + TranslationError(Redirect), AlreadySignedIn(Redirect), InvalidAuthenticityToken(Redirect), NotSignedIn(Redirect), @@ -17,6 +19,12 @@ pub enum CommonResponse { UnknownError(Template), } +impl From for CommonResponse { + fn from(_: I18nError) -> Self { + Self::TranslationError(Redirect::to("/")) + } +} + impl From for CommonResponse { fn from(_: rocket_csrf::VerificationFailure) -> Self { Self::InvalidAuthenticityToken(Redirect::to("/")) diff --git a/src/routes/home.rs b/src/routes/home.rs index f8a15c5..254c7a2 100644 --- a/src/routes/home.rs +++ b/src/routes/home.rs @@ -14,11 +14,11 @@ pub fn index( csrf_token: CsrfToken, current_user: states::MaybeCurrentUser, ) -> Result { - let l10n = i18n.l10n("en").unwrap(); + let l10n = i18n.l10n("en")?; let page_context = views::home::Index { - i18n_fedihub: l10n.translate("fedihub").unwrap(), - i18n_federated_services_without_censorship: l10n.translate("federated-services-without-censorship").unwrap(), + i18n_fedihub: l10n.translate("fedihub")?, + i18n_federated_services_without_censorship: l10n.translate("federated-services-without-censorship")?, }; let context = views::Site {