Просмотр исходного кода

feat(core): Improved translations

Closes #839
Wanztwurst 4 лет назад
Родитель
Сommit
a8ca0197de

+ 6 - 6
packages/admin-ui/src/lib/static/i18n-messages/de.json

@@ -137,10 +137,10 @@
     "sku": "Artikelnummer",
     "slug": "Slug",
     "slug-pattern-error": "Ungültiger Slug",
-    "stock-allocated": "Bestand reserviert",
+    "stock-allocated": "Lagerbestand reserviert",
     "stock-allocated-tooltip": "Anzahl der Artikel, die bereits bestellt, aber noch nicht abgewickelt wurden",
-    "stock-on-hand": "Bestand",
-    "stock-on-hand-tooltip": "Bestand dieses Artikels im Lager",
+    "stock-on-hand": "Lagerbestand",
+    "stock-on-hand-tooltip": "Lagerbestand dieses Artikels",
     "stock-saleable": "Verkaufbar",
     "stock-saleable-tooltip": "Anzahl der verkauftbaren Einheiten dieses Artikels; berücksichtigt reservierte Artikel und eingestellte Fehlmenge",
     "tax-category": "Steuerkategorie",
@@ -365,8 +365,8 @@
     "could-not-connect-to-server": "Es konnte keine Verbindung zum Vendure-Server auf { url } hergestellt werden.",
     "facet-value-form-values-do-not-match": "Die Anzahl der Werte im Facetten-Formular stimmt nicht mit der tatsächlichen Anzahl der Werte überein",
     "health-check-failed": "Systemzustandsprüfung fehlgeschlagen",
-    "no-default-shipping-zone-set": "Dieser Kanal hat keine Standard-Versandzone. Dies kann zu Fehlern bei der Berechnung der Auftragsversandkosten führen.",
-    "no-default-tax-zone-set": "Dieser Kanal verfügt nicht über ein Standard-Steuerzone, was zu Fehlern bei der Preisberechnung führen kann. Bitte erstellen oder wählen Sie eine Zone.",
+    "no-default-shipping-zone-set": "Dieser Kanal verfügt nicht über eine Standard-Versandzone. Dies kann zu Fehlern bei der Berechnung der Auftragsversandkosten führen.",
+    "no-default-tax-zone-set": "Dieser Kanal verfügt nicht über eine Standard-Steuerzone, was zu Fehlern bei der Preisberechnung führen kann. Bitte erstellen oder wählen Sie eine Zone.",
     "product-variant-form-values-do-not-match": "Die Anzahl der Varianten im Produktformular stimmt nicht mit der tatsächlichen Anzahl der Varianten überein."
   },
   "lang": {
@@ -762,7 +762,7 @@
     "test-result": "Test-Ergebnis",
     "test-shipping-method": "Test-Versandart",
     "test-shipping-methods": "Test-Versandarten",
-    "track-inventory-default": "Bestand standardmäßig verfolgen",
+    "track-inventory-default": "Lagerbestand standardmäßig verfolgen",
     "update-zone": "Zone aktualisieren",
     "view-zone-members": "Mitglieder anzeigen",
     "zone": "Zone"

+ 1 - 1
packages/core/e2e/configurable-operation.e2e-spec.ts

@@ -116,7 +116,7 @@ describe('Configurable operations', () => {
                         },
                     },
                 );
-            }, "The argument 'required' is required, but the value is [null]"),
+            }, "The argument 'required' is required"),
         );
     });
 

+ 1 - 1
packages/core/e2e/product.e2e-spec.ts

@@ -1301,7 +1301,7 @@ describe('Product resolver', () => {
                             ],
                         },
                     );
-                }, 'A ProductVariant already exists with the options:'),
+                }, 'A ProductVariant with the selected options already exists: Variant 1'),
             );
 
             it('updateProductVariants updates variants', async () => {

+ 100 - 101
packages/core/src/i18n/messages/de.json

@@ -1,117 +1,116 @@
 {
   "error": {
-    "cannot-delete-role": "Die Rolle '{ roleCode }' kann nicht gelöscht werden",
+    "cannot-delete-role": "Die Rolle \"{ roleCode }\" kann nicht gelöscht werden",
     "cannot-locate-customer-for-user": "Es konnte kein Kunde für den Nutzer gefunden werden",
-    "cannot-modify-role": "Die Rolle '{ roleCode }' kann nicht verändert werden",
-    "cannot-create-sales-for-active-order": "Es kann kein Sale für eine aktive Bestellung erstellen werden",
-    "cannot-move-collection-into-self": "Es kann keine Collection in sich selbst verschoben werden",
-    "cannot-transition-payment-from-to": "Die Bezahlung kann nicht von \"{ fromState }\" zu \"{ toState }\" verändern werden",
-    "cannot-transition-refund-from-to": "Die Rückerstattung kann nicht von \"{ fromState }\" zu \"{ toState }\" verändern werden",
-    "cannot-transition-fulfillment-from-to": "Die Versandmethode kann nicht von \"{ fromState }\" zu \"{ toState }\" verändern werden",
-    "collection-id-or-slug-must-be-provided": "Entweder die Collection id oder der slug muss angegeben werden",
-    "collection-id-slug-mismatch": "Die angegebene id und der slug führen zu unterschiedlichen Collections",
-    "conditions-required-for-action": "Die PromotionAction '{ action }' erfordert die folgende Bedingung: { conditions }",
-    "configurable-argument-is-required": "Das Argument '{ name }' wird gefordert, aber der Wert ist [{ value }]",
-    "country-code-not-valid": "Der Landescode \"{ countryCode }\" wurde nicht gefunden",
-    "customer-does-not-belong-to-customer-group": "Kunde gehört nicht zu dieser Kundengruppe",
-    "default-channel-not-found": "Standard Kanal nicht gefunden",
-    "entity-has-no-translation-in-language": "Übersetzbare Entity '{ entityName }' wurde nicht in die geforderte Sprache übersetzt ({ languageCode })",
-    "entity-with-id-not-found": "Es konnte kein/e { entityName } mit der id '{ id }' gefunden werden",
-    "facetfilterinput-invalid-input": "Ein FacetValueFilterInput Objekt kann nicht 'and' und 'or' Felder gleichzeitig angeben",
-    "field-invalid-datetime-range-max": "Das Feld '{ name }' mit [{ value }] ist größer als das Maximum [{ max }]",
-    "field-invalid-datetime-range-min": "Das Feld '{ name }' mit [{ value }] ist kleiner als das Minimum [{ min }]",
-    "field-invalid-non-nullable": "Das Feld '{ name }' kann nicht null gesetzt werden",
-    "field-invalid-number-range-max": "Das Feld '{ name }' mit [{ value }] ist größer als das Maximum [{ max }]",
-    "field-invalid-number-range-min": "Das Feld '{ name }' mit [{ value }] ist kleiner als das Minimum [{ min }]",
-    "field-invalid-readonly": "Das Feld '{ name }' kann nur gelesen werden",
-    "field-invalid-string-option": "Das Feld '{ name }' mit ['{ value }'] ist ungültig. Valide Optionen sind [{ validOptions }]",
-    "field-invalid-string-pattern": "Das Feld '{ name }' mit ['{ value }'] passt nicht zum Pattern [{ pattern }]",
-    "forbidden": "Du bist momentan nicht authorisiert diese Aktion durchzuführen",
-    "invalid-sort-field": "Das Sortierfeld '{ fieldName }' ist invalid. Valide Felder sind: { validFields }",
-    "list-query-limit-exceeded": "Es können nicht mehr als { limit } Ergebnisse von einer Listenanfrage erhalten werden",
-    "no-active-tax-zone": "Die aktive Steuerzone konnte nicht definiert werden. Es wird ein valider Steuercode für diesen Kanal benötigt.",
-    "no-configurable-operation-def-with-code-found": "Es wurde kein { type } mit dem code '{ code }' gefunden",
-    "no-price-found-for-channel": "Es wurden keine Preisinformationen für die ProductVariant ID '{ variantId }' in dem Kanal '{ channel }' gefunden.",
-    "no-search-plugin-configured": "Es wurde kein Such Plugin konfiguriert",
-    "order-does-not-contain-line-with-id": "Die Bestellung beeinhaltet keine OrderLine mit der id { id }",
-    "pending-identifier-missing": "Die ausstehende email address konnte nicht gefunden werden",
-    "permission-invalid": "Die Berechtigung \"{ permission }\" wurde nicht zugewiesen",
-    "products-cannot-be-removed-from-default-channel": "Produkte können nicht vom Standard channel entfernt werden",
-    "product-id-or-slug-must-be-provided": "Entweder Produkt id oder slug müssen angegeben werden",
-    "product-id-slug-mismatch": "Die angegebene id und slug verweisen zu unterschiedlichen Produkten",
-    "product-variant-option-ids-not-compatible": "ProductVariant optionIds müssen eine optionId von jeder dieser Gruppen enthalten: {groupNames}",
-    "product-variant-options-combination-already-exists": "Eine ProductVariant mit den folgenden Optionen existiert bereits: {optionNames}",
-    "promotion-channels-can-only-be-changed-from-default-channel": "Promotions channels können nur vom Standard Kanal aus verändert werden",
-    "stockonhand-cannot-be-negative": "stockOnHand kann keinen negativen Wert betragen",
-    "unauthorized": "Die Anmeldedaten passen nicht. Bitte überprüfen und erneut versuchen"
+    "cannot-modify-role": "Die Rolle \"{ roleCode }\" kann nicht geändert werden",
+    "cannot-create-sales-for-active-order": "Es kann kein Sale für eine aktive Bestellung erstellt werden",
+    "cannot-move-collection-into-self": "Es kann keine Sammlung in sich selbst verschoben werden",
+    "cannot-transition-payment-from-to": "Die Zahlung kann nicht von \"{ fromState }\" zu \"{ toState }\" geändert werden",
+    "cannot-transition-refund-from-to": "Die Rückerstattung kann nicht von \"{ fromState }\" zu \"{ toState }\" geändert werden",
+    "cannot-transition-fulfillment-from-to": "Die Versandmethode kann nicht von \"{ fromState }\" zu \"{ toState }\" geändert werden",
+    "collection-id-or-slug-must-be-provided": "Entweder die Sammlungs-ID oder der Slug muss angegeben werden",
+    "collection-id-slug-mismatch": "Die angegebene ID und der Slug gehören zu unterschiedlichen Sammlungen",
+    "conditions-required-for-action": "Die PromotionAction \"{ action }\" erfordert die folgende Bedingung: { conditions }",
+    "configurable-argument-is-required": "Das Feld \"{ name }\" ist erforderlich",
+    "country-code-not-valid": "Der Landescode \"{ countryCode }\" konnte nicht gefunden werden",
+    "customer-does-not-belong-to-customer-group": "Der Kunde gehört nicht zu dieser Kundengruppe",
+    "default-channel-not-found": "Der Standardkanal konnte nicht gefunden werden",
+    "entity-has-no-translation-in-language": "Übersetzbare Entity \"{ entityName }\" wurde nicht in die geforderte Sprache übersetzt ({ languageCode })",
+    "entity-with-id-not-found": "Es konnte kein/e { entityName } mit der ID \"{ id }\" gefunden werden",
+    "facetfilterinput-invalid-input": "Ein FacetValueFilterInput-Objekt kann nicht \"and\" und \"or\" Felder gleichzeitig haben",
+    "field-invalid-datetime-range-max": "Das Feld \"{ name }\" mit [{ value }] ist größer als das Maximum [{ max }]",
+    "field-invalid-datetime-range-min": "Das Feld \"{ name }\" mit [{ value }] ist kleiner als das Minimum [{ min }]",
+    "field-invalid-non-nullable": "Das Feld \"{ name }\" kann nicht null gesetzt werden",
+    "field-invalid-number-range-max": "Das Feld \"{ name }\" mit [{ value }] ist größer als das Maximum [{ max }]",
+    "field-invalid-number-range-min": "Das Feld \"{ name }\" mit [{ value }] ist kleiner als das Minimum [{ min }]",
+    "field-invalid-readonly": "Das Feld \"{ name }\" kann nur gelesen werden",
+    "field-invalid-string-option": "Das Feld \"{ name }\" mit dem Wert [\"{ value }\"] ist ungültig. Gültige Optionen sind: [{ validOptions }]",
+    "field-invalid-string-pattern": "Das Feld \"{ name }\" mit dem Wert [\"{ value }\"] passt nicht zum Muster [{ pattern }]",
+    "forbidden": "Du bist momentan nicht autorisiert diese Aktion durchzuführen",
+    "invalid-sort-field": "Das Sortierfeld \"{ fieldName }\" ist ungültig. Gültige Felder sind: { validFields }",
+    "list-query-limit-exceeded": "Es können nicht mehr als { limit } Einträge gleichzeitig abgefragt werden",
+    "no-active-tax-zone": "Es konnte keine aktive Steuerzone für diesen Kanal gefunden werden",
+    "no-configurable-operation-def-with-code-found": "Es konnte kein { type } mit dem code \"{ code }\" gefunden werden",
+    "no-price-found-for-channel": "Es konnten keine Preisinformationen für die Produktvariante mit der ID \"{ variantId }\" in dem Kanal \"{ channel }\" gefunden werden",
+    "no-search-plugin-configured": "Es wurde kein Suchplugin konfiguriert",
+    "order-does-not-contain-line-with-id": "Die Bestellung beeinhaltet keine OrderLine mit der ID { id }",
+    "pending-identifier-missing": "Die zu ändernde E-Mail-Adresse konnte nicht gefunden werden",
+    "permission-invalid": "Die Berechtigung \"{ permission }\" kann nicht zugewiesen werden",
+    "products-cannot-be-removed-from-default-channel": "Produkte können nicht aus dem Standardkanal entfernt werden",
+    "product-id-or-slug-must-be-provided": "Entweder eine Produkt-ID oder Slug müssen angegeben werden",
+    "product-id-slug-mismatch": "Die angegebene ID und Slug verweisen zu unterschiedlichen Produkten",
+    "product-variant-option-ids-not-compatible": "Die optionIds einer Produktvariante müssen eine optionId aus jeder dieser Gruppen enthalten: {groupNames}",
+    "product-variant-options-combination-already-exists": "Eine Produktvariante mit den gewählten Optionen existiert bereits: {variantName}",
+    "promotion-channels-can-only-be-changed-from-default-channel": "Werbeaktionskanäle können nur vom Standardkanal aus geändert werden",
+    "stockonhand-cannot-be-negative": "Die Bestandsmenge kann nicht negativ sein",
+    "unauthorized": "Die Anmeldedaten sind falsch oder uns nicht bekannt, bitte versuchen Sie es erneut."
   },
   "errorResult": {
-    "ALREADY_CANCELLED_ERROR": "Zu stornierende Menge ist größer als existierende OrderLine Menge",
-    "ALREADY_LOGGED_IN_ERROR": "Es kann kein Kunden für die Bestellung gesetzt werden wenn dieser bereits eingeloggt ist",
-    "ALREADY_REFUNDED_ERROR": "Es kann kein OrderItem rückerstatten werden, welches schon erstattet wurde",
-    "CANCEL_ACTIVE_ORDER_ERROR": "Es kann keine OrderLine storniert werden, wenn die Bestellung in dem Status \"{ orderState }\" ist",
-    "CHANNEL_DEFAULT_LANGUAGE_ERROR": "Die Sprache \"{ language }\" kann nicht verstellt werden da sie als defaultLanguage vom Kanal \"{ channelCode }\" festelegt wurde",
-    "COUPON_CODE_EXPIRED_ERROR": "Der Coupon code \"{ couponCode }\" ist abgelaufen",
-    "COUPON_CODE_INVALID_ERROR": "Der Coupon code \"{ couponCode }\" is nicht gültig",
-    "COUPON_CODE_LIMIT_ERROR": "Der Coupon code kann nicht mehr als {limit, plural, one {once} other {# times}} pro Kunde verwendet werden",
-    "EMAIL_ADDRESS_CONFLICT_ERROR": "Die Email-Addresse ist nicht verfügbar",
+    "ALREADY_LOGGED_IN_ERROR": "Der Bestellung kann kein Kunde zugewiesen werden, wenn dieser bereits eingeloggt ist",
+    "ALREADY_REFUNDED_ERROR": "Es kann kein OrderItem zurückerstattet werden, welches bereits erstattet wurde",
+    "CANCEL_ACTIVE_ORDER_ERROR": "Es kann keine OrderLine storniert werden, wenn die Bestellung den Status \"{ orderState }\" hat",
+    "CHANNEL_DEFAULT_LANGUAGE_ERROR": "Die Sprache \"{ language }\" kann nicht geändert werden, da sie als Standardsprache vom Kanal \"{ channelCode }\" festelegt wurde",
+    "COUPON_CODE_EXPIRED_ERROR": "Der Gutscheincode \"{ couponCode }\" ist abgelaufen",
+    "COUPON_CODE_INVALID_ERROR": "Der Gutscheincode \"{ couponCode }\" ist ungültig",
+    "COUPON_CODE_LIMIT_ERROR": "Der Gutscheincode kann nicht mehr als {limit, plural, one {ein Mal} other {# Mal}} pro Kunde verwendet werden",
+    "EMAIL_ADDRESS_CONFLICT_ERROR": "Die E-Mail-Adresse ist nicht verfügbar",
     "EMPTY_ORDER_LINE_SELECTION_ERROR": "Mindestens eine OrderLine muss spezifiziert werden",
-    "IDENTIFIER_CHANGE_TOKEN_INVALID_ERROR": "Identifier change token nicht gefunden",
-    "INELIGIBLE_SHIPPING_METHOD_ERROR": "Diese Bestellung ist für die gewählte Versandart nicht geeignet",
-    "INSUFFICIENT_STOCK_ERROR": "{quantityAvailable, plural, =0 {No items were} Ein {Only 1 item was} other {Only # items were}} wurde zur order hinzugefügt wegen fehlendem Inventar",
-    "INSUFFICIENT_STOCK_ON_HAND_ERROR": "Es kann keine Lieferung von '{productVariantName}' erstellen werden, da der stockOnHand ({stockOnHand}) zu gering ist",
-    "INVALID_CREDENTIALS_ERROR": "Die eingegebenen Anmeldedaten sind falsch",
-    "ITEMS_ALREADY_FULFILLED_ERROR": "Ein oder mehr OrderItems sind bereit Teil der Lieferung",
-    "LANGUAGE_NOT_AVAILABLE_ERROR": "Die Sprache \"{languageCode}\" ist nicht vorhanden. Ändere die globalen Einstellung und versuche es nochmal",
-    "MANUAL_PAYMENT_STATE_ERROR": "Eine manuelle Bezahlung kann nur im \"ArrangingAdditionalPayment\" Zustand hinzugefügt werden",
-    "MIME_TYPE_ERROR": "Der MIME type '{ mimeType }' ist nicht erlaubt",
-    "MISSING_CONDITIONS_ERROR": "Eine Promotion muss eine condition oder einen coupon code enthalten",
-    "MISSING_PASSWORD_ERROR": "Ein Passwort muss angegeben werden",
+    "IDENTIFIER_CHANGE_TOKEN_INVALID_ERROR": "Identifier change token nicht erkannt",
+    "INELIGIBLE_SHIPPING_METHOD_ERROR": "Diese Bestellung ist für die gewählte Versandart nicht qualifiziert",
+    "INSUFFICIENT_STOCK_ERROR": "Wegen unzureichender Lagermenge {quantityAvailable, plural, =0 {wurden keine} one {wurde nur ein} other {wurden nur #}} Artikel zur Bestellung hinzugefügt",
+    "INSUFFICIENT_STOCK_ON_HAND_ERROR": "Es kann keine Lieferung von \"{productVariantName}\" erfolgen, da der Lagerbestand ({stockOnHand}) zu gering ist",
+    "INVALID_CREDENTIALS_ERROR": "Die angegebenen Anmeldedaten sind falsch",
+    "ITEMS_ALREADY_FULFILLED_ERROR": "Ein oder mehrere Artikel sind bereits Teil einer Lieferung",
+    "LANGUAGE_NOT_AVAILABLE_ERROR": "Die Sprache \"{languageCode}\" ist nicht vorhanden. Aktiviere sie erst in den globalen Einstellungen und versuche es erneut",
+    "MANUAL_PAYMENT_STATE_ERROR": "Eine manuelle Zahlung kann nur im Status \"ArrangingAdditionalPayment\" hinzugefügt werden",
+    "MIME_TYPE_ERROR": "Der Dateityp \"{ mimeType }\" ist nicht erlaubt",
+    "MISSING_CONDITIONS_ERROR": "Eine Werbeaktion muss eine Bedingung oder einen Gutscheincode enthalten",
+    "MISSING_PASSWORD_ERROR": "Es muss ein Passwort angegeben werden",
     "NEGATIVE_QUANTITY_ERROR": "Die Menge eines Artikels kann nicht negativ sein",
-    "NO_ACTIVE_ORDER_ERROR": "Es gibt keine aktive Bestellung in der momentanen Sitzung",
-    "NOTHING_TO_REFUND_ERROR": "Es gibt keine Rückerstattung",
-    "NOT_VERIFIED_ERROR": "Bitte bestätige deine Emailaddresse bevor du dich anmeldest",
-    "ORDER_LIMIT_ERROR": "Man kann die Artikel nicht hinzufügen. Eine Bestellung kann maximal { maxItems } Artikel enthalten", 
-    "ORDER_MODIFICATION_ERROR": "Der Inhalt der Bestellung kann nur im  \"AddingItems\" Zustand verändert werden",
-    "ORDER_PAYMENT_STATE_ERROR": "Eine Bezahlung kann nur im \"ArrangingPayment\" Zustand hinzugefügt werden",
-    "ORDER_STATE_TRANSITION_ERROR": "Der Zustand der Bestellung kan nicht von \"{ fromState }\" zu \"{ toState }\" verändert werden",
+    "NO_ACTIVE_ORDER_ERROR": "Es gibt keine aktive Bestellung in der aktuellen Sitzung",
+    "NOTHING_TO_REFUND_ERROR": "Es gibt nichts zurückzuerstatten",
+    "NOT_VERIFIED_ERROR": "Bitte bestätige deine E-Mail-Adresse, bevor du dich anmeldest",
+    "ORDER_LIMIT_ERROR": "Der Artikel konnte nicht hinzugefügt werden. Eine Bestellung kann maximal { maxItems } Artikel enthalten", 
+    "ORDER_MODIFICATION_ERROR": "Der Inhalt der Bestellung kann nur im Status \"AddingItems\" geändert werden",
+    "ORDER_PAYMENT_STATE_ERROR": "Eine Zahlung kann nur im Status \"ArrangingPayment\" hinzugefügt werden",
+    "ORDER_STATE_TRANSITION_ERROR": "Der Status der Bestellung kan nicht von \"{ fromState }\" zu \"{ toState }\" geändert werden",
     "PASSWORD_ALREADY_SET_ERROR": "Ein Passwort wurde während der Registrierung bereits festgelegt",
-    "PASSWORD_RESET_TOKEN_EXPIRED_ERROR": "Passwort Reset Token ist leider abgelaufen",
-    "PASSWORD_RESET_TOKEN_INVALID_ERROR": "Passwort Reset Token ist leider falsch",
-    "PAYMENT_DECLINED_ERROR": "Bezahlung wurde abgelehnt",
-    "PAYMENT_FAILED_ERROR": "Bezahlung fehlgeschlagen",
-    "PAYMENT_ORDER_MISMATCH_ERROR": "Die Bezahlung und OrderLines gehören nicht zueinander",
-    "PAYMENT_STATE_TRANSITION_ERROR": "Der Zustand der Bezahlung kann nicht von \"{ fromState }\" zu \"{ toState }\" verändert werden",
-    "PRODUCT_OPTION_IN_USE_ERROR": "Die ProductOptionGroup \"{ optionGroupCode }\" kann nicht entfernt werden, solange sie von {productVariantCount, plural, one {1 ProductVariant} other {# ProductVariants}} benutzt wird",
+    "PASSWORD_RESET_TOKEN_EXPIRED_ERROR": "Das Token zum Passwortzurücksetzen ist leider abgelaufen",
+    "PASSWORD_RESET_TOKEN_INVALID_ERROR": "Das Token zum Passwortzurücksetzen ist leider falsch",
+    "PAYMENT_DECLINED_ERROR": "Die Zahlung wurde abgelehnt",
+    "PAYMENT_FAILED_ERROR": "Zahlung fehlgeschlagen",
+    "PAYMENT_ORDER_MISMATCH_ERROR": "Die Zahlung und OrderLines gehören nicht zueinander",
+    "PAYMENT_STATE_TRANSITION_ERROR": "Der Status der Zahlung kann nicht von \"{ fromState }\" zu \"{ toState }\" geändert werden",
+    "PRODUCT_OPTION_IN_USE_ERROR": "Die ProductOptionGroup \"{ optionGroupCode }\" kann nicht entfernt werden, solange sie von {productVariantCount, plural, one {einer Produktvariante} other {# Produktvarianten}} genutzt wird",
     "QUANTITY_TOO_GREAT_ERROR": "Die gewählte Menge ist größer als die verfügbaren OrderItems",
-    "REFUND_ORDER_STATE_ERROR": "Eine Bestellung kann im Zustand \"{ orderState }\" nicht erstattet werden",
+    "REFUND_ORDER_STATE_ERROR": "Eine Bestellung kann im Status \"{ orderState }\" nicht erstattet werden",
     "SETTLE_PAYMENT_ERROR": "Abrechnung der Zahlung fehlgeschlagen",
-    "VERIFICATION_TOKEN_EXPIRED_ERROR": "Verifizierungs Token abgelaufen. Benutze refreshCustomerVerification um ein neuen Token zu erhalten",
-    "VERIFICATION_TOKEN_INVALID_ERROR": "Verifizierungs Token nicht gefunden"
+    "VERIFICATION_TOKEN_EXPIRED_ERROR": "Verifizierungstoken abgelaufen. Benutze refreshCustomerVerification um einen neuen Token zu versenden",
+    "VERIFICATION_TOKEN_INVALID_ERROR": "Verifizierungstoken nicht gefunden"
   },
   "message": {
-    "asset-to-be-deleted-is-featured": "Der gewählte {assetCount, plural, one {Asset is} other {Assets are}} soll gelöscht werden, ist aber enthalten in {products, plural, =0 {} one {1 Product} other {# Products}} {variants, plural, =0 {} one { 1 ProductVariant} other { # ProductVariants}} {collections, plural, =0 {} one { 1 Collection} other { # Collections}}",
-    "cannot-remove-tax-category-due-to-tax-rates": "Die TaxCategory \"{ name }\" kann nicht entfernt werden, da sie in {count, plural, one {1 TaxRate} other {# TaxRates}} enthalten ist",
-    "cannot-transition-from-arranging-additional-payment": "Der Übergang von dem \"ArrangingAdditionalPayment\" Zustand funktioniert nur wenn die Bestellsumme vollständig beglichen wurde",
+    "asset-to-be-deleted-is-featured": "{assetCount, plural, one {Das gewählte Asset wird} other {Die gewählten Assets werden}} von {products, plural, =0 {} one {einem Produkt} other {# Produkten}} {variants, plural, =0 {} one {einer Produktvariante} other {# Produktvarianten}} {collections, plural, =0 {} one {einer Sammlung} other {# Sammlungen}} verwendet",
+    "cannot-remove-tax-category-due-to-tax-rates": "Die Steuerkategorie \"{ name }\" kann nicht entfernt werden, da sie {count, plural, one {einen Steuersatz} other {# Steuersätze}} beinhaltet",
+    "cannot-transition-from-arranging-additional-payment": "Der Übergang von dem Status \"ArrangingAdditionalPayment\" funktioniert nur, wenn die Bestellsumme vollständig beglichen wurde",
     "cannot-transition-order-from-to": "Der Übergang von \"{ fromState }\" zu \"{ toState }\" funktioniert nicht",
-    "cannot-transition-no-additional-payments-needed": "Die Bestellung kann nicht zum \"ArrangingAdditionalPayment\" Zustand übergehen, da keine zusätzliche Bezahlung benötigt wird",
-    "cannot-transition-to-shipping-when-order-is-empty": "Die Bestellung kann nicht zum \"ArrangingShipping\" Zustand übergehen, wenn sie leer ist",
-    "cannot-transition-to-payment-without-customer": "Die Bestellung kann ohne die Kunden Details nicht zum \"ArrangingPayment\" Zustand übergehen",
-    "cannot-transition-unless-all-cancelled": "Die Bestellung kann erst zum \"Cancelled\" Zustand übergehen, wenn alle OrderItems vorher storniert wurden",
-    "cannot-transition-unless-all-order-items-delivered": "Die Bestellung kann erst zum \"Delivered\" Zustand übergehen, wenn alle OrderItems geliefert sind",
-    "cannot-transition-unless-some-order-items-delivered": "Die Bestellung kann erst zum \"PartiallyDelivered\" Zustand übergehen, wenn einige OrderItems geliefert wurden",
-    "cannot-transition-unless-some-order-items-shipped": "Die Bestellung kann erst zum \"PartiallyShipped\" Zustand übergehen, wenn einige OrderItems versandt zu haben",
-    "cannot-transition-unless-all-order-items-shipped": "Die Bestellung kann erst zum \"Shipped\" Zustand übergehen, wenn alle OrderItems versandt sind",
-    "cannot-transition-without-authorized-payments": "Die Bestellung kann nicht zum \"PaymentAuthorized\" Zustand übergehen, wenn die Summe nicht durch autorisierte Zahlungen gedeckt ist",
-    "cannot-transition-without-modification-payment": "Die Bestellung kann nur in den Zustand \"ArrangingAdditionalPayment\" übergehen",
-    "cannot-transition-without-settled-payments": "Die Bestellung kann nicht in den Zustand \"PaymentSettled\" übergehen, wenn die Summe nicht durch abgerechnete Zahlungen gedeckt ist",
-    "country-used-in-addresses": "Das gewählte Land kann nicht gelöscht werden, da es in {count, plural, one {1 Address} other {# Addresses}} genutzt wird",
-    "facet-force-deleted": "Die Facette wurde gelöscht und der FacetValues wurde von {products, plural, =0 {} one {1 Product} other {# Products}}{both, select, both { , } single {}}{variants, plural, =0 {} one {1 ProductVariant} other {# ProductVariants}} entfernt",
-    "facet-used": "Die ausgewählte Facette enthält FacetValues, die zu: {products, plural, =0 {} one {1 Product} other {# Products}}{both, select, both { , } single {}}{variants, plural, =0 {} one {1 ProductVariant} other {# ProductVariants}} zugewiesen sind",
-    "facet-value-force-deleted": "Der gewählte FacetValue wurde von {products, plural, =0 {} one {1 Product} other {# Products}}{both, select, both { , } single {}}{variants, plural, =0 {} one {1 ProductVariant} other {# ProductVariants}} entfernt und gelöscht",
-    "facet-value-used": "Der gewählte FacetValue wurde zu {products, plural, =0 {} one {1 Product} other {# Products}}{both, select, both { , } single {}}{variants, plural, =0 {} one {1 ProductVariant} other {# ProductVariants}} zugewiesen",
-    "payment-method-used-in-channels": "Die gewählte Zahlungsmethode den folgenden Kanälen zugewiesen: { channelCodes }. Mit \"force: true\" wird sie von allen Kanälen entfernt.",
+    "cannot-transition-no-additional-payments-needed": "Die Bestellung kann nicht zum Status \"ArrangingAdditionalPayment\" übergehen, da keine zusätzliche Zahlung benötigt wird",
+    "cannot-transition-to-shipping-when-order-is-empty": "Die Bestellung kann nicht zum Status \"ArrangingShipping\" übergehen, da sie leer ist",
+    "cannot-transition-to-payment-without-customer": "Die Bestellung kann ohne die Kundendetails nicht zum Status \"ArrangingPayment\" übergehen",
+    "cannot-transition-unless-all-cancelled": "Die Bestellung kann erst zum Status \"Cancelled\" übergehen, wenn alle OrderItems vorher storniert wurden",
+    "cannot-transition-unless-all-order-items-delivered": "Die Bestellung kann erst zum Status \"Delivered\" übergehen, wenn alle OrderItems geliefert sind",
+    "cannot-transition-unless-some-order-items-delivered": "Die Bestellung kann erst zum Status \"PartiallyDelivered\" übergehen, wenn einige OrderItems geliefert wurden",
+    "cannot-transition-unless-some-order-items-shipped": "Die Bestellung kann erst zum Status \"PartiallyShipped\" übergehen, wenn einige OrderItems versendet wurden",
+    "cannot-transition-unless-all-order-items-shipped": "Die Bestellung kann erst zum Status \"Shipped\" übergehen, wenn alle OrderItems versandt sind",
+    "cannot-transition-without-authorized-payments": "Die Bestellung kann nicht zum Status \"PaymentAuthorized\" übergehen, da die Summe nicht durch autorisierte Zahlungen gedeckt ist",
+    "cannot-transition-without-modification-payment": "Die Bestellung kann nur in den Status \"ArrangingAdditionalPayment\" übergehen",
+    "cannot-transition-without-settled-payments": "Die Bestellung kann nicht in den Status \"PaymentSettled\" übergehen, da die Summe noch nicht komplett abgerechnet ist",
+    "country-used-in-addresses": "Das gewählte Land kann nicht gelöscht werden, da es von {count, plural, one {einer Adresse} other {# Adressen}} genutzt wird",
+    "facet-force-deleted": "Die Facette wurde gelöscht und ihre FacetValues wurden von {products, plural, =0 {} one {einem Produkt} other {# Produkten}}{both, select, both { und } single {}}{variants, plural, =0 {} one {einer Produktvariante} other {# Produktvariantem}} entfernt",
+    "facet-used": "Die ausgewählte Facette enthält FacetValues, die {products, plural, =0 {} one {einem Produkt} other {# Produkten}}{both, select, both { und } single {}}{variants, plural, =0 {} one {einer Produktvariante} other {# Produktvarianten}} zugewiesen sind",
+    "facet-value-force-deleted": "Der gewählte FacetValue wurde von {products, plural, =0 {} one {einem Produkt} other {# Produkten}}{both, select, both { und } single {}}{variants, plural, =0 {} one {einer Produktvariante} other {# Produktvarianten}} entfernt und gelöscht",
+    "facet-value-used": "Der gewählte FacetValue wurde {products, plural, =0 {} one {einem Produkt} other {# Produkten}}{both, select, both { und } single {}}{variants, plural, =0 {} one {einer Produktvariante} other {# Produktvarianten}} zugewiesen",
+    "payment-method-used-in-channels": "Die gewählte Zahlungsmethode wird von den folgenden Kanälen verwendet: { channelCodes }. Mit \"force: true\" wird sie von allen Kanälen entfernt.",
     "zone-used-in-channels": "Die ausgewählte Zone kann nicht gelöscht werden, da sie als Standard in den folgenden Kanälen verwendet wird: { channelCodes }",
-    "zone-used-in-tax-rates": "Die ausgewählte Zone kann nicht gelöscht werden, da sie in den folgenden TaxRates verwendet wird: { taxRateNames }"
+    "zone-used-in-tax-rates": "Die ausgewählte Zone kann nicht gelöscht werden, da sie in den folgenden Steuersätzen verwendet wird: { taxRateNames }"
   }
 }

+ 2 - 3
packages/core/src/i18n/messages/en.json

@@ -11,7 +11,7 @@
     "collection-id-or-slug-must-be-provided": "Either the Collection id or slug must be provided",
     "collection-id-slug-mismatch": "The provided id and slug refer to different Collections",
     "conditions-required-for-action": "The PromotionAction '{ action }' requires the following conditions: { conditions }",
-    "configurable-argument-is-required": "The argument '{ name }' is required, but the value is [{ value }]",
+    "configurable-argument-is-required": "The argument '{ name }' is required",
     "country-code-not-valid": "The countryCode \"{ countryCode }\" was not recognized",
     "customer-does-not-belong-to-customer-group": "Customer does not belong to this CustomerGroup",
     "default-channel-not-found": "Default channel not found",
@@ -40,13 +40,12 @@
     "product-id-or-slug-must-be-provided": "Either the Product id or slug must be provided",
     "product-id-slug-mismatch": "The provided id and slug refer to different Products",
     "product-variant-option-ids-not-compatible": "ProductVariant optionIds must include one optionId from each of the groups: {groupNames}",
-    "product-variant-options-combination-already-exists": "A ProductVariant already exists with the options: {optionNames}",
+    "product-variant-options-combination-already-exists": "A ProductVariant with the selected options already exists: {variantName}",
     "promotion-channels-can-only-be-changed-from-default-channel": "Promotions channels may only be changed from the Default Channel",
     "stockonhand-cannot-be-negative": "stockOnHand cannot be a negative value",
     "unauthorized": "The credentials did not match. Please check and try again"
   },
   "errorResult": {
-    "ALREADY_CANCELLED_ERROR": "Quantity to cancel is greater than existing OrderLine quantity",
     "ALREADY_LOGGED_IN_ERROR": "Cannot set a Customer for the Order when already logged in",
     "ALREADY_REFUNDED_ERROR": "Cannot refund an OrderItem which has already been refunded",
     "CANCEL_ACTIVE_ORDER_ERROR": "Cannot cancel OrderLines from an Order in the \"{ orderState }\" state",

+ 0 - 1
packages/core/src/service/helpers/config-arg/config-arg.service.ts

@@ -103,7 +103,6 @@ export class ConfigArgService {
                 if (val == null) {
                     throw new UserInputError('error.configurable-argument-is-required', {
                         name,
-                        value: String(val),
                     });
                 }
             }

+ 1 - 1
packages/core/src/service/services/product-variant.service.ts

@@ -723,7 +723,7 @@ export class ProductVariantService {
                 const variantOptionIds = this.sortJoin(variant.options, ',', 'id');
                 if (variantOptionIds === inputOptionIds) {
                     throw new UserInputError('error.product-variant-options-combination-already-exists', {
-                        optionNames: this.sortJoin(variant.options, ', ', 'code'),
+                        variantName: translateDeep(variant, ctx.languageCode).name,
                     });
                 }
             });