mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-18 21:16:47 +00:00
2c06c9904b
Sharing a list works between people on the same TREK. This is the other case: giving one to somebody who runs their own, or keeping a copy. Export sits beside Edit and Share in the list header and downloads the open list; Import sits beside New list in the rail, reads a file, shows what is in it and makes a new list of it. Desktop only, which the route already decides. What travels is what somebody wrote down: the list's name, colour and description, its labels, and each place with its address, coordinates, notes, status, contact details, category name and labels. A file is dull JSON on purpose, so it can be read and edited by a person. What does not travel is everything that only means something on the instance it came from. Ids of every kind, since the receiver issues its own and a category crosses over by name. Star ratings and members, because a rating is an opinion somebody gave the people on that list. Provenance into trips, which points at rows the receiver cannot see. And an image path under /uploads, which resolves on the sender's server: only an absolute https URL survives. A file is a stranger's JSON and is read as one. It is parsed in the browser that chose it and never uploaded; the parsed list goes through the same contract on both sides; and a link that is not http(s) arrives as nothing rather than as an anchor. Strict where it must refuse, forgiving where it can drop: a file that does not say what it is never reaches the importer, while one unreadable place inside it is skipped and counted, and one bad field on a good place costs that field alone. An import is always a new list. Importing into an existing one would mean deciding what happens to a place that is already there, and every answer to that is a merge nobody asked for.
200 lines
10 KiB
TypeScript
200 lines
10 KiB
TypeScript
import type { TranslationStrings } from '../types';
|
||
|
||
const collection: TranslationStrings = {
|
||
'collections.saveNToList': 'Desa {count} a una llista',
|
||
'collections.addedNToList': 'Desat {count} a {name}',
|
||
'collections.noOwnLists': 'Encara no tens cap llista',
|
||
'collections.saveToListHint': "Els duplicats s'ometen automàticament",
|
||
'collections.role.label': 'Rol',
|
||
'collections.role.viewer': 'Lector',
|
||
'collections.role.editor': 'Editor',
|
||
'collections.role.admin': 'Administrador',
|
||
'collections.picker.allLists': 'Totes les llistes',
|
||
'collections.select': 'Triar',
|
||
'collections.selectAll': 'Seleccionar-ho tot',
|
||
'collections.deselectAll': 'Deseleccionar-ho tot',
|
||
'collections.moveToList': 'Moure a la llista',
|
||
'collections.duplicateToList': 'Duplicar a la llista',
|
||
'collections.moveToListTitle': 'Mou {count} a una altra llista',
|
||
'collections.duplicateToListTitle': 'Duplica {count} a una altra llista',
|
||
'collections.noOtherLists': 'Encara no hi ha cap altra llista',
|
||
'collections.movedCount': "S'han mogut {count} llocs",
|
||
'collections.duplicatedCount': "S'han duplicat {count} llocs",
|
||
'collections.placeCount': '{count} llocs',
|
||
'collections.category': 'Categoria',
|
||
'collections.noCategory': 'Sense categoria',
|
||
'collections.editListTitle': 'Editar llista',
|
||
'collections.coverImage': 'Imatge de portada',
|
||
'collections.addCover': 'Afegir portada',
|
||
'collections.changeCover': 'Canviar portada',
|
||
'collections.description': 'Descripció',
|
||
'collections.descriptionPlaceholder': 'Afegeix una descripció…',
|
||
'collections.links': 'Enllaços',
|
||
'collections.linkLabel': 'Etiqueta',
|
||
'collections.addLink': 'Afegir enllaç',
|
||
'collections.addDetails': 'Afegir detalls',
|
||
'collections.addPlace': 'Afegir un lloc',
|
||
'collections.addPlaceSearch': 'Cercar un lloc…',
|
||
'collections.addPlaceHint': 'Cerca per afegir un lloc a aquesta llista',
|
||
'collections.importFromTrip': 'Importa des d’un viatge',
|
||
'collections.importTitle': 'Importa des d’un viatge',
|
||
'collections.importDoneTitle': 'Importació acabada',
|
||
'collections.importPickTripHint': 'Tria un viatge i porta’n els llocs a {name}.',
|
||
'collections.importNoTrips': 'Encara no hi ha viatges',
|
||
'collections.importPlacesCount': '{count} llocs',
|
||
'collections.importSearchPlaces': 'Cerca llocs…',
|
||
'collections.importOnlyNew': 'Només nous',
|
||
'collections.importSelectAll': 'Selecciona-ho tot',
|
||
'collections.importClearSelection': 'Esborra la selecció',
|
||
'collections.importAlreadySaved': 'Ja desat',
|
||
'collections.importUnscheduled': 'Sense dia',
|
||
'collections.importOnDay': 'Dia {count}',
|
||
'collections.importSelectedCount': '{count} seleccionats',
|
||
'collections.importAction': 'Importa {count}',
|
||
'collections.importEmptyTrip': 'Aquest viatge encara no té llocs',
|
||
'collections.importNothingNew': 'Tot aquest viatge ja és en aquesta llista',
|
||
'collections.importDone': 'S’han afegit {count} llocs',
|
||
'collections.importDoneSkipped': '{count} ja hi eren i s’han deixat igual',
|
||
'collections.importDoneClean': 'Ara són tots a {name}',
|
||
'collections.sort.default': 'Predeterminat',
|
||
'collections.sort.nameAsc': 'Nom (A–Z)',
|
||
'collections.coordinates': 'Coordenades',
|
||
'collections.showList': 'Mostra la llista',
|
||
'collections.expandMap': 'Ampliar el mapa',
|
||
'collections.hero.mine': 'La meva col·lecció',
|
||
'collections.hero.shared': 'Compartit amb tu',
|
||
'collections.hero.all': 'La teva biblioteca',
|
||
'collections.title': 'Col·leccions',
|
||
'collections.subtitle': 'Els teus llocs desats, organitzats en llistes',
|
||
'collections.newList': 'Nova llista',
|
||
'collections.create': 'Crear',
|
||
'collections.editList': 'Canviar el nom',
|
||
'collections.listMenu': 'Opcions de la llista',
|
||
'collections.deleteList': 'Eliminar llista',
|
||
'collections.deleteListConfirm':
|
||
'Això eliminarà permanentment la llista i tots els llocs desats que conté. Aquesta acció no es pot desfer.',
|
||
'collections.listName': 'Nom de la llista',
|
||
'collections.listNamePlaceholder': 'p. ex. Tòquio 2025',
|
||
'collections.listColor': 'Color',
|
||
'collections.allSaved': 'Tot el desat',
|
||
'collections.shared': 'Compartit',
|
||
'collections.empty.title': 'Encara no hi ha llocs',
|
||
'collections.empty.text': 'Desa llocs des de qualsevol viatge per crear aquesta llista.',
|
||
'collections.empty.noMatchTitle': 'Cap coincidència',
|
||
'collections.empty.noMatchText': 'Cap lloc desat coincideix amb el filtre o la cerca.',
|
||
'collections.empty.firstTitle': 'Comença la teva primera col·lecció',
|
||
'collections.empty.firstText': 'Crea una llista per desar els llocs que vulguis recordar de diferents viatges.',
|
||
'collections.view.grid': 'Quadrícula',
|
||
'collections.view.list': 'Llista',
|
||
'collections.view.map': 'Mapa',
|
||
'collections.status.idea': 'Idea',
|
||
'collections.status.want': 'Hi vull anar',
|
||
'collections.status.visited': 'Visitat',
|
||
'collections.status.filterAll': 'Tot',
|
||
'collections.status.cycleHint': 'toca per canviar',
|
||
|
||
'collections.markVisited': 'Marca com a visitat',
|
||
'collections.markVisitedAll': 'Visitat pertot',
|
||
'collections.markVisitedSelection': 'Marca com a visitat a les teves llistes',
|
||
'collections.markVisitedNone': 'Cap d\'aquests llocs no és desat en cap llista',
|
||
'collections.markedVisited': 'Marcat com a visitat',
|
||
'collections.markedVisitedTrip': '{count} llocs marcats com a visitats',
|
||
'collections.copyToTrip': 'Copiar al viatge',
|
||
'collections.copyToTripTitle': 'Copiar al viatge',
|
||
'collections.copyN': 'Copia {count} al viatge',
|
||
'collections.copyToTripSearch': 'Cercar viatges',
|
||
'collections.searchLists': 'Cerca llistes',
|
||
'collections.copyToTripConfirm': 'Copiar',
|
||
'collections.noTrips': 'Encara no hi ha viatges',
|
||
'collections.alreadyInTrip': 'Ja es troba en aquest viatge',
|
||
'collections.copied': 'Copiat al viatge',
|
||
'collections.copiedCount': "S'han copiat {count} llocs",
|
||
'collections.skippedDuplicates': "S'han omès {count} duplicats",
|
||
'collections.copyNothing': 'Res a copiar',
|
||
'collections.removeFromList': 'Eliminar de la llista',
|
||
'collections.removeFromListConfirm': 'Vols eliminar aquest lloc de la llista?',
|
||
'collections.removeFromCollection': 'Eliminar de la col·lecció',
|
||
'collections.saved': 'Desat a {name}',
|
||
'collections.savedUndo': 'Desfer',
|
||
'collections.viewInCollection': 'Veure',
|
||
'collections.duplicateWarning': 'Aquest lloc ja és a la llista',
|
||
'collections.search': 'Cercar llocs',
|
||
'collections.selectMode': 'Seleccionar',
|
||
'collections.selectedCount': '{count} seleccionats',
|
||
'collections.pickList': 'Desar a la llista',
|
||
'collections.pickListPlaceholder': 'Tria una llista',
|
||
'collections.addedToList': 'Afegit a {name}',
|
||
'collections.removedFromList': 'Eliminat de {name}',
|
||
'collections.inLists': 'A les teves llistes',
|
||
'collections.otherLists': 'Afegir a una llista',
|
||
'collections.noListsYet': 'Crea una llista primer per poder desar llocs.',
|
||
'collections.removedFromAll': 'Eliminat de la col·lecció',
|
||
'collections.picker.title': 'Llocs desats',
|
||
'collections.picker.showMore': "Mostra'n {count} més",
|
||
'collections.picker.search': 'Cerca entre els teus llocs desats',
|
||
'collections.picker.empty': 'No hi ha llocs desats per afegir',
|
||
'collections.picker.hint': 'Tria un lloc de les teves col·leccions',
|
||
'collections.picker.use': 'Utilitza',
|
||
// Export / import a list as a file (#2198)
|
||
'collections.file.export': 'Exporta',
|
||
'collections.file.exportTitle': 'Baixa aquesta llista com a fitxer',
|
||
'collections.file.importButton': 'Importa una llista des d’un fitxer',
|
||
'collections.file.importTitle': 'Importa una llista',
|
||
'collections.file.choose': 'Tria un fitxer de llista',
|
||
'collections.file.confirm': 'Importa',
|
||
'collections.file.change': 'Canvia',
|
||
'collections.file.labelCount': '{count} etiquetes',
|
||
'collections.file.hint':
|
||
'Els llocs arriben com una llista nova teva. Les valoracions, els membres i les fotos pujades es queden enrere.',
|
||
'collections.file.done': '{count} llocs importats',
|
||
'collections.file.doneSkipped': '{count} llocs importats, {skipped} omesos',
|
||
'collections.file.errorTooLarge': 'Aquest fitxer és massa gran per ser una llista.',
|
||
'collections.file.errorUnreadable': 'No s’ha pogut llegir aquest fitxer.',
|
||
'collections.file.errorNotACollection': 'Això no és un fitxer de llista del TREK.',
|
||
|
||
'collections.share.title': 'Compartir llista',
|
||
'collections.share.titleNamed': 'Compartir «{name}»',
|
||
'collections.share.button': 'Compartir',
|
||
'collections.share.members': 'Membres',
|
||
'collections.share.owner': 'Propietari',
|
||
'collections.share.you': 'tu',
|
||
'collections.share.pending': 'invitació pendent',
|
||
'collections.share.accepted': 'acceptada',
|
||
'collections.share.invite': 'Convida algú',
|
||
'collections.share.inviteUser': 'Selecciona un usuari',
|
||
'collections.share.sendInvite': 'Envia la invitació',
|
||
'collections.share.inviteHint': 'Les persones convidades poden veure i editar aquesta llista.',
|
||
'collections.share.noUsers': 'No hi ha usuaris disponibles per convidar.',
|
||
'collections.share.memberHint': 'Només el propietari de la llista pot convidar o eliminar persones.',
|
||
'collections.share.cancel': 'Cancellar',
|
||
'collections.share.leave': 'Sortir de la llista',
|
||
'collections.share.leaveConfirm':
|
||
"Vols sortir d'aquesta llista compartida? En perdre el accés, t'hauran de tornar a convidar.",
|
||
'collections.share.left': 'Has sortit de la llista',
|
||
'collections.share.remove': 'Eliminar',
|
||
'collections.invites.title': 'Invitacions',
|
||
'collections.invites.from': 'de',
|
||
'collections.invites.accept': 'Acceptar',
|
||
'collections.invites.decline': 'Rebutjar',
|
||
'collections.invites.received': 'Tens una nova invitació a una llista',
|
||
'collections.invite.sent': 'Invitació enviada',
|
||
'collections.invite.error': "No s'ha pogut enviar la invitació",
|
||
'collections.invite.accepted': 'Invitació acceptada',
|
||
'collections.invite.declined': 'Invitació rebutjada',
|
||
'collections.widget.title': 'Col·leccions',
|
||
'collections.widget.empty': 'Encara no hi ha llocs desats',
|
||
'collections.widget.savedCount': '{count} desats',
|
||
'collections.labels.title': 'Etiquetes',
|
||
'collections.labels.manage': 'Gestionar etiquetes',
|
||
'collections.labels.add': 'Afegir etiqueta',
|
||
'collections.labels.name': "Nom de l'etiqueta",
|
||
'collections.labels.namePlaceholder': 'p. ex. Berlín',
|
||
'collections.labels.assign': 'Assignar etiqueta',
|
||
'collections.labels.assignN': 'Afegir etiquetes a {count} llocs',
|
||
'collections.labels.assignedCount': "S'han etiquetat {count} llocs",
|
||
'collections.labels.empty': 'Encara no hi ha etiquetes',
|
||
'collections.labels.emptyHint': 'Crea primer una etiqueta per agrupar llocs en aquesta llista.',
|
||
};
|
||
|
||
export default collection;
|