Procházet zdrojové kódy

feat(core): Add French translations for API messages (#2837)

Hakim Saoudi před 1 rokem
rodič
revize
e45e7b7bf6

+ 1 - 1
packages/core/src/i18n/i18n.service.ts

@@ -59,7 +59,7 @@ export class I18nService implements OnModuleInit {
             .use(ICU)
             .init({
                 nsSeparator: false,
-                preload: ['en', 'de', 'ru', 'uk'],
+                preload: ['en', 'de', 'ru', 'uk', 'fr'],
                 fallbackLng: 'en',
                 detection: {
                     lookupQuerystring: 'languageCode',

+ 138 - 0
packages/core/src/i18n/messages/fr.json

@@ -0,0 +1,138 @@
+{
+  "error": {
+    "active-user-does-not-have-sufficient-permissions": "L'utilisateur actif ne dispose pas des permissions suffisantes",
+    "available-currency-codes-must-include-default": "availableCurrencyCodes doit inclure defaultCurrencyCode ({ defaultCurrencyCode })",
+    "cannot-delete-role": "Le rôle \"{ roleCode }\" ne peut pas être supprimé",
+    "cannot-delete-sole-superadmin": "Le seul SuperAdmin ne peut pas être supprimé",
+    "cannot-locate-customer-for-user": "Impossible de localiser un Client pour l'utilisateur",
+    "cannot-modify-role": "Le rôle \"{ roleCode }\" ne peut pas être modifié",
+    "cannot-move-collection-into-self": "Impossible de déplacer une Collection dans elle-même",
+    "cannot-transition-payment-from-to": "Impossible de changer l'état du Paiement de \"{ fromState }\" à \"{ toState }\"",
+    "cannot-transition-refund-from-to": "Impossible de changer l'état du Remboursement de \"{ fromState }\" à \"{ toState }\"",
+    "cannot-transition-fulfillment-from-to": "Impossible de changer l'état de l'Exécution de \"{ fromState }\" à \"{ toState }\"",
+    "channel-not-found": "Aucun Canal avec le token \"{ token }\" n'a été trouvé",
+    "collection-id-or-slug-must-be-provided": "L'id de la Collection ou le slug doit être fourni",
+    "collection-id-slug-mismatch": "L'id et le slug fournis font référence à des Collections différentes",
+    "conditions-required-for-action": "L'action de Promotion \"{ action }\" requiert les conditions suivantes : { conditions }",
+    "configurable-argument-is-required": "L'argument \"{ name }\" est requis",
+    "country-code-not-valid": "Le code pays \"{ countryCode }\" n'a pas été reconnu",
+    "currency-not-available-in-channel": "La devise \"{ currencyCode }\" n'est pas disponible dans le Canal actuel",
+    "customer-does-not-belong-to-customer-group": "Le client n'appartient pas à ce groupe de clients",
+    "default-channel-not-found": "Canal par défaut non trouvé",
+    "entity-has-no-translation-in-language": "L'entité traduisible \"{ entityName }\" n'a pas été traduite dans la langue demandée ({ languageCode })",
+    "entity-with-id-not-found": "Aucun(e) { entityName } avec l'id \"{ id }\" n'a été trouvé(e)",
+    "items-cannot-be-removed-from-default-channel": "Les articles ne peuvent pas être retirés du Canal par défaut",
+    "facetfilterinput-invalid-input": "Un objet FacetValueFilterInput ne peut pas spécifier les champs 'and' et 'or' simultanément",
+    "field-invalid-datetime-range-max": "La valeur du champ personnalisé \"{ name }\" [{ value }] est supérieure au maximum [{ max }]",
+    "field-invalid-datetime-range-min": "La valeur du champ personnalisé \"{ name }\" [{ value }] est inférieure au minimum [{ min }]",
+    "field-invalid-non-nullable": "La valeur du champ personnalisé \"{ name }\" ne peut pas être définie à null",
+    "field-invalid-no-permission": "Vous n'avez pas les permissions nécessaires pour mettre à jour le champ \"{ name }\"",
+    "field-invalid-number-range-max": "La valeur du champ personnalisé \"{ name }\" [{ value }] dépasse le maximum [{ max }]",
+    "field-invalid-number-range-min": "La valeur du champ personnalisé \"{ name }\" [{ value }] est inférieure au minimum [{ min }]",
+    "field-invalid-readonly": "Le champ personnalisé \"{ name }\" est en lecture seule",
+    "field-invalid-string-option": "La valeur du champ personnalisé \"{ name }\" [\"{ value }\"] est invalide. Les options valides sont : [{ validOptions }]",
+    "field-invalid-string-pattern": "La valeur du champ personnalisé \"{ name }\" [\"{ value }\"] ne correspond pas au motif [{ pattern }]",
+    "forbidden": "Vous n'êtes actuellement pas autorisé à effectuer cette action",
+    "invalid-sort-field": "Le champ de tri \"{ fieldName }\" est invalide. Les champs valides sont : { validFields }",
+    "list-query-limit-exceeded": "Impossible de prendre plus de { limit } résultats dans une requête de liste",
+    "no-active-tax-zone": "La zone fiscale active n'a pas pu être déterminée. Assurez-vous qu'une zone fiscale par défaut est définie pour le canal actuel.",
+    "no-configurable-operation-def-with-code-found": "Aucun { type } avec le code \"{ code }\" n'a été trouvé",
+    "no-price-found-for-channel": "Aucune information de prix n'a été trouvée pour l'ID de la Variante de Produit \"{ variantId}\" dans le Canal \"{ channel }\".",
+    "no-search-plugin-configured": "Aucun plugin de recherche n'a été configuré",
+    "order-could-not-be-determined-or-created": "Aucune Commande active n'a pu être déterminée ni créée",
+    "order-does-not-contain-line-with-id": "Cette commande ne contient pas de Ligne de Commande avec l'id { id }",
+    "pending-identifier-missing": "L'adresse e-mail en attente de mise à jour n'a pas pu être trouvée",
+    "permission-invalid": "La permission \"{ permission }\" ne peut pas être attribuée",
+    "product-id-or-slug-must-be-provided": "L'id du Produit ou le slug doit être fourni",
+    "product-id-slug-mismatch": "L'id et le slug fournis font référence à des Produits différents",
+    "product-option-group-already-assigned": "Le groupe d'options de produit \"{ groupCode }\" est déjà attribué au produit \"{ productName }\"",
+    "product-variant-option-ids-not-compatible": "Les optionIds de la Variante de Produit doivent inclure un optionId de chaque groupe : {groupNames}",
+    "product-variant-options-combination-already-exists": "Une Variante de Produit avec les options sélectionnées existe déjà : {variantName}",
+    "promotion-channels-can-only-be-changed-from-default-channel": "Les canaux de promotion peuvent uniquement être modifiés à partir du Canal par défaut",
+    "stockonhand-cannot-be-negative": "stockOnHand ne peut pas être une valeur négative",
+    "superadmin-must-have-superadmin-role": "Il n'est pas possible de retirer le rôle de SuperAdmin au seul SuperAdmin",
+    "target-customer-not-assigned-to-order-channels": "Le Client ciblé n'est pas assigné aux mêmes Canaux que la Commande. IDs de canaux manquants : { missingChannelIds }",
+    "unauthorized": "Les informations d'identification ne correspondent pas. Veuillez vérifier et réessayer"
+  },
+  "errorResult": {
+    "ALREADY_LOGGED_IN_ERROR": "Impossible d'attribuer un Client à la Commande lorsqu'on est déjà connecté",
+    "ALREADY_REFUNDED_ERROR": "Impossible de rembourser un Article de la Commande qui a déjà été remboursé",
+    "CANCEL_ACTIVE_ORDER_ERROR": "Impossible d'annuler des Lignes de Commande d'une Commande dans l'état \"{ orderState }\"",
+    "CANCEL_PAYMENT_ERROR": "L'annulation du paiement a échoué",
+    "CHANNEL_DEFAULT_LANGUAGE_ERROR": "Impossible de rendre la langue \"{ language }\" indisponible car elle est utilisée comme langue par défaut par le canal \"{ channelCode }\"",
+    "COUPON_CODE_EXPIRED_ERROR": "Le code coupon \"{ couponCode }\" a expiré",
+    "COUPON_CODE_INVALID_ERROR": "Le code coupon \"{ couponCode }\" n'est pas valide",
+    "COUPON_CODE_LIMIT_ERROR": "Le code coupon ne peut pas être utilisé plus de {limit, plural, one {une fois} other {# fois}} par client",
+    "CREATE_FULFILLMENT_ERROR": "Une erreur s'est produite lors de la tentative de création de l'Exécution",
+    "DUPLICATE_ENTITY_ERROR": "L'entité n'a pas pu être dupliquée",
+    "EMAIL_ADDRESS_CONFLICT_ERROR": "L'adresse e-mail n'est pas disponible",
+    "EMPTY_ORDER_LINE_SELECTION_ERROR": "Au moins une Ligne de Commande doit être spécifiée",
+    "FACET_IN_USE_ERROR": "Le Facet \"{ facetCode }\" inclut des FacetValues qui sont attribués à {productCount, plural, =0 {} one {1 Produit} other {# Produits}} {variantCount, plural, =0 {} one {1 Variante de Produit} other {# Variantes de Produit}}",
+    "IDENTIFIER_CHANGE_TOKEN_INVALID_ERROR": "Le jeton de changement d'identifiant n'est pas reconnu",
+    "INELIGIBLE_SHIPPING_METHOD_ERROR": "Cette Commande n'est pas éligible pour la Méthode d'Expédition sélectionnée",
+    "INSUFFICIENT_STOCK_ERROR": "{quantityAvailable, plural, =0 {Aucun article n'a été} one {Seul un article a été} other {Seulement # articles ont été}} ajouté(s) à la commande en raison d'un stock insuffisant",
+    "INSUFFICIENT_STOCK_ON_HAND_ERROR": "Impossible de créer une Exécution car \"{productVariantName}\" a un stockOnHand insuffisant ({stockOnHand})",
+    "INVALID_CREDENTIALS_ERROR": "Les informations d'identification fournies sont invalides",
+    "ITEMS_ALREADY_FULFILLED_ERROR": "Un ou plusieurs Articles de la Commande font déjà partie d'une Exécution",
+    "LANGUAGE_NOT_AVAILABLE_ERROR": "La langue \"{languageCode}\" n'est pas disponible. Activez-la d'abord via les Paramètres Globaux et réessayez",
+    "MANUAL_PAYMENT_STATE_ERROR": "Un paiement manuel ne peut être ajouté que dans l'état \"ArrangingPayment\" ou \"ArrangingAdditionalPayment\"",
+    "MIME_TYPE_ERROR": "Le type MIME \"{ mimeType }\" n'est pas autorisé.",
+    "MISSING_CONDITIONS_ERROR": "Une Promotion doit avoir au moins une condition ou un code coupon défini",
+    "MISSING_PASSWORD_ERROR": "Un mot de passe doit être fourni",
+    "NEGATIVE_QUANTITY_ERROR": "La quantité pour un Article de la Commande ne peut pas être négative",
+    "NO_ACTIVE_ORDER_ERROR": "Il n'y a aucune Commande active associée à la session en cours",
+    "NOTHING_TO_REFUND_ERROR": "Rien à rembourser",
+    "NOT_VERIFIED_ERROR": "Veuillez vérifier cette adresse e-mail avant de vous connecter",
+    "ORDER_LIMIT_ERROR": "Impossible d'ajouter des articles. Une commande peut comprendre un maximum de { maxItems } articles",
+    "ORDER_MODIFICATION_ERROR": "Le contenu de la Commande peut uniquement être modifié dans l'état \"AddingItems\"",
+    "ORDER_PAYMENT_STATE_ERROR": "Un Paiement ne peut être ajouté que lorsque la Commande est dans l'état \"ArrangingPayment\"",
+    "ORDER_STATE_TRANSITION_ERROR": "Impossible de changer l'état de la Commande de \"{ fromState }\" à \"{ toState }\"",
+    "PASSWORD_ALREADY_SET_ERROR": "Un mot de passe a déjà été défini lors de l'inscription",
+    "PASSWORD_RESET_TOKEN_EXPIRED_ERROR": "Le jeton de réinitialisation du mot de passe a expiré",
+    "PASSWORD_RESET_TOKEN_INVALID_ERROR": "Le jeton de réinitialisation du mot de passe n'est pas reconnu",
+    "PASSWORD_VALIDATION_ERROR": "Le mot de passe est invalide",
+    "PAYMENT_DECLINED_ERROR": "Le paiement a été refusé",
+    "PAYMENT_FAILED_ERROR": "Le paiement a échoué",
+    "PAYMENT_ORDER_MISMATCH_ERROR": "Le Paiement et les Lignes de Commande n'appartiennent pas à la même Commande",
+    "PAYMENT_STATE_TRANSITION_ERROR": "Impossible de changer l'état du Paiement de \"{ fromState }\" à \"{ toState }\"",
+    "PRODUCT_OPTION_IN_USE_ERROR": "Impossible de retirer le groupe d'options de produit \"{ optionGroupCode }\" car il est utilisé par {productVariantCount, plural, one {une Variante de Produit} other {# Variantes de Produit}}. Utilisez l'argument `force` pour le retirer malgré tout",
+    "QUANTITY_TOO_GREAT_ERROR": "La quantité spécifiée est supérieure aux Articles de la Commande disponibles",
+    "REFUND_AMOUNT_ERROR": "Le montant spécifié dépasse le montant remboursable pour ce paiement",
+    "REFUND_ORDER_STATE_ERROR": "Impossible de rembourser une Commande dans l'état \"{ orderState }\"",
+    "SETTLE_PAYMENT_ERROR": "L'établissement du paiement a échoué",
+    "VERIFICATION_TOKEN_EXPIRED_ERROR": "Le jeton de vérification a expiré. Utilisez refreshCustomerVerification pour envoyer un nouveau jeton.",
+    "VERIFICATION_TOKEN_INVALID_ERROR": "Le jeton de vérification n'est pas reconnu"
+  },
+  "message": {
+    "asset-to-be-deleted-is-featured": "L'{assetCount, plural, one {Asset est} other {Assets sont}} présenté(s) par {products, plural, =0 {} one {1 Produit} other {# Produits}} {variants, plural, =0 {} one { 1 Variante de Produit} other { # Variantes de Produit}} {collections, plural, =0 {} one { 1 Collection} other { # Collections}}",
+    "cannot-delete-last-stock-location": "L'emplacement de stockage restant ne peut pas être supprimé",
+    "cannot-remove-tax-category-due-to-tax-rates": "Impossible de retirer la Catégorie Fiscale \"{ name }\" car elle est référencée par {count, plural, one {1 Taux Fiscal} other {# Taux Fiscaux}}",
+    "cannot-transition-order-contains-products-which-are-unavailable": "Impossible de passer à \"{ toState }\" car la Commande contient des Variantes de Produit qui ne sont plus disponibles",
+    "cannot-transition-from-arranging-additional-payment": "Impossible de passer de \"ArrangingAdditionalPayment\" à moins que le total de la Commande ne soit couvert par des Paiements",
+    "cannot-transition-order-from-to": "Impossible de changer l'état de la Commande de \"{ fromState }\" à \"{ toState }\"",
+    "cannot-transition-no-additional-payments-needed": "Impossible de passer la Commande à l'état \"ArrangingAdditionalPayment\" car aucun paiement supplémentaire n'est nécessaire",
+    "cannot-transition-to-shipping-when-order-is-empty": "Impossible de passer la Commande à l'état \"ArrangingShipping\" lorsque celle-ci est vide",
+    "cannot-transition-to-payment-due-to-insufficient-stock": "Impossible de passer la Commande à l'état \"ArrangingPayment\" en raison d'un stock insuffisant de { productVariantNames }",
+    "cannot-transition-to-payment-without-customer": "Impossible de passer la Commande à l'état \"ArrangingPayment\" sans les détails du Client",
+    "cannot-transition-to-payment-without-shipping-method": "Impossible de passer la Commande à l'état \"ArrangingPayment\" sans Méthode d'Expédition",
+    "cannot-transition-unless-all-cancelled": "Impossible de passer la Commande à l'état \"Cancelled\" à moins que tous les Articles de la Commande ne soient annulés",
+    "cannot-transition-unless-all-order-items-delivered": "Impossible de passer la Commande à l'état \"Delivered\" à moins que tous les Articles de la Commande ne soient livrés",
+    "cannot-transition-unless-some-order-items-delivered": "Impossible de passer la Commande à l'état \"PartiallyDelivered\" à moins que certains Articles de la Commande ne soient livrés",
+    "cannot-transition-unless-some-order-items-shipped": "Impossible de passer la Commande à l'état \"PartiallyShipped\" à moins que certains Articles de la Commande ne soient expédiés",
+    "cannot-transition-unless-all-order-items-shipped": "Impossible de passer la Commande à l'état \"Shipped\" à moins que tous les Articles de la Commande ne soient expédiés",
+    "cannot-transition-without-authorized-payments": "Impossible de passer la Commande à l'état \"PaymentAuthorized\" lorsque le total n'est pas couvert par des Paiements autorisés",
+    "cannot-transition-without-modification-payment": "Peut seulement passer à l'état \"ArrangingAdditionalPayment\"",
+    "cannot-transition-without-settled-payments": "Impossible de passer la Commande à l'état \"PaymentSettled\" lorsque le total n'est pas couvert par des Paiements réglés",
+    "country-used-in-addresses": "Le Pays sélectionné ne peut pas être supprimé car il est utilisé dans {count, plural, one {1 Adresse} other {# Adresses}}",
+    "entity-duplication-no-permission": "Vous n'avez pas les permissions nécessaires pour dupliquer cette entité",
+    "entity-duplication-no-strategy-found": "Aucune stratégie de duplication avec le code \"{ code }\" n'a été trouvée pour le type d'entité \"{ entityName }\"",
+    "facet-force-deleted": "Le Facet a été supprimé et ses FacetValues ont été retirés de {products, plural, =0 {} one {1 Produit} other {# Produits}}{both, select, both {, } single {} other {}}{variants, plural, =0 {} one {1 Variante de Produit} other {# Variantes de Produit}}",
+    "facet-used": "Le Facet \"{ facetCode }\" inclut des FacetValues qui sont attribués à {products, plural, =0 {} one {1 Produit} other {# Produits}}{both, select, both {, } single {} other {}}{variants, plural, =0 {} one {1 Variante de Produit} other {# Variantes de Produit}}",
+    "facet-value-force-deleted": "La FacetValue sélectionnée a été retirée de {products, plural, =0 {} one {1 Produit} other {# Produits}}{both, select, both {, } single {} other {}}{variants, plural, =0 {} one {1 Variante de Produit} other {# Variantes de Produit}} et supprimée",
+    "facet-value-used": "La FacetValue \"{ facetValueCode }\" est attribuée à {products, plural, =0 {} one {1 Produit} other {# Produits}}{both, select, both {, } single {} other {}}{variants, plural, =0 {} one {1 Variante de Produit} other {# Variantes de Produit}}",
+    "payment-method-used-in-channels": "La méthode de paiement sélectionnée est assignée aux Canaux suivants : { channelCodes }. Définissez \"force: true\" pour la supprimer de tous les Canaux.",
+    "product-option-used": "Impossible de supprimer l'option \"{code}\" car elle est utilisée par {count, plural, =0 {} one {1 Variante de Produit} other {# Variantes de Produit}}",
+    "zone-used-in-channels": "La Zone sélectionnée ne peut pas être supprimée car elle est utilisée comme défaut dans les Canaux suivants : { channelCodes }",
+    "zone-used-in-tax-rates": "La Zone sélectionnée ne peut pas être supprimée car elle est utilisée dans les Taux Fiscaux suivants : { taxRateNames }"
+  }
+}