Ctrl K
ComunidadGuías…

src/bots/bridge_core/language.py

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
"""Language helpers shared by Bot Bridge services and adapters."""

from __future__ import annotations

import re

from src.engine.language import DEFAULT_LANGUAGE, is_english, normalize_language


def bridge_language(value: object, fallback: str = DEFAULT_LANGUAGE) -> str:
    return normalize_language(str(value or fallback))


def bridge_is_english(value: object) -> bool:
    return is_english(bridge_language(value))


def bridge_text(
    language: object, zh: str, en: str, ja: str | None = None, de: str | None = None, **values: object
) -> str:
    lang = bridge_language(language)
    if lang == "en":
        template = en
    elif lang == "ja":
        template = ja or zh
    elif lang == "de":
        template = de or en or zh
    else:
        template = zh
    return template.format(**values)


def infer_command_language(text: object, fallback: str = DEFAULT_LANGUAGE) -> str:
    """Infer only from explicit English command words, never from free-form actions."""
    value = re.sub(r"\s+", " ", str(text or "").strip().lower())
    first = value.split(" ", 1)[0] if value else ""
    if first in {
        "help", "bind", "unbind", "join", "invite", "status", "recap", "summary",
        "map", "roll", "advance", "next", "pay", "confirm", "reject", "rejectpay",
        "sense", "log", "away", "return", "back", "ping", "character", "create",
        "luck", "spend", "no", "keep",
    }:
        return "en"
    return bridge_language(fallback)