use super::config::{LANG_EN, LANG_ES, LANG_FR, LANG_ID, LANG_PT, LANG_RU, LangConfig};
pub fn detect_language(text: &str) -> &'static LangConfig {
let mut cyrillic = 0u32;
let mut latin_accent = 0u32;
let mut total_alpha = 0u32;
for ch in text.chars().take(500) {
if ch.is_alphabetic() {
total_alpha += 1;
if ('\u{0400}'..='\u{04FF}').contains(&ch) {
cyrillic += 1;
} else if ('\u{00C0}'..='\u{024F}').contains(&ch) {
latin_accent += 1;
}
}
}
if total_alpha == 0 {
return &LANG_EN;
}
if cyrillic * 5 > total_alpha {
return &LANG_RU;
}
if latin_accent > 0 {
if text.contains('ã')
|| text.contains('õ')
|| text.contains('ç')
|| text.contains('Ã')
|| text.contains('Õ')
|| text.contains('Ç')
{
return &LANG_PT;
}
if text.contains('ñ') || text.contains('Ñ') || text.contains('¿') || text.contains('¡')
{
return &LANG_ES;
}
if text.contains('à')
|| text.contains('â')
|| text.contains('é')
|| text.contains('è')
|| text.contains('ê')
|| text.contains('ë')
|| text.contains('î')
|| text.contains('ï')
|| text.contains('ô')
|| text.contains('û')
|| text.contains('ù')
|| text.contains('ü')
|| text.contains('ÿ')
{
return &LANG_FR;
}
}
&LANG_EN
}
pub fn all_langs() -> [&'static LangConfig; 6] {
[&LANG_EN, &LANG_RU, &LANG_ES, &LANG_PT, &LANG_FR, &LANG_ID]
}