more fluent
cargo devel CI / cargo CI (push) Has been cancelled
Details
cargo devel CI / cargo CI (push) Has been cancelled
Details
This commit is contained in:
parent
12f756fe1a
commit
66d968cb9e
|
@ -0,0 +1,10 @@
|
||||||
|
[package]
|
||||||
|
name = "fluent-demo"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
fluent = "0.16.0"
|
||||||
|
unic-langid = "0.9.4"
|
|
@ -0,0 +1,46 @@
|
||||||
|
// shamelessly stolen from https://docs.rs/fluent/latest/fluent/index.html
|
||||||
|
|
||||||
|
use fluent::{FluentArgs, FluentBundle, FluentResource, FluentValue};
|
||||||
|
// Used to provide a locale for the bundle.
|
||||||
|
use unic_langid::LanguageIdentifier;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let ftl_string = String::from(
|
||||||
|
"
|
||||||
|
hello-world = Hello, world!
|
||||||
|
intro = Welcome, { $name }.
|
||||||
|
",
|
||||||
|
);
|
||||||
|
let res = FluentResource::try_new(ftl_string).expect("Failed to parse an FTL string.");
|
||||||
|
|
||||||
|
let langid_en: LanguageIdentifier = "en-US".parse().expect("Parsing failed");
|
||||||
|
let mut bundle = FluentBundle::new(vec![langid_en]);
|
||||||
|
|
||||||
|
bundle
|
||||||
|
.add_resource(res)
|
||||||
|
.expect("Failed to add FTL resources to the bundle.");
|
||||||
|
|
||||||
|
let msg = bundle
|
||||||
|
.get_message("hello-world")
|
||||||
|
.expect("Message doesn't exist.");
|
||||||
|
let mut errors = vec![];
|
||||||
|
let pattern = msg.value().expect("Message has no value.");
|
||||||
|
let value = bundle.format_pattern(&pattern, None, &mut errors);
|
||||||
|
|
||||||
|
assert_eq!(&value, "Hello, world!");
|
||||||
|
println!("{value}");
|
||||||
|
|
||||||
|
let mut args = FluentArgs::new();
|
||||||
|
args.set("name", FluentValue::from("John"));
|
||||||
|
|
||||||
|
let msg = bundle.get_message("intro").expect("Message doesn't exist.");
|
||||||
|
let mut errors = vec![];
|
||||||
|
let pattern = msg.value().expect("Message has no value.");
|
||||||
|
let value = bundle.format_pattern(&pattern, Some(&args), &mut errors);
|
||||||
|
|
||||||
|
// The FSI/PDI isolation marks ensure that the direction of
|
||||||
|
// the text from the variable is not affected by the translation.
|
||||||
|
assert_eq!(value, "Welcome, \u{2068}John\u{2069}.");
|
||||||
|
// which is very weird for printing to the terminal
|
||||||
|
println!("{value}");
|
||||||
|
}
|
|
@ -1,5 +1,5 @@
|
||||||
[package]
|
[package]
|
||||||
name = "fluent"
|
name = "fluent-webserv"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
Loading…
Reference in New Issue