Slovak translation

This commit is contained in:
2026-03-11 20:12:01 +02:00
parent 1d7dd5f8d8
commit 99e04419ed
3 changed files with 96 additions and 2 deletions

View File

@@ -62,6 +62,16 @@ export default function Nav() {
> >
{t("nav.language.en")} {t("nav.language.en")}
</button> </button>
<button
type="button"
onClick={() => setLanguage("sk")}
className={`rounded px-2 py-1 text-xs ${language === "sk"
? "bg-[#E3A977] text-[#4C250E]"
: "text-[#F5D1A9] hover:text-[#FFF7EE]"
}`}
>
{t("nav.language.sk")}
</button>
</div> </div>
{session ? ( {session ? (

View File

@@ -13,6 +13,7 @@ const translations = {
"nav.signOut": "Sign Out", "nav.signOut": "Sign Out",
"nav.language.fi": "FI", "nav.language.fi": "FI",
"nav.language.en": "EN", "nav.language.en": "EN",
"nav.language.sk": "SK",
"meta.description": "React + Recoil example", "meta.description": "React + Recoil example",
"home.title": "Home", "home.title": "Home",
"home.heading": "Klapi", "home.heading": "Klapi",
@@ -93,6 +94,7 @@ const translations = {
"nav.signOut": "Kirjaudu ulos", "nav.signOut": "Kirjaudu ulos",
"nav.language.fi": "FI", "nav.language.fi": "FI",
"nav.language.en": "EN", "nav.language.en": "EN",
"nav.language.sk": "SK",
"meta.description": "React + Recoil -esimerkki", "meta.description": "React + Recoil -esimerkki",
"home.title": "Etusivu", "home.title": "Etusivu",
"home.heading": "Klapi", "home.heading": "Klapi",
@@ -166,12 +168,94 @@ const translations = {
"errors.invalidUsernameOrPassword": "errors.invalidUsernameOrPassword":
"Virheellinen käyttäjätunnus tai salasana", "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; } as const;
export type TranslationKey = keyof typeof translations.en; export type TranslationKey = keyof typeof translations.en;
export const normalizeLanguage = (value: unknown): Language => export const normalizeLanguage = (value: unknown): Language =>
value === "fi" ? "fi" : "en"; value === "fi" || value === "sk" ? value : "en";
export const initializeLanguage = (setLanguage: (lang: Language) => void) => { export const initializeLanguage = (setLanguage: (lang: Language) => void) => {
const stored = normalizeLanguage(localStorage.getItem(STORAGE_KEY)); const stored = normalizeLanguage(localStorage.getItem(STORAGE_KEY));

View File

@@ -1,7 +1,7 @@
import { atom } from "recoil"; import { atom } from "recoil";
import type { LokOpenHours } from "~/api"; import type { LokOpenHours } from "~/api";
export type Language = "fi" | "en"; export type Language = "fi" | "en" | "sk";
export type Session = { export type Session = {
username: string; username: string;