fluent 1.0.2+3

Dart native js
Flutter Android iOS web

Fluent is a Dart implementation of Project Fluent, a localization framework designed to unleash the expressive power of the natural language.

Fluent #

This is a Dart runtime implementation of Project Fluent, a localization framework designed to unleash the entire expressive power of natural language translations.

Project Fluent keeps simple things simple and makes complex things possible. The syntax used for describing translations is easy to read and understand. At the same time it allows, when necessary, to represent complex concepts from natural languages like gender, plurals, conjugations, and others.

Getting Started #

Learn the FTL syntax #

FTL is a localization file format used for describing translation resources. FTL stands for Fluent Translation List.

FTL is designed to be simple to read, but at the same time allows to represent complex concepts from natural languages like gender, plurals, conjugations, and others.

hello-user = Hello, { $username }!

In order to use fluent.runtime, you will need to create FTL files. Read the Fluent Syntax Guide <http://projectfluent.org/fluent/guide/>_ in order to learn more about the syntax.

Using FluentBundle #

Once you have some FTL files, you can generate translations using the fluent package. You start with the FluentBundle class:

import 'package:fluent/fluent.dart';

You pass a locale to the constructor:

final bundle = FluentBundle('en-GB');

You must then add messages. These would normally come from a .ftl file stored on disk, here we will just add them directly:

bundle.addMessages('''
welcome = Welcome to this great app!
greet-by-name = Hello, { $name }!
''');

To generate translations, use the format method, passing a message ID and an optional dictionary of substitution parameters. If the the message ID is not found, null is returned. Otherwise, as per the Fluent philosophy, the implementation tries hard to recover from any formatting errors and generate the most human readable representation of the value.

List<Error> errors = [];
translated = bundle.format('welcome', errors: errors)
translated = bundle.format('greet-by-name', args: {'name': 'Jane'}, errors: errors)

Known limitations and bugs #

  • We do not yet support NUMBER(..., currencyDisplay="...", minimumSignificantDigits="...", maximumSignificantDigits=".. ")

  • Most options to DATETIME are not yet supported.

Help with the above would be welcome!

8
likes
90
pub points
64%
popularity

Fluent is a Dart implementation of Project Fluent, a localization framework designed to unleash the expressive power of the natural language.

Repository (GitHub)
View/report issues

Documentation

API reference

Uploader

huzhiren@gmail.com

License

Apache 2.0 (LICENSE)

Dependencies

intl

More

Packages that depend on fluent