mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-22 15:06:32 +00:00
1e0feb93dd
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.
146 lines
6.9 KiB
TypeScript
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;
|