mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-21 14:21:46 +00:00
3e9626fce9
* feat(places): enrich list-imported places via the Places API (#886) Google/Naver list imports only carry a name and coordinates, so the places open as bare pins — the Maps tab jumps to coordinates, with no photo, address or open/closed. Add an opt-in "Enrich places via Google" toggle to the list-import dialog, shown only when a Google Maps key is configured. When enabled, after the (fast, unchanged) import the server runs a background pass that re-resolves each place by name — biased to and validated against the imported coordinates so a common-name search cannot overwrite the wrong place — and fills the empty address/website/phone/photo columns plus the resolved google_place_id, pushing each row over the live sync. Opening hours and the proper Maps link then work on demand from the stored id. Enrichment only fills empty fields, runs detached so a long list never blocks the import, and no-ops when no key is configured. * fix(places): use the ToggleSwitch component for the enrich toggle Match the rest of the app — the import-enrichment opt-in used a raw checkbox; swap it for the shared ToggleSwitch (text left, switch right) like the settings toggles.
98 lines
4.7 KiB
TypeScript
98 lines
4.7 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
|
|
|
const places: TranslationStrings = {
|
|
'places.addPlace': 'Tambah Tempat/Aktivitas',
|
|
'places.importFile': 'Impor file',
|
|
'places.sidebarDrop': 'Lepas untuk mengimpor',
|
|
'places.importFileHint':
|
|
'Impor file .gpx, .kml, atau .kmz dari Google My Maps, Google Earth, atau pelacak GPS.',
|
|
'places.importFileDropHere':
|
|
'Klik untuk memilih file atau seret dan lepas di sini',
|
|
'places.importFileDropActive': 'Lepas file untuk memilih',
|
|
'places.importFileUnsupported':
|
|
'Jenis file tidak didukung. Gunakan .gpx, .kml, atau .kmz.',
|
|
'places.importFileTooLarge':
|
|
'File terlalu besar. Ukuran unggah maksimum adalah {maxMb} MB.',
|
|
'places.importFileError': 'Impor gagal',
|
|
'places.importAllSkipped': 'Semua tempat sudah ada di perjalanan.',
|
|
'places.gpxImported': '{count} tempat diimpor dari GPX',
|
|
'places.gpxImportTypes': 'Apa yang ingin diimpor?',
|
|
'places.gpxImportWaypoints': 'Titik jalan',
|
|
'places.gpxImportRoutes': 'Rute',
|
|
'places.gpxImportTracks': 'Trek (dengan geometri jalur)',
|
|
'places.gpxImportNoneSelected': 'Pilih setidaknya satu jenis untuk diimpor.',
|
|
'places.kmlImportTypes': 'Apa yang ingin diimpor?',
|
|
'places.kmlImportPoints': 'Titik (Placemarks)',
|
|
'places.kmlImportPaths': 'Jalur (LineStrings)',
|
|
'places.kmlImportNoneSelected': 'Pilih setidaknya satu jenis.',
|
|
'places.selectionCount': '{count} dipilih',
|
|
'places.deleteSelected': 'Hapus yang dipilih',
|
|
'places.kmlKmzImported': '{count} tempat diimpor dari KMZ/KML',
|
|
'places.urlResolved': 'Tempat diimpor dari URL',
|
|
'places.importList': 'Impor Daftar',
|
|
'places.kmlKmzSummaryValues':
|
|
'Placemark: {total} • Diimpor: {created} • Dilewati: {skipped}',
|
|
'places.importGoogleList': 'Daftar Google',
|
|
'places.importNaverList': 'Daftar Naver',
|
|
'places.googleListHint':
|
|
'Tempel tautan daftar Google Maps yang dibagikan untuk mengimpor semua tempat.',
|
|
'places.googleListImported': '{count} tempat diimpor dari "{list}"',
|
|
'places.googleListError': 'Gagal mengimpor daftar Google Maps',
|
|
'places.naverListHint':
|
|
'Tempel tautan daftar Naver Maps yang dibagikan untuk mengimpor semua tempat.',
|
|
'places.naverListImported': '{count} tempat diimpor dari "{list}"',
|
|
'places.naverListError': 'Gagal mengimpor daftar Naver Maps',
|
|
'places.viewDetails': 'Lihat Detail',
|
|
'places.assignToDay': 'Tambah ke hari mana?',
|
|
'places.all': 'Semua',
|
|
'places.unplanned': 'Belum direncanakan',
|
|
'places.filterTracks': 'Trek',
|
|
'places.search': 'Cari tempat...',
|
|
'places.allCategories': 'Semua Kategori',
|
|
'places.categoriesSelected': 'kategori',
|
|
'places.clearFilter': 'Hapus filter',
|
|
'places.count': '{count} tempat',
|
|
'places.countSingular': '1 tempat',
|
|
'places.allPlanned': 'Semua tempat sudah direncanakan',
|
|
'places.noneFound': 'Tidak ada tempat ditemukan',
|
|
'places.editPlace': 'Edit Tempat',
|
|
'places.formName': 'Nama',
|
|
'places.formNamePlaceholder': 'mis. Menara Eiffel',
|
|
'places.formDescription': 'Deskripsi',
|
|
'places.formDescriptionPlaceholder': 'Deskripsi singkat...',
|
|
'places.formAddress': 'Alamat',
|
|
'places.formAddressPlaceholder': 'Jalan, Kota, Negara',
|
|
'places.formLat': 'Lintang (mis. 48.8566)',
|
|
'places.formLng': 'Bujur (mis. 2.3522)',
|
|
'places.formCategory': 'Kategori',
|
|
'places.noCategory': 'Tanpa Kategori',
|
|
'places.categoryNamePlaceholder': 'Nama kategori',
|
|
'places.formTime': 'Waktu',
|
|
'places.startTime': 'Mulai',
|
|
'places.endTime': 'Selesai',
|
|
'places.endTimeBeforeStart': 'Waktu selesai lebih awal dari waktu mulai',
|
|
'places.timeCollision': 'Waktu tumpang tindih dengan:',
|
|
'places.formWebsite': 'Situs web',
|
|
'places.formNotes': 'Catatan',
|
|
'places.formNotesPlaceholder': 'Catatan pribadi...',
|
|
'places.formReservation': 'Reservasi',
|
|
'places.reservationNotesPlaceholder':
|
|
'Catatan reservasi, nomor konfirmasi...',
|
|
'places.mapsSearchPlaceholder': 'Cari tempat...',
|
|
'places.mapsSearchError': 'Pencarian tempat gagal.',
|
|
'places.loadingDetails': 'Memuat detail tempat…',
|
|
'places.osmHint':
|
|
'Menggunakan pencarian OpenStreetMap (tanpa foto, jam buka, atau penilaian). Tambahkan Google API key di pengaturan untuk detail lengkap.',
|
|
'places.osmActive':
|
|
'Pencarian via OpenStreetMap (tanpa foto, penilaian, atau jam buka). Tambahkan Google API key di Pengaturan untuk data yang lebih lengkap.',
|
|
'places.categoryCreateError': 'Gagal membuat kategori',
|
|
'places.nameRequired': 'Harap masukkan nama',
|
|
'places.saveError': 'Gagal menyimpan',
|
|
'places.duplicateExists': "'{name}' sudah ada di perjalanan ini.",
|
|
'places.addAnyway': 'Tetap tambahkan',
|
|
'places.enrichOnImport': 'Perkaya tempat via Google',
|
|
'places.enrichOnImportHint':
|
|
'Mencari setiap tempat yang diimpor untuk menambahkan foto, alamat, dan kontak. Memerlukan kunci Google Maps.',
|
|
};
|
|
export default places;
|