Skip to main content

Fluent i18n solution for Elm

Project description

elm-fluent Documentation Status

elm-fluent is a Fluent implementation for Elm.

Fluent is a next-generation translation/localization solution, designed by the folks at Mozilla, based on many years of experience with localizing into a large number of different languages. Mozilla have extracted parts of their ‘l20n’ solution (used by apps like Firefox and Thunderbird) into a re-usable specification designed specifically for the web.

elm-fluent is a full implementation of this specification for Elm (see the change log for exact version support).

It operates as a command line tool that compiles .ftl files to .elm files. The result is that each message becomes a function that will generate a translated string (or HTML fragment) for a given locale and an optional set of strongly typed parameters (string, dates or numbers).

Dates and numbers can also be passed with formatting parameters supplied - for example, to attach a currency to a number, so that it can be correctly formatted as a currency according to the rules of the locale in use.

Please see the docs for more information.

For discussion regarding Fluent, including elm-fluent, see also the Mozilla Discourse Fluent category.


  • Rough around the edges, but being used in production. Please see the list of open issues.

  • A pretty complete test suite, and sufficient docs.

  • Good attention to usability in terms of nice error messages.

  • Compatibility: Elm 0.18 only.

    Elm 0.19 is problematic - we require a wrapper for Intl, but Elm doesn’t have one yet and the restriction on native modules blocks us from writing our own.

    It is unclear if/when an official wrapper will be provided, or whether it will be suitable for elm-fluent. We use elm-intl which has proved ideal for our usage, but the core team apparently quickly dismissed adoption of a library like that.

    In light of this, and other problems caused by the restriction on native modules in 0.19, the author of elm-fluent may well be forced to move away from Elm. In this event the most likely outcome is a migration to bucklescript with bucklescript-tea and elm-fluent will be forked to target that platform instead. This repo will not be deleted but further development will likely stop.

  • Free software: MIT license


This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.


0.6.0 (2020-04-09)

  • Big rewrite of the type inference/checking mechanism, with more accurate error messages now.

0.5.0 (2019-08-15)

  • Updated to Syntax 1.0 (fluent.syntax 0.15)

  • Various bug fixes and small improvements

0.4.0 (2019-03-18)

  • ftl2elm –include option

  • Dropped Python 2.7 support

0.3.0 (2019-03-06)

  • Syntax 0.8 support, including parameterized terms.

  • Better compile-time resolution of some expressions.

0.2.1 (2018-12-19)

  • Fixed python-fluent dependency to an older version (< 0.9), because it doesn’t work with newer versions. Thanks @stasm for the report.

0.2.0 (2018-09-10)

  • Better handling for a large variety of error conditions

  • Proper fallback mechanism implemented

  • Added --watch option.

  • Eliminate unused imports from generated code

  • Various bug fixes:

    • Avoid outputting .elm files with no exports

    • Bugs with HTML attributes and non-string message args

    • Crasher with multi-line messages

    • Crasher when a message is missing from default locale

0.1.0 (2018-07-27)

  • First release on PyPI.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

elm_fluent-0.6.0.tar.gz (117.9 kB view hashes)

Uploaded source

Built Distribution

elm_fluent-0.6.0-py3-none-any.whl (47.4 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page