PSA/server/public/locales/fr/msp/billing.json
Hermes 284313f908
Some checks are pending
Bidi Control Character Guard / bidi-control-guard (push) Waiting to run
Circular Dependency Check / Check for new circular dependencies (push) Waiting to run
Citus Migration Smoke / Combined migrations on single-node Citus (push) Waiting to run
E2E Fresh Install Tests / fresh-install-e2e (push) Waiting to run
ext-v2 guardrails / Run ext-v2 guard and ESLint (push) Waiting to run
Integration Tests / Check for relevant changes (push) Waiting to run
Integration Tests / ${{ (github.event_name == 'schedule' || github.event.inputs.suite == 'full') && 'Full integration suite' || 'Tier-1 integration subset' }} (push) Blocked by required conditions
Mobile checks / Mobile lint + typecheck (push) Waiting to run
Mobile checks / Mobile unit tests (push) Waiting to run
Mobile checks / Mobile dependency audit (report) (push) Waiting to run
Mobile checks / Mobile reproducibility checks (push) Waiting to run
Secrets guard (env backups) / Ensure no tracked env backup files (push) Waiting to run
Temporal Readiness / fast-readiness (push) Waiting to run
Temporal Readiness / docker-parity (push) Waiting to run
TypeScript Type Check / Nx affected typecheck (push) Waiting to run
Unit Tests / Skipped-test budget (push) Waiting to run
Unit Tests / Nx affected unit tests (push) Waiting to run
Unit Tests / Server unit coverage (informational) (push) Waiting to run
Validate Tenant Management Schema / Check for relevant changes (push) Waiting to run
Validate Tenant Management Schema / Validate Tenant Management Schema (push) Blocked by required conditions
EE Workflows Build Guard / ee-workflows-build-guard (push) Waiting to run
Initial import of AlgaPSA codebase from PSA server
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz

Source: /opt/alga-psa on psa.joliet.tech
2026-06-22 16:12:17 -05:00

