diff --git a/README.md b/README.md index edb5c98..b609744 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ _BetterShift is a self-hosted shift management application for teams and individ | **Admin Panel** | User management, calendar administration, audit logging | | **Statistics** | Real-time shift tracking with visual charts | | **Export** | Download calendars as ICS or PDF | -| **Localization** | English, French, German, Italian, Spanish | +| **Localization** | English, French, German, Italian, Spanish, Czech | | **PWA** | Installable on mobile and desktop | ## Quick Start diff --git a/lib/locales.ts b/lib/locales.ts index 9aac457..7a04c1d 100644 --- a/lib/locales.ts +++ b/lib/locales.ts @@ -1,10 +1,11 @@ -import { de, enUS, es, fr, it } from "date-fns/locale"; +import { cs, de, enUS, es, fr, it } from "date-fns/locale"; import type { Locale as DateFnsLocale } from "date-fns"; -export const locales = ["de", "en", "es", "fr", "it"] as const; +export const locales = ["cs", "de", "en", "es", "fr", "it"] as const; export type Locale = (typeof locales)[number]; const dateFnsLocales: Record = { + cs: cs, de: de, en: enUS, es: es, diff --git a/messages/cs.json b/messages/cs.json new file mode 100644 index 0000000..bc822a1 --- /dev/null +++ b/messages/cs.json @@ -0,0 +1,819 @@ +{ + "language": { + "cs": "Čeština", + "de": "Němčina", + "en": "Angličtina", + "es": "Španělština", + "fr": "Francouzština", + "it": "Italština" + }, + "common": { + "cancel": "Zrušit", + "save": "Uložit", + "saving": "Ukládání...", + "close": "Zavřít", + "optional": "(volitelné)", + "delete": "Smazat", + "loading": "Načítání...", + "add": "Přidat", + "adding": "Přidávání...", + "or": "nebo", + "next": "Další", + "previous": "Předchozí", + "of": "z", + "unsavedChanges": "Neuložené změny", + "unsavedChangesDescription": "Máte neuložené změny. Opravdu chcete zavřít bez uložení?", + "closeWithoutSaving": "Zavřít bez uložení", + "created": "{item} byl(a) úspěšně vytvořen(a)", + "updated": "{item} byl(a) úspěšně aktualizován(a)", + "deleted": "{item} byl(a) úspěšně smazán(a)", + "createError": "Nepodařilo se vytvořit {item}", + "updateError": "Nepodařilo se aktualizovat {item}", + "deleteError": "Nepodařilo se smazat {item}", + "deleteConfirm": "Opravdu smazat {item} „{name}“?", + "shifts": "Směny", + "success": "Úspěch", + "error": "Chyba", + "fetchError": "Nepodařilo se načíst {item}", + "transferError": "Nepodařilo se převést {item}", + "banError": "Nepodařilo se zablokovat {item}", + "unbanError": "Nepodařilo se odblokovat {item}", + "banned": "{item} byl(a) úspěšně zablokován(a)", + "unbanned": "{item} byl(a) úspěšně odblokován(a)", + "transferred": "{item} byl(a) úspěšně převeden(a)", + "copyError": "Nepodařilo se zkopírovat {item}", + "copied": "{item} zkopírován(a)", + "revokeError": "Nepodařilo se zrušit {item}", + "revoked": "{item} byl(a) úspěšně zrušen(a)", + "passwordReset": "Heslo bylo úspěšně obnoveno", + "passwordResetError": "Nepodařilo se obnovit heslo", + "search": "Hledat...", + "noResults": "Nebyly nalezeny žádné výsledky", + "createdCount": "{count} vytvořeno", + "updatedCount": "{count} aktualizováno", + "deletedCount": "{count} smazáno", + "copy": "Kopírovat", + "yes": "Ano", + "no": "Ne", + "deleteSelected": "Smazat vybrané", + "viewAll": "Zobrazit vše", + "viewDetails": "Zobrazit podrobnosti", + "weekday": { + "monday": "Po", + "tuesday": "Út", + "wednesday": "St", + "thursday": "Čt", + "friday": "Pá", + "saturday": "So", + "sunday": "Ne" + }, + "labels": { + "name": "Jméno", + "email": "E-mail", + "password": "Heslo", + "newPassword": "Nové heslo", + "confirmPassword": "Potvrdit heslo", + "status": "Stav", + "action": "Akce", + "time": "Čas", + "startDate": "Datum začátku", + "endDate": "Datum konce", + "ipAddress": "IP adresa", + "severity": "Závažnost", + "permission": "Oprávnění", + "permissions": { + "admin": "Správce", + "read": "Čtení", + "write": "Zápis", + "none": "Bez přístupu" + }, + "notes": "Poznámky", + "calendar": "Kalendář", + "shifts": "Směny", + "presets": "Předvolby", + "shares": "Sdílení", + "sharedCalendars": "Sdílené kalendáře", + "user": "Uživatel", + "users": "Uživatelé" + }, + "status": { + "active": "Aktivní", + "inactive": "Neaktivní" + }, + "roles": { + "admin": "Správce", + "superadmin": "Superadmin", + "user": "Uživatel" + }, + "time": { + "never": "Nikdy", + "lastActive": "Naposledy aktivní" + }, + "filters": { + "allSeverities": "Všechny závažnosti", + "clearFilters": "Vymazat filtry" + }, + "severity": { + "info": "Informace", + "warning": "Varování", + "error": "Chyba", + "critical": "Kritické" + }, + "stats": { + "statistics": "Statistiky", + "created": "Vytvořeno" + }, + "auth": { + "activeSessions": "Aktivní relace", + "connectedAccounts": "Propojené účty" + }, + "empty": { + "noUsersFound": "Nebyli nalezeni žádní uživatelé" + } + }, + "validation": { + "fileRequired": "Vyberte prosím soubor", + "fileTooLarge": "Soubor je příliš velký. Maximální velikost je {maxSize}.", + "urlRequired": "Zadejte prosím URL", + "urlInvalid": "Neplatný formát URL", + "urlAlreadyExists": "Tato URL již byla přidána", + "passwordRequired": "Heslo je povinné", + "passwordTooShort": "Heslo musí mít alespoň 8 znaků", + "passwordsNoMatch": "Hesla se neshodují" + }, + "form": { + "namePlaceholder": "např. {example}", + "colorLabel": "Barva", + "notesLabel": "Poznámky (volitelné)", + "notesPlaceholder": "Další informace...", + "urlLabel": "URL", + "urlPlaceholder": "https://..." + }, + "app": { + "title": "BetterShift", + "subtitle": "Organizujte své směny" + }, + "calendar": { + "title": "Kalendář", + "create": "Vytvořit nový kalendář", + "createDescription": "Vytvořte nový kalendář pro organizaci svých směn", + "selectDescription": "Vyberte kalendář pro správu svých směn", + "name": "Název kalendáře", + "myCalendars": "Moje kalendáře", + "sharedCalendars": "Sdílené kalendáře", + "tokenCalendars": "Přes přístupový odkaz", + "publicCalendars": "Veřejné kalendáře", + "select": "Váš kalendář BetterShift", + "deleteCalendar": "Smazat kalendář", + "deleteWarning": "Smazány budou také všechny směny, předvolby a poznámky.", + "settings": "Nastavení kalendáře „{name}“", + "settingsDescription": "Přizpůsobte název a barvu", + "compare": "Porovnat kalendáře", + "compareMode": "Režim porovnání", + "exitCompare": "Ukončit porovnání", + "selectToCompare": "Vyberte kalendáře k porovnání", + "selectToCompareDescription": "Vyberte 2–3 kalendáře pro zobrazení vedle sebe", + "compareSelected": "{count} vybráno", + "startComparing": "Zahájit porovnání", + "mobileNotOptimized": "Zobrazení porovnání není optimalizováno pro mobil. Pro nejlepší zážitek použijte prosím větší obrazovku.", + "shareLink": "Sdílet odkaz", + "shareLinkDescription": "Zkopírovat odkaz na zobrazení porovnání", + "browseCalendars": "Sdílené kalendáře", + "browseCalendarsDescription": "Objevujte a spravujte odběry kalendářů", + "subscribe": "Odebírat", + "subscribed": "Odebíráno", + "noPublicCalendars": "Nejsou k dispozici žádné veřejné kalendáře", + "noSharedCalendars": "Zatím s vámi nebyly sdíleny žádné kalendáře", + "noHiddenCalendars": "Žádné skryté kalendáře", + "subscriptionSuccess": "Přihlášeno k odběru {name}", + "unsubscribeSuccess": "Odhlášeno z odběru {name}", + "subscribeTooltip": "Přihlásit se k odběru tohoto kalendáře", + "unsubscribeTooltip": "Odhlásit se z odběru tohoto kalendáře", + "sharedTab": "Sdílené", + "publicTab": "Veřejné", + "hiddenTab": "Skryté", + "publicBadge": "Veřejné", + "showAgain": "Zobrazit znovu" + }, + "color": { + "custom": "Vlastní", + "customTitle": "Vlastní barva", + "customDescription": "Vyberte vlastní barvu pomocí výběru barev" + }, + "note": { + "create": "Vytvořit {item}", + "edit": "Upravit {item}", + "note": "Poznámka", + "placeholder": "např. Ranní směna kvůli odpolední schůzce...", + "hintMobile": "Pro přidání nebo úpravu poznámky či události podržte prst na dni v kalendáři.", + "hintDesktop": "Pro přidání nebo úpravu poznámky či události klikněte na den v kalendáři pravým tlačítkem.", + "type": "Typ", + "typeNote": "Poznámky", + "typeEvent": "Události", + "eventColor": "Barva události", + "eventTitle": "Název události", + "eventPlaceholder": "např. Vánoce, narozeniny...", + "recurring": "Opakování", + "recurringNone": "Neopakovat", + "recurringCustom": "Vlastní", + "recurringEveryWeeks": "Každé {count} týdny", + "recurringEveryMonths": "Každé {count} měsíce", + "customInterval": "Interval", + "every": "Každé", + "weeks": "týdny", + "months": "měsíce", + "multipleEntries": "{count} záznamů", + "noEntries": "Nejsou k dispozici žádné poznámky ani události", + "recurringEditWarning": "Toto je opakující se událost. Změny se projeví u všech výskytů." + }, + "shift": { + "create": "Nová směna", + "createDescription": "Přidejte do kalendáře novou směnu", + "edit": "Upravit směnu", + "editDescription": "Aktualizujte podrobnosti směny", + "date": "Datum", + "startTime": "Čas začátku", + "endTime": "Čas konce", + "titlePlaceholder": "např. Ranní směna", + "titleLabel": "Název", + "allDay": "Celý den", + "allDayShift": "Celodenní směna", + "noShiftsInMonth": "Tento měsíc žádné směny", + "noShiftsInMonthDescription": "Přidejte směny kliknutím na dny v kalendáři výše.", + "shift_one": "směna", + "selectPreset": "Vybrat předvolbu", + "none": "Žádná" + }, + "preset": { + "preset": "Předvolba", + "createNew": "Vytvořit novou předvolbu", + "createYourFirst": "Vytvořte svou první předvolbu", + "edit": "Upravit předvolbu", + "manage": "Spravovat předvolby", + "manageDescription": "Upravte nebo smažte své předvolby směn", + "saveAsPreset": "Uložit jako předvolbu", + "presetName": "Název předvolby", + "presetNamePlaceholder": "např. Ranní směna, večerní směna...", + "noPresets": "Zatím žádné předvolby směn", + "createFirstDescription": "Vytvořte svou první předvolbu pro rychlé přidávání směn do kalendáře. Předvolby uloží vaše často používané časy a podrobnosti směn.", + "deleteConfirm": "Smazat tuto předvolbu? Tím se smažou i všechny směny vytvořené z této předvolby.", + "primaryPresets": "Primární předvolby", + "secondaryPresets": "Sekundární předvolby", + "secondary": "Sekundární", + "markAsSecondary": "Označit jako sekundární (ve výchozím stavu sbalené)", + "hideFromStats": "Skrýt ze statistik", + "hideFromStatsHint": "Vyloučit směny z této předvolby ze statistik", + "showPresets": "Zobrazit předvolby", + "hidePresets": "Skrýt předvolby", + "hiddenFromStats": "Skryto ze statistik", + "cannotAddPresetHint": "Tato předvolba patří jinému kalendáři a nelze ji sem přidat." + }, + "view": { + "settingsTitle": "Nastavení zobrazení", + "settingsDescription": "Přizpůsobte, jak se směny zobrazují ve všech kalendářích", + "shiftsPerDay": "Běžné směny za den", + "shiftsPerDayHint": "Maximální počet běžných směn zobrazených za den", + "externalShiftsPerDay": "Externí směny za den", + "externalShiftsPerDayHint": "Maximální počet směn z externích kalendářů zobrazených za den", + "showAll": "Vše", + "sortOptions": "Možnosti řazení", + "sortBy": "Řadit podle", + "sortByStartTime": "Času začátku", + "sortByCreatedAt": "Data vytvoření", + "sortByTitle": "Názvu (A–Z)", + "sortOrder": "Pořadí", + "sortOrderAsc": "Vzestupně", + "sortOrderDesc": "Sestupně", + "combinedSort": "Řadit všechny směny dohromady", + "combinedSortHint": "Řadit běžné a externí směny dohromady místo odděleně", + "displayOptions": "Možnosti zobrazení", + "showNotes": "Zobrazit poznámky směn", + "showNotesHint": "Zobrazit poznámky směn v mřížce kalendáře", + "showFullTitles": "Zobrazit celé názvy směn", + "showFullTitlesHint": "Zobrazit úplné názvy směn bez zkracování", + "dayHighlighting": "Zvýraznění dnů", + "highlightWeekends": "Zvýraznit víkendy", + "highlightWeekendsHint": "Zvýraznit soboty a neděle barvou", + "customWeekdays": "Vlastní dny v týdnu", + "customWeekdaysHint": "Vyberte jednotlivé dny v týdnu ke zvýraznění", + "monday": "Pondělí", + "tuesday": "Úterý", + "wednesday": "Středa", + "thursday": "Čtvrtek", + "friday": "Pátek", + "saturday": "Sobota", + "sunday": "Neděle", + "highlightColor": "Barva zvýraznění" + }, + "stats": { + "title": "Statistiky směn", + "week": "Týden", + "month": "Měsíc", + "year": "Rok", + "noData": "V tomto období žádné směny", + "hours": "Hodiny", + "overview": "Přehled", + "distribution": "Rozložení", + "comparison": "Porovnání", + "radar": "Radar", + "totalShifts": "Směny celkem", + "totalHours": "Hodiny celkem", + "avgPerShift": "⌀ na směnu", + "shortestShift": "Nejkratší směna", + "longestShift": "Nejdelší směna", + "byType": "Podle typu", + "avgHoursPerShift": "⌀ hodin/směna", + "radarDescription": "Porovnejte hlavní typy směn podle celkových hodin a průměru" + }, + "sync": { + "connected": "Připojeno k serveru", + "disconnected": "Spojení se serverem bylo ztraceno" + }, + "onboarding": { + "welcome": "Vítejte v BetterShift", + "description": "Vytvořte svůj první kalendář pro správu směn.", + "createCalendar": "Vytvořit kalendář" + }, + "guestEmptyState": { + "title": "Nejsou k dispozici žádné veřejné kalendáře", + "description": "Momentálně nejsou sdíleny žádné veřejné kalendáře. Pro vytváření a správu vlastních kalendářů se prosím přihlaste.", + "loginButton": "Přejít na přihlášení" + }, + "footer": { + "version": "Verze", + "github": "GitHub", + "support": "Podpora" + }, + "theme": { + "switchToLight": "Přepnout na světlý režim", + "switchToDark": "Přepnout na tmavý režim" + }, + "externalSync": { + "manageTitle": "Spravovat externí kalendáře", + "manageDescription": "Přidávejte a spravujte více externích kalendářů pro tento kalendář", + "noSyncs": "Zatím nebyly přidány žádné externí kalendáře", + "syncTypeICloud": "iCloud", + "syncTypeGoogle": "Google", + "syncTypeCustom": "Vlastní kalendář", + "importMethod": "Způsob importu", + "importMethodUrl": "URL (lze synchronizovat)", + "importMethodFile": "Nahrát soubor (jednorázový import)", + "importMethodUrlHint": "URL externího kalendáře (iCloud, Google nebo jiné ICS URL)", + "importMethodFileHint": "Jednorázově importovat soubor ICS", + "fileLabel": "Soubor ICS", + "fileSelected": "Soubor vybrán", + "oneTimeImport": "Jednorázový import", + "displayMode": "Zobrazit synchronizované směny", + "displayModeNormal": "Normální (zobrazit všechny směny)", + "displayModeMinimal": "Minimální (zobrazit pouze počet)", + "displayModeHint": "Vyberte, jak se mají synchronizované směny zobrazovat v kalendáři", + "addNewSync": "Přidat nový externí kalendář", + "editSync": "Upravit externí kalendář", + "colorHint": "Vyberte barvu pro všechny importované směny", + "hideCalendar": "Skrýt kalendář", + "hideCalendarHint": "Skrýt směny z tohoto kalendáře", + "hideFromStats": "Skrýt ze statistik", + "hideFromStatsHint": "Vyloučit směny z tohoto kalendáře ze statistik", + "lastSynced": "Naposledy synchronizováno", + "delete": "Smazat externí kalendář", + "deleteConfirm": "Smazat tento externí kalendář? Všechny importované směny budou odstraněny.", + "hintsTitle": "Jak najít URL svého kalendáře", + "hintsDescription": "Vyberte typ kalendáře pro zobrazení pokynů:", + "customCalendar": "Vlastní kalendář", + "urlHintCustom": "Vložte URL svého kalendáře ICS (webcal:// nebo https://)", + "hintICloud": "Otevřete iCloud.com → Kalendář → Klikněte na ikonu sdílení vedle kalendáře → Zapněte „Veřejný kalendář“ → Zkopírujte URL webcal:// a vložte ji sem.", + "hintGoogle": "Otevřete Kalendář Google → Nastavení → Vyberte svůj kalendář → Přejděte na „Tajná adresa ve formátu iCal“ → Zkopírujte URL a vložte ji sem.", + "hintCustom": "Funguje jakýkoli veřejně dostupný kalendář ICS. URL musí začínat https:// nebo webcal:// a končit na .ics. Příklad: https://example.com/calendar.ics", + "autoSyncLabel": "Automatická synchronizace", + "autoSyncHint": "Vyberte, jak často se má tento kalendář automaticky synchronizovat", + "autoSyncManual": "Ručně", + "autoSync24hShort": "24 h" + }, + "syncNotifications": { + "title": "Oznámení o synchronizaci", + "noLogs": "Zatím žádné synchronizace", + "noLogsFiltered": "Žádné synchronizace neodpovídají tomuto filtru", + "statusError": "Chyba", + "syncTypeAuto": "Automatická", + "syncTypeManual": "Ruční", + "noChanges": "Žádné změny", + "errorMessage": "Chybová zpráva", + "filterAll": "Zobrazit vše", + "filterSuccess": "Pouze úspěšné", + "filterError": "Pouze chyby", + "deleteAll": "Smazat vše", + "deleteConfirm": "Opravdu chcete smazat všechny protokoly synchronizace?", + "hasErrors": "Obsahuje chyby", + "markAsRead": "Označit jako přečtené", + "markedAsRead": "Chyby označeny jako přečtené", + "read": "Přečteno" + }, + "changelog": { + "title": "Seznam změn", + "description": "Všechny poznámky k vydání a změny BetterShift", + "noReleases": "Nejsou k dispozici žádná vydání", + "viewOnGitHub": "Zobrazit na GitHubu" + }, + "export": { + "title": "Exportovat kalendář", + "description": "Exportujte svůj kalendář jako soubor ICS nebo PDF", + "exportCalendar": "Exportovat kalendář", + "formatLabel": "Formát exportu", + "icsFormat": "ICS (soubor kalendáře)", + "pdfFormat": "PDF (dokument)", + "icsHint": "Exportujte jako soubor ICS pro import do jiných kalendářových aplikací (Apple Kalendář, Kalendář Google, Outlook atd.)", + "pdfHint": "Exportujte jako dokument PDF pro tisk nebo sdílení", + "rangeLabel": "Časový rozsah", + "rangeAll": "Všechny směny", + "rangeMonth": "Jeden měsíc", + "rangeYear": "Jeden rok", + "monthLabel": "Vyberte měsíc", + "yearLabel": "Vyberte rok", + "download": "Stáhnout", + "multiCalendar": "Exportovat více kalendářů", + "multiCalendarHint": "Zkombinujte směny z více kalendářů do jednoho souboru exportu", + "selectCalendars": "Vyberte kalendáře", + "selectCalendarsDescription": "Vyberte, které kalendáře zahrnout do exportu", + "selectedCount": "{count, plural, =0 {Nevybrány žádné kalendáře} =1 {Vybrán 1 kalendář} few {Vybrány # kalendáře} other {Vybráno # kalendářů}}", + "selectAtLeastOne": "Vyberte prosím alespoň jeden kalendář" + }, + "update": { + "available": "Dostupná aktualizace", + "newVersion": "Je dostupná verze {version}", + "viewChangelog": "Zobrazit seznam změn" + }, + "auth": { + "login": "Přihlásit se", + "loginTitle": "Přihlaste se do BetterShift", + "loginDescription": "Přihlaste se svým účtem nebo použijte jednoho z poskytovatelů níže", + "register": "Registrovat se", + "registerTitle": "Vytvořit účet", + "registerDescription": "Vytvořte si nový účet a začněte", + "logout": "Odhlásit se", + "profile": "Profil", + "profileTitle": "Váš profil", + "profileDescription": "Spravujte nastavení a předvolby svého účtu", + "profileBasicInfoDescription": "Základní informace o vašem účtu", + "changePasswordDescription": "Aktualizujte své heslo pro zabezpečení účtu", + "connectedAccountsDescription": "Spravujte své propojené poskytovatele OAuth", + "dangerZone": "Nebezpečná zóna", + "dangerZoneDescription": "Nevratné akce, které ovlivňují váš účet", + "logoutDescription": "Odhlásit se z aktuální relace", + "deleteAccountDescription": "Trvale smazat váš účet a všechna data", + "noConnectedAccounts": "Zatím žádné propojené účty", + "emailPasswordAuth": "E-mail/heslo", + "emailPlaceholder": "vas@email.cz", + "passwordPlaceholder": "Vaše heslo", + "currentPassword": "Aktuální heslo", + "confirmPasswordLabel": "Potvrzení hesla", + "enterPassword": "Zadejte heslo", + "namePlaceholder": "Vaše jméno", + "continueWith": "Pokračovat přes {provider}", + "alreadyHaveAccount": "Už máte účet?", + "noAccountYet": "Ještě nemáte účet?", + "changePassword": "Změnit heslo", + "deleteAccount": "Smazat účet", + "editProfile": "Upravit profil", + "editProfileDescription": "Aktualizujte své jméno, e-mail a profilový obrázek", + "profileUpdated": "Profil byl úspěšně aktualizován", + "profilePicture": "Profilový obrázek", + "avatarHint": "Max. 5 MB. Podporované formáty: JPEG, PNG, GIF, WebP", + "invalidImageType": "Neplatný typ souboru. Vyberte prosím obrázek.", + "imageTooLarge": "Obrázek je příliš velký. Maximální velikost je 5 MB.", + "avatarUploadFailed": "Nepodařilo se nahrát profilový obrázek", + "uploadingImage": "Nahrávání obrázku...", + "deleteAccountConfirm": "Opravdu chcete smazat svůj účet? Tuto akci nelze vrátit zpět.", + "loginSuccess": "Úspěšně přihlášeno", + "loginError": "Přihlášení se nezdařilo", + "accountBanned": "Účet zablokován", + "continueAsGuest": "Pokračovat jako host", + "registrationDisabled": "Registrace zakázána", + "registrationDisabledDescription": "Registrace nových uživatelů je momentálně zakázána. Pokud potřebujete účet, kontaktujte prosím správce.", + "registerSuccess": "Účet byl úspěšně vytvořen", + "registerError": "Registrace se nezdařila", + "logoutSuccess": "Úspěšně odhlášeno", + "passwordChanged": "Heslo bylo úspěšně změněno", + "accountDeleted": "Účet byl úspěšně smazán", + "emailRequired": "E-mail je povinný", + "nameRequired": "Jméno je povinné", + "emailAlreadyExists": "Tento e-mail se již používá", + "provider": { + "google": "Google", + "github": "GitHub", + "discord": "Discord", + "customOidc": "SSO" + }, + "activeSessionsDescription": "Spravujte svá přihlášená zařízení a relace", + "noActiveSessions": "Žádné aktivní relace", + "browser": "Prohlížeč", + "operatingSystem": "OS", + "logoutAllDevices": "Odhlásit ze všech ostatních zařízení", + "sessionsRevokedCount": "Odhlášeno z {count} zařízení" + }, + "system": { + "unavailable": "Systém není dostupný", + "unavailableDescription": "Systém je momentálně nedostupný kvůli kritické chybě. Zkuste to prosím znovu později nebo kontaktujte správce.", + "unavailableRetry": "Obnovte prosím tuto stránku a zkuste to znovu, nebo se vraťte později." + }, + "guest": { + "viewingAsGuest": "Prohlížíte si jako host", + "bannerMessage": "Tento kalendář si prohlížíte jako host. Pro plný přístup se přihlaste.", + "loginForFullAccess": "Přihlaste se pro plný přístup", + "cannotEdit": "V režimu pouze pro čtení nelze upravovat" + }, + "share": { + "manageSharing": "Spravovat sdílení", + "manageSharingDescription": "Určete, kdo má přístup k „{name}“", + "userShares": "Sdílení s uživateli", + "publicAccess": "Veřejný přístup", + "accessLinks": "Přístupové odkazy", + "public": "Veřejné", + "links": "Odkazy", + "share": "sdílení", + "sharedBy": "Sdílel(a)", + "sharedOn": "Sdíleno dne", + "addUser": "Přidat uživatele", + "addUserDescription": "Vyhledejte uživatele, se kterým chcete tento kalendář sdílet", + "searchUser": "Hledat uživatele", + "searchUserPlaceholder": "Zadejte jméno nebo e-mail...", + "selectedUser": "Vybraný uživatel", + "noShares": "Zatím nemá přístup žádný uživatel", + "noSharesDescription": "Sdílejte tento kalendář s ostatními uživateli pro spolupráci", + "userSharesDescription": "Spravujte, kdo má přístup k tomuto kalendáři", + "publicAccessDescription": "Určete veřejný přístup pro přihlášené uživatele a hosty", + "publicPermissionNoneDesc": "Bez výslovného sdílení nemá ke kalendáři přístup nikdo", + "publicPermissionReadDesc": "Kalendář může zobrazit jakýkoli přihlášený uživatel", + "publicPermissionWriteDesc": "Kalendář může zobrazit a upravovat jakýkoli přihlášený uživatel", + "shareAdded": "Kalendář byl úspěšně sdílen", + "shareUpdated": "Oprávnění bylo úspěšně aktualizováno", + "shareRemoved": "Přístup byl úspěšně odebrán", + "removeAccess": "Odebrat přístup", + "removeShareConfirmTitle": "Odebrat přístup ke kalendáři?", + "removeShareConfirmDesc": "Opravdu chcete odebrat přístup uživateli {user}? Už nebude moci tento kalendář zobrazit ani upravovat.", + "you": "Vy", + "sharedWithYou": "Sdíleno s vámi" + }, + "token": { + "accessLinks": "Přístupové odkazy", + "accessLinksDescription": "Sdílejte tento kalendář pomocí zabezpečených odkazů", + "createLink": "Vytvořit odkaz", + "createFirstLink": "Vytvořit první odkaz", + "noTokensYet": "Zatím žádné přístupové odkazy", + "noTokensDescription": "Vytvořte odkaz pro sdílení, abyste poskytli přístup ostatním uživatelům", + "unnamed": "Bez názvu", + "namePlaceholder": "např. Rodinný odkaz, pracovní tým", + "token": "Token", + "tokenValue": "Hodnota tokenu", + "readOnlyDescription": "Zobrazit směny a poznámky", + "editDescription": "Vytvářet a upravovat směny", + "expiration": "Platnost", + "expires": "Vyprší", + "expired": "Vypršelo", + "expiration1Day": "1 den", + "expiration7Days": "7 dní", + "expiration30Days": "30 dní", + "expirationNever": "Nikdy", + "expiresOn": "Vyprší dne", + "usage": "Použití", + "usedCount": "{count, plural, =0 {Nikdy nepoužito} =1 {Použito jednou} other {Použito #×}}", + "neverUsed": "Nikdy nepoužito", + "enable": "Povolit", + "disable": "Zakázat", + "revoke": "Zrušit", + "revokeConfirm": "Zrušit přístupový odkaz?", + "revokeConfirmDescription": "Opravdu chcete zrušit „{name}“? Kdokoli používající tento odkaz okamžitě ztratí přístup.", + "generate": "Vygenerovat odkaz", + "shareLink": "Sdílet odkaz", + "linkCreated": "Odkaz vytvořen!", + "linkCreatedDescription": "Váš odkaz pro sdílení byl úspěšně vytvořen", + "saveWarning": "Uložte si tento odkaz nyní – znovu se nezobrazí!", + "shareInfo": "Kdokoli s tímto odkazem může přistupovat k vašemu kalendáři s uvedenou úrovní oprávnění", + "accessedViaLink": "Přístup přes odkaz pro sdílení", + "linkName": "Název odkazu", + "createLinkDescription": "Vytvořte sdílitelný odkaz pro poskytnutí přístupu k tomuto kalendáři ostatním" + }, + "rateLimit": { + "title": "Příliš mnoho požadavků", + "message": "Zkuste to prosím znovu za {time}.", + "fallback": "Před dalším pokusem prosím chvíli počkejte.", + "second": "sekunda", + "seconds": "sekund", + "minute": "minuta", + "minutes": "minut", + "hour": "hodina", + "hours": "hodin" + }, + "activityLog": { + "title": "Protokol aktivity", + "description": "Zobrazte aktivitu svého účtu a bezpečnostní události", + "noLogs": "Zatím nebyla zaznamenána žádná aktivita", + "eventType": "Typ události", + "resource": "Zdroj", + "details": "Podrobnosti", + "clearAll": "Vymazat vše", + "refresh": "Obnovit", + "refreshed": "Protokol aktivity byl obnoven", + "confirmClear": "Opravdu chcete vymazat všechny protokoly aktivity? Tuto akci nelze vrátit zpět.", + "totalLogs": "{count} protokolů celkem", + "showingResults": "Zobrazeno {start}–{end} z {total}", + "searchPlaceholder": "Hledat podle akce, zdroje nebo ID...", + "noMetadata": "Nejsou k dispozici žádné další podrobnosti", + "allTypes": "Všechny typy", + "auth": "Ověřování", + "sync": "Synchronizace", + "security": "Zabezpečení", + "calendar": "Kalendář" + }, + "admin": { + "title": "Panel správce", + "adminPanel": "Panel správce", + "dashboard": "Přehled", + "usersMenu": "Uživatelé", + "calendarsMenu": "Kalendáře", + "orphanedCalendars": "Osiřelé kalendáře", + "auditLogs": "Protokoly auditu", + "backToApp": "Zpět do aplikace", + "superadminBadge": "Superadmin", + "expandSidebar": "Rozbalit postranní panel", + "collapseSidebar": "Sbalit postranní panel", + "accessDenied": "Vyžadován přístup správce", + "stats": { + "totalUsers": "Uživatelé celkem", + "totalCalendars": "Kalendáře celkem", + "orphanedCalendars": "Osiřelé kalendáře", + "totalShifts": "Směny celkem", + "activeShares": "Aktivní sdílení", + "recentActivity": "Nedávná aktivita", + "usersByRole": "{superadmin} superadmin, {admin} správců, {user} uživatelů", + "calendarsDescription": "Kalendáře s vlastníky celkem", + "orphanedDescription": "Kalendáře bez vlastníka", + "sharesDescription": "{user} sdílení s uživateli, {token} sdílení tokenem", + "shiftsDescription": "Směny napříč všemi kalendáři celkem", + "last7Days": "Posledních 7 dní", + "needsAttention": "Vyžaduje pozornost" + }, + "systemInfo": { + "title": "Informace o systému", + "description": "Aktuální verze systému a podrobnosti o sestavení", + "version": "Verze", + "buildDate": "Datum sestavení", + "commitHash": "Hash commitu", + "latestVersion": "Nejnovější verze", + "updateAvailable": "Dostupná aktualizace", + "upToDate": "Aktuální", + "viewOnGitHub": "Zobrazit na GitHubu", + "viewRelease": "Zobrazit vydání", + "development": "Vývoj", + "unknown": "Neznámé" + }, + "dashboardDescription": "Vítejte v panelu správce BetterShift", + "orphanedCalendarsWarning": "Zjištěny osiřelé kalendáře", + "orphanedCalendarsWarningDescription": "{count, plural, =1 {Existuje 1 kalendář bez vlastníka} few {Existují # kalendáře bez vlastníka} other {Existuje # kalendářů bez vlastníka}}. Přiřaďte je prosím uživatelům.", + "manageOrphanedCalendars": "Spravovat osiřelé kalendáře", + "recentActivityDescription": "Nejnovější protokoly aktivity související se správou a zabezpečením", + "statsFetchError": "Nepodařilo se načíst statistiky", + "userManagement": "Správa uživatelů", + "userManagementDescription": "Spravujte uživatelské účty a oprávnění", + "searchUsers": "Hledat podle jména nebo e-mailu...", + "allRoles": "Všechny role", + "allStatuses": "Všechny stavy", + "banned": "Zablokováno", + "role": "Role", + "calendarsCount": "Kalendáře", + "page": "stránka", + "usersCount": "{count, plural, =0 {Žádní uživatelé} =1 {1 uživatel} few {# uživatelé} other {# uživatelů}}", + "neverActive": "Nikdy", + "editUser": "Upravit uživatele", + "editUserDescription": "Aktualizujte informace a oprávnění uživatele", + "userDetails": "Podrobnosti o uživateli", + "userDetailsDescription": "Zobrazit podrobné informace o uživateli", + "ownedCalendars": "Vlastněné kalendáře", + "joined": "Připojil(a) se", + "banUser": "Zablokovat uživatele", + "banUserConfirm": "Zablokovat uživatele {name}?", + "banWarning": "Uživatel bude okamžitě odhlášen a nebude se moci přihlásit, dokud nebude odblokován.", + "banReason": "Důvod zablokování", + "banReasonPlaceholder": "Zadejte důvod zablokování tohoto uživatele...", + "permanentBan": "Trvalé zablokování", + "banExpires": "Zablokování vyprší", + "confirmBan": "Zablokovat uživatele", + "unbanUser": "Odblokovat uživatele", + "unbanUserConfirm": "Odblokovat uživatele {name}?", + "originalBanReason": "Původní důvod zablokování", + "confirmUnban": "Odblokovat uživatele", + "deleteUser": "Smazat uživatele", + "deleteUserConfirm": "Smazat uživatele {name}?", + "deleteWarning": "Tím se trvale smažou všechny kalendáře, směny, poznámky a sdílení vlastněné tímto uživatelem.", + "deleteUnderstood": "Rozumím, že tuto akci nelze vrátit zpět", + "deleteConfirmation": "Pro potvrzení napište „{name}“", + "deleteConfirmationHint": "Pro potvrzení smazání napište přesné uživatelské jméno", + "confirmDelete": "Smazat uživatele", + "resetPassword": "Obnovit heslo", + "resetPasswordFor": "Obnovit heslo pro {name}", + "passwordResetWarning": "Nebude odeslán žádný e-mail. O novém heslu musíte uživatele informovat ručně.", + "passwordResetSecurityNote": "Toto heslo bude okamžitě uloženo. Zkopírujte si jej před zavřením tohoto dialogu.", + "generatePassword": "Vygenerovat náhodné heslo", + "passwordPlaceholder": "Minimálně 8 znaků", + "confirmPasswordPlaceholder": "Zadejte heslo znovu", + "copyPassword": "Zkopírovat heslo do schránky", + "setPassword": "Nastavit heslo", + "bannedUntil": "Zablokováno do {date}", + "bannedPermanently": "Zablokováno trvale", + "userNotFound": "Uživatel nenalezen", + "namePlaceholder": "Zadejte celé jméno uživatele", + "emailPlaceholder": "uzivatel@example.com", + "roleChangeWarning": "Změna role uživatele okamžitě ovlivní jeho oprávnění", + "calendars": { + "title": "Správa kalendářů", + "description": "Spravujte všechny kalendáře v systému", + "owner": "Vlastník", + "updated": "Aktualizováno", + "guestPermission": "Oprávnění hosta", + "orphaned": "Osiřelé", + "noOwner": "Nepřiřazen žádný vlastník", + "currentOwner": "Aktuální vlastník", + "allStatuses": "Všechny kalendáře", + "orphanedOnly": "Pouze osiřelé", + "withOwner": "S vlastníkem", + "searchPlaceholder": "Hledat podle názvu...", + "calendarsCount": "{count, plural, =0 {Žádné kalendáře} =1 {1 kalendář} few {# kalendáře} other {# kalendářů}}", + "selectedCount": "{count, plural, =1 {1 kalendář vybrán} few {# kalendáře vybrány} other {# kalendářů vybráno}}", + "transferSelected": "Převést vybrané", + "clearSelection": "Zrušit výběr", + "noCalendarsFound": "Nebyly nalezeny žádné kalendáře", + "noSearchResults": "Vašemu hledání neodpovídají žádné kalendáře", + "orphanedWarning": "{count, plural, =1 {1 osiřelý kalendář} few {# osiřelé kalendáře} other {# osiřelých kalendářů}} vyžaduje přiřazení vlastníka", + "orphanedWarningDescription": "Přiřaďte prosím tyto kalendáře uživatelům, nebo je smažte.", + "editCalendar": "Upravit kalendář", + "transferOwnership": "Převést vlastnictví", + "deleteCalendar": "Smazat kalendář", + "calendarDetails": "Podrobnosti o kalendáři", + "calendarDetailsDescription": "Zobrazit podrobné informace o kalendáři", + "userShares": "uživatel", + "tokenShares": "token", + "userSharesList": "Sdílení s uživateli", + "tokenSharesList": "Sdílení tokenem", + "externalSyncs": "Externí synchronizace", + "externalSyncsShort": "Synchr.", + "lastSynced": "Naposledy synchronizováno", + "quickActions": "Rychlé akce", + "editCalendarDescription": "Aktualizovat informace o kalendáři", + "namePlaceholder": "Zadejte název kalendáře", + "guestPermissionHint": "Určuje veřejný přístup k tomuto kalendáři", + "transferSingleDescription": "Převést vlastnictví „{name}“", + "transferMultipleDescription": "{count, plural, =1 {1 kalendář bude převeden} few {# kalendáře budou převedeny} other {# kalendářů bude převedeno}}", + "calendarsToTransfer": "Kalendáře k převedení", + "calendarToTransfer": "Kalendář k převedení", + "selectNewOwner": "Vyberte nového vlastníka", + "searchUserPlaceholder": "Hledat podle jména nebo e-mailu...", + "searchUserHint": "Pro hledání zadejte alespoň 2 znaky", + "newOwner": "Nový vlastník", + "transferButton": "Převést vlastnictví", + "deleteCalendarConfirm": "Smazat kalendář „{name}“?", + "deleteWarning": "Tím se trvale smažou všechny směny, poznámky, předvolby, sdílení a externí synchronizace spojené s tímto kalendářem.", + "deleteUnderstood": "Rozumím, že tuto akci nelze vrátit zpět", + "deleteConfirmation": "Pro potvrzení napište „{name}“", + "deleteConfirmationHint": "Pro potvrzení smazání napište přesný název kalendáře", + "confirmDelete": "Smazat kalendář", + "bulkDeleteConfirm": "{count, plural, =1 {Smazat 1 kalendář?} few {Smazat # kalendáře?} other {Smazat # kalendářů?}}", + "bulkDeleteWarning": "Tím se trvale smažou všechny směny, poznámky, předvolby, sdílení a externí synchronizace těchto kalendářů.", + "calendarsToDelete": "Kalendáře ke smazání", + "andMore": "... a {count} dalších", + "calendarsDeleted": "{count, plural, =1 {1 kalendář smazán} few {# kalendáře smazány} other {# kalendářů smazáno}}", + "calendarsTransferred": "{count, plural, =1 {1 kalendář převeden} few {# kalendáře převedeny} other {# kalendářů převedeno}}" + }, + "auditLogsDescription": "Spravovat všechny protokoly", + "allActions": "Všechny akce", + "adminActions": "Akce správce", + "calendarActions": "Akce kalendáře", + "authActions": "Ověřování", + "securityActions": "Zabezpečení", + "searchLogs": "Hledat akci, metadata...", + "showingLogs": "Zobrazeno {from} až {to} z {total} protokolů", + "timestamp": "Časové razítko", + "userAgent": "User Agent", + "metadata": "Metadata", + "noLogsFound": "Nebyly nalezeny žádné protokoly auditu", + "deleteOldLogs": "Smazat staré protokoly", + "deleteLogsDescription": "Smazat protokoly auditu starší než určité datum. Tuto akci nelze vrátit zpět.", + "deleteLogsBefore": "Smazat protokoly starší než", + "deleteLogsBeforeHint": "Všechny protokoly před tímto datem budou trvale smazány", + "deleteLogsWarning": "Tato akce je trvalá a nelze ji vrátit zpět. Všechny protokoly auditu před vybraným datem budou smazány z databáze.", + "confirmPermanentDeletion": "Rozumím, že protokoly auditu budou trvale smazány", + "pleaseSelectDate": "Vyberte prosím datum", + "pleaseConfirmDeletion": "Potvrďte prosím smazání", + "willDeleteLogsOlderThan": "Všechny protokoly starší než {date} budou smazány", + "preview": "Náhled", + "auditLogDetails": "Podrobnosti protokolu auditu", + "resourceType": "Typ zdroje", + "resourceId": "ID zdroje", + "logId": "ID protokolu", + "userVisible": "Viditelné pro uživatele", + "unknownUser": "Neznámý uživatel", + "systemAction": "Systém", + "selectedLogs": "{count} vybráno", + "clearSelection": "Zrušit výběr", + "deleteSelectedLogsDescription": "Smazat {count, plural, one {# vybraný protokol} few {# vybrané protokoly} other {# vybraných protokolů}}. Tuto akci nelze vrátit zpět.", + "willDeleteSelectedLogs": "{count, plural, one {# protokol} few {# protokoly} other {# protokolů}} bude trvale smazáno" + } +} diff --git a/messages/de.json b/messages/de.json index 7f0e815..87d4363 100644 --- a/messages/de.json +++ b/messages/de.json @@ -1,5 +1,6 @@ { "language": { + "cs": "Tschechisch", "de": "Deutsch", "en": "Englisch", "es": "Spanisch", diff --git a/messages/en.json b/messages/en.json index 57fc591..de8ff76 100644 --- a/messages/en.json +++ b/messages/en.json @@ -1,5 +1,6 @@ { "language": { + "cs": "Czech", "de": "German", "en": "English", "es": "Spanish", diff --git a/messages/es.json b/messages/es.json index 35ba1a6..3883f69 100644 --- a/messages/es.json +++ b/messages/es.json @@ -1,5 +1,6 @@ { "language": { + "cs": "Checo", "de": "Alemán", "en": "Inglés", "es": "Español", diff --git a/messages/fr.json b/messages/fr.json index b02733b..2c66668 100755 --- a/messages/fr.json +++ b/messages/fr.json @@ -1,5 +1,6 @@ { "language": { + "cs": "Tchèque", "de": "Allemand", "en": "Anglais", "es": "Espagnol", diff --git a/messages/it.json b/messages/it.json index 5979548..e270853 100644 --- a/messages/it.json +++ b/messages/it.json @@ -1,5 +1,6 @@ { "language": { + "cs": "Ceco", "de": "Tedesco", "en": "Inglese", "es": "Spagnolo",