Struct fluent_typed::prelude::FluentArgs
source · pub struct FluentArgs<'args>(/* private fields */);
Expand description
Fluent messages can use arguments in order to programmatically add values to a translated string. For instance, in a localized application you may wish to display a user’s email count. This could be done with the following message.
msg-key = Hello, { $user }. You have { $emailCount } messages.
Here $user
and $emailCount
are the arguments, which can be filled with values.
The FluentArgs
struct is the map from the argument name (for example $user
) to
the argument value (for example “John”.) The logic to apply these to write these
to messages is elsewhere, this struct just stores the value.
§Example
use fluent_bundle::{FluentArgs, FluentBundle, FluentResource};
let mut args = FluentArgs::new();
args.set("user", "John");
args.set("emailCount", 5);
let res = FluentResource::try_new(r#"
msg-key = Hello, { $user }. You have { $emailCount } messages.
"#.to_string())
.expect("Failed to parse FTL.");
let mut bundle = FluentBundle::default();
// For this example, we'll turn on BiDi support.
// Please, be careful when doing it, it's a risky move.
bundle.set_use_isolating(false);
bundle.add_resource(res)
.expect("Failed to add a resource.");
let mut err = vec![];
let msg = bundle.get_message("msg-key")
.expect("Failed to retrieve a message.");
let value = msg.value()
.expect("Failed to retrieve a value.");
assert_eq!(
bundle.format_pattern(value, Some(&args), &mut err),
"Hello, John. You have 5 messages."
);
Implementations§
source§impl<'args> FluentArgs<'args>
impl<'args> FluentArgs<'args>
sourcepub fn new() -> FluentArgs<'args>
pub fn new() -> FluentArgs<'args>
Creates a new empty argument map.
sourcepub fn with_capacity(capacity: usize) -> FluentArgs<'args>
pub fn with_capacity(capacity: usize) -> FluentArgs<'args>
Pre-allocates capacity for arguments.
sourcepub fn get<K>(&self, key: K) -> Option<&FluentValue<'args>>
pub fn get<K>(&self, key: K) -> Option<&FluentValue<'args>>
Gets the FluentValue
at the key
if it exists.
sourcepub fn iter(&self) -> impl Iterator<Item = (&str, &FluentValue<'_>)>
pub fn iter(&self) -> impl Iterator<Item = (&str, &FluentValue<'_>)>
Iterate over a tuple of the key an FluentValue
.