feat(catalog): add saved packages, preview and bulk price editing
CI / check (push) Successful in 52s
CI / deploy (push) Successful in 1m23s
CI / publish-container (push) Failing after 27s

This commit is contained in:
Simo committed 2026-09-09 20:04:10 +02:00
1 parent 867113d5d4
commit 047cd9f3dd
48 files changed
+7712

No files matched your search

+153
View File
@@ -1838,6 +1838,96 @@
"selectionHint": "De selectie wordt gewist wanneer je de zoekopdracht of het filter wijzigt.",
"noResults": "Geen aanbiedingen passen bij de huidige zoekopdracht en het filter.",
"selectVisible": "Alle zichtbare aanbiedingen selecteren"
},
"packages": {
"openPackages": "Cataloguspakketten",
"title": "Cataloguspakketten",
"description": "Bereid categorie- en prijswijzigingen voor in een apart concept. Controleer de catalogus voordat je publiceert.",
"createPackage": "Nieuw pakket",
"createDraft": "Concept maken",
"draftCreated": "Pakketconcept gemaakt. De livecatalogus is niet gewijzigd.",
"refresh": "Lijst vernieuwen",
"searchPackages": "Pakketten zoeken",
"noPackages": "Geen pakketten gevonden.",
"choosePackage": "Open een pakket of maak een concept op basis van bestaande categorieën.",
"name": "Pakketnaam",
"mode": "Publicatiemodus",
"update": "Bestaande categorieën bijwerken",
"copy": "Kopieën maken",
"updateHint": "Bij publicatie worden de bestaande categorieën en aanbiedingen bijgewerkt.",
"copyHint": "Bij publicatie worden nieuwe categorieën en aanbiedingen onder de gekozen bovenliggende categorie gemaakt. Meubelverwijzingen blijven behouden.",
"sourceCategories": "Broncategorieën",
"packageLimits": "Subcategorieën worden meegenomen. Elk pakket ondersteunt maximaal 200 categorieën en 500 aanbiedingen.",
"searchCategories": "Categorieën zoeken",
"selectedCategories": "Geselecteerd: {count}",
"targetParent": "Bovenliggende doelcategorie",
"rootCategory": "Hoofdniveau van de catalogus",
"draft": "Concept",
"published": "Gepubliceerd",
"editDraft": "Concept bewerken",
"catalogPreview": "Catalogusvoorbeeld",
"showBaseline": "Oorspronkelijke opgeslagen momentopname tonen",
"changes": "Voor en na",
"entry": "Onderdeel",
"field": "Veld",
"before": "Voor",
"after": "Na",
"noChanges": "Geen velden gewijzigd ten opzichte van de oorspronkelijke momentopname.",
"copyReview": "Het volledige pakket wordt bij publicatie gekopieerd, ook zonder veldwijzigingen. De tabel toont wijzigingen ten opzichte van de oorspronkelijke momentopname.",
"updateReview": "Deze conceptwijzigingen worden na publicatie op bestaande catalogusonderdelen toegepast.",
"saveDraft": "Concept opslaan",
"saveHint": "Opslaan bewaart het pakket als concept. Sla alle wijzigingen op voordat je een publicatiecontrole aanvraagt.",
"draftSaved": "Concept opgeslagen. Publiceren is een aparte stap.",
"reviewPublication": "Publicatie controleren",
"publicationImpact": "Publicatie betreft {pages} categorieën en {offers} aanbiedingen.",
"conflicts": "Publicatie wordt geblokkeerd door conflicten. Los deze op voordat je opnieuw controleert.",
"readyToPublish": "De opgeslagen versie heeft de publicatiecontrole doorstaan. Publiceren wijzigt de livecatalogus.",
"publish": "Pakket publiceren",
"confirmPublish": "Dit gecontroleerde pakket nu publiceren in de livecatalogus?",
"publishedSuccess": "Pakket gepubliceerd: {pages} categorieën en {offers} aanbiedingen.",
"staleReview": "Dit pakket is in een andere sessie gewijzigd. Open het opnieuw om de laatste opgeslagen versie te controleren.",
"unsaved": "Niet-opgeslagen wijzigingen",
"discardChanges": "Niet-opgeslagen pakketwijzigingen verwerpen en doorgaan?",
"working": "Bezig…",
"requestFailed": "Het verzoek is mislukt. Probeer het opnieuw.",
"invalidFields": "Controleer verplichte namen, lay-outs en gehele getallen voordat je opslaat.",
"category": "Categorie",
"caption": "Categorienaam",
"iconImage": "Categoriepictogram-ID",
"minRank": "Minimale rang",
"orderNum": "Weergavevolgorde",
"pageLayout": "Paginalay-out",
"enabled": "Ingeschakeld",
"visible": "Zichtbaar",
"clubOnly": "Alleen Clubleden",
"vipOnly": "Alleen VIP-leden",
"offers": "Aanbiedingen ({count})",
"offer": "Aanbieding",
"catalogName": "Aanbiedingsnaam",
"costCredits": "Credits",
"costPoints": "Punten",
"pointsType": "Puntenvaluta-ID",
"amount": "Aantal",
"searchOffers": "Aanbiedingen zoeken",
"currentCategoryOffers": "Alleen de geselecteerde categorie",
"selectMatching": "Alle overeenkomende aanbiedingen selecteren ({count})",
"clearSelection": "Selectie wissen",
"selectedOffers": "Geselecteerde aanbiedingen: {count}",
"select": "Selecteren",
"selectOffer": "Aanbieding #{id} selecteren",
"noOffers": "Geen aanbiedingen gevonden met deze filters.",
"bulkPrices": "Conceptprijzen in bulk ({count} geselecteerd)",
"bulkHint": "Bekijk de geselecteerde prijswijzigingen en neem ze daarna over in dit concept. De livecatalogus blijft ongewijzigd tot publicatie.",
"operation": "Bewerking",
"set": "Waarde instellen",
"add": "Optellen of aftrekken",
"percent": "Procentueel aanpassen",
"value": "Waarde",
"reviewBulk": "Prijsvoorbeeld",
"invalidBulk": "Kies geldige getallen en minstens één aanbieding. De resulterende prijzen mogen niet negatief zijn en moeten binnen het ondersteunde bereik vallen.",
"acceptBulk": "Prijzen overnemen in concept",
"previous": "Vorige",
"next": "Volgende"
}
},
"shop": {
@@ -3430,6 +3520,69 @@
"publications": "Nieuwsconcepten",
"unavailable": "{source}: gegevens tijdelijk niet beschikbaar.",
"installation": "Installatiediagnose"
},
"catalogPackages": {
"backend": {
"sourceChanged": "De broncategorieën of aanbiedingen zijn gewijzigd. Maak een nieuw pakket met de actuele gegevens.",
"saveConflict": "Het pakket is gewijzigd. Laad het opnieuw voordat je opslaat.",
"publishConflict": "Het pakket is gewijzigd. Vernieuw het publicatievoorbeeld.",
"catalogChanged": "De catalogus is gewijzigd. Vernieuw het publicatievoorbeeld.",
"missing": "Cataloguspakket niet gevonden.",
"pageLimit": "Een pakket ondersteunt maximaal 200 categorieën, inclusief subcategorieën.",
"offerLimit": "Een pakket ondersteunt maximaal 500 aanbiedingen.",
"payloadLimit": "De pakketgegevens overschrijden de limiet van 8 MB.",
"membership": "Je kunt geen onderdelen aan het pakket toevoegen of eruit verwijderen.",
"hierarchy": "Je kunt de pakkethiërarchie niet wijzigen.",
"references": "Je kunt de meubelverwijzingen in het pakket niet wijzigen.",
"furnitureMissing": "Een meubel waarnaar het pakket verwijst bestaat niet meer.",
"auditWarning": "Pakket gepubliceerd, maar het schrijven naar het auditlog is mislukt.",
"hotelWarning": "Pakket gepubliceerd, maar de hotelupdate is niet afgeleverd.",
"exportWarning": "Pakket gepubliceerd, maar het plannen van de export is mislukt.",
"refreshWarning": "Pakket gepubliceerd. Vernieuw de pagina om de nieuwste catalogus te zien."
}
},
"catalogPackagePreview": {
"title": "Catalogusvoorbeeld",
"hint": "Blader door de echte pagina’s en aanbiedingen van het pakket. Dit is een catalogusvoorbeeld, geen volledige weergave van de spelclient. Er worden geen aankopen gedaan.",
"search": "Categorieën of aanbiedingen zoeken",
"playerMode": "Spelerstoegang",
"rank": "Rang",
"club": "Club",
"vip": "VIP",
"externalParents": "Deze selectie is onderdeel van een grotere catalogus. Toegangsregels van bovenliggende categorieën buiten deze momentopname kunnen niet worden beoordeeld.",
"invalidHierarchy": "{count} pagina’s hebben een cyclische hiërarchie en kunnen niet worden geopend.",
"snapshotLimit": "Voorbeeld beperkt tot 200 pagina’s en 500 aanbiedingen.",
"restricted": "{count} pagina’s zijn verborgen door de gekozen toegangsinstellingen.",
"categories": "Cataloguscategorieën",
"noPages": "Deze momentopname bevat geen categorieën.",
"inaccessible": "Met deze instellingen zijn geen categorieën toegankelijk. Pas de spelerstoegang aan of schakel deze uit om het concept te bekijken.",
"noMatches": "Geen resultaten voor deze zoekopdracht.",
"offerCount": "{count} aanbiedingen",
"layout": "Indeling: {layout}",
"missingLayout": "Niet opgegeven",
"unsupportedLayout": "Deze indeling heeft geen eigen voorbeeld. Het raster toont de echte aanbiedingen; aangepaste onderdelen en afbeeldingen worden niet weergegeven.",
"loadingIcons": "Meubelpictogrammen laden…",
"assetsUnavailable": "Meubelgegevens zijn tijdelijk niet beschikbaar. De aanbiedingen blijven zichtbaar.",
"assetLimit": "Pictogrammen en meubelnamen zijn beperkt tot de eerste 200 item-ID’s in deze weergave.",
"emptyPage": "Deze categorie bevat geen directe aanbiedingen. Bekijk de subcategorieën.",
"missingIcon": "Pictogram niet beschikbaar",
"amount": "Aantal: {count}",
"bundle": "{count} meubeltypes",
"changed": "Gewijzigd ten opzichte van de opgeslagen beginversie",
"previous": "Vorige",
"next": "Volgende",
"page": "Pagina {page} van {total}",
"offerId": "Aanbieding #{id}",
"unknownFurniture": "Meubelnaam niet beschikbaar",
"selectOffer": "Selecteer een aanbieding om de prijs en meubelverwijzingen te bekijken.",
"credits": "Credits",
"duckets": "Duckets",
"diamonds": "Diamanten",
"pointsType": "Punten (type {type}):",
"free": "Gratis",
"specialPricing": "Speciale prijs: {credits} credits, {points} punten (type {type})",
"restrictedOffers": "{count} aanbiedingen in deze categorie vereisen een Club-lidmaatschap.",
"clubOffer": "Club-aanbieding"
}
},
"mod": {