A localization system designed to unleash the expressive power of natural language through its Fluent Translation List (FTL) syntax.
Fluent is a localization system that provides a specialized syntax called Fluent Translation List (FTL) for describing translation resources. It solves the problem of creating natural-sounding translations that respect grammatical features like gender, plurals, and cases that traditional key-value systems often mishandle. The project includes a specification, reference parser implementation, and comprehensive documentation.
Developers and localization teams building multilingual applications who need sophisticated translation capabilities beyond simple string substitution. This includes teams working on products with complex grammatical requirements across different languages.
Developers choose Fluent because it treats localization as a first-class concern with a dedicated syntax designed specifically for translation resources. Its ability to capture natural language nuances and its growing ecosystem of implementations across multiple programming languages make it a robust choice for serious localization needs.
Fluent — planning, spec and documentation
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Fluent's FTL syntax explicitly handles gender, plurals, and cases, enabling translations that sound natural in languages with complex grammar, as highlighted in its natural language expressiveness feature.
Official libraries for JavaScript, Python, and Rust, plus community ports listed in the README, ensure Fluent can be used in diverse tech stacks without reinventing the wheel.
Includes React bindings and Vue.js integration from the README, making it easy to adopt in modern frontend frameworks with minimal setup overhead.
Based on a formal EBNF grammar and reference parser with comprehensive testing, ensuring consistency and reliability across different implementations.
FTL syntax requires developers and translators to learn a new domain-specific language, which can slow down initial adoption and increase training costs compared to simpler key-value systems.
Some community-driven implementations, like Lua or D, are listed as 'effort is underway' in the README, indicating potential instability or lack of full feature support for certain languages.
Switching from existing localization systems involves reworking translation files and tooling, as Fluent's philosophy and syntax differ significantly from traditional approaches like i18next or gettext.