volubility
is a utility for versioning messages in Fluent resources, for use with rustc
's
diagnostic translation effort.
Pontoon, the web translation platform for Fluent, does not handle updates to Fluent messages - if
some message foo
is changed in a Fluent resource then translators will not be prompted to update
their translation.
Instead of asking compiler developers to change the message identifier whenever a message is changed, an version number is added as a suffix.
This utility automatically performs this versioning of Fluent messages given a new version of a resource and an earlier version. It can also check that versioning is valid.
See the README documents of the volubility
crate and the
volubility-bin
crate for usage details of the library and binary
interfaces respectively.
If you want help or mentorship, reach out to us in a GitHub issue, or ask davidtwco
or in
#i18n
on the Rust Zulip instance.
volubility
should always build on stable rustc
. To build volubility
:
$ cargo build
To run the tests:
$ cargo test
We use rustfmt
to automatically format and style all of our code. To install and use rustfmt
:
$ rustup component add rustfmt
$ cargo fmt
Think you've found a bug? File an issue! To help us understand and reproduce the issue, provide us with:
- The (preferably minimal) test case
- Steps to reproduce the issue using the test case
- The expected result of following those steps
- The actual result of following those steps
Definitely file an issue if you see an unexpected panic originating from within volubility
!
volubility
should never panic unless it is explicitly documented to panic in the specific
circumstances provided.
volubility
is the quality of talking fluently, readily, or incessantly.
You could also call this project
fluent-versioning
, if you'd prefer that.
volubility
is authored by David Wood of
Huawei Technologies Research & Development (UK) Ltd. volubility
is
maintained by the Rust Compiler Team.
Licensed under either of Apache License, Version 2.0 or MIT license at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
When contributing or interacting with this project, we ask abide the Rust Code of Conduct and ask that you do too.