formal-ai 0.165.0

Formal symbolic AI implementation with OpenAI-compatible APIs
Documentation
pub fn detect_source_language(normalized: &str) -> Option<&'static str> {
    if normalized.contains("from english")
        || normalized.contains("с английского")
        || normalized.contains("अंग्रेजी से")
        || normalized.contains("अंग्रेज़ी से")
        || normalized.contains("从英语")
        || normalized.contains("从英文")
    {
        return Some("en");
    }
    if normalized.contains("from russian")
        || normalized.contains("с русского")
        || normalized.contains("रूसी से")
        || normalized.contains("从俄语")
    {
        return Some("ru");
    }
    if normalized.contains("from hindi")
        || normalized.contains("हिंदी से")
        || normalized.contains("हिन्दी से")
        || normalized.contains("从印地语")
        || normalized.contains("从印地文")
    {
        return Some("hi");
    }
    if normalized.contains("from chinese")
        || normalized.contains("चीनी से")
        || normalized.contains("从中文")
        || normalized.contains("从汉语")
        || normalized.contains("从漢語")
    {
        return Some("zh");
    }
    None
}

pub fn detect_target_language(normalized: &str) -> Option<&'static str> {
    if normalized.contains("to english")
        || normalized.contains("на английский")
        || normalized.contains("на английском")
        || normalized.contains("अंग्रेजी में")
        || normalized.contains("अंग्रेज़ी में")
        || [
            "成英文",
            "成英语",
            "为英文",
            "为英语",
            "為英文",
            "為英语",
            "到英文",
            "到英语",
        ]
        .iter()
        .any(|marker| normalized.contains(marker))
    {
        return Some("en");
    }
    if normalized.contains("to russian")
        || normalized.contains("на русский")
        || normalized.contains("रूसी में")
        || [
            "成俄语",
            "成俄語",
            "为俄语",
            "为俄語",
            "為俄语",
            "為俄語",
            "到俄语",
            "到俄語",
        ]
        .iter()
        .any(|marker| normalized.contains(marker))
    {
        return Some("ru");
    }
    if normalized.contains("to hindi")
        || normalized.contains("на хинди")
        || normalized.contains("हिंदी में")
        || normalized.contains("हिन्दी में")
        || [
            "成印地语",
            "成印地文",
            "为印地语",
            "为印地文",
            "為印地语",
            "為印地文",
            "到印地语",
            "到印地文",
        ]
        .iter()
        .any(|marker| normalized.contains(marker))
    {
        return Some("hi");
    }
    if normalized.contains("to chinese")
        || normalized.contains("на китайский")
        || normalized.contains("चीनी में")
        || [
            "成中文",
            "成汉语",
            "成漢語",
            "为中文",
            "为汉语",
            "为漢語",
            "為中文",
            "為汉语",
            "為漢語",
            "到中文",
            "到汉语",
            "到漢語",
        ]
        .iter()
        .any(|marker| normalized.contains(marker))
    {
        return Some("zh");
    }
    None
}