pub struct FluentArgs<'args>(Vec<(Cow<'args, str>, FluentValue<'args>)>);
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."
);
Tuple Fields§
§0: Vec<(Cow<'args, str>, FluentValue<'args>)>
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
.
Trait Implementations§
Source§impl<'args> Debug for FluentArgs<'args>
impl<'args> Debug for FluentArgs<'args>
Source§impl<'args> Default for FluentArgs<'args>
impl<'args> Default for FluentArgs<'args>
Source§fn default() -> FluentArgs<'args>
fn default() -> FluentArgs<'args>
Source§impl<'args, K, V> FromIterator<(K, V)> for FluentArgs<'args>
impl<'args, K, V> FromIterator<(K, V)> for FluentArgs<'args>
Source§fn from_iter<I>(iter: I) -> FluentArgs<'args>where
I: IntoIterator<Item = (K, V)>,
fn from_iter<I>(iter: I) -> FluentArgs<'args>where
I: IntoIterator<Item = (K, V)>,
Source§impl<'args> IntoIterator for FluentArgs<'args>
impl<'args> IntoIterator for FluentArgs<'args>
Auto Trait Implementations§
impl<'args> !DynSend for FluentArgs<'args>
impl<'args> !DynSync for FluentArgs<'args>
impl<'args> Freeze for FluentArgs<'args>
impl<'args> !RefUnwindSafe for FluentArgs<'args>
impl<'args> Send for FluentArgs<'args>
impl<'args> !Sync for FluentArgs<'args>
impl<'args> Unpin for FluentArgs<'args>
impl<'args> !UnwindSafe for FluentArgs<'args>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Filterable for T
impl<T> Filterable for T
Source§fn filterable(
self,
filter_name: &'static str,
) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(_: DataRequest<'_>) -> bool>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
Source§fn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
impl<T> ErasedDestructor for Twhere
T: 'static,
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 24 bytes