diff --git a/members/fluent-demo/Cargo.toml b/members/fluent-demo/Cargo.toml new file mode 100644 index 0000000..16dbb2d --- /dev/null +++ b/members/fluent-demo/Cargo.toml @@ -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" diff --git a/members/fluent-demo/src/main.rs b/members/fluent-demo/src/main.rs new file mode 100644 index 0000000..17bb825 --- /dev/null +++ b/members/fluent-demo/src/main.rs @@ -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}"); +} diff --git a/members/fluent/Cargo.toml b/members/fluent-webserv/Cargo.toml similarity index 86% rename from members/fluent/Cargo.toml rename to members/fluent-webserv/Cargo.toml index 80cdf7f..1316c94 100644 --- a/members/fluent/Cargo.toml +++ b/members/fluent-webserv/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "fluent" +name = "fluent-webserv" version = "0.1.0" edition = "2021" diff --git a/members/fluent/src/main.rs b/members/fluent-webserv/src/main.rs similarity index 100% rename from members/fluent/src/main.rs rename to members/fluent-webserv/src/main.rs