Create an instance of FluentBundle
.
The locales
argument is used to instantiate Intl
formatters used by
translations. The options
object can be used to configure the bundle.
Examples:
let bundle = new FluentBundle(["en-US", "en"]);
let bundle = new FluentBundle(locales, {useIsolating: false});
let bundle = new FluentBundle(locales, {
useIsolating: true,
functions: {
NODE_ENV: () => process.env.NODE_ENV
}
});
Available options:
functions
- an object of additional functions available to
translations as builtins.
useIsolating
- boolean specifying whether to use Unicode isolation
marks (FSI, PDI) for bidi interpolations. Default: true
.
transform
- a function used to transform string parts of patterns.
Add a translation resource to the bundle.
The translation resource must be an instance of FluentResource
.
let res = new FluentResource("foo = Foo");
bundle.addResource(res);
bundle.getMessage("foo");
// → {value: .., attributes: {..}}
Available options:
allowOverrides
- boolean specifying whether it's allowed to override
an existing message or term with a new value. Default: false
.FluentResource object.
Format a Pattern
to a string.
Format a raw Pattern
into a string. args
will be used to resolve
references to variables passed as arguments to the translation.
In case of errors formatPattern
will try to salvage as much of the
translation as possible and will still return a string. For performance
reasons, the encountered errors are not returned but instead are appended
to the errors
array passed as the third argument.
let errors = [];
bundle.addResource(
new FluentResource("hello = Hello, {$name}!"));
let hello = bundle.getMessage("hello");
if (hello.value) {
bundle.formatPattern(hello.value, {name: "Jane"}, errors);
// Returns "Hello, Jane!" and `errors` is empty.
bundle.formatPattern(hello.value, undefined, errors);
// Returns "Hello, {$name}!" and `errors` is now:
// [<ReferenceError: Unknown variable: name>]
}
If errors
is omitted, the first encountered error will be thrown.
Return a raw unformatted message object from the bundle.
Raw messages are {value, attributes}
shapes containing translation units
called Patterns
. Patterns
are implementation-specific; they should be
treated as black boxes and formatted with FluentBundle.formatPattern
.
The identifier of the message to check.
Check if a message is present in the bundle.
The identifier of the message to check.
Message bundles are single-language stores of translation resources. They are responsible for formatting message values and attributes to strings.