Skip to content
Zibi Braniecki edited this page Dec 21, 2017 · 7 revisions

Fluent is a localization system designed to unleash the expressive power of natural language translations.

Background

Software localization has been dominated by an outdated paradigm: the translation is just a dictionary of strings which map one-to-one to the English (en-US) copy. This paradigm is unfair and limiting to languages with grammars more complex than English. For any grammatical feature not supported by English, a special case must be added to the source code, leaking logic into all translations. Furthermore, creating good UIs which depend on multiple external arguments is hard and requires the developer to understand the grammar of the languages the product targets.

Goals

  • Design a DSL for creating expressive translations which can depend on many internal and external arguments.
  • Design a low-level API for parsing and formatting translations which keeps localizations isolated from each other.
  • Create a reference implementation which can be used to build localization frameworks.

Non-Goals

  • Create a new localization framework.
  • Solve IO for all platforms.

Design Philosophy

The design of Fluent is centered around the following five concepts: Control and Isolation, Simplicity, Tolerance, Modularity and composability, and The Principle of Least Power. See the Design Principles document for more details.

Project Pillars

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