Trek_CN/shared/src/i18n/tr/dashboard.ts
Maurice ebbbf91d60 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-23 21:23:39 +02:00

167 lines
8.4 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': 'Seyahatlerim',
'dashboard.subtitle.loading': 'Seyahatler yükleniyor...',
'dashboard.subtitle.trips': '{count} seyahat ({archived} arşivde)',
'dashboard.subtitle.empty': 'İlk seyahatinizi başlatın',
'dashboard.subtitle.activeOne': '{count} etkin seyahat',
'dashboard.subtitle.activeMany': '{count} etkin seyahat',
'dashboard.subtitle.archivedSuffix': ' · {count} arşivde',
'dashboard.newTrip': 'Yeni Seyahat',
'dashboard.newTripSub': 'Sıfırdan yeni bir seyahat planla',
'dashboard.gridView': 'Izgara görünümü',
'dashboard.listView': 'Liste görünümü',
'dashboard.currency': 'Para birimi',
'dashboard.timezone': 'Saat dilimleri',
'dashboard.localTime': 'Yerel',
'dashboard.timezoneCustomTitle': 'Özel saat dilimi',
'dashboard.timezoneCustomLabelPlaceholder': 'Etiket (isteğe bağlı)',
'dashboard.timezoneCustomTzPlaceholder': 'örn. America/New_York',
'dashboard.timezoneCustomAdd': 'Ekle',
'dashboard.timezoneCustomErrorEmpty': 'Saat dilimi tanımlayıcısı girin',
'dashboard.timezoneCustomErrorInvalid': 'Geçersiz saat dilimi. Europe/Berlin gibi bir biçim kullanın',
'dashboard.timezoneCustomErrorDuplicate': 'Zaten ekli',
'dashboard.emptyTitle': 'Henüz seyahat yok',
'dashboard.emptyText': 'İlk seyahatinizi oluşturup planlamaya başlayın!',
'dashboard.emptyButton': 'İlk Seyahati Oluştur',
'dashboard.nextTrip': 'Sonraki Seyahat',
'dashboard.shared': 'Paylaşılan',
'dashboard.sharedBy': '{name} paylaştı',
'dashboard.days': 'Günler',
'dashboard.places': 'Yerler',
'dashboard.members': 'Arkadaşlar',
'dashboard.archive': 'Arşivle',
'dashboard.copyTrip': 'Kopyala',
'dashboard.copySuffix': 'kopya',
'dashboard.restore': 'Geri al',
'dashboard.archived': 'Arşivlendi',
'dashboard.status.ongoing': 'Devam ediyor',
'dashboard.status.today': 'Bugün',
'dashboard.status.tomorrow': 'Yarın',
'dashboard.status.past': 'Geçmiş',
'dashboard.status.daysLeft': '{count} gün kaldı',
'dashboard.toast.loadError': 'Seyahatler yüklenemedi',
'dashboard.loadErrorBanner': 'Sunucuya ulaşılamadı. Seyahatleriniz güvende — lütfen tekrar deneyin.',
'dashboard.retry': 'Tekrar dene',
'dashboard.toast.created': 'Seyahat oluşturuldu!',
'dashboard.toast.createError': 'Seyahat oluşturulamadı',
'dashboard.toast.updated': 'Seyahat güncellendi!',
'dashboard.toast.updateError': 'Seyahat güncellenemedi',
'dashboard.toast.deleted': 'Seyahat silindi',
'dashboard.toast.deleteError': 'Seyahat silinemedi',
'dashboard.toast.archived': 'Seyahat arşivlendi',
'dashboard.toast.archiveError': 'Arşivlenemedi',
'dashboard.toast.restored': 'Seyahat geri alındı',
'dashboard.toast.restoreError': 'Geri alınamadı',
'dashboard.toast.copied': 'Seyahat kopyalandı!',
'dashboard.toast.copyError': 'Kopyalanamadı',
'dashboard.confirm.delete': '"{title}" seyahatini sil? Tüm yerler ve planlar kalıcı olarak silinir.',
'dashboard.confirm.copy.title': 'Bu seyahat kopyalansın mı?',
'dashboard.confirm.copy.willCopy': 'Kopyalanacak',
'dashboard.confirm.copy.will1': 'Günler, yerler ve gün atamaları',
'dashboard.confirm.copy.will2': 'Konaklama ve rezervasyonlar',
'dashboard.confirm.copy.will3': 'Bütçe kalemleri ve kategori sırası',
'dashboard.confirm.copy.will4': 'Paket listeleri (işaretlenmemiş)',
'dashboard.confirm.copy.will5': 'Yapılacaklar (atanmamış ve işaretlenmemiş)',
'dashboard.confirm.copy.will6': 'Gün notları',
'dashboard.confirm.copy.wontCopy': 'Kopyalanmayacak',
'dashboard.confirm.copy.wont1': 'İşbirlikçiler ve üye atamaları',
'dashboard.confirm.copy.wont2': 'Collab notları, anketler ve mesajlar',
'dashboard.confirm.copy.wont3': 'Dosyalar ve fotoğraflar',
'dashboard.confirm.copy.wont4': 'Paylaşım jetonları',
'dashboard.confirm.copy.confirm': 'Seyahati kopyala',
'dashboard.editTrip': 'Seyahati Düzenle',
'dashboard.createTrip': 'Yeni Seyahat Oluştur',
'dashboard.tripTitle': 'Başlık',
'dashboard.tripTitlePlaceholder': 'örn. Japonya yaz tatili',
'dashboard.tripDescription': 'Açıklama',
'dashboard.tripDescriptionPlaceholder': 'Bu seyahat ne hakkında?',
'dashboard.startDate': 'Başlangıç Tarihi',
'dashboard.endDate': 'Bitiş Tarihi',
'dashboard.dayCount': 'Gün sayısı',
'dashboard.dayCountHint': 'Seyahat tarihi yoksa kaç gün planlanacağı.',
'dashboard.noDateHint': 'Tarih yok — varsayılan 7 gün oluşturulur. İstediğiniz zaman değiştirebilirsiniz.',
'dashboard.coverImage': 'Kapak Görseli',
'dashboard.addCoverImage': 'Kapak ekle (sürükleyip bırakabilirsiniz)',
'dashboard.addMembers': 'Seyahat arkadaşları',
'dashboard.addMember': 'Üye ekle',
'dashboard.coverSaved': 'Kapak kaydedildi',
'dashboard.coverUploadError': 'Yüklenemedi',
'dashboard.coverRemoveError': 'Kaldırılamadı',
'dashboard.titleRequired': 'Başlık gerekli',
'dashboard.endDateError': 'Bitiş tarihi başlangıçtan sonra olmalı',
'dashboard.greeting.morning': 'Günaydın,',
'dashboard.greeting.afternoon': 'İyi günler,',
'dashboard.greeting.evening': 'İyi akşamlar,',
'dashboard.mobile.liveNow': 'Canlı',
'dashboard.mobile.tripProgress': 'Seyahat ilerlemesi',
'dashboard.mobile.daysLeft': '{count} gün kaldı',
'dashboard.mobile.places': 'Yerler',
'dashboard.mobile.buddies': 'Arkadaşlar',
'dashboard.mobile.newTrip': 'Yeni Seyahat',
'dashboard.mobile.currency': 'Para birimi',
'dashboard.mobile.timezone': 'Saat dilimi',
'dashboard.mobile.upcomingTrips': 'Yaklaşan Seyahatler',
'dashboard.mobile.yourTrips': 'Seyahatleriniz',
'dashboard.mobile.trips': 'seyahat',
'dashboard.mobile.starts': 'Başlıyor',
'dashboard.mobile.duration': 'Süre',
'dashboard.mobile.day': 'gün',
'dashboard.mobile.days': 'gün',
'dashboard.mobile.ongoing': 'Devam ediyor',
'dashboard.mobile.startsToday': 'Bugün başlıyor',
'dashboard.mobile.tomorrow': 'Yarın',
'dashboard.mobile.inDays': '{count} gün içinde',
'dashboard.mobile.inMonths': '{count} ay içinde',
'dashboard.mobile.completed': 'Tamamlandı',
'dashboard.mobile.currencyConverter': 'Döviz çevirici',
'dashboard.filter.planned': 'Planlanan',
'dashboard.hero.badgeLive': 'ŞİMDİ CANLI',
'dashboard.hero.badgeToday': 'BUGÜN BAŞLIYOR',
'dashboard.hero.badgeTomorrow': 'YARIN',
'dashboard.hero.badgeNext': 'SIRADAKİ',
'dashboard.hero.badgeRecent': 'YAKIN ZAMANDA',
'dashboard.hero.tripDates': 'Gezi tarihleri',
'dashboard.hero.noDates': 'Tarih ayarlanmadı',
'dashboard.hero.travelerOne': '{count} gezgin',
'dashboard.hero.travelerMany': '{count} gezgin',
'dashboard.hero.destinationOne': '{count} varış noktası',
'dashboard.hero.destinationMany': '{count} varış noktası',
'dashboard.hero.dayUnitOne': 'gün',
'dashboard.hero.dayUnitMany': 'gün',
'dashboard.hero.dayLeft': 'gün kaldı',
'dashboard.hero.daysLeft': 'gün kaldı',
'dashboard.hero.lastDay': 'Son gün',
'dashboard.hero.untilStart': 'Başlangıca',
'dashboard.hero.startsIn': 'Başlamasına',
'dashboard.atlas.countriesVisited': 'Atlas · Gezilen ülkeler',
'dashboard.atlas.ofTotal': '/ {total}',
'dashboard.atlas.tripsTotal': 'Toplam gezi',
'dashboard.atlas.placesMapped': '{count} yer haritalandı',
'dashboard.atlas.daysTraveled': 'Seyahat günleri',
'dashboard.atlas.daysUnit': 'gün',
'dashboard.atlas.acrossAllTrips': 'tüm gezilerde',
'dashboard.atlas.distanceFlown': 'Uçulan mesafe',
'dashboard.atlas.kmUnit': 'km',
'dashboard.atlas.aroundEquator': '≈ ekvatorun {count}× çevresi',
'dashboard.card.idea': 'Fikir',
'dashboard.card.buddyOne': 'Arkadaş',
'dashboard.fx.from': 'Kaynak',
'dashboard.fx.to': 'Hedef',
'dashboard.fx.unavailable': 'Kur kullanılamıyor',
'dashboard.tz.searchPlaceholder': 'Saat dilimi ara…',
'dashboard.tz.empty': 'Henüz başka saat dilimi yok — + ile bir tane ekleyin',
'dashboard.upcoming.title': 'Yaklaşan rezervasyonlar',
'dashboard.upcoming.empty': 'Henüz bir şey rezerve edilmedi.',
'dashboard.aria.toggleView': 'Görünümü değiştir',
'dashboard.aria.filter': 'Filtrele',
'dashboard.aria.duplicate': 'Çoğalt',
'dashboard.aria.refreshRates': 'Kurları yenile',
'dashboard.aria.swapCurrencies': 'Para birimlerini değiştir',
'dashboard.aria.addTimezone': 'Saat dilimi ekle',
'dashboard.aria.removeTimezone': '{city} kaldır',
'dashboard.dayCountRequired': 'Gün sayısı gereklidir',
};
export default dashboard;