Add async-safety back to fluent-ergonomics
This commit is contained in:
parent
ab33db4a22
commit
679510b010
|
@ -561,8 +561,9 @@ dependencies = [
|
|||
name = "fluent-ergonomics"
|
||||
version = "0.2.0"
|
||||
dependencies = [
|
||||
"fluent",
|
||||
"fluent-bundle",
|
||||
"fluent-syntax",
|
||||
"intl-memoizer",
|
||||
"unic-langid",
|
||||
]
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ include = [
|
|||
]
|
||||
|
||||
[dependencies]
|
||||
fluent = "0.16"
|
||||
fluent-bundle = "0.15"
|
||||
unic-langid = "0.9"
|
||||
fluent-syntax = "0.11"
|
||||
intl-memoizer = "*"
|
||||
|
|
|
@ -15,7 +15,7 @@ You should have received a copy of the GNU General Public License along with Lum
|
|||
//! The Fluent class makes it easier to load translation bundles with language fallbacks and to go
|
||||
//! through the most common steps of translating a message.
|
||||
//!
|
||||
use fluent::{FluentArgs, FluentBundle, FluentError, FluentResource};
|
||||
use fluent_bundle::{bundle::FluentBundle, FluentArgs, FluentError, FluentResource};
|
||||
use fluent_syntax::parser::ParserError;
|
||||
use std::collections::hash_map::Entry;
|
||||
use std::collections::HashMap;
|
||||
|
@ -103,7 +103,14 @@ impl From<FromUtf8Error> for Error {
|
|||
#[derive(Clone, Default)]
|
||||
pub struct FluentErgo {
|
||||
languages: Vec<LanguageIdentifier>,
|
||||
bundles: Arc<RwLock<HashMap<LanguageIdentifier, FluentBundle<FluentResource>>>>,
|
||||
bundles: Arc<
|
||||
RwLock<
|
||||
HashMap<
|
||||
LanguageIdentifier,
|
||||
FluentBundle<FluentResource, intl_memoizer::concurrent::IntlLangMemoizer>,
|
||||
>,
|
||||
>,
|
||||
>,
|
||||
}
|
||||
|
||||
impl fmt::Debug for FluentErgo {
|
||||
|
@ -167,7 +174,10 @@ impl FluentErgo {
|
|||
bundle.add_resource(res).map_err(|err| Error::from(err))
|
||||
}
|
||||
Entry::Vacant(e) => {
|
||||
let mut bundle = FluentBundle::new(vec![lang]);
|
||||
let mut bundle: FluentBundle<
|
||||
FluentResource,
|
||||
intl_memoizer::concurrent::IntlLangMemoizer,
|
||||
> = FluentBundle::new_concurrent(vec![lang]);
|
||||
bundle.add_resource(res).map_err(|err| Error::from(err))?;
|
||||
e.insert(bundle);
|
||||
Ok(())
|
||||
|
@ -220,14 +230,14 @@ impl FluentErgo {
|
|||
/// A typical call with arguments would look like this:
|
||||
///
|
||||
/// ```
|
||||
/// use fluent::{FluentArgs, FluentValue};
|
||||
/// use fluent_bundle::{FluentArgs, FluentValue};
|
||||
///
|
||||
/// let eo_id = "eo".parse::<unic_langid::LanguageIdentifier>().unwrap();
|
||||
/// let en_id = "en-US".parse::<unic_langid::LanguageIdentifier>().unwrap();
|
||||
///
|
||||
/// let mut fluent = fluent_ergonomics::FluentErgo::new(&[eo_id, en_id]);
|
||||
/// let mut args = FluentArgs::new();
|
||||
/// args.insert("value", FluentValue::from("15"));
|
||||
/// args.set("value", FluentValue::from("15"));
|
||||
/// let r = fluent.tr("length-without-label", Some(&args));
|
||||
/// ```
|
||||
///
|
||||
|
@ -257,7 +267,7 @@ impl FluentErgo {
|
|||
|
||||
fn tr_(
|
||||
&self,
|
||||
bundle: &FluentBundle<FluentResource>,
|
||||
bundle: &FluentBundle<FluentResource, intl_memoizer::concurrent::IntlLangMemoizer>,
|
||||
msgid: &str,
|
||||
args: Option<&FluentArgs>,
|
||||
) -> Option<String> {
|
||||
|
@ -287,7 +297,7 @@ impl FluentErgo {
|
|||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::FluentErgo;
|
||||
use fluent::{FluentArgs, FluentValue};
|
||||
use fluent_bundle::{FluentArgs, FluentValue};
|
||||
use unic_langid::LanguageIdentifier;
|
||||
|
||||
const EN_TRANSLATIONS: &'static str = "
|
||||
|
|
Loading…
Reference in New Issue