Files
TREK/shared/src/i18n/pl/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

168 lines
8.7 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 podróże',
'dashboard.subtitle.loading': 'Ładowanie podróży...',
'dashboard.subtitle.trips': '{count} podróży ({archived} zarchiwizowanych)',
'dashboard.subtitle.empty': 'Rozpocznij swoją pierwszą podróż',
'dashboard.subtitle.activeOne': '{count} aktywna podróż',
'dashboard.subtitle.activeMany': '{count} aktywnych podróży',
'dashboard.subtitle.archivedSuffix': ' · {count} zarchiwizowanych',
'dashboard.newTrip': 'Nowa podróż',
'dashboard.newTripSub': 'Zaplanuj nową podróż od zera',
'dashboard.gridView': 'Widok siatki',
'dashboard.listView': 'Widok listy',
'dashboard.currency': 'Waluta',
'dashboard.timezone': 'Strefy czasowe',
'dashboard.localTime': 'Czas lokalny',
'dashboard.timezoneCustomTitle': 'Własna strefa czasowa',
'dashboard.timezoneCustomLabelPlaceholder': 'Nazwa (opcjonalnie)',
'dashboard.timezoneCustomTzPlaceholder': 'np. Europe/Warsaw',
'dashboard.timezoneCustomAdd': 'Dodaj',
'dashboard.timezoneCustomErrorEmpty': 'Podaj identyfikator strefy czasowej',
'dashboard.timezoneCustomErrorInvalid': 'Nieprawidłowa strefa czasowa. Użyj formatu takiego jak Europe/Warsaw',
'dashboard.timezoneCustomErrorDuplicate': 'Już dodana',
'dashboard.emptyTitle': 'Brak podróży',
'dashboard.emptyText': 'Utwórz swoją pierwszą podróż i zacznij planować!',
'dashboard.emptyButton': 'Utwórz pierwszą podróż',
'dashboard.nextTrip': 'Następna podróż',
'dashboard.shared': 'Udostępniona',
'dashboard.sharedBy': 'Udostępniona przez {name}',
'dashboard.days': 'Dni',
'dashboard.places': 'Miejsca',
'dashboard.archive': 'Archiwizuj',
'dashboard.restore': 'Przywróć',
'dashboard.archived': 'Zarchiwizowana',
'dashboard.status.ongoing': 'W trakcie',
'dashboard.status.today': 'Dzisiaj',
'dashboard.status.tomorrow': 'Jutro',
'dashboard.status.past': 'Zakończona',
'dashboard.status.daysLeft': '{count} dni do końca',
'dashboard.toast.loadError': 'Nie udało się załadować podróży',
'dashboard.loadErrorBanner': 'Nie udało się połączyć z serwerem. Twoje podróże są bezpieczne — spróbuj ponownie.',
'dashboard.retry': 'Spróbuj ponownie',
'dashboard.toast.created': 'Podróż została utworzona pomyślnie!',
'dashboard.toast.createError': 'Nie udało się utworzyć podróży',
'dashboard.toast.updated': 'Podróż została zaktualizowana!',
'dashboard.toast.updateError': 'Nie udało się zaktualizować podróży',
'dashboard.toast.deleted': 'Podróż została usunięta',
'dashboard.toast.deleteError': 'Nie udało się usunąć podróży',
'dashboard.toast.archived': 'Podróż została zarchiwizowana',
'dashboard.toast.archiveError': 'Nie udało się zarchiwizować podróży',
'dashboard.toast.restored': 'Podróż została przywrócona',
'dashboard.toast.restoreError': 'Nie udało się przywrócić podróży',
'dashboard.confirm.delete': 'Usunąć podróż "{title}"? Wszystkie miejsca i plany zostaną trwale usunięte.',
'dashboard.editTrip': 'Edytuj podróż',
'dashboard.createTrip': 'Utwórz nową podróż',
'dashboard.tripTitle': 'Nazwa podróży',
'dashboard.tripTitlePlaceholder': 'np. Lato w Japonii',
'dashboard.tripDescription': 'Opis',
'dashboard.tripDescriptionPlaceholder': 'Opisz swoją podróż',
'dashboard.startDate': 'Data rozpoczęcia',
'dashboard.endDate': 'Data zakończenia',
'dashboard.dayCount': 'Liczba dni',
'dashboard.dayCountHint': 'Ile dni zaplanować, gdy nie ustawiono dat podróży.',
'dashboard.noDateHint':
'Nie ustawiono daty — zostanie utworzonych 7 domyślnych dni. Możesz to zmienić w dowolnym momencie.',
'dashboard.coverImage': 'Okładka',
'dashboard.addCoverImage': 'Dodaj okładkę (lub przeciągnij i upuść)',
'dashboard.addMembers': 'Uczestnicy podróży',
'dashboard.addMember': 'Dodaj uczestnika',
'dashboard.coverSaved': 'Okładka została zapisana',
'dashboard.coverUploadError': 'Nie udało się przesłać okładki',
'dashboard.coverRemoveError': 'Nie udało się usunąć okładki',
'dashboard.titleRequired': 'Nazwa podróży jest wymagana',
'dashboard.endDateError': 'Data zakończenia musi być po dacie rozpoczęcia',
'dashboard.members': 'Towarzysze',
'dashboard.copyTrip': 'Kopiuj',
'dashboard.copySuffix': 'kopia',
'dashboard.toast.copied': 'Podróż skopiowana!',
'dashboard.toast.copyError': 'Nie udało się skopiować podróży',
'dashboard.greeting.morning': 'Dzień dobry,',
'dashboard.greeting.afternoon': 'Dzień dobry,',
'dashboard.greeting.evening': 'Dobry wieczór,',
'dashboard.mobile.liveNow': 'Na żywo',
'dashboard.mobile.tripProgress': 'Postęp podróży',
'dashboard.mobile.daysLeft': 'Pozostało {count} dni',
'dashboard.mobile.places': 'Miejsca',
'dashboard.mobile.buddies': 'Towarzysze',
'dashboard.mobile.newTrip': 'Nowa podróż',
'dashboard.mobile.currency': 'Waluta',
'dashboard.mobile.timezone': 'Strefa czasowa',
'dashboard.mobile.upcomingTrips': 'Nadchodzące podróże',
'dashboard.mobile.yourTrips': 'Twoje podróże',
'dashboard.mobile.trips': 'podróże',
'dashboard.mobile.starts': 'Początek',
'dashboard.mobile.duration': 'Czas trwania',
'dashboard.mobile.day': 'dzień',
'dashboard.mobile.days': 'dni',
'dashboard.mobile.ongoing': 'W trakcie',
'dashboard.mobile.startsToday': 'Zaczyna się dziś',
'dashboard.mobile.tomorrow': 'Jutro',
'dashboard.mobile.inDays': 'Za {count} dni',
'dashboard.mobile.inMonths': 'Za {count} miesięcy',
'dashboard.mobile.completed': 'Zakończone',
'dashboard.mobile.currencyConverter': 'Przelicznik walut',
'dashboard.filter.planned': 'Zaplanowane',
'dashboard.hero.badgeLive': 'NA ŻYWO',
'dashboard.hero.badgeToday': 'ZACZYNA SIĘ DZIŚ',
'dashboard.hero.badgeTomorrow': 'JUTRO',
'dashboard.hero.badgeNext': 'NASTĘPNA',
'dashboard.hero.badgeRecent': 'NIEDAWNO',
'dashboard.hero.tripDates': 'Daty podróży',
'dashboard.hero.noDates': 'Brak ustawionych dat',
'dashboard.hero.travelerOne': '{count} podróżny',
'dashboard.hero.travelerMany': '{count} podróżnych',
'dashboard.hero.destinationOne': '{count} cel',
'dashboard.hero.destinationMany': '{count} celów',
'dashboard.hero.dayUnitOne': 'dzień',
'dashboard.hero.dayUnitMany': 'dni',
'dashboard.hero.dayLeft': 'Pozostał dzień',
'dashboard.hero.daysLeft': 'Pozostało dni',
'dashboard.hero.lastDay': 'Ostatni dzień',
'dashboard.hero.untilStart': 'Do startu',
'dashboard.hero.startsIn': 'Start za',
'dashboard.atlas.countriesVisited': 'Atlas · Odwiedzone kraje',
'dashboard.atlas.ofTotal': 'z {total}',
'dashboard.atlas.tripsTotal': 'Podróże łącznie',
'dashboard.atlas.placesMapped': '{count} miejsc na mapie',
'dashboard.atlas.daysTraveled': 'Dni w podróży',
'dashboard.atlas.daysUnit': 'dni',
'dashboard.atlas.acrossAllTrips': 'we wszystkich podróżach',
'dashboard.atlas.distanceFlown': 'Przebyty dystans',
'dashboard.atlas.kmUnit': 'km',
'dashboard.atlas.aroundEquator': '≈ {count}× dookoła równika',
'dashboard.card.idea': 'Pomysł',
'dashboard.card.buddyOne': 'Towarzysz',
'dashboard.fx.from': 'Z',
'dashboard.fx.to': 'Na',
'dashboard.fx.unavailable': 'Kurs niedostępny',
'dashboard.tz.searchPlaceholder': 'Szukaj strefy czasowej…',
'dashboard.tz.empty': 'Brak innych stref czasowych — dodaj jedną za pomocą +',
'dashboard.upcoming.title': 'Nadchodzące rezerwacje',
'dashboard.upcoming.empty': 'Nic jeszcze nie zarezerwowano.',
'dashboard.confirm.copy.title': 'Skopiować tę podróż?',
'dashboard.confirm.copy.willCopy': 'Zostanie skopiowane',
'dashboard.confirm.copy.will1': 'Dni, miejsca i przypisania do dni',
'dashboard.confirm.copy.will2': 'Noclegi i rezerwacje',
'dashboard.confirm.copy.will3': 'Pozycje budżetu i kolejność kategorii',
'dashboard.confirm.copy.will4': 'Listy pakowania (niezaznaczone)',
'dashboard.confirm.copy.will5': 'Zadania (nieprzypisane i niezaznaczone)',
'dashboard.confirm.copy.will6': 'Notatki dnia',
'dashboard.confirm.copy.wontCopy': 'Nie zostanie skopiowane',
'dashboard.confirm.copy.wont1': 'Współpracownicy i przypisania członków',
'dashboard.confirm.copy.wont2': 'Wspólne notatki, ankiety i wiadomości',
'dashboard.confirm.copy.wont3': 'Pliki i zdjęcia',
'dashboard.confirm.copy.wont4': 'Tokeny udostępniania',
'dashboard.confirm.copy.confirm': 'Kopiuj podróż',
'dashboard.aria.toggleView': 'Przełącz widok',
'dashboard.aria.filter': 'Filtruj',
'dashboard.aria.duplicate': 'Duplikuj',
'dashboard.aria.refreshRates': 'Odśwież kursy',
'dashboard.aria.swapCurrencies': 'Zamień waluty',
'dashboard.aria.addTimezone': 'Dodaj strefę czasową',
'dashboard.aria.removeTimezone': 'Usuń {city}',
'dashboard.dayCountRequired': 'Liczba dni jest wymagana',
};
export default dashboard;