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.9 KiB
TypeScript
98 lines
4.9 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
|
|
|
const places: TranslationStrings = {
|
|
'places.addPlace': 'Dodaj miejsce/atrakcję',
|
|
'places.importFile': 'Importuj plik',
|
|
'places.sidebarDrop': 'Upuść, aby zaimportować',
|
|
'places.importFileHint':
|
|
'Importuj pliki .gpx, .kml lub .kmz z narzędzi takich jak Google My Maps, Google Earth lub tracker GPS.',
|
|
'places.importFileDropHere':
|
|
'Kliknij, aby wybrać plik lub przeciągnij i upuść tutaj',
|
|
'places.importFileDropActive': 'Upuść plik, aby go wybrać',
|
|
'places.importFileUnsupported':
|
|
'Nieobsługiwany typ pliku. Użyj .gpx, .kml lub .kmz.',
|
|
'places.importFileTooLarge':
|
|
'Plik jest za duży. Maksymalny rozmiar przesyłania to {maxMb} MB.',
|
|
'places.importFileError': 'Import nie powiódł się',
|
|
'places.importAllSkipped': 'Wszystkie miejsca były już w podróży.',
|
|
'places.gpxImported': '{count} miejsc zaimportowanych z GPX',
|
|
'places.gpxImportTypes': 'Co chcesz zaimportować?',
|
|
'places.gpxImportWaypoints': 'Punkty trasy',
|
|
'places.gpxImportRoutes': 'Trasy',
|
|
'places.gpxImportTracks': 'Trasy GPS (ze śladem)',
|
|
'places.gpxImportNoneSelected': 'Wybierz co najmniej jeden typ do importu.',
|
|
'places.kmlImportTypes': 'Co chcesz zaimportować?',
|
|
'places.kmlImportPoints': 'Punkty (Placemarks)',
|
|
'places.kmlImportPaths': 'Ścieżki (LineStrings)',
|
|
'places.kmlImportNoneSelected': 'Wybierz co najmniej jeden typ.',
|
|
'places.selectionCount': '{count} zaznaczono',
|
|
'places.deleteSelected': 'Usuń wybrane',
|
|
'places.kmlKmzImported': 'Zaimportowano {count} miejsc z KMZ/KML',
|
|
'places.urlResolved': 'Miejsce zaimportowane z URL',
|
|
'places.kmlKmzSummaryValues':
|
|
'Placemarks: {total} • Zaimportowano: {created} • Pominięto: {skipped}',
|
|
'places.importGoogleList': 'Lista Google',
|
|
'places.assignToDay': 'Do którego dnia dodać?',
|
|
'places.all': 'Wszystkie',
|
|
'places.unplanned': 'Niezaplanowane',
|
|
'places.filterTracks': 'Trasy',
|
|
'places.search': 'Szukaj miejsc...',
|
|
'places.allCategories': 'Wszystkie kategorie',
|
|
'places.categoriesSelected': 'kategorii',
|
|
'places.clearFilter': 'Wyczyść filtr',
|
|
'places.count': '{count} miejsc',
|
|
'places.countSingular': '1 miejsce',
|
|
'places.allPlanned': 'Wszystkie miejsca są zaplanowane',
|
|
'places.noneFound': 'Nie znaleziono miejsc',
|
|
'places.editPlace': 'Edytuj miejsce',
|
|
'places.formName': 'Nazwa',
|
|
'places.formNamePlaceholder': 'np. Wieża Eiffla',
|
|
'places.formDescription': 'Opis',
|
|
'places.formDescriptionPlaceholder': 'Krótki opis...',
|
|
'places.formAddress': 'Adres',
|
|
'places.formAddressPlaceholder': 'Ulica, miasto, kraj',
|
|
'places.formLat': 'Szerokość (np. 48.8566)',
|
|
'places.formLng': 'Długość (np. 2.3522)',
|
|
'places.formCategory': 'Kategoria',
|
|
'places.noCategory': 'Brak kategorii',
|
|
'places.categoryNamePlaceholder': 'Nazwa kategorii',
|
|
'places.formTime': 'Godzina',
|
|
'places.startTime': 'Początek',
|
|
'places.endTime': 'Koniec',
|
|
'places.endTimeBeforeStart':
|
|
'Godzina zakończenia jest przed godziną rozpoczęcia',
|
|
'places.timeCollision': 'Nakładanie się godzin z:',
|
|
'places.formWebsite': 'Strona internetowa',
|
|
'places.formNotes': 'Notatki',
|
|
'places.formNotesPlaceholder': 'Osobiste notatki...',
|
|
'places.formReservation': 'Rezerwacja',
|
|
'places.reservationNotesPlaceholder':
|
|
'Notatki z rezerwacji, numer potwierdzenia...',
|
|
'places.mapsSearchPlaceholder': 'Szukaj miejsc...',
|
|
'places.mapsSearchError': 'Nie udało się wyszukać miejsca.',
|
|
'places.loadingDetails': 'Ładowanie szczegółów miejsca…',
|
|
'places.osmHint':
|
|
'Korzystając z OpenStreetMap (brak zdjęć, godzin otwarcia czy ocen). Dodaj klucz API Google w ustawieniach aby uzyskać pełne dane.',
|
|
'places.osmActive':
|
|
'Szukaj przez OpenStreetMap (brak zdjęć, ocen czy godzin otwarcia). Dodaj klucz API Google w ustawieniach aby uzyskać pełne dane.',
|
|
'places.categoryCreateError': 'Nie udało się utworzyć kategorii',
|
|
'places.nameRequired': 'Proszę podać nazwę',
|
|
'places.saveError': 'Nie udało się zapisać',
|
|
'places.duplicateExists': "'{name}' jest już w tej podróży.",
|
|
'places.addAnyway': 'Dodaj mimo to',
|
|
'places.importNaverList': 'Lista Naver',
|
|
'places.importList': 'Import listy',
|
|
'places.googleListHint': 'Wklej link do listy Google Maps.',
|
|
'places.googleListImported': 'Zaimportowano {count} miejsc',
|
|
'places.googleListError': 'Nie udało się zaimportować listy',
|
|
'places.naverListHint':
|
|
'Wklej link do udostępnionej listy Naver Maps, aby zaimportować wszystkie miejsca.',
|
|
'places.naverListImported': 'Zaimportowano {count} miejsc z "{list}"',
|
|
'places.naverListError': 'Nie udało się zaimportować listy Naver Maps',
|
|
'places.viewDetails': 'Zobacz szczegóły',
|
|
'places.enrichOnImport': 'Wzbogać miejsca przez Google',
|
|
'places.enrichOnImportHint':
|
|
'Wyszukuje każde zaimportowane miejsce, aby dodać zdjęcia, adres i dane kontaktowe. Wymaga klucza Google Maps.',
|
|
};
|
|
export default places;
|