diff --git a/ui/src/components/Nav.tsx b/ui/src/components/Nav.tsx index 1463606..b557a2e 100644 --- a/ui/src/components/Nav.tsx +++ b/ui/src/components/Nav.tsx @@ -62,6 +62,16 @@ export default function Nav() { > {t("nav.language.en")} + {session ? ( diff --git a/ui/src/i18n.ts b/ui/src/i18n.ts index 98bb8a7..a721bb9 100644 --- a/ui/src/i18n.ts +++ b/ui/src/i18n.ts @@ -13,6 +13,7 @@ const translations = { "nav.signOut": "Sign Out", "nav.language.fi": "FI", "nav.language.en": "EN", + "nav.language.sk": "SK", "meta.description": "React + Recoil example", "home.title": "Home", "home.heading": "Klapi", @@ -93,6 +94,7 @@ const translations = { "nav.signOut": "Kirjaudu ulos", "nav.language.fi": "FI", "nav.language.en": "EN", + "nav.language.sk": "SK", "meta.description": "React + Recoil -esimerkki", "home.title": "Etusivu", "home.heading": "Klapi", @@ -166,12 +168,94 @@ const translations = { "errors.invalidUsernameOrPassword": "Virheellinen käyttäjätunnus tai salasana", }, + sk: { + "nav.home": "Domov", + "nav.about": "O aplikácii", + "nav.management": "Správa", + "nav.login": "Prihlásiť sa", + "nav.signOut": "Odhlásiť sa", + "nav.language.fi": "FI", + "nav.language.en": "EN", + "nav.language.sk": "SK", + "meta.description": "Ukážka React + Recoil", + "home.title": "Domov", + "home.heading": "Klapi", + "home.subheading": "Administrátorská konzola Livonsaaren Tietokonepaja", + "home.signedInAs": "Ste prihlásený ako", + "home.logoAlt": "logo", + "home.openHours.heading": "Otváracie hodiny Livonsaaren Osuuskauppa", + "home.openHours.latest": "Najnovšie", + "home.openHours.new": "Nová verzia", + "home.openHours.edit": "Upraviť", + "home.openHours.cancel": "Zrušiť", + "home.openHours.editing": "Upravuje sa verzia", + "home.openHours.active": "Aktívne", + "home.openHours.reuse": "Použiť vybrané znova", + "home.openHours.delete": "Odstrániť", + "home.openHours.empty": "Zatiaľ sa nenašli žiadne verzie otváracích hodín", + "home.openHours.name": "Názov verzie", + "home.openHours.nameRequired": "Názov verzie je povinný", + "home.openHours.paragraph1": "Odsek 1", + "home.openHours.paragraph2": "Odsek 2", + "home.openHours.paragraph3": "Odsek 3", + "home.openHours.paragraph4": "Odsek 4", + "home.openHours.kitchenNotice": "Poznámka ku kuchyni", + "home.openHours.submit": "Pridať novú verziu", + "home.openHours.update": "Uložiť zmeny", + "home.openHours.saving": "Ukladá sa...", + "home.openHours.updating": "Ukladajú sa zmeny...", + "home.openHours.saved": "Nová verzia uložená", + "home.openHours.updated": "Verzia bola aktualizovaná", + "home.openHours.deleted": "Verzia bola odstránená", + "about.title": "O aplikácii", + "about.description": + "Livonsaaren Tietokonepaja je lokálny projekt poskytujúci IT služby pre naše milované súostrovie.", + "about.bugReportsPrefix": "Všetky hlásenia chýb môžete poslať na", + "about.apiVersion": "Verzia", + "about.loading": "Načítava sa...", + "login.title": "Klapi", + "login.heading": "Klapi", + "login.subheading": "Administrátorská konzola Livonsaaren Tietokonepaja", + "login.username": "Používateľské meno", + "login.password": "Heslo", + "login.submit": "Odoslať", + "management.title": "Správa používateľov", + "management.heading": "Správa používateľov", + "management.users": "Používatelia", + "management.create": "Vytvoriť používateľa", + "management.edit": "Upraviť používateľa", + "management.update": "Uložiť zmeny", + "management.cancel": "Zrušiť", + "management.delete": "Odstrániť", + "management.username": "Používateľské meno", + "management.password": "Heslo", + "management.displayName": "Zobrazované meno", + "management.added": "Pridané", + "management.updated": "Naposledy aktualizované", + "management.loading": "Načítavajú sa používatelia...", + "management.requiredFields": + "Používateľské meno, zobrazované meno a heslo sú povinné", + "management.loadError": "Nepodarilo sa načítať používateľov", + "management.saveError": "Nepodarilo sa uložiť používateľa", + "management.deleteError": "Nepodarilo sa odstrániť používateľa", + "management.roles": "Roly", + "management.rolesAssign": "Priradiť roly", + "management.rolesNone": "Nie sú priradené žiadne roly", + "notFound.title": "Stránka sa nenašla", + "notFound.heading": "Nenašlo sa", + "notFound.message": "Prepáčte, stránka, ktorú hľadáte, neexistuje", + "notFound.goHome": "Prejsť na domovskú stránku", + "error.title": "Chyba", + "errors.requiredUsernamePassword": "Používateľské meno a heslo sú povinné", + "errors.invalidUsernameOrPassword": + "Neplatné používateľské meno alebo heslo", + }, } as const; export type TranslationKey = keyof typeof translations.en; export const normalizeLanguage = (value: unknown): Language => - value === "fi" ? "fi" : "en"; + value === "fi" || value === "sk" ? value : "en"; export const initializeLanguage = (setLanguage: (lang: Language) => void) => { const stored = normalizeLanguage(localStorage.getItem(STORAGE_KEY)); diff --git a/ui/src/state/appState.ts b/ui/src/state/appState.ts index ced31a5..b422562 100644 --- a/ui/src/state/appState.ts +++ b/ui/src/state/appState.ts @@ -1,7 +1,7 @@ import { atom } from "recoil"; import type { LokOpenHours } from "~/api"; -export type Language = "fi" | "en"; +export type Language = "fi" | "en" | "sk"; export type Session = { username: string;