"""Locale-Module für den vault-gap-analysis-Skill.

Jedes Locale-Modul exportiert mindestens STOP_WORDS (set[str]).

Laden via get_locale(name). Unbekannte Locale-Namen fallen auf _Empty zurück
(leeres STOP_WORDS), kein Crash.

Vorbild: .skills/session-log/locale_data/
"""
from __future__ import annotations

import importlib
from pathlib import Path
from types import ModuleType


class _Empty:
    """Fallback-Klasse für unbekannte Locales.

    Gibt ein leeres STOP_WORDS zurück, damit der Skill ohne Locale-Datei
    weiterläuft. Kein Crash, kein silent-Skip — das Verhalten ist
    vorhersehbar und dokumentiert.
    """

    STOP_WORDS: set[str] = set()


def get_locale(name: str) -> ModuleType | _Empty:
    """Lädt das Locale-Modul lazy via importlib.

    Args:
        name: Sprachcode, z.B. 'de'. Muss einer Datei
              locale_data/<name>.py entsprechen.

    Returns:
        Das Locale-Modul (mit STOP_WORDS-Attribut) oder
        eine _Empty-Instanz bei unbekanntem Locale.
    """
    _pkg = __name__  # 'locale_data' relativ zum Skill
    try:
        return importlib.import_module(f".{name}", package=_pkg)
    except ModuleNotFoundError:
        return _Empty()
