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
//! 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 formating 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.");
//! ```

pub mod syntax;
pub mod context;
pub mod resolve;
pub mod types;
pub mod intl;

pub use context::MessageContext;