"""Gemeinsame Label-Übersetzungen für die Diagramm-/Analyse-Generatoren.

Die internen Werte (z.B. ``table_type`` = "Faktentabelle") bleiben kanonisch
deutsch, da sie in der Klassifikationslogik verwendet werden. Hier werden sie
nur für die *Anzeige* in der jeweiligen Sprache übersetzt.
"""
from __future__ import annotations

# Tabellentyp (kanonisch deutsch) -> Anzeigelabel je Sprache
TABLE_TYPE_LABELS: dict[str, dict[str, str]] = {
    "de": {
        "Faktentabelle": "Faktentabelle",
        "Dimensionstabelle": "Dimensionstabelle",
        "Hilfstabelle": "Hilfstabelle",
        "Hilfstabelle (Measures)": "Hilfstabelle (Measures)",
        "Tabelle": "Tabelle",
    },
    "en": {
        "Faktentabelle": "Fact table",
        "Dimensionstabelle": "Dimension table",
        "Hilfstabelle": "Helper table",
        "Hilfstabelle (Measures)": "Helper table (measures)",
        "Tabelle": "Table",
    },
}

# Interne Power-BI Visual-Typ-IDs -> Anzeigename je Sprache
VISUAL_TYPE_LABELS: dict[str, dict[str, str]] = {
    "de": {
        "barChart": "Balkendiagramm",
        "clusteredBarChart": "Gruppiertes Balkendiagramm",
        "columnChart": "Säulendiagramm",
        "clusteredColumnChart": "Gruppiertes Säulendiagramm",
        "stackedBarChart": "Gestapeltes Balkendiagramm",
        "stackedColumnChart": "Gestapeltes Säulendiagramm",
        "lineChart": "Liniendiagramm",
        "areaChart": "Flächendiagramm",
        "lineClusteredColumnComboChart": "Kombidiagramm (Linie + Säule)",
        "lineStackedColumnComboChart": "Kombidiagramm (Linie + gestapelte Säule)",
        "pieChart": "Kreisdiagramm",
        "donutChart": "Ringdiagramm",
        "treemap": "Treemap",
        "funnel": "Trichterdiagramm",
        "waterfallChart": "Wasserfalldiagramm",
        "scatterChart": "Punktdiagramm",
        "map": "Karte",
        "filledMap": "Flächenkartogramm",
        "shapeMap": "Formenkarte",
        "table": "Tabelle",
        "matrix": "Matrix",
        "card": "Karte (Einzelwert)",
        "multiRowCard": "Mehrzeilige Karte",
        "kpi": "KPI",
        "gauge": "Messgerät",
        "slicer": "Datenschnitt",
        "textbox": "Textfeld",
        "image": "Bild",
        "shape": "Form",
        "actionButton": "Schaltfläche",
        "bookmarkNavigator": "Lesezeichen-Navigator",
        "pageNavigator": "Seitennavigator",
        "decompositionTreeVisual": "Analysestruktur",
        "keyDriversVisual": "Wichtige Einflussfaktoren",
        "qnaVisual": "Q&A",
        "scriptVisual": "R/Python-Visual",
        "ribbonChart": "Menübanddiagramm",
        "pivotTable": "Pivot-Tabelle",
        "page": "Seite (Details via REST nicht verfügbar)",
        "unknown": "Unbekannt",
    },
    "en": {
        "barChart": "Bar chart",
        "clusteredBarChart": "Clustered bar chart",
        "columnChart": "Column chart",
        "clusteredColumnChart": "Clustered column chart",
        "stackedBarChart": "Stacked bar chart",
        "stackedColumnChart": "Stacked column chart",
        "lineChart": "Line chart",
        "areaChart": "Area chart",
        "lineClusteredColumnComboChart": "Combo chart (line + column)",
        "lineStackedColumnComboChart": "Combo chart (line + stacked column)",
        "pieChart": "Pie chart",
        "donutChart": "Donut chart",
        "treemap": "Treemap",
        "funnel": "Funnel chart",
        "waterfallChart": "Waterfall chart",
        "scatterChart": "Scatter chart",
        "map": "Map",
        "filledMap": "Filled map",
        "shapeMap": "Shape map",
        "table": "Table",
        "matrix": "Matrix",
        "card": "Card (single value)",
        "multiRowCard": "Multi-row card",
        "kpi": "KPI",
        "gauge": "Gauge",
        "slicer": "Slicer",
        "textbox": "Text box",
        "image": "Image",
        "shape": "Shape",
        "actionButton": "Action button",
        "bookmarkNavigator": "Bookmark navigator",
        "pageNavigator": "Page navigator",
        "decompositionTreeVisual": "Decomposition tree",
        "keyDriversVisual": "Key influencers",
        "qnaVisual": "Q&A",
        "scriptVisual": "R/Python visual",
        "ribbonChart": "Ribbon chart",
        "pivotTable": "Pivot table",
        "page": "Page (details unavailable via REST)",
        "unknown": "Unknown",
    },
}


def _lang(language: str) -> str:
    return language if language in ("de", "en") else "de"


def table_type_label(table_type: str, language: str = "de") -> str:
    """Übersetzt einen kanonischen Tabellentyp in die Anzeigesprache."""
    return TABLE_TYPE_LABELS[_lang(language)].get(table_type, table_type)


def visual_type_label(vtype: str, language: str = "de") -> str:
    """Übersetzt eine interne Visual-Typ-ID in die Anzeigesprache."""
    return VISUAL_TYPE_LABELS[_lang(language)].get(vtype, vtype)
