mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-18 21:16:47 +00:00
d803efd39d
The import dialog always made a new list. It now asks where the places go: a new list, as before and still the default, or a list that is already there. The picker offers the lists the person may edit, which is their own plus a shared one where they are an editor or an admin, and starts on the list they have open. Adding to a list only ever adds. A place the list already holds is left exactly as it is, with its status, notes, rating and labels, and counted as already there in what the import reports; it is recognised the way a single save recognises one, by provider id, then name, then position. The list keeps its own name, colour, icon and description whatever the file says, a label the file brings is created only when the list has none of that name, and new places are appended after the ones already there so a manual order survives. The route is POST /api/addons/collections/:id/import, 200 because it adds to a list rather than making one, and both imports now write their places through the same helper.
235 lines
12 KiB
TypeScript
235 lines
12 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
||
|
||
const collection: TranslationStrings = {
|
||
'collections.saveNToList': 'Guardar {count} en una lista',
|
||
'collections.addedNToList': '{count} guardados en {name}',
|
||
'collections.noOwnLists': 'Aún no tienes listas',
|
||
'collections.saveToListHint': 'Los duplicados se omiten automáticamente',
|
||
'collections.role.label': 'Rol',
|
||
'collections.role.viewer': 'Lector',
|
||
'collections.role.editor': 'Editor',
|
||
'collections.role.admin': 'Administrador',
|
||
'collections.picker.allLists': 'Todas las listas',
|
||
'collections.select': 'Elegir',
|
||
'collections.selectAll': 'Seleccionar todo',
|
||
'collections.deselectAll': 'Deseleccionar todo',
|
||
'collections.moveToList': 'Mover a lista',
|
||
'collections.duplicateToList': 'Duplicar en lista',
|
||
'collections.moveToListTitle': 'Mover {count} a otra lista',
|
||
'collections.duplicateToListTitle': 'Duplicar {count} en otra lista',
|
||
'collections.noOtherLists': 'Aún no hay otras listas',
|
||
'collections.movedCount': 'Movidos {count} lugares',
|
||
'collections.duplicatedCount': 'Duplicados {count} lugares',
|
||
'collections.placeCount': '{count} lugares',
|
||
'collections.category': 'Categoría',
|
||
'collections.noCategory': 'Sin categoría',
|
||
'collections.editListTitle': 'Editar lista',
|
||
'collections.coverImage': 'Imagen de portada',
|
||
'collections.addCover': 'Añadir portada',
|
||
'collections.changeCover': 'Cambiar portada',
|
||
'collections.description': 'Descripción',
|
||
'collections.descriptionPlaceholder': 'Añade una descripción…',
|
||
'collections.links': 'Enlaces',
|
||
'collections.linkLabel': 'Etiqueta',
|
||
'collections.addLink': 'Añadir enlace',
|
||
'collections.addDetails': 'Añadir detalles',
|
||
'collections.addPlace': 'Añadir un lugar',
|
||
'collections.addPlaceSearch': 'Buscar un lugar…',
|
||
'collections.addPlaceHint': 'Busca para añadir un lugar a esta lista',
|
||
'collections.importFromTrip': 'Importar de un viaje',
|
||
'collections.importTitle': 'Importar de un viaje',
|
||
'collections.importDoneTitle': 'Importación terminada',
|
||
'collections.importPickTripHint': 'Elige un viaje y lleva sus lugares a {name}.',
|
||
'collections.importNoTrips': 'Aún no hay viajes',
|
||
'collections.importPlacesCount': '{count} lugares',
|
||
'collections.importSearchPlaces': 'Buscar lugares…',
|
||
'collections.importOnlyNew': 'Solo nuevos',
|
||
'collections.importSelectAll': 'Seleccionar todo',
|
||
'collections.importClearSelection': 'Quitar selección',
|
||
'collections.importAlreadySaved': 'Ya guardado',
|
||
'collections.importUnscheduled': 'Sin día',
|
||
'collections.importOnDay': 'Día {count}',
|
||
'collections.importSelectedCount': '{count} seleccionados',
|
||
'collections.importAction': 'Importar {count}',
|
||
'collections.importEmptyTrip': 'Este viaje aún no tiene lugares',
|
||
'collections.importNothingNew': 'Todo este viaje ya está en la lista',
|
||
'collections.importDone': 'Se añadieron {count} lugares',
|
||
'collections.importDoneSkipped': '{count} ya estaban en la lista y se quedaron igual',
|
||
'collections.importDoneClean': 'Ahora están todos en {name}',
|
||
'collections.sort.default': 'Predeterminado',
|
||
'collections.sort.nameAsc': 'Nombre (A–Z)',
|
||
'collections.coordinates': 'Coordenadas',
|
||
'collections.showList': 'Mostrar lista',
|
||
'collections.expandMap': 'Ampliar mapa',
|
||
'collections.hero.mine': 'Mi colección',
|
||
'collections.hero.shared': 'Compartida contigo',
|
||
'collections.hero.all': 'Tu biblioteca',
|
||
'collections.title': 'Colecciones',
|
||
'collections.subtitle': 'Tus lugares guardados, organizados en listas',
|
||
|
||
'collections.newList': 'Nueva lista',
|
||
'collections.create': 'Crear',
|
||
'collections.editList': 'Renombrar',
|
||
'collections.listMenu': 'Opciones de la lista',
|
||
'collections.deleteList': 'Eliminar lista',
|
||
'collections.deleteListConfirm':
|
||
'Esto elimina de forma permanente la lista y todos sus lugares guardados. No se puede deshacer.',
|
||
'collections.listName': 'Nombre de la lista',
|
||
'collections.listNamePlaceholder': 'p. ej. Tokio 2025',
|
||
'collections.listColor': 'Color',
|
||
'collections.allSaved': 'Todos los guardados',
|
||
'collections.shared': 'Compartida',
|
||
|
||
'collections.empty.title': 'Aún no hay lugares',
|
||
'collections.empty.text': 'Guarda lugares de cualquier viaje para crear esta lista.',
|
||
'collections.empty.noMatchTitle': 'Sin coincidencias',
|
||
'collections.empty.noMatchText': 'Ningún lugar guardado coincide con tu filtro o búsqueda.',
|
||
'collections.empty.firstTitle': 'Empieza tu primera colección',
|
||
'collections.empty.firstText': 'Crea una lista para guardar lugares que quieras recordar entre viajes.',
|
||
|
||
'collections.view.grid': 'Cuadrícula',
|
||
'collections.view.list': 'Lista',
|
||
'collections.view.map': 'Mapa',
|
||
|
||
'collections.status.idea': 'Idea',
|
||
'collections.status.want': 'Quiero ir',
|
||
'collections.status.visited': 'Visitado',
|
||
'collections.status.filterAll': 'Todos',
|
||
'collections.status.cycleHint': 'toca para cambiar',
|
||
|
||
'collections.markVisited': 'Marcar como visitado',
|
||
'collections.markVisitedAll': 'Visitado en todas',
|
||
'collections.markVisitedSelection': 'Marcar como visitado en tus listas',
|
||
'collections.markVisitedNone': 'Ninguno de estos lugares está guardado en una lista',
|
||
'collections.markedVisited': 'Marcado como visitado',
|
||
'collections.markedVisitedTrip': '{count} lugares marcados como visitados',
|
||
|
||
'collections.copyToTrip': 'Copiar al viaje',
|
||
'collections.copyToTripTitle': 'Copiar al viaje',
|
||
'collections.copyN': 'Copiar {count} al viaje',
|
||
'collections.copyToTripSearch': 'Buscar viajes',
|
||
'collections.searchLists': 'Buscar listas',
|
||
'collections.copyToTripConfirm': 'Copiar',
|
||
'collections.noTrips': 'Aún no hay viajes',
|
||
'collections.alreadyInTrip': 'Ya está en este viaje',
|
||
'collections.copied': 'Copiado al viaje',
|
||
'collections.copiedCount': '{count} lugares copiados',
|
||
'collections.skippedDuplicates': '{count} duplicados omitidos',
|
||
'collections.copyNothing': 'Nada que copiar',
|
||
'collections.removeFromList': 'Quitar de la lista',
|
||
'collections.removeFromListConfirm': '¿Quitar este lugar de la lista?',
|
||
'collections.removeFromCollection': 'Quitar de la colección',
|
||
|
||
'collections.saved': 'Guardado en {name}',
|
||
'collections.savedUndo': 'Deshacer',
|
||
'collections.viewInCollection': 'Ver',
|
||
'collections.duplicateWarning': 'Este lugar ya está en la lista',
|
||
|
||
'collections.search': 'Buscar lugares',
|
||
'collections.selectMode': 'Seleccionar',
|
||
'collections.selectedCount': '{count} seleccionados',
|
||
|
||
'collections.pickList': 'Guardar en una lista',
|
||
'collections.pickListPlaceholder': 'Elige una lista',
|
||
'collections.addedToList': 'Añadido a {name}',
|
||
'collections.removedFromList': 'Quitado de {name}',
|
||
'collections.inLists': 'En tus listas',
|
||
'collections.otherLists': 'Añadir a una lista',
|
||
'collections.noListsYet': 'Crea primero una lista para guardar lugares.',
|
||
'collections.removedFromAll': 'Quitado de la colección',
|
||
'collections.picker.title': 'Lugares guardados',
|
||
'collections.picker.showMore': 'Mostrar {count} más',
|
||
'collections.picker.search': 'Busca en tus lugares guardados',
|
||
'collections.picker.empty': 'No hay lugares guardados para añadir',
|
||
'collections.picker.hint': 'Elige un lugar de tus colecciones',
|
||
'collections.picker.use': 'Usar',
|
||
|
||
// Export / import a list as a file (#2198)
|
||
'collections.file.export': 'Exportar',
|
||
'collections.file.exportTitle': 'Descargar esta lista como archivo',
|
||
'collections.file.importButton': 'Importar una lista desde un archivo',
|
||
'collections.file.importTitle': 'Importar una lista',
|
||
'collections.file.choose': 'Elegir un archivo de lista',
|
||
'collections.file.confirm': 'Importar',
|
||
'collections.file.targetNew': 'Nueva lista',
|
||
'collections.file.targetNewHint': 'El archivo como lista propia',
|
||
'collections.file.targetExisting': 'Añadir a una lista',
|
||
'collections.file.targetExistingHint': 'A una que ya tienes',
|
||
'collections.file.searchLists': 'Buscar listas',
|
||
'collections.file.intoHint': 'Los lugares que la lista ya tiene se quedan como están, igual que su nombre y su color. Las etiquetas del archivo se añaden.',
|
||
'collections.file.confirmInto': 'Añadir a la lista',
|
||
'collections.file.doneInto': '{count} lugares añadidos a {name}',
|
||
'collections.file.doneIntoDuplicates': '{count} añadidos a {name}, {duplicates} ya estaban',
|
||
'collections.file.doneIntoNothing': 'Todos los lugares del archivo ya están en {name}',
|
||
'collections.file.change': 'Cambiar',
|
||
'collections.file.labelCount': '{count} etiquetas',
|
||
'collections.file.hint':
|
||
'Los lugares llegan como una lista nueva tuya. Las valoraciones, los miembros y las fotos subidas se quedan atrás.',
|
||
'collections.file.done': '{count} lugares importados',
|
||
'collections.file.doneSkipped': '{count} lugares importados, {skipped} omitidos',
|
||
'collections.file.errorTooLarge': 'Ese archivo es demasiado grande para ser una lista.',
|
||
'collections.file.errorUnreadable': 'No se ha podido leer ese archivo.',
|
||
'collections.file.errorNotACollection': 'Ese no es un archivo de lista de TREK.',
|
||
'collections.file.formatTrek': 'Lista de TREK',
|
||
'collections.file.formatTrekHint': 'Para otro TREK, con etiquetas y estado',
|
||
'collections.file.formatGpxHint': 'Puntos de ruta para OsmAnd, Organic Maps, Garmin y otras apps de mapas',
|
||
'collections.file.gpxOmitted': '{count} lugares no tienen coordenadas y se han quedado fuera del archivo GPX',
|
||
'collections.file.gpxNothing':
|
||
'Ninguno de estos lugares tiene coordenadas, así que no hay nada que poner en un archivo GPX.',
|
||
'collections.file.reading': 'Leyendo el archivo…',
|
||
'collections.file.gpxSkipped': 'Se dejan fuera {count} puntos de ruta sin coordenadas válidas.',
|
||
'collections.file.gpxTrack':
|
||
'Este archivo también tiene {count} puntos de traza. Las trazas no se importan, solo los puntos de ruta.',
|
||
'collections.file.gpxEmpty': 'Este archivo GPX no tiene puntos de ruta, así que no hay nada que importar.',
|
||
'collections.file.errorNotGpx': 'Ese no es un archivo GPX.',
|
||
'collections.file.errorTooManyPlaces':
|
||
'Ese archivo tiene más de {count} lugares. Divídelo e importa las partes de una en una.',
|
||
|
||
'collections.share.title': 'Compartir lista',
|
||
'collections.share.titleNamed': 'Compartir «{name}»',
|
||
'collections.share.button': 'Compartir',
|
||
'collections.share.members': 'Miembros',
|
||
'collections.share.owner': 'Propietario',
|
||
'collections.share.you': 'tú',
|
||
'collections.share.pending': 'invitación pendiente',
|
||
'collections.share.accepted': 'aceptada',
|
||
'collections.share.invite': 'Invitar a alguien',
|
||
'collections.share.inviteUser': 'Seleccionar usuario',
|
||
'collections.share.sendInvite': 'Enviar invitación',
|
||
'collections.share.inviteHint': 'Las personas invitadas pueden ver y editar esta lista.',
|
||
'collections.share.noUsers': 'No hay usuarios disponibles para invitar.',
|
||
'collections.share.memberHint': 'Solo el propietario de la lista puede invitar o quitar personas.',
|
||
'collections.share.cancel': 'Cancelar',
|
||
'collections.share.leave': 'Salir de la lista',
|
||
'collections.share.leaveConfirm':
|
||
'¿Salir de esta lista compartida? Perderás el acceso hasta que vuelvan a invitarte.',
|
||
'collections.share.left': 'Has salido de la lista',
|
||
'collections.share.remove': 'Quitar',
|
||
|
||
'collections.invites.title': 'Invitaciones',
|
||
'collections.invites.from': 'de',
|
||
'collections.invites.accept': 'Aceptar',
|
||
'collections.invites.decline': 'Rechazar',
|
||
'collections.invites.received': 'Tienes una nueva invitación a una lista',
|
||
'collections.invite.sent': 'Invitación enviada',
|
||
'collections.invite.error': 'No se pudo enviar la invitación',
|
||
'collections.invite.accepted': 'Invitación aceptada',
|
||
'collections.invite.declined': 'Invitación rechazada',
|
||
|
||
'collections.widget.title': 'Colecciones',
|
||
'collections.widget.empty': 'Aún no hay lugares guardados',
|
||
'collections.widget.savedCount': '{count} guardados',
|
||
'collections.labels.title': 'Etiquetas',
|
||
'collections.labels.manage': 'Gestionar etiquetas',
|
||
'collections.labels.add': 'Añadir etiqueta',
|
||
'collections.labels.name': 'Nombre de la etiqueta',
|
||
'collections.labels.namePlaceholder': 'p. ej. Berlin',
|
||
'collections.labels.assign': 'Asignar etiqueta',
|
||
'collections.labels.assignN': 'Añadir etiquetas a {count} lugares',
|
||
'collections.labels.assignedCount': 'Etiquetados {count} lugares',
|
||
'collections.labels.empty': 'Aún no hay etiquetas',
|
||
'collections.labels.emptyHint': 'Crea primero una etiqueta para agrupar lugares en esta lista.',
|
||
};
|
||
|
||
export default collection;
|