21 releases (8 stable)

1.2.0 Oct 6, 2023
1.1.4 Oct 27, 2021
1.1.2 Jul 29, 2021
1.1.1 Aug 11, 2020
0.1.7 May 5, 2017

#42 in Value formatting

Download history 17/week @ 2024-02-18 22/week @ 2024-02-25 2/week @ 2024-03-03 17/week @ 2024-03-10 331/week @ 2024-03-31

348 downloads per month
Used in numbers

Apache-2.0/MIT

115KB
396 lines

french-numbers

Current Version Documentation License: Apache-2.0/MIT

This crate transforms a number into its French representation.

Using this crate

In your Cargo.toml, put:

[dependencies]
french-numbers = "1.2.0"

You can then use the french_number function from the french_numbers crate to format any integer into the beautiful French romance language:

use french_numbers::french_number;

assert_eq!(french_number(&71), "soixante-et-onze");
assert_eq!(french_number(&1001), "mille-un");
assert_eq!(french_number(&-200001), "moins deux-cent-mille-un");
assert_eq!(french_number(&-200000001), "moins deux-cents-millions-un");
assert_eq!(french_number(&-204000001), "moins deux-cent-quatre-millions-un");

You can also request the use of the feminine form, or prefer the previous way of writing numbers predating the 1990 orthographic reform:

use french_numbers::*;

assert_eq!(french_number_options(&37251061, &POST_REFORM_MASCULINE),
           "trente-sept-millions-deux-cent-cinquante-et-un-mille-soixante-et-un");
assert_eq!(french_number_options(&37251061, &POST_REFORM_FEMININE),
           "trente-sept-millions-deux-cent-cinquante-et-un-mille-soixante-et-une");
assert_eq!(french_number_options(&37251061, &PRE_REFORM_FEMININE),
           "trente-sept millions deux cent cinquante et un mille soixante et une");
assert_eq!(french_number_options(&37251061, &PRE_REFORM_MASCULINE),
           "trente-sept millions deux cent cinquante et un mille soixante et un")

An example program can dump particular numbers, with various options combinations:

% cargo run --bin french-numbers --features cli -- --help
Represent numbers in French language

Usage: french-numbers [OPTIONS] <LOW> [HIGH]

Arguments:
  <LOW>
          Number (or low bound) to use

          If no high bound is supplied, this will be the only number displayed.

  [HIGH]
          Optional high bound

Options:
  -f, --feminine
          Use the feminine declination

  -p, --prefix
          Prefix output with the numerical representation

  -r, --no-reform
          Use the pre-1990 orthographic reform writing

          By default, all numbers are separated by dashes. Pre-1990, only numbers smaller than 100 were separated by dashes, others words were separated by spaces.

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version

Dependencies

~145–560KB
~11K SLoC