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.