PSA/server/public/locales/fr/msp/settings.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

1991 lines
89 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

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.

{
"escalationManager": {
"unsavedChanges_one": "{{count}} modification non enregistrée",
"unsavedChanges_other": "{{count}} modifications non enregistrées"
},
"page": {
"title": "Paramètres d'administration"
},
"tabs": {
"general": "Général",
"experimentalFeatures": "Fonctionnalités expérimentales",
"clientPortal": "Portail client",
"users": "Utilisateurs",
"teams": "Équipes",
"language": "Langue",
"ticketing": "Gestion des tickets",
"projects": "Projets",
"interactions": "Interactions",
"notifications": "Notifications",
"timeEntry": "Saisie du temps",
"billing": "Facturation",
"secrets": "Secrets",
"importExport": "Import/Export",
"email": "E-mail",
"integrations": "Intégrations",
"extensions": "Extensions",
"ticketingSettings": "Paramètres de ticketing",
"loadingTicketing": "Chargement de la configuration de ticketing...",
"teamManagement": "Gestion d'équipe",
"loadingTeam": "Chargement de la configuration de l'équipe...",
"loadingExperimental": "Chargement de la configuration des fonctionnalités expérimentales...",
"loadingInteractions": "Chargement des paramètres d'interaction...",
"keyboardShortcuts": "Raccourcis clavier"
},
"unsavedChanges": {
"title": "Modifications non enregistrées",
"message": "Vous avez des modifications non enregistrées. Êtes-vous sûr de vouloir quitter ? Vos modifications seront perdues."
},
"general": {
"title": "Paramètres généraux",
"description": "Gérez le nom de votre organisation et le client par défaut. Le client par défaut est utilisé à des fins de configuration et représente votre MSP.",
"fields": {
"organizationName": {
"label": "Nom de l'organisation"
},
"defaultTimezone": {
"label": "Fuseau horaire par défaut",
"help": "Utilisé pour les courriels et les notifications lorsqu'un utilisateur n'a pas défini son propre fuseau horaire."
}
},
"actions": {
"saveOrganizationName": "Enregistrer le nom de l'organisation",
"saveDefaultTimezone": "Enregistrer le fuseau horaire par défaut"
},
"clients": {
"title": "Clients",
"table": {
"name": "Nom",
"default": "Par défaut",
"actions": "Actions"
},
"placeholder": "Sélectionnez un client à ajouter",
"addClient": "Ajouter un client"
},
"messages": {
"success": {
"tenantNameUpdated": "Nom du locataire mis à jour avec succès",
"timezoneUpdated": "Fuseau horaire par défaut mis à jour avec succès",
"clientAdded": "Client ajouté avec succès",
"clientRemoved": "Client supprimé avec succès",
"defaultClientUpdated": "Client par défaut mis à jour avec succès"
},
"error": {
"loadTenantData": "Échec du chargement des données du locataire",
"updateTenantName": "Échec de la mise à jour du nom du locataire",
"updateTimezone": "Échec de la mise à jour du fuseau horaire",
"selectClient": "Veuillez sélectionner un client",
"clientNotFound": "Client introuvable",
"addClient": "Échec de l'ajout du client",
"removeClient": "Échec de la suppression du client",
"setDefaultClient": "Échec de la définition du client par défaut",
"loadClients": "Échec du chargement des clients"
}
}
},
"experimentalFeatures": {
"title": "Fonctionnalités expérimentales",
"description": "Activez ou désactivez les fonctionnalités expérimentales pour votre locataire.",
"alert": {
"title": "Expérimental",
"description": "Les fonctionnalités expérimentales peuvent être modifiées ou supprimées sans préavis."
},
"features": {
"aiAssistant": {
"name": "Assistant IA",
"description": "Activez la fonction Question rapide et la barre latérale de discussion alimentées par l'IA.",
"restriction": "Disponible uniquement pour le locataire de facturation principal."
}
},
"actions": {
"save": "Enregistrer",
"saving": "Enregistrement...",
"retry": "Réessayer"
},
"loading": "Chargement des fonctionnalités expérimentales...",
"messages": {
"success": {
"saved": "Paramètres des fonctionnalités expérimentales enregistrés. Rechargez la page pour appliquer les modifications."
},
"error": {
"loadFailed": "Échec du chargement des paramètres des fonctionnalités expérimentales.",
"saveFailed": "Échec de l'enregistrement des fonctionnalités expérimentales."
}
}
},
"users": {
"title": "Gestion des utilisateurs",
"description": {
"msp": "Gérer les utilisateurs et les permissions MSP",
"client": "Gérer les utilisateurs du portail client et leurs accès"
},
"viewSwitcher": {
"msp": "MSP",
"clientPortal": "Portail client"
},
"license": {
"usage": "Utilisateurs MSP : {{used}}{{limit}} licences utilisées",
"noLimit": " (Aucune limite)",
"ofLimit": " sur {{limit}}",
"addLicensePrompt": "Pour ajouter un nouvel utilisateur, vous devez acheter des licences supplémentaires",
"addLicense": "Ajouter une licence"
},
"search": "Rechercher des utilisateurs",
"filter": {
"all": "Tous les utilisateurs",
"active": "Utilisateurs actifs",
"inactive": "Utilisateurs inactifs",
"selectStatus": "Sélectionner le statut"
},
"tabs": {
"list": "Liste",
"structure": "Structure",
"listDescription": "Gérez les utilisateurs individuels, les rôles et les permissions.",
"structureDescription": "Visualisez et gérez la hiérarchie organisationnelle."
},
"actions": {
"createNewUser": "Créer un nouvel utilisateur",
"createNewClientUser": "Créer un nouvel utilisateur client",
"copyPortalLink": "Copier le lien de connexion au portail",
"copying": "Copie en cours...",
"createUser": "Créer un utilisateur",
"sendInvitation": "Envoyer l'invitation au portail",
"cancel": "Annuler"
},
"form": {
"title": {
"msp": "Créer un nouvel utilisateur MSP",
"client": "Créer un nouvel utilisateur du portail client"
},
"fields": {
"firstName": "Prénom",
"lastName": "Nom",
"email": "Courriel",
"client": "Client",
"clientOptional": "(facultatif)",
"primaryRole": "Rôle principal",
"selectRole": "Sélectionner un rôle",
"reportsTo": "Supérieur hiérarchique",
"reportsToOptional": "(facultatif)",
"selectManager": "Sélectionner un responsable",
"existingContact": "Contact existant",
"existingContactOptional": "(facultatif)",
"selectExistingContact": "Sélectionner un contact existant (facultatif)",
"selectExistingContactRequired": "Sélectionner un contact existant",
"selectContactToInvite": "Sélectionner un contact à inviter",
"password": "Mot de passe",
"passwordOptional": "(Laisser vide pour envoyer une invitation)",
"passwordPlaceholder": {
"msp": "Saisir le mot de passe",
"client": "Laisser vide pour envoyer une invitation"
},
"selectClient": "Sélectionner un client"
},
"passwordAlert": {
"withPassword": "La définition d'un mot de passe créera l'utilisateur immédiatement. Il pourra se connecter tout de suite.",
"withoutPassword": "Aucun mot de passe requis — nous enverrons une invitation au portail pour que l'utilisateur le définisse."
},
"requirePasswordChange": "Exiger le changement de mot de passe à la première connexion"
},
"table": {
"firstName": "Prénom",
"lastName": "Nom",
"email": "Courriel",
"client": "Client",
"role": "Rôle",
"lastLogin": "Dernière connexion",
"actions": "Actions",
"noClient": "Aucun client",
"noRole": "Aucun rôle",
"never": "Jamais",
"viaMethod": "via {{method}}",
"loading": "Chargement...",
"openMenu": "Ouvrir le menu",
"edit": "Modifier",
"remove": "Supprimer"
},
"loading": "Chargement des utilisateurs...",
"messages": {
"success": {
"portalInvitationSent": "Invitation au portail envoyée avec succès !",
"clientPortalUserCreated": "Utilisateur du portail client créé avec succès !",
"copiedVanityLink": "Lien de connexion personnalisé au portail copié dans le presse-papiers",
"copiedCanonicalLink": "Lien de connexion canonique au portail copié dans le presse-papiers"
},
"error": {
"fetchUsers": "Échec de la récupération des utilisateurs",
"fetchRoles": "Échec de la récupération des rôles",
"fetchClients": "Échec de la récupération des clients",
"createUser": "Échec de la création de l'utilisateur",
"sendInvitation": "Échec de l'envoi de l'invitation",
"sendInvitationManual": "Échec de l'envoi de l'invitation. Vous pouvez l'envoyer manuellement depuis la liste des utilisateurs.",
"createClientPortalUser": "Échec de la création de l'utilisateur du portail client",
"clipboardUnavailable": "L'API du presse-papiers n'est pas disponible dans ce navigateur.",
"copyPortalLink": "Échec de la copie du lien de connexion au portail",
"fillRequiredFields": "Veuillez remplir tous les champs obligatoires",
"fixValidationErrors": "Veuillez corriger les erreurs de validation avant de continuer",
"fixValidationBeforeInvitation": "Veuillez corriger les erreurs de validation avant d'envoyer l'invitation",
"emailAlreadyInUse": "Cette adresse courriel est déjà utilisée. Veuillez utiliser une adresse courriel différente.",
"portalUserExists": "Un utilisateur du portail existe déjà pour ce contact ou cette adresse courriel.",
"portalUserExistsForContact": "Un utilisateur du portail existe déjà pour ce contact. Utilisez la réinitialisation du mot de passe pour l'utilisateur existant.",
"selectAppropriateRole": "Veuillez sélectionner un rôle approprié pour ce type d'utilisateur",
"contactMissingEmail": "Le contact « {{name}} » ne possède pas d'adresse courriel. Veuillez mettre à jour l'adresse courriel du contact avant d'envoyer une invitation.",
"licenseLimit": "Impossible d'activer l'utilisateur : limite de licences atteinte. Veuillez désactiver un autre utilisateur ou mettre à niveau votre licence.",
"permissionDeniedInvite": "Vous n'avez pas la permission d'inviter des utilisateurs.",
"permissionDeniedCreate": "Vous n'avez pas la permission de créer des utilisateurs.",
"emailNotConfigured": "Le service de messagerie est désactivé ou n'est pas configuré.",
"contactNotFound": "Contact introuvable.",
"contactMissingEmailGeneric": "Le contact n'a pas d'adresse e-mail. Ajoutez une adresse e-mail au contact avant d'envoyer une invitation.",
"contactInvalidEmail": "Le contact a une adresse e-mail invalide. Mettez à jour le contact avec une adresse e-mail valide avant d'envoyer une invitation.",
"noDefaultClient": "Aucun client par défaut n'est configuré pour ce tenant. Veuillez définir un client par défaut dans les paramètres généraux.",
"noDefaultLocation": "Le client par défaut doit avoir un emplacement par défaut configuré pour envoyer des invitations au portail.",
"noLocationEmail": "L'emplacement du client par défaut doit avoir une adresse e-mail de contact configurée.",
"noBaseUrl": "L'URL de base n'est pas configurée pour les invitations au portail.",
"passwordTooShort": "Le mot de passe doit contenir au moins 8 caractères.",
"roleRequired": "Le rôle est requis",
"invalidRole": "Le rôle sélectionné est invalide",
"licenseLimitReached": "Vous avez atteint la limite de licences utilisateur MSP.",
"soloPlanLimit": "Le plan Solo est limité à 1 utilisateur. Passez à Pro pour ajouter d'autres utilisateurs."
}
}
},
"userDetails": {
"title": "Détails de l'utilisateur",
"fields": {
"firstName": {
"label": "Prénom",
"placeholder": "Saisir le prénom"
},
"lastName": {
"label": "Nom",
"placeholder": "Saisir le nom"
},
"email": {
"label": "Courriel",
"placeholder": "Saisir le courriel"
},
"reportsTo": {
"label": "Supérieur hiérarchique",
"placeholder": "Sélectionner un responsable"
},
"lastLogin": "Dernière connexion",
"roles": "Rôles",
"status": "Statut",
"statusHelp": "Définir le statut du compte utilisateur",
"newPassword": "Nouveau mot de passe"
},
"status": {
"active": "Actif",
"inactive": "Inactif",
"inactiveTag": "(Inactif)"
},
"actions": {
"addRole": "Ajouter un rôle",
"selectRoleToAdd": "Sélectionner un rôle à ajouter",
"removeRole": "Supprimer",
"setPassword": "Définir le mot de passe",
"cancel": "Annuler",
"saveChanges": "Enregistrer les modifications"
},
"dialog": {
"setPassword": {
"title": "Définir le mot de passe utilisateur (Admin)"
}
},
"messages": {
"success": {
"passwordChanged": "Mot de passe modifié avec succès",
"userUpdated": "Utilisateur mis à jour avec succès",
"roleAdded": "Rôle ajouté avec succès",
"roleRemoved": "Rôle supprimé avec succès"
},
"error": {
"userNotFound": "Utilisateur introuvable",
"loadFailed": "Échec du chargement des détails de l'utilisateur. Veuillez réessayer.",
"addRoleFailed": "Échec de l'ajout du rôle. Veuillez réessayer.",
"removeRoleFailed": "Échec de la suppression du rôle. Veuillez réessayer.",
"updateUserNotFound": "Échec de la mise à jour de l'utilisateur. Utilisateur introuvable.",
"updateFailed": "Échec de la mise à jour de l'utilisateur. Veuillez réessayer.",
"passwordTooShort": "Le mot de passe doit contenir au moins 8 caractères",
"passwordChangeFailed": "Échec de la modification du mot de passe",
"passwordChangeError": "Une erreur est survenue lors de la modification du mot de passe",
"emailAlreadyExists": "Un utilisateur avec cette adresse e-mail existe déjà",
"reportsToSelf": "Un utilisateur ne peut pas être son propre responsable",
"reportsToCycle": "Cela créerait une chaîne hiérarchique circulaire",
"permissionDenied": "Vous n'avez pas la permission de modifier les rôles des utilisateurs."
}
},
"loading": "Chargement des détails de l'utilisateur..."
},
"teams": {
"title": "Gestion des équipes",
"description": "Créez et gérez des équipes, désignez des chefs d'équipe et organisez les membres au sein de votre organisation",
"loading": "Chargement des équipes...",
"emptyState": "Veuillez sélectionner une équipe pour gérer les membres",
"list": {
"title": "Équipes",
"addNewTeam": "Ajouter une nouvelle équipe",
"createTeam": "Créer une équipe",
"cancel": "Annuler",
"delete": "Supprimer",
"placeholder": "Saisir le nom de la nouvelle équipe",
"selectManager": "Sélectionner un responsable"
},
"details": {
"loading": "Chargement des détails de l'équipe...",
"notFound": "Aucune équipe trouvée",
"fields": {
"teamLead": "Chef d'équipe",
"addMember": "Ajouter un membre"
},
"placeholders": {
"teamName": "Saisir le nom de l'équipe",
"selectTeamLead": "Sélectionner un chef d'équipe",
"selectUserToAdd": "Sélectionner un utilisateur à ajouter"
},
"alert": {
"unsavedChanges": "Vous avez des modifications non enregistrées"
},
"actions": {
"discard": "Abandonner",
"saveChanges": "Enregistrer les modifications",
"saveName": "Enregistrer le nom",
"cancel": "Annuler",
"editName": "Modifier le nom",
"remove": "Supprimer"
},
"table": {
"teamMembers": "Membres de l'équipe",
"member": "Membre",
"role": "Rôle"
},
"badge": {
"new": "Nouveau",
"lead": "Chef"
},
"leadName": "Chef : {{name}}",
"memberCount_one": "{{count}} membre",
"memberCount_other": "{{count}} membres"
},
"messages": {
"error": {
"loadFailed": "Échec du chargement des équipes. Veuillez réessayer.",
"fetchUsers": "Échec de la récupération des utilisateurs",
"createFailed": "Échec de la création de l'équipe : {{error}}",
"deleteFailed": "Échec de la suppression de l'équipe",
"updateName": "Échec de la mise à jour du nom de l'équipe",
"saveChanges": "Échec de l'enregistrement des modifications. Veuillez réessayer."
}
}
},
"ticketing": {
"title": "Paramètres des tickets",
"tabs": {
"display": "Affichage",
"ticketNumbering": "Numérotation des tickets",
"boards": "Tableaux",
"statuses": "Statuts",
"priorities": "Priorités",
"categories": "Catégories",
"checklistTemplates": "Modèles de checklist"
},
"numbering": {
"title": "Format de numérotation",
"description": "Définissez le préfixe, le remplissage des chiffres et la séquence actuelle",
"fields": {
"prefix": {
"label": "Préfixe du numéro de ticket",
"placeholder": "TK-",
"help": "Préfixe facultatif pour les numéros de ticket. Laissez vide pour aucun préfixe ou saisissez un préfixe personnalisé (ex. : « TK- »)"
},
"minimumDigits": {
"label": "Nombre minimum de chiffres",
"help": "Nombre minimum de chiffres pour le numéro séquentiel. Par exemple, 6 transforme « 1 » en « 000001 »"
},
"initialValue": {
"label": "Valeur initiale",
"placeholder": "Saisir la valeur",
"help": "Définissez le numéro de départ de la séquence. Ce paramètre ne peut être défini qu'une seule fois."
},
"lastUsedNumber": {
"label": "Dernier numéro utilisé",
"help": "Le dernier numéro attribué. Le prochain numéro sera supérieur de un à cette valeur."
},
"nextPreview": {
"label": "Aperçu du prochain numéro de ticket",
"help": "C'est le numéro qui sera attribué au prochain ticket"
}
},
"actions": {
"saveChanges": "Enregistrer les modifications",
"cancel": "Annuler"
},
"dialog": {
"title": "Mettre à jour les paramètres de numérotation des tickets",
"message": "La modification de ces paramètres affectera la génération des nouveaux numéros de ticket. Ce changement n'affectera pas les tickets existants. Êtes-vous sûr de vouloir continuer ?",
"confirm": "Mettre à jour les paramètres"
},
"loading": "Chargement...",
"messages": {
"error": {
"noSettings": "Aucun paramètre de numérotation des tickets trouvé. Veuillez contacter votre administrateur.",
"loadFailed": "Échec du chargement des paramètres de numérotation des tickets",
"updateFailed": "Échec de la mise à jour des paramètres",
"updatePaddingFailed": "Échec de la mise à jour de la longueur de remplissage",
"updateLastNumberFailed": "Échec de la mise à jour du dernier numéro",
"updateInitialValueFailed": "Échec de la mise à jour de la valeur initiale"
},
"success": {
"updated": "Paramètres de numérotation des tickets mis à jour avec succès"
}
}
},
"statuses": {
"title": "Statuts des tickets",
"alert": "Statut par défaut : lorsque les clients créent des tickets via le portail client, le statut marqué comme par défaut leur est automatiquement attribué. Un seul statut peut être défini comme par défaut à la fois.",
"table": {
"name": "Nom",
"status": "Statut",
"default": "Par défaut",
"order": "Ordre",
"actions": "Actions"
},
"statusLabels": {
"closed": "Fermé",
"open": "Ouvert",
"closedHelp": "Les tickets avec ce statut seront marqués comme fermés",
"openHelp": "Les tickets avec ce statut resteront ouverts",
"defaultHelp": "Statut par défaut pour les nouveaux tickets du portail client"
},
"actions": {
"addStatus": "Ajouter un statut",
"importStandard": "Importer depuis les statuts standard",
"edit": "Modifier",
"delete": "Supprimer"
},
"retiredAlert": "Les statuts de tickets sont désormais gérés dans chaque tableau. Utilisez l'onglet Tableaux pour modifier les cycles de vie des tickets d'un tableau spécifique.",
"messages": {
"success": {
"deleted": "Statut supprimé avec succès",
"updated": "Statut mis à jour avec succès"
},
"error": {
"lastClosed": "Au moins un statut doit rester marqué comme fermé",
"deleteLastClosed": "Impossible de supprimer le dernier statut fermé pour ce type.",
"removeDefault": "Impossible de retirer le statut par défaut du dernier statut par défaut"
}
}
},
"boards": {
"title": "Tableaux",
"alert": "Les tableaux organisent les tickets en groupes logiques. Chaque tableau peut avoir son propre agent par défaut, sa priorité et sa politique SLA.",
"table": {
"name": "Nom",
"description": "Description",
"status": "Statut",
"default": "Par défaut",
"defaultAgent": "Agent par défaut",
"defaultPriority": "Priorité par défaut",
"boardManager": "Responsable du tableau",
"order": "Ordre",
"itilBoard": "Tableau ITIL",
"actions": "Actions"
},
"statusLabels": {
"active": "Actif",
"inactive": "Inactif"
},
"actions": {
"addBoard": "Ajouter un tableau",
"importStandard": "Importer depuis les tableaux standard",
"edit": "Modifier",
"delete": "Supprimer",
"cancel": "Annuler",
"close": "Fermer",
"create": "Créer",
"update": "Mettre à jour",
"importSelected": "Importer la sélection",
"up": "Monter",
"down": "Descendre",
"remove": "Supprimer",
"addStatus": "Ajouter un statut"
},
"fields": {
"boardName": {
"label": "Nom du tableau",
"placeholder": "Saisir le nom du tableau"
},
"description": {
"label": "Description",
"placeholder": "Saisir la description du tableau"
},
"displayOrder": {
"label": "Ordre d'affichage",
"placeholder": "Saisir l'ordre d'affichage",
"help": "Contrôle l'ordre d'apparition des tableaux dans la liste"
},
"inactive": "Marquer comme inactif",
"itilCompliant": "Conforme ITIL",
"boardConfiguration": "Configuration du tableau",
"boardManager": {
"label": "Responsable du tableau",
"placeholder": "Sélectionner un responsable du tableau",
"help": "L'utilisateur responsable de la gestion de ce tableau"
},
"defaultAssignedAgent": {
"label": "Agent assigné par défaut",
"placeholder": "Sélectionner l'agent par défaut",
"help": "Les nouveaux tickets de ce tableau seront assignés à cet agent par défaut"
},
"defaultPriority": {
"label": "Priorité par défaut",
"placeholder": "Sélectionner la priorité par défaut",
"help": "Les nouveaux tickets de ce tableau utiliseront cette priorité par défaut",
"none": "Aucune"
},
"slaPolicy": {
"label": "Politique SLA",
"placeholder": "Sélectionner la politique SLA",
"help": "La politique SLA à appliquer aux tickets de ce tableau",
"none": "Aucune"
},
"ticketStatusSetup": {
"label": "Configuration des statuts de tickets",
"help": "Choisissez si ce tableau démarre à partir d'un cycle de vie existant ou d'une nouvelle liste de statuts en ligne.",
"copyExisting": "Copier depuis un tableau existant",
"createInline": "Créer des statuts en ligne"
},
"copyTicketStatuses": {
"label": "Copier les statuts de tickets depuis",
"help": "Les nouveaux tableaux clonent leur cycle de vie des tickets depuis un tableau existant.",
"selectSource": "Sélectionner un tableau source",
"noSourceAvailable": "Aucun tableau source disponible",
"unnamedBoard": "Tableau sans nom"
},
"ticketStatuses": {
"labelEditing": "Statuts de tickets du tableau",
"labelCopied": "Statuts de tickets copiés",
"labelInline": "Statuts de tickets en ligne",
"helpEditing": "Modifiez le cycle de vie des tickets pour ce tableau uniquement.",
"helpCopied": "Vérifiez et ajustez le cycle de vie copié avant d'enregistrer le nouveau tableau.",
"helpInline": "Créez le cycle de vie initial des tickets du tableau avant d'enregistrer.",
"loading": "Chargement des statuts de tickets du tableau…",
"statusName": "Nom du statut",
"closed": "Fermé",
"default": "Par défaut"
},
"inboundReplyReopen": {
"enabledLabel": "Rouvrir les tickets fermés lors des réponses entrantes",
"enabledHelp": "S'applique aux réponses groupées correspondant à des tickets déjà fermés sur ce tableau.",
"cutoffHoursLabel": "Délai de réouverture (heures)",
"cutoffHoursHelp": "Les réponses reçues après cette période créent de nouveaux tickets au lieu de rouvrir les anciens.",
"statusLabel": "Statut à la réouverture (facultatif)",
"statusPlaceholder": "Sélectionner un statut de réouverture",
"statusUseDefault": "Utiliser le statut ouvert par défaut du tableau",
"suppressAiLabel": "Ignorer la réouverture pour les courtes réponses d'accusé de réception (IA)",
"suppressAiHelp": "Module complémentaire Enterprise AI Assistant uniquement. Si indisponible, les réponses rouvrent normalement."
},
"liveTimer": {
"label": "Activer le minuteur de ticket en direct",
"help": "Affiche le minuteur en direct et les intervalles suivis sur les tickets de ce tableau. La saisie manuelle du temps reste disponible."
}
},
"dialog": {
"addBoard": "Ajouter un tableau",
"editBoard": "Modifier le tableau",
"deleteBoardTitle": "Supprimer le tableau",
"deleteBoardMessage": "Cette action supprimera définitivement le tableau.",
"cleanupItilTitle": "Nettoyer le tableau ITIL",
"cleanupItilMessage": "Cette action supprimera les catégories ITIL et la matrice de priorité associées à ce tableau.",
"deleteOnly": "Supprimer uniquement",
"deleteAndCleanup": "Supprimer et nettoyer",
"deleteAll": "Tout supprimer",
"importTitle": "Importer des tableaux standard",
"importDescription": "Sélectionnez les tableaux standard à importer dans votre organisation :",
"importEmpty": "Aucun tableau standard disponible à l'import.",
"conflictsTitle": "Résoudre les conflits d'import",
"conflictsDescription": "Les éléments suivants présentent des conflits qui doivent être résolus :",
"nameConflict": "Le nom existe déjà",
"skipItem": "Ignorer cet élément",
"importNewName": "Importer avec un nom différent :",
"importWithResolutions": "Importer avec résolutions",
"orderConflict": "L'ordre {{order}} est déjà utilisé",
"importWithOrder": "Importer avec l'ordre {{order}}"
},
"importTable": {
"active": "Actif"
},
"itilInfo": {
"title": "Informations ITIL",
"tooltip": "Ce tableau suit les bonnes pratiques ITIL",
"categoriesTitle": "Catégories ITIL",
"priorityMatrixTitle": "Matrice de priorité",
"impactDescription": "Les niveaux d'impact définissent la portée du problème",
"urgencyDescription": "Les niveaux d'urgence définissent la rapidité de résolution nécessaire",
"priorityDescription": "La priorité est calculée à partir de l'impact et de l'urgence",
"categories": {
"serviceRequest": "Demande de service"
},
"priorityMatrix": {
"urgencyHeaderLine1": {
"high": "Élevée",
"mediumHigh": "Moyenne-Élevée",
"medium": "Moyenne",
"mediumLow": "Moyenne-Faible",
"low": "Faible"
},
"urgencyHeaderLine2": {
"high": "Urgence (1)",
"mediumHigh": "Urgence (2)",
"medium": "Urgence (3)",
"mediumLow": "Urgence (4)",
"low": "Urgence (5)"
},
"impact": {
"high": "Impact élevé (1)",
"mediumHigh": "Impact moyen-élevé (2)",
"medium": "Impact moyen (3)",
"mediumLow": "Impact moyen-faible (4)",
"low": "Impact faible (5)"
},
"priority": {
"critical": "Critique (1)",
"high": "Élevée (2)",
"medium": "Moyenne (3)",
"low": "Faible (4)",
"planning": "Planification (5)"
}
}
},
"messages": {
"success": {
"created": "Tableau créé avec succès",
"updated": "Tableau mis à jour avec succès",
"deleted": "Tableau supprimé avec succès",
"imported": "Tableaux importés avec succès"
},
"error": {
"fetchFailed": "Échec du chargement des tableaux",
"fetchAvailableFailed": "Échec de la récupération des tableaux disponibles à l'import",
"nameRequired": "Le nom du tableau est requis",
"saveFailed": "Échec de l'enregistrement du tableau",
"lastDefault": "Impossible de supprimer le dernier tableau par défaut",
"statusRequired": "Ajoutez au moins un statut de ticket avant d'enregistrer le tableau.",
"duplicateStatusName": "Les noms des statuts de ticket doivent être uniques dans un tableau.",
"invalidOpenDefault": "Sélectionnez exactement un statut de ticket ouvert par défaut avant d'enregistrer le tableau.",
"nameAlreadyExists": "Un tableau portant ce nom existe déjà.",
"selectBoardToCopy": "Sélectionnez un tableau existant depuis lequel copier les statuts de ticket.",
"fetchStatusesFailed": "Échec du chargement des statuts de ticket du tableau.",
"deleteFailed": "Échec de la suppression du tableau",
"importFailed": "Échec de l'importation des tableaux",
"updateStatusFailed": "Échec de la mise à jour du statut du tableau",
"updateDefaultFailed": "Échec de la mise à jour du tableau par défaut"
}
},
"closeRules": {
"enabledLabel": "Règles de clôture",
"enabledHelp": "Exiger que des conditions soient remplies avant que les tickets de ce tableau puissent être clôturés.",
"requireResolutionCommentLabel": "Exiger un commentaire de résolution",
"requireResolutionCommentHelp": "Un commentaire de résolution doit exister avant que le ticket puisse être clôturé.",
"requireTimeEntryLabel": "Exiger une saisie du temps",
"requireTimeEntryHelp": "Au moins une saisie du temps doit être enregistrée avant que le ticket puisse être clôturé.",
"requireChecklistCompleteLabel": "Exiger la complétion de la checklist",
"requireChecklistCompleteHelp": "Tous les éléments obligatoires de la checklist doivent être cochés avant que le ticket puisse être clôturé.",
"requireNoOpenChildrenLabel": "Exiger la clôture des tickets groupés",
"requireNoOpenChildrenHelp": "Un ticket maître de groupe ne peut pas être clôturé tant que des tickets enfants groupés sont encore ouverts.",
"requiredFieldsLabel": "Champs obligatoires à la clôture",
"requiredFieldsHelp": "Ces champs de ticket doivent être renseignés avant que le ticket puisse être clôturé.",
"autoCloseLabel": "Règles de clôture automatique",
"autoCloseHelp": "Clôture automatiquement les tickets restant dans un statut sans activité. Un courriel d'avertissement facultatif est envoyé au contact avant la clôture.",
"addAutoCloseRule": "Ajouter une règle",
"triggerStatusLabel": "Lorsque le ticket est dans le statut",
"triggerStatusPlaceholder": "Sélectionner un statut",
"targetStatusLabel": "Clôturer vers le statut",
"targetStatusPlaceholder": "Sélectionner un statut fermé",
"inactivityDaysLabel": "Jours d'inactivité",
"warningDaysLabel": "Avertir avant clôture (jours)",
"warningDaysPlaceholder": "Aucun avertissement",
"ruleEnabledLabel": "Activée",
"removeRule": "Supprimer",
"messages": {
"fetchFailed": "Échec du chargement des règles de clôture pour ce tableau",
"autoCloseStatusRequired": "Chaque règle de clôture automatique nécessite un statut déclencheur et un statut cible fermé",
"autoCloseDaysInvalid": "Le nombre de jours d'inactivité pour la clôture automatique doit être un entier positif",
"autoCloseWarningInvalid": "Le délai d'avertissement doit être inférieur au nombre de jours d'inactivité"
}
}
},
"priorities": {
"title": {
"ticket": "Priorités des tickets",
"projectTask": "Priorités des tâches de projet"
},
"alert": {
"header": "Gestion des priorités :",
"description": "Créez des priorités personnalisées pour votre organisation ou importez depuis des modèles standard.",
"itilNote": "Les priorités standard ITIL ne peuvent pas être modifiées ou supprimées.",
"nonItilNote": "Toutes les priorités peuvent être modifiées ou supprimées selon votre flux de travail."
},
"table": {
"name": "Nom",
"type": "Type",
"color": "Couleur",
"order": "Ordre",
"actions": "Actions",
"standardTag": "(Standard)",
"itilProtected": "Protégé"
},
"itemTypes": {
"ticket": "Ticket",
"projectTask": "Tâche de projet"
},
"actions": {
"addPriority": "Ajouter une priorité",
"importStandard": "Importer depuis les priorités standard",
"openMenu": "Ouvrir le menu",
"edit": "Modifier",
"delete": "Supprimer",
"cancel": "Annuler"
},
"dialog": {
"addTitle": "Ajouter une nouvelle priorité",
"editTitle": "Modifier la priorité",
"submitAdd": "Ajouter la priorité",
"submitUpdate": "Mettre à jour la priorité"
},
"fields": {
"priorityName": {
"label": "Nom de la priorité",
"placeholder": "ex. : Urgent"
},
"orderNumber": {
"label": "Numéro d'ordre (1-100, les numéros les plus élevés apparaissent en premier)",
"help": "Contrôle l'ordre dans lequel les priorités apparaissent dans les menus déroulants de la plateforme. Les numéros les plus élevés apparaissent en premier pour les priorités.",
"used": "Numéros d'ordre utilisés : {{numbers}}",
"noneUsed": "Aucun numéro d'ordre utilisé pour le moment"
},
"color": {
"label": "Couleur",
"chooseButton": "Choisir une couleur"
}
},
"import": {
"title": "Importer des priorités standard",
"submit": "Importer ({{count}})",
"allImportedTicket": "Toutes les priorités standard ont déjà été importées pour les tickets.",
"allImportedProjectTask": "Toutes les priorités standard ont déjà été importées pour les tâches de projet.",
"instructions": "Sélectionnez les priorités standard à importer. Elles seront copiées dans les priorités de votre organisation."
},
"messages": {
"success": {
"deleted": "Priorité supprimée avec succès",
"imported": "{{count}} priorités importées avec succès",
"skipped": "{{count}} priorités ignorées (existent déjà)"
},
"error": {
"orderTaken": "Le numéro d'ordre {{order}} est déjà utilisé par « {{name}} ». Veuillez choisir un autre numéro d'ordre.",
"uniqueConstraint": "Ce numéro d'ordre est déjà utilisé. Veuillez choisir un autre numéro d'ordre.",
"saveFailed": "Échec de l'enregistrement de la priorité",
"deleteFailed": "Échec de la suppression de la priorité",
"deleteValidationFailed": "Échec de la validation de la suppression. Veuillez réessayer.",
"importFailed": "Échec de l'importation des priorités"
}
},
"entity": {
"fallback": "cette priorité"
}
},
"checklistTemplates": {
"title": "Modèles de checklist",
"alert": "Les modèles de checklist définissent des checklists réutilisables pour les tickets. Les éléments du modèle sont copiés sur les tickets lors de l'application, de sorte que la modification d'un modèle ne change jamais les checklists déjà ajoutées aux tickets.",
"table": {
"name": "Nom",
"description": "Description",
"items": "Éléments",
"status": "Statut",
"actions": "Actions"
},
"statusLabels": {
"active": "Actif",
"inactive": "Inactif"
},
"actions": {
"addTemplate": "Ajouter un modèle",
"edit": "Modifier",
"delete": "Supprimer",
"cancel": "Annuler",
"close": "Fermer",
"create": "Créer",
"update": "Mettre à jour",
"up": "Monter",
"down": "Descendre",
"remove": "Supprimer",
"addItem": "Ajouter un élément",
"addRule": "Ajouter une règle"
},
"fields": {
"name": {
"label": "Nom du modèle",
"placeholder": "Saisir le nom du modèle"
},
"description": {
"label": "Description",
"placeholder": "Saisir la description"
},
"active": "Actif",
"items": {
"label": "Éléments de la checklist",
"help": "Les éléments sont ajoutés aux tickets dans cet ordre lors de l'application du modèle.",
"itemName": "Nom de l'élément",
"required": "Obligatoire",
"newItemLabel": "Nouvel élément",
"newItemPlaceholder": "Saisir le nom de l'élément"
},
"rules": {
"label": "Règles d'application automatique",
"help": "Le modèle est automatiquement appliqué aux nouveaux tickets correspondant à l'une de ces règles. Laissez un champ à « Tous » pour correspondre à toutes les valeurs.",
"empty": "Aucune règle d'application automatique. Ce modèle peut toujours être appliqué manuellement aux tickets.",
"board": "Tableau",
"category": "Catégorie",
"subcategory": "Sous-catégorie",
"priority": "Priorité",
"any": "Tous"
}
},
"dialog": {
"addTemplate": "Ajouter un modèle de checklist",
"editTemplate": "Modifier le modèle de checklist",
"createFirstHelp": "Créez d'abord le modèle, puis ajoutez des éléments de checklist et des règles d'application automatique.",
"deleteTitle": "Supprimer le modèle de checklist",
"deleteMessage": "Êtes-vous sûr de vouloir supprimer « {{name}} » ? Les checklists déjà ajoutées aux tickets ne seront pas affectées."
},
"messages": {
"success": {
"created": "Modèle de checklist créé avec succès",
"updated": "Modèle de checklist mis à jour avec succès",
"deleted": "Modèle de checklist supprimé avec succès"
},
"error": {
"fetchFailed": "Échec de la récupération des modèles de checklist",
"fetchRulesFailed": "Échec de la récupération des règles d'application automatique",
"nameRequired": "Le nom du modèle est obligatoire",
"saveFailed": "Échec de l'enregistrement du modèle de checklist",
"deleteFailed": "Échec de la suppression du modèle de checklist",
"updateStatusFailed": "Échec de la mise à jour du statut du modèle",
"itemSaveFailed": "Échec de l'enregistrement de l'élément de checklist",
"ruleSaveFailed": "Échec de l'enregistrement de la règle d'application automatique"
}
}
}
},
"interactions": {
"title": "Paramètres des interactions",
"tabs": {
"types": "Types d'interaction",
"statuses": "Statuts des interactions"
},
"types": {
"title": "Types d'interaction",
"loading": "Chargement des types d'interaction...",
"table": {
"name": "Nom",
"order": "Ordre",
"actions": "Actions"
},
"actions": {
"addType": "Ajouter un type d'interaction",
"importStandard": "Importer depuis les types d'interaction standard",
"edit": "Modifier",
"delete": "Supprimer",
"cancel": "Annuler",
"importSelected": "Importer la sélection"
},
"dialog": {
"import": {
"title": "Importer des types d'interaction standard",
"description": "Sélectionnez les types d'interaction standard à importer dans votre organisation :",
"empty": "Aucun type d'interaction standard disponible à l'importation."
},
"conflicts": {
"title": "Résoudre les conflits d'importation",
"description": "Les éléments suivants présentent des conflits qui doivent être résolus :",
"nameConflict": "Le nom existe déjà",
"orderConflict": "L'ordre {{order}} est déjà utilisé",
"skipItem": "Ignorer cet élément",
"importDifferentName": "Importer avec un nom différent :",
"importDifferentOrder": "Importer avec l'ordre {{order}}",
"resolve": "Importer avec les résolutions"
}
},
"messages": {
"success": {
"deleted": "Type d'interaction supprimé",
"imported_one": "{{count}} type d'interaction importé",
"imported_other": "{{count}} types d'interaction importés"
},
"error": {
"fetchFailed": "Échec de la récupération des types d'interaction",
"validateDeleteFailed": "Échec de la validation de la suppression du type d'interaction",
"deleteFailed": "Échec de la suppression du type d'interaction",
"checkConflicts": "Échec de la vérification des conflits",
"importFailed": "Échec de l'importation des types d'interaction",
"fetchAvailable": "Échec de la récupération des types d'interaction disponibles pour l'importation"
}
}
},
"statuses": {
"title": "Statuts des interactions",
"alert": "Statuts des interactions : suivez l'état des interactions client telles que les appels, les courriels et les réunions.",
"table": {
"name": "Nom",
"status": "Statut",
"order": "Ordre",
"actions": "Actions"
},
"statusLabels": {
"closedHelp": "Les interactions avec ce statut seront marquées comme fermées",
"openHelp": "Les interactions avec ce statut resteront ouvertes"
},
"actions": {
"addStatus": "Ajouter un statut",
"importStandard": "Importer depuis les standards",
"edit": "Modifier",
"delete": "Supprimer"
},
"messages": {
"success": {
"updated": "Statut mis à jour avec succès",
"deleted": "Statut supprimé avec succès",
"imported": "{{count}} statuts importés avec succès"
},
"error": {
"lastClosed": "Au moins un statut doit rester marqué comme fermé",
"deleteLastClosed": "Impossible de supprimer le dernier statut fermé pour ce type.",
"skipped": "{{count}} statuts ignorés ({{reason}})",
"importFailed": "Échec de l'importation des statuts"
}
}
},
"quickAdd": {
"dialog": {
"createTitle": "Créer un type d'interaction",
"editTitle": "Modifier le type d'interaction"
},
"fields": {
"name": {
"label": "Nom du type d'interaction :",
"placeholder": "ex. : « Appel d'intégration client », « Démonstration commerciale », « Revue de projet »"
},
"displayOrder": {
"label": "Ordre d'affichage :",
"placeholder": "ex. : 1, 2, 3..."
},
"icon": {
"label": "Choisir une icône :"
}
},
"preview": {
"title": "Aperçu :",
"empty": "Saisissez le nom du type ci-dessus"
},
"actions": {
"cancel": "Annuler",
"create": "Créer le type",
"update": "Mettre à jour le type",
"creating": "Création en cours...",
"updating": "Mise à jour en cours..."
},
"messages": {
"error": {
"nameRequired": "Veuillez saisir un nom pour le type d'interaction.",
"saveFailed": "Échec de l'opération « {{action}} » sur le type d'interaction. Veuillez réessayer."
}
}
},
"openMenu": "Ouvrir le menu"
},
"clientPortal": {
"branding": {
"title": "Image de marque et apparence",
"description": "Personnalisez l'apparence de votre portail client avec l'image de marque de votre entreprise.",
"fields": {
"companyName": "Nom de l'entreprise",
"companyLogo": "Logo de l'entreprise",
"colorPalette": "Palette de couleurs",
"primaryColor": "Couleur principale",
"secondaryColor": "Couleur secondaire",
"supportEmail": "E-mail du support",
"supportPhone": "Téléphone du support"
},
"help": {
"companyName": "Ce nom sera affiché dans l'en-tête du portail client",
"companyLogo": "Recommandé : PNG ou SVG, 2 Mo max, fond transparent",
"primaryColor": "Utilisée pour les boutons, les liens et les éléments mis en avant",
"secondaryColor": "Utilisée pour les accents et les actions secondaires",
"supportEmail": "Affiché aux clients dans les confirmations de rendez-vous et autres e-mails sortants comme adresse de contact pour obtenir de l'aide.",
"supportPhone": "Facultatif. Affiché à côté de l'e-mail du support dans les e-mails destinés aux clients."
},
"preview": "Aperçu",
"previewDarkMode": "Aperçu en mode sombre",
"actions": {
"saveBranding": "Enregistrer les paramètres de marque",
"previewDashboard": "Aperçu du tableau de bord client",
"hideDashboard": "Masquer le tableau de bord client",
"previewSignIn": "Aperçu de la page de connexion",
"hideSignIn": "Masquer la page de connexion"
},
"customDomainRequired": "Un domaine personnalisé doit être configuré"
},
"dashboardPreview": {
"title": "Votre portail client",
"welcome": "Bienvenue !",
"subtitle": "Voici un aperçu de l'activité de votre compte",
"openTickets": "Tickets ouverts",
"activeProjects": "Projets actifs",
"invoices": "Factures",
"urgent": "{{count}} urgent(s)",
"nearDeadline": "{{count}} proche(s) de l'échéance",
"dueThisMonth": "À échéance ce mois-ci",
"recentActivity": "Activité récente",
"ticketUpdated": "Le ticket #1234 a été mis à jour",
"hoursAgo": "Il y a {{count}} heures",
"newInvoice": "Nouvelle facture générée",
"milestoneCompleted": "Jalon de projet terminé",
"dayAgo": "Il y a 1 jour",
"createTicket": "Créer un ticket",
"viewProjects": "Voir les projets",
"activeDevices": "Appareils actifs",
"basicSupport": "Support de base",
"dashboardTitle": "Tableau de bord",
"greeting": "Bonjour, Alex 👋",
"navAppointments": "Rendez-vous",
"navDashboard": "Tableau de bord",
"navDevices": "Mes appareils",
"navProjects": "Projets",
"navServiceRequests": "Demandes de service",
"navTickets": "Tickets",
"serviceRequests": "Demandes de service",
"upcomingShort": "À venir",
"upcomingVisits": "Visites à venir",
"welcomeBack": "Bon retour",
"workspaceSection": "Espace de travail"
},
"signInPreview": {
"portalTitle": "Portail client",
"welcome": "Bienvenue sur votre portail client",
"subtitle": "Gérez vos tickets d'assistance et restez connecté",
"features": {
"submitTickets": {
"title": "Soumettre des tickets d'assistance",
"description": "Créez et gérez vos demandes d'assistance"
},
"trackStatus": {
"title": "Suivre l'état des tickets",
"description": "Surveillez l'avancement en temps réel"
},
"ticketHistory": {
"title": "Historique des tickets",
"description": "Accédez à l'intégralité de votre historique d'assistance"
},
"documentation": {
"title": "Accès à la documentation",
"description": "Consultez les documents et ressources partagés"
}
},
"signIn": {
"title": "Connexion",
"description": "Veuillez saisir vos identifiants pour accéder à votre compte.",
"email": "Courriel",
"emailPlaceholder": "Saisissez votre courriel",
"password": "Mot de passe",
"passwordPlaceholder": "Saisissez votre mot de passe",
"forgotPassword": "Mot de passe oublié ?",
"mspStaffLogin": "Personnel MSP ? Connectez-vous ici →"
}
},
"domain": {
"title": "Domaine personnalisé",
"description": "Configurez un nom d'hôte personnalisé pour votre portail client. Nous provisionnerons automatiquement les certificats TLS une fois le DNS vérifié.",
"currentStatus": "Statut actuel",
"noDomainConfigured": "Aucun domaine personnalisé configuré",
"defaultStatusMessage": "Aucun domaine personnalisé enregistré pour le moment.",
"lastChecked": "Dernière vérification : {{value}}",
"updatingDomainPrefix": "Mise à jour du domaine vers ",
"updatingDomainSuffix": ". Le provisionnement redémarrera après la mise à jour.",
"editInstructions": "Pour changer votre domaine, modifiez la valeur ci-dessous et soumettez pour lancer un nouveau provisionnement.",
"actions": {
"refresh": "Actualiser",
"refreshing": "Actualisation...",
"retry": "Réessayer",
"retrying": "Nouvelle tentative…",
"removeDomain": "Supprimer le domaine",
"saveDomain": "Enregistrer le domaine",
"updateDomain": "Mettre à jour le domaine",
"submitting": "Envoi…",
"cancelEdit": "Annuler la modification"
},
"form": {
"label": "Domaine personnalisé",
"helpTextPrefix": "Ajoutez un enregistrement CNAME pointant vers ",
"helpTextSuffix": " avant de soumettre.",
"placeholder": "portail.exemple.com"
},
"checklist": {
"title": "Liste de vérification de configuration",
"step1Prefix": "Créez un enregistrement CNAME pour l'hôte de votre choix pointant vers ",
"step1Suffix": ".",
"step2": "Cliquez sur \"Enregistrer le domaine\" pour déclencher la vérification DNS et le provisionnement du certificat.",
"step3": "Utilisez le bouton Actualiser pour suivre la progression du provisionnement. Nous enverrons un email à vos administrateurs si le provisionnement échoue.",
"canonicalHostFallback": "hôte canonique"
},
"badges": {
"pending_dns": "DNS en attente",
"verifying_dns": "Vérification du DNS",
"dns_failed": "Échec du DNS",
"pending_certificate": "Certificat en attente",
"certificate_issuing": "Émission du certificat",
"certificate_failed": "Échec du certificat",
"deploying": "Déploiement en cours",
"active": "Actif",
"disabled": "Désactivé",
"unknown": "Inconnu"
},
"messages": {
"requestSubmitted": "Demande de domaine personnalisé soumise.",
"retryQueued": "Nouvelle tentative en file d'attente. Vérifiez le statut dans quelques instants.",
"removalRequested": "Suppression du domaine personnalisé demandée.",
"enterDomainFirst": "Saisissez un domaine avant de soumettre.",
"confirmRemove": "Supprimer le domaine personnalisé actuel ? Le trafic sera redirigé vers l'adresse hébergée par défaut.",
"loadFailed": "Impossible de charger le statut du domaine du portail.",
"registerFailed": "Échec de l'enregistrement du domaine personnalisé.",
"refreshFailed": "Échec de l'actualisation du statut du domaine.",
"retryFailed": "Échec de la nouvelle tentative.",
"disableFailed": "Échec de la désactivation du domaine personnalisé."
}
},
"yourCompanyName": "Nom de votre entreprise",
"brandingPreviewMode": "Mode de thème d'aperçu de la marque",
"brandingUpdated": "Paramètres de marque mis à jour"
},
"mspLanguage": {
"title": "Langue de lorganisation",
"description": "Définissez la langue par défaut pour toute lorganisation — personnel MSP, utilisateurs du portail client et notifications par email. Chaque utilisateur ou client peut ensuite la remplacer individuellement.",
"fields": {
"defaultLanguage": "Langue par défaut",
"availableLanguages": "Langues disponibles"
},
"help": {
"defaultLanguage": "Appliquée partout, sauf si une préférence personnelle d'un utilisateur ou la langue configurée pour un client spécifique la remplace.",
"availableLanguages": "Sélectionnez les langues parmi lesquelles les utilisateurs peuvent choisir."
}
},
"notifications": {
"title": "Paramètres de notification",
"description": {
"email": "Configurez la manière dont votre locataire envoie les notifications par courriel",
"internal": "Configurez la manière dont votre locataire envoie les notifications internes"
},
"viewSwitcher": {
"email": "Notifications par courriel",
"internal": "Notifications internes"
},
"emailTabs": {
"settings": "Paramètres",
"emailTemplates": "Modèles de courriel",
"categories": "Catégories",
"telemetry": "Télémétrie"
},
"internalTabs": {
"categories": "Catégories",
"categoriesTypes": "Catégories et types"
},
"loading": {
"settings": "Chargement des paramètres...",
"templates": "Chargement des modèles...",
"categories": "Chargement des catégories..."
},
"unsaved": {
"title": "Modifications non enregistrées",
"message": "Vous avez des paramètres de notification non enregistrés. Êtes-vous sûr de vouloir quitter ? Vos modifications seront perdues."
},
"tenantDescription": {
"email": "Configurez les paramètres de notification par e-mail à l'échelle du locataire",
"internal": "Configurez les paramètres de notification interne à l'échelle du locataire"
},
"sections": {
"globalSettings": {
"title": "Paramètres globaux",
"description": "Configurez les paramètres globaux de notification"
},
"emailTemplates": {
"title": "Modèles de courriel",
"description": "Gérez les modèles de notification par courriel"
},
"categories": {
"title": "Catégories de notification",
"description": "Gérez les catégories et types de notification"
},
"internalCategories": {
"title": "Catégories de notification interne",
"description": "Gérez les catégories et types de notification interne"
},
"telemetry": {
"title": "Télémétrie et analytique",
"description": "Gérez vos préférences de télémétrie et d'analytique"
}
}
},
"timeEntry": {
"title": "Paramètres de saisie du temps",
"description": "Gérez vos paramètres de saisie du temps et les périodes de temps"
},
"billing": {
"title": "Paramètres de facturation",
"description": "Gérez votre facturation et votre abonnement"
},
"secrets": {
"title": "Gestion des secrets",
"description": "Gérez les secrets chiffrés utilisés dans les flux de travail. Les secrets peuvent être référencés dans les actions de flux de travail en utilisant la syntaxe $secret.",
"list": {
"title": "Secrets",
"description": "Gérez les secrets utilisés dans les flux de travail. Les secrets sont chiffrés et peuvent être référencés en utilisant { $secret: \"SECRET_NAME\" }",
"search": "Rechercher des secrets...",
"createSecret": "Créer un secret",
"table": {
"name": "Nom",
"description": "Description",
"lastUpdated": "Dernière mise à jour",
"lastAccessed": "Dernier accès",
"actions": "Actions",
"never": "Jamais",
"empty": "-"
},
"tooltips": {
"edit": "Modifier le secret",
"delete": "Supprimer le secret"
}
},
"dialog": {
"createTitle": "Créer un secret",
"editTitle": "Modifier le secret",
"deleteTitle": "Supprimer le secret",
"fields": {
"name": {
"label": "Nom *",
"placeholder": "MY_API_KEY",
"help": "Utilisez uniquement des lettres majuscules, des chiffres et des tirets bas"
},
"value": {
"label": "Valeur *",
"placeholder": "Saisir la valeur du secret",
"editPlaceholder": "Saisir une nouvelle valeur pour mettre à jour",
"editHelp": "Laissez vide pour conserver la valeur actuelle"
},
"description": {
"label": "Description",
"placeholder": "À quoi sert ce secret ?"
}
},
"delete": {
"confirmation": "Êtes-vous sûr de vouloir supprimer le secret {{name}} ?",
"usedByWorkflows": "Ce secret est utilisé par {{count}} flux de travail",
"usedByWarning": "Sa suppression entraînera l'échec de ces flux de travail lorsqu'ils tenteront d'accéder à ce secret.",
"cannotUndo": "Cette action est irréversible.",
"typeToConfirm": "Saisissez {{name}} pour confirmer :",
"placeholder": "Saisir le nom du secret"
},
"actions": {
"cancel": "Annuler",
"create": "Créer le secret",
"update": "Mettre à jour le secret",
"delete": "Supprimer le secret",
"saving": "Enregistrement...",
"deleting": "Suppression..."
}
},
"messages": {
"success": {
"created": "Secret « {{name}} » créé",
"updated": "Secret « {{name}} » mis à jour",
"deleted": "Secret « {{name}} » supprimé"
},
"error": {
"loadFailed": "Échec du chargement des secrets",
"deleteFailed": "Échec de la suppression du secret",
"saveFailed": "Échec de l'enregistrement du secret",
"nameRequired": "Le nom du secret est obligatoire",
"valueRequired": "La valeur du secret est obligatoire",
"noChanges": "Aucune modification à enregistrer",
"fixValidation": "Veuillez corriger les erreurs de validation"
}
}
},
"importExport": {
"title": "Espace de travail Importation et Exportation",
"description": "Configurez les importations, les exportations et les flux de données automatisés depuis un centre de contrôle unique.",
"history": {
"title": "Historique des importations et exportations",
"description": "Consultez chaque tâche d'importation ou d'exportation en un seul endroit.",
"empty": "Aucune tâche d'importation ou d'exportation trouvée. Générez un aperçu pour créer la première tâche.",
"table": {
"date": "Date",
"source": "Source",
"file": "Fichier",
"status": "Statut",
"created": "Créé",
"duplicates": "Doublons",
"errors": "Erreurs"
}
},
"tabs": {
"assetImport": "Importation d'actifs",
"assetExport": "Exportation d'actifs",
"templatesAutomation": "Modèles et automatisation"
},
"import": {
"fields": {
"importSource": "Source d'importation",
"uploadFile": "Téléverser un fichier",
"fieldMapping": "Correspondance des champs",
"rememberMapping": "Mémoriser cette correspondance pour les importations futures"
},
"placeholders": {
"noSources": "Aucune source d'importation disponible",
"selectSource": "Sélectionner une source d'importation",
"sourceColumn": "Nom de la colonne source",
"example": "ex. : {{example}}"
},
"help": {
"fieldMapping": "Saisissez les noms de colonnes de votre fichier qui correspondent à chaque champ d'actif requis. Laissez les champs facultatifs vides pour les ignorer."
},
"alerts": {
"selectSource": "Sélectionnez une source d'importation pour continuer.",
"chooseFile": "Choisissez un fichier CSV ou XLSX pour continuer.",
"validationIssues": "Problèmes de validation détectés."
},
"actions": {
"generatePreview": "Générer l'aperçu",
"preparingPreview": "Préparation de l'aperçu...",
"proceedWithImport": "Procéder à l'importation",
"startingImport": "Démarrage de l'importation...",
"refresh": "Actualiser",
"refreshing": "Actualisation...",
"cancel": "Annuler",
"importSelected": "Importer la sélection"
},
"preview": {
"title": "Aperçu de l'importation",
"description": "Affichage des 10 premières lignes parmi {{totalRows}} enregistrements au total.",
"stats": {
"total": "Total",
"valid": "Valides",
"duplicates": "Doublons",
"errors": "Erreurs"
},
"table": {
"row": "Ligne",
"values": "Valeurs",
"issues": "Problèmes"
},
"empty": "Aucune ligne d'aperçu disponible."
}
},
"export": {
"comingSoon": "Les outils d'exportation d'actifs arrivent bientôt. Les fonctionnalités prévues incluent l'exportation de listes d'actifs filtrées, de données d'audit et de modèles de correspondance directement en CSV/XLSX."
},
"templates": {
"comingSoon": "Les modèles de correspondance et les importations planifiées seront disponibles ici. Enregistrez les correspondances de colonnes, partagez-les avec l'équipe et configurez des tâches récurrentes."
},
"jobDetails": {
"title": "Détails de la tâche d'importation",
"stats": {
"totalRows": "Nombre total de lignes",
"processed": "Traités",
"created": "Créés",
"updated": "Mis à jour",
"duplicates": "Doublons",
"errors": "Erreurs"
},
"sections": {
"summary": "Résumé",
"records": "Enregistrements ({{count}})",
"errors": "Erreurs ({{count}})",
"duplicates": "Doublons ({{count}})"
},
"fields": {
"source": "Source",
"originalFileName": "Nom du fichier d'origine",
"storedFileId": "Identifiant du fichier stocké",
"documentId": "Identifiant du document",
"documentAssociation": "Association du document",
"clientAssociation": "Association du client",
"associatedClient": "Client associé",
"defaultClientContext": "Contexte client par défaut",
"tenantClientFallback": "Client de secours du locataire",
"externalId": "Identifiant externe",
"status": "Statut",
"sampleValues": "Valeurs d'exemple",
"error": "Erreur",
"duplicateMatch": "Correspondance de doublon"
},
"empty": {
"noRecords": "Aucun enregistrement traité pour le moment.",
"noErrors": "Aucune erreur de validation n'a été enregistrée.",
"noDuplicates": "Aucun doublon n'a été détecté pour cette tâche.",
"noValues": "Aucune valeur"
},
"truncated": "Affichage des {{count}} premiers enregistrements. Téléchargez les résultats de la tâche pour l'historique complet."
},
"messages": {
"error": {
"loadImportData": "Échec du chargement des données d'importation",
"createPreview": "Échec de la création de l'aperçu",
"selectPreviewFirst": "Sélectionnez un aperçu à approuver avant d'importer.",
"startImportJob": "Échec du démarrage de la tâche d'importation",
"loadJobDetails": "Échec du chargement des détails de la tâche",
"refreshHistory": "Échec de l'actualisation de l'historique d'importation"
}
},
"selectJobHint": "Sélectionnez un travail d'importation pour inspecter ses résultats."
},
"email": {
"title": "Configuration des courriels",
"description": "Configurez les fournisseurs de messagerie, les domaines et les paramètres"
},
"extensions": {
"title": "Gestion des extensions",
"description": "Installez, configurez et gérez des extensions pour étendre les fonctionnalités d'Alga PSA.",
"tabs": {
"manage": "Gérer",
"install": "Installer"
},
"enterpriseOnly": {
"title": "Fonctionnalité Enterprise",
"description": "Les extensions sont disponibles dans l'édition Enterprise d'Alga PSA."
},
"links": {
"needLogs": "Besoin des journaux d'extension ?",
"debugConsole": "Ouvrir la console de débogage de démonstration du proxy de service"
},
"loading": {
"extensions": "Chargement des extensions...",
"installer": "Chargement de l'installateur..."
}
},
"security": {
"title": "Paramètres de sécurité",
"tabs": {
"roles": "Rôles",
"sessions": "Sessions",
"sso": "SSO",
"permissions": "Autorisations",
"userRoles": "Rôles des utilisateurs",
"policies": "Politiques",
"apiKeys": "Clés API"
},
"loading": {
"roles": "Chargement de la configuration des rôles...",
"permissions": "Chargement de la configuration des permissions...",
"userRoles": "Chargement de la configuration des rôles des utilisateurs...",
"policies": "Chargement de la configuration des politiques...",
"apiKeys": "Chargement de la configuration des clés API...",
"sso": "Chargement des outils de gestion SSO...",
"sessions": "Chargement des sessions actives..."
},
"userRoles": {
"title": "Attribuer des rôles aux utilisateurs",
"description": {
"msp": "Gérer les attributions de rôles pour les utilisateurs MSP",
"client": "Gérer les attributions de rôles pour les utilisateurs du portail client"
},
"viewSwitcher": {
"msp": "MSP",
"clientPortal": "Portail client"
},
"showInactive": "Afficher les utilisateurs inactifs",
"fields": {
"selectUser": "Sélectionner un utilisateur",
"selectRole": "Sélectionner un rôle"
},
"actions": {
"assignRole": "Attribuer un rôle"
},
"table": {
"user": "Utilisateur",
"email": "Courriel",
"roles": "Rôles",
"actions": "Actions"
},
"noRolesAssigned": "Aucun rôle attribué",
"removeRole": "Supprimer {{role}}",
"emptyState": {
"noUsers": "Aucun utilisateur {{type}} trouvé",
"inactiveHidden": "(utilisateurs inactifs masqués)"
},
"inactiveTag": "(Inactif)"
},
"sessions": {
"title": "Toutes les sessions utilisateur",
"filters": {
"search": "Rechercher",
"searchPlaceholder": "Rechercher par nom, courriel, appareil ou IP...",
"user": "Utilisateur",
"allUsers": "Tous les utilisateurs",
"loginMethod": "Méthode de connexion",
"allMethods": "Toutes les méthodes",
"userType": "Type d'utilisateur",
"allTypes": "Tous les types",
"from": "Du",
"to": "Au",
"selectDate": "Sélectionner une date",
"reset": "Réinitialiser"
},
"loginMethods": {
"password": "Mot de passe",
"google": "Google OAuth",
"microsoft": "Microsoft OAuth",
"keycloak": "Keycloak"
},
"userTypes": {
"internal": "Interne",
"client": "Client"
},
"session": {
"yourSession": "Votre session",
"unknownDevice": "Appareil inconnu",
"lastActive": "Dernière activité il y a {{time}}",
"logout": "Déconnexion",
"revoke": "Révoquer",
"revoking": "Révocation..."
},
"oauthWarning": "La révocation de cette session ne révoquera pas l'accès OAuth {{provider}}. Révoquez l'accès depuis les paramètres de votre compte {{provider}}.",
"confirmLogout": "Êtes-vous sûr de vouloir vous déconnecter de cet appareil ?",
"messages": {
"loggingOut": "Déconnexion en cours...",
"revoked": "Session révoquée avec succès"
},
"emptyState": {
"loading": "Chargement des sessions...",
"noMatch": "Aucune session ne correspond à votre recherche",
"noSessions": "Aucune session active trouvée"
},
"subtitle_one": "{{sessionCount}} session active pour {{userCount}} utilisateur",
"subtitle_other": "{{sessionCount}} sessions actives pour {{userCount}} utilisateurs"
}
},
"ssoBulk": {
"loading": {
"title": "SSO",
"description": "Chargement des outils d'attribution SSO en masse..."
},
"autoLink": {
"title": "Configurer automatiquement le SSO pour les nouveaux utilisateurs internes",
"description": "Activez cette option pour provisionner immédiatement chaque nouveau compte du personnel avec votre fournisseur SSO d'entreprise, afin qu'ils n'aient jamais besoin d'une connexion par mot de passe.",
"body": "Lorsque cette option est activée, les utilisateurs MSP nouvellement ajoutés peuvent se connecter avec Google ou Microsoft en utilisant leur adresse e-mail professionnelle. Ils n'auront pas à lier manuellement leur compte.",
"toggleLabel": "Activer la correspondance SSO automatique",
"disabledInfo": "Activez cette option pour permettre au personnel nouveau et existant d'éviter le flux « Connecter SSO » lorsque leur e-mail correspond déjà à un fournisseur configuré. Nous enregistrerons toujours chaque liaison automatique."
},
"bulk": {
"title": "Attribution SSO en masse",
"description": "Sélectionnez les utilisateurs internes dans la liste ci-dessous et liez-les à un fournisseur Google ou Microsoft configuré. Utilisez l'aperçu pour vérifier l'impact avant l'exécution.",
"noProviders": "Aucun fournisseur SSO n'est encore configuré. Ajoutez des identifiants OAuth pour continuer avec les attributions en masse."
},
"errors": {
"loadProviders": "Impossible de charger la configuration du fournisseur SSO.",
"updatePreferences": "Impossible de mettre à jour les préférences SSO."
},
"form": {
"title": "Choisir un fournisseur et sélectionner les utilisateurs",
"description": "Choisissez le fournisseur SSO configuré pour votre personnel, puis recherchez et sélectionnez les utilisateurs à lier.",
"providerLabel": "Fournisseur",
"notConfigured": "Non configuré",
"providerNotConfiguredAlert": "Fournissez des identifiants OAuth pour ce fournisseur avant de lier des comptes.",
"actionLabel": "Action",
"linkSelected": "Lier les utilisateurs sélectionnés",
"unlinkSelected": "Délier les utilisateurs sélectionnés",
"actionPlaceholder": "Sélectionner une action SSO en masse",
"actionDescription": "La liaison ajoute le fournisseur à chaque utilisateur sélectionné. La déliaison supprime le fournisseur afin que l'utilisateur revienne à la connexion par mot de passe/TOTP jusqu'à ce qu'il se relie.",
"searchLabel": "Rechercher des utilisateurs internes",
"searchPlaceholder": "Rechercher par e-mail ou par nom",
"noneSelected": "Aucun utilisateur sélectionné pour le moment.",
"selected_one": "{{count}} utilisateur sélectionné.",
"selected_other": "{{count}} utilisateurs sélectionnés.",
"clearSelection": "Effacer la sélection",
"loadingUsers": "Chargement des utilisateurs...",
"noMatch": "Aucun utilisateur ne correspond à cette recherche.",
"noUsers": "Aucun utilisateur interne trouvé.",
"clientPortalComing": "Les attributions en masse pour le portail client arrivent bientôt. Pour l'instant, cet outil ne s'applique qu'aux utilisateurs MSP internes.",
"loadUsersFailed": "Impossible de charger les utilisateurs assignables.",
"actions": {
"previewLink": "Aperçu de l'attribution",
"previewUnlink": "Aperçu de la déliaison",
"link": "Lier les comptes",
"unlink": "Délier les comptes",
"preparingPreview": "Préparation de l'aperçu…",
"linking": "Liaison des comptes…",
"unlinking": "Déliaison des comptes…",
"bulkLabel": "Actions SSO en masse {{location}}"
},
"table": {
"email": "Email",
"id": "ID",
"name": "Nom",
"status": "Statut",
"active": "Actif",
"inactive": "Inactif",
"linkedProviders": "Fournisseurs liés",
"unlinked": "Non lié",
"lastLogin": "Dernière connexion"
},
"toast": {
"providerRequiredTitle": "Fournisseur requis",
"providerRequiredDescription": "Sélectionnez un fournisseur configuré avant de continuer.",
"noUsersTitle": "Aucun utilisateur sélectionné",
"noUsersDescription": "Sélectionnez au moins un utilisateur dans le tableau.",
"failedTitle": "Échec de l'attribution en masse",
"failedDescription": "Impossible de traiter l'attribution SSO en masse.",
"linkCompleteTitle": "Liaison terminée",
"unlinkCompleteTitle": "Déliaison terminée",
"previewReadyTitle": "Aperçu prêt",
"linkedCount": "{{count}} comptes liés via {{provider}}.",
"unlinkedCount": "{{count}} comptes déliés via {{provider}}.",
"previewUnlink_one": "Aperçu prêt. Nous délierons {{count}} utilisateur sélectionné.",
"previewUnlink_other": "Aperçu prêt. Nous délierons {{count}} utilisateurs sélectionnés.",
"previewLink": "Aperçu prêt. Vérifiez le résumé avant de lier les comptes."
},
"results": {
"completeTitle": "Attribution terminée",
"previewTitle": "Résultats de l'aperçu",
"noneMatched": "Aucun des utilisateurs sélectionnés ne correspond aux filtres actuels.",
"processed_one": "{{count}} utilisateur traité.",
"processed_other": "{{count}} utilisateurs traités.",
"candidatesSelected": "{{count}} sélectionnés",
"unlinked": "Non liés",
"wouldUnlink": "Seraient déliés",
"linked": "Liés",
"wouldLink": "Seraient liés",
"alreadyUnlinked": "Déjà déliés",
"alreadyLinked": "Déjà liés",
"skippedInactive": "Ignorés (inactifs)"
},
"providerNames": {
"google": "Google Workspace",
"microsoft": "Microsoft 365"
}
}
},
"profile": {
"tabs": {
"profile": "Profil",
"security": "Sécurité",
"sso": "SSO",
"apiKeys": "Clés API",
"notifications": "Notifications",
"calendar": "Calendrier"
},
"basicInfo": {
"title": "Informations de base"
},
"fields": {
"firstName": {
"label": "Prénom *"
},
"lastName": {
"label": "Nom *"
},
"email": {
"label": "Courriel *"
},
"phoneNumber": {
"label": "Numéro de téléphone"
},
"timeZone": {
"label": "Fuseau horaire"
}
},
"actions": {
"saveChanges": "Enregistrer les modifications"
},
"notifications": {
"title": "Préférences de notification",
"viewSwitcher": {
"email": "Courriel",
"internal": "Interne"
}
},
"loading": "Chargement du profil...",
"messages": {
"success": {
"profileUpdated": "Profil mis à jour avec succès"
},
"error": {
"userNotFound": "Utilisateur introuvable",
"fillRequiredFields": "Veuillez remplir tous les champs obligatoires",
"saveFailed": "Échec de l'enregistrement du profil",
"emailAlreadyExists": "Un utilisateur avec cette adresse e-mail existe déjà",
"reportsToSelf": "Un utilisateur ne peut pas être son propre responsable",
"reportsToCycle": "Cela créerait une chaîne hiérarchique circulaire"
}
},
"validation": {
"firstNameRequired": "Le prénom est obligatoire",
"lastNameRequired": "Le nom est obligatoire"
},
"pageTitle": "Votre profil"
},
"password": {
"changePassword": "Modifier le mot de passe",
"fields": {
"currentPassword": "Mot de passe actuel",
"newPassword": "Nouveau mot de passe",
"confirmNewPassword": "Confirmer le nouveau mot de passe"
},
"messages": {
"success": {
"changed": "Mot de passe modifié avec succès"
},
"error": {
"mismatch": "Les nouveaux mots de passe ne correspondent pas",
"tooShort": "Le mot de passe doit contenir au moins 8 caractères",
"changeFailed": "Une erreur est survenue lors de la modification du mot de passe"
}
}
},
"integrations": {
"betaNotice": "Certaines intégrations sont encore en cours de développement. Veuillez travailler dans un environnement sandbox lors de l'évaluation et partagez vos commentaires pour nous aider à nous améliorer.",
"emptyCategory": "Aucune intégration disponible dans cette catégorie.",
"rmmEnterpriseNote": "Les intégrations RMM sont disponibles dans l'édition Enterprise.",
"categoryHeading": "Intégrations {{label}}",
"loading": {
"payments": "Chargement des paramètres de paiement..."
},
"categories": {
"accounting": {
"label": "Comptabilité",
"description": "Sélectionnez un logiciel comptable pour configurer la synchronisation des factures, paiements et données fiscales."
},
"rmm": {
"label": "RMM",
"description": "Connectez des outils de surveillance et gestion à distance"
},
"itDocumentation": {
"label": "Documentation IT",
"description": "Connectez des plateformes de documentation IT pour afficher en contexte la documentation, les actifs et les identifiants des clients."
},
"communication": {
"label": "Communication",
"description": "Connectez des surfaces de boîte de réception et de collaboration pour le traitement des tickets, les workflows des opérateurs et l'accès à Microsoft Teams."
},
"calendar": {
"label": "Calendrier",
"description": "Synchronisation de calendrier exclusive Enterprise pour Google et Outlook maintient la répartition et les rendez-vous clients alignés."
},
"providers": {
"label": "Fournisseurs",
"description": {
"ee": "Configurez les identifiants de fournisseurs partagés utilisés par l'e-mail, le calendrier, le SSO MSP et d'autres intégrations.",
"oss": "Configurez les identifiants de fournisseurs partagés utilisés par l'e-mail, le SSO MSP et d'autres intégrations."
}
},
"identity": {
"label": "Identité",
"description": "Connectez des fournisseurs d'identité pour la découverte de locataires et la synchronisation des contacts."
},
"payments": {
"label": "Paiements",
"description": "Acceptez les paiements en ligne pour les factures"
}
},
"items": {
"accountingSetup": {
"name": "Intégrations comptables",
"description": "Configurez la synchronisation et les exportations comptables"
},
"rmmSetup": {
"name": "Intégrations RMM",
"description": "Sélectionnez et configurez votre fournisseur RMM"
},
"hudu": {
"name": "Hudu",
"description": "Connectez une instance Hudu pour consulter la documentation et les identifiants des clients dans AlgaPSA."
},
"email": {
"name": "E-mail entrant",
"description": "Traitez les e-mails entrants en tickets",
"cardTitle": "Intégration d'e-mail entrant",
"cardDescription": "Configurez les fournisseurs d'e-mail pour traiter automatiquement les e-mails entrants en tickets"
},
"teams": {
"name": "Microsoft Teams",
"description": "Configurez les surfaces de collaboration Teams pour les techniciens MSP",
"upgradeDescription": "Configurez les surfaces de collaboration Microsoft Teams pour les techniciens MSP. Passez à Pro pour débloquer cette fonctionnalité."
},
"calendarSync": {
"name": "Synchronisation du calendrier",
"description": "Synchronisez les entrées de planification avec les calendriers Google ou Microsoft"
},
"google": {
"name": "Google",
"description": {
"ee": "Identifiants Google Cloud appartenant au locataire pour Gmail et Calendrier",
"oss": "Identifiants Google Cloud appartenant au locataire pour Gmail et les flux de support SSO MSP"
},
"cardTitle": "Identifiants du fournisseur",
"cardDescription": {
"ee": "Configurez d'abord Google et Microsoft, puis connectez les comptes fournisseurs depuis les écrans d'intégration d'e-mail entrant et de calendrier. La découverte de domaines SSO MSP utilise ces identifiants de fournisseur avec les mappages de domaines de connexion du locataire.",
"oss": "Configurez d'abord Google et Microsoft, puis connectez les comptes fournisseurs depuis l'écran d'intégration d'e-mail entrant. La découverte de domaines SSO MSP utilise ces identifiants de fournisseur avec les mappages de domaines de connexion du locataire."
}
},
"entra": {
"name": "Microsoft Entra",
"description": "Découvrez les locataires Microsoft gérés et synchronisez les utilisateurs vers les contacts",
"upgradeDescription": "Découvrez les locataires Microsoft Entra gérés et synchronisez les utilisateurs vers les contacts. Passez à Premium pour débloquer cette fonctionnalité."
},
"stripe": {
"name": "Stripe",
"description": "Acceptez les paiements par carte de crédit pour les factures via Stripe"
}
}
},
"orgChart": {
"emptyState": "Aucun utilisateur disponible.",
"roles": {
"client": "Utilisateur client",
"internal": "Utilisateur interne"
},
"badge": {
"inactive": "Inactif"
}
},
"permissions": {
"messages": {
"adminLocked": "Les autorisations du rôle administrateur ne peuvent pas être modifiées",
"permissionsUpdated": "Autorisations mises à jour avec succès"
}
},
"sla": {
"messages": {
"scheduleNotFound": "Planning introuvable",
"scheduleUpdated": "Planning mis à jour avec succès",
"scheduleCreated": "Planning créé avec succès",
"scheduleDeleted": "Planning supprimé avec succès",
"defaultHoursCreated": "Planning d'heures ouvrées par défaut créé",
"scheduleRequired": "Veuillez d'abord sélectionner un planning",
"holidayNameRequired": "Le nom du jour férié est requis",
"holidayDateRequired": "La date du jour férié est requise",
"holidayAdded": "Jour férié ajouté avec succès",
"holidayDeleted": "Jour férié supprimé avec succès"
}
},
"clientPortalLanguage": {
"title": "Langue du portail client",
"description": "Remplacez la langue par défaut uniquement pour les utilisateurs du portail client. Le personnel MSP conserve la langue par défaut de lorganisation.",
"fields": {
"defaultLanguage": "Langue par défaut"
},
"help": {
"defaultLanguage": "Lorsqu'elle est définie, les utilisateurs du portail client voient cette langue, sauf si leur préférence individuelle ou celle configurée pour leur client la remplace."
},
"placeholder": "Sélectionnez une langue",
"inheritOption": "Utiliser la valeur par défaut de l'organisation ({{language}})",
"unsetHint": "Pour supprimer le remplacement du portail client, modifiez la valeur par défaut de l'organisation dans Paramètres → Langue.",
"updated": "Langue par défaut du portail client mise à jour sur {{language}}"
},
"language": {
"selectLanguage": "Sélectionner une langue",
"languagesUpdated": "Langues disponibles mises à jour"
},
"settings": {
"assetTypes": {
"tab": "Actifs",
"title": "Types d'actifs",
"description": "Gérez les types d'actifs disponibles dans votre module d'actifs. Les types personnalisés portent un schéma de champs qui pilote leurs formulaires de création/modification.",
"loading": "Chargement des types d'actifs...",
"table": {
"name": "Nom",
"builtin": "Intégré",
"slug": "Identifiant",
"fieldCount": "Champs",
"order": "Ordre",
"actions": "Actions",
"openMenu": "Ouvrir le menu"
},
"actions": {
"addType": "Ajouter un type d'actif",
"edit": "Modifier",
"delete": "Supprimer",
"cancel": "Annuler",
"save": "Enregistrer",
"create": "Créer",
"confirmDelete": "Supprimer"
},
"dialog": {
"createTitle": "Ajouter un type d'actif",
"editTitle": "Modifier le type d'actif",
"nameLabel": "Nom",
"namePlaceholder": "p. ex. Pare-feu",
"displayOrderLabel": "Ordre d'affichage",
"iconLabel": "Icône",
"builtinSchemaHint": "Les types intégrés utilisent des formulaires fixes gérés par AlgaPSA ; leur schéma de champs ne peut donc pas être modifié. Vous pouvez toujours renommer le type ou changer son icône."
},
"deleteDialog": {
"title": "Supprimer le type d'actif",
"message": "Cela supprime définitivement \"{{name}}\" du registre des types d'actifs."
},
"messages": {
"created": "Type d'actif créé",
"updated": "Type d'actif mis à jour",
"deleted": "Type d'actif supprimé"
},
"errors": {
"fetchFailed": "Échec du chargement des types d'actifs.",
"saveFailed": "Échec de l'enregistrement du type d'actif.",
"deleteFailed": "Échec de la suppression du type d'actif.",
"invalidName": "Saisissez un nom pour ce type d'actif.",
"invalidSchema": "Le schéma de champs est invalide. Corrigez les champs mis en évidence et réessayez.",
"reservedSlug": "L'identifiant \"{{slug}}\" est réservé à un type intégré. Choisissez un autre nom.",
"slugConflict": "Un type d'actif avec l'identifiant \"{{slug}}\" existe déjà.",
"notFound": "Ce type d'actif n'existe plus.",
"builtinImmutable": "Les types intégrés ne permettent de modifier que le nom et l'icône.",
"builtinUndeletable": "Les types intégrés ne peuvent pas être supprimés.",
"inUse": "Ce type est encore utilisé par {{assetCount}} actif(s). Réaffectez ces actifs avant de le supprimer.",
"unknown": "Une erreur s'est produite."
},
"editor": {
"title": "Champs",
"empty": "Aucun champ pour l'instant. Ajoutez des champs pour construire le formulaire de création/modification de ce type.",
"addField": "Ajouter un champ",
"fieldLabel": "Libellé",
"fieldLabelPlaceholder": "p. ex. Numéro de série",
"fieldKey": "Clé",
"fieldKeyPlaceholder": "p. ex. serial_number",
"fieldKind": "Type",
"fieldRequired": "Obligatoire",
"fieldOptions": "Options (séparées par des virgules)",
"fieldOptionsPlaceholder": "p. ex. Or, Argent, Bronze",
"moveUp": "Déplacer le champ vers le haut",
"moveDown": "Déplacer le champ vers le bas",
"removeField": "Supprimer le champ",
"kinds": {
"text": "Texte",
"number": "Nombre",
"date": "Date",
"select": "Sélection",
"url": "URL",
"boolean": "Oui / Non"
},
"errors": {
"invalidKey": "La clé doit commencer par une lettre minuscule et ne contenir que des lettres minuscules, des chiffres et des tirets bas.",
"duplicateKey": "Chaque clé de champ doit être unique.",
"missingLabel": "Le libellé est obligatoire.",
"invalidKind": "Choisissez un type de champ valide.",
"invalidRequired": "\"Obligatoire\" doit être activé ou désactivé.",
"missingOptions": "Les champs de sélection nécessitent au moins une option.",
"invalidOptions": "Les options ne peuvent pas être vides.",
"invalidField": "Ce champ est invalide."
}
}
}
}
}