From a9948499e4a626f058517f077873fb5fa923096e Mon Sep 17 00:00:00 2001 From: Numira Date: Mon, 30 Mar 2026 09:24:52 +0200 Subject: [PATCH] Add files via upload Added support for Czech language (complete translation of all strings) --- client/src/i18n/translations/cs.ts | 802 +++++++++++++++++++++++++++++ 1 file changed, 802 insertions(+) create mode 100644 client/src/i18n/translations/cs.ts diff --git a/client/src/i18n/translations/cs.ts b/client/src/i18n/translations/cs.ts new file mode 100644 index 0000000..a470c36 --- /dev/null +++ b/client/src/i18n/translations/cs.ts @@ -0,0 +1,802 @@ +const cs: Record = { + // Společné (Common) + 'common.save': 'Uložit', + 'common.cancel': 'Zrušit', + 'common.delete': 'Smazat', + 'common.edit': 'Upravit', + 'common.add': 'Přidat', + 'common.loading': 'Načítání...', + 'common.error': 'Chyba', + 'common.back': 'Zpět', + 'common.all': 'Vše', + 'common.close': 'Zavřít', + 'common.open': 'Otevřít', + 'common.upload': 'Nahrát', + 'common.search': 'Hledat', + 'common.confirm': 'Potvrdit', + 'common.ok': 'OK', + 'common.yes': 'Ano', + 'common.no': 'Ne', + 'common.nebo': 'nebo', + 'common.none': 'Žádné', + 'common.date': 'Datum', + 'common.rename': 'Přejmenovat', + 'common.name': 'Jméno', + 'common.email': 'E-mail', + 'common.password': 'Heslo', + 'common.saving': 'Ukládání...', + 'common.update': 'Aktualizovat', + 'common.change': 'Změnit', + 'common.uploading': 'Nahrávání…', + 'common.backToPlanning': 'Zpět k plánování', + 'common.reset': 'Resetovat', + + // Navigační lišta (Navbar) + 'nav.trip': 'Cesta', + 'nav.share': 'Sdílet', + 'nav.settings': 'Nastavení', + 'nav.admin': 'Administrace', + 'nav.logout': 'Odhlásit se', + 'nav.lightMode': 'Světlý režim', + 'nav.darkMode': 'Tmavý režim', + 'nav.autoMode': 'Automatický režim', + 'nav.administrator': 'Administrátor', + 'nav.myTrips': 'Moje cesty', + + // Přehled (Dashboard) + 'dashboard.title': 'Moje cesty', + 'dashboard.subtitle.loading': 'Načítání cest...', + 'dashboard.subtitle.cest': '{count} cest ({archived} archivováno)', + 'dashboard.subtitle.empty': 'Začněte svou první cestu', + 'dashboard.subtitle.activeOne': '{count} aktivní cesta', + 'dashboard.subtitle.activeMany': '{count} aktivních cest', + 'dashboard.subtitle.archivedSuffix': ' · {count} archivováno', + 'dashboard.newTrip': 'Nová cesta', + 'dashboard.gridView': 'Mřížka', + 'dashboard.listView': 'Seznam', + 'dashboard.currency': 'Měna', + 'dashboard.timezone': 'Časová pásma', + 'dashboard.localTime': 'Místní čas', + 'dashboard.timezoneCustomTitle': 'Vlastní pásmo', + 'dashboard.timezoneCustomLabelPlaceholder': 'Popisek (volitelné)', + 'dashboard.timezoneCustomTzPlaceholder': 'např. America/New_York', + 'dashboard.timezoneCustomAdd': 'Přidat', + 'dashboard.timezoneCustomErrorEmpty': 'Zadejte identifikátor pásma', + 'dashboard.timezoneCustomErrorInvalid': 'Neplatné pásmo. Použijte formát jako např. Europe/Prague', + 'dashboard.timezoneCustomErrorDuplicate': 'Již bylo přidáno', + 'dashboard.emptyTitle': 'Zatím žádné cesty', + 'dashboard.emptyText': 'Vytvořte svou první cestu a začněte plánovat!', + 'dashboard.emptyButton': 'Vytvořit první cestu', + 'dashboard.nextTrip': 'Další cesta', + 'dashboard.shared': 'Sdílené', + 'dashboard.sharedBy': 'Sdílí {name}', + 'dashboard.days': 'Dní', + 'dashboard.places': 'Míst', + 'dashboard.archive': 'Archivovat', + 'dashboard.restore': 'Obnovit', + 'dashboard.archived': 'Archivováno', + 'dashboard.status.ongoing': 'Probíhající', + 'dashboard.status.today': 'Dnes', + 'dashboard.status.tomorrow': 'Zítra', + 'dashboard.status.past': 'Proběhlé', + 'dashboard.status.daysLeft': 'zbývá {count} dní', + 'dashboard.toast.loadError': 'Nepodařilo se načíst cesty', + 'dashboard.toast.created': 'Cesta byla úspěšně vytvořena!', + 'dashboard.toast.createError': 'Nepodařilo se vytvořit cestu', + 'dashboard.toast.updated': 'Cesta byla aktualizována!', + 'dashboard.toast.updateError': 'Nepodařilo se aktualizovat cestu', + 'dashboard.toast.deleted': 'Cesta byla smazána', + 'dashboard.toast.deleteError': 'Nepodařilo se smazat cestu', + 'dashboard.toast.archived': 'Cesta byla archivována', + 'dashboard.toast.archiveError': 'Nepodařilo se archivovat cestu', + 'dashboard.toast.restored': 'Cesta byla obnovena', + 'dashboard.toast.restoreError': 'Nepodařilo se obnovit cestu', + 'dashboard.confirm.delete': 'Smazat cestu „{title}“? Všechna místa a plány budou trvale smazány.', + 'dashboard.editTrip': 'Upravit cestu', + 'dashboard.createTrip': 'Vytvořit novou cestu', + 'dashboard.tripTitle': 'Název', + 'dashboard.tripTitlePlaceholder': 'např. Léto v Japonsku', + 'dashboard.tripDescription': 'Popis', + 'dashboard.tripDescriptionPlaceholder': 'O čem je tato cesta?', + 'dashboard.startDate': 'Datum začátku', + 'dashboard.endDate': 'Datum konce', + 'dashboard.noDateHint': 'Datum nezadáno – výchozí délka nastavena na 7 dní. Toto lze kdykoli změnit.', + 'dashboard.coverImage': 'Úvodní obrázek', + 'dashboard.addCoverImage': 'Vybrat úvodní obrázek (nebo přetáhnout sem)', + 'dashboard.addMembers': 'Spolucestující', + 'dashboard.addMember': 'Přidat člena', + 'dashboard.coverSaved': 'Úvodní obrázek uložen', + 'dashboard.coverUploadError': 'Nahrávání se nezdařilo', + 'dashboard.coverRemoveError': 'Odstranění se nezdařilo', + 'dashboard.titleRequired': 'Název je povinný', + 'dashboard.endDateError': 'Datum konce musí být po datu začátku', + + // Nastavení (Settings) + 'settings.title': 'Nastavení', + 'settings.subtitle': 'Upravte své osobní nastavení', + 'settings.map': 'Mapy', + 'settings.mapTemplate': 'Šablona mapy', + 'settings.mapTemplatePlaceholder.select': 'Vyberte šablonu...', + 'settings.mapDefaultHint': 'Ponechte prázdné pro OpenStreetMap (výchozí)', + 'settings.mapTemplatePlaceholder': 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', + 'settings.mapHint': 'URL šablony pro mapové dlaždice', + 'settings.latitude': 'Zeměpisná šířka', + 'settings.longitude': 'Zeměpisná délka', + 'settings.saveMap': 'Uložit nastavení mapy', + 'settings.apiKeys': 'API klíče', + 'settings.mapsKey': 'Google Maps API klíč', + 'settings.mapsKeyHint': 'Pro vyhledávání míst. Vyžaduje Places API (New). Získáte na console.cloud.google.com', + 'settings.weatherKey': 'OpenWeatherMap API klíč', + 'settings.weatherKeyHint': 'Pro předpověď počasí. Zdarma na openweathermap.org/api', + 'settings.keyPlaceholder': 'Vložte klíč...', + 'settings.configured': 'Nastaveno', + 'settings.saveKeys': 'Uložit klíče', + 'settings.display': 'Zobrazení', + 'settings.colorMode': 'Barevné schéma', + 'settings.light': 'Světlé', + 'settings.dark': 'Tmavé', + 'settings.auto': 'Automatické', + 'settings.language': 'Jazyk', + 'settings.temperature': 'Jednotky teploty', + 'settings.timeFormat': 'Formát času', + 'settings.routeCalculation': 'Výpočet trasy', + 'settings.on': 'Zapnuto', + 'settings.off': 'Vypnuto', + 'settings.account': 'Účet', + 'settings.username': 'Uživatelské jméno', + 'settings.email': 'E-mail', + 'settings.role': 'Role', + 'settings.roleAdmin': 'Administrátor', + 'settings.oidcLinked': 'Propojeno přes', + 'settings.changePassword': 'Změnit heslo', + 'settings.currentPassword': 'Současné heslo', + 'settings.currentPasswordRequired': 'Současné heslo je vyžadováno', + 'settings.newPassword': 'Nové heslo', + 'settings.confirmPassword': 'Potvrdit nové heslo', + 'settings.updatePassword': 'Aktualizovat heslo', + 'settings.passwordRequired': 'Zadejte prosím současné i nové heslo', + 'settings.passwordTooShort': 'Heslo musí mít alespoň 8 znaků', + 'settings.passwordMismatch': 'Hesla se neshodují', + 'settings.passwordWeak': 'Heslo musí obsahovat velké a malé písmeno a číslici', + 'settings.passwordChanged': 'Heslo bylo úspěšně změněno', + 'settings.deleteAccount': 'Smazat účet', + 'settings.deleteAccountTitle': 'Smazat váš účet?', + 'settings.deleteAccountWarning': 'Váš účet a všechny vaše cesty, místa a soubory budou trvale smazány. Tuto akci nelze vrátit.', + 'settings.deleteAccountConfirm': 'Smazat natrvalo', + 'settings.deleteBlockedTitle': 'Účet nelze smazat', + 'settings.deleteBlockedMessage': 'Jste jediným administrátorem. Před smazáním svého účtu předejte roli administrátora jinému uživateli.', + 'settings.roleUser': 'Uživatel', + 'settings.saveProfile': 'Uložit profil', + 'settings.toast.mapSaved': 'Nastavení map uloženo', + 'settings.toast.keysSaved': 'API klíče uloženy', + 'settings.toast.displaySaved': 'Nastavení zobrazení uloženo', + 'settings.toast.profileSaved': 'Profil byl uložen', + 'settings.uploadAvatar': 'Nahrát profilový obrázek', + 'settings.removeAvatar': 'Odebrat profilový obrázek', + 'settings.avatarUploaded': 'Profilový obrázek byl aktualizován', + 'settings.avatarRemoved': 'Profilový obrázek byl odstraněn', + 'settings.avatarError': 'Nahrávání se nezdařilo', + 'settings.mfa.title': 'Dvoufaktorové ověření (2FA)', + 'settings.mfa.description': 'Přidá druhý stupeň zabezpečení při přihlašování e-mailem a heslem. Použijte aplikaci (Google Authenticator, Authy apod.).', + 'settings.mfa.enabled': '2FA je pro váš účet aktivní.', + 'settings.mfa.disabled': '2FA není aktivní.', + 'settings.mfa.setup': 'Nastavit autentizační aplikaci', + 'settings.mfa.scanQr': 'Naskenujte tento QR kód ve vaší aplikaci nebo zadejte kód ručně.', + 'settings.mfa.secretLabel': 'Tajný klíč (pro ruční zadání)', + 'settings.mfa.codePlaceholder': '6místný kód', + 'settings.mfa.enable': 'Zapnout 2FA', + 'settings.mfa.cancelSetup': 'Zrušit', + 'settings.mfa.disableTitle': 'Vypnout 2FA', + 'settings.mfa.disableHint': 'Zadejte své heslo k účtu a aktuální kód z aplikace.', + 'settings.mfa.disable': 'Vypnout 2FA', + 'settings.mfa.toastEnabled': 'Dvoufaktorové ověření bylo zapnuto', + 'settings.mfa.toastDisabled': 'Dvoufaktorové ověření bylo vypnuto', + 'settings.mfa.demoBlocked': 'Není k dispozici v demo režimu', + + // Přihlášení (Login) + 'login.error': 'Přihlášení se nezdařilo. Zkontrolujte prosím své údaje.', + 'login.tagline': 'Vaše cesty.\nVáš plán.', + 'login.description': 'Plánujte cesty společně s interaktivními mapami, rozpočty a synchronizací v reálném čase.', + 'login.features.maps': 'Interaktivní mapy', + 'login.features.mapsDesc': 'Google Places, trasy a shlukování bodů', + 'login.features.realtime': 'Synchronizace v reálném čase', + 'login.features.realtimeDesc': 'Plánujte společně přes WebSocket', + 'login.features.budget': 'Sledování rozpočtu', + 'login.features.budgetDesc': 'Kategorie, grafy a náklady na osobu', + 'login.features.collab': 'Spolupráce', + 'login.features.collabDesc': 'Více uživatelů se sdílenými cestami', + 'login.features.packing': 'Seznamy věcí', + 'login.features.packingDesc': 'Kategorie, pokrok v balení a návrhy', + 'login.features.bookings': 'Rezervace', + 'login.features.bookingsDesc': 'Lety, hotely, restaurace a další', + 'login.features.files': 'Dokumenty', + 'login.features.filesDesc': 'Nahrávejte a spravujte dokumenty', + 'login.features.routes': 'Chytré trasy', + 'login.features.routesDesc': 'Automatická optimalizace a export do Google Maps', + 'login.selfHosted': 'Self-hosted · Open Source · Vaše data zůstávají u vás', + 'login.title': 'Přihlásit se', + 'login.subtitle': 'Vítejte zpět', + 'login.signingIn': 'Přihlašování…', + 'login.signIn': 'Přihlásit se', + 'login.createAdmin': 'Vytvořit účet administrátora', + 'login.createAdminHint': 'Nastavte první administrátorský účet pro TREK.', + 'login.createAccount': 'Vytvořit účet', + 'login.createAccountHint': 'Zaregistrujte si nový účet.', + 'login.creating': 'Vytváření…', + 'login.noAccount': 'Nemáte účet?', + 'login.hasAccount': 'Již máte účet?', + 'login.register': 'Registrovat se', + 'login.emailPlaceholder': 'vas@email.cz', + 'login.username': 'Uživatelské jméno', + 'login.oidc.registrationDisabled': 'Registrace je zakázána. Kontaktujte svého administrátora.', + 'login.oidc.noEmail': 'Od poskytovatele nebyl přijat žádný e-mail.', + 'login.oidc.tokenFailed': 'Ověření se nezdařilo.', + 'login.oidc.invalidState': 'Neplatná relace. Zkuste to prosím znovu.', + 'login.demoFailed': 'Přihlášení do dema se nezdařilo', + 'login.oidcSignIn': 'Přihlásit se přes {name}', + 'login.oidcOnly': 'Ověřování heslem je zakázáno. Přihlaste se prosím přes SSO poskytovatele.', + 'login.demoHint': 'Vyzkoušejte demo – registrace není nutná', + 'login.mfaTitle': 'Dvoufaktorové ověření', + 'login.mfaSubtitle': 'Zadejte 6místný kód z vaší autentizační aplikace.', + 'login.mfaCodeLabel': 'Ověřovací kód', + 'login.mfaCodeRequired': 'Zadejte kód z aplikace.', + 'login.mfaHint': 'Otevřete Google Authenticator, Authy nebo jinou TOTP aplikaci.', + 'login.mfaBack': '← Zpět k přihlášení', + 'login.mfaVerify': 'Ověřit', + + // Registrace (Register) + 'register.passwordMismatch': 'Hesla se neshodují', + 'register.passwordTooShort': 'Heslo musí mít alespoň 6 znaků', + 'register.failed': 'Registrace se nezdařila', + 'register.getStarted': 'Začínáme', + 'register.subtitle': 'Vytvořte si účet a začněte plánovat svou vysněnou cestu.', + 'register.feature1': 'Neomezené plány cest', + 'register.feature2': 'Zobrazení na interaktivní mapě', + 'register.feature3': 'Správa míst a kategorií', + 'register.feature4': 'Sledování rezervací', + 'register.feature5': 'Vytváření seznamů věcí', + 'register.feature6': 'Ukládání fotek a souborů', + 'register.createAccount': 'Vytvořit účet', + 'register.startPlanning': 'Začít plánovat', + 'register.minChars': 'Min. 6 znaků', + 'register.confirmPassword': 'Potvrdit heslo', + 'register.repeatPassword': 'Heslo znovu', + 'register.registering': 'Registrace...', + 'register.register': 'Registrovat se', + 'register.hasAccount': 'Již máte účet?', + 'register.signIn': 'Přihlásit se', + + // Administrace (Admin) + 'admin.title': 'Administrace', + 'admin.subtitle': 'Správa uživatelů a systémová nastavení', + 'admin.tabs.users': 'Uživatelé', + 'admin.tabs.categories': 'Kategorie', + 'admin.tabs.backup': 'Zálohování', + 'admin.stats.users': 'Uživatelé', + 'admin.stats.cest': 'Cesty', + 'admin.stats.places': 'Místa', + 'admin.stats.photos': 'Fotky', + 'admin.stats.files': 'Soubory', + 'admin.table.user': 'Uživatel', + 'admin.table.email': 'E-mail', + 'admin.table.role': 'Role', + 'admin.table.created': 'Vytvořeno', + 'admin.table.lastLogin': 'Poslední přihlášení', + 'admin.table.actions': 'Akce', + 'admin.you': '(Vy)', + 'admin.editUser': 'Upravit uživatele', + 'admin.newPassword': 'Nové heslo', + 'admin.newPasswordHint': 'Ponechte prázdné pro zachování současného hesla', + 'admin.deleteUser': 'Smazat uživatele „{name}“? Všechny jeho cesty budou trvale smazány.', + 'admin.deleteUserTitle': 'Smazat uživatele', + 'admin.newPasswordPlaceholder': 'Zadejte nové heslo…', + 'admin.toast.loadError': 'Nepodařilo se načíst data administrace', + 'admin.toast.userUpdated': 'Uživatel byl aktualizován', + 'admin.toast.updateError': 'Aktualizace se nezdařila', + 'admin.toast.userDeleted': 'Uživatel byl smazán', + 'admin.toast.deleteError': 'Smazání se nezdařilo', + 'admin.toast.cannotDeleteSelf': 'Nemůžete smazat svůj vlastní účet', + 'admin.toast.userCreated': 'Uživatel byl vytvořen', + 'admin.toast.createError': 'Nepodařilo se vytvořit uživatele', + 'admin.toast.fieldsRequired': 'Uživatelské jméno, e-mail a heslo jsou povinné', + 'admin.createUser': 'Vytvořit uživatele', + 'admin.invite.title': 'Pozvánky', + 'admin.invite.subtitle': 'Vytvářejte jednorázové registrační odkazy', + 'admin.invite.create': 'Vytvořit odkaz', + 'admin.invite.createAndCopy': 'Vytvořit a zkopírovat', + 'admin.invite.empty': 'Zatím nebyly vytvořeny žádné pozvánky', + 'admin.invite.maxUses': 'Max. použití', + 'admin.invite.expiry': 'Vyprší za', + 'admin.invite.uses': 'použito', + 'admin.invite.expiresAt': 'vyprší', + 'admin.invite.createdBy': 'vytvořil', + 'admin.invite.active': 'Aktivní', + 'admin.invite.expired': 'Expirované', + 'admin.invite.usedUp': 'Využito', + 'admin.invite.copied': 'Odkaz byl zkopírován do schránky', + 'admin.invite.copyLink': 'Kopírovat odkaz', + 'admin.invite.deleted': 'Pozvánka smazána', + 'admin.invite.createError': 'Nepodařilo se vytvořit pozvánku', + 'admin.invite.deleteError': 'Nepodařilo se smazat pozvánku', + 'admin.tabs.settings': 'Nastavení', + 'admin.allowRegistration': 'Povolit registraci', + 'admin.allowRegistrationHint': 'Noví uživatelé se mohou sami registrovat', + 'admin.apiKeys': 'API klíče', + 'admin.apiKeysHint': 'Volitelné. Povoluje rozšířená data o místech (fotky, počasí).', + 'admin.mapsKey': 'Google Maps API klíč', + 'admin.mapsKeyHint': 'Povinné pro hledání míst. Získáte na console.cloud.google.com', + 'admin.mapsKeyHintLong': 'Bez API klíče se pro hledání používá OpenStreetMap. S Google klíčem lze načítat fotky, hodnocení a otevírací dobu.', + 'admin.recommended': 'Doporučeno', + 'admin.weatherKey': 'OpenWeatherMap API klíč', + 'admin.weatherKeyHint': 'Pro data o počasí. Zdarma na openweathermap.org', + 'admin.validateKey': 'Testovat', + 'admin.keyValid': 'Připojeno', + 'admin.keyInvalid': 'Neplatný', + 'admin.keySaved': 'API klíče byly uloženy', + 'admin.oidcTitle': 'Jednotné přihlášení (OIDC)', + 'admin.oidcSubtitle': 'Povolit přihlášení přes externí poskytovatele (Google, Apple, Authentik, Keycloak).', + 'admin.oidcDisplayName': 'Zobrazované jméno', + 'admin.oidcIssuer': 'URL vydavatele (Issuer)', + 'admin.oidcIssuerHint': 'OpenID Connect Issuer URL, např. https://accounts.google.com', + 'admin.oidcSaved': 'Konfigurace OIDC uložena', + 'admin.oidcOnlyMode': 'Zakázat ověřování heslem', + 'admin.oidcOnlyModeHint': 'Pokud je zapnuto, je povolen pouze SSO login. Registrace i přihlášení heslem budou zablokovány.', + + // Typy souborů (File Types) + 'admin.fileTypes': 'Povolené typy souborů', + 'admin.fileTypesHint': 'Nastavte, které typy souborů mohou uživatelé nahrávat.', + 'admin.fileTypesFormat': 'Přípony oddělené čárkou (např. jpg,png,pdf,doc). Použijte * pro všechny typy.', + 'admin.fileTypesSaved': 'Nastavení souborů uloženo', + + // Šablony balení (Packing Templates) + 'admin.bagTracking.title': 'Sledování zavazadel', + 'admin.bagTracking.subtitle': 'Povolit váhu a přiřazení k zavazadlům u položek balení', + 'admin.tabs.config': 'Konfigurace', + 'admin.tabs.templates': 'Šablony seznamů', + 'admin.packingTemplates.title': 'Šablony pro balení', + 'admin.packingTemplates.subtitle': 'Vytvářejte opakovaně použitelné seznamy pro své cesty', + 'admin.packingTemplates.create': 'Nová šablona', + 'admin.packingTemplates.namePlaceholder': 'Název šablony (např. Dovolená u moře)', + 'admin.packingTemplates.empty': 'Zatím nejsou vytvořeny žádné šablony', + 'admin.packingTemplates.items': 'položek', + 'admin.packingTemplates.categories': 'kategorií', + 'admin.packingTemplates.itemName': 'Název položky', + 'admin.packingTemplates.itemCategory': 'Kategorie', + 'admin.packingTemplates.categoryName': 'Název kategorie (např. Oblečení)', + 'admin.packingTemplates.addCategory': 'Přidat kategorii', + 'admin.packingTemplates.created': 'Šablona vytvořena', + 'admin.packingTemplates.deleted': 'Šablona smazána', + 'admin.packingTemplates.loadError': 'Nepodařilo se načíst šablony', + 'admin.packingTemplates.createError': 'Nepodařilo se vytvořit šablonu', + 'admin.packingTemplates.deleteError': 'Nepodařilo se smazat šablonu', + 'admin.packingTemplates.saveError': 'Uložení se nezdařilo', + + // Doplňky (Addons) + 'admin.tabs.addons': 'Doplňky', + 'admin.addons.title': 'Doplňky', + 'admin.addons.subtitle': 'Zapněte nebo vypněte funkce a přizpůsobte si TREK.', + 'admin.addons.catalog.memories.name': 'Vzpomínky', + 'admin.addons.catalog.memories.description': 'Sdílená fotoalba pro každou cestu', + 'admin.addons.catalog.packing.name': 'Balení', + 'admin.addons.catalog.packing.description': 'Seznamy věcí pro přípravu na cestu', + 'admin.addons.catalog.budget.name': 'Rozpočet', + 'admin.addons.catalog.budget.description': 'Sledování výdajů a plánování rozpočtu cesty', + 'admin.addons.catalog.documents.name': 'Dokumenty', + 'admin.addons.catalog.documents.description': 'Ukládání a správa cestovních dokladů', + 'admin.addons.catalog.vacay.name': 'Dovolená (Vacay)', + 'admin.addons.catalog.vacay.description': 'Osobní plánovač dovolené s kalendářem', + 'admin.addons.catalog.atlas.name': 'Atlas', + 'admin.addons.catalog.atlas.description': 'Mapa světa s navštívenými zeměmi a statistikami', + 'admin.addons.catalog.collab.name': 'Spolupráce', + 'admin.addons.catalog.collab.description': 'Poznámky v reálném čase, hlasování a chat pro plánování', + 'admin.addons.enabled': 'Povoleno', + 'admin.addons.disabled': 'Zakázáno', + 'admin.addons.type.trip': 'Cesta', + 'admin.addons.type.global': 'Globální', + 'admin.addons.tripHint': 'Dostupné jako karta v rámci každé cesty', + 'admin.addons.globalHint': 'Dostupné jako samostatná sekce v hlavní navigaci', + 'admin.addons.toast.updated': 'Doplněk byl aktualizován', + 'admin.addons.toast.error': 'Aktualizace doplňku se nezdařila', + 'admin.addons.noAddons': 'Žádné doplňky nejsou k dispozici', + + // Počasí (Weather) + 'admin.weather.title': 'Data o počasí', + 'admin.weather.badge': 'Od 24. března 2026', + 'admin.weather.description': 'TREK používá Open-Meteo jako zdroj dat. Je to bezplatná open-source služba – není vyžadován API klíč.', + 'admin.weather.forecast': 'Předpověď na 16 dní', + 'admin.weather.forecastDesc': 'Dříve 5 dní (OpenWeatherMap)', + 'admin.weather.climate': 'Historická klimatická data', + 'admin.weather.climateDesc': 'Průměry za posledních 85 let pro dny mimo 16denní předpověď', + 'admin.weather.requests': '10 000 požadavků denně', + 'admin.weather.requestsDesc': 'Zdarma, bez nutnosti klíče', + 'admin.weather.locationHint': 'Počasí se určuje podle prvního místa se souřadnicemi v daném dni.', + + // Aktualizace (Updates) + 'admin.update.available': 'Dostupná aktualizace', + 'admin.update.text': 'TREK {version} je k dispozici. Aktuálně používáte verzi {current}.', + 'admin.update.button': 'Zobrazit na GitHubu', + 'admin.update.install': 'Instalovat aktualizaci', + 'admin.update.confirmTitle': 'Instalovat aktualizaci?', + 'admin.update.confirmText': 'TREK bude aktualizován z verze {current} na {version}. Server se poté automaticky restartuje.', + 'admin.update.dataInfo': 'Všechna vaše data (cesty, uživatelé, API klíče, soubory) budou zachována.', + 'admin.update.warning': 'Aplikace bude během restartu krátce nedostupná.', + 'admin.update.confirm': 'Aktualizovat nyní', + 'admin.update.installing': 'Aktualizace probíhá…', + 'admin.update.success': 'Aktualizace byla nainstalována! Server se restartuje…', + 'admin.update.failed': 'Aktualizace se nezdařila', + 'admin.update.backupHint': 'Před aktualizací doporučujeme vytvořit zálohu.', + 'admin.update.backupLink': 'Přejít na zálohování', + 'admin.update.howTo': 'Jak aktualizovat', + 'admin.update.dockerText': 'Váš TREK běží v Dockeru. Pro aktualizaci na verzi {version} spusťte na svém serveru tyto příkazy:', + + // Vacay doplněk + 'vacay.subtitle': 'Plánování a správa dovolené', + 'vacay.settings': 'Nastavení', + 'vacay.year': 'Rok', + 'vacay.addYear': 'Přidat rok', + 'vacay.removeYear': 'Odebrat rok', + 'vacay.removeYearConfirm': 'Odebrat rok {year}?', + 'vacay.removeYearHint': 'Všechny záznamy o dovolené a firemní svátky pro tento rok budou trvale smazány.', + 'vacay.remove': 'Odebrat', + 'vacay.persons': 'Osoby', + 'vacay.noPersons': 'Žádné osoby nebyly přidány', + 'vacay.addPerson': 'Přidat osobu', + 'vacay.editPerson': 'Upravit osobu', + 'vacay.removePerson': 'Odebrat osobu', + 'vacay.removePersonConfirm': 'Odebrat osobu {name}?', + 'vacay.personName': 'Jméno', + 'vacay.personNamePlaceholder': 'Zadejte jméno', + 'vacay.color': 'Barva', + 'vacay.add': 'Přidat', + 'vacay.legend': 'Legenda', + 'vacay.publicHoliday': 'Státní svátek', + 'vacay.companyHoliday': 'Firemní volno', + 'vacay.weekend': 'Víkend', + 'vacay.modeVacation': 'Dovolená', + 'vacay.modeCompany': 'Firemní volno', + 'vacay.entitlement': 'Nárok', + 'vacay.entitlementDays': 'Dní', + 'vacay.used': 'Vyčerpáno', + 'vacay.remaining': 'Zbývá', + 'vacay.carriedOver': 'z roku {year}', + 'vacay.blockWeekends': 'Blokovat víkendy', + 'vacay.blockWeekendsHint': 'Zamezit zadávání dovolené na víkendové dny', + 'vacay.mon': 'Po', + 'vacay.tue': 'Út', + 'vacay.wed': 'St', + 'vacay.thu': 'Čt', + 'vacay.fri': 'Pá', + 'vacay.sat': 'So', + 'vacay.sun': 'Ne', + 'vacay.publicHolidays': 'Státní svátky', + 'vacay.publicHolidaysHint': 'Zobrazit státní svátky v kalendáři', + 'vacay.selectCountry': 'Vyberte zemi', + 'vacay.selectRegion': 'Vyberte region (volitelné)', + 'vacay.addCalendar': 'Přidat kalendář', + 'vacay.noCalendars': 'Zatím nebyly přidány žádné svátkové kalendáře', + 'vacay.companyHolidays': 'Firemní volno', + 'vacay.carryOver': 'Převod dovolené', + 'vacay.carryOverHint': 'Automaticky převádět zbývající dny do dalšího roku', + 'vacay.sharing': 'Sdílení', + 'vacay.owner': 'Vlastník', + 'vacay.shareSuccess': 'Plán byl úspěšně sdílen', + 'vacay.shareError': 'Nepodařilo se sdílet plán', + 'vacay.dissolve': 'Zrušit propojení', + 'vacay.dissolveHint': 'Znovu oddělit kalendáře. Vaše záznamy zůstanou zachovány.', + 'vacay.dissolveAction': 'Oddělit', + 'vacay.dissolved': 'Kalendáře byly odděleny', + 'vacay.fusedWith': 'Propojeno s', + 'vacay.you': 'vy', + 'vacay.noData': 'Žádná data', + 'vacay.changeColor': 'Změnit barvu', + 'vacay.inviteUser': 'Pozvat uživatele', + 'vacay.inviteHint': 'Pozvěte jiného uživatele TREK ke sdílení společného kalendáře dovolených.', + 'vacay.selectUser': 'Vyberte uživatele', + 'vacay.sendInvite': 'Odeslat pozvánku', + 'vacay.inviteSent': 'Pozvánka odeslána', + 'vacay.inviteError': 'Nepodařilo se odeslat pozvánku', + 'vacay.pending': 'čeká na vyřízení', + 'vacay.accept': 'Přijmout', + 'vacay.decline': 'Odmítnout', + 'vacay.acceptFusion': 'Přijmout a propojit', + 'vacay.inviteTitle': 'Žádost o propojení', + 'vacay.inviteWantsToFuse': 'vás zve ke sdílení kalendáře dovolených.', + 'vacay.fuseInfo1': 'Oba uvidíte všechny záznamy v jednom sdíleném kalendáři.', + 'vacay.fuseInfo2': 'Obě strany mohou vytvářet a upravovat záznamy tomu druhému.', + 'vacay.fuseInfo3': 'Obě strany mohou měnit nároky na dovolenou.', + 'vacay.fuseInfo4': 'Nastavení (svátky, firemní volno) jsou sdílená.', + 'vacay.fuseInfo5': 'Propojení lze kdykoli zrušit bez ztráty dat.', + + // Atlas doplněk + 'atlas.subtitle': 'Vaše stopa ve světě', + 'atlas.countries': 'Země', + 'atlas.cest': 'Cesty', + 'atlas.places': 'Místa', + 'atlas.unmark': 'Odebrat', + 'atlas.confirmMark': 'Označit tuto zemi jako navštívenou?', + 'atlas.confirmUnmark': 'Odebrat tuto zemi ze seznamu navštívených?', + 'atlas.markVisited': 'Označit jako navštívené', + 'atlas.markVisitedHint': 'Přidat tuto zemi do seznamu navštívených', + 'atlas.addToBucket': 'Přidat do seznamu přání (Bucket list)', + 'atlas.addToBucketHint': 'Uložit jako místo, které chcete navštívit', + 'atlas.bucketWhen': 'Kdy plánujete návštěvu?', + 'atlas.statsTab': 'Statistiky', + 'atlas.bucketTab': 'Bucket List', + 'atlas.addBucket': 'Přidat na Bucket List', + 'atlas.bucketNamePlaceholder': 'Místo nebo destinace...', + 'atlas.bucketNotesPlaceholder': 'Poznámky (volitelné)', + 'atlas.bucketEmpty': 'Váš seznam přání je prázdný', + 'atlas.bucketEmptyHint': 'Přidejte místa, která sníte navštívit', + 'atlas.days': 'Dní', + 'atlas.visitedCountries': 'Navštívené země', + 'atlas.cities': 'Města', + 'atlas.noData': 'Zatím žádná cestovatelská data', + 'atlas.noDataHint': 'Vytvořte cestu a přidejte místa, abyste viděli svou mapu světa', + 'atlas.lastTrip': 'Poslední cesta', + 'atlas.nextTrip': 'Další cesta', + 'atlas.daysLeft': 'dní zbývá', + 'atlas.streak': 'Série', + 'atlas.year': 'rok', + 'atlas.years': 'roky/let', + 'atlas.yearInRow': 'rok v řadě', + 'atlas.yearsInRow': 'let v řadě', + 'atlas.tripIn': 'cesta v roce', + 'atlas.tripsIn': 'cest v roce', + 'atlas.since': 'od', + 'atlas.europe': 'Evropa', + 'atlas.asia': 'Asie', + 'atlas.northAmerica': 'S. Amerika', + 'atlas.southAmerica': 'J. Amerika', + 'atlas.africa': 'Afrika', + 'atlas.oceania': 'Oceánie', + 'atlas.other': 'Ostatní', + 'atlas.firstVisit': 'První cesta', + 'atlas.lastVisitLabel': 'Poslední cesta', + 'atlas.tripSingular': 'Cesta', + 'atlas.tripPlural': 'Cesty', + 'atlas.placeVisited': 'Navštívené místo', + 'atlas.placesVisited': 'Navštívená místa', + + // Plánovač cesty (Trip Planner) + 'trip.tabs.plan': 'Plán', + 'trip.tabs.reservations': 'Rezervace', + 'trip.tabs.reservationsShort': 'Rez.', + 'trip.tabs.packing': 'Seznam věcí', + 'trip.tabs.packingShort': 'Balení', + 'trip.tabs.budget': 'Rozpočet', + 'trip.tabs.files': 'Soubory', + 'trip.loading': 'Načítání cesty...', + 'trip.mobilePlan': 'Plán', + 'trip.mobilePlaces': 'Místa', + 'trip.toast.placeUpdated': 'Místo bylo aktualizováno', + 'trip.toast.placeAdded': 'Místo bylo přidáno', + 'trip.toast.placeDeleted': 'Místo bylo smazáno', + 'trip.toast.selectDay': 'Prosím nejdříve vyberte den', + 'trip.toast.assignedToDay': 'Místo bylo přiřazeno ke dni', + 'trip.toast.reorderError': 'Nepodařilo se změnit pořadí', + 'trip.toast.reservationUpdated': 'Rezervace aktualizována', + 'trip.toast.reservationAdded': 'Rezervace přidána', + 'trip.toast.deleted': 'Smazáno', + 'trip.confirm.deletePlace': 'Opravdu chcete toto místo smazat?', + + // Denní plán (Day Plan) + 'dayplan.emptyDay': 'Na tento den nejsou naplánována žádná místa', + 'dayplan.addNote': 'Přidat poznámku', + 'dayplan.editNote': 'Upravit poznámku', + 'dayplan.noteAdd': 'Přidat poznámku', + 'dayplan.noteEdit': 'Upravit poznámku', + 'dayplan.noteTitle': 'Poznámka', + 'dayplan.noteSubtitle': 'Poznámka ke dni', + 'dayplan.totalCost': 'Celkové náklady', + 'dayplan.days': 'Dny', + 'dayplan.dayN': 'Den {n}', + 'dayplan.calculating': 'Počítání...', + 'dayplan.route': 'Trasa', + 'dayplan.optimize': 'Optimalizovat', + 'dayplan.optimized': 'Trasa optimalizována', + 'dayplan.routeError': 'Nepodařilo se vypočítat trasu', + 'dayplan.toast.needTwoPlaces': 'Pro optimalizaci trasy jsou potřeba alespoň dvě místa', + 'dayplan.toast.routeOptimized': 'Trasa byla optimalizována', + 'dayplan.toast.noGeoPlaces': 'Nebyla nalezena žádná místa se souřadnicemi pro výpočet trasy', + 'dayplan.confirmed': 'Potvrzeno', + 'dayplan.pendingRes': 'Čeká na potvrzení', + 'dayplan.pdf': 'PDF', + 'dayplan.pdfTooltip': 'Exportovat denní plán do PDF', + 'dayplan.pdfError': 'Export do PDF se nezdařil', + + // Boční panel míst (Places Sidebar) + 'places.addPlace': 'Přidat místo/aktivitu', + 'places.assignToDay': 'Přidat do kterého dne?', + 'places.all': 'Vše', + 'places.unplanned': 'Nezařazené', + 'places.search': 'Hledat místa...', + 'places.allCategories': 'Všechny kategorie', + 'places.count': '{count} míst', + 'places.countSingular': '1 místo', + 'places.allPlanned': 'Všechna místa jsou naplánována', + 'places.noneFound': 'Žádná místa nebyla nalezena', + 'places.editPlace': 'Upravit místo', + 'places.formName': 'Název', + 'places.formNamePlaceholder': 'např. Eiffelova věž', + 'places.formDescription': 'Popis', + 'places.formDescriptionPlaceholder': 'Krátký popis...', + 'places.formAddress': 'Adresa', + 'places.formAddressPlaceholder': 'Ulice, město, země', + 'places.formLat': 'Zeměpisná šířka', + 'places.formLng': 'Zeměpisná délka', + 'places.formCategory': 'Kategorie', + 'places.noCategory': 'Bez kategorie', + 'places.categoryNamePlaceholder': 'Název kategorie', + 'places.formTime': 'Čas', + 'places.startTime': 'Od', + 'places.endTime': 'Do', + 'places.endTimeBeforeStart': 'Čas konce je před časem začátku', + 'places.timeCollision': 'Časový překryv s:', + 'places.formWebsite': 'Webové stránky', + 'places.formNotesPlaceholder': 'Osobní poznámky...', + 'places.formReservation': 'Rezervace', + 'places.reservationNotesPlaceholder': 'Poznámky k rezervaci, potvrzovací kód...', + 'places.mapsSearchPlaceholder': 'Hledat místa...', + 'places.mapsSearchError': 'Hledání místa se nezdařilo.', + 'places.osmHint': 'Používáte hledání přes OpenStreetMap (bez fotek a hodnocení). Pro plné detaily přidejte Google API klíč v nastavení.', + 'places.osmActive': 'Hledání přes OpenStreetMap.', + 'places.categoryCreateError': 'Nepodařilo se vytvořit kategorii', + 'places.nameRequired': 'Prosím zadejte název', + 'places.saveError': 'Uložení se nezdařilo', + + // Rezervace (Reservations) + 'reservations.time': 'Čas', + 'reservations.timeAlt': 'Čas (alternativní, např. 19:30)', + 'reservations.notes': 'Poznámky', + 'reservations.notesPlaceholder': 'Další poznámky...', + 'reservations.meta.airline': 'Letecká společnost', + 'reservations.meta.flightNumber': 'Číslo letu', + 'reservations.meta.from': 'Z', + 'reservations.meta.to': 'Do', + 'reservations.meta.trainNumber': 'Číslo vlaku', + 'reservations.meta.platform': 'Nástupiště', + 'reservations.meta.seat': 'Sedadlo', + 'reservations.meta.checkIn': 'Check-in', + 'reservations.meta.checkOut': 'Check-out', + 'reservations.meta.linkAccommodation': 'Ubytování', + 'reservations.meta.pickAccommodation': 'Propojit s ubytováním', + 'reservations.meta.noAccommodation': 'Nic', + 'reservations.meta.hotelPlace': 'Ubytování', + 'reservations.meta.pickHotel': 'Vybrat ubytování', + 'reservations.meta.fromDay': 'Od dne', + 'reservations.meta.toDay': 'Do dne', + 'reservations.meta.selectDay': 'Vyberte den', + 'reservations.type.flight': 'Let', + 'reservations.type.hotel': 'Ubytování', + 'reservations.type.restaurant': 'Restaurace', + 'reservations.type.train': 'Vlak', + 'reservations.type.car': 'Pronájem auta', + 'reservations.type.cruise': 'Plavba', + 'reservations.type.event': 'Událost', + 'reservations.type.tour': 'Prohlídka', + 'reservations.type.other': 'Jiné', + 'reservations.confirm.delete': 'Opravdu chcete smazat rezervaci „{name}“?', + 'reservations.toast.updated': 'Rezervace aktualizována', + 'reservations.toast.removed': 'Rezervace smazána', + 'reservations.toast.fileUploaded': 'Soubor byl nahrán', + 'reservations.toast.uploadError': 'Nahrávání se nezdařilo', + 'reservations.newTitle': 'Nová rezervace', + 'reservations.bookingType': 'Typ rezervace', + 'reservations.titleLabel': 'Název', + 'reservations.titlePlaceholder': 'např. Let LH123, Hotel Adlon...', + 'reservations.locationAddress': 'Místo / Adresa', + 'reservations.locationPlaceholder': 'Adresa, letiště, hotel...', + 'reservations.confirmationCode': 'Rezervační kód', + 'reservations.confirmationPlaceholder': 'např. ABC12345', + 'reservations.day': 'Den', + 'reservations.noDay': 'Žádný den', + 'reservations.place': 'Místo', + 'reservations.noPlace': 'Žádné místo', + 'reservations.pendingSave': 'bude uloženo…', + 'reservations.uploading': 'Nahrávání...', + 'reservations.attachFile': 'Přiložit soubor', + 'reservations.linkExisting': 'Propojit stávající soubor', + 'reservations.toast.saveError': 'Uložení se nezdařilo', + 'reservations.toast.updateError': 'Aktualizace se nezdařila', + 'reservations.toast.deleteError': 'Smazání se nezdařilo', + 'reservations.confirm.remove': 'Odstranit rezervaci pro „{name}“?', + + // Soubory (Files) + 'files.toast.deleted': 'Soubor byl smazán', + 'files.toast.deleteError': 'Nepodařilo se smazat soubor', + 'files.sourcePlan': 'Denní plán', + 'files.sourceBooking': 'Rezervace', + 'files.attach': 'Přiložit', + 'files.pasteHint': 'Můžete také vložit obrázek ze schránky (Ctrl+V)', + 'files.trash': 'Koš', + 'files.trashEmpty': 'Koš je prázdný', + 'files.emptyTrash': 'Vysypat koš', + 'files.restore': 'Obnovit', + 'files.star': 'Označit hvězdičkou', + 'files.unstar': 'Odebrat hvězdičku', + 'files.assign': 'Přiřadit', + 'files.assignTitle': 'Přiřadit soubor', + 'files.assignPlace': 'Místo', + 'files.assignBooking': 'Rezervace', + 'files.unassigned': 'Nepřiřazeno', + 'files.unlink': 'Zrušit propojení', + 'files.toast.trashed': 'Přesunuto do koše', + 'files.toast.restored': 'Soubor byl obnoven', + 'files.toast.trashEmptied': 'Koš byl vysypán', + 'files.toast.assigned': 'Soubor byl přiřazen', + 'files.toast.assignError': 'Přiřazení se nezdařilo', + 'files.toast.restoreError': 'Obnovení se nezdařilo', + 'files.confirm.permanentDelete': 'Trvale smazat tento soubor? Tuto akci nelze vrátit.', + 'files.confirm.emptyTrash': 'Trvale smazat všechny soubory v koši? Tuto akci nelze vrátit.', + 'files.noteLabel': 'Poznámka', + 'files.notePlaceholder': 'Přidat poznámku...', + + // Balení (Packing) + 'packing.title': 'Seznam věcí', + 'packing.empty': 'Seznam věcí je prázdný', + 'packing.progress': '{packed} z {total} zabaleno ({percent} %)', + 'packing.clearChecked': 'Odstranit {count} hotových', + 'packing.clearCheckedShort': 'Odstranit {count}', + 'packing.suggestions': 'Návrhy', + 'packing.suggestionsTitle': 'Přidat návrhy', + 'packing.allSuggested': 'Všechny návrhy byly přidány', + 'packing.allPacked': 'Vše je zabaleno!', + 'packing.addPlaceholder': 'Přidat novou položku...', + 'packing.categoryPlaceholder': 'Kategorie...', + 'packing.filterAll': 'Vše', + 'packing.filterOpen': 'K zabalení', + 'packing.filterDone': 'Hotovo', + 'packing.emptyTitle': 'Seznam věcí je prázdný', + 'packing.emptyHint': 'Přidejte položky nebo použijte návrhy', + 'packing.emptyFiltered': 'Žádné položky neodpovídají filtru', + 'packing.menuRename': 'Přejmenovat', + 'packing.menuCheckAll': 'Označit vše', + 'packing.menuUncheckAll': 'Odznačit vše', + 'packing.menuDeleteCat': 'Smazat kategorii', + 'packing.assignUser': 'Přiřadit uživateli', + 'packing.noMembers': 'Žádní členové cesty', + 'packing.addItem': 'Přidat položku', + 'packing.addItemPlaceholder': 'Název položky...', + 'packing.addCategory': 'Přidat kategorii', + 'packing.newCategoryPlaceholder': 'Název kategorie (např. Oblečení)', + + // Spolupráce (Collab / Chat) + 'collab.chat.today': 'Dnes', + 'collab.chat.yesterday': 'Včera', + 'collab.chat.deletedMessage': 'smazal zprávu', + 'collab.chat.loadMore': 'Načíst starší zprávy', + 'collab.chat.justNow': 'právě teď', + 'collab.chat.minutesAgo': 'před {n} min', + 'collab.chat.hoursAgo': 'před {n} h', + 'collab.notes.title': 'Poznámky', + 'collab.notes.new': 'Nová poznámka', + 'collab.notes.empty': 'Zatím žádné poznámky', + 'collab.notes.emptyHint': 'Začněte zapisovat nápady a plány', + 'collab.notes.all': 'Vše', + 'collab.notes.titlePlaceholder': 'Poznámka...', + 'collab.notes.noCategory': 'Bez kategorie', + 'collab.notes.color': 'Barva', + 'collab.notes.save': 'Uložit', + 'collab.notes.cancel': 'Zrušit', + 'collab.notes.edit': 'Upravit', + 'collab.notes.delete': 'Smazat', + 'collab.notes.pin': 'Připnout', + 'collab.notes.unpin': 'Odepnout', + 'collab.notes.daysAgo': 'před {n} dny', + 'collab.notes.categorySettings': 'Spravovat kategorie', + 'collab.notes.create': 'Vytvořit', + 'collab.notes.website': 'Webové stránky', + 'collab.notes.websitePlaceholder': 'https://...', + 'collab.notes.attachFiles': 'Přiložit soubory', + 'collab.notes.noCategoriesYet': 'Zatím žádné kategorie', + 'collab.notes.emptyDesc': 'Vytvořte poznámku a začněte', + 'collab.polls.title': 'Hlasování', + 'collab.polls.new': 'Nové hlasování', + 'collab.polls.empty': 'Zatím žádná hlasování', + 'collab.polls.emptyHint': 'Zeptejte se skupiny a hlasujte společně', + 'collab.polls.question': 'Otázka', + 'collab.polls.questionPlaceholder': 'Co bychom měli dělat?', + 'collab.polls.addOption': '+ Přidat možnost', + 'collab.polls.optionPlaceholder': 'Možnost {n}', + 'collab.polls.create': 'Vytvořit', +}; \ No newline at end of file