Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/projectfluent/fluent

Fluent — planning, spec and documentation
https://github.com/projectfluent/fluent

asdl ebnf ftl globalization internationalization intl l10n localization specification translate translation

Last synced: about 1 month ago
JSON representation

Fluent — planning, spec and documentation

Awesome Lists containing this project

README

        

# Fluent

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

This repository contains the specification, the reference implementation of the
parser and the documentation for Fluent.

## Fluent Syntax (FTL)

FTL is the syntax for describing translation resources in Project Fluent. FTL
stands for *Fluent Translation List*. Read the [Fluent Syntax Guide][] to get
started learning Fluent.

The `syntax/` directory contains the reference implementation of the syntax as
a _LL(infinity)_ parser.

The `spec/` directory contains the formal EBNF grammar, autogenerated from the
reference implementation.

## Development

While working on the reference parser, use the following commands to test and
validate your work:

npm test # Test the parser against JSON AST fixtures.
npm run lint # Lint the parser code.

npm run generate:ebnf # Generate the EBNF from syntax/grammar.js.
npm run generate:fixtures # Generate test fixtures (FTL → JSON AST).

npm run build:guide # Build the HTML version of the Guide.

npm run bench # Run the performance benchmark on large FTL.

## Other Implementations

This repository contains the reference implementation of the parser. Other implementations exist which should be preferred for use in production and in tooling.

- The JavaScript implementation at [`fluent.js`](https://github.com/projectfluent/fluent.js), including the [React bindings](https://github.com/projectfluent/fluent.js/tree/master/fluent-react).
- The Python implementation at [`python-fluent`](https://github.com/projectfluent/python-fluent).
- The Rust implementation at [`fluent-rs`](https://github.com/projectfluent/fluent-rs).

We also know about the following community-driven implementations:

- [`Fluent.Net`](https://github.com/blushingpenguin/Fluent.Net) by [@blushingpenguin](https://github.com/blushingpenguin). See [#93](https://github.com/projectfluent/fluent/issues/93) for more info.
- [`Linguini`](https://github.com/Ygg01/Linguini) a .NET library by [@Ygg01](https://github.com/Ygg01)
- A Java/Kotlin implementation has been requested in [#158](https://github.com/projectfluent/fluent/issues/158).
- [`elm-fluent`](https://github.com/elm-fluent/elm-fluent) by [@spookylukey](https://github.com/spookylukey/)
- [`Fluent`](https://github.com/alabamenhu/Fluent) as a Perl 6 module by [@alabamenhu](https://github.com/alabamenhu/)
- [`fluent-dart`](https://github.com/ryanhz/fluent-dart) as a Dart runtime implementation by [@ryanhz](https://github.com/ryanhz).
- [`fluent-compiler`](https://github.com/django-ftl/fluent-compiler) - an alternative Python implementation by [@spookylukey](https://github.com/spookylukey/).
- [`fluent-vue`](https://github.com/demivan/fluent-vue) - Vue.js plugin - integration for `fluent.js`
- A Lua implementation effort is underway at [`fluent-lua`](https://github.com/alerque/fluent-lua) by [@alerque](https://github.com/alerque).
- A D implementation effort is underway at [`fluentd`](https://github.com/SirNickolas/fluentd) by [@SirNickolas](https://github.com/SirNickolas).
- [`fluent.go`](https://github.com/lus/fluent.go) - a Golang implementation by [@lus](https://github.com/lus)
- [`fluent-php`](https://github.com/Ennexa/fluent-php) - a PHP module providing bindings wrapping the Rust library by [@Ennexa](https://github.com/Ennexa)

## Learn More and Discuss

Find out more about Project Fluent at [projectfluent.org][] and discuss the future of Fluent at [Mozilla Discourse][].

[Fluent Syntax Guide]: http://projectfluent.org/fluent/guide
[projectfluent.org]: http://projectfluent.org
[Mozilla Discourse]: https://discourse.mozilla.org/c/fluent