Skip to main content

garbage_code_hunter/common/
i18n_ext.rs

1//! Extended i18n helpers for entertainment tools.
2
3/// Check if the language is Chinese.
4pub fn is_chinese(lang: &str) -> bool {
5    matches!(
6        lang.to_lowercase().replace('_', "-").as_str(),
7        "zh" | "zh-cn" | "chinese"
8    )
9}
10
11/// Select a string based on language.
12pub fn t<'a>(lang: &'a str, zh: &'a str, en: &'a str) -> &'a str {
13    if is_chinese(lang) {
14        zh
15    } else {
16        en
17    }
18}
19
20/// Select an owned String based on language.
21pub fn t_owned(lang: &str, zh: &str, en: &str) -> String {
22    if is_chinese(lang) {
23        zh.to_string()
24    } else {
25        en.to_string()
26    }
27}
28
29#[cfg(test)]
30mod tests {
31    use super::*;
32
33    #[test]
34    fn test_is_chinese() {
35        assert!(is_chinese("zh-CN"));
36        assert!(is_chinese("zh"));
37        assert!(is_chinese("chinese"));
38        assert!(!is_chinese("en-US"));
39        assert!(!is_chinese("en"));
40    }
41
42    #[test]
43    fn test_t() {
44        assert_eq!(t("zh-CN", "中文", "English"), "中文");
45        assert_eq!(t("en-US", "中文", "English"), "English");
46    }
47}