Files
TREK/shared/src/i18n/nl/collection.ts
T
Maurice 1e0feb93dd feat(collections): per-member permission roles on shared lists (#1081)
The owner now assigns each member a role — viewer (read + copy-to-trip only),
editor (default: add + edit places) or admin (full incl. delete). The owner is
always full. Existing members default to editor via migration 152, so nothing
regresses.

- Server: role column on collection_members (migration 152 + schema); roleOf +
  assertCanEdit (save/update/status/list-meta) + assertCanDelete (delete) layered
  on assertAccess; sendInvite takes a role; new setMemberRole (owner-only) +
  POST members/role; members payload carries each role.
- Client: Share modal gains a role picker on invite and a per-member role select
  for the owner (read-only role badge for others); the page hides add / edit /
  status / move / delete for roles that can't perform them (server still enforces).
- Roles in all 22 locales; service + controller tests for the new gating.
2026-07-01 18:02:44 +02:00

146 lines
6.9 KiB
TypeScript

import type { TranslationStrings } from '../types';
const collection: TranslationStrings = {
'collections.role.label': 'Rol',
'collections.role.viewer': 'Kijker',
'collections.role.editor': 'Bewerker',
'collections.role.admin': 'Beheerder',
'collections.picker.allLists': 'Alle lijsten',
'collections.select': 'Selecteren',
'collections.selectAll': 'Alles selecteren',
'collections.deselectAll': 'Selectie opheffen',
'collections.moveToList': 'Naar lijst verplaatsen',
'collections.duplicateToList': 'Naar lijst dupliceren',
'collections.moveToListTitle': '{count} naar andere lijst verplaatsen',
'collections.duplicateToListTitle': '{count} naar andere lijst dupliceren',
'collections.noOtherLists': 'Nog geen andere lijsten',
'collections.movedCount': '{count} plaatsen verplaatst',
'collections.duplicatedCount': '{count} plaatsen gedupliceerd',
'collections.placeCount': '{count} plaatsen',
'collections.category': 'Categorie',
'collections.noCategory': 'Geen categorie',
'collections.editListTitle': 'Lijst bewerken',
'collections.coverImage': 'Omslagafbeelding',
'collections.addCover': 'Omslag toevoegen',
'collections.changeCover': 'Omslag wijzigen',
'collections.description': 'Beschrijving',
'collections.descriptionPlaceholder': 'Voeg een beschrijving toe…',
'collections.links': 'Links',
'collections.linkLabel': 'Label',
'collections.addLink': 'Link toevoegen',
'collections.addDetails': 'Details toevoegen',
'collections.addPlace': 'Plaats toevoegen',
'collections.addPlaceSearch': 'Zoek een plaats…',
'collections.addPlaceHint': 'Zoek om een plaats aan deze lijst toe te voegen',
'collections.showList': 'Lijst tonen',
'collections.expandMap': 'Kaart vergroten',
'collections.hero.mine': 'Mijn collectie',
'collections.hero.shared': 'Gedeeld met jou',
'collections.hero.all': 'Jouw bibliotheek',
'collections.title': 'Collecties',
'collections.subtitle': 'Je opgeslagen plekken, geordend in lijsten',
'collections.newList': 'Nieuwe lijst',
'collections.create': 'Aanmaken',
'collections.editList': 'Hernoemen',
'collections.listMenu': 'Lijstopties',
'collections.deleteList': 'Lijst verwijderen',
'collections.deleteListConfirm': 'Hiermee worden de lijst en alle opgeslagen plekken definitief verwijderd. Dit kan niet ongedaan worden gemaakt.',
'collections.listName': 'Lijstnaam',
'collections.listNamePlaceholder': 'bijv. Tokio 2025',
'collections.listColor': 'Kleur',
'collections.allSaved': 'Alle opgeslagen',
'collections.shared': 'Gedeeld',
'collections.empty.title': 'Nog geen plekken',
'collections.empty.text': 'Sla plekken op uit elke reis om deze lijst op te bouwen.',
'collections.empty.noMatchTitle': 'Geen resultaten',
'collections.empty.noMatchText': 'Geen opgeslagen plekken komen overeen met je filter of zoekopdracht.',
'collections.empty.firstTitle': 'Begin je eerste collectie',
'collections.empty.firstText': 'Maak een lijst om plekken op te slaan die je over reizen heen wilt onthouden.',
'collections.view.grid': 'Raster',
'collections.view.list': 'Lijst',
'collections.view.map': 'Kaart',
'collections.status.idea': 'Idee',
'collections.status.want': 'Wil heen',
'collections.status.visited': 'Bezocht',
'collections.status.filterAll': 'Alle',
'collections.status.cycleHint': 'tik om te wijzigen',
'collections.copyToTrip': 'Naar reis kopiëren',
'collections.copyToTripTitle': 'Naar reis kopiëren',
'collections.copyN': '{count} naar reis kopiëren',
'collections.copyToTripSearch': 'Reizen zoeken',
'collections.copyToTripConfirm': 'Kopiëren',
'collections.noTrips': 'Nog geen reizen',
'collections.alreadyInTrip': 'Al in deze reis',
'collections.copied': 'Naar reis gekopieerd',
'collections.copiedCount': '{count} plekken gekopieerd',
'collections.skippedDuplicates': '{count} duplicaten overgeslagen',
'collections.copyNothing': 'Niets om te kopiëren',
'collections.removeFromList': 'Uit lijst verwijderen',
'collections.removeFromListConfirm': 'Deze plek uit de lijst verwijderen?',
'collections.removeFromCollection': 'Uit collectie verwijderen',
'collections.saved': 'Opgeslagen in {name}',
'collections.savedUndo': 'Ongedaan maken',
'collections.viewInCollection': 'Bekijken',
'collections.duplicateWarning': 'Deze plek staat al in de lijst',
'collections.search': 'Plekken zoeken',
'collections.selectMode': 'Selecteren',
'collections.selectedCount': '{count} geselecteerd',
'collections.pickList': 'In lijst opslaan',
'collections.pickListPlaceholder': 'Kies een lijst',
'collections.addedToList': 'Toegevoegd aan {name}',
'collections.removedFromList': 'Verwijderd uit {name}',
'collections.inLists': 'In je lijsten',
'collections.otherLists': 'Aan een lijst toevoegen',
'collections.noListsYet': 'Maak eerst een lijst om plekken op te slaan.',
'collections.removedFromAll': 'Uit collectie verwijderd',
'collections.picker.title': 'Opgeslagen plekken',
'collections.picker.search': 'Zoek in je opgeslagen plekken',
'collections.picker.empty': 'Geen opgeslagen plekken om toe te voegen',
'collections.picker.hint': 'Kies een plek uit je collecties',
'collections.picker.use': 'Gebruiken',
'collections.share.title': 'Lijst delen',
'collections.share.titleNamed': '“{name}” delen',
'collections.share.button': 'Delen',
'collections.share.members': 'Leden',
'collections.share.owner': 'Eigenaar',
'collections.share.you': 'jij',
'collections.share.pending': 'uitnodiging in afwachting',
'collections.share.accepted': 'geaccepteerd',
'collections.share.invite': 'Iemand uitnodigen',
'collections.share.inviteUser': 'Gebruiker selecteren',
'collections.share.sendInvite': 'Uitnodiging sturen',
'collections.share.inviteHint': 'Uitgenodigde personen kunnen deze lijst bekijken en bewerken.',
'collections.share.noUsers': 'Geen gebruikers beschikbaar om uit te nodigen.',
'collections.share.memberHint': 'Alleen de eigenaar van de lijst kan personen uitnodigen of verwijderen.',
'collections.share.cancel': 'Annuleren',
'collections.share.leave': 'Lijst verlaten',
'collections.share.leaveConfirm': 'Deze gedeelde lijst verlaten? Je verliest de toegang totdat je opnieuw wordt uitgenodigd.',
'collections.share.left': 'Je hebt de lijst verlaten',
'collections.share.remove': 'Verwijderen',
'collections.invites.title': 'Uitnodigingen',
'collections.invites.from': 'van',
'collections.invites.accept': 'Accepteren',
'collections.invites.decline': 'Weigeren',
'collections.invites.received': 'Je hebt een nieuwe lijstuitnodiging',
'collections.invite.sent': 'Uitnodiging verzonden',
'collections.invite.error': 'Kon uitnodiging niet versturen',
'collections.invite.accepted': 'Uitnodiging geaccepteerd',
'collections.invite.declined': 'Uitnodiging geweigerd',
'collections.widget.title': 'Collecties',
'collections.widget.empty': 'Nog geen opgeslagen plekken',
'collections.widget.savedCount': '{count} opgeslagen',
};
export default collection;