48 lines
1.7 KiB
Markdown
48 lines
1.7 KiB
Markdown
# Fluent
|
|
|
|
`fluent-pseudo` is a Rust implementation of the pseudolocalization API for [Project Fluent](https://projectfluent.org/), a localization
|
|
framework designed to unleash the entire expressive power of natural language
|
|
translations.
|
|
|
|
[](https://crates.io/crates/fluent-pseudo)
|
|
[](https://github.com/projectfluent/fluent-rs/actions?query=branch%3Amaster+workflow%3A%22Build+and+test%22)
|
|
[](https://coveralls.io/github/projectfluent/fluent-rs?branch=master)
|
|
|
|
Usage
|
|
-----
|
|
|
|
```rust
|
|
use fluent_bundle::{FluentBundle, FluentResource};
|
|
use unic_langid::langid;
|
|
use fluent_pseudo::transform;
|
|
|
|
fn transform_wrapper(s: &str) -> Cow<str> {
|
|
// Not flipped and elongated pseudolocalization.
|
|
transform(s, false, true, false)
|
|
}
|
|
|
|
|
|
fn main() {
|
|
let ftl_string = "hello-world = Hello, world!".to_owned();
|
|
let res = FluentResource::try_new(ftl_string)
|
|
.expect("Could not parse an FTL string.");
|
|
|
|
let langid_en = langid!("en");
|
|
let mut bundle = FluentBundle::new(vec![langid_en]);
|
|
|
|
// Set pseudolocalization
|
|
bundle.set_transform(Some(transform_wrapper));
|
|
|
|
bundle.add_resource(&res)
|
|
.expect("Failed to add FTL resources to the bundle.");
|
|
|
|
let msg = bundle.get_message("hello-world")
|
|
.expect("Failed to retrieve a message.");
|
|
let val = msg.value.expect("Message has no value.");
|
|
|
|
let mut errors = vec![];
|
|
let value = bundle.format_pattern(val, None, &mut errors);
|
|
|
|
assert_eq!(&value, "Ħḗḗŀŀǿǿ Ẇǿǿřŀḓ!");
|
|
}
|
|
```
|