Fluent

From MozillaWiki
Revision as of 14:37, 5 January 2017 by StasM (talk | contribs) (Created page with "=Project Fluent= Project Fluent is a localization paradigm designed to unleash the entire expressive power of natural language translations. Project Fluent keeps simple thin...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Project Fluent

Project Fluent is a localization paradigm 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.

Goal

Design an atomic low-level API which can be used to build localization frameworks.

Deliverables

The intended outcome of Project Fluent is a syntax for describing translation resources and a low-level API for formatting translations into strings.

  • Syntax specification.
  • Requirements and good practices for API implementations.
  • A reference implementation in JavaScript.
  • Implementation in Python.
  • Implementation in Rust.

Rationale

Project Fluent is a spin-off from L20n, a localization framework developed by Mozilla. L20n is designed as a combination of three layers of APIs stacked on top of each other. This modularization allows L20n to support many different environments and platforms.

  1. The low-level API providing single-purpose building blocks for L20n.
  2. Localization - The main L20n class responsible for language negotiation, resource loading and the fallback strategy.
  3. LocalizationObserver - The manager class used to bind to the host environment.

Project Fluent is based on the first layer and intends to replace it in L20n. It encapsulates a lot of main design axes of L20n: separation of concerns, translations-as-an-object (great for UI widgets and components), more control for the localizers, better and more-natural sounding translations, integration with Intl/ICU.

Status

The FTL syntax used in L20n.js as of January 1st, 2017, will be tagged as version 0.1.