Files
TREK/shared/src/i18n/cs/dashboard.ts
T
Maurice c0b5d941dd fix(dashboard): show an error instead of a blank trip list when the server is unreachable (#1283)
When the backend or identity provider was unreachable, a returning user with a
persisted session landed on the dashboard with an empty trip grid and no error.
That looks identical to a logged-in user who simply has no trips, so people
assumed their data had been lost.

Three client-side layers were quietly swallowing the failure: the auth check
only cleared state on a 401, so a 5xx or a network error left the stale session
in place and kept rendering the protected route; the offline-first trip repo
turned a failed fetch into the empty cache without throwing; and the dashboard
had neither an error nor an empty state, so a blank grid meant both "outage" and
"no trips".

The auth check now tells genuine offline (keep serving the cache silently, the
PWA happy path) apart from a server outage while online (keep the session but
flag it). The dashboard shows a reassuring "couldn't reach the server, your
trips are safe" banner with a retry, and a real zero-trip account finally gets a
proper empty state so the two cases never look alike. New strings added across
all locales.
2026-06-21 23:08:25 +02:00

167 lines
8.5 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { TranslationStrings } from '../types';
const dashboard: TranslationStrings = {
'dashboard.title': 'Moje cesty',
'dashboard.subtitle.loading': 'Načítání cest...',
'dashboard.subtitle.trips': '{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.newTripSub': 'Naplánujte novou cestu od začátku',
'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.members': 'Cestovní parťáci',
'dashboard.archive': 'Archivovat',
'dashboard.copyTrip': 'Kopírovat',
'dashboard.copySuffix': 'kopie',
'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.loadErrorBanner': 'Server nebyl dostupný. Vaše cesty jsou v bezpečí — zkuste to prosím znovu.',
'dashboard.retry': 'Zkusit znovu',
'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.toast.copied': 'Cesta byla zkopírována!',
'dashboard.toast.copyError': 'Nepodařilo se zkopírovat 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.dayCount': 'Počet dnů',
'dashboard.dayCountHint': 'Kolik dnů naplánovat, když nejsou nastavena data cesty.',
'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',
'dashboard.greeting.morning': 'Dobré ráno,',
'dashboard.greeting.afternoon': 'Dobré odpoledne,',
'dashboard.greeting.evening': 'Dobrý večer,',
'dashboard.mobile.liveNow': 'Živě',
'dashboard.mobile.tripProgress': 'Průběh cesty',
'dashboard.mobile.daysLeft': 'Zbývá {count} dní',
'dashboard.mobile.places': 'Místa',
'dashboard.mobile.buddies': 'Spolucestující',
'dashboard.mobile.newTrip': 'Nová cesta',
'dashboard.mobile.currency': 'Měna',
'dashboard.mobile.timezone': 'Časové pásmo',
'dashboard.mobile.upcomingTrips': 'Nadcházející cesty',
'dashboard.mobile.yourTrips': 'Vaše cesty',
'dashboard.mobile.trips': 'cesty',
'dashboard.mobile.starts': 'Začátek',
'dashboard.mobile.duration': 'Doba trvání',
'dashboard.mobile.day': 'den',
'dashboard.mobile.days': 'dní',
'dashboard.mobile.ongoing': 'Probíhající',
'dashboard.mobile.startsToday': 'Začíná dnes',
'dashboard.mobile.tomorrow': 'Zítra',
'dashboard.mobile.inDays': 'Za {count} dní',
'dashboard.mobile.inMonths': 'Za {count} měsíců',
'dashboard.mobile.completed': 'Dokončeno',
'dashboard.mobile.currencyConverter': 'Převodník měn',
'dashboard.filter.planned': 'Plánované',
'dashboard.hero.badgeLive': 'ŽIVĚ',
'dashboard.hero.badgeToday': 'ZAČÍNÁ DNES',
'dashboard.hero.badgeTomorrow': 'ZÍTRA',
'dashboard.hero.badgeNext': 'NÁSLEDUJE',
'dashboard.hero.badgeRecent': 'NEDÁVNO',
'dashboard.hero.tripDates': 'Termíny cesty',
'dashboard.hero.noDates': 'Bez termínu',
'dashboard.hero.travelerOne': '{count} cestovatel',
'dashboard.hero.travelerMany': '{count} cestovatelů',
'dashboard.hero.destinationOne': '{count} cíl',
'dashboard.hero.destinationMany': '{count} cílů',
'dashboard.hero.dayUnitOne': 'den',
'dashboard.hero.dayUnitMany': 'dní',
'dashboard.hero.dayLeft': 'Zbývá den',
'dashboard.hero.daysLeft': 'Zbývá dní',
'dashboard.hero.lastDay': 'Poslední den',
'dashboard.hero.untilStart': 'Do začátku',
'dashboard.hero.startsIn': 'Začíná za',
'dashboard.atlas.countriesVisited': 'Atlas · Navštívené země',
'dashboard.atlas.ofTotal': 'z {total}',
'dashboard.atlas.tripsTotal': 'Cest celkem',
'dashboard.atlas.placesMapped': '{count} míst na mapě',
'dashboard.atlas.daysTraveled': 'Dní na cestách',
'dashboard.atlas.daysUnit': 'dní',
'dashboard.atlas.acrossAllTrips': 'napříč všemi cestami',
'dashboard.atlas.distanceFlown': 'Naletěná vzdálenost',
'dashboard.atlas.kmUnit': 'km',
'dashboard.atlas.aroundEquator': '≈ {count}× kolem rovníku',
'dashboard.card.idea': 'Nápad',
'dashboard.card.buddyOne': 'Parťák',
'dashboard.fx.from': 'Z',
'dashboard.fx.to': 'Na',
'dashboard.fx.unavailable': 'Kurz není dostupný',
'dashboard.tz.searchPlaceholder': 'Hledat časové pásmo…',
'dashboard.tz.empty': 'Zatím žádná další časová pásma — přidejte je pomocí +',
'dashboard.upcoming.title': 'Nadcházející rezervace',
'dashboard.upcoming.empty': 'Zatím nic rezervováno.',
'dashboard.confirm.copy.title': 'Zkopírovat tuto cestu?',
'dashboard.confirm.copy.willCopy': 'Bude zkopírováno',
'dashboard.confirm.copy.will1': 'Dny, místa a přiřazení ke dnům',
'dashboard.confirm.copy.will2': 'Ubytování a rezervace',
'dashboard.confirm.copy.will3': 'Položky rozpočtu a pořadí kategorií',
'dashboard.confirm.copy.will4': 'Seznamy věcí (neodškrtnuté)',
'dashboard.confirm.copy.will5': 'Úkoly (nepřiřazené a neodškrtnuté)',
'dashboard.confirm.copy.will6': 'Poznámky ke dni',
'dashboard.confirm.copy.wontCopy': 'Nebude zkopírováno',
'dashboard.confirm.copy.wont1': 'Spolupracovníci a přiřazení členů',
'dashboard.confirm.copy.wont2': 'Sdílené poznámky, ankety a zprávy',
'dashboard.confirm.copy.wont3': 'Soubory a fotky',
'dashboard.confirm.copy.wont4': 'Sdílecí tokeny',
'dashboard.confirm.copy.confirm': 'Kopírovat cestu',
'dashboard.aria.toggleView': 'Přepnout zobrazení',
'dashboard.aria.filter': 'Filtr',
'dashboard.aria.duplicate': 'Duplikovat',
'dashboard.aria.refreshRates': 'Obnovit kurzy',
'dashboard.aria.swapCurrencies': 'Prohodit měny',
'dashboard.aria.addTimezone': 'Přidat časové pásmo',
'dashboard.aria.removeTimezone': 'Odebrat {city}',
'dashboard.dayCountRequired': 'Počet dní je povinný',
};
export default dashboard;