// Internationalisation — SL / EN
const LangContext = React.createContext("sl");

const STRINGS = {
  sl: {
    // topbar
    live: "v živo",
    saved: "shranjenih",
    addWorkshop: "+ Dodaj delavnico",
    promote: "★ Promoviraj",
    signIn: "Prijava →",
    // user menu
    myWorkshops: "+ Dodaj delavnico",
    myFavourites: "♥ Priljubljene",
    myRatings: "★ Moje ocene",
    signOut: "Odjava",
    // hero
    heroWord1: "Vse",
    heroWord2: "likovne",
    heroWord3: "delavnice",
    heroLine2: "v Sloveniji,",
    heroWord4: "na enem",
    heroWord5: "mestu.",
    heroLede: (n) => `Najdi lončarje v Ljubljani, steklopihalce v Rogaški in tkalke ob Bledu. Podatki z <b>${n} spletnih strani</b>, ocene od resničnih obiskovalcev.`,
    searchPlaceholder: "Išči: lončarstvo, Bled, Ana…",
    searchBtn: "Poišči →",
    statWorkshops: "Delavnic",
    statHosts: "Izvajalcev",
    statCities: "Mest",
    statCategories: "Kategorij",
    // category strip
    browseLbl: "BRSKAJ",
    all: "Vse",
    // sidebar
    view: "Pogled",
    list: "Seznam",
    map: "Zemljevid",
    mapSlovenia: "Slovenija",
    city: "Mesto",
    clear: "počisti",
    price: "Cena",
    // feed
    allWorkshops: "Vse delavnice",
    results: (n, cat, city, max) => `${n} zadetkov${cat ? ` · ${cat}` : ""}${city ? ` · ${city}` : ""} · do ${max}€`,
    sortFeatured: "Izpostavljene najprej",
    sortPriceAsc: "Cena: naraščajoče",
    sortPriceDesc: "Cena: padajoče",
    sortRating: "Najbolje ocenjene",
    noResults: "Ni zadetkov. Počisti filtre in poskusi znova.",
    // cards
    weekLabel: (n) => `DELAVNICA TEDNA`,
    ratings: "ocen",
    // map view
    mapViewTitle: "INTERAKTIVNI ZEMLJEVID",
    mapViewClick: "Izberi mesto",
    // modal
    hostSection: "IZVAJALEC",
    rateSection: "OCENI DELAVNICO",
    reviewsSection: "MNENJA",
    loginToRate: "Prijavi se za oceno →",
    yourRating: (n) => `Tvoja ocena: ${n}/5 — hvala!`,
    clickToRate: "Klikni zvezdico za oceno",
    communityRatings: (n) => `${n} ${n === 1 ? "ocena" : "ocen"}`,
    noReviews: (name) => `Še ni mnenj. Bodi prvi${name ? ", " + name : ""}.`,
    writeReview: "+ Napiši mnenje",
    loginToReview: "+ Prijavi se in napiši mnenje",
    priceLabel: "CENA",
    perPerson: "/ oseba",
    btnSaved: "♥ Shranjeno",
    btnSave: "♡ Shrani",
    visitBtn: (src) => `Obišči spletno stran →`,
    crawlSignal: (src, when) => `Vir: ${src} · Osveženo ${when}`,
    viewHostProfile: "Stran izvajalca →",
    // host profile page
    hostBackHome: "← Vse delavnice",
    hostNotFound: "Izvajalca ne najdemo ali nima objavljenih delavnic.",
    hostWorkshopCountOne: "delavnica",
    hostWorkshopCountMany: "delavnic",
    hostLocations: "Lokacije",
    hostMapSection: "LOKACIJE",
    hostMapHint: "Mesta, kjer ta izvajalec vodi delavnice.",
    hostWorkshopsSection: "DELAVNICE",
    hostReviewsSection: "MNENJA",
    hostNoReviews: "Za te delavnice še ni objavljenih mnenj.",
    hostSocials: "DRUŽBENA OMREŽJA",
    // auth modal
    welcomeBack: "Dobrodošel\nnazaj.",
    createAccount: "Ustvari\nračun.",
    signInSub: "Oceni delavnice, shrani priljubljene in dodaj svoj atelje.",
    signUpSub: "Z registracijo lahko ocenjuješ delavnice in dodaš svojega.",
    tabSignIn: "Prijava",
    tabSignUp: "Registracija",
    fieldName: "Ime",
    fieldEmail: "E-naslov",
    fieldPassword: "Geslo",
    errEmail: "Vnesi veljaven e-naslov.",
    errName: "Vnesi ime.",
    errPassword: "Geslo mora imeti vsaj 4 znake.",
    btnSignIn: "Prijavi se →",
    btnSignUp: "Registriraj se →",
    orDivider: "ali",
    googleBtn: "Nadaljuj z Googlom",
    noAccount: "Nimaš računa?",
    hasAccount: "Že imaš račun?",
    // submit modal
    submitForHosts: "ZA IZVAJALCE",
    submitTitle: "Dodaj svojo delavnico",
    submitSub: "Brezplačno. Pregledamo in objavimo v 48 urah.",
    step1: "1 · Osnovno",
    step2: "2 · Podrobnosti",
    step3: "3 · Poslano",
    fieldWorkshopName: "Ime delavnice",
    fieldHostName: "Izvajalec ali ime ateljeja",
    fieldCity: "Mesto",
    fieldCategory: "Kategorija",
    fieldPrice: "Cena (€)",
    fieldDuration: "Trajanje",
    fieldDesc: "Kratek opis",
    fieldWebsite: "Spletna stran",
    fieldPhoto: "Fotografija delavnice",
    fieldCapacity: "Maks. število udeležencev",
    capacityMeta: (n) => (n === 1 ? "1 oseba" : `do ${n} oseb`),
    loggedAs: "Prijavljen kot",
    nextBtn: "Naprej →",
    backBtn: "← Nazaj",
    submitBtn: "Pošlji v pregled →",
    doneTitle: "Poslano!",
    doneThanks: (name, title, email) => `Hvala, ${name}. Delavnica „${title}" je v pregledu. Obvestilo pričakuj na ${email} v 48 urah.`,
    okBtn: "V redu →",
    // promoted strip
    sponsoredBadge: "★ IZPOSTAVLJENO",
    featuredTitle: "Izpostavljene delavnice",
    featuredSub: "Plačana mesta — izvajalci promovirajo svoje programe.",
    promoteLink: "Želiš izpostaviti svojo delavnico? →",
    sponsored: "IZPOSTAVLJENO",
    // promote modal
    promoteForHosts: "ZA IZVAJALCE",
    promoteTitle: "Izpostavi svojo\ndelavnico.",
    promoteSub: (visitors) => `Mesečno bere <b>${visitors} obiskovalcev</b>. Izpostavljena mesta povečajo obisk tvoje strani do <b>6-krat</b>.`,
    mostChosen: "NAJPOGOSTEJE IZBRANO",
    planBron: "Bron",
    planZlato: "Zlato",
    planDiamant: "Diamant",
    promoteFoot: "Cene so brez DDV. Odpoveš kadarkoli.",
    promoteContact: "likovne.delavnice@yahoo.com",
    choose: (label) => `Izberi ${label}`,
    // review composer
    composerPlaceholder: "Opiši svoje izkušnje z delavnico…",
    cancelBtn: "Prekliči",
    publishReview: "Objavi →",
    mineLabel: "(tvoje)",
    alreadyReviewed: "Že si ocenil",
    // static pages
    staticBackHome: "← Nazaj na vse delavnice",
    footerTerms: "Pogoji uporabe",
    footerPrivacy: "Zasebnost",
    footerGuidelines: "Smernice",
    footerContact: "Kontakt",
  },
  en: {
    // topbar
    live: "live",
    saved: "saved",
    addWorkshop: "+ Add workshop",
    promote: "★ Promote",
    signIn: "Sign in →",
    // user menu
    myWorkshops: "+ Add workshop",
    myFavourites: "♥ Favourites",
    myRatings: "★ My ratings",
    signOut: "Sign out",
    // hero
    heroWord1: "All",
    heroWord2: "art",
    heroWord3: "workshops",
    heroLine2: "in Slovenia,",
    heroWord4: "in one",
    heroWord5: "place.",
    heroLede: (n) => `Find potters in Ljubljana, glassblowers in Rogaška and weavers by Lake Bled. Data from <b>${n} websites</b>, rated by real visitors.`,
    searchPlaceholder: "Search: pottery, Bled, Ana…",
    searchBtn: "Search →",
    statWorkshops: "Workshops",
    statHosts: "Hosts",
    statCities: "Cities",
    statCategories: "Categories",
    // category strip
    browseLbl: "BROWSE",
    all: "All",
    // sidebar
    view: "View",
    list: "List",
    map: "Map",
    mapSlovenia: "Slovenia",
    city: "City",
    clear: "clear",
    price: "Price",
    // feed
    allWorkshops: "All workshops",
    results: (n, cat, city, max) => `${n} results${cat ? ` · ${cat}` : ""}${city ? ` · ${city}` : ""} · up to €${max}`,
    sortFeatured: "Featured first",
    sortPriceAsc: "Price: low to high",
    sortPriceDesc: "Price: high to low",
    sortRating: "Highest rated",
    noResults: "No results. Clear your filters and try again.",
    // cards
    weekLabel: (n) => `WORKSHOP OF THE WEEK`,
    ratings: "ratings",
    // map view
    mapViewTitle: "INTERACTIVE MAP",
    mapViewClick: "Select a city",
    // modal
    hostSection: "HOST",
    rateSection: "RATE THIS WORKSHOP",
    reviewsSection: "REVIEWS",
    loginToRate: "Sign in to rate →",
    yourRating: (n) => `Your rating: ${n}/5 — thank you!`,
    clickToRate: "Click a star to rate",
    communityRatings: (n) => `${n} ${n === 1 ? "rating" : "ratings"}`,
    noReviews: (name) => `No reviews yet. Be the first${name ? ", " + name : ""}.`,
    writeReview: "+ Write a review",
    loginToReview: "+ Sign in to write a review",
    priceLabel: "PRICE",
    perPerson: "/ person",
    btnSaved: "♥ Saved",
    btnSave: "♡ Save",
    visitBtn: (src) => `Visit website →`,
    crawlSignal: (src, when) => `Source: ${src} · Updated ${when}`,
    viewHostProfile: "Host page →",
    // host profile page
    hostBackHome: "← All workshops",
    hostNotFound: "We couldn't find this host or they have no listed workshops.",
    hostWorkshopCountOne: "workshop",
    hostWorkshopCountMany: "workshops",
    hostLocations: "Locations",
    hostMapSection: "LOCATIONS",
    hostMapHint: "Cities where this host runs workshops.",
    hostWorkshopsSection: "WORKSHOPS",
    hostReviewsSection: "REVIEWS",
    hostNoReviews: "No reviews yet for these workshops.",
    hostSocials: "SOCIALS",
    // auth modal
    welcomeBack: "Welcome\nback.",
    createAccount: "Create\naccount.",
    signInSub: "Rate workshops, save favourites and list your studio.",
    signUpSub: "Register to rate workshops and add your own.",
    tabSignIn: "Sign in",
    tabSignUp: "Register",
    fieldName: "Name",
    fieldEmail: "Email",
    fieldPassword: "Password",
    errEmail: "Please enter a valid email address.",
    errName: "Please enter your name.",
    errPassword: "Password must be at least 4 characters.",
    btnSignIn: "Sign in →",
    btnSignUp: "Create account →",
    orDivider: "or",
    googleBtn: "Continue with Google",
    noAccount: "No account yet?",
    hasAccount: "Already have an account?",
    // submit modal
    submitForHosts: "FOR HOSTS",
    submitTitle: "Add your workshop",
    submitSub: "Free to list. Reviewed and published within 48 hours.",
    step1: "1 · Basic info",
    step2: "2 · Details",
    step3: "3 · Submitted",
    fieldWorkshopName: "Workshop name",
    fieldHostName: "Host or studio name",
    fieldCity: "City",
    fieldCategory: "Category",
    fieldPrice: "Price (€)",
    fieldDuration: "Duration",
    fieldDesc: "Short description",
    fieldWebsite: "Website",
    fieldPhoto: "Workshop photo",
    fieldCapacity: "Max. participants",
    capacityMeta: (n) => (n === 1 ? "1 person" : `up to ${n} people`),
    loggedAs: "Signed in as",
    nextBtn: "Next →",
    backBtn: "← Back",
    submitBtn: "Submit for review →",
    doneTitle: "Submitted!",
    doneThanks: (name, title, email) => `Thanks, ${name}. "${title}" is under review. We'll email you at ${email} within 48 hours.`,
    okBtn: "Done →",
    // promoted strip
    sponsoredBadge: "★ FEATURED",
    featuredTitle: "Featured workshops",
    featuredSub: "Paid placements — hosts promoting their programmes.",
    promoteLink: "Want to feature your workshop? →",
    sponsored: "FEATURED",
    // promote modal
    promoteForHosts: "FOR HOSTS",
    promoteTitle: "Feature your\nworkshop.",
    promoteSub: (visitors) => `<b>${visitors} monthly visitors</b>. Featured listings increase clicks to your page by up to <b>6×</b>.`,
    mostChosen: "MOST POPULAR",
    planBron: "Bronze",
    planZlato: "Gold",
    planDiamant: "Diamond",
    promoteFoot: "All prices excl. VAT. Cancel anytime.",
    promoteContact: "likovne.delavnice@yahoo.com",
    choose: (label) => `Choose ${label}`,
    // review composer
    composerPlaceholder: "Describe your experience…",
    cancelBtn: "Cancel",
    publishReview: "Publish →",
    mineLabel: "(yours)",
    alreadyReviewed: "Already reviewed",
    // static pages
    staticBackHome: "← Back to all workshops",
    footerTerms: "Terms of use",
    footerPrivacy: "Privacy",
    footerGuidelines: "Guidelines",
    footerContact: "Contact",
  },
};

function useT() {
  const lang = React.useContext(LangContext);
  return STRINGS[lang] || STRINGS.sl;
}

Object.assign(window, { LangContext, STRINGS, useT });