757 lines
31 KiB
JSON
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"common": {
"back": "Retour",
"cancel": "Annuler",
"close": "Fermer",
"confirm": "Confirmer",
"create": "Créer",
"delete": "Supprimer",
"edit": "Modifier",
"error": "Erreur",
"loading": "Chargement...",
"new": "Nouveau",
"next": "Suivant",
"notAvailable": "S/O",
"openMenu": "Ouvrir le menu",
"processing": "Traitement...",
"refresh": "Rafraîchir",
"remove": "Retirer",
"reset": "Réinitialiser",
"save": "Enregistrer",
"saving": "Enregistrement...",
"success": "Succès",
"update": "Mise à jour",
"yes": "Oui",
"no": "Non"
},
"dashboard": {
"title": "Facturation",
"beta": {
"title": "Version bêta",
"description": "Notre système de facturation remanié est actuellement en version bêta. Vous pouvez rencontrer des problèmes ou des fonctionnalités incomplètes. Nous apprécions votre patience alors que nous continuons à améliorer lexpérience."
},
"errorPrefix": "Erreur:",
"backToPresets": "Retour à la liste des préréglages de ligne de contrat",
"quoteTemplatesHeading": "Modèles de devis",
"tabs": {
"quotes": "Devis",
"quoteLayouts": "Mises en page des devis",
"quoteTemplates": "Modèles de devis",
"clientContracts": "Contrats clients",
"accountingExports": "Exportations comptables",
"contractTemplates": "Modèles de contrat",
"invoicing": "Facturation",
"invoiceLayouts": "Présentations de facture",
"taxRates": "Taux de taxe",
"contractLinePresets": "Préréglages de ligne de contrat",
"billingCycles": "Cycles de facturation",
"servicePeriods": "Périodes de service",
"usageTracking": "Suivi de l'utilisation",
"reports": "Rapports",
"serviceTypes": "Types de service",
"serviceCatalog": "Services",
"products": "Produits"
}
},
"overview": {
"errors": {
"loadTitle": "Impossible de charger les données de facturation",
"loadData": "Échec du chargement des données de facturation"
},
"metrics": {
"activeContractLines": {
"title": "Lignes de contrat actives",
"subtitle": "Lignes de contrat actives"
},
"billingClients": {
"title": "Clients facturés",
"subtitle": "Nombre total de clients"
},
"monthlyRevenue": {
"title": "Revenu mensuel",
"subtitle": "Mois en cours"
},
"activeServices": {
"title": "Services actifs",
"subtitle": "Dans le catalogue"
},
"outstandingAmount": {
"title": "Montant impayé",
"subtitle": "Factures impayées"
},
"creditBalance": {
"title": "Solde créditeur",
"subtitle": "Crédits totaux"
},
"pendingApprovals": {
"title": "Approbations en attente",
"subtitle": "Entrées de temps"
}
},
"states": {
"ellipsis": "...",
"error": "Erreur",
"zero": "0",
"zeroHours": "0 heures"
},
"sections": {
"monthlyActivity": {
"title": "Activité mensuelle",
"subtitle": "Heures facturables ce mois-ci"
},
"serviceCatalog": {
"title": "Gestion du catalogue de services",
"description": "Gérez vos offres de services, vos tarifs et vos configurations de facturation",
"activeServicesLabel": "Services actifs",
"button": "Gérer le catalogue de services"
}
},
"features": {
"paymentProcessing": {
"title": "Traitement des paiements",
"description": "Suivre et gérer les paiements des clients, traiter les remboursements et gérer les litiges de paiement"
},
"billingCycles": {
"title": "Cycles de facturation",
"description": "Gérer les calendriers de facturation des clients, les paramètres de cadence par défaut et les paramètres de fréquence de facturation"
},
"servicePeriods": {
"title": "Périodes de service",
"description": "Examinez les périodes de service récurrentes et comprenez comment les fenêtres de facturation les regroupent"
},
"invoiceManagement": {
"title": "Gestion des factures",
"description": "Générez des fenêtres de facture pour les périodes de service récurrentes et créez des documents manuels ou de paiement anticipé lorsque la gestion financière diffère de la couverture récurrente."
},
"overduePayments": {
"title": "Paiements en retard",
"description": "Surveiller et suivre les paiements en souffrance et les rappels de paiement"
},
"serviceCatalog": {
"title": "Catalogue de services",
"description": "Gérez vos offres de services, vos tarifs et vos contrats"
}
},
"debug": {
"reportExecuted": "Rapport exécuté :",
"executionTime": "Temps d'exécution :",
"reportVersion": "Version du rapport :"
}
},
"reconciliation": {
"title": "Résoudre l'écart de crédit",
"steps": {
"review": "Examiner l'écart",
"approval": "Approbation",
"confirmation": "Confirmation"
},
"sections": {
"discrepancyDetails": "Détails des écarts",
"balanceComparison": "Comparaison des soldes",
"issueDetails": "Détails du problème",
"resolutionOptions": "Options de résolution",
"approvalDetails": "Détails de l'approbation",
"correctionSummary": "Résumé des corrections",
"confirmResolution": "Confirmer la résolution",
"resolutionDetails": "Détails de la résolution",
"impactSummary": "Résumé des impacts",
"resolutionComplete": "Résolution terminée",
"resolutionSummary": "Résumé de la résolution"
},
"fields": {
"client": "Client",
"status": "Statut",
"detected": "Détecté",
"issueType": "Type de problème",
"expectedBalance": "Solde attendu",
"actualBalance": "Solde réel",
"difference": "Différence",
"transactionId": "ID de transaction",
"transactionType": "Type de transaction",
"transactionAmount": "Montant de la transaction",
"transactionDate": "Date de transaction",
"creditId": "Numéro de crédit",
"originalAmount": "Montant initial",
"expectedRemaining": "Restant prévu",
"actualRemaining": "Restant réel",
"reportId": "ID du rapport",
"resolutionType": "Type de résolution",
"correctionAmount": "Montant de la correction",
"currentBalance": "Solde actuel",
"newBalance": "Nouveau solde",
"resolutionNotes": "Notes de résolution",
"previousBalance": "Solde précédent"
},
"issueTypes": {
"missingCreditTrackingEntry": "Entrée de suivi de crédit manquante",
"inconsistentCreditRemainingAmount": "Montant restant du crédit incohérent"
},
"transactionHistory": {
"title": "Demandes de crédit",
"columns": {
"transactionId": "ID de transaction",
"date": "Date",
"amount": "Montant"
}
},
"recommendedFix": {
"title": "Correctif recommandé",
"missingTrackingDescription": "Créez une entrée de suivi du crédit basée sur les détails de la transaction d'origine et définissez le montant restant pour qu'il corresponde au montant de la transaction d'origine.",
"missingTrackingRemainingAmount": "Montant restant : calculez en fonction de toutes les demandes",
"inconsistentRemainingDescription": "Mettez à jour le montant restant de l'entrée de suivi du crédit pour qu'il corresponde au solde attendu calculé en fonction des demandes."
},
"resolutionTypes": {
"recommended": "Correctif recommandé",
"custom": "Correction personnalisée",
"noAction": "Aucune action requise"
},
"customCorrection": {
"label": "Montant de la correction",
"hint": "Saisissez un montant positif pour augmenter le solde ou un montant négatif pour le diminuer."
},
"notes": {
"label": "Notes de résolution",
"placeholder": "Expliquez la raison de cette correction...",
"hint": "Ces notes seront enregistrées dans la piste d'audit de cet écart."
},
"fourEyes": {
"requiredTitle": "Approbation à quatre yeux requise",
"requiredDescription": "Cette correction dépasse le seuil d'approbation et nécessite qu'un approbateur secondaire examine et vérifie la modification avant de pouvoir la soumettre.",
"approverName": "Nom de l'approbateur secondaire",
"approverEmail": "E-mail de l'approbateur secondaire",
"sendRequest": "Envoyer une demande d'approbation",
"requestSentTitle": "Demande d'approbation envoyée",
"requestSentDescription": "Demandez à l'approbateur secondaire le code de vérification qu'il a reçu, puis saisissez-le ci-dessous pour continuer.",
"verificationCode": "Le code de vérification",
"verifyCode": "Vérifier le code",
"verificationHint": "Saisissez le code de vérification fourni par l'approbateur secondaire.",
"verifiedTitle": "Approbation secondaire vérifiée",
"verifiedDescription": "L'approbation secondaire a été vérifiée et cette correction peut maintenant être soumise."
},
"confirmation": {
"importantTitle": "Important",
"importantDescription": "Veuillez examiner attentivement les détails ci-dessous. Cette action mettra à jour les enregistrements de rapprochement et ne peut pas être facilement annulée.",
"verifiedTitle": "Approbation secondaire vérifiée",
"verifiedDescription": "Un approbateur secondaire a vérifié cette correction et l'exigence d'approbation a été satisfaite.",
"thankYouTitle": "Merci!",
"thankYouDescription": "L'écart a été résolu et les enregistrements de facturation ont été mis à jour.",
"confirmButton": "Confirmer la résolution",
"closeButton": "Fermer"
},
"status": {
"open": "Ouvert"
},
"buttons": {
"cancel": "Annuler",
"back": "Retour",
"next": "Suivant",
"confirm": "Confirmer la résolution"
},
"errors": {
"loadData": "Échec du chargement des données du rapport de rapprochement",
"secondaryApprovalRequired": "Une approbation secondaire est requise pour cette correction",
"secondaryApproverRequired": "Veuillez saisir le nom et l'adresse e-mail de l'approbateur secondaire",
"invalidVerificationCode": "Code de vérification invalide",
"unknown": "Une erreur inconnue s'est produite",
"reportNotFound": "Rapport de rapprochement introuvable. Le rapport a peut-être été supprimé ou vous n'êtes peut-être pas autorisé à le consulter."
}
},
"discrepancy": {
"backToReconciliation": "Retour à la réconciliation",
"title": "Résoudre l'écart de crédit",
"tabs": {
"transactionHistory": "Historique des transactions",
"creditTrackingEntries": "Entrées de suivi du crédit",
"issueDetails": "Détails du problème"
},
"cards": {
"relatedTransactions": "Opérations liées",
"creditTrackingEntries": "Entrées de suivi du crédit",
"issueDetails": "Détails du problème",
"discrepancyDetails": "Détails des écarts",
"balanceComparison": "Comparaison des soldes"
},
"status": {
"open": "Ouvert",
"inReview": "En cours de revue",
"resolved": "Résolu",
"expired": "Expiré",
"active": "Actif"
},
"fields": {
"client": "Client",
"status": "Statut",
"detected": "Détecté",
"resolved": "Résolu",
"resolutionNotes": "Notes de résolution",
"issueType": "Type de problème",
"expectedBalance": "Solde attendu",
"actualBalance": "Solde réel",
"difference": "Différence",
"transactionId": "ID de transaction",
"createdAt": "Créé à",
"clientId": "Identifiant client",
"userId": "ID de l'utilisateur",
"invoiceId": "Numéro de facture",
"metadata": "Métadonnées",
"creditId": "Numéro de crédit",
"created": "Créé",
"amount": "Montant",
"remaining": "Restant",
"expiration": "Expiration",
"originalAmount": "Montant initial",
"remainingAmount": "Montant restant",
"expirationDate": "Date d'expiration",
"description": "Description",
"type": "Type",
"balanceAfter": "Solde après"
},
"empty": {
"transactions": "Aucune transaction associée trouvée.",
"creditTrackingEntries": "Aucune entrée de suivi de crédit trouvée.",
"issueDetails": "Aucun détail sur le problème disponible.",
"batchNotFound": "Lot introuvable.",
"noNotesProvided": "Aucune note fournie",
"noExpiration": "Pas d'expiration"
},
"issueTypes": {
"missingCreditTrackingEntry": "Entrée de suivi de crédit manquante",
"inconsistentCreditRemainingAmount": "Montant restant du crédit incohérent"
},
"recommendedFix": {
"title": "Correctif recommandé",
"missingTrackingDescription": "Créez une entrée de suivi du crédit basée sur les détails de la transaction d'origine et définissez le montant restant pour qu'il corresponde au montant de la transaction d'origine.",
"missingTrackingRemainingAmount": "Montant restant : calculez en fonction de toutes les demandes",
"inconsistentRemainingDescription": "Mettez à jour le montant restant de l'entrée de suivi du crédit pour qu'il corresponde au solde attendu calculé en fonction des demandes."
},
"resolutionDialog": {
"title": "Résoudre l'écart de crédit",
"notesPlaceholder": "Expliquez la raison de cette correction...",
"confirmButton": "Confirmer la résolution"
},
"actions": {
"applyFix": "Appliquer le correctif",
"resolveReport": "Résoudre le rapport"
},
"errors": {
"unknown": "Une erreur inconnue s'est produite"
}
},
"recommendedFix": {
"title": "Correctifs recommandés",
"panels": {
"recommendedFix": "Correctif recommandé",
"alternativeFix": "Solution alternative",
"noActionRequired": "Aucune action requise",
"customAdjustment": "Ajustement personnalisé"
},
"buttons": {
"createTrackingEntry": "Créer une entrée de suivi du crédit",
"updateRemainingAmount": "Mettre à jour le montant restant",
"applyAdjustment": "Appliquer un ajustement de crédit",
"applyCustomAdjustment": "Appliquer un ajustement personnalisé",
"markResolvedNoAction": "Marquer comme résolu (aucune action)",
"cancel": "Annuler",
"confirm": "Appliquer le correctif"
},
"descriptions": {
"createTrackingEntry": "Cela créera une nouvelle entrée de suivi du crédit pour la transaction.",
"updateRemainingAmount": "Cela mettra à jour le montant restant dans lentrée de suivi du crédit.",
"applyAdjustment": "Cela créera une transaction d'ajustement de crédit pour corriger le solde.",
"customAdjustment": "Cela créera une transaction d'ajustement de crédit personnalisée.",
"noAction": "Cela marquera lécart comme résolu sans apporter aucune modification.",
"missingTrackingRecommended": "Créez l'entrée de suivi du crédit manquante afin que la transaction soit reflétée dans le grand livre de suivi.",
"missingTrackingAlternative": "Créez plutôt un ajustement manuel si la transaction d'origine ne doit pas produire d'écriture de suivi.",
"missingTrackingNoAction": "Ne laissez lécart non résolu que si la transaction a été intentionnellement exclue du suivi du crédit.",
"inconsistentRemainingRecommended": "Mettez à jour le montant restant suivi afin qu'il corresponde au solde attendu après les applications.",
"inconsistentRemainingAlternative": "Créez un ajustement d'équilibrage au lieu de modifier l'écriture de suivi existante.",
"inconsistentRemainingNoAction": "Ne laissez lécart non résolu que si lentrée de suivi est intentionnellement compensée ailleurs.",
"genericRecommended": "Appliquez la correction recommandée pour réaligner les soldes.",
"genericCustom": "Entrez un ajustement personnalisé si une correction manuelle est requise."
},
"dialog": {
"adjustmentAmount": "Montant de l'ajustement",
"adjustmentHint": "Saisissez un montant positif pour augmenter le solde ou un montant négatif pour le diminuer.",
"notes": "Remarques",
"notesPlaceholder": "Expliquez la raison de cette correction..."
},
"impactSummary": {
"title": "Résumé des impacts",
"currentBalance": "Solde actuel",
"newBalance": "Nouveau solde"
},
"resolved": {
"title": "Cet écart a été résolu",
"description": "Aucune autre action n'est requise, sauf si vous devez consulter l'historique de rapprochement."
},
"errors": {
"notesRequired": "Veuillez fournir des notes expliquant la raison de cette correction.",
"invalidAmount": "Veuillez entrer un montant valide",
"unknown": "Une erreur inconnue s'est produite"
}
},
"usage": {
"bucketHoursOverview": "Aperçu des heures de bucket",
"usageRecords": "Enregistrements d'utilisation",
"actions": {
"addUsage": "Ajouter une utilisation",
"updateUsage": "Mettre à jour l'utilisation",
"edit": "Modifier",
"delete": "Supprimer",
"resetFilters": "Réinitialiser"
},
"filters": {
"client": "Client",
"service": "Service",
"clientPlaceholder": "Filtrer par client",
"servicePlaceholder": "Filtrer par prestation",
"allClients": "Tous les clients",
"allServices": "Tous les services"
},
"table": {
"client": "Client",
"service": "Service",
"quantity": "Quantité",
"usageDate": "Date d'utilisation",
"contractLine": "Ligne de contrat",
"actions": "Actions",
"defaultContractLine": "Ligne de contrat par défaut",
"contractLineLabel": "Ligne de contrat : {{id}}..."
},
"states": {
"loadingRecords": "Chargement des enregistrements d'utilisation",
"noActiveBucketPlans": "Aucun plan de compartiment actif trouvé."
},
"dialog": {
"addTitle": "Ajouter un enregistrement d'utilisation",
"editTitle": "Modifier l'enregistrement d'utilisation",
"fields": {
"client": "Client",
"service": "Service",
"quantity": "Quantité",
"usageDate": "Date d'utilisation",
"comments": "Commentaires (facultatif)",
"contractLine": "Ligne de contrat"
},
"servicePlaceholder": "Sélectionnez une prestation"
},
"contractLineGuidance": {
"multipleLines": "Ce service apparaît dans plusieurs lignes de contrat. Veuillez sélectionner la ligne de contrat sur laquelle facturer.",
"tooltipNoClient": "Informations client non disponibles. Lutilisation sera acheminée vers le contrat par défaut géré par le système.",
"tooltipMultiple": "Ce service apparaît dans plusieurs lignes de contrat. Veuillez sélectionner la ligne de contrat à utiliser. Lorsqu'une seule d'entre elles est une ligne de contrat bucket, elle est sélectionnée par défaut.",
"tooltipSingle": "Cette utilisation sera facturée au titre de la ligne contractuelle « {{name}} ».",
"tooltipNone": "Aucune ligne de contrat éligible trouvée pour ce service.",
"placeholderNoClient": "Utilisation d'un contrat par défaut géré par le système",
"placeholderNone": "Aucune ligne de contrat éligible",
"placeholderSingle": "Utiliser {{name}}",
"placeholderSelect": "Sélectionnez une ligne de contrat",
"wrongContractLineWarning": "La sélection d'une mauvaise ligne de contrat peut entraîner une facturation incorrecte",
"noClientNotice": "Informations client non disponibles. Lutilisation sera acheminée vers le contrat par défaut géré par le système.",
"noEligibleNotice": "Aucune ligne de contrat éligible trouvée pour ce service."
},
"deleteDialog": {
"title": "Supprimer l'enregistrement d'utilisation",
"message": "Êtes-vous sûr de vouloir supprimer cet enregistrement d'utilisation ? Cette action ne peut pas être annulée."
},
"toast": {
"loadClientsError": "Échec du chargement des clients",
"loadUsageError": "Échec du chargement des enregistrements d'utilisation",
"createSuccess": "Enregistrement d'utilisation créé avec succès",
"createError": "Échec de la création de l'enregistrement d'utilisation",
"updateSuccess": "Enregistrement d'utilisation mis à jour avec succès",
"updateError": "Échec de la mise à jour de l'enregistrement d'utilisation",
"deleteSuccess": "Enregistrement d'utilisation supprimé avec succès",
"deleteError": "Échec de la suppression de l'enregistrement d'utilisation"
}
},
"lineItem": {
"collapsed": {
"itemDiscount": "Remise sur l'article",
"invoiceDiscount": "Remise sur facture",
"appliedTo": "Appliqué à : {{description}}",
"selectService": "Sélectionnez un service",
"taxable": "(Imposable)",
"nonTaxable": "(Non imposable)",
"calculatedOnSave": "(calculé lors de la sauvegarde)"
},
"expanded": {
"discount": "Rabais",
"item": "Article {{number}}",
"markedForRemoval": "Marqué pour suppression"
},
"fields": {
"service": "Service",
"quantity": "Quantité",
"discountType": "Type de remise",
"percentage": "Pourcentage",
"amount": "Montant ({{currencySymbol}})",
"discountDescription": "Description de la remise",
"applyDiscountTo": "Appliquer la réduction à",
"entireInvoice": "Facture entière",
"rate": "Taux ({{currencySymbol}})",
"description": "Description"
},
"placeholders": {
"discountDescription": "par exemple, remise pour paiement anticipé"
},
"actions": {
"add": "Ajouter",
"remove": "Retirer",
"restore": "Restaurer"
},
"hints": {
"removed": "Cet élément sera supprimé lorsque vous enregistrerez les modifications"
},
"summary": {
"percentageDiscount": "Pourcentage de réduction",
"fixedDiscount": "Remise fixe",
"itemTotal": "{{percentage}} % du total de l'article",
"invoiceTotal": "{{percentage}}% du total de la facture",
"amount": "Montant : -{{currencySymbol}}{{amount}}",
"appliedTo": "Appliqué à : {{description}}",
"subtotal": "Sous-total : {{currencySymbol}}{{amount}}"
},
"options": {
"percentage": "Pourcentage",
"fixedAmount": "Montant fixe"
}
},
"contractLineServices": {
"table": {
"serviceName": "Nom du service",
"category": "Catégorie",
"billingMethod": "Méthode de facturation",
"quantity": "Quantité",
"defaultRate": "Taux par défaut",
"actions": "Actions"
},
"billingMethods": {
"fixed": "Prix fixe",
"hourly": "Horaire",
"usageBased": "Basé sur l'utilisation",
"usage": "Utilisation"
},
"badges": {
"product": "Produit",
"service": "Service"
},
"actions": {
"editQuantity": "Modifier la quantité",
"remove": "Retirer",
"addSelectedServices": "Ajouter les services sélectionnés",
"addSelectedServicesWithCount": "Ajouter les services sélectionnés ({{count}})"
},
"tooltip": {
"defaultRate": "Taux standard du service, utilisé pour l'allocation de valeur interne et le reporting dans le cadre du total fixe du plan. Pas directement modifiable ici."
},
"states": {
"loading": "Chargement des services...",
"emptyAssociated": "Aucun service actuellement associé à cette ligne de contrat.",
"emptyAvailable": "Tous les services disponibles sont déjà associés à cette ligne de contrat.",
"missingPrice": "Prix {{currency}} manquant"
},
"addSection": {
"title": "Ajouter des services à la ligne de contrat",
"serviceType": "Type de service : {{value}}",
"method": "Méthode : {{value}}",
"rate": "Tarif : {{value}}",
"catalogPrice": "Prix {{currency}} : {{value}}",
"catalogPriceMissing": "Prix {{currency}} : manquant",
"customRate": "Tarif {{currency}} personnalisé",
"productMissingPrice": "Le produit « {{name}} » na pas de prix {{currency}}. Entrez un tarif personnalisé avant de l'ajouter."
},
"errors": {
"loadData": "Échec du chargement des données des services",
"addServices": "Échec de l'ajout de services",
"removeService": "Échec de la suppression du service"
},
"unknownService": "Service inconnu"
},
"presetServices": {
"warnings": {
"unsavedChanges": "Vous avez des modifications non enregistrées. Cliquez sur \"Enregistrer les modifications\" pour les appliquer."
},
"table": {
"serviceName": "Nom du service",
"category": "Catégorie",
"billingMethod": "Méthode de facturation",
"quantity": "Quantité",
"defaultRate": "Taux par défaut",
"actions": "Actions"
},
"tooltip": {
"defaultRate": "Taux standard du service, utilisé pour l'allocation de valeur interne et le reporting dans le cadre du total fixe du plan."
},
"states": {
"loading": "Chargement des services...",
"emptyAssociated": "Aucun service actuellement associé à cette ligne de contrat.",
"emptyAvailable": "Tous les services disponibles sont déjà associés à cette ligne de contrat."
},
"addSection": {
"title": "Ajouter des services à la ligne de contrat",
"serviceType": "Type de service : {{value}}",
"method": "Méthode : {{value}}",
"rate": "Tarif : ${{value}}"
},
"actions": {
"remove": "Retirer",
"addSelectedServices": "Ajouter les services sélectionnés",
"addSelectedServicesWithCount": "Ajouter les services sélectionnés ({{count}})",
"saveChanges": "Enregistrer les modifications",
"saveChangesDirty": "Enregistrer les modifications *",
"saving": "Enregistrement...",
"reset": "Réinitialiser"
},
"navigationDialog": {
"title": "Modifications non enregistrées",
"message": "Vous avez des modifications non enregistrées. Êtes-vous sûr de vouloir quitter cette page ? Toutes les modifications seront perdues.",
"confirmLabel": "Quitter la page",
"cancelLabel": "Restez sur la page"
},
"toast": {
"saveSuccess": "Services prédéfinis de ligne de contrat enregistrés avec succès",
"saveError": "Échec de l'enregistrement des services"
},
"unknownService": "Service inconnu"
},
"accountingExports": {
"title": "Exportations comptables",
"description": "Créez des lots d'exportation, validez les mappages et fournissez des fichiers pour une importation manuelle dans votre système comptable.",
"table": {
"batch": "Lot",
"adapter": "Adaptateur",
"status": "Statut",
"created": "Créé",
"updated": "Mis à jour",
"actions": "Actions"
},
"actions": {
"refresh": "Actualiser",
"newExport": "Nouvelle exportation",
"open": "Ouvrir",
"execute": "Exécuter",
"createBatch": "Créer un lot",
"creating": "Création...",
"cancelBatch": "Annuler le lot"
},
"states": {
"loadingBatches": "Chargement des lots...",
"empty": "Aucun lot d'exportation pour l'instant.",
"loadingDetails": "Chargement des détails du lot...",
"batchNotFound": "Lot introuvable."
},
"createDialog": {
"title": "Nouvel export comptable",
"fields": {
"adapter": "Adaptateur",
"startDate": "Date de début",
"endDate": "Date de fin",
"clientSearch": "Recherche de clients",
"invoiceStatuses": "Statuts des factures",
"notes": "Remarques",
"realm": "Société cible (realm)"
},
"placeholders": {
"clientSearch": "Filtre de nom de client facultatif",
"invoiceStatuses": "Séparés par des virgules (facultatif), par ex. finalisé, publié",
"notes": "Notes facultatives"
},
"defaultRealmLabel": "{{realmId}} (par défaut)"
},
"detailDialog": {
"title": "Lot d'export comptable",
"subtitle": "Détails du lot",
"fields": {
"batchId": "ID de lot",
"adapter": "Adaptateur",
"status": "Statut",
"created": "Créé",
"lines": "Lignes",
"errors": "Erreurs",
"delivered": "Livré",
"notes": "Notes"
},
"errorDetails": "Détails des erreurs"
},
"toast": {
"created": "Lot d'export comptable créé",
"executing": "L'exécution par lots a commencé",
"loadBatchesError": "Échec du chargement des lots d'exportation comptable",
"loadDetailError": "Échec du chargement des détails du lot",
"createError": "Échec de la création du lot d'exportation",
"executeError": "Échec de l'exécution du lot",
"cancelled": "Lot annulé",
"cancelError": "Échec de l'annulation du lot"
},
"status": {
"pending": "En attente",
"validating": "Validation en cours",
"ready": "Prêt",
"delivered": "Livré",
"posted": "Publié",
"failed": "Échec",
"cancelled": "Annulé",
"needsAttention": "Attention requise"
}
},
"templateRenderer": {
"loading": "Chargement de l'aperçu du modèle...",
"errorPrefix": "Erreur:",
"empty": "Veuillez sélectionner une facture et un modèle à prévisualiser."
},
"templateDesigner": {
"propertyEditor": {
"selectField": "Sélectionnez un champ",
"content": "Contenu",
"dataField": "Champ de données",
"width": "Largeur",
"height": "Hauteur",
"fontSize": "Taille de la police",
"color": "Couleur",
"columns": "{{count}} colonne(s)",
"rows": "{{count}} ligne(s)"
},
"conditionalRules": {
"title": "Règles d'affichage conditionnel",
"selectAction": "Sélectionnez une action",
"show": "Afficher",
"hide": "Masquer",
"format": "Format",
"conditionPlaceholder": "Condition",
"targetPlaceholder": "Cible",
"addRule": "Ajouter une règle"
}
},
"contractsHub": {
"title": "Contrats",
"tabs": {
"templates": "Modèles",
"clientContracts": "Contrats clients"
}
},
"editQuantityDialog": {
"title": "Modifier la quantité pour {{serviceName}}",
"fields": {
"quantity": "Quantité"
},
"validation": {
"empty": "La quantité ne peut pas être vide.",
"positiveWholeNumber": "La quantité doit être un nombre entier positif."
},
"actions": {
"cancel": "Annuler",
"saveQuantity": "Enregistrer la quantité",
"saving": "Enregistrement..."
},
"errors": {
"saveFailed": "Échec de la mise à jour de la quantité. Veuillez réessayer."
}
},
"templateRendererCore": {
"notAvailable": "S/O",
"unknownValue": "Valeur inconnue",
"noDataForList": "Aucune donnée pour la liste : {{name}}",
"uncategorized": "Non classé"
}
}