l10n_core/
l10n_message.rs1use crate::l10n::TranslateError;
2use crate::UNEXPECTED_MESSAGE;
3use fluent_bundle::FluentArgs;
4use std::borrow::Cow;
5use unic_langid::LanguageIdentifier;
6
7pub trait L10nMessage<'s, 'r> {
8 fn try_translate_with_args(
9 &'s self,
10 locale: &LanguageIdentifier,
11 args: Option<&'s FluentArgs<'s>>,
12 ) -> Result<Cow<'r, str>, TranslateError>;
13
14 fn translate_with_args(
15 &'s self,
16 locale: &LanguageIdentifier,
17 args: Option<&'s FluentArgs<'s>>,
18 ) -> Cow<'r, str> {
19 self.try_translate_with_args(locale, args)
20 .unwrap_or_else(|_| Cow::from(UNEXPECTED_MESSAGE))
21 }
22
23 fn try_translate(
24 &'s self,
25 locale: &LanguageIdentifier,
26 ) -> Result<Cow<'r, str>, TranslateError> {
27 self.try_translate_with_args(locale, None)
28 }
29
30 fn translate(&'s self, locale: &LanguageIdentifier) -> Cow<'r, str> {
31 self.try_translate_with_args(locale, None)
32 .unwrap_or_else(|_| Cow::from(UNEXPECTED_MESSAGE))
33 }
34}