🎉 Fluent Syntax 1.0

I’m happy and proud to announce the stable release of Fluent Syntax 1.0, available today.

With this release, we commit to no braking changes to the syntax and to the AST during the 1.x lifetime. The formal definition of the grammar can be found on GitHub, together with documents outlining good practices, validation rules, and the compatibility strategy for future releases. We are looking for feedback from the localization industry, standards organizations, and other projects and implementers.

There are no syntax changes compared to version 0.9 of the specification in this release. Version 0.9 served as the release candidate for 1.0. I published new versions of the JavaScript parser (fluent-syntax 0.13) and the Python parser (fluent.syntax 0.15). The implementations are currently still 0.x, but are quickly maturing towards stability.

Fluent 1.0 is a result of 2 years of hard work on the syntax design, architecture and implementation. But it’s special to me for another reason, too. It’s an evolution of an idea that I first heard about in 2007. I was a contributor to the Polish localization of Firefox back then, and a foreign exchange student living in France. I went to FOSDEM where Axel gave a talk about L20n. It’s amazing how well the concepts presented at that time continue to apply to modern software. Thanks for starting it all, @Pike! When a few years later @zbraniecki and I were responsible for creating the localization runtime for Firefox OS, we used l20n.js, and created the foundation for what later became Fluent.

It’s a good day to celebrate :sparkles:.


Earlier today I also published a blog post about Fluent on Mozilla Hacks.

Special thanks to @mstanke for reviewing my Czech spelling of the featured example, and for teaching me the correct pronunciation over Telegram :slight_smile:


Is there any plans to have a multi-language documentation platform for Fluent? English is great, but in my practice, having a localized version for such documentation might help to push changes in product development a lot.

Congratulations on the release. I had a look over the resources you pointed to.

The fluent.ebnf format - I get that it’s generically EBNF, but is it something that could be picked up by standard tools to generate a parser automatically? Were all the parsers written by hand, as seems to be the case?

I’m also curious - why did you come up with a reference implementation first, and then formalise the spec from that?

That’s a great point. I’m sure that localized docs about Fluent would help many localizers use Fluent to its full potential.

We don’t have plans for providing docs in multiple languages right now, but I’ll keep that in mind going forward. With the feedback we’ve been receiving after the 1.0 announcement, the docs are constantly evolving, too, so it might be best to wait a few more months for them to mature and stabilize.

1 Like

Glad to hear that. I already translated the 1st revision of the documentation for translators into Russian. I used OmegaT to do so, and further translations should be easy using the existing TM.

1 Like

Very interesting for non-native English like me.

May I ask a question for Firefox addons’ devs? When will Fluent Syntax available for Firefox addons?

We want to make that possible, but we don’t have a timeline yet.

Bug 1425104 is the tracker for that. FWIW, I don’t know if the patches in that bug still make sense, we changed a lot since then. I also thought I left a comment around that in a bug, but I can’t find that bug right now.

1 Like