Files
TREK/shared/src/i18n/id/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.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': 'Perjalananku',
'dashboard.subtitle.loading': 'Memuat perjalanan...',
'dashboard.subtitle.trips': '{count} perjalanan ({archived} diarsipkan)',
'dashboard.subtitle.empty': 'Mulai perjalanan pertamamu',
'dashboard.subtitle.activeOne': '{count} perjalanan aktif',
'dashboard.subtitle.activeMany': '{count} perjalanan aktif',
'dashboard.subtitle.archivedSuffix': ' · {count} diarsipkan',
'dashboard.newTrip': 'Perjalanan Baru',
'dashboard.newTripSub': 'Rencanakan perjalanan baru dari awal',
'dashboard.gridView': 'Tampilan grid',
'dashboard.listView': 'Tampilan daftar',
'dashboard.currency': 'Mata uang',
'dashboard.timezone': 'Zona waktu',
'dashboard.localTime': 'Lokal',
'dashboard.timezoneCustomTitle': 'Zona Waktu Kustom',
'dashboard.timezoneCustomLabelPlaceholder': 'Label (opsional)',
'dashboard.timezoneCustomTzPlaceholder': 'mis. America/New_York',
'dashboard.timezoneCustomAdd': 'Tambah',
'dashboard.timezoneCustomErrorEmpty': 'Masukkan pengenal zona waktu',
'dashboard.timezoneCustomErrorInvalid': 'Zona waktu tidak valid. Gunakan format seperti Europe/Berlin',
'dashboard.timezoneCustomErrorDuplicate': 'Sudah ditambahkan',
'dashboard.emptyTitle': 'Belum ada perjalanan',
'dashboard.emptyText': 'Buat perjalanan pertamamu dan mulai merencanakan!',
'dashboard.emptyButton': 'Buat Perjalanan Pertama',
'dashboard.nextTrip': 'Perjalanan Berikutnya',
'dashboard.shared': 'Dibagikan',
'dashboard.sharedBy': 'Dibagikan oleh {name}',
'dashboard.days': 'Hari',
'dashboard.places': 'Tempat',
'dashboard.members': 'Teman perjalanan',
'dashboard.archive': 'Arsipkan',
'dashboard.copyTrip': 'Salin',
'dashboard.copySuffix': 'salinan',
'dashboard.restore': 'Pulihkan',
'dashboard.archived': 'Diarsipkan',
'dashboard.status.ongoing': 'Sedang berlangsung',
'dashboard.status.today': 'Hari ini',
'dashboard.status.tomorrow': 'Besok',
'dashboard.status.past': 'Sudah lewat',
'dashboard.status.daysLeft': '{count} hari lagi',
'dashboard.toast.loadError': 'Gagal memuat perjalanan',
'dashboard.loadErrorBanner': 'Tidak dapat terhubung ke server. Perjalananmu aman — silakan coba lagi.',
'dashboard.retry': 'Coba lagi',
'dashboard.toast.created': 'Perjalanan berhasil dibuat!',
'dashboard.toast.createError': 'Gagal membuat perjalanan',
'dashboard.toast.updated': 'Perjalanan diperbarui!',
'dashboard.toast.updateError': 'Gagal memperbarui perjalanan',
'dashboard.toast.deleted': 'Perjalanan dihapus',
'dashboard.toast.deleteError': 'Gagal menghapus perjalanan',
'dashboard.toast.archived': 'Perjalanan diarsipkan',
'dashboard.toast.archiveError': 'Gagal mengarsipkan perjalanan',
'dashboard.toast.restored': 'Perjalanan dipulihkan',
'dashboard.toast.restoreError': 'Gagal memulihkan perjalanan',
'dashboard.toast.copied': 'Perjalanan disalin!',
'dashboard.toast.copyError': 'Gagal menyalin perjalanan',
'dashboard.confirm.delete': 'Hapus perjalanan "{title}"? Semua tempat dan rencana akan dihapus permanen.',
'dashboard.editTrip': 'Edit Perjalanan',
'dashboard.createTrip': 'Buat Perjalanan Baru',
'dashboard.tripTitle': 'Judul',
'dashboard.tripTitlePlaceholder': 'mis. Musim Panas di Jepang',
'dashboard.tripDescription': 'Deskripsi',
'dashboard.tripDescriptionPlaceholder': 'Perjalanan ini tentang apa?',
'dashboard.startDate': 'Tanggal Mulai',
'dashboard.endDate': 'Tanggal Selesai',
'dashboard.dayCount': 'Jumlah Hari',
'dashboard.dayCountHint': 'Berapa hari yang ingin direncanakan jika tanggal perjalanan belum diatur.',
'dashboard.noDateHint': 'Belum ada tanggal — 7 hari default akan dibuat. Bisa diubah kapan saja.',
'dashboard.coverImage': 'Gambar Sampul',
'dashboard.addCoverImage': 'Tambah gambar sampul (atau seret & lepas)',
'dashboard.addMembers': 'Teman perjalanan',
'dashboard.addMember': 'Tambah anggota',
'dashboard.coverSaved': 'Gambar sampul tersimpan',
'dashboard.coverUploadError': 'Gagal mengunggah',
'dashboard.coverRemoveError': 'Gagal menghapus',
'dashboard.titleRequired': 'Judul wajib diisi',
'dashboard.endDateError': 'Tanggal selesai harus setelah tanggal mulai',
'dashboard.greeting.morning': 'Selamat pagi,',
'dashboard.greeting.afternoon': 'Selamat siang,',
'dashboard.greeting.evening': 'Selamat malam,',
'dashboard.mobile.liveNow': 'Sedang Berlangsung',
'dashboard.mobile.tripProgress': 'Progres perjalanan',
'dashboard.mobile.daysLeft': '{count} hari lagi',
'dashboard.mobile.places': 'Tempat',
'dashboard.mobile.buddies': 'Teman',
'dashboard.mobile.newTrip': 'Perjalanan Baru',
'dashboard.mobile.currency': 'Mata Uang',
'dashboard.mobile.timezone': 'Zona Waktu',
'dashboard.mobile.upcomingTrips': 'Perjalanan Mendatang',
'dashboard.mobile.yourTrips': 'Perjalananmu',
'dashboard.mobile.trips': 'perjalanan',
'dashboard.mobile.starts': 'Mulai',
'dashboard.mobile.duration': 'Durasi',
'dashboard.mobile.day': 'hari',
'dashboard.mobile.days': 'hari',
'dashboard.mobile.ongoing': 'Sedang berlangsung',
'dashboard.mobile.startsToday': 'Mulai hari ini',
'dashboard.mobile.tomorrow': 'Besok',
'dashboard.mobile.inDays': 'Dalam {count} hari',
'dashboard.mobile.inMonths': 'Dalam {count} bulan',
'dashboard.mobile.completed': 'Selesai',
'dashboard.mobile.currencyConverter': 'Konverter Mata Uang',
'dashboard.filter.planned': 'Direncanakan',
'dashboard.hero.badgeLive': 'SEDANG BERLANGSUNG',
'dashboard.hero.badgeToday': 'MULAI HARI INI',
'dashboard.hero.badgeTomorrow': 'BESOK',
'dashboard.hero.badgeNext': 'BERIKUTNYA',
'dashboard.hero.badgeRecent': 'TERBARU',
'dashboard.hero.tripDates': 'Tanggal perjalanan',
'dashboard.hero.noDates': 'Tanggal belum diatur',
'dashboard.hero.travelerOne': '{count} pelancong',
'dashboard.hero.travelerMany': '{count} pelancong',
'dashboard.hero.destinationOne': '{count} destinasi',
'dashboard.hero.destinationMany': '{count} destinasi',
'dashboard.hero.dayUnitOne': 'hari',
'dashboard.hero.dayUnitMany': 'hari',
'dashboard.hero.dayLeft': 'Hari tersisa',
'dashboard.hero.daysLeft': 'Hari tersisa',
'dashboard.hero.lastDay': 'Hari terakhir',
'dashboard.hero.untilStart': 'Hingga mulai',
'dashboard.hero.startsIn': 'Mulai dalam',
'dashboard.atlas.countriesVisited': 'Atlas · Negara dikunjungi',
'dashboard.atlas.ofTotal': 'dari {total}',
'dashboard.atlas.tripsTotal': 'Total perjalanan',
'dashboard.atlas.placesMapped': '{count} tempat dipetakan',
'dashboard.atlas.daysTraveled': 'Hari perjalanan',
'dashboard.atlas.daysUnit': 'hari',
'dashboard.atlas.acrossAllTrips': 'di semua perjalanan',
'dashboard.atlas.distanceFlown': 'Jarak terbang',
'dashboard.atlas.kmUnit': 'km',
'dashboard.atlas.aroundEquator': '≈ {count}× keliling khatulistiwa',
'dashboard.card.idea': 'Ide',
'dashboard.card.buddyOne': 'Teman',
'dashboard.fx.from': 'Dari',
'dashboard.fx.to': 'Ke',
'dashboard.fx.unavailable': 'Kurs tidak tersedia',
'dashboard.tz.searchPlaceholder': 'Cari zona waktu…',
'dashboard.tz.empty': 'Belum ada zona waktu lain — tambahkan dengan +',
'dashboard.upcoming.title': 'Reservasi mendatang',
'dashboard.upcoming.empty': 'Belum ada yang dipesan.',
'dashboard.confirm.copy.title': 'Salin perjalanan ini?',
'dashboard.confirm.copy.willCopy': 'Akan disalin',
'dashboard.confirm.copy.will1': 'Hari, tempat & penugasan harian',
'dashboard.confirm.copy.will2': 'Akomodasi & reservasi',
'dashboard.confirm.copy.will3': 'Item anggaran & urutan kategori',
'dashboard.confirm.copy.will4': 'Daftar bawaan (belum dicentang)',
'dashboard.confirm.copy.will5': 'Tugas (belum ditugaskan & dicentang)',
'dashboard.confirm.copy.will6': 'Catatan harian',
'dashboard.confirm.copy.wontCopy': 'Tidak akan disalin',
'dashboard.confirm.copy.wont1': 'Kolaborator & penugasan anggota',
'dashboard.confirm.copy.wont2': 'Catatan, jajak pendapat & pesan bersama',
'dashboard.confirm.copy.wont3': 'Berkas & foto',
'dashboard.confirm.copy.wont4': 'Token berbagi',
'dashboard.confirm.copy.confirm': 'Salin perjalanan',
'dashboard.aria.toggleView': 'Ganti tampilan',
'dashboard.aria.filter': 'Filter',
'dashboard.aria.duplicate': 'Duplikat',
'dashboard.aria.refreshRates': 'Segarkan kurs',
'dashboard.aria.swapCurrencies': 'Tukar mata uang',
'dashboard.aria.addTimezone': 'Tambah zona waktu',
'dashboard.aria.removeTimezone': 'Hapus {city}',
'dashboard.dayCountRequired': 'Jumlah hari wajib diisi',
};
export default dashboard;