"""Dvojezicni tekstovi za kontrolne prozore.

Jedan rjecnik, dva jezika, bez ovisnosti. QML dohvaca preko `t(kljuc)`, a
promjena jezika samo javi signal pa se sva vezivanja osvjeze.

Namjerno ovdje, a ne u QML-u: isti rjecnik koriste i poruke koje Python salje
iz radnji (prijava, greske), pa da prijevod ne stoji na dva mjesta.
"""
from __future__ import annotations

RJECNIK: dict[str, dict[str, str]] = {
    # zajednicko
    "spremno": {"hr": "Spremno.", "en": "Ready."},
    "online": {"hr": "Online", "en": "Online"},
    "offline": {"hr": "Offline", "en": "Offline"},
    "spajanje": {"hr": "Spajanje", "en": "Connecting"},
    "greska": {"hr": "Greška", "en": "Error"},
    "aktivan": {"hr": "Aktivan", "en": "Running"},
    "zaustavljen": {"hr": "Zaustavljen", "en": "Stopped"},
    "pokreni": {"hr": "Pokreni", "en": "Start"},
    "zaustavi": {"hr": "Zaustavi", "en": "Stop"},
    "odjava": {"hr": "Odjava", "en": "Sign out"},
    "prijava": {"hr": "Prijava", "en": "Sign in"},
    "prijaviSe": {"hr": "Prijavi se", "en": "Sign in"},
    "prijavljujem": {"hr": "Prijavljujem…", "en": "Signing in…"},
    "korisnik": {"hr": "Korisnik", "en": "Account"},
    "lozinka": {"hr": "lozinka", "en": "password"},
    "emailIliIme": {"hr": "email ili korisničko ime", "en": "email or username"},
    "rad": {"hr": "Rad", "en": "Operation"},
    "racun": {"hr": "Račun", "en": "Account"},
    "sustav": {"hr": "Sustav", "en": "System"},
    "kratkiPodaci": {
        "hr": "Korisnik i lozinka su prekratki.",
        "en": "Username or password too short.",
    },
    "prijavljen": {"hr": "Prijavljen.", "en": "Signed in."},
    "prijavaPala": {
        "hr": "Prijava nije uspjela. Provjeri lozinku.",
        "en": "Sign in failed. Check the password.",
    },
    # screentoss
    "ovoRacunalo": {"hr": "Ovo računalo", "en": "This computer"},
    "naziv": {"hr": "Naziv", "en": "Name"},
    "idUredaja": {"hr": "ID uređaja", "en": "Device ID"},
    "otvoriViewer": {"hr": "Otvori viewer", "en": "Open viewer"},
    "spajanjeBezPotvrde": {"hr": "Spajanje bez potvrde", "en": "Connect without asking"},
    "spajanjeBezPotvrdeOpis": {
        "hr": "Uređaji s tvog računa ulaze bez pitanja. Bez toga svaku sesiju potvrđuješ dijalogom.",
        "en": "Devices on your account get in without a prompt. Otherwise every session needs a dialog.",
    },
    "pripremiDijeljenje": {
        "hr": "Pripremi dijeljenje pri pokretanju",
        "en": "Prepare screen sharing at startup",
    },
    "pripremiDijeljenjeOpis": {
        "hr": "Na Waylandu dijalog za dijeljenje ekrana iskoči odmah, dok si za računalom, pa spajanje izdaleka poslije ne čeka nikoga.",
        "en": "On Wayland the sharing dialog appears right away, while you are at the machine, so connecting from afar waits for no one.",
    },
    "provjeriSustav": {"hr": "Provjeri sustav", "en": "Check system"},
    "provjeravam": {"hr": "Provjeravam…", "en": "Checking…"},
    "datotekeFiletoss": {"hr": "Datoteke: Filetoss", "en": "Files: Filetoss"},
    "sustavWayland": {
        "hr": "Wayland: slika i kontrola idu preko portala za dijeljenje ekrana.",
        "en": "Wayland: picture and control go through the screen sharing portal.",
    },
    "sustavX11": {
        "hr": "X11: slika ide izravno, kontrola preko xdotoola.",
        "en": "X11: direct capture, control through xdotool.",
    },
    "povijest": {"hr": "Nedavno spajanje", "en": "Recent connections"},
    "povijestPrazna": {
        "hr": "Još nisi otvarao nijedan udaljeni ekran.",
        "en": "You have not opened a remote screen yet.",
    },
    "spoji": {"hr": "Spoji se", "en": "Connect"},
    "zaboravi": {"hr": "Zaboravi", "en": "Forget"},
    # filetoss
    "syncMapa": {"hr": "Sync mapa", "en": "Sync folder"},
    "promijeni": {"hr": "Promijeni", "en": "Change"},
    "otvori": {"hr": "Otvori", "en": "Open"},
    "primajBezPitanja": {"hr": "Primaj bez pitanja", "en": "Accept without asking"},
    "primajBezPitanjaOpis": {
        "hr": "Dolazne datoteke s tvojih uređaja spremaju se same u sync mapu. Isključeno, svaki prijenos moraš potvrditi.",
        "en": "Incoming files from your devices land in the sync folder by themselves. Off, every transfer needs a confirmation.",
    },
    "posaljiDatoteku": {"hr": "Pošalji datoteku", "en": "Send a file"},
    "saljiNa": {"hr": "Šalji na", "en": "Send to"},
    "nemaUredaja": {
        "hr": "Nema vidljivih uređaja. Otvori Filetoss na drugom uređaju.",
        "en": "No devices in sight. Open Filetoss on another device.",
    },
    "pokreniSPrijavom": {"hr": "Pokreni s prijavom", "en": "Start at login"},
    "pokreniSPrijavomOpis": {
        "hr": "Filetoss se diže sam kad se prijaviš u sustav.",
        "en": "Filetoss starts on its own when you log in.",
    },
    "ovajUredaj": {"hr": "Ovaj uređaj", "en": "This device"},
    "pogledaj": {"hr": "Pogledaj", "en": "Open"},
    "screentossOpis": {
        "hr": "Filetoss nosi datoteke. Za sliku ekrana i kontrolu miša postoji Screentoss, brat iz iste kuće.",
        "en": "Filetoss carries files. For the screen and mouse control there is Screentoss, its sibling from the same house.",
    },
    "prijaviOpis": {
        "hr": "Prijavi se istim računom kao u aplikaciji, pa se uređaji vide međusobno gdje god bili.",
        "en": "Sign in with the same account as in the app and your devices see each other wherever they are.",
    },
}


def prevedi(kljuc: str, jezik: str) -> str:
    unos = RJECNIK.get(kljuc)
    if not unos:
        return kljuc
    return unos.get(jezik) or unos.get("hr") or kljuc
