From 509f71a605d80436bf6c6572e2eb2a60996b50c1 Mon Sep 17 00:00:00 2001 From: Quentin Gliech Date: Mon, 3 Mar 2025 12:17:53 +0100 Subject: [PATCH] Remove spuriuous ICU errors from the logs --- crates/i18n/src/translator.rs | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/crates/i18n/src/translator.rs b/crates/i18n/src/translator.rs index 2b87eba4f..07415ff26 100644 --- a/crates/i18n/src/translator.rs +++ b/crates/i18n/src/translator.rs @@ -35,6 +35,13 @@ const FALLBACKER: LocaleFallbackerWithConfig<'static> = LocaleFallbacker::new(). config }); +/// Construct a [`DataRequest`] for the given locale +pub fn data_request_for_locale(locale: &DataLocale) -> DataRequest<'_> { + let mut metadata = DataRequestMetadata::default(); + metadata.silent = true; + DataRequest { locale, metadata } +} + /// Error type for loading translations #[derive(Debug, Error)] pub enum LoadError { @@ -200,19 +207,16 @@ impl Translator { /// Returns an error if the requested locale is not found, or if the /// requested key is not found. pub fn message(&self, locale: &DataLocale, key: &str) -> Result<&Message, DataError> { - let request = DataRequest { - locale, - metadata: DataRequestMetadata::default(), - }; + let request = data_request_for_locale(locale); let tree = self .translations .get(locale) - .ok_or(DataErrorKind::MissingLocale.with_req(DATA_KEY, request))?; + .ok_or_else(|| DataErrorKind::MissingLocale.with_req(DATA_KEY, request))?; let message = tree .message(key) - .ok_or(DataErrorKind::MissingDataKey.with_req(DATA_KEY, request))?; + .ok_or_else(|| DataErrorKind::MissingDataKey.with_req(DATA_KEY, request))?; Ok(message) } @@ -273,19 +277,16 @@ impl Translator { let plurals = PluralRules::try_new_cardinal_unstable(&self.plural_provider, locale)?; let category = plurals.category_for(count); - let request = DataRequest { - locale, - metadata: DataRequestMetadata::default(), - }; + let request = data_request_for_locale(locale); let tree = self .translations .get(locale) - .ok_or(DataErrorKind::MissingLocale.with_req(DATA_KEY, request))?; + .ok_or_else(|| DataErrorKind::MissingLocale.with_req(DATA_KEY, request))?; let message = tree .pluralize(key, category) - .ok_or(DataErrorKind::MissingDataKey.with_req(DATA_KEY, request))?; + .ok_or_else(|| DataErrorKind::MissingDataKey.with_req(DATA_KEY, request))?; Ok(message) }