feat(client): refine KMZ/KML import dialog and localize all locales

This commit is contained in:
Yannis Biasutti
2026-04-06 19:13:54 +02:00
parent c671b5ff17
commit 2cc79b3d16
15 changed files with 177 additions and 149 deletions
+31 -17
View File
@@ -48,6 +48,7 @@ const PlacesSidebar = React.memo(function PlacesSidebar({
const toast = useToast()
const ctxMenu = useContextMenu()
const gpxInputRef = useRef<HTMLInputElement>(null)
const kmlKmzInputRef = useRef<HTMLInputElement>(null)
const trip = useTripStore((s) => s.trip)
const loadTrip = useTripStore((s) => s.loadTrip)
const can = useCanDo()
@@ -602,43 +603,52 @@ const PlacesSidebar = React.memo(function PlacesSidebar({
<div style={{ fontSize: 15, fontWeight: 700, color: 'var(--text-primary)', marginBottom: 6 }}>
{t('places.importKmlKmz')}
</div>
<div style={{ fontSize: 12, color: 'var(--text-faint)', marginBottom: 10 }}>
<div style={{ fontSize: 12, color: 'var(--text-faint)', marginBottom: 14, lineHeight: 1.45 }}>
{t('places.kmlKmzHint')}
</div>
<div style={{ fontSize: 12, color: 'var(--text-faint)', marginBottom: 14 }}>
{t('places.kmlKmzSizeHint', { maxMb: 10 })}
</div>
<input
ref={kmlKmzInputRef}
type="file"
accept=".kml,.kmz"
style={{ display: 'none' }}
onChange={e => {
const file = e.target.files?.[0] || null
setKmlKmzFile(file)
setKmlKmzSummary(null)
setKmlKmzError('')
}}
style={{
width: '100%', padding: '8px 10px', borderRadius: 10,
border: '1px solid var(--border-primary)', background: 'var(--bg-tertiary)',
fontSize: 12, color: 'var(--text-primary)', boxSizing: 'border-box', marginBottom: 12,
}}
/>
{kmlKmzFile && (
<div style={{ fontSize: 12, color: 'var(--text-muted)', marginBottom: 10 }}>
{t('places.kmlKmzSelectedFile', { name: kmlKmzFile.name })}
</div>
)}
<button
onClick={() => kmlKmzInputRef.current?.click()}
style={{
width: '100%',
height: 44,
borderRadius: 12,
border: '1px dashed var(--border-primary)',
background: 'transparent',
color: 'var(--text-primary)',
display: 'flex',
alignItems: 'center',
justifyContent: 'center',
gap: 8,
fontSize: 13,
fontWeight: 500,
cursor: 'pointer',
marginBottom: 12,
fontFamily: 'inherit',
}}
>
<Upload size={14} strokeWidth={2} />
{kmlKmzFile ? t('places.kmlKmzSelectedFile', { name: kmlKmzFile.name }) : t('places.kmlKmzSelectFile')}
</button>
{kmlKmzSummary && (
<div style={{
border: '1px solid var(--border-primary)', borderRadius: 10,
background: 'var(--bg-tertiary)', padding: 10, marginBottom: 10,
}}>
<div style={{ fontSize: 12, fontWeight: 600, color: 'var(--text-primary)', marginBottom: 6 }}>
{t('places.kmlKmzSummaryTitle')}
</div>
<div style={{ fontSize: 12, color: 'var(--text-muted)' }}>
{t('places.kmlKmzSummaryValues', {
total: kmlKmzSummary.totalPlacemarks,
@@ -664,6 +674,10 @@ const PlacesSidebar = React.memo(function PlacesSidebar({
</div>
)}
<div style={{ fontSize: 11, color: 'var(--text-faint)', marginBottom: 12 }}>
{t('places.kmlKmzSizeHint', { maxMb: 10 })}
</div>
<div style={{ display: 'flex', gap: 8, justifyContent: 'flex-end' }}>
<button
onClick={() => { setKmlKmzOpen(false); resetKmlKmzDialog() }}
+11 -10
View File
@@ -812,16 +812,17 @@ const ar: Record<string, string | { name: string; category: string }[]> = {
// Places Sidebar
'places.addPlace': 'إضافة مكان/نشاط',
'places.importGpx': 'GPX',
'places.importKmlKmz': 'TODO: KMZ / KML',
'places.kmlKmzImportError': 'TODO: KMZ/KML import failed',
'places.kmlKmzInvalidType': 'TODO: Please select a .kml or .kmz file.',
'places.kmlKmzTooLarge': 'TODO: File is too large. Maximum upload size is {maxMb} MB.',
'places.kmlKmzHint': 'TODO: KML/KMZ are common map export formats used by apps like Google My Maps and Google Earth. TREK imports Placemark name, description, and coordinates.',
'places.kmlKmzSizeHint': 'TODO: Maximum file size: {maxMb} MB (same limit as GPX).',
'places.kmlKmzSelectedFile': 'TODO: Selected file: {name}',
'places.kmlKmzSummaryTitle': 'TODO: Import summary',
'places.kmlKmzSummaryValues': 'TODO: Placemarks: {total} - Imported: {created} - Skipped: {skipped}',
'places.importKmlKmz': 'KMZ / KML',
'places.kmlKmzSelectFile': 'اختيار ملف',
'places.kmlKmzImported': 'تم استيراد {count} مكان من KMZ/KML',
'places.kmlKmzImportError': 'فشل استيراد KMZ/KML',
'places.kmlKmzInvalidType': 'يرجى اختيار ملف .kml أو .kmz.',
'places.kmlKmzTooLarge': 'الملف كبير جدًا. الحد الأقصى لحجم الرفع هو {maxMb} MB.',
'places.kmlKmzHint': 'استورد ملفات الخرائط من أدوات مثل Google My Maps وGoogle Earth.',
'places.kmlKmzSizeHint': 'الحد الأقصى لحجم الملف: {maxMb} MB',
'places.kmlKmzSelectedFile': 'الملف المحدد: {name}',
'places.kmlKmzSummaryTitle': 'ملخص الاستيراد',
'places.kmlKmzSummaryValues': 'علامات المواضع: {total} • تم الاستيراد: {created} • تم التجاوز: {skipped}',
'places.gpxImported': 'تم استيراد {count} مكان من GPX',
'places.gpxError': 'فشل استيراد GPX',
'places.importGoogleList': 'قائمة Google',
+11 -10
View File
@@ -794,16 +794,17 @@ const br: Record<string, string | { name: string; category: string }[]> = {
// Places Sidebar
'places.addPlace': 'Adicionar lugar/atividade',
'places.importGpx': 'GPX',
'places.importKmlKmz': 'TODO: KMZ / KML',
'places.kmlKmzImportError': 'TODO: KMZ/KML import failed',
'places.kmlKmzInvalidType': 'TODO: Please select a .kml or .kmz file.',
'places.kmlKmzTooLarge': 'TODO: File is too large. Maximum upload size is {maxMb} MB.',
'places.kmlKmzHint': 'TODO: KML/KMZ are common map export formats used by apps like Google My Maps and Google Earth. TREK imports Placemark name, description, and coordinates.',
'places.kmlKmzSizeHint': 'TODO: Maximum file size: {maxMb} MB (same limit as GPX).',
'places.kmlKmzSelectedFile': 'TODO: Selected file: {name}',
'places.kmlKmzSummaryTitle': 'TODO: Import summary',
'places.kmlKmzSummaryValues': 'TODO: Placemarks: {total} - Imported: {created} - Skipped: {skipped}',
'places.importKmlKmz': 'KMZ / KML',
'places.kmlKmzSelectFile': 'Selecionar arquivo',
'places.kmlKmzImported': '{count} lugares importados de KMZ/KML',
'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.kmlKmzSelectedFile': 'Arquivo selecionado: {name}',
'places.kmlKmzSummaryTitle': 'Resumo da importação',
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Importados: {created} • Ignorados: {skipped}',
'places.gpxImported': '{count} lugares importados do GPX',
'places.gpxError': 'Falha ao importar GPX',
'places.importGoogleList': 'Lista Google',
+11 -10
View File
@@ -810,16 +810,17 @@ 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.importKmlKmz': 'TODO: KMZ / KML',
'places.kmlKmzImportError': 'TODO: KMZ/KML import failed',
'places.kmlKmzInvalidType': 'TODO: Please select a .kml or .kmz file.',
'places.kmlKmzTooLarge': 'TODO: File is too large. Maximum upload size is {maxMb} MB.',
'places.kmlKmzHint': 'TODO: KML/KMZ are common map export formats used by apps like Google My Maps and Google Earth. TREK imports Placemark name, description, and coordinates.',
'places.kmlKmzSizeHint': 'TODO: Maximum file size: {maxMb} MB (same limit as GPX).',
'places.kmlKmzSelectedFile': 'TODO: Selected file: {name}',
'places.kmlKmzSummaryTitle': 'TODO: Import summary',
'places.kmlKmzSummaryValues': 'TODO: Placemarks: {total} - Imported: {created} - Skipped: {skipped}',
'places.importKmlKmz': 'KMZ / KML',
'places.kmlKmzSelectFile': 'Vybrat soubor',
'places.kmlKmzImported': 'Importováno {count} míst z KMZ/KML',
'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.kmlKmzSelectedFile': 'Vybraný soubor: {name}',
'places.kmlKmzSummaryTitle': 'Souhrn importu',
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Importováno: {created} • Přeskočeno: {skipped}',
'places.gpxImported': '{count} míst importováno z GPX',
'places.urlResolved': 'Místo importováno z URL',
'places.gpxError': 'Import GPX se nezdařil',
+11 -10
View File
@@ -810,16 +810,17 @@ const de: Record<string, string | { name: string; category: string }[]> = {
// Places Sidebar
'places.addPlace': 'Ort/Aktivität hinzufügen',
'places.importGpx': 'GPX',
'places.importKmlKmz': 'TODO: KMZ / KML',
'places.kmlKmzImportError': 'TODO: KMZ/KML import failed',
'places.kmlKmzInvalidType': 'TODO: Please select a .kml or .kmz file.',
'places.kmlKmzTooLarge': 'TODO: File is too large. Maximum upload size is {maxMb} MB.',
'places.kmlKmzHint': 'TODO: KML/KMZ are common map export formats used by apps like Google My Maps and Google Earth. TREK imports Placemark name, description, and coordinates.',
'places.kmlKmzSizeHint': 'TODO: Maximum file size: {maxMb} MB (same limit as GPX).',
'places.kmlKmzSelectedFile': 'TODO: Selected file: {name}',
'places.kmlKmzSummaryTitle': 'TODO: Import summary',
'places.kmlKmzSummaryValues': 'TODO: Placemarks: {total} - Imported: {created} - Skipped: {skipped}',
'places.importKmlKmz': 'KMZ / KML',
'places.kmlKmzSelectFile': 'Datei auswählen',
'places.kmlKmzImported': '{count} Orte aus KMZ/KML importiert',
'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.kmlKmzSelectedFile': 'Ausgewählte Datei: {name}',
'places.kmlKmzSummaryTitle': 'Importzusammenfassung',
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Importiert: {created} • Übersprungen: {skipped}',
'places.gpxImported': '{count} Orte aus GPX importiert',
'places.urlResolved': 'Ort aus URL importiert',
'places.gpxError': 'GPX-Import fehlgeschlagen',
+3 -2
View File
@@ -837,8 +837,9 @@ const en: Record<string, string | { name: string; category: string }[]> = {
'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': 'KML/KMZ are common map export formats used by apps like Google My Maps and Google Earth. TREK imports Placemark name, description, and coordinates.',
'places.kmlKmzSizeHint': 'Maximum file size: {maxMb} MB (same limit as GPX).',
'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}',
+11 -10
View File
@@ -786,16 +786,17 @@ const es: Record<string, string> = {
// Places Sidebar
'places.addPlace': 'Añadir lugar/actividad',
'places.importGpx': 'GPX',
'places.importKmlKmz': 'TODO: KMZ / KML',
'places.kmlKmzImportError': 'TODO: KMZ/KML import failed',
'places.kmlKmzInvalidType': 'TODO: Please select a .kml or .kmz file.',
'places.kmlKmzTooLarge': 'TODO: File is too large. Maximum upload size is {maxMb} MB.',
'places.kmlKmzHint': 'TODO: KML/KMZ are common map export formats used by apps like Google My Maps and Google Earth. TREK imports Placemark name, description, and coordinates.',
'places.kmlKmzSizeHint': 'TODO: Maximum file size: {maxMb} MB (same limit as GPX).',
'places.kmlKmzSelectedFile': 'TODO: Selected file: {name}',
'places.kmlKmzSummaryTitle': 'TODO: Import summary',
'places.kmlKmzSummaryValues': 'TODO: Placemarks: {total} - Imported: {created} - Skipped: {skipped}',
'places.importKmlKmz': 'KMZ / KML',
'places.kmlKmzSelectFile': 'Seleccionar archivo',
'places.kmlKmzImported': '{count} lugares importados desde KMZ/KML',
'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.kmlKmzSelectedFile': 'Archivo seleccionado: {name}',
'places.kmlKmzSummaryTitle': 'Resumen de importación',
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Importados: {created} • Omitidos: {skipped}',
'places.gpxImported': '{count} lugares importados desde GPX',
'places.gpxError': 'Error al importar GPX',
'places.importGoogleList': 'Lista Google',
+11 -10
View File
@@ -809,16 +809,17 @@ const fr: Record<string, string> = {
// Places Sidebar
'places.addPlace': 'Ajouter un lieu/activité',
'places.importGpx': 'GPX',
'places.importKmlKmz': 'TODO: KMZ / KML',
'places.kmlKmzImportError': 'TODO: KMZ/KML import failed',
'places.kmlKmzInvalidType': 'TODO: Please select a .kml or .kmz file.',
'places.kmlKmzTooLarge': 'TODO: File is too large. Maximum upload size is {maxMb} MB.',
'places.kmlKmzHint': 'TODO: KML/KMZ are common map export formats used by apps like Google My Maps and Google Earth. TREK imports Placemark name, description, and coordinates.',
'places.kmlKmzSizeHint': 'TODO: Maximum file size: {maxMb} MB (same limit as GPX).',
'places.kmlKmzSelectedFile': 'TODO: Selected file: {name}',
'places.kmlKmzSummaryTitle': 'TODO: Import summary',
'places.kmlKmzSummaryValues': 'TODO: Placemarks: {total} - Imported: {created} - Skipped: {skipped}',
'places.importKmlKmz': 'KMZ / KML',
'places.kmlKmzSelectFile': 'Sélectionner un fichier',
'places.kmlKmzImported': '{count} lieux importés depuis KMZ/KML',
'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.kmlKmzSelectedFile': 'Fichier sélectionné : {name}',
'places.kmlKmzSummaryTitle': 'Résumé d\'import',
'places.kmlKmzSummaryValues': 'Placemarks : {total} • Importés : {created} • Ignorés : {skipped}',
'places.gpxImported': '{count} lieux importés depuis GPX',
'places.gpxError': 'L\'import GPX a échoué',
'places.importGoogleList': 'Liste Google',
+11 -10
View File
@@ -810,16 +810,17 @@ 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.importKmlKmz': 'TODO: KMZ / KML',
'places.kmlKmzImportError': 'TODO: KMZ/KML import failed',
'places.kmlKmzInvalidType': 'TODO: Please select a .kml or .kmz file.',
'places.kmlKmzTooLarge': 'TODO: File is too large. Maximum upload size is {maxMb} MB.',
'places.kmlKmzHint': 'TODO: KML/KMZ are common map export formats used by apps like Google My Maps and Google Earth. TREK imports Placemark name, description, and coordinates.',
'places.kmlKmzSizeHint': 'TODO: Maximum file size: {maxMb} MB (same limit as GPX).',
'places.kmlKmzSelectedFile': 'TODO: Selected file: {name}',
'places.kmlKmzSummaryTitle': 'TODO: Import summary',
'places.kmlKmzSummaryValues': 'TODO: Placemarks: {total} - Imported: {created} - Skipped: {skipped}',
'places.importKmlKmz': 'KMZ / KML',
'places.kmlKmzSelectFile': 'Fájl kiválasztása',
'places.kmlKmzImported': '{count} hely importálva KMZ/KML-ből',
'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.kmlKmzSelectedFile': 'Kiválasztott fájl: {name}',
'places.kmlKmzSummaryTitle': 'Import összegzés',
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Importálva: {created} • Kihagyva: {skipped}',
'places.gpxImported': '{count} hely importálva GPX-ből',
'places.urlResolved': 'Hely importálva URL-ből',
'places.gpxError': 'GPX importálás sikertelen',
+11 -10
View File
@@ -810,16 +810,17 @@ const it: Record<string, string | { name: string; category: string }[]> = {
// Places Sidebar
'places.addPlace': 'Aggiungi Luogo/Attività',
'places.importGpx': 'GPX',
'places.importKmlKmz': 'TODO: KMZ / KML',
'places.kmlKmzImportError': 'TODO: KMZ/KML import failed',
'places.kmlKmzInvalidType': 'TODO: Please select a .kml or .kmz file.',
'places.kmlKmzTooLarge': 'TODO: File is too large. Maximum upload size is {maxMb} MB.',
'places.kmlKmzHint': 'TODO: KML/KMZ are common map export formats used by apps like Google My Maps and Google Earth. TREK imports Placemark name, description, and coordinates.',
'places.kmlKmzSizeHint': 'TODO: Maximum file size: {maxMb} MB (same limit as GPX).',
'places.kmlKmzSelectedFile': 'TODO: Selected file: {name}',
'places.kmlKmzSummaryTitle': 'TODO: Import summary',
'places.kmlKmzSummaryValues': 'TODO: Placemarks: {total} - Imported: {created} - Skipped: {skipped}',
'places.importKmlKmz': 'KMZ / KML',
'places.kmlKmzSelectFile': 'Seleziona file',
'places.kmlKmzImported': '{count} luoghi importati da KMZ/KML',
'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.kmlKmzSelectedFile': 'File selezionato: {name}',
'places.kmlKmzSummaryTitle': 'Riepilogo importazione',
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Importati: {created} • Saltati: {skipped}',
'places.gpxImported': '{count} luoghi importati da GPX',
'places.urlResolved': 'Luogo importato dall\'URL',
'places.gpxError': 'Importazione GPX non riuscita',
+11 -10
View File
@@ -809,16 +809,17 @@ const nl: Record<string, string> = {
// Places Sidebar
'places.addPlace': 'Plaats/activiteit toevoegen',
'places.importGpx': 'GPX',
'places.importKmlKmz': 'TODO: KMZ / KML',
'places.kmlKmzImportError': 'TODO: KMZ/KML import failed',
'places.kmlKmzInvalidType': 'TODO: Please select a .kml or .kmz file.',
'places.kmlKmzTooLarge': 'TODO: File is too large. Maximum upload size is {maxMb} MB.',
'places.kmlKmzHint': 'TODO: KML/KMZ are common map export formats used by apps like Google My Maps and Google Earth. TREK imports Placemark name, description, and coordinates.',
'places.kmlKmzSizeHint': 'TODO: Maximum file size: {maxMb} MB (same limit as GPX).',
'places.kmlKmzSelectedFile': 'TODO: Selected file: {name}',
'places.kmlKmzSummaryTitle': 'TODO: Import summary',
'places.kmlKmzSummaryValues': 'TODO: Placemarks: {total} - Imported: {created} - Skipped: {skipped}',
'places.importKmlKmz': 'KMZ / KML',
'places.kmlKmzSelectFile': 'Bestand selecteren',
'places.kmlKmzImported': '{count} plaatsen geïmporteerd uit KMZ/KML',
'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.kmlKmzSelectedFile': 'Geselecteerd bestand: {name}',
'places.kmlKmzSummaryTitle': 'Importoverzicht',
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Geïmporteerd: {created} • Overgeslagen: {skipped}',
'places.gpxImported': '{count} plaatsen geïmporteerd uit GPX',
'places.gpxError': 'GPX-import mislukt',
'places.importGoogleList': 'Google Lijst',
+11 -10
View File
@@ -773,16 +773,17 @@ const pl: Record<string, string | { name: string; category: string }[]> = {
// Places Sidebar
'places.addPlace': 'Dodaj miejsce/atrakcję',
'places.importGpx': 'Importuj GPX',
'places.importKmlKmz': 'TODO: KMZ / KML',
'places.kmlKmzImportError': 'TODO: KMZ/KML import failed',
'places.kmlKmzInvalidType': 'TODO: Please select a .kml or .kmz file.',
'places.kmlKmzTooLarge': 'TODO: File is too large. Maximum upload size is {maxMb} MB.',
'places.kmlKmzHint': 'TODO: KML/KMZ are common map export formats used by apps like Google My Maps and Google Earth. TREK imports Placemark name, description, and coordinates.',
'places.kmlKmzSizeHint': 'TODO: Maximum file size: {maxMb} MB (same limit as GPX).',
'places.kmlKmzSelectedFile': 'TODO: Selected file: {name}',
'places.kmlKmzSummaryTitle': 'TODO: Import summary',
'places.kmlKmzSummaryValues': 'TODO: Placemarks: {total} - Imported: {created} - Skipped: {skipped}',
'places.importKmlKmz': 'KMZ / KML',
'places.kmlKmzSelectFile': 'Wybierz plik',
'places.kmlKmzImported': 'Zaimportowano {count} miejsc z KMZ/KML',
'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.kmlKmzSelectedFile': 'Wybrany plik: {name}',
'places.kmlKmzSummaryTitle': 'Podsumowanie importu',
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Zaimportowano: {created} • Pominięto: {skipped}',
'places.gpxImported': '{count} miejsc zaimportowanych z GPX',
'places.urlResolved': 'Miejsce zaimportowane z URL',
'places.gpxError': 'Nie udało się zaimportować pliku GPX',
+11 -10
View File
@@ -809,16 +809,17 @@ const ru: Record<string, string> = {
// Places Sidebar
'places.addPlace': 'Добавить место/активность',
'places.importGpx': 'GPX',
'places.importKmlKmz': 'TODO: KMZ / KML',
'places.kmlKmzImportError': 'TODO: KMZ/KML import failed',
'places.kmlKmzInvalidType': 'TODO: Please select a .kml or .kmz file.',
'places.kmlKmzTooLarge': 'TODO: File is too large. Maximum upload size is {maxMb} MB.',
'places.kmlKmzHint': 'TODO: KML/KMZ are common map export formats used by apps like Google My Maps and Google Earth. TREK imports Placemark name, description, and coordinates.',
'places.kmlKmzSizeHint': 'TODO: Maximum file size: {maxMb} MB (same limit as GPX).',
'places.kmlKmzSelectedFile': 'TODO: Selected file: {name}',
'places.kmlKmzSummaryTitle': 'TODO: Import summary',
'places.kmlKmzSummaryValues': 'TODO: Placemarks: {total} - Imported: {created} - Skipped: {skipped}',
'places.importKmlKmz': 'KMZ / KML',
'places.kmlKmzSelectFile': 'Выбрать файл',
'places.kmlKmzImported': '{count} мест импортировано из KMZ/KML',
'places.kmlKmzImportError': 'Ошибка импорта KMZ/KML',
'places.kmlKmzInvalidType': 'Выберите файл .kml или .kmz.',
'places.kmlKmzTooLarge': 'Файл слишком большой. Максимальный размер загрузки — {maxMb} MB.',
'places.kmlKmzHint': 'Импортируйте файлы карт из инструментов, таких как Google My Maps и Google Earth.',
'places.kmlKmzSizeHint': 'Максимальный размер файла: {maxMb} MB',
'places.kmlKmzSelectedFile': 'Выбранный файл: {name}',
'places.kmlKmzSummaryTitle': 'Сводка импорта',
'places.kmlKmzSummaryValues': 'Placemarks: {total} • Импортировано: {created} • Пропущено: {skipped}',
'places.gpxImported': '{count} мест импортировано из GPX',
'places.gpxError': 'Ошибка импорта GPX',
'places.importGoogleList': 'Список Google',
+11 -10
View File
@@ -809,16 +809,17 @@ const zh: Record<string, string> = {
// Places Sidebar
'places.addPlace': '添加地点/活动',
'places.importGpx': 'GPX',
'places.importKmlKmz': 'TODO: KMZ / KML',
'places.kmlKmzImportError': 'TODO: KMZ/KML import failed',
'places.kmlKmzInvalidType': 'TODO: Please select a .kml or .kmz file.',
'places.kmlKmzTooLarge': 'TODO: File is too large. Maximum upload size is {maxMb} MB.',
'places.kmlKmzHint': 'TODO: KML/KMZ are common map export formats used by apps like Google My Maps and Google Earth. TREK imports Placemark name, description, and coordinates.',
'places.kmlKmzSizeHint': 'TODO: Maximum file size: {maxMb} MB (same limit as GPX).',
'places.kmlKmzSelectedFile': 'TODO: Selected file: {name}',
'places.kmlKmzSummaryTitle': 'TODO: Import summary',
'places.kmlKmzSummaryValues': 'TODO: Placemarks: {total} - Imported: {created} - Skipped: {skipped}',
'places.importKmlKmz': 'KMZ / KML',
'places.kmlKmzSelectFile': '选择文件',
'places.kmlKmzImported': '已从 KMZ/KML 导入 {count} 个地点',
'places.kmlKmzImportError': 'KMZ/KML 导入失败',
'places.kmlKmzInvalidType': '请选择 .kml 或 .kmz 文件。',
'places.kmlKmzTooLarge': '文件过大。最大上传大小为 {maxMb} MB。',
'places.kmlKmzHint': '可从 Google My Maps、Google Earth 等工具导入地图文件。',
'places.kmlKmzSizeHint': '最大文件大小:{maxMb} MB',
'places.kmlKmzSelectedFile': '已选择文件:{name}',
'places.kmlKmzSummaryTitle': '导入摘要',
'places.kmlKmzSummaryValues': 'Placemarks{total} • 已导入:{created} • 已跳过:{skipped}',
'places.gpxImported': '已从 GPX 导入 {count} 个地点',
'places.gpxError': 'GPX 导入失败',
'places.importGoogleList': 'Google 列表',
+11 -10
View File
@@ -789,16 +789,17 @@ const zhTw: Record<string, string> = {
// Places Sidebar
'places.addPlace': '新增地點/活動',
'places.importGpx': 'GPX',
'places.importKmlKmz': 'TODO: KMZ / KML',
'places.kmlKmzImportError': 'TODO: KMZ/KML import failed',
'places.kmlKmzInvalidType': 'TODO: Please select a .kml or .kmz file.',
'places.kmlKmzTooLarge': 'TODO: File is too large. Maximum upload size is {maxMb} MB.',
'places.kmlKmzHint': 'TODO: KML/KMZ are common map export formats used by apps like Google My Maps and Google Earth. TREK imports Placemark name, description, and coordinates.',
'places.kmlKmzSizeHint': 'TODO: Maximum file size: {maxMb} MB (same limit as GPX).',
'places.kmlKmzSelectedFile': 'TODO: Selected file: {name}',
'places.kmlKmzSummaryTitle': 'TODO: Import summary',
'places.kmlKmzSummaryValues': 'TODO: Placemarks: {total} - Imported: {created} - Skipped: {skipped}',
'places.importKmlKmz': 'KMZ / KML',
'places.kmlKmzSelectFile': '選擇檔案',
'places.kmlKmzImported': '已從 KMZ/KML 匯入 {count} 個地點',
'places.kmlKmzImportError': 'KMZ/KML 匯入失敗',
'places.kmlKmzInvalidType': '請選擇 .kml 或 .kmz 檔案。',
'places.kmlKmzTooLarge': '檔案過大。最大上傳大小為 {maxMb} MB。',
'places.kmlKmzHint': '可從 Google My Maps、Google Earth 等工具匯入地圖檔案。',
'places.kmlKmzSizeHint': '最大檔案大小:{maxMb} MB',
'places.kmlKmzSelectedFile': '已選擇檔案:{name}',
'places.kmlKmzSummaryTitle': '匯入摘要',
'places.kmlKmzSummaryValues': 'Placemarks{total} • 已匯入:{created} • 已略過:{skipped}',
'places.gpxImported': '已從 GPX 匯入 {count} 個地點',
'places.gpxError': 'GPX 匯入失敗',
'places.importGoogleList': 'Google 列表',