Files
TREK/shared/src/i18n/cs/places.ts
T
Maurice 3e9626fce9 feat(places): enrich list-imported places via the Places API (#886) (#1161)
* 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.
2026-06-14 00:54:11 +02:00

97 lines
4.7 KiB
TypeScript

import type { TranslationStrings } from '../types';
const places: TranslationStrings = {
'places.addPlace': 'Přidat místo/aktivitu',
'places.importFile': 'Importovat soubor',
'places.sidebarDrop': 'Pusťte pro import',
'places.importFileHint':
'Importujte soubory .gpx, .kml nebo .kmz z nástrojů jako Google My Maps, Google Earth nebo GPS tracker.',
'places.importFileDropHere':
'Klikněte pro výběr souboru nebo jej přetáhněte sem',
'places.importFileDropActive': 'Přetáhněte soubor pro výběr',
'places.importFileUnsupported':
'Nepodporovaný typ souboru. Použijte .gpx, .kml nebo .kmz.',
'places.importFileTooLarge':
'Soubor je příliš velký. Maximální velikost nahrání je {maxMb} MB.',
'places.importFileError': 'Import se nezdařil',
'places.importAllSkipped': 'Všechna místa již byla v cestě.',
'places.gpxImported': '{count} míst importováno z GPX',
'places.gpxImportTypes': 'Co chcete importovat?',
'places.gpxImportWaypoints': 'Trasové body',
'places.gpxImportRoutes': 'Trasy',
'places.gpxImportTracks': 'Trasy GPS (s geometrií)',
'places.gpxImportNoneSelected': 'Vyberte alespoň jeden typ k importu.',
'places.kmlImportTypes': 'Co chcete importovat?',
'places.kmlImportPoints': 'Body (Placemarks)',
'places.kmlImportPaths': 'Trasy (LineStrings)',
'places.kmlImportNoneSelected': 'Vyberte alespoň jeden typ.',
'places.selectionCount': '{count} vybráno',
'places.deleteSelected': 'Smazat vybrané',
'places.kmlKmzImported': 'Importováno {count} míst z KMZ/KML',
'places.urlResolved': 'Místo importováno z URL',
'places.importList': 'Import seznamu',
'places.kmlKmzSummaryValues':
'Placemarks: {total} • Importováno: {created} • Přeskočeno: {skipped}',
'places.importGoogleList': 'Google Seznam',
'places.importNaverList': 'Naver Seznam',
'places.googleListHint':
'Vložte sdílený odkaz na seznam Google Maps pro import všech míst.',
'places.googleListImported': '{count} míst importováno ze seznamu "{list}"',
'places.googleListError': 'Import seznamu Google Maps se nezdařil',
'places.naverListHint':
'Vložte sdílený odkaz na seznam Naver Maps pro import všech míst.',
'places.naverListImported': '{count} míst importováno ze seznamu "{list}"',
'places.naverListError': 'Import seznamu Naver Maps se nezdařil',
'places.viewDetails': 'Zobrazit detaily',
'places.assignToDay': 'Přidat do kterého dne?',
'places.all': 'Vše',
'places.unplanned': 'Nezařazené',
'places.filterTracks': 'Trasy',
'places.search': 'Hledat místa...',
'places.allCategories': 'Všechny kategorie',
'places.categoriesSelected': 'kategorií',
'places.clearFilter': 'Vymazat filtr',
'places.count': '{count} míst',
'places.countSingular': '1 místo',
'places.allPlanned': 'Všechna místa jsou naplánována',
'places.noneFound': 'Žádná místa nebyla nalezena',
'places.editPlace': 'Upravit místo',
'places.formName': 'Název',
'places.formNamePlaceholder': 'např. Eiffelova věž',
'places.formDescription': 'Popis',
'places.formDescriptionPlaceholder': 'Krátký popis...',
'places.formAddress': 'Adresa',
'places.formAddressPlaceholder': 'Ulice, město, země',
'places.formLat': 'Zeměpisná šířka',
'places.formLng': 'Zeměpisná délka',
'places.formCategory': 'Kategorie',
'places.noCategory': 'Bez kategorie',
'places.categoryNamePlaceholder': 'Název kategorie',
'places.formTime': 'Čas',
'places.startTime': 'Od',
'places.endTime': 'Do',
'places.endTimeBeforeStart': 'Čas konce je před časem začátku',
'places.timeCollision': 'Časový překryv s:',
'places.formWebsite': 'Webové stránky',
'places.formNotes': 'Poznámky',
'places.formNotesPlaceholder': 'Osobní poznámky...',
'places.formReservation': 'Rezervace',
'places.reservationNotesPlaceholder':
'Poznámky k rezervaci, potvrzovací kód...',
'places.mapsSearchPlaceholder': 'Hledat místa...',
'places.mapsSearchError': 'Hledání místa se nezdařilo.',
'places.loadingDetails': 'Načítání podrobností místa…',
'places.osmHint':
'Používáte hledání přes OpenStreetMap (bez fotek a hodnocení). Pro plné detaily přidejte Google API klíč v nastavení.',
'places.osmActive': 'Hledání přes OpenStreetMap.',
'places.categoryCreateError': 'Nepodařilo se vytvořit kategorii',
'places.nameRequired': 'Prosím zadejte název',
'places.saveError': 'Uložení se nezdařilo',
'places.duplicateExists': "'{name}' už v tomto výletu existuje.",
'places.addAnyway': 'Přesto přidat',
'places.enrichOnImport': 'Obohatit místa přes Google',
'places.enrichOnImportHint':
'Vyhledá každé importované místo a doplní fotky, adresu a kontakty. Vyžaduje klíč Google Maps.',
};
export default places;