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
Excluded: .git, node_modules, secrets/, compose.env, assemblyscript tgz Source: /opt/alga-psa on psa.joliet.tech
1505 lines
76 KiB
JSON
1505 lines
76 KiB
JSON
{
|
||
"title": "Projets",
|
||
"subtitle": "Aperçu de vos projets actuels et passés",
|
||
"searchPlaceholder": "Rechercher des projets...",
|
||
"allStatuses": "Tous les statuts",
|
||
"resetFilters": "Réinitialiser",
|
||
"active": "Projets actifs",
|
||
"completed": "Projets terminés",
|
||
"onHold": "En pause",
|
||
"timeline": "Chronologie",
|
||
"milestones": "Jalons",
|
||
"phasesAndTasks": "Phases et Tâches",
|
||
"kanbanView": "Kanban",
|
||
"listView": "Liste",
|
||
"task": "tâche",
|
||
"tasks": {
|
||
"title": "Tâches",
|
||
"noTasks": "Aucune tâche à afficher",
|
||
"taskName": "Nom",
|
||
"dueDate": "Date d'échéance",
|
||
"status": "Statut",
|
||
"assignedTo": "Assigné à",
|
||
"assignee": "Responsable",
|
||
"estimatedHours": "Heures estimées",
|
||
"estHours": "Heures est.",
|
||
"hoursLogged": "Heures enregistrées",
|
||
"checklist": "Liste de contrôle",
|
||
"dependencies": "Dép.",
|
||
"priority": "Priorité",
|
||
"services": "Services",
|
||
"attachments": "Pièces jointes",
|
||
"actualHours": "Heures réelles",
|
||
"createdAt": "Créé le",
|
||
"updatedAt": "Mis à jour le",
|
||
"assignedTeam": "Équipe assignée",
|
||
"phase": "Phase",
|
||
"priorityLevel": "Niveau de priorité",
|
||
"seeLess": "Voir moins",
|
||
"seeMore": "Voir plus",
|
||
"checklistItems": "Éléments de la liste",
|
||
"of": "sur",
|
||
"complete": "terminé",
|
||
"additionalAgents": "Agents supplémentaires",
|
||
"unassigned": "Non attribué"
|
||
},
|
||
"phases": {
|
||
"title": "Phases du projet",
|
||
"completion": "Terminé",
|
||
"noPhases": "Aucune phase à afficher",
|
||
"statusColumns": "Colonnes de statut",
|
||
"statusColumnsProjectDefaults": "Valeurs par défaut du projet",
|
||
"statusColumnsCustom": "Personnalisé ({{count}} statuts)",
|
||
"configureStatuses": "Configurer",
|
||
"phaseName": "Nom de la phase",
|
||
"phaseDescription": "Description de la phase",
|
||
"descriptionPlaceholder": "Description",
|
||
"startDate": "Date de début",
|
||
"startDatePlaceholder": "Date de début",
|
||
"endDate": "Date de fin",
|
||
"endDatePlaceholder": "Date de fin",
|
||
"cancelEditing": "Annuler la modification",
|
||
"saveChanges": "Enregistrer les modifications",
|
||
"editPhase": "Modifier la phase",
|
||
"deletePhase": "Supprimer la phase",
|
||
"cancel": "Annuler",
|
||
"save": "Enregistrer",
|
||
"taskCount_other": "{{count}} tâches",
|
||
"startLabel": "Début",
|
||
"dueLabel": "Échéance",
|
||
"notSet": "Non défini",
|
||
"taskCount_one": "{{count}} tâche"
|
||
},
|
||
"projectList": {
|
||
"addProject": "Ajouter un projet",
|
||
"createFromTemplate": "Créer depuis un modèle",
|
||
"openMenu": "Ouvrir le menu",
|
||
"searchPlaceholder": "Rechercher des projets, tâches et commentaires",
|
||
"statusPlaceholder": "Sélectionner un statut",
|
||
"contactPlaceholder": "Filtrer par contact",
|
||
"managerPlaceholder": "Tous les responsables",
|
||
"deadlinePlaceholder": "Filtrer par échéance",
|
||
"deletedSuccess": "Projet supprimé avec succès",
|
||
"deleteValidationFailed": "Échec de la validation de la suppression. Veuillez réessayer.",
|
||
"deleteFailed": "Échec de la suppression du projet.",
|
||
"statusUnknown": "Inconnu",
|
||
"notAvailable": "S/O",
|
||
"noClient": "Aucun client",
|
||
"noContact": "Aucun contact",
|
||
"unassigned": "Non attribué",
|
||
"thisProject": "ce projet",
|
||
"statusOptions": {
|
||
"all": "Tous les projets",
|
||
"active": "Projets actifs",
|
||
"inactive": "Projets inactifs"
|
||
},
|
||
"columns": {
|
||
"number": "Nombre",
|
||
"projectName": "Nom du projet",
|
||
"client": "Client",
|
||
"contact": "Contact",
|
||
"status": "Statut",
|
||
"deadline": "Échéance",
|
||
"created": "Créé",
|
||
"projectManager": "Chef de projet",
|
||
"tags": "Étiquettes",
|
||
"priority": "Priorité",
|
||
"taskType": "Type",
|
||
"actions": "Actions"
|
||
},
|
||
"unknownUser": "Inconnu"
|
||
},
|
||
"quickAdd": {
|
||
"title": "Ajouter un projet",
|
||
"projectNamePlaceholder": "Nom du projet *",
|
||
"descriptionPlaceholder": "Description",
|
||
"statusLabel": "Statut *",
|
||
"statusPlaceholder": "Sélectionner un statut",
|
||
"clientLabel": "Client *",
|
||
"contactLabel": "Contact",
|
||
"contactPlaceholder": "Sélectionner un contact",
|
||
"projectManagerLabel": "Chef de projet",
|
||
"projectManagerPlaceholder": "Sélectionner un responsable",
|
||
"budgetedHoursLabel": "Heures budgétées",
|
||
"budgetedHoursPlaceholder": "Saisir les heures budgétées",
|
||
"startDateLabel": "Date de début",
|
||
"startDatePlaceholder": "Sélectionner une date de début",
|
||
"endDateLabel": "Date de fin",
|
||
"endDatePlaceholder": "Sélectionner une date de fin",
|
||
"clientPortalVisibility": "Visibilité sur le portail client",
|
||
"validationTitle": "Veuillez corriger les erreurs suivantes :",
|
||
"projectNameRequired": "Le nom du projet est requis",
|
||
"clientRequired": "Le client est requis",
|
||
"projectStatusRequired": "Le statut du projet est requis",
|
||
"taskStatusRequired": "Au moins un statut de tâche doit être sélectionné",
|
||
"creating": "Création...",
|
||
"create": "Créer le projet",
|
||
"createdSuccess": "Projet créé avec succès",
|
||
"tagCreatePartialError": "{{count}} étiquette(s) n’ont pas pu être créées",
|
||
"createError": "Échec de la création du projet. Veuillez réessayer."
|
||
},
|
||
"projectEdit": {
|
||
"projectNameLabel": "Nom du projet *",
|
||
"projectNamePlaceholder": "Saisir le nom du projet...",
|
||
"descriptionPlaceholder": "Saisir la description du projet...",
|
||
"statusLabel": "Statut *",
|
||
"statusPlaceholder": "Sélectionner un statut",
|
||
"contactLabel": "Contact",
|
||
"contactPlaceholder": "Sélectionner un contact",
|
||
"budgetedHoursLabel": "Heures budgétées",
|
||
"budgetedHoursPlaceholder": "Saisir les heures budgétées",
|
||
"tagsLabel": "Étiquettes",
|
||
"startDatePlaceholder": "Sélectionner une date de début",
|
||
"endDatePlaceholder": "Sélectionner une date de fin",
|
||
"clientPortalVisibility": "Visibilité sur le portail client",
|
||
"validationTitle": "Veuillez renseigner les champs obligatoires :",
|
||
"updatedSuccess": "Projet mis à jour avec succès",
|
||
"updateError": "Échec de la mise à jour du projet",
|
||
"unsavedTitle": "Modifications non enregistrées",
|
||
"unsavedMessage": "Vous avez des modifications non enregistrées. Voulez-vous vraiment annuler ?",
|
||
"saveTitle": "Enregistrer les modifications",
|
||
"saveMessage": "Voulez-vous enregistrer vos modifications et fermer le panneau ?",
|
||
"continueEditing": "Continuer la modification",
|
||
"discardChanges": "Ignorer les modifications",
|
||
"saveAndClose": "Enregistrer et fermer",
|
||
"saving": "Enregistrement..."
|
||
},
|
||
"projectDetail": {
|
||
"allAgents": "Tous les agents",
|
||
"primaryAssigneeOnly": "Afficher uniquement les tâches où l’agent sélectionné est l’assigné principal",
|
||
"taskType": "Type de tâche",
|
||
"priority": "Priorité",
|
||
"searchTasksPlaceholder": "Rechercher des tâches...",
|
||
"caseSensitive": "Sensible à la casse",
|
||
"wholeWord": "Mot entier",
|
||
"wholeWordShort": "Word",
|
||
"clearSearch": "Effacer la recherche",
|
||
"taskList": "Liste des tâches",
|
||
"kanbanBoard": "Tableau Kanban",
|
||
"kanbanBoardWithPhase": "Tableau Kanban : {{phaseName}}",
|
||
"selectPhaseToViewKanban": "Veuillez sélectionner ou créer une phase pour afficher le tableau Kanban.",
|
||
"selectPhaseToAddCard": "Veuillez sélectionner une phase avant d’ajouter une carte.",
|
||
"selectPhaseToAddTask": "Veuillez sélectionner une phase avant d’ajouter une tâche.",
|
||
"showPhasesPanel": "Afficher le volet des phases",
|
||
"hidePhasesPanel": "Masquer le volet des phases",
|
||
"phaseHelp": "Une phase est une étape distincte ou un jalon dans le calendrier de votre projet. Chaque phase peut contenir plusieurs tâches et permet d'organiser le travail en sections gérables.",
|
||
"phaseNameRequired": "Le nom de la phase ne peut pas être vide",
|
||
"phaseAddedSuccess": "Nouvelle phase ajoutée avec succès !",
|
||
"phaseUpdatedSuccess": "Phase mise à jour avec succès !",
|
||
"phaseDeletedSuccess": "Phase supprimée avec succès !",
|
||
"phaseReorderedSuccess": "Phase réordonnée avec succès",
|
||
"taskAddedSuccess": "Nouvelle tâche ajoutée avec succès !",
|
||
"taskPhaseMismatch": "Erreur lors de l'ajout d'une nouvelle tâche : incohérence de phase",
|
||
"taskDeletedGeneric": "Tâche supprimée avec succès !",
|
||
"taskDeletedSuccess": "Tâche \"{{taskName}}\" supprimée avec succès !",
|
||
"taskMovedSuccess": "Tâche \"{{taskName}}\" déplacée avec succès !",
|
||
"taskMovedCrossPhaseSuccess": "Tâche \"{{taskName}}\" déplacée vers une autre phase avec succès ! Passez à la phase cible pour la voir.",
|
||
"taskMovedToPhase": "Tâche déplacée vers {{phaseName}}",
|
||
"taskStatusUpdated": "Statut de la tâche mis à jour",
|
||
"taskMovedToNewPhase": "Tâche déplacée vers une nouvelle phase",
|
||
"taskMovedToNewStatus": "Tâche déplacée vers un nouveau statut",
|
||
"taskReordered": "Tâche réordonnée",
|
||
"tasksReorderedSuccess": "Tâches réordonnées avec succès",
|
||
"commentCountsLoadError": "Échec du chargement du nombre de commentaires",
|
||
"taskAssigneeUpdatedSuccess": "Assigné de la tâche mis à jour avec succès !",
|
||
"teamAssignedSuccess": "Équipe assignée avec succès",
|
||
"assignTeamFailed": "Échec de l’assignation de l’équipe",
|
||
"taskDuplicatedSuccess": "Tâche \"{{taskName}}\" dupliquée avec succès !",
|
||
"duplicateNoTargetPhase": "Impossible de trouver une phase cible pour la duplication.",
|
||
"taskNotFound": "Tâche introuvable",
|
||
"taskPhaseNotFound": "Phase de la tâche introuvable",
|
||
"allTypes": "Tous les types",
|
||
"primaryShort": "Principal",
|
||
"deletePhaseTitle": "Supprimer la phase",
|
||
"deletePhaseMessage": "Êtes-vous sûr de vouloir supprimer la phase « {{phaseName}} » ? Toutes les tâches et leurs listes de cette phase seront également supprimées.",
|
||
"deleteTaskTitle": "Supprimer la tâche",
|
||
"deleteTaskMessage": "Êtes-vous sûr de vouloir supprimer la tâche « {{taskName}} » ? Cette action est irréversible.",
|
||
"moveTaskTitle": "Déplacer la tâche",
|
||
"confirmMoveTaskMessage": "Êtes-vous sûr de vouloir déplacer la tâche « {{taskName}} » de la phase « {{sourcePhase}} » vers « {{targetPhase}} » ?",
|
||
"moveTaskFailed": "Échec du déplacement de la tâche. Veuillez réessayer.",
|
||
"loading": "Chargement...",
|
||
"loadingListView": "Chargement de la vue liste...",
|
||
"importSuccess": "{{phases}} phases et {{tasks}} tâches importées",
|
||
"importFailed": "Échec de l'import : {{error}}",
|
||
"completionSummary": "{{completed}} / {{total}} terminées",
|
||
"selectedPhaseCompletionHelp": "Affiche le pourcentage de tâches terminées uniquement pour la phase sélectionnée « {{phaseName}} »",
|
||
"showStickyStatusNames": "Afficher les noms de statut figés",
|
||
"hideStickyStatusNames": "Masquer les noms de statut figés",
|
||
"pinHeader": "Épingler l’en-tête en haut",
|
||
"unpinHeader": "Désépingler l’en-tête",
|
||
"showHideColumns": "Afficher/masquer les colonnes",
|
||
"columns": "Colonnes",
|
||
"showAll": "Tout afficher",
|
||
"noColumns": "Aucune colonne disponible",
|
||
"allColumnsHidden": "Toutes les colonnes sont masquées",
|
||
"allColumnsHiddenHint": "Affichez une ou plusieurs colonnes pour voir vos tâches.",
|
||
"showAllColumns": "Afficher toutes les colonnes",
|
||
"hideColumn": "Masquer la colonne",
|
||
"showColumn": "Afficher la colonne",
|
||
"addTask": "Ajouter une tâche",
|
||
"taskUpdatedSuccess": "Tâche mise à jour avec succès !",
|
||
"hiddenColumnsAlert": "{{count}} colonnes masquées par manque de place. Redimensionnez le navigateur pour en voir plus.",
|
||
"listViewEmptyMessage": "Créez des phases et ajoutez des tâches pour les voir ici",
|
||
"seeMore": "Voir plus",
|
||
"seeLess": "Voir moins",
|
||
"checklistItems": "Éléments de la liste :",
|
||
"checklistSummary": "{{completed}} sur {{total}} terminés",
|
||
"unknownUser": "Inconnu",
|
||
"blocksLabel": "Blocs :",
|
||
"taskCardAria": "Tâche : {{taskName}}. Glissez pour réorganiser ou utilisez le menu pour les actions.",
|
||
"taskActions": "Actions de tâche",
|
||
"priorityLevel": "Niveau de priorité : {{priority}}",
|
||
"dueLabel": "Échéance",
|
||
"noDueDate": "Pas d'échéance",
|
||
"hideTags": "Masquer les étiquettes",
|
||
"criticalPath": "Chemin critique",
|
||
"selectTaskAria": "Sélectionner la tâche {{taskName}}",
|
||
"bulkMoveSuccess": "{{count}} tâche(s) déplacée(s) avec succès !",
|
||
"bulkMovePartial": "{{moved}} tâche(s) déplacée(s), {{failed}} en échec.",
|
||
"bulkDeleteSuccess": "{{count}} tâche(s) supprimée(s) avec succès !",
|
||
"bulkDeletePartial": "{{deleted}} tâche(s) supprimée(s), {{failed}} en échec.",
|
||
"bulkAssignSuccess": "{{count}} tâche(s) affectée(s) avec succès !",
|
||
"bulkAssignPartial": "{{success}} tâche(s) affectée(s), {{failed}} en échec.",
|
||
"bulkAssignTeamSuccess": "{{count}} tâche(s) affectée(s) à une équipe avec succès !",
|
||
"bulkAssignTeamPartial": "{{success}} tâche(s) affectée(s) à l’équipe, {{failed}} en échec.",
|
||
"bulkDeleteTitle": "Supprimer les tâches",
|
||
"bulkDeleteMessage": "Voulez-vous vraiment supprimer {{count}} tâche(s) sélectionnée(s) ? Cette action est irréversible.",
|
||
"bulkTasksMovedSuccess": "{{count}} tâches déplacées",
|
||
"bulkTasksMovedToPhase": "{{count}} tâches déplacées vers {{phaseName}}",
|
||
"moveTasksTitle": "Déplacer les tâches",
|
||
"confirmMoveTasksMessage": "Voulez-vous vraiment déplacer {{count}} tâches sélectionnées vers la phase « {{targetPhase}} » ?",
|
||
"bulkTagsSuccess_one": "Étiquettes ajoutées à {{count}} tâche",
|
||
"bulkTagsSuccess_other": "Étiquettes ajoutées à {{count}} tâches",
|
||
"bulkTagsPartial": "Impossible d'ajouter des étiquettes à certaines tâches",
|
||
"bulkTagsFailure": "Échec de l'ajout d'étiquettes aux tâches sélectionnées"
|
||
},
|
||
"taskForm": {
|
||
"addTitle": "Ajouter une tâche",
|
||
"editTitle": "Modifier la tâche",
|
||
"taskNameLabel": "Nom de la tâche *",
|
||
"taskNameRequired": "Nom de la tâche",
|
||
"taskNamePlaceholder": "Saisir le nom de la tâche...",
|
||
"descriptionLabel": "Description",
|
||
"descriptionPlaceholder": "Ajouter une description de tâche...",
|
||
"dueDateLabel": "Date d'échéance",
|
||
"taskDueDateLabel": "Date d’échéance de la tâche",
|
||
"dueDatePlaceholder": "Sélectionner une date d’échéance",
|
||
"serviceLabel": "Service (pour les saisies de temps)",
|
||
"noService": "Aucun service",
|
||
"servicePlaceholder": "Sélectionner un service pour le préremplissage des temps...",
|
||
"serviceHelp": "Si défini, ce service sera automatiquement sélectionné lors de la création d’une saisie de temps à partir de cette tâche.",
|
||
"taskTypeLabel": "Type de tâche",
|
||
"priorityLabel": "Priorité",
|
||
"selectPriorityPlaceholder": "Sélectionner une priorité",
|
||
"estimatedHoursLabel": "Heures estimées",
|
||
"actualHoursLabel": "Heures réelles",
|
||
"assignedToLabel": "Assigné à",
|
||
"additionalAgentsLabel": "Agents supplémentaires",
|
||
"addTeamMembers": "Ajouter des membres d'équipe",
|
||
"additionalAgentsPlaceholder": "Sélectionner des agents supplémentaires...",
|
||
"createdAtLabel": "Créé le",
|
||
"moveToLabel": "Déplacer vers",
|
||
"moveToPlaceholder": "Sélectionner une destination...",
|
||
"duplicateToLabel": "Dupliquer vers",
|
||
"duplicateToPlaceholder": "Sélectionner une destination de duplication...",
|
||
"loading": "Chargement…",
|
||
"noValidProjects": "Aucun projet disponible avec des phases et statuts valides",
|
||
"loadProjectDataFailed": "Erreur lors du chargement des données du projet. Veuillez réessayer.",
|
||
"validationTitle": "Veuillez renseigner les champs obligatoires :",
|
||
"agentAddedSuccess": "Agent ajouté avec succès",
|
||
"agentPendingSave": "L’agent sera ajouté lors de l’enregistrement de la tâche",
|
||
"teamAssignedSuccess": "Équipe assignée avec succès",
|
||
"assignTeamFailed": "Échec de l’assignation de l’équipe",
|
||
"teamRemovedSuccess": "Équipe supprimée avec succès",
|
||
"teamRemoveFailed": "Échec de la suppression de l'attribution de l'équipe",
|
||
"removeTeamAssignment": "Supprimer l'affectation de l'équipe",
|
||
"switchTeamAssignment": "Changer d'affectation d'équipe",
|
||
"removeTeamMode": {
|
||
"removeAll": "Supprimer tous les membres de l'équipe",
|
||
"keepAll": "Gardez tous les membres de l’équipe en tant qu’agents individuels",
|
||
"selective": "Sélectionnez des membres individuels à conserver/supprimer",
|
||
"selectiveHint": "Cochez les membres à conserver sur la tâche en tant qu’agents individuels. Les membres non cochés seront supprimés."
|
||
},
|
||
"noTeamMembersFound": "Aucun membre de l'équipe trouvé sur cette tâche.",
|
||
"unnamedUser": "Utilisateur anonyme",
|
||
"linkingPartialFailure": "Tâche créée mais échec de la liaison de certains éléments",
|
||
"tagCreationPartialFailure": "Impossible de créer {{count}} étiquette(s)",
|
||
"saveFailed": "Échec de l'enregistrement de la tâche",
|
||
"deleteFailed": "Échec de la suppression de la tâche",
|
||
"moveFailed": "Échec du déplacement de la tâche",
|
||
"prepareTimeEntryFailed": "Échec de la préparation de la saisie de temps. Veuillez réessayer.",
|
||
"addAgentFailed": "Échec de l'ajout de l'agent",
|
||
"removeAgentFailed": "Échec de la suppression de l'agent",
|
||
"duplicateFailed": "Échec de la duplication de la tâche.",
|
||
"saveBeforeTimeEntry": "Veuillez enregistrer la tâche avant d’ajouter des temps",
|
||
"addTimeEntry": "Ajouter une saisie de temps",
|
||
"primaryAgentRequired": "Un agent principal est requis lorsque des agents supplémentaires sont assignés",
|
||
"keepCreatedTicketsTitle": "Conserver les tickets créés ?",
|
||
"keepCreatedTicketsMessage": "Souhaitez-vous conserver ces tickets ou les supprimer ?",
|
||
"createdTicketsIntro_one": "Vous avez créé {{count}} ticket pendant cette session :",
|
||
"createdTicketsIntro_other": "Vous avez créé {{count}} tickets pendant cette session :",
|
||
"keepUploadedDocumentsTitle": "Conserver les documents téléversés ?",
|
||
"keepUploadedDocumentsMessage": "Souhaitez-vous conserver ces documents dans la section Documents ou les supprimer ?",
|
||
"documentsCleanupIntro_one": "Vous avez {{count}} document qui a été {{cleanupType}} :",
|
||
"documentsCleanupIntro_other": "Vous avez {{count}} documents qui ont été {{cleanupType}} :",
|
||
"uploadedOrCreated": "téléversé(s) ou créé(s)",
|
||
"createdOnly": "créé(s)",
|
||
"uploadedOnly": "téléversé(s)",
|
||
"createdDocumentTag": "créé",
|
||
"uploadedDocumentTag": "téléversé",
|
||
"andMore": "…et {{count}} de plus",
|
||
"documentCleanupFailure_one": "{{count}} document n’a pas pu être supprimé et restera dans Documents",
|
||
"documentCleanupFailure_other": "{{count}} documents n’ont pas pu être supprimés et resteront dans Documents",
|
||
"ticketCleanupFailure_one": "{{count}} ticket n’a pas pu être supprimé",
|
||
"ticketCleanupFailure_other": "{{count}} tickets n’ont pas pu être supprimés",
|
||
"checklistItemPlaceholder": "Élément de checklist",
|
||
"reorderChecklistItem": "Glisser pour réorganiser",
|
||
"insertChecklistItem": "Insérer un élément ici",
|
||
"editChecklistItem": "Modifier l’élément",
|
||
"removeChecklistItem": "Supprimer l’élément",
|
||
"tagsTitle": "Étiquettes",
|
||
"checklistTitle": "Liste de contrôle",
|
||
"createFromTicket": "Créer depuis un ticket",
|
||
"deletingTitle": "Supprimer la tâche",
|
||
"deleteMessage": "Êtes-vous sûr de vouloir supprimer la tâche « {{taskName}} » ? Cette action est irréversible.",
|
||
"movingTitle": "Déplacer la tâche",
|
||
"move": "Déplacer",
|
||
"moveMessage": "Êtes-vous sûr de vouloir déplacer la tâche « {{taskName}} » vers la phase « {{phaseName}} » ?",
|
||
"cancelCreateTitle": "Annuler la création de la tâche",
|
||
"cancelEditTitle": "Annuler la modification",
|
||
"cancelMessage": "Êtes-vous sûr de vouloir annuler ? Les modifications non enregistrées seront perdues.",
|
||
"unsavedTitle": "Modifications non enregistrées",
|
||
"dependencyUnsavedMessage": "Vous avez sélectionné une dépendance mais ne l'avez pas encore ajoutée. Cliquez sur le bouton violet + pour l'ajouter ou annulez la sélection et enregistrez.",
|
||
"discardChanges": "Ignorer les modifications",
|
||
"continueEditing": "Continuer l'édition",
|
||
"deleteDocumentsLabel": "Supprimer les documents",
|
||
"keepDocumentsLabel": "Conserver les documents",
|
||
"deleteTicketsLabel": "Supprimer les tickets",
|
||
"keepTicketsLabel": "Conserver les tickets",
|
||
"deleting": "Suppression…",
|
||
"save": "Enregistrer",
|
||
"update": "Mettre à jour",
|
||
"adding": "Ajout...",
|
||
"updating": "Mise à jour...",
|
||
"deletedSuccess": "Tâche supprimée avec succès",
|
||
"movedSuccess": "Tâche déplacée avec succès",
|
||
"duplicatedSuccess": "Tâche \"{{taskName}}\" dupliquée avec succès !",
|
||
"willBeSetOnCreate": "Sera défini à la création",
|
||
"unknownPhase": "Phase inconnue"
|
||
},
|
||
"taskDependencies": {
|
||
"title": "Dépendances",
|
||
"dependsOn": "Dépend de :",
|
||
"blocks": "Bloque",
|
||
"blockedBy": "Bloquée par",
|
||
"relatedTo": "Liée à",
|
||
"unknownTask": "Tâche inconnue",
|
||
"noOtherTasks": "Aucune autre tâche disponible pour les dépendances",
|
||
"selectTaskPlaceholder": "Sélectionner une tâche...",
|
||
"selectNewTaskPlaceholder": "Sélectionner une nouvelle tâche...",
|
||
"cancelEdit": "Annuler la modification",
|
||
"editDependency": "Modifier la dépendance",
|
||
"removeDependency": "Supprimer la dépendance",
|
||
"addError": "Échec de l’ajout de la dépendance",
|
||
"removeError": "Échec de la suppression de la dépendance",
|
||
"updateError": "Échec de la mise à jour de la dépendance"
|
||
},
|
||
"taskDocuments": {
|
||
"attachmentsTitle": "Pièces jointes",
|
||
"createNew": "Créer un nouveau document",
|
||
"linkExisting": "Lier un document existant",
|
||
"newButton": "Nouveau",
|
||
"uploadButton": "Téléverser",
|
||
"linkButton": "Lien",
|
||
"remove": "Supprimer",
|
||
"unsavedTitle": "Modifications non enregistrées",
|
||
"unsavedMessage": "Êtes-vous sûr de vouloir annuler ? Les modifications non enregistrées seront perdues.",
|
||
"discardChanges": "Ignorer les modifications",
|
||
"continueEditing": "Continuer l'édition",
|
||
"uploadFile": "Téléverser un fichier",
|
||
"documentNamePlaceholder": "Nom du document",
|
||
"fileAttachment": "Ceci est une pièce jointe",
|
||
"noDocumentsAttached": "Aucun document joint",
|
||
"loginToCreateError": "Veuillez vous connecter pour créer des documents",
|
||
"documentNameRequired": "Le nom du document est requis",
|
||
"loginToSaveError": "Veuillez vous connecter pour enregistrer les documents",
|
||
"createdSuccess": "Document créé avec succès",
|
||
"updatedSuccess": "Document mis à jour avec succès",
|
||
"loginToUploadError": "Veuillez vous connecter pour téléverser des documents",
|
||
"uploadedSuccess": "Document téléversé avec succès",
|
||
"removedSuccess": "Document supprimé",
|
||
"removedFromTaskSuccess": "Document retiré de la tâche",
|
||
"loadFailed": "Échec du chargement des documents",
|
||
"loadContentFailed": "Échec du chargement du contenu du document",
|
||
"createFailed": "Échec de la création du document",
|
||
"saveFailed": "Échec de l'enregistrement du document",
|
||
"removeFailed": "Échec de la suppression du document",
|
||
"downloadFailed": "Échec du téléchargement du document",
|
||
"downloadFailedGeneric": "Échec du téléchargement",
|
||
"exportPdfFailed": "Échec de l'export PDF",
|
||
"documentFallbackName": "document",
|
||
"downloadFallbackName": "télécharger",
|
||
"newDocumentTitle": "Nouveau document",
|
||
"editDocumentTitle": "Modifier le document",
|
||
"viewDocumentTitle": "Afficher le document",
|
||
"pdfLabel": "PDF",
|
||
"save": "Enregistrer",
|
||
"saving": "Enregistrement...",
|
||
"downloadFile": "Télécharger le fichier",
|
||
"selectFolderTitle": "Sélectionner le dossier pour le nouveau document",
|
||
"selectFolderDescription": "Choisissez où enregistrer ce nouveau document"
|
||
},
|
||
"taskTicketLinks": {
|
||
"restrictedTooltip": "Détails limités — vous n'êtes pas assigné à ce ticket",
|
||
"title": "Tickets associés",
|
||
"linkExistingTitle": "Lier un ticket existant",
|
||
"createTicket": "Créer un ticket",
|
||
"linkTicket": "Lier le ticket",
|
||
"selectTicket": "Sélectionner un ticket",
|
||
"selectTicketPlaceholder": "Sélectionner un ticket",
|
||
"searchTicketsPlaceholder": "Rechercher des tickets...",
|
||
"categoryPlaceholder": "Catégorie",
|
||
"assignedToLabel": "Attribué à",
|
||
"boardLabel": "Tableau",
|
||
"statusLabel": "Statut",
|
||
"priorityLabel": "Priorité",
|
||
"allStatuses": "Tous les statuts",
|
||
"allPriorities": "Toutes les priorités",
|
||
"allPhases": "Toutes les phases",
|
||
"searchFilterLabel": "Recherche : {{value}}",
|
||
"categoriesFilterLabel": "Catégories : {{count}}",
|
||
"assignedFilterLabel": "Attribué : {{name}}",
|
||
"boardFilterLabel": "Tableau : {{name}}",
|
||
"priorityFilterLabel": "Priorité : {{label}}",
|
||
"statusFilterLabel": "Statut : {{label}}",
|
||
"linkToTaskLabel": "Lier ce ticket à la tâche",
|
||
"duplicateError": "Ce ticket est déjà lié à cette tâche",
|
||
"linkedSuccess": "Ticket lié avec succès",
|
||
"linkFailed": "Échec de la liaison du ticket",
|
||
"removedSuccess": "Lien du ticket supprimé",
|
||
"removeFailed": "Échec de la suppression du lien du ticket",
|
||
"invalidTicketId": "ID de ticket invalide",
|
||
"createdAndLinkedSuccess": "Ticket créé et lié avec succès",
|
||
"createdSuccess": "Ticket créé avec succès",
|
||
"linkNewFailed": "Échec de la liaison du nouveau ticket",
|
||
"linkedToTaskSuccess": "Ticket lié à la tâche avec succès",
|
||
"failedLoadTask": "Échec du chargement de la tâche",
|
||
"clientFallback": "Client",
|
||
"defaultNewStatus": "Nouveau"
|
||
},
|
||
"materials": {
|
||
"title": "Matériaux du projet",
|
||
"product": "Produit",
|
||
"selectProductPlaceholder": "Sélectionner un produit...",
|
||
"searchProductsPlaceholder": "Rechercher des produits…",
|
||
"noProductsFound": "Aucun produit trouvé",
|
||
"price": "Prix",
|
||
"selectCurrencyPlaceholder": "Sélectionner une devise...",
|
||
"quantity": "Quantité",
|
||
"total": "Total",
|
||
"descriptionOptional": "Description (facultative)",
|
||
"notesPlaceholder": "Notes supplémentaires...",
|
||
"noClientAssigned": "Un client doit être assigné à ce projet avant d’ajouter des matériaux.",
|
||
"loadingMaterials": "Chargement des matériaux...",
|
||
"loadingPrices": "Chargement des prix...",
|
||
"noMaterials": "Aucun matériau ajouté à ce projet.",
|
||
"noPricesConfigured": "Aucun prix configuré pour ce produit",
|
||
"selectProductError": "Veuillez sélectionner un produit",
|
||
"selectCurrencyError": "Veuillez sélectionner une devise",
|
||
"quantityMinError": "La quantité doit être d’au moins 1",
|
||
"loadFailed": "Échec du chargement des matériels",
|
||
"addFailed": "Échec de l'ajout du matériel",
|
||
"removeFailed": "Échec de la suppression du matériel",
|
||
"adding": "Ajout…",
|
||
"addMaterial": "Ajouter un matériel",
|
||
"addedSuccess": "Matériau ajouté",
|
||
"removedSuccess": "Matériau supprimé",
|
||
"productColumn": "Produit",
|
||
"qtyColumn": "Qté",
|
||
"rateColumn": "Tarif",
|
||
"totalColumn": "Total",
|
||
"statusColumn": "Statut",
|
||
"unknownProduct": "Produit inconnu",
|
||
"billed": "Facturé",
|
||
"pending": "En attente",
|
||
"unbilledTotal": "Non facturé ({{currency}}) : "
|
||
},
|
||
"export": {
|
||
"title": "Exporter les tâches du projet",
|
||
"phasesToExport": "Phases à exporter",
|
||
"fieldsToExport": "Champs à exporter",
|
||
"selectAll": "Tout sélectionner",
|
||
"deselectAll": "Tout désélectionner",
|
||
"phasesSelected_one": "{{selected}} phase sélectionnée sur {{total}}",
|
||
"phasesSelected_other": "{{selected}} phase(s) sélectionnée(s) sur {{total}}",
|
||
"fieldsSelected": "{{selected}} champs sur {{total}} sélectionnés",
|
||
"exportTasks": "Exporter les tâches",
|
||
"exporting": "Export des tâches...",
|
||
"completeTitle": "Export terminé",
|
||
"success_one": "Export CSV réussi pour {{count}} tâche.",
|
||
"success_other": "Export CSV réussi pour {{count}} tâches.",
|
||
"failed": "Échec de l’export des tâches",
|
||
"done": "Terminé",
|
||
"fields": {
|
||
"taskName": "Nom de la tâche",
|
||
"description": "Description",
|
||
"phase": "Phase",
|
||
"status": "Statut",
|
||
"isClosed": "Est fermée",
|
||
"taskType": "Type de tâche",
|
||
"priority": "Priorité",
|
||
"assignedTo": "Assigné à",
|
||
"assignedTeam": "Équipe assignée",
|
||
"dueDate": "Date d’échéance",
|
||
"estimatedHours": "Heures estimées",
|
||
"actualHours": "Heures réelles",
|
||
"checklistProgress": "Progression de la checklist",
|
||
"tags": "Étiquettes",
|
||
"createdAt": "Créé le",
|
||
"updatedAt": "Mis à jour le"
|
||
},
|
||
"exportSelected": "Exporter {{count}} sélectionnée(s)",
|
||
"selectedTasksNotice_one": "Export de {{count}} tâche sélectionnée.",
|
||
"selectedTasksNotice_other": "Export de {{count}} tâches sélectionnées."
|
||
},
|
||
"import": {
|
||
"title": "Importer des phases et des tâches",
|
||
"uploadIntro": "Téléversez un fichier CSV contenant des données de phases et de tâches",
|
||
"requiredFields": "Obligatoire :",
|
||
"requiredFieldsList": "task_name",
|
||
"optionalFields": "Facultatif :",
|
||
"optionalFieldsList": "phase_name, task_description, assigned_to, estimated_hours, actual_hours, due_date, priority, service, task_type, status, tags",
|
||
"noteLabel": "Remarque :",
|
||
"defaultPhaseNote": "Les tâches sans phase_name seront regroupées dans \"{{phaseName}}\"",
|
||
"downloadTemplate": "Télécharger le modèle CSV",
|
||
"mapFieldsTitle": "Mapper les champs de tâche aux colonnes CSV",
|
||
"fieldColumn": "Champ",
|
||
"selectCsvColumn": "Sélectionner une colonne CSV",
|
||
"fieldInstructions": "Sélectionnez la colonne CSV contenant les données de chaque champ. Les champs marqués d’un * sont obligatoires.",
|
||
"notMapped": "Non mappé",
|
||
"rowLimitExceeded": "Limite de lignes dépassée :",
|
||
"rowLimitDescription": "Votre CSV a {{original}} lignes, mais seules les premières {{kept}} lignes seront importées. Divisez votre fichier en lots plus petits pour les lignes restantes.",
|
||
"previewTitle": "Aperçu de l’import",
|
||
"totalRows": "Total des lignes :",
|
||
"validRows": "Valides :",
|
||
"invalidRows": "Invalides :",
|
||
"phasesCount": "Phases :",
|
||
"tasksCount": "Tâches :",
|
||
"skipInvalidRows": "Ignorer les lignes invalides",
|
||
"skipInvalidRowsHelp": "Continuer l’import même si certaines lignes comportent des erreurs de validation",
|
||
"yes": "Oui",
|
||
"no": "Non",
|
||
"structureTitle": "Structure de l’import",
|
||
"phaseTaskCount": "({{count}} tâches)",
|
||
"estimatedHoursSummary": "({{hours}} h)",
|
||
"validReadyTooltip": "Valide - Prêt à importer",
|
||
"invalidReadyTooltip": "Invalide - Contient des erreurs",
|
||
"noIssues": "-",
|
||
"unmatchedAgentsCount": "{{count}} agent(s)",
|
||
"unmatchedAgentsWarning": "de votre CSV ne correspondent pas aux utilisateurs existants. Vous serez invité à les mapper à l'étape suivante.",
|
||
"unmatchedStatusesCount": "{{count}} statut(s)",
|
||
"unmatchedStatusesWarning": "de votre CSV ne correspondent pas aux statuts de projet existants. Vous serez invité à les résoudre {{timing}}.",
|
||
"afterMappingAgents": "après le mappage des agents",
|
||
"inTheNextStep": "à l'étape suivante",
|
||
"invalidRowsCount": "{{count}} ligne(s)",
|
||
"invalidRowsBlockingError": "ont des erreurs de validation. Activez « Ignorer les lignes invalides » pour ne conserver que les lignes valides, ou revenez corriger votre CSV.",
|
||
"largeImportConfirmHelp": "Je comprends que cela créera {{phases}} phase(s) et {{tasks}} tâche(s). Cette action peut prendre du temps.",
|
||
"processingPreview": "Traitement…",
|
||
"preview": "Aperçu",
|
||
"nextMapAgents": "Suivant : Mapper les agents",
|
||
"nextResolveStatuses": "Suivant : Résoudre les statuts",
|
||
"importTasksButton": "Importer {{tasks}} tâches",
|
||
"mapUnmatchedAgentsTitle": "Mapper les agents non reconnus",
|
||
"agentResolutionIntro": "Les noms d'agents suivants de votre CSV ne correspondent à aucun utilisateur existant. Choisissez comment gérer chacun d'eux. Le premier agent d'une liste séparée par des virgules devient le responsable principal, et les agents supplémentaires deviennent des ressources de tâche.",
|
||
"taskCountLabel_one": "({{count}} tâche)",
|
||
"taskCountLabel_other": "({{count}} tâches)",
|
||
"tasksList": "Tâches : {{tasks}}",
|
||
"andMore": " et {{count}} de plus…",
|
||
"mapToExistingUser": "Associer à un utilisateur existant :",
|
||
"selectUserPlaceholder": "Sélectionner un utilisateur...",
|
||
"skipAgent": "Ignorer cet agent",
|
||
"skipPrimaryAgentHelp": "Les tâches dont c'est l'agent principal seront importées sans destinataire.",
|
||
"skipAdditionalAgentHelp": "Cet agent supplémentaire ne sera pas ajouté aux tâches concernées.",
|
||
"resolveStatusesTitle": "Résoudre les statuts non reconnus",
|
||
"statusResolutionIntro": "Les statuts suivants de votre CSV ne correspondent à aucun statut de projet existant. Choisissez comment gérer chacun d'eux :",
|
||
"mapToExistingStatus": "Associer à un statut existant :",
|
||
"noStatusSpecified": "Utiliser la colonne \"Aucun statut spécifié\" (elle sera créée si nécessaire)",
|
||
"createNewStatus": "Créer une nouvelle colonne de statut \"{{statusName}}\"",
|
||
"mapAgentRequiredError": "Veuillez sélectionner un utilisateur cible pour toutes les résolutions \"Associer à un utilisateur existant\" avant de continuer.",
|
||
"mapStatusRequiredError": "Veuillez sélectionner un statut cible pour toutes les résolutions \"Associer à un statut existant\" avant l’import.",
|
||
"largeImportConfirm": "Confirmer le grand import ({{tasks}} tâches)",
|
||
"largeImportHelp": "Vous importez {{tasks}} tâches. Le traitement peut prendre un moment.",
|
||
"primaryAgent": "Agent principal",
|
||
"processing": "Import des phases et des tâches...",
|
||
"importingButton": "Import…",
|
||
"completeTitle": "Import terminé",
|
||
"completeWithIssuesTitle": "Import terminé avec des problèmes",
|
||
"createdSummary": "{{phases}} phases et {{tasks}} tâches créées",
|
||
"successSummary": "{{phases}} phases et {{tasks}} tâches créées avec succès",
|
||
"errorsLabel": "Erreurs :",
|
||
"emptyCsvError": "Le fichier CSV est vide ou ne contient aucune ligne de données",
|
||
"readCsvError": "Erreur de lecture du fichier CSV",
|
||
"requiredFieldNotMapped": "Le champ obligatoire « {{fieldLabel}} » n'est pas mappé",
|
||
"processCsvError": "Erreur de traitement des données CSV",
|
||
"importDataError": "Erreur d'importation des données",
|
||
"table": {
|
||
"status": "Statut",
|
||
"row": "Ligne",
|
||
"phase": "Phase",
|
||
"task": "Tâche",
|
||
"issues": "Problèmes",
|
||
"valid": "Valide"
|
||
},
|
||
"fields": {
|
||
"task_name": "Nom de la tâche *",
|
||
"phase_name": "Nom de la phase",
|
||
"task_description": "Description de la tâche",
|
||
"assigned_to": "Attribué à",
|
||
"estimated_hours": "Heures estimées",
|
||
"actual_hours": "Heures réelles",
|
||
"due_date": "Date d'échéance",
|
||
"priority": "Priorité",
|
||
"service": "Service",
|
||
"task_type": "Type de tâche",
|
||
"status": "Statut",
|
||
"tags": "Étiquettes"
|
||
},
|
||
"fallbackPhaseLabel": "Phase par défaut pour les tâches sans phase_name",
|
||
"fallbackPhaseHelp": "{{count}} ligne(s) sans phase. Choisissez une phase existante ou conservez la valeur par défaut pour en créer une.",
|
||
"fallbackPhaseCreateDefault": "Créer une nouvelle phase : « {{name}} »",
|
||
"fallbackStatusLabel": "Statut par défaut pour les tâches sans statut",
|
||
"fallbackStatusHelp": "{{count}} ligne(s) sans statut. Le statut sélectionné sera attribué à ces tâches.",
|
||
"rowResultsTitle": "Résultats par ligne",
|
||
"rowFilterLabel": "Afficher :",
|
||
"rowFilterAll": "Toutes les lignes ({{count}})",
|
||
"rowFilterImported": "Seront importées ({{count}})",
|
||
"rowFilterSkipped": "Seront ignorées ({{count}})",
|
||
"rowsToBeSkippedCount": "{{count}} ligne(s) seront ignorées",
|
||
"rowsToBeSkippedHelp": "car elles n'ont pas passé la validation. Utilisez le filtre ci-dessus pour les examiner.",
|
||
"statusUnmatchedSuffix": "Non apparié",
|
||
"statusUnmatchedTooltip": "Le statut ne correspond à aucun statut existant pour cette phase. À résoudre dans les étapes de mappage avant l'import.",
|
||
"statusFallbackSuffix": "Par défaut",
|
||
"statusFallbackTooltip": "Utilisation du statut de repli par défaut pour cette phase.",
|
||
"inPhaseBadge": "dans {{phase}}"
|
||
},
|
||
"dialogs": {
|
||
"moveTask": {
|
||
"title": "Déplacer la tâche",
|
||
"selectTargetError": "Veuillez sélectionner une phase cible.",
|
||
"selectDifferentTargetError": "Veuillez sélectionner une phase ou un statut différent pour déplacer la tâche.",
|
||
"message": "Déplacer la tâche \"{{taskName}}\" vers une nouvelle phase/un nouveau statut :",
|
||
"placeholder": "Sélectionner le projet/la phase/le statut cible...",
|
||
"moving": "Déplacement…",
|
||
"confirm": "Confirmer le déplacement"
|
||
},
|
||
"duplicateTask": {
|
||
"title": "Dupliquer la tâche",
|
||
"selectTargetError": "Veuillez sélectionner une phase cible.",
|
||
"message": "Dupliquer la tâche \"{{taskName}}\" vers :",
|
||
"placeholder": "Sélectionner le projet/la phase/le statut cible...",
|
||
"withChecklist": "Dupliquer la tâche avec les éléments de liste de contrôle",
|
||
"withoutChecklist": "Dupliquer la tâche sans les éléments de liste de contrôle",
|
||
"withPrimaryAssignee": "Dupliquer la tâche avec l'assigné principal",
|
||
"withoutPrimaryAssignee": "Dupliquer la tâche sans l'assigné principal",
|
||
"withAdditionalAssignees": "Dupliquer la tâche avec les assignés supplémentaires ({{count}})",
|
||
"withoutAdditionalAssignees": "Dupliquer la tâche sans les assignés supplémentaires",
|
||
"withTicketLinks": "Dupliquer la tâche avec les liens de tickets ({{count}})",
|
||
"withoutTicketLinks": "Dupliquer la tâche sans les liens de tickets",
|
||
"duplicating": "Duplication...",
|
||
"confirm": "Confirmer la duplication"
|
||
},
|
||
"createTaskFromTicket": {
|
||
"title": "Créer une tâche à partir du ticket",
|
||
"button": "Créer une tâche",
|
||
"projectLabel": "Projet",
|
||
"projectPlaceholder": "Sélectionner un projet",
|
||
"phaseLabel": "Phase",
|
||
"phasePlaceholder": "Sélectionner une phase",
|
||
"statusLabel": "Statut",
|
||
"statusPlaceholder": "Sélectionner un statut",
|
||
"linkTicketLabel": "Lier le ticket à la tâche créée"
|
||
},
|
||
"linkTicketToTask": {
|
||
"title": "Lier le ticket à la tâche",
|
||
"button": "Lier à la tâche",
|
||
"projectLabel": "Projet",
|
||
"projectPlaceholder": "Sélectionner un projet",
|
||
"phaseLabel": "Phase (filtre facultatif)",
|
||
"phasePlaceholder": "Toutes les phases",
|
||
"taskLabel": "Tâche",
|
||
"taskPlaceholder": "Sélectionner une tâche",
|
||
"linkedSuccess": "Ticket lié à la tâche avec succès",
|
||
"linking": "Liaison…",
|
||
"confirm": "Lien",
|
||
"linkTicketError": "Échec de l'association du ticket"
|
||
},
|
||
"prefillFromTicket": {
|
||
"title": "Préremplir depuis un ticket",
|
||
"searchTicketsPlaceholder": "Rechercher des tickets...",
|
||
"selectTicket": "Sélectionner un ticket",
|
||
"linkTicketLabel": "Lier ce ticket à la tâche",
|
||
"confirm": "Pré-remplir",
|
||
"allStatuses": "Tous les statuts",
|
||
"allPriorities": "Toutes les priorités"
|
||
},
|
||
"ticketLinkedTasks": {
|
||
"restrictedTooltip": "Détails limités — vous n'êtes pas assigné à cette tâche",
|
||
"title": "Tâches de projet liées",
|
||
"loadFailed": "Échec du chargement de la tâche",
|
||
"phaseNotFound": "Phase de tâche introuvable",
|
||
"openFailed": "Impossible d'ouvrir la tâche",
|
||
"task": "Tâche",
|
||
"tasks": "Tâches",
|
||
"badgeCount_other": "{{count}} Tâches",
|
||
"badgeCount_one": "{{count}} Tâche"
|
||
},
|
||
"bulkMoveTask": {
|
||
"title": "Déplacer les tâches",
|
||
"message": "Déplacer {{count}} tâche(s) sélectionnée(s) vers une nouvelle phase/un nouveau statut :",
|
||
"confirm": "Déplacer les tâches"
|
||
},
|
||
"bulkAssign": {
|
||
"title": "Affecter les tâches",
|
||
"message": "Affecter {{count}} tâche(s) sélectionnée(s) à :",
|
||
"unassigned": "Non affecté",
|
||
"assigning": "Affectation...",
|
||
"confirm": "Affecter les tâches",
|
||
"teamReplaceNotice": "Les tâches déjà affectées à une autre équipe seront réaffectées à l’équipe sélectionnée."
|
||
},
|
||
"convertAdHocToTask": {
|
||
"title": "Convertir en tâche de projet"
|
||
}
|
||
},
|
||
"filters": {
|
||
"deadline": {
|
||
"placeholder": "Filtrer par échéance",
|
||
"filterTypeLabel": "Type de filtre",
|
||
"selectFilterType": "Sélectionner le type de filtre",
|
||
"before": "Avant",
|
||
"after": "Après",
|
||
"on": "Le",
|
||
"between": "Entre",
|
||
"date": "Date",
|
||
"startDate": "Date de début",
|
||
"endDate": "Date de fin",
|
||
"clear": "Effacer",
|
||
"apply": "Appliquer le filtre",
|
||
"beforeDate": "Avant le {{date}}",
|
||
"afterDate": "Après le {{date}}",
|
||
"onDate": "Le {{date}}",
|
||
"betweenDates": "Entre le {{start}} et le {{end}}",
|
||
"fromDate": "À partir du {{date}}"
|
||
}
|
||
},
|
||
"settings": {
|
||
"page": {
|
||
"title": "Paramètres du projet",
|
||
"tabs": {
|
||
"projectNumbering": "Numérotation du projet",
|
||
"projectStatuses": "Statuts du projet",
|
||
"taskStatuses": "Statuts de tâche",
|
||
"taskPriorities": "Priorités de tâche"
|
||
}
|
||
},
|
||
"statuses": {
|
||
"project": {
|
||
"title": "Colonnes de statut des tâches",
|
||
"description": "Configurez les colonnes de statut disponibles pour les tâches",
|
||
"add_from_library": "Ajouter un statut"
|
||
},
|
||
"closed": "Fermé",
|
||
"open": "Ouvrir",
|
||
"confirm_delete_title": "Supprimer le statut",
|
||
"confirm_delete": "Supprimer « {{statusName}} » ?",
|
||
"delete_error": "Échec de la suppression du statut",
|
||
"delete_validation_failed": "Échec de la validation de la suppression. Veuillez réessayer.",
|
||
"scope_label": "Portée du statut",
|
||
"scope_placeholder": "Sélectionner une portée de statut",
|
||
"scope_project_defaults": "Valeurs par défaut du projet",
|
||
"use_project_defaults": "Utiliser les valeurs par défaut du projet",
|
||
"custom_statuses": "Statuts personnalisés",
|
||
"phase_uses_defaults": "Cette phase utilise les colonnes de statut par défaut du projet.",
|
||
"copy_from_defaults": "Copier depuis les valeurs par défaut du projet",
|
||
"add_custom_status": "Ajouter un statut personnalisé",
|
||
"revert_title": "Revenir aux valeurs par défaut du projet",
|
||
"revert_message": "Supprimer les statuts personnalisés de cette phase et revenir aux valeurs par défaut du projet ?",
|
||
"revert_confirm": "Rétablir",
|
||
"copy_failed": "Impossible de copier les valeurs par défaut du projet vers cette phase.",
|
||
"revert_failed": "Impossible de rétablir les valeurs par défaut du projet pour cette phase.",
|
||
"delete_has_tasks": "« {{statusName}} » contient {{count}} tâche(s). Déplacer vers :",
|
||
"delete_and_move": "Déplacer et supprimer",
|
||
"already_added": "Statut déjà ajouté",
|
||
"added_success": "Statut ajouté avec succès",
|
||
"removed_success": "Statut supprimé avec succès",
|
||
"move_up": "Monter",
|
||
"move_down": "Descendre",
|
||
"remove": "Supprimer le statut",
|
||
"add_existing": "Ajouter l'existant",
|
||
"create_new": "Créer",
|
||
"task_statuses_label": "Statuts de tâche",
|
||
"phase_task_statuses_label": "Statuts des tâches de phase",
|
||
"customize": "Personnaliser",
|
||
"customize_phase": "Personnaliser les statuts de tâche pour cette phase",
|
||
"customize_project": "Personnaliser les statuts de tâche pour ce projet",
|
||
"available_statuses_click_add": "Statuts disponibles (cliquez pour ajouter) :",
|
||
"load_task_statuses_failed": "Échec du chargement des statuts de tâche",
|
||
"add_task_status_failed": "Échec de l'ajout du statut",
|
||
"remove_task_status_failed": "Échec de la suppression du statut",
|
||
"reorder_failed": "Échec du réordonnancement des statuts",
|
||
"arrange_hint": "Organisez les statuts dans l'ordre dans lequel les tâches les traverseront.",
|
||
"none_selected": "Aucun statut sélectionné",
|
||
"none_selected_hint": "Cliquez sur \"Ajouter un statut\" pour ajouter des statuts à votre projet.",
|
||
"selector_none_selected_hint": "Cliquez sur \"Ajouter un existant\" pour sélectionner un statut disponible, ou sur \"Créer nouveau\" pour en créer un.",
|
||
"add_from_library_title": "Ajouter un statut depuis la bibliothèque",
|
||
"add_phase_from_library_title": "Ajouter un statut de phase depuis la bibliothèque",
|
||
"choose_status": "Choisir un statut",
|
||
"no_statuses_available": "Aucun statut disponible",
|
||
"no_statuses_available_hint": "Créez d’abord des statuts dans Paramètres → Projets → Statuts.",
|
||
"task_status_library_title": "Bibliothèque des statuts de tâches de projet",
|
||
"task_status_library_description": "Gérez les statuts des tâches de projet de votre organisation. Ces statuts peuvent être utilisés dans tous les projets.",
|
||
"task_status_library_empty": "Aucun statut de tâche de projet trouvé",
|
||
"task_status_library_empty_hint": "Créez votre premier statut pour commencer",
|
||
"edit_status_title": "Modifier le statut",
|
||
"create_status_title": "Créer un statut",
|
||
"import_from_standard": "Importer depuis le standard",
|
||
"loading": "Chargement…",
|
||
"status_name": "Nom du statut",
|
||
"status_name_placeholder": "ex. En cours, Bloqué, etc.",
|
||
"preview": "Aperçu",
|
||
"color": "Couleur",
|
||
"icon": "Icône",
|
||
"sample_task": "Tâche exemple",
|
||
"sample_task_hint": "Voici comment les tâches apparaîtront dans la colonne",
|
||
"selected_color": "Couleur sélectionnée",
|
||
"selected_icon": "Icône sélectionnée",
|
||
"choose_icon": "Choisir une icône",
|
||
"mark_closed": "Marquer comme statut fermé",
|
||
"mark_closed_help": "Les tâches avec ce statut seront considérées comme terminées",
|
||
"status_updated_success": "Statut mis à jour avec succès",
|
||
"status_created_success": "Statut créé avec succès",
|
||
"status_deleted_success": "Statut \"{{statusName}}\" supprimé avec succès",
|
||
"status_imported_success": "{{count}} statuts importés avec succès",
|
||
"status_import_skipped": "{{count}} statuts ignorés ({{reason}})",
|
||
"import_skipped_names": "Ignoré : {{names}}",
|
||
"save_failed": "Échec de l'enregistrement du statut. Veuillez réessayer.",
|
||
"delete_confirm_message": "Êtes-vous sûr de vouloir supprimer le statut « {{statusName}} » ? Cette action est irréversible.",
|
||
"delete_in_use": "Échec de la suppression du statut. Il est peut-être utilisé par des projets.",
|
||
"import_failed": "Échec de l'import des statuts",
|
||
"update_status": "Mettre à jour le statut",
|
||
"project_statuses_title": "Statuts du projet",
|
||
"project_statuses_description": "Définissez les étapes du workflow de vos projets. Marquez les statuts comme « fermé » pour indiquer l'achèvement du projet.",
|
||
"project_closed_hint": "Les projets avec ce statut seront marqués comme fermés",
|
||
"project_open_hint": "Les projets avec ce statut resteront ouverts",
|
||
"order": "Ordre",
|
||
"this_status": "ce statut",
|
||
"last_closed_error": "Au moins un statut doit rester marqué comme fermé",
|
||
"last_closed_delete_error": "Impossible de supprimer le dernier statut fermé pour ce type.",
|
||
"addStatus": "Ajouter un nouveau statut",
|
||
"add_from_library": "Ajouter un statut"
|
||
}
|
||
},
|
||
"templates": {
|
||
"statuses": {
|
||
"manage_title": "Gérer les colonnes de statut",
|
||
"manage_description": "Définissez les colonnes de statut pour les tâches de ce modèle. Glissez pour réorganiser.",
|
||
"template_defaults": "Valeurs par défaut du modèle",
|
||
"added": "Colonne de statut ajoutée",
|
||
"removed": "Colonne de statut supprimée",
|
||
"copied_to_phase": "Valeurs par défaut du modèle copiées vers la phase",
|
||
"reverted": "Phase rétablie aux valeurs par défaut du modèle",
|
||
"revert_message": "Supprimer les colonnes de statut personnalisées de cette phase et revenir aux valeurs par défaut du modèle ?",
|
||
"remove_title": "Supprimer la colonne de statut",
|
||
"remove_message": "Supprimer cette colonne de statut ? Les tâches dans cette colonne seront déplacées vers la première colonne.",
|
||
"remove_confirm": "Supprimer",
|
||
"empty": "Pas encore de colonnes de statut",
|
||
"empty_hint": "Ajoutez des colonnes de statut pour organiser les tâches",
|
||
"add_title": "Ajouter une colonne de statut",
|
||
"select_placeholder": "Sélectionner un statut...",
|
||
"all_in_use": "Tous les statuts disponibles sont utilisés",
|
||
"create_new": "Créer nouveau"
|
||
},
|
||
"list": {
|
||
"title": "Modèles de projet",
|
||
"searchPlaceholder": "Rechercher des modèles...",
|
||
"categoryPlaceholder": "Filtrer par catégorie",
|
||
"loading": "Chargement...",
|
||
"loadFailed": "Échec du chargement des modèles",
|
||
"deletedSuccess": "Modèle supprimé avec succès",
|
||
"deleteFailed": "Échec de la suppression du modèle",
|
||
"deleteTitle": "Supprimer le modèle",
|
||
"deleteMessage": "Voulez-vous vraiment supprimer le modèle \"{{templateName}}\" ? Cette action est irréversible.",
|
||
"columns": {
|
||
"name": "Nom",
|
||
"description": "Description",
|
||
"category": "Catégorie",
|
||
"timesUsed": "Nombre d’utilisations",
|
||
"lastUsed": "Dernière utilisation",
|
||
"actions": "Actes"
|
||
},
|
||
"neverUsed": "Jamais utilisé",
|
||
"edit": "Modifier",
|
||
"applyTemplate": "Appliquer le modèle",
|
||
"addTemplate": "Ajouter un modèle",
|
||
"createFromProject": "Créer à partir du projet",
|
||
"allCategories": "Toutes les catégories"
|
||
},
|
||
"create": {
|
||
"title": "Créer un modèle à partir du projet",
|
||
"sourceProjectLabel": "Projet source *",
|
||
"sourceProjectPlaceholder": "Sélectionner un projet",
|
||
"templateNameLabel": "Nom du modèle *",
|
||
"templateNamePlaceholder": "Saisir le nom du modèle",
|
||
"descriptionLabel": "Description",
|
||
"descriptionPlaceholder": "Saisir la description du modèle",
|
||
"categoryLabel": "Catégorie",
|
||
"categoryPlaceholder": "ex. Développement logiciel, Mise en place réseau",
|
||
"whatToInclude": "Que faut-il inclure depuis le projet :",
|
||
"copyPhases": "Copier les phases du projet",
|
||
"copyStatuses": "Copier les colonnes/statuts du projet",
|
||
"copyTasks": "Copier les tâches du projet",
|
||
"copyChecklists": "Copier les checklists de tâche",
|
||
"copyServices": "Copier les services de tâche",
|
||
"copyAssignments": "Copier les affectations de tâche",
|
||
"creating": "Création...",
|
||
"create": "Créer le modèle",
|
||
"createdSuccess": "Modèle créé avec succès",
|
||
"createFailed": "Échec de la création du modèle",
|
||
"loadFailed": "Échec du chargement des projets et catégories",
|
||
"projectRequired": "Le projet et le nom du modèle sont requis"
|
||
},
|
||
"apply": {
|
||
"title": "Créer un projet à partir du modèle",
|
||
"templateLabel": "Modèle *",
|
||
"templatePlaceholder": "Sélectionner un modèle",
|
||
"projectNameLabel": "Nom du projet *",
|
||
"projectNamePlaceholder": "Saisir le nom du projet",
|
||
"clientLabel": "Client *",
|
||
"clientPlaceholder": "Sélectionner un client",
|
||
"statusLabel": "Statut *",
|
||
"statusPlaceholder": "Sélectionner un statut",
|
||
"startDateLabel": "Date de début",
|
||
"startDatePlaceholder": "Sélectionner une date de début",
|
||
"customizationOptions": "Options de personnalisation",
|
||
"elementsToCopy": "Éléments du modèle à copier",
|
||
"copyPhases": "Copier les phases",
|
||
"copyStatuses": "Copier les statuts",
|
||
"copyTasks": "Copier les tâches",
|
||
"copyChecklists": "Copier les checklists",
|
||
"copyTaskServices": "Copier les services de tâche",
|
||
"taskAssignments": "Affectations des tâches",
|
||
"creating": "Création…",
|
||
"create": "Créer un projet",
|
||
"createdSuccess": "Projet créé à partir du modèle avec succès",
|
||
"createFailed": "Échec de la création du projet à partir du modèle",
|
||
"loadErrorTitle": "Erreur",
|
||
"loadErrorDescription": "Échec du chargement des données",
|
||
"templateRequired": "Le modèle est requis",
|
||
"projectRequired": "Le nom du projet est requis",
|
||
"clientRequired": "Le client est requis",
|
||
"statusRequired": "Le statut est requis",
|
||
"assignmentOptions": {
|
||
"none": "Ne pas copier les affectations",
|
||
"primary": "Copier uniquement l’affectation principale",
|
||
"all": "Copier toutes les affectations"
|
||
},
|
||
"fixErrors": "Veuillez corriger les erreurs suivantes :",
|
||
"addStatus": "Ajouter un nouveau statut"
|
||
},
|
||
"detail": {
|
||
"description": "Description :",
|
||
"used": "Utilisé :",
|
||
"times": "fois",
|
||
"projectPhases": "Phases du projet",
|
||
"noPhasesDefined": "Aucune phase définie",
|
||
"phasePrefix": "Phase :",
|
||
"selectPhase": "Sélectionnez une phase pour afficher les détails du modèle.",
|
||
"deleteTitle": "Supprimer le modèle",
|
||
"deletedSuccess": "Modèle supprimé avec succès",
|
||
"usedCount": "Utilisé : {{count}} fois"
|
||
},
|
||
"editor": {
|
||
"deletedSuccess": "Modèle supprimé avec succès",
|
||
"deleteFailed": "Échec de la suppression du modèle",
|
||
"clientPortalSaved": "Paramètres du portail client enregistrés",
|
||
"clientPortalSaveFailed": "Échec de l'enregistrement des paramètres du portail client",
|
||
"addPhaseFailed": "Échec de l'ajout de la phase",
|
||
"phaseUpdated": "Phase mise à jour",
|
||
"updatePhaseFailed": "Échec de la mise à jour de la phase",
|
||
"phaseDeleted": "Phase supprimée",
|
||
"deletePhaseFailed": "Échec de la suppression de la phase",
|
||
"taskMovedToPhase": "Tâche déplacée vers \"{{phaseName}}\"",
|
||
"moveTaskFailed": "Échec du déplacement de la tâche",
|
||
"reorderPhaseFailed": "Échec du réordonnancement de la phase",
|
||
"selectPhaseFirst": "Veuillez d’abord sélectionner une phase",
|
||
"taskUpdated": "Tâche mise à jour",
|
||
"newTaskFallback": "Nouvelle tâche",
|
||
"taskCreated": "Tâche créée",
|
||
"taskSaveFailed": "Échec de l'enregistrement de la tâche",
|
||
"taskDeleted": "Tâche supprimée",
|
||
"deleteTaskFailed": "Échec de la suppression de la tâche",
|
||
"updateAssigneeFailed": "Échec de la mise à jour du destinataire",
|
||
"deleteTemplateTitle": "Supprimer le modèle",
|
||
"deleteTemplateMessage": "Êtes-vous sûr de vouloir supprimer le modèle « {{templateName}} » ? Cette action est irréversible.",
|
||
"deletePhaseTitle": "Supprimer la phase",
|
||
"deletePhaseMessage": "Êtes-vous sûr de vouloir supprimer la phase « {{phaseName}} » ? Toutes les tâches de cette phase seront également supprimées.",
|
||
"deleteTaskTitle": "Supprimer la tâche",
|
||
"deleteTaskMessage": "Êtes-vous sûr de vouloir supprimer la tâche « {{taskName}} » ?",
|
||
"templateBadge": "Modèle",
|
||
"useTemplate": "Utiliser le modèle",
|
||
"statusColumnsLabel": "Colonnes de statut",
|
||
"clientPortalVisibility": "Visibilité sur le portail client",
|
||
"done": "Terminé",
|
||
"projectPhases": "Phases du projet",
|
||
"noPhasesYet": "Aucune phase pour le moment.",
|
||
"addFirstPhase": "Ajoutez votre première phase",
|
||
"phaseName": "Nom de la phase",
|
||
"phaseNamePlaceholder": "Nom de la phase",
|
||
"phaseDescription": "Description de la phase",
|
||
"phaseDescriptionPlaceholder": "Description (facultative)",
|
||
"duration": "Durée",
|
||
"daysPlaceholder": "Jours",
|
||
"startOffset": "Décalage de début",
|
||
"statusColumnsTooltip": "Colonnes de statut : {{value}}",
|
||
"customStatusesCount": "Personnalisé ({{count}} statuts)",
|
||
"templateDefaults": "Valeurs par défaut du modèle",
|
||
"notSet": "Non défini",
|
||
"durationSummary": "Durée : {{value}}",
|
||
"startOffsetSummary": "Décalage de début : {{value}}",
|
||
"phaseDurationDays": "Durée : {{days}} jours",
|
||
"phaseStartDays": "Début : +{{days}} jours",
|
||
"searchTasksPlaceholder": "Rechercher des tâches...",
|
||
"searchTasks": "Rechercher des tâches",
|
||
"showStickyStatusNames": "Afficher les noms de statut figés",
|
||
"hideStickyStatusNames": "Masquer les noms de statut figés",
|
||
"pinHeader": "Épingler l’en-tête en haut",
|
||
"unpinHeader": "Désépingler l’en-tête",
|
||
"statusFallback": "Statut",
|
||
"addPhaseToGetStarted": "Ajoutez une phase pour commencer",
|
||
"selectPhaseToViewTasks": "Sélectionnez une phase pour voir les tâches",
|
||
"noStatusColumns": "Aucune colonne de statut définie",
|
||
"addStatusColumns": "Ajouter des colonnes de statut",
|
||
"taskActions": "Actions de tâche",
|
||
"editTask": "Modifier la tâche",
|
||
"deleteTask": "Supprimer la tâche",
|
||
"priorityLevel": "Niveau de priorité : {{priority}}",
|
||
"additionalAgents": "Agents supplémentaires :",
|
||
"dependsOn": "Dépend de :",
|
||
"blocks": "Bloque :",
|
||
"seeMore": "Voir plus",
|
||
"seeLess": "Voir moins",
|
||
"noPhasesFound": "Aucune phase trouvée",
|
||
"untitledPhase": "Phase sans titre",
|
||
"taskCount_one": "1 tâche",
|
||
"taskCount_other": "{{count}} tâches",
|
||
"unknownUser": "Inconnu",
|
||
"unknownTask": "Tâche inconnue",
|
||
"checklistCountTitle": "{{count}} élément de liste"
|
||
},
|
||
"taskForm": {
|
||
"addTitle": "Ajouter une tâche",
|
||
"editTitle": "Modifier la tâche",
|
||
"addAction": "Ajouter une tâche",
|
||
"updateAction": "Mettre à jour la tâche",
|
||
"saving": "Enregistrement…",
|
||
"saveFailed": "Échec de l'enregistrement de la tâche",
|
||
"taskNameRequired": "Le nom de la tâche est requis",
|
||
"taskNamePlaceholder": "Saisir le nom de la tâche",
|
||
"descriptionPlaceholder": "Description de la tâche (facultative)",
|
||
"primaryAgentRequired": "Un agent principal est requis lorsque des agents supplémentaires sont assignés",
|
||
"primaryAgentPlaceholder": "Sélectionner l’agent principal (facultatif)",
|
||
"checklist": "Liste de contrôle",
|
||
"doneEditing": "Terminer la modification",
|
||
"editChecklist": "Modifier la checklist",
|
||
"addChecklistItem": "Ajouter un élément",
|
||
"checklistItemPlaceholder": "Élément de checklist",
|
||
"emptyChecklistItem": "Élément vide",
|
||
"reorderChecklistItem": "Glisser pour réorganiser",
|
||
"insertChecklistItem": "Insérer un élément ici",
|
||
"dependencies": "Dépendances",
|
||
"dependenciesHelp": "Définissez les dépendances des tâches pour contrôler l'ordre d'exécution lors de la création du projet",
|
||
"removeDependency": "Supprimer la dépendance",
|
||
"selectTaskPlaceholder": "Sélectionner une tâche...",
|
||
"cancelEditTitle": "Annuler la modification",
|
||
"cancelEditMessage": "Êtes-vous sûr de vouloir annuler ? Les modifications non enregistrées seront perdues.",
|
||
"discardChanges": "Ignorer les modifications",
|
||
"continueEditing": "Continuer l'édition",
|
||
"serviceLabel": "Service (pour les saisies de temps)",
|
||
"noService": "Aucun service",
|
||
"serviceHint": "Lorsque défini, ce service sera automatiquement sélectionné lors de la création de saisies de temps à partir des tâches créées depuis ce modèle.",
|
||
"statusColumnLabel": "Colonne de statut",
|
||
"estimatedHoursLabel": "Heures estimées",
|
||
"durationLabel": "Durée (jours)",
|
||
"taskTypeLabel": "Type de tâche",
|
||
"priorityLabel": "Priorité",
|
||
"primaryAgentLabel": "Agent principal",
|
||
"additionalAgentsLabel": "Agents supplémentaires",
|
||
"additionalAgentsHelp": "Membres d'équipe supplémentaires à affecter à cette tâche",
|
||
"assignedWhenApplied": "Cet utilisateur sera affecté lorsque le modèle sera appliqué",
|
||
"dependenciesLabel": "Dépendances"
|
||
},
|
||
"wizard": {
|
||
"next": "Suivant",
|
||
"back": "Retour",
|
||
"create": "Créer le modèle",
|
||
"title": "Créer un nouveau modèle de projet",
|
||
"basics": {
|
||
"nameLabel": "Nom du modèle *",
|
||
"namePlaceholder": "ex. Développement de site web, Migration réseau",
|
||
"nameHelp": "Donnez à votre modèle un nom descriptif qui reflète le type de projet",
|
||
"descriptionLabel": "Description",
|
||
"descriptionPlaceholder": "Décrivez l’usage de ce modèle et les détails importants...",
|
||
"descriptionHelp": "Fournissez un contexte pour aider les utilisateurs à savoir quand utiliser ce modèle",
|
||
"categoryLabel": "Catégorie",
|
||
"categoryPlaceholder": "ex. Développement, Infrastructure, Conseil",
|
||
"categoryHelp": "Organisez les modèles par catégorie pour un filtrage plus facile",
|
||
"nextHintTitle": "Quelle est la suite ?",
|
||
"nextHintDescription": "Après avoir défini les bases, vous configurerez les colonnes de statut, ajouterez des phases, créerez des tâches, configurerez la visibilité du portail client et passerez en revue votre modèle avant de l'enregistrer."
|
||
},
|
||
"phases": {
|
||
"title": "Phases du projet",
|
||
"intro": "Décomposez votre projet en phases. Chaque phase peut avoir ses propres tâches et son propre calendrier.",
|
||
"empty": "Aucune phase ajoutée pour le moment",
|
||
"addFirstPhase": "Ajouter la première phase",
|
||
"phaseName": "Nom de la phase *",
|
||
"phaseNamePlaceholder": "ex. Planification, Développement, Tests",
|
||
"phaseNameRequired": "Le nom de la phase est requis",
|
||
"descriptionLabel": "Description",
|
||
"description": "Description",
|
||
"descriptionPlaceholder": "Décrivez ce qui se passe dans cette phase...",
|
||
"duration": "Durée (jours)",
|
||
"optionalPlaceholder": "Facultatif",
|
||
"startOffset": "Décalage de début (jours)",
|
||
"daysAfterProjectStart": "Jours après le début du projet",
|
||
"durationSummary": "Durée : {{days}} jours",
|
||
"startSummary": "Commence : +{{days}} jours",
|
||
"tasksCount": "Tâches : {{count}}",
|
||
"reorderedHint": "Phases réorganisées. Souhaitez-vous recalculer les décalages en fonction de l'ordre et des durées des phases ?",
|
||
"recalculate": "Recalculer",
|
||
"recalculateOffsets": "Recalculer les décalages",
|
||
"aboutTimingTitle": "À propos du calendrier des phases",
|
||
"startOffsetLabel": "Décalage de début",
|
||
"durationLabel": "Durée",
|
||
"tipLabel": "Astuce",
|
||
"aboutTimingStartOffset": "Jours après la date de début du projet où commence cette phase. Les nouvelles phases calculent automatiquement leur décalage en fonction des phases précédentes.",
|
||
"aboutTimingDuration": "Durée habituelle de cette phase. Utilisée pour calculer le décalage de la phase suivante.",
|
||
"aboutTimingTip": "Après avoir réorganisé les phases, utilisez « Recalculer les décalages » pour mettre à jour la planification selon le nouvel ordre."
|
||
},
|
||
"tasks": {
|
||
"empty": "Aucune phase disponible",
|
||
"title": "Tâches",
|
||
"selectPhase": "Sélectionner une phase",
|
||
"noTasksInPhase": "Aucune tâche dans {{phaseName}}",
|
||
"thisPhase": "cette phase",
|
||
"taskName": "Nom de la tâche *",
|
||
"taskNamePlaceholder": "ex. Concevoir le schéma de base de données",
|
||
"description": "Ajoutez des tâches à chaque phase. Vous pouvez aussi ajouter des éléments de checklist pour détailler davantage les tâches.",
|
||
"descriptionPlaceholder": "Décrivez ce qui doit être fait...",
|
||
"service": "Service (pour les saisies de temps)",
|
||
"estimatedHours": "Heures estimées",
|
||
"duration": "Durée (jours)",
|
||
"durationSummaryShort": "{{days}} jours",
|
||
"taskType": "Type de tâche",
|
||
"priority": "Priorité",
|
||
"noPriority": "Aucune priorité",
|
||
"assignedTo": "Assigné à",
|
||
"notAssigned": "Non assigné",
|
||
"additionalAgents": "Agents supplémentaires",
|
||
"statusColumn": "Colonne de statut",
|
||
"statusPlaceholder": "Sélectionner une colonne de statut",
|
||
"checklist": "Liste de contrôle",
|
||
"checklistItemPlaceholder": "Élément de checklist",
|
||
"checklistItemsSummary": "{{count}} éléments de liste",
|
||
"tipTitle": "Astuce",
|
||
"tipDescription": "Ajoutez des éléments de liste pour décomposer les tâches complexes en étapes plus petites. Cela aidera les membres de l'équipe à suivre la progression de chaque tâche.",
|
||
"emptyDescription": "Veuillez ajouter au moins une phase à l'étape précédente avant d'ajouter des tâches.",
|
||
"addFirstTask": "Ajouter la première tâche",
|
||
"serviceHint": "Préremplit le service lors de la création des saisies de temps à partir des tâches.",
|
||
"done": "Terminé",
|
||
"addTaskToPhase": "Ajouter une tâche à {{phaseName}}"
|
||
},
|
||
"review": {
|
||
"title": "Vérifiez votre modèle",
|
||
"templateInformation": "Informations du modèle",
|
||
"name": "Nom :",
|
||
"descriptionLabel": "Description :",
|
||
"description": "Vérifiez les détails de votre modèle avant sa création. Vous pouvez modifier n'importe quelle section en revenant en arrière.",
|
||
"category": "Catégorie :",
|
||
"statusColumns": "Colonnes de statut ({{count}})",
|
||
"tasksSummary": "Résumé des tâches",
|
||
"totalTasks": "Total des tâches",
|
||
"checklistItems": "Éléments de checklist",
|
||
"estimatedHours": "Heures estimées",
|
||
"taskDetailsByPhase": "Détails des tâches par phase",
|
||
"readyToCreate": "Prêt à créer",
|
||
"readyDescription": "Une fois ce modèle créé, vous pourrez l'utiliser pour démarrer rapidement de nouveaux projets avec cette structure. Cliquez sur « {{action}} » pour terminer."
|
||
},
|
||
"clientPortal": {
|
||
"title": "Visibilité sur le portail client",
|
||
"description": "Configurez les informations visibles par les clients lorsqu'ils consultent les projets créés à partir de ce modèle dans le portail client.",
|
||
"aboutTitle": "À propos de la visibilité sur le portail client",
|
||
"aboutDescription": "Ces paramètres contrôlent les informations du projet visibles par les clients lorsqu'ils accèdent au portail client. Vous pouvez choisir d'afficher les phases, la progression d'achèvement des tâches et les détails spécifiques des tâches. Ces paramètres seront appliqués à tous les projets créés à partir de ce modèle, mais peuvent être personnalisés par projet."
|
||
},
|
||
"steps": {
|
||
"basics": "Bases du modèle",
|
||
"statusColumns": "Colonnes de statut des tâches",
|
||
"phases": "Phases",
|
||
"tasks": "Tâches",
|
||
"clientPortal": "Portail client",
|
||
"reviewCreate": "Vérifier et créer"
|
||
},
|
||
"errors": {
|
||
"loadRequiredData": "Échec du chargement des données requises",
|
||
"templateNameRequired": "Le nom du modèle est requis",
|
||
"createFailed": "Échec de la création du modèle"
|
||
},
|
||
"skip": "Passer",
|
||
"creating": "Création..."
|
||
}
|
||
},
|
||
"documents": {
|
||
"title": "Pièces jointes",
|
||
"upload": "Téléverser",
|
||
"noDocuments": "Aucun document joint",
|
||
"uploadSuccess": "Document téléchargé avec succès",
|
||
"uploadError": "Échec du téléchargement du document",
|
||
"downloadError": "Échec du téléchargement du document",
|
||
"dragDrop": "Glissez et déposez un fichier ici, ou cliquez pour sélectionner",
|
||
"maxSize": "Taille maximale du fichier: {{size}}MB",
|
||
"file": "fichier",
|
||
"files": "fichiers",
|
||
"uploadHint": "Téléversez des fichiers à partager avec cette tâche",
|
||
"download": "Télécharger",
|
||
"view": "Voir"
|
||
},
|
||
"team": "Membres de l'équipe",
|
||
"budget": "Budget",
|
||
"fields": {
|
||
"projectNumber": "Projet #",
|
||
"projectName": "Nom du projet",
|
||
"reference": "Référence",
|
||
"name": "Nom du projet",
|
||
"description": "Description",
|
||
"status": "Statut",
|
||
"startDate": "Date de début",
|
||
"endDate": "Date de fin",
|
||
"projectManager": "Chef de projet",
|
||
"progress": "Progression",
|
||
"hoursLogged": "Heures consignées",
|
||
"budgetUsed": "Budget utilisé"
|
||
},
|
||
"status": {
|
||
"notStarted": "Non commencé",
|
||
"inProgress": "En cours",
|
||
"completed": "Terminé",
|
||
"onHold": "En pause",
|
||
"cancelled": "Annulé",
|
||
"active": "Actif",
|
||
"inactive": "Inactif"
|
||
},
|
||
"messages": {
|
||
"noProjects": "Aucun projet trouvé",
|
||
"loadingProjects": "Chargement des projets...",
|
||
"noDescription": "Aucune description fournie",
|
||
"noPhasesOrTasks": "Aucune phase ou tâche à afficher",
|
||
"loadError": "Échec du chargement des détails du projet"
|
||
},
|
||
"backToProjects": "Retour aux Projets",
|
||
"invalidProjectData": "Données de projet invalides",
|
||
"viewDetails": "Voir les détails →",
|
||
"details": "Détails",
|
||
"startDate": "Date de début",
|
||
"endDate": "Date de fin",
|
||
"lastUpdated": "Dernière mise à jour",
|
||
"taskCompletion": "Achèvement des tâches",
|
||
"percentComplete": "{{percent}} % terminé",
|
||
"tasksCompleted": "{{completed}} sur {{total}} tâches terminées",
|
||
"budgetHours": "Heures budgétées",
|
||
"budgetUsed": "{{percent}} % du budget utilisé",
|
||
"hoursUsed": "{{spent}} sur {{budgeted}} heures",
|
||
"hoursUsage": "Utilisation des heures",
|
||
"hoursUsedDetail": "{{spent}} sur {{budgeted}} heures utilisées",
|
||
"hoursRemaining": "{{remaining}} heures restantes",
|
||
"projectInfo": {
|
||
"client": "Client :",
|
||
"contact": "Contact :",
|
||
"budget": "Budget :",
|
||
"hoursUsageDescription": "Affiche l'utilisation des heures budgétées pour l'ensemble du projet",
|
||
"templateCreatedSuccess": "Modèle créé avec succès",
|
||
"notAvailable": "N/D",
|
||
"saveAsTemplate": "Enregistrer comme modèle",
|
||
"materials": "Matériaux",
|
||
"shareTooltip": "Imprimer, importer et exporter"
|
||
},
|
||
"projectPhases": {
|
||
"addTask": "Ajouter une tâche",
|
||
"addPhase": "Ajouter une phase",
|
||
"phaseNamePlaceholder": "Nom de la phase… *",
|
||
"descriptionPlaceholder": "Description",
|
||
"adding": "Ajout…",
|
||
"addError": "Échec de l'ajout de la phase. Veuillez réessayer.",
|
||
"title": "Phases du projet",
|
||
"import": "Importer"
|
||
},
|
||
"addStatusDialog": {
|
||
"phaseTitle": "Ajouter un statut de phase depuis la bibliothèque",
|
||
"projectTitle": "Ajouter un statut depuis la bibliothèque",
|
||
"selectLabel": "Sélectionner depuis la bibliothèque de statuts",
|
||
"placeholder": "Choisir un statut",
|
||
"helpText": "Sélectionnez un statut de la bibliothèque de votre locataire à ajouter à ce projet.",
|
||
"noStatusesTitle": "Aucun statut disponible",
|
||
"noStatusesDescription": "Créez des statuts dans Paramètres → Projets → Statuts.",
|
||
"adding": "Ajout...",
|
||
"addStatus": "Ajouter un statut",
|
||
"addFailed": "Échec de l'ajout du statut. Veuillez réessayer."
|
||
},
|
||
"taskStatusSelect": {
|
||
"ariaLabel": "Statut de la tâche",
|
||
"selectStatus": "Sélectionner le statut"
|
||
},
|
||
"ticketSelect": {
|
||
"placeholder": "Sélectionner un ticket...",
|
||
"searchPlaceholder": "Rechercher des tickets...",
|
||
"noTickets": "Aucun ticket trouvé"
|
||
},
|
||
"taskTypeSelect": {
|
||
"placeholder": "Sélectionner le type de tâche"
|
||
},
|
||
"comments": {
|
||
"title": "Commentaires",
|
||
"internalOnly": "Interne uniquement",
|
||
"newestFirst": "Plus récents en premier",
|
||
"oldestFirst": "Plus anciens en premier",
|
||
"addComment": "Ajouter un commentaire",
|
||
"submitting": "Envoi...",
|
||
"loading": "Chargement...",
|
||
"empty": "Pas encore de commentaires. Soyez le premier à commenter !"
|
||
},
|
||
"clientPortal": {
|
||
"clientsWillSee": "Les clients verront :",
|
||
"showBudgetHours": "Afficher les heures budgétées",
|
||
"showBudgetHoursDescription": "Les clients verront la carte Heures budgétées au niveau du projet avec les heures consommées vs. budgétées et le % du budget utilisé.",
|
||
"showPhases": "Afficher les phases",
|
||
"showPhasesDescription": "Les clients verront des fiches de phase avec noms, descriptions et plages de dates. Ils peuvent sélectionner les phases pour voir les tâches associées.",
|
||
"showCompletion": "Afficher le % de complétion",
|
||
"showCompletionDescription": "Afficher une barre de progression et un pourcentage montrant combien de tâches sont terminées dans chaque phase.",
|
||
"showTasks": "Afficher les tâches",
|
||
"showTasksDescription": "Les clients peuvent voir les tâches individuelles dans chaque phase. Les tâches sont affichées en tableau Kanban ou en liste groupée par statut.",
|
||
"visibleTaskFields": "Champs de tâche visibles",
|
||
"visibleTaskFieldsDescription": "Sélectionnez les détails de tâche visibles pour les clients. Les champs non cochés seront masqués des fiches de tâche.",
|
||
"required": "(requis)",
|
||
"summary": {
|
||
"projectInfo": "Nom du projet, description, dates et progression globale",
|
||
"budgetHours": "Heures budgétées : totaux consommés vs. budgétés et % utilisé",
|
||
"phaseInfo": "Noms des phases, descriptions et plages de dates",
|
||
"phaseCompletion": "Pourcentage de complétion pour chaque phase",
|
||
"taskDetails": "Détails des tâches : {{fields}}",
|
||
"fields": {
|
||
"taskNames": "noms des tâches",
|
||
"descriptions": "descriptions",
|
||
"dueDates": "dates d'échéance",
|
||
"status": "statut",
|
||
"assignees": "assignés",
|
||
"estimatedHours": "heures estimées",
|
||
"actualHours": "heures réelles",
|
||
"priority": "priorité",
|
||
"checklist": "noms et complétion des éléments de liste de contrôle",
|
||
"dependencies": "dépendances de tâches",
|
||
"documentUploads": "téléchargements de documents"
|
||
}
|
||
},
|
||
"fieldLabels": {
|
||
"task_name": "Nom de la tâche",
|
||
"description": "Description",
|
||
"due_date": "Date d'échéance",
|
||
"status": "Statut",
|
||
"assigned_to": "Assigné à",
|
||
"estimated_hours": "Heures estimées",
|
||
"actual_hours": "Heures réelles",
|
||
"priority": "Priorité",
|
||
"checklist_progress": "Liste de contrôle",
|
||
"services": "Services",
|
||
"dependencies": "Dépendances",
|
||
"document_uploads": "Téléchargements de documents"
|
||
}
|
||
},
|
||
"quickAddStatus": {
|
||
"title": "Créer un nouveau statut",
|
||
"statusName": "Nom du statut",
|
||
"namePlaceholder": "ex. En cours, Révision, Terminé",
|
||
"statusColor": "Couleur du statut",
|
||
"changeColor": "Changer la couleur",
|
||
"markClosed": "Marquer comme statut fermé",
|
||
"markClosedDescription": "Les tâches dans les statuts fermés sont considérées comme terminées",
|
||
"creating": "Création...",
|
||
"createButton": "Créer le statut",
|
||
"nameRequired": "Le nom du statut est requis",
|
||
"duplicateName": "Un statut avec ce nom existe déjà",
|
||
"createdSuccess": "Statut \"{{name}}\" créé avec succès",
|
||
"createFailed": "Échec de la création du statut"
|
||
},
|
||
"dependencies": {
|
||
"dependsOn": "Dépend de",
|
||
"unknownTask": "Tâche inconnue",
|
||
"blocks": "Bloque"
|
||
},
|
||
"columnsHidden": "colonne(s) masquée(s) par manque de place. Redimensionner le navigateur pour en voir plus.",
|
||
"projectPrint": {
|
||
"tasks": {
|
||
"title": "Tâches du projet",
|
||
"subtitle": "{{count}} tâches",
|
||
"noTasks": "Aucune tâche de projet à imprimer",
|
||
"emptyValue": "-",
|
||
"hoursValue": "{{actual}} / {{estimated}}",
|
||
"columns": {
|
||
"task": "Tâche",
|
||
"phase": "Phase",
|
||
"status": "Statut",
|
||
"assignee": "Assigné à",
|
||
"dueDate": "Échéance",
|
||
"hours": "Heures"
|
||
},
|
||
"optionsDialog": {
|
||
"title": "Options d'impression",
|
||
"description": "Choisissez les colonnes à inclure lors de l'impression des tâches."
|
||
},
|
||
"fields": {
|
||
"phase": "Phase",
|
||
"status": "Statut",
|
||
"assignee": "Assigné à",
|
||
"dueDate": "Date d'échéance",
|
||
"estimatedHours": "Heures estimées",
|
||
"wbsCode": "Code WBS",
|
||
"description": "Description"
|
||
},
|
||
"subtitleSelected": "{{count}} tâches sélectionnées"
|
||
}
|
||
},
|
||
"bulkActions": {
|
||
"selectedCount": "{{count}} sélectionné(s)",
|
||
"move": "Déplacer",
|
||
"assign": "Affecter",
|
||
"delete": "Supprimer",
|
||
"clear": "Effacer",
|
||
"tags": "Étiquettes"
|
||
},
|
||
"bulk": {
|
||
"tags": {
|
||
"dialogTitle": "Ajouter des étiquettes aux tâches sélectionnées",
|
||
"message": "Ajoutez une ou plusieurs étiquettes à {{count}} tâche(s) sélectionnée(s). Les étiquettes déjà présentes sur une tâche sont ignorées.",
|
||
"placeholder": "Saisissez une étiquette et appuyez sur Entrée",
|
||
"submitting": "Ajout des étiquettes...",
|
||
"confirm_one": "Ajouter des étiquettes à {{count}} tâche",
|
||
"confirm_other": "Ajouter des étiquettes à {{count}} tâches",
|
||
"failedHeading": "Impossible d'ajouter des étiquettes aux tâches suivantes :"
|
||
}
|
||
},
|
||
"common:actions": {
|
||
"back": "Retour",
|
||
"cancel": "Annuler",
|
||
"delete": "Supprimer",
|
||
"done": "Terminé",
|
||
"edit": "Modifier",
|
||
"save": "Enregistrer"
|
||
}
|
||
}
|