1pub fn is_english(language: &str) -> bool {
10 let l = language.trim();
11 l.is_empty() || l.eq_ignore_ascii_case("en") || l.eq_ignore_ascii_case("english")
12}
13
14pub fn is_japanese(language: &str) -> bool {
17 let l = language.trim();
18 l.eq_ignore_ascii_case("ja")
19 || l.eq_ignore_ascii_case("jp")
20 || l.eq_ignore_ascii_case("japanese")
21 || l.eq_ignore_ascii_case("日本語")
22}
23
24pub fn of_repo(repo: &std::path::Path) -> String {
28 crate::config::Config::discover(repo, None)
29 .map(|(c, _)| c.graph.language)
30 .unwrap_or_else(|_| "en".to_owned())
31}
32
33#[cfg(test)]
34mod tests {
35 use super::*;
36
37 #[test]
38 fn every_japanese_spelling_is_accepted() {
39 for l in ["ja", "JA", "jp", "Japanese", " japanese ", "日本語"] {
40 assert!(is_japanese(l), "{l:?}");
41 }
42 }
43
44 #[test]
45 fn everything_else_is_not_japanese() {
46 for l in ["en", "", "de", "fr", "jap"] {
47 assert!(!is_japanese(l), "{l:?}");
48 }
49 }
50}