1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//! Fluent is a localization system designed to improve how software is translated.
//!
//! The Rust implementation provides the low level components for syntax operations, like parser
//! and AST, and the core localization struct - `MessageContext`.
//!
//! `MessageContext` is the low level container for storing and formatting localization messages. It
//! is expected that implementations will build on top of it by providing language negotiation
//! between user requested languages and available resources and I/O for loading selected
//! resources.
//!
//! # Example
//!
//! ```
//! use fluent::MessageContext;
//! use fluent::types::FluentValue;
//! use std::collections::HashMap;
//!
//! let mut ctx = MessageContext::new(&["en-US"]);
//!
//! ctx.add_messages(
//! "
//! hello-world = Hello, world!
//! intro = Welcome, { $name }.
//! "
//! );
//!
//! let msg = ctx.get_message("hello-world").unwrap();
//! let value = ctx.format(msg, None).unwrap();
//!
//! assert_eq!(value, "Hello, world!");
//!
//! let mut args = HashMap::new();
//! args.insert("name", FluentValue::from("John"));
//!
//! let msg = ctx.get_message("intro").unwrap();
//! let value = ctx.format(msg, Some(&args)).unwrap();
//!
//! assert_eq!(value, "Welcome, John.");
//! ```
extern crate failure;
extern crate failure_derive;
extern crate fluent_locale;
extern crate fluent_syntax;
extern crate intl_pluralrules;
pub use MessageContext;