Options
All
  • Public
  • Public/Protected
  • All
Menu

Class FluentBundle

Message bundles are single-language stores of translation resources. They are responsible for formatting message values and attributes to strings.

Hierarchy

  • FluentBundle

Index

Constructors

constructor

  • new FluentBundle(locales: string | Array<string>, __namedParameters?: object): FluentBundle
  • 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.

    Parameters

    • locales: string | Array<string>
    • Default value __namedParameters: object = {}

    Returns FluentBundle

Properties

_functions

_functions: Record<string, FluentFunction>

_intls

_intls: WeakMap<object, Record<string, object>> = new WeakMap()

_messages

_messages: Map<string, Message> = new Map()

_terms

_terms: Map<string, Term> = new Map()

_transform

_transform: TextTransform

_useIsolating

_useIsolating: boolean

locales

locales: Array<string>

Methods

addResource

  • addResource(res: FluentResource, __namedParameters?: object): Array<Error>
  • 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.

    Parameters

    • res: FluentResource

      FluentResource object.

    • Default value __namedParameters: object = {}

    Returns Array<Error>

formatPattern

  • formatPattern(pattern: Pattern, args?: Record<string, FluentVariable> | null, errors?: Array<Error> | null): string
  • 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.

    Parameters

    • pattern: Pattern
    • Default value args: Record<string, FluentVariable> | null = null
    • Default value errors: Array<Error> | null = null

    Returns string

getMessage

  • getMessage(id: string): Message | undefined
  • 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.

    Parameters

    • id: string

      The identifier of the message to check.

    Returns Message | undefined

hasMessage

  • hasMessage(id: string): boolean
  • Check if a message is present in the bundle.

    Parameters

    • id: string

      The identifier of the message to check.

    Returns boolean