1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
use super::super::{Language, TimeUnit};

#[derive(Default)]
pub struct French;
impl Language for French {
    fn clone_boxed(&self) -> super::super::BoxedLanguage { Box::new(Self{}) }
    fn too_low (&self) -> &'static str { "maintenant" }
    fn too_high(&self) -> &'static str { "ancien" }
    fn ago(&self)      -> &'static str { "il y a" }
    fn get_word(&self, tu: TimeUnit, x: u64) -> &'static str {
        use TimeUnit::*;
        if x == 1 {
            match tu {
                Nanoseconds   =>  "nanoseconde",
                Microseconds  =>  "microseconde",
                Milliseconds  =>  "milliseconde",
                Seconds       =>  "seconde",
                Minutes       =>  "minute",
                Hours         =>  "heure",
                Days          =>  "jour",
                Weeks         =>  "semaine",
                Months        =>  "mois",
                Years         =>  "année",
            }
        } else {
            match tu {
                Nanoseconds   =>  "nanosecondes",
                Microseconds  =>  "microsecondes",
                Milliseconds  =>  "milisecondes",
                Seconds       =>  "secondes",
                Minutes       =>  "minutes",
                Hours         =>  "heures",
                Days          =>  "jours",
                Weeks         =>  "semaines",
                Months        =>  "mois",
                Years         =>  "ans",
            }
        }
    }
    fn place_ago_before(&self) -> bool { true }
}

#[test]
fn test() {
    use super::super::Formatter;
    use std::time::Duration;
    let f = Formatter::with_language(French);
    assert_eq!(f.convert(Duration::from_secs(60)), "il y a 1 minute");
}