mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-06-21 14:21:46 +00:00
feat(places): unified file import modal with drag-and-drop and deduplication
- Replace separate GPX and KML/KMZ import buttons with a single "Import file" modal accepting all three formats, with a drag-and-drop drop zone - Support dragging files directly onto the Places sidebar panel; overlay appears on hover and pre-loads the file into the modal on drop - Fix [object Object] description bug in KML imports caused by fast-xml-parser returning mixed-content nodes as objects; add stopNodes config and object guard in asTrimmedString - Fix CDATA sections leaking into descriptions (e.g. "text.]]>") by unwrapping CDATA markers before tag stripping - Add import deduplication across all import paths (GPX, KML/KMZ, Google list, Naver list): reimporting skips places already in the trip by name (case-insensitive) or by coordinates (within ~11 m tolerance), with intra-batch dedup so duplicate placemarks within the same file are also collapsed - Fix KML route returning 400 "No valid Placemarks found" when all placemarks were valid but deduplicated; 400 now only fires when the file contains zero placemarks - Show a warning toast "All places were already in the trip" instead of a misleading success toast when a reimport produces zero new places (GPX, KML/KMZ, Google list, Naver list) - Add 8 new i18n keys across all 14 locales; remove 11 keys made unused by the modal consolidation
This commit is contained in:
@@ -892,21 +892,19 @@ const ar: Record<string, string | { name: string; category: string }[]> = {
|
||||
|
||||
// Places Sidebar
|
||||
'places.addPlace': 'إضافة مكان/نشاط',
|
||||
'places.importGpx': 'GPX',
|
||||
'places.importKeyholeMarkup': 'KMZ / KML',
|
||||
'places.importFile': 'استيراد ملف',
|
||||
'places.sidebarDrop': 'أفلت للاستيراد',
|
||||
'places.importFileHint': 'استورد ملفات .gpx أو .kml أو .kmz من أدوات مثل Google My Maps وGoogle Earth أو جهاز تتبع GPS.',
|
||||
'places.importFileDropHere': 'انقر لاختيار ملف أو اسحبه وأفلته هنا',
|
||||
'places.importFileDropActive': 'أفلت الملف للاختيار',
|
||||
'places.importFileUnsupported': 'نوع الملف غير مدعوم. استخدم .gpx أو .kml أو .kmz.',
|
||||
'places.importFileTooLarge': 'الملف كبير جدًا. الحد الأقصى لحجم الرفع هو {maxMb} MB.',
|
||||
'places.importFileError': 'فشل الاستيراد',
|
||||
'places.importAllSkipped': 'جميع الأماكن موجودة بالفعل في الرحلة.',
|
||||
'places.gpxImported': 'تم استيراد {count} مكان من GPX',
|
||||
'places.kmlKmzImported': 'تم استيراد {count} مكان من KMZ/KML',
|
||||
'places.urlResolved': 'تم استيراد المكان من الرابط',
|
||||
'places.gpxError': 'فشل استيراد GPX',
|
||||
'places.importList': 'استيراد قائمة',
|
||||
'places.kmlKmzImportError': 'فشل استيراد KMZ/KML',
|
||||
'places.kmlKmzInvalidType': 'يرجى اختيار ملف .kml أو .kmz.',
|
||||
'places.kmlKmzTooLarge': 'الملف كبير جدًا. الحد الأقصى لحجم الرفع هو {maxMb} MB.',
|
||||
'places.kmlKmzHint': 'استورد ملفات الخرائط من أدوات مثل Google My Maps وGoogle Earth.',
|
||||
'places.kmlKmzSizeHint': 'الحد الأقصى لحجم الملف: {maxMb} MB',
|
||||
'places.kmlKmzSelectFile': 'اختيار ملف',
|
||||
'places.kmlKmzSelectedFile': 'الملف المحدد: {name}',
|
||||
'places.kmlKmzSummaryTitle': 'ملخص الاستيراد',
|
||||
'places.kmlKmzSummaryValues': 'علامات المواضع: {total} • تم الاستيراد: {created} • تم التجاوز: {skipped}',
|
||||
'places.importGoogleList': 'قائمة Google',
|
||||
'places.importNaverList': 'قائمة Naver',
|
||||
|
||||
@@ -862,21 +862,19 @@ const br: Record<string, string | { name: string; category: string }[]> = {
|
||||
|
||||
// Places Sidebar
|
||||
'places.addPlace': 'Adicionar lugar/atividade',
|
||||
'places.importGpx': 'GPX',
|
||||
'places.importKeyholeMarkup': 'KMZ / KML',
|
||||
'places.importFile': 'Importar arquivo',
|
||||
'places.sidebarDrop': 'Solte para importar',
|
||||
'places.importFileHint': 'Importe arquivos .gpx, .kml ou .kmz de ferramentas como Google My Maps, Google Earth ou um rastreador GPS.',
|
||||
'places.importFileDropHere': 'Clique para selecionar um arquivo ou arraste e solte aqui',
|
||||
'places.importFileDropActive': 'Solte o arquivo para selecionar',
|
||||
'places.importFileUnsupported': 'Tipo de arquivo não suportado. Use .gpx, .kml ou .kmz.',
|
||||
'places.importFileTooLarge': 'O arquivo é muito grande. O tamanho máximo de upload é {maxMb} MB.',
|
||||
'places.importFileError': 'Importação falhou',
|
||||
'places.importAllSkipped': 'Todos os lugares já estavam na viagem.',
|
||||
'places.gpxImported': '{count} lugares importados do GPX',
|
||||
'places.kmlKmzImported': '{count} lugares importados de KMZ/KML',
|
||||
'places.urlResolved': 'Lugar importado da URL',
|
||||
'places.gpxError': 'Falha ao importar GPX',
|
||||
'places.importList': 'Importar lista',
|
||||
'places.kmlKmzImportError': 'Falha na importação de KMZ/KML',
|
||||
'places.kmlKmzInvalidType': 'Selecione um arquivo .kml ou .kmz.',
|
||||
'places.kmlKmzTooLarge': 'O arquivo é muito grande. O tamanho máximo de upload é {maxMb} MB.',
|
||||
'places.kmlKmzHint': 'Importe arquivos de mapa de ferramentas como Google My Maps e Google Earth.',
|
||||
'places.kmlKmzSizeHint': 'Tamanho máximo do arquivo: {maxMb} MB',
|
||||
'places.kmlKmzSelectFile': 'Selecionar arquivo',
|
||||
'places.kmlKmzSelectedFile': 'Arquivo selecionado: {name}',
|
||||
'places.kmlKmzSummaryTitle': 'Resumo da importação',
|
||||
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Importados: {created} • Ignorados: {skipped}',
|
||||
'places.importGoogleList': 'Lista Google',
|
||||
'places.importNaverList': 'Lista Naver',
|
||||
|
||||
@@ -890,21 +890,19 @@ const cs: Record<string, string | { name: string; category: string }[]> = {
|
||||
|
||||
// Boční panel míst (Places Sidebar)
|
||||
'places.addPlace': 'Přidat místo/aktivitu',
|
||||
'places.importGpx': 'GPX',
|
||||
'places.importKeyholeMarkup': 'KMZ / KML',
|
||||
'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.kmlKmzImported': 'Importováno {count} míst z KMZ/KML',
|
||||
'places.urlResolved': 'Místo importováno z URL',
|
||||
'places.gpxError': 'Import GPX se nezdařil',
|
||||
'places.importList': 'Import seznamu',
|
||||
'places.kmlKmzImportError': 'Import KMZ/KML selhal',
|
||||
'places.kmlKmzInvalidType': 'Vyberte soubor .kml nebo .kmz.',
|
||||
'places.kmlKmzTooLarge': 'Soubor je příliš velký. Maximální velikost nahrání je {maxMb} MB.',
|
||||
'places.kmlKmzHint': 'Importujte mapové soubory z nástrojů jako Google My Maps a Google Earth.',
|
||||
'places.kmlKmzSizeHint': 'Maximální velikost souboru: {maxMb} MB',
|
||||
'places.kmlKmzSelectFile': 'Vybrat soubor',
|
||||
'places.kmlKmzSelectedFile': 'Vybraný soubor: {name}',
|
||||
'places.kmlKmzSummaryTitle': 'Souhrn importu',
|
||||
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Importováno: {created} • Přeskočeno: {skipped}',
|
||||
'places.importGoogleList': 'Google Seznam',
|
||||
'places.importNaverList': 'Naver Seznam',
|
||||
|
||||
@@ -893,21 +893,19 @@ const de: Record<string, string | { name: string; category: string }[]> = {
|
||||
|
||||
// Places Sidebar
|
||||
'places.addPlace': 'Ort/Aktivität hinzufügen',
|
||||
'places.importGpx': 'GPX',
|
||||
'places.importKeyholeMarkup': 'KMZ / KML',
|
||||
'places.importFile': 'Datei importieren',
|
||||
'places.sidebarDrop': 'Ablegen zum Importieren',
|
||||
'places.importFileHint': '.gpx-, .kml- oder .kmz-Dateien aus Tools wie Google My Maps, Google Earth oder einem GPS-Tracker importieren.',
|
||||
'places.importFileDropHere': 'Datei auswählen oder hierher ziehen und ablegen',
|
||||
'places.importFileDropActive': 'Datei ablegen zum Auswählen',
|
||||
'places.importFileUnsupported': 'Nicht unterstützter Dateityp. Verwende .gpx, .kml oder .kmz.',
|
||||
'places.importFileTooLarge': 'Datei ist zu groß. Maximale Upload-Größe ist {maxMb} MB.',
|
||||
'places.importFileError': 'Import fehlgeschlagen',
|
||||
'places.importAllSkipped': 'Alle Orte waren bereits in der Reise.',
|
||||
'places.gpxImported': '{count} Orte aus GPX importiert',
|
||||
'places.kmlKmzImported': '{count} Orte aus KMZ/KML importiert',
|
||||
'places.urlResolved': 'Ort aus URL importiert',
|
||||
'places.gpxError': 'GPX-Import fehlgeschlagen',
|
||||
'places.importList': 'Listenimport',
|
||||
'places.kmlKmzImportError': 'KMZ/KML-Import fehlgeschlagen',
|
||||
'places.kmlKmzInvalidType': 'Bitte eine .kml- oder .kmz-Datei auswählen.',
|
||||
'places.kmlKmzTooLarge': 'Datei ist zu groß. Maximale Upload-Größe ist {maxMb} MB.',
|
||||
'places.kmlKmzHint': 'Importiere Kartendateien aus Tools wie Google My Maps und Google Earth.',
|
||||
'places.kmlKmzSizeHint': 'Max. Dateigröße: {maxMb} MB',
|
||||
'places.kmlKmzSelectFile': 'Datei auswählen',
|
||||
'places.kmlKmzSelectedFile': 'Ausgewählte Datei: {name}',
|
||||
'places.kmlKmzSummaryTitle': 'Importzusammenfassung',
|
||||
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Importiert: {created} • Übersprungen: {skipped}',
|
||||
'places.importGoogleList': 'Google Liste',
|
||||
'places.importNaverList': 'Naver Liste',
|
||||
|
||||
@@ -915,21 +915,19 @@ const en: Record<string, string | { name: string; category: string }[]> = {
|
||||
|
||||
// Places Sidebar
|
||||
'places.addPlace': 'Add Place/Activity',
|
||||
'places.importGpx': 'GPX',
|
||||
'places.importKeyholeMarkup': 'KMZ / KML',
|
||||
'places.importFile': 'Import file',
|
||||
'places.sidebarDrop': 'Drop to import',
|
||||
'places.importFileHint': 'Import .gpx, .kml or .kmz files from tools like Google My Maps, Google Earth, or a GPS tracker.',
|
||||
'places.importFileDropHere': 'Click to select a file or drag and drop here',
|
||||
'places.importFileDropActive': 'Drop file to select',
|
||||
'places.importFileUnsupported': 'Unsupported file type. Use .gpx, .kml or .kmz.',
|
||||
'places.importFileTooLarge': 'File is too large. Maximum upload size is {maxMb} MB.',
|
||||
'places.importFileError': 'Import failed',
|
||||
'places.importAllSkipped': 'All places were already in the trip.',
|
||||
'places.gpxImported': '{count} places imported from GPX',
|
||||
'places.kmlKmzImported': '{count} places imported from KMZ/KML',
|
||||
'places.urlResolved': 'Place imported from URL',
|
||||
'places.gpxError': 'GPX import failed',
|
||||
'places.importList': 'List Import',
|
||||
'places.kmlKmzImportError': 'KMZ/KML import failed',
|
||||
'places.kmlKmzInvalidType': 'Please select a .kml or .kmz file.',
|
||||
'places.kmlKmzTooLarge': 'File is too large. Maximum upload size is {maxMb} MB.',
|
||||
'places.kmlKmzHint': 'Import map files from tools like Google My Maps and Google Earth.',
|
||||
'places.kmlKmzSizeHint': 'Max file size: {maxMb} MB',
|
||||
'places.kmlKmzSelectFile': 'Select File',
|
||||
'places.kmlKmzSelectedFile': 'Selected file: {name}',
|
||||
'places.kmlKmzSummaryTitle': 'Import summary',
|
||||
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Imported: {created} • Skipped: {skipped}',
|
||||
'places.importGoogleList': 'Google List',
|
||||
'places.importNaverList': 'Naver List',
|
||||
|
||||
@@ -865,21 +865,19 @@ const es: Record<string, string> = {
|
||||
|
||||
// Places Sidebar
|
||||
'places.addPlace': 'Añadir lugar/actividad',
|
||||
'places.importGpx': 'GPX',
|
||||
'places.importKeyholeMarkup': 'KMZ / KML',
|
||||
'places.importFile': 'Importar archivo',
|
||||
'places.sidebarDrop': 'Soltar para importar',
|
||||
'places.importFileHint': 'Importa archivos .gpx, .kml o .kmz de herramientas como Google My Maps, Google Earth o un rastreador GPS.',
|
||||
'places.importFileDropHere': 'Haz clic para seleccionar un archivo o arrástralo aquí',
|
||||
'places.importFileDropActive': 'Suelta el archivo para seleccionarlo',
|
||||
'places.importFileUnsupported': 'Tipo de archivo no compatible. Usa .gpx, .kml o .kmz.',
|
||||
'places.importFileTooLarge': 'El archivo es demasiado grande. El tamaño máximo de carga es {maxMb} MB.',
|
||||
'places.importFileError': 'Importación fallida',
|
||||
'places.importAllSkipped': 'Todos los lugares ya estaban en el viaje.',
|
||||
'places.gpxImported': '{count} lugares importados desde GPX',
|
||||
'places.kmlKmzImported': '{count} lugares importados desde KMZ/KML',
|
||||
'places.urlResolved': 'Lugar importado desde URL',
|
||||
'places.gpxError': 'Error al importar GPX',
|
||||
'places.importList': 'Importar lista',
|
||||
'places.kmlKmzImportError': 'La importación KMZ/KML falló',
|
||||
'places.kmlKmzInvalidType': 'Selecciona un archivo .kml o .kmz.',
|
||||
'places.kmlKmzTooLarge': 'El archivo es demasiado grande. El tamaño máximo de carga es {maxMb} MB.',
|
||||
'places.kmlKmzHint': 'Importa archivos de mapa desde herramientas como Google My Maps y Google Earth.',
|
||||
'places.kmlKmzSizeHint': 'Tamaño máximo de archivo: {maxMb} MB',
|
||||
'places.kmlKmzSelectFile': 'Seleccionar archivo',
|
||||
'places.kmlKmzSelectedFile': 'Archivo seleccionado: {name}',
|
||||
'places.kmlKmzSummaryTitle': 'Resumen de importación',
|
||||
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Importados: {created} • Omitidos: {skipped}',
|
||||
'places.importGoogleList': 'Lista Google',
|
||||
'places.importNaverList': 'Lista Naver',
|
||||
|
||||
@@ -889,21 +889,19 @@ const fr: Record<string, string> = {
|
||||
|
||||
// Places Sidebar
|
||||
'places.addPlace': 'Ajouter un lieu/activité',
|
||||
'places.importGpx': 'GPX',
|
||||
'places.importKeyholeMarkup': 'KMZ / KML',
|
||||
'places.importFile': 'Importer un fichier',
|
||||
'places.sidebarDrop': 'Déposer pour importer',
|
||||
'places.importFileHint': 'Importez des fichiers .gpx, .kml ou .kmz depuis des outils comme Google My Maps, Google Earth ou un traceur GPS.',
|
||||
'places.importFileDropHere': 'Cliquez pour sélectionner un fichier ou glissez-déposez ici',
|
||||
'places.importFileDropActive': 'Déposez le fichier pour le sélectionner',
|
||||
'places.importFileUnsupported': 'Type de fichier non pris en charge. Utilisez .gpx, .kml ou .kmz.',
|
||||
'places.importFileTooLarge': 'Le fichier est trop volumineux. La taille maximale est de {maxMb} MB.',
|
||||
'places.importFileError': 'Importation échouée',
|
||||
'places.importAllSkipped': 'Tous les lieux étaient déjà dans le voyage.',
|
||||
'places.gpxImported': '{count} lieux importés depuis GPX',
|
||||
'places.kmlKmzImported': '{count} lieux importés depuis KMZ/KML',
|
||||
'places.urlResolved': 'Lieu importé depuis l\'URL',
|
||||
'places.gpxError': 'L\'import GPX a échoué',
|
||||
'places.importList': 'Import de liste',
|
||||
'places.kmlKmzImportError': 'L\'import KMZ/KML a échoué',
|
||||
'places.kmlKmzInvalidType': 'Veuillez sélectionner un fichier .kml ou .kmz.',
|
||||
'places.kmlKmzTooLarge': 'Le fichier est trop volumineux. La taille maximale est de {maxMb} MB.',
|
||||
'places.kmlKmzHint': 'Importez des fichiers de carte depuis des outils comme Google My Maps et Google Earth.',
|
||||
'places.kmlKmzSizeHint': 'Taille maximale du fichier : {maxMb} MB',
|
||||
'places.kmlKmzSelectFile': 'Sélectionner un fichier',
|
||||
'places.kmlKmzSelectedFile': 'Fichier sélectionné : {name}',
|
||||
'places.kmlKmzSummaryTitle': 'Résumé d\'import',
|
||||
'places.kmlKmzSummaryValues': 'Placemarks : {total} • Importés : {created} • Ignorés : {skipped}',
|
||||
'places.importGoogleList': 'Liste Google',
|
||||
'places.importNaverList': 'Liste Naver',
|
||||
|
||||
@@ -890,21 +890,19 @@ const hu: Record<string, string | { name: string; category: string }[]> = {
|
||||
|
||||
// Helyek oldalsáv
|
||||
'places.addPlace': 'Hely/Tevékenység hozzáadása',
|
||||
'places.importGpx': 'GPX',
|
||||
'places.importKeyholeMarkup': 'KMZ / KML',
|
||||
'places.importFile': 'Fájl importálása',
|
||||
'places.sidebarDrop': 'Ejtse el az importáláshoz',
|
||||
'places.importFileHint': '.gpx, .kml vagy .kmz fájlok importálása olyan eszközökből, mint a Google My Maps, Google Earth vagy egy GPS tracker.',
|
||||
'places.importFileDropHere': 'Kattintson egy fájl kiválasztásához, vagy húzza ide',
|
||||
'places.importFileDropActive': 'Ejtse ide a fájlt a kiválasztáshoz',
|
||||
'places.importFileUnsupported': 'Nem támogatott fájltípus. Használjon .gpx, .kml vagy .kmz fájlt.',
|
||||
'places.importFileTooLarge': 'A fájl túl nagy. A maximális feltöltési méret {maxMb} MB.',
|
||||
'places.importFileError': 'Importálás sikertelen',
|
||||
'places.importAllSkipped': 'Minden hely már szerepel az utazásban.',
|
||||
'places.gpxImported': '{count} hely importálva GPX-ből',
|
||||
'places.kmlKmzImported': '{count} hely importálva KMZ/KML-ből',
|
||||
'places.urlResolved': 'Hely importálva URL-ből',
|
||||
'places.gpxError': 'GPX importálás sikertelen',
|
||||
'places.importList': 'Lista importálás',
|
||||
'places.kmlKmzImportError': 'A KMZ/KML importálás sikertelen',
|
||||
'places.kmlKmzInvalidType': 'Válassz egy .kml vagy .kmz fájlt.',
|
||||
'places.kmlKmzTooLarge': 'A fájl túl nagy. A maximális feltöltési méret {maxMb} MB.',
|
||||
'places.kmlKmzHint': 'Térképfájlok importálása olyan eszközökből, mint a Google My Maps és a Google Earth.',
|
||||
'places.kmlKmzSizeHint': 'Maximális fájlméret: {maxMb} MB',
|
||||
'places.kmlKmzSelectFile': 'Fájl kiválasztása',
|
||||
'places.kmlKmzSelectedFile': 'Kiválasztott fájl: {name}',
|
||||
'places.kmlKmzSummaryTitle': 'Import összegzés',
|
||||
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Importálva: {created} • Kihagyva: {skipped}',
|
||||
'places.importGoogleList': 'Google Lista',
|
||||
'places.importNaverList': 'Naver Lista',
|
||||
|
||||
@@ -890,21 +890,19 @@ const it: Record<string, string | { name: string; category: string }[]> = {
|
||||
|
||||
// Places Sidebar
|
||||
'places.addPlace': 'Aggiungi Luogo/Attività',
|
||||
'places.importGpx': 'GPX',
|
||||
'places.importKeyholeMarkup': 'KMZ / KML',
|
||||
'places.importFile': 'Importa file',
|
||||
'places.sidebarDrop': 'Rilascia per importare',
|
||||
'places.importFileHint': 'Importa file .gpx, .kml o .kmz da strumenti come Google My Maps, Google Earth o un tracker GPS.',
|
||||
'places.importFileDropHere': 'Clicca per selezionare un file o trascina e rilascia qui',
|
||||
'places.importFileDropActive': 'Rilascia il file per selezionarlo',
|
||||
'places.importFileUnsupported': 'Tipo di file non supportato. Usa .gpx, .kml o .kmz.',
|
||||
'places.importFileTooLarge': 'Il file è troppo grande. La dimensione massima di caricamento è {maxMb} MB.',
|
||||
'places.importFileError': 'Importazione non riuscita',
|
||||
'places.importAllSkipped': 'Tutti i luoghi erano già nel viaggio.',
|
||||
'places.gpxImported': '{count} luoghi importati da GPX',
|
||||
'places.kmlKmzImported': '{count} luoghi importati da KMZ/KML',
|
||||
'places.urlResolved': 'Luogo importato dall\'URL',
|
||||
'places.gpxError': 'Importazione GPX non riuscita',
|
||||
'places.importList': 'Importa lista',
|
||||
'places.kmlKmzImportError': 'Importazione KMZ/KML non riuscita',
|
||||
'places.kmlKmzInvalidType': 'Seleziona un file .kml o .kmz.',
|
||||
'places.kmlKmzTooLarge': 'Il file è troppo grande. La dimensione massima di caricamento è {maxMb} MB.',
|
||||
'places.kmlKmzHint': 'Importa file mappa da strumenti come Google My Maps e Google Earth.',
|
||||
'places.kmlKmzSizeHint': 'Dimensione massima file: {maxMb} MB',
|
||||
'places.kmlKmzSelectFile': 'Seleziona file',
|
||||
'places.kmlKmzSelectedFile': 'File selezionato: {name}',
|
||||
'places.kmlKmzSummaryTitle': 'Riepilogo importazione',
|
||||
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Importati: {created} • Saltati: {skipped}',
|
||||
'places.importGoogleList': 'Lista Google',
|
||||
'places.importNaverList': 'Lista Naver',
|
||||
|
||||
@@ -889,21 +889,19 @@ const nl: Record<string, string> = {
|
||||
|
||||
// Places Sidebar
|
||||
'places.addPlace': 'Plaats/activiteit toevoegen',
|
||||
'places.importGpx': 'GPX',
|
||||
'places.importKeyholeMarkup': 'KMZ / KML',
|
||||
'places.importFile': 'Bestand importeren',
|
||||
'places.sidebarDrop': 'Loslaten om te importeren',
|
||||
'places.importFileHint': 'Importeer .gpx-, .kml- of .kmz-bestanden uit tools zoals Google My Maps, Google Earth of een GPS-tracker.',
|
||||
'places.importFileDropHere': 'Klik om een bestand te selecteren of sleep het hier naartoe',
|
||||
'places.importFileDropActive': 'Laat het bestand los om het te selecteren',
|
||||
'places.importFileUnsupported': 'Niet-ondersteund bestandstype. Gebruik .gpx, .kml of .kmz.',
|
||||
'places.importFileTooLarge': 'Bestand is te groot. Maximale uploadgrootte is {maxMb} MB.',
|
||||
'places.importFileError': 'Importeren mislukt',
|
||||
'places.importAllSkipped': 'Alle plaatsen waren al in de reis.',
|
||||
'places.gpxImported': '{count} plaatsen geïmporteerd uit GPX',
|
||||
'places.kmlKmzImported': '{count} plaatsen geïmporteerd uit KMZ/KML',
|
||||
'places.urlResolved': 'Plaats geïmporteerd van URL',
|
||||
'places.gpxError': 'GPX-import mislukt',
|
||||
'places.importList': 'Lijst importeren',
|
||||
'places.kmlKmzImportError': 'KMZ/KML-import mislukt',
|
||||
'places.kmlKmzInvalidType': 'Selecteer een .kml- of .kmz-bestand.',
|
||||
'places.kmlKmzTooLarge': 'Bestand is te groot. Maximale uploadgrootte is {maxMb} MB.',
|
||||
'places.kmlKmzHint': 'Importeer kaartbestanden uit tools zoals Google My Maps en Google Earth.',
|
||||
'places.kmlKmzSizeHint': 'Max. bestandsgrootte: {maxMb} MB',
|
||||
'places.kmlKmzSelectFile': 'Bestand selecteren',
|
||||
'places.kmlKmzSelectedFile': 'Geselecteerd bestand: {name}',
|
||||
'places.kmlKmzSummaryTitle': 'Importoverzicht',
|
||||
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Geïmporteerd: {created} • Overgeslagen: {skipped}',
|
||||
'places.importGoogleList': 'Google Lijst',
|
||||
'places.importNaverList': 'Naver Lijst',
|
||||
|
||||
@@ -856,20 +856,18 @@ const pl: Record<string, string | { name: string; category: string }[]> = {
|
||||
|
||||
// Places Sidebar
|
||||
'places.addPlace': 'Dodaj miejsce/atrakcję',
|
||||
'places.importGpx': 'Importuj GPX',
|
||||
'places.importKeyholeMarkup': 'KMZ / KML',
|
||||
'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.kmlKmzImported': 'Zaimportowano {count} miejsc z KMZ/KML',
|
||||
'places.urlResolved': 'Miejsce zaimportowane z URL',
|
||||
'places.gpxError': 'Nie udało się zaimportować pliku GPX',
|
||||
'places.kmlKmzImportError': 'Import KMZ/KML nie powiódł się',
|
||||
'places.kmlKmzInvalidType': 'Wybierz plik .kml lub .kmz.',
|
||||
'places.kmlKmzTooLarge': 'Plik jest za duży. Maksymalny rozmiar przesyłania to {maxMb} MB.',
|
||||
'places.kmlKmzHint': 'Importuj pliki map z narzędzi takich jak Google My Maps i Google Earth.',
|
||||
'places.kmlKmzSizeHint': 'Maksymalny rozmiar pliku: {maxMb} MB',
|
||||
'places.kmlKmzSelectFile': 'Wybierz plik',
|
||||
'places.kmlKmzSelectedFile': 'Wybrany plik: {name}',
|
||||
'places.kmlKmzSummaryTitle': 'Podsumowanie importu',
|
||||
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Zaimportowano: {created} • Pominięto: {skipped}',
|
||||
'places.importGoogleList': 'Lista Google',
|
||||
'places.assignToDay': 'Do którego dnia dodać?',
|
||||
|
||||
@@ -889,21 +889,19 @@ const ru: Record<string, string> = {
|
||||
|
||||
// Places Sidebar
|
||||
'places.addPlace': 'Добавить место/активность',
|
||||
'places.importGpx': 'GPX',
|
||||
'places.importKeyholeMarkup': 'KMZ / KML',
|
||||
'places.importFile': 'Импортировать файл',
|
||||
'places.sidebarDrop': 'Отпустите для импорта',
|
||||
'places.importFileHint': 'Импортируйте файлы .gpx, .kml или .kmz из инструментов, таких как Google My Maps, Google Earth или GPS-трекер.',
|
||||
'places.importFileDropHere': 'Нажмите для выбора файла или перетащите его сюда',
|
||||
'places.importFileDropActive': 'Отпустите файл для выбора',
|
||||
'places.importFileUnsupported': 'Неподдерживаемый тип файла. Используйте .gpx, .kml или .kmz.',
|
||||
'places.importFileTooLarge': 'Файл слишком большой. Максимальный размер загрузки — {maxMb} MB.',
|
||||
'places.importFileError': 'Ошибка импорта',
|
||||
'places.importAllSkipped': 'Все места уже были в поездке.',
|
||||
'places.gpxImported': '{count} мест импортировано из GPX',
|
||||
'places.kmlKmzImported': '{count} мест импортировано из KMZ/KML',
|
||||
'places.urlResolved': 'Место импортировано из URL',
|
||||
'places.gpxError': 'Ошибка импорта GPX',
|
||||
'places.importList': 'Импорт списка',
|
||||
'places.kmlKmzImportError': 'Ошибка импорта KMZ/KML',
|
||||
'places.kmlKmzInvalidType': 'Выберите файл .kml или .kmz.',
|
||||
'places.kmlKmzTooLarge': 'Файл слишком большой. Максимальный размер загрузки — {maxMb} MB.',
|
||||
'places.kmlKmzHint': 'Импортируйте файлы карт из инструментов, таких как Google My Maps и Google Earth.',
|
||||
'places.kmlKmzSizeHint': 'Максимальный размер файла: {maxMb} MB',
|
||||
'places.kmlKmzSelectFile': 'Выбрать файл',
|
||||
'places.kmlKmzSelectedFile': 'Выбранный файл: {name}',
|
||||
'places.kmlKmzSummaryTitle': 'Сводка импорта',
|
||||
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Импортировано: {created} • Пропущено: {skipped}',
|
||||
'places.importGoogleList': 'Список Google',
|
||||
'places.importNaverList': 'Список Naver',
|
||||
|
||||
@@ -889,21 +889,19 @@ const zh: Record<string, string> = {
|
||||
|
||||
// Places Sidebar
|
||||
'places.addPlace': '添加地点/活动',
|
||||
'places.importGpx': 'GPX',
|
||||
'places.importKeyholeMarkup': 'KMZ / KML',
|
||||
'places.importFile': '导入文件',
|
||||
'places.sidebarDrop': '拖放以导入',
|
||||
'places.importFileHint': '从 Google My Maps、Google Earth 或 GPS 追踪器等工具导入 .gpx、.kml 或 .kmz 文件。',
|
||||
'places.importFileDropHere': '点击选择文件或拖放到此处',
|
||||
'places.importFileDropActive': '释放文件以选择',
|
||||
'places.importFileUnsupported': '不支持的文件类型,请使用 .gpx、.kml 或 .kmz。',
|
||||
'places.importFileTooLarge': '文件过大。最大上传大小为 {maxMb} MB。',
|
||||
'places.importFileError': '导入失败',
|
||||
'places.importAllSkipped': '所有地点已在行程中。',
|
||||
'places.gpxImported': '已从 GPX 导入 {count} 个地点',
|
||||
'places.kmlKmzImported': '已从 KMZ/KML 导入 {count} 个地点',
|
||||
'places.urlResolved': '已从 URL 导入地点',
|
||||
'places.gpxError': 'GPX 导入失败',
|
||||
'places.importList': '列表导入',
|
||||
'places.kmlKmzImportError': 'KMZ/KML 导入失败',
|
||||
'places.kmlKmzInvalidType': '请选择 .kml 或 .kmz 文件。',
|
||||
'places.kmlKmzTooLarge': '文件过大。最大上传大小为 {maxMb} MB。',
|
||||
'places.kmlKmzHint': '可从 Google My Maps、Google Earth 等工具导入地图文件。',
|
||||
'places.kmlKmzSizeHint': '最大文件大小:{maxMb} MB',
|
||||
'places.kmlKmzSelectFile': '选择文件',
|
||||
'places.kmlKmzSelectedFile': '已选择文件:{name}',
|
||||
'places.kmlKmzSummaryTitle': '导入摘要',
|
||||
'places.kmlKmzSummaryValues': 'Placemarks:{total} • 已导入:{created} • 已跳过:{skipped}',
|
||||
'places.importGoogleList': 'Google 列表',
|
||||
'places.importNaverList': 'Naver 列表',
|
||||
|
||||
@@ -914,21 +914,19 @@ const zhTw: Record<string, string> = {
|
||||
|
||||
// Places Sidebar
|
||||
'places.addPlace': '新增地點/活動',
|
||||
'places.importGpx': 'GPX',
|
||||
'places.importKeyholeMarkup': 'KMZ / KML',
|
||||
'places.importFile': '匯入檔案',
|
||||
'places.sidebarDrop': '拖放以匯入',
|
||||
'places.importFileHint': '從 Google My Maps、Google Earth 或 GPS 追蹤器等工具匯入 .gpx、.kml 或 .kmz 檔案。',
|
||||
'places.importFileDropHere': '點選以選取檔案或拖放至此處',
|
||||
'places.importFileDropActive': '放開檔案以選取',
|
||||
'places.importFileUnsupported': '不支援的檔案類型,請使用 .gpx、.kml 或 .kmz。',
|
||||
'places.importFileTooLarge': '檔案過大。最大上傳大小為 {maxMb} MB。',
|
||||
'places.importFileError': '匯入失敗',
|
||||
'places.importAllSkipped': '所有地點已在行程中。',
|
||||
'places.gpxImported': '已從 GPX 匯入 {count} 個地點',
|
||||
'places.kmlKmzImported': '已從 KMZ/KML 匯入 {count} 個地點',
|
||||
'places.urlResolved': '已從 URL 匯入地點',
|
||||
'places.gpxError': 'GPX 匯入失敗',
|
||||
'places.importList': '列表匯入',
|
||||
'places.kmlKmzImportError': 'KMZ/KML 匯入失敗',
|
||||
'places.kmlKmzInvalidType': '請選擇 .kml 或 .kmz 檔案。',
|
||||
'places.kmlKmzTooLarge': '檔案過大。最大上傳大小為 {maxMb} MB。',
|
||||
'places.kmlKmzHint': '可從 Google My Maps、Google Earth 等工具匯入地圖檔案。',
|
||||
'places.kmlKmzSizeHint': '最大檔案大小:{maxMb} MB',
|
||||
'places.kmlKmzSelectFile': '選擇檔案',
|
||||
'places.kmlKmzSelectedFile': '已選擇檔案:{name}',
|
||||
'places.kmlKmzSummaryTitle': '匯入摘要',
|
||||
'places.kmlKmzSummaryValues': 'Placemarks:{total} • 已匯入:{created} • 已略過:{skipped}',
|
||||
'places.importGoogleList': 'Google 列表',
|
||||
'places.importNaverList': 'Naver 列表',
|
||||
|
||||
Reference in New Issue
Block a user