l10n_core 0.1.3

Core crate for l10n.
Documentation
use crate::l10n::TranslateError;
use crate::UNEXPECTED_MESSAGE;
use fluent_bundle::FluentArgs;
use std::borrow::Cow;
use unic_langid::LanguageIdentifier;

pub trait L10nMessage<'s, 'r> {
    fn try_translate_with_args(
        &'s self,
        locale: &LanguageIdentifier,
        args: Option<&'s FluentArgs<'s>>,
    ) -> Result<Cow<'r, str>, TranslateError>;

    fn translate_with_args(
        &'s self,
        locale: &LanguageIdentifier,
        args: Option<&'s FluentArgs<'s>>,
    ) -> Cow<'r, str> {
        self.try_translate_with_args(locale, args)
            .unwrap_or_else(|_| Cow::from(UNEXPECTED_MESSAGE))
    }

    fn try_translate(
        &'s self,
        locale: &LanguageIdentifier,
    ) -> Result<Cow<'r, str>, TranslateError> {
        self.try_translate_with_args(locale, None)
    }

    fn translate(&'s self, locale: &LanguageIdentifier) -> Cow<'r, str> {
        self.try_translate_with_args(locale, None)
            .unwrap_or_else(|_| Cow::from(UNEXPECTED_MESSAGE))
    }
}