{ "landing": { "hero": { "badgeText": "Command as Service · Human + Agent Engineering", "heading": "Where Humans & Agents Engineer Together.", "subtitle": "Every action is a command. Every command is versioned, auditable, and composable. Git repositories, rooms, and AI agents — all driven by a command stream you own.", "startBuilding": "Start Building", "viewDocumentation": "View Documentation", "terminalTitle": "gitdata — every action is a command" }, "features": { "sectionTitle": "Build. Review. Automate. All via Commands.", "sectionSubtitle": "Every capability is exposed as a command. Agents listen. Humans approve. Everything is logged and replayable.", "commandAsService": { "title": "Command as Service", "description": "Every action — a repo create, a PR review, an agent deploy — is a versioned command. Audit, replay, and compose them. Your CLI is your API." }, "collaborativeRooms": { "title": "Collaborative Rooms", "description": "Command-first rooms where humans and AI agents work together via shared command streams. Issue commands, review results, and build consensus — all in one thread." }, "aiAgents": { "title": "Agents IA", "description": "Deploy agents that listen to room commands, execute tasks, and report back. Agents run skills, query repos, and call your own services." }, "gitRepositories": { "title": "Depots Git", "description": "Full Git operations — branches, commits, merges, and diffs. HTTP and SSH access. Built-in branch protection and access control." }, "issuesPullRequests": { "title": "Issues & Pull Requests", "description": "Track issues, review code, and manage pull requests. Agents can listen to PR events and automatically run review commands." }, "skillRegistry": { "title": "Skill Registry", "description": "Package agent behaviors as reusable Skills. Publish to a registry, pull into any room, and invoke via command. Your workflows become shared services." }, "commandAuditTrail": { "title": "Command Audit Trail", "description": "Every command is logged with its intent, result, and caller. Trace every AI decision back to the human who issued it." }, "agentMemory": { "title": "Agent Memory", "description": "Agents have persistent, git-native memory. Branch, commit, and roll back context just like source code. No more stateless agents." } }, "highlight": { "heading": "Your CLI is also your API.", "subtitle": "Every GitDataAI action is a command with a name, parameters, and a result. Agents subscribe to command streams. Rooms execute commands. Your entire development workflow becomes a versioned, replayable, diffable stream — without a separate event bus.", "commandsAllTheWayDown": { "title": "Commands All the Way Down", "description": "Every operation — repo create, agent deploy, skill run — is a command. Your workflow is a composable, queryable stream." }, "agentsListenToCommands": { "title": "Agents Listen to Commands", "description": "Deploy an agent to a room and it subscribes to command events. Agents don't guess — they execute what you command." }, "gitNativeAudit": { "title": "Git-Native Audit", "description": "Command history is stored in Git. Branch your command log, diff a workflow, replay it anywhere. Full traceability without a separate log store." }, "approve": "Approuver", "viewDiff": "Voir le diff" }, "nav": { "platform": "Plateforme", "skills": "Skills", "network": "Reseau", "pricing": "Tarifs", "signIn": "Se connecter", "joinBeta": "Rejoindre la beta", "commandAsServiceNav": "Command as Service", "collaborativeRoomsNav": "Collaborative Rooms", "aiAgentsNav": "Agents IA", "gitRepositoriesNav": "Depots Git", "exploreSkillsNav": "Explorer les skills", "publishSkillNav": "Publier un skill", "skillDocumentationNav": "Documentation des skills", "exploreNetworkNav": "Explorer le reseau", "publicRoomsNav": "Salons publics", "developerApiNav": "Developer API", "plansPricingNav": "Plans & Tarifs", "enterpriseNav": "Enterprise", "billingFaqNav": "FAQ Facturation" }, "footer": { "readyHeading": "Pret pour l'ere des agents?", "getStartedFree": "Commencer gratuitement", "contactSales": "Contacter le service commercial", "platform": "Plateforme", "skills": "Skills", "developers": "Developpeurs", "company": "Entreprise", "gitRepositories": "Depots Git", "issuesPullRequests": "Issues & PRs", "collaborativeRooms": "Collaborative Rooms", "aiAgents": "Agents IA", "commandStream": "Command Stream", "skillRegistry": "Skill Registry", "publishSkill": "Publier un skill", "skillDocs": "Documentation des skills", "community": "Communaute", "documentation": "Documentation", "cliReference": "Reference CLI", "apiReference": "Reference API", "status": "Statut", "about": "A propos", "careers": "Carrieres", "contact": "Contact", "privacy": "Confidentialite", "brandTagline": "The platform where humans and AI agents engineer together via commands. Every action versioned. Every agent accountable. Built for teams that ship." } }, "auth": { "login": { "heading": "Se connecter", "subtitleWelcome": "Bienvenue sur GitDataAI", "subtitleContinue": "Continuer vers {path}", "usernameLabel": "Nom d'utilisateur", "usernamePlaceholder": "Entrez votre nom d'utilisateur", "passwordLabel": "Mot de passe", "passwordForgot": "Oublie?", "verificationLabel": "Verification", "verificationPlaceholder": "Entrez le code", "submitButton": "Se connecter", "noAccount": "Pas encore de compte?", "createOne": "Creer un compte", "errorFillRequired": "Veuillez remplir tous les champs obligatoires.", "errorInvalidCredentials": "Identifiants invalides. Veuillez reessayer." }, "register": { "heading": "Creer un compte", "subtitle": "Rejoignez la prochaine generation de collaboration humain-agent", "emailLabel": "E-mail", "emailPlaceholder": "nom@entreprise.fr", "usernameLabel": "Nom d'utilisateur", "usernamePlaceholder": "architecte_01", "passwordLabel": "Mot de passe", "passwordPlaceholder": "••••••••", "confirmLabel": "Confirmer", "confirmPlaceholder": "••••••••", "verificationLabel": "Verification", "verificationPlaceholder": "Captcha", "submitButton": "Creer le compte", "alreadyHaveAccount": "Deja un compte?", "signIn": "Se connecter", "encrypted": "Chiffre", "errorEmailRequired": "L'e-mail est requis", "errorInvalidEmail": "Adresse e-mail invalide", "errorUsernameRequired": "Le nom d'utilisateur est requis", "errorUsernameLength": "Le nom d'utilisateur doit contenir au moins 3 caracteres", "errorPasswordRequired": "Le mot de passe est requis", "errorPasswordLength": "Le mot de passe doit contenir au moins 8 caracteres", "errorPasswordComplexity": "Le mot de passe doit contenir des majuscules, des minuscules et un chiffre", "errorPasswordMismatch": "Les mots de passe ne correspondent pas", "errorCaptchaRequired": "Le code de verification est requis", "errorRegistrationFailed": "Echec de l'inscription", "successAccountCreated": "Compte cree avec succes!" }, "passwordReset": { "heading": "Reinitialiser le mot de passe", "subtitle": "Entrez votre adresse e-mail et nous vous enverrons un lien pour vous reconnecter a votre compte.", "emailLabel": "Adresse e-mail", "emailPlaceholder": "nom@exemple.fr", "submitButton": "Envoyer le lien de reinitialisation", "backToSignIn": "Retour a la connexion", "successHeading": "Verifiez votre e-mail", "successMessage": "Nous avons envoye un lien securise a {email}. Cliquez sur le lien pour reinitialiser votre phrase secrete.", "returnToSignIn": "Retour a la connexion", "didNotReceive": "Pas recu l'e-mail? Verifiez votre dossier spam ou", "tryAgain": "reessayez", "secureLink": "Lien securise", "expiry24h": "Expire dans 24h", "errorEmailRequired": "L'adresse e-mail est requise.", "errorInvalidEmail": "Veuillez entrer une adresse e-mail valide.", "errorSendFailed": "Echec de l'envoi de l'e-mail de reinitialisation.", "successLinkSent": "Lien de reinitialisation envoye!" }, "confirmPasswordReset": { "heading": "Definir un nouveau mot de passe", "subtitle": "Creez un mot de passe强者 pour votre compte.", "newPasswordLabel": "Nouveau mot de passe", "newPasswordPlaceholder": "Au moins 8 caracteres", "confirmPasswordLabel": "Confirmer le mot de passe", "confirmPasswordPlaceholder": "Repetez votre mot de passe", "submitButton": "Reinitialiser le mot de passe", "backToSignIn": "Retour a la connexion", "successHeading": "Reinitialisation du mot de passe terminee", "successMessage": "Votre mot de passe a ete mis a jour. Vous pouvez maintenant vous connecter avec votre nouveau mot de passe.", "signIn": "Se connecter", "passwordUpdated": "Mot de passe mis a jour", "secureConnection": "Connexion securisee", "errorMissingToken": "Jeton de reinitialisation manquant. Veuillez utiliser le lien de votre e-mail.", "errorPasswordRequired": "Le nouveau mot de passe est requis.", "errorPasswordLength": "Le mot de passe doit contenir au moins 8 caracteres.", "errorPasswordUppercase": "Le mot de passe doit contenir au moins une majuscule.", "errorPasswordLowercase": "Le mot de passe doit contenir au moins une minuscule.", "errorPasswordDigit": "Le mot de passe doit contenir au moins un chiffre.", "errorPasswordMismatch": "Les mots de passe ne correspondent pas.", "errorResetFailed": "Echec de la reinitialisation du mot de passe. Le lien a peut-etre expire.", "successResetComplete": "Mot de passe reinitialise avec succes!" }, "verifyEmail": { "heading": "Verification de l'e-mail", "loadingText": "Verification du jeton securise...", "successHeading": "Identite confirmee", "successMessage": "Votre e-mail a ete verifie avec succes. Vous avez maintenant un acces complet a la plateforme GitDataAI.", "goToDashboard": "Aller au tableau de bord", "errorHeading": "Echec de la verification", "backToSettings": "Retour aux parametres", "needHelp": "Besoin d'aide?", "contactSupport": "Contacter le support technique", "encryptedLink": "Lien chiffre", "soc2Compliant": "Conforme SOC2", "errorTokenMissing": "Le jeton de verification est manquant ou mal forme.", "errorLinkExpired": "Le lien de verification a expire ou est invalide.", "successVerified": "Identite verifiee avec succes." }, "acceptWorkspaceInvite": { "heading": "Invitation Workspace", "loadingHeading": "Validation de l'invitation", "loadingText": "Verification des permissions et du statut du workspace...", "successHeading": "Bienvenue a bord!", "successMessage": "Invitation acceptee. Vous avez ete ajoute a l'equipe. Nous vous redirigeons vers le tableau de bord.", "proceedManually": "Proceder manuellement", "errorHeading": "Invitation invalide", "returnHome": "Retour a l'accueil", "needNewLink": "Besoin d'un nouveau lien?", "contactAdmin": "Contacter l'admin du workspace", "secureJoin": "JOINTURE SECURISEE", "dataOwnership": "PROPRIETE DES DONNEES", "errorMissingToken": "Le lien d'invitation ne contient pas de jeton de securite valide.", "errorExpired": "Le lien d'invitation a expire ou a deja ete utilise.", "successJoined": "Vous avez rejoint le workspace avec succes" } }, "project": { "overview": { "settings": "Parametres", "members": "membres", "likes": "likes", "watches": "abonnements", "public": "Public", "private": "Prive", "activity": "Activite", "viewAll": "Voir tout", "recentEvents": "Evenements recents dans ce projet", "noActivity": "Pas encore d'activite.", "projectInfo": "Info projet", "projectName": "Nom du projet", "yourRole": "Votre role", "created": "Cree", "visibility": "Visibilite", "guest": "Invite", "quickActions": "Actions rapides", "newIssue": "Nouvel Issue", "viewActivity": "Voir l'activite", "membersAction": "Membres", "createRepository": "Creer un depot", "projectNotFound": "Projet non trouve.", "noDescription": "Aucune description fournie", "expand": "Developper", "collapse": "Reduire" }, "eventTypes": { "commit": "Commit", "branch": "Branche", "tag": "Tag", "issue": "Issue", "comment": "Commentaire", "pullRequest": "Pull Request", "merged": "Fusionne", "message": "Message", "room": "Salon", "starred": "Favori ajoute", "unstarred": "Favori retire", "watched": "Abonne", "unwatched": "Desabonne", "member": "Membre", "label": "Label", "repo": "Depot" }, "dateLabels": { "today": "Aujourd'hui", "yesterday": "Hier" }, "issues": { "breadcrumb": { "projects": "Projets", "issues": "Issues" }, "searchPlaceholder": "Rechercher des issues…", "boardView": "Vue tableau", "listView": "Vue liste", "board": "Tableau", "list": "Liste", "new": "Nouveau", "open": "Ouvert", "closed": "Ferme", "of": "sur", "shown": "affiches", "errorLoading": "Erreur:", "errorLoadFailed": "Echec du chargement des issues", "noIssues": "Aucun issue trouve", "clearSearch": "Effacer la recherche", "title": "Titre", "author": "Auteur", "date": "Date", "newIssue": "Nouvel issue", "noIssuesInColumn": "Aucun issue" }, "issueDetail": { "backToIssues": "Retour aux Issues", "closeIssue": "Fermer l'issue", "reopenIssue": "Rouvrir l'issue", "edit": "Modifier", "openStatus": "Ouvert", "closedStatus": "Ferme", "openedBy": "Ouvert par", "aiTriage": "Triage IA", "highPriority": "haute priorite", "mediumPriority": "priorite moyenne", "lowPriority": "basse priorite", "accept": "Accepter", "applying": "Application en cours…", "ignore": "Ignorer", "noActivity": "Pas encore d'activite.", "openedThisIssue": "a ouvert cet issue", "commented": "a commente", "editComment": "Modifier le commentaire", "deleteComment": "Supprimer le commentaire", "cancel": "Annuler", "save": "Enregistrer", "saving": "Enregistrement…", "leaveComment": "Laisser un commentaire…", "comment": "Commentaire", "posting": "Publication…", "commentCannotEmpty": "Le commentaire ne peut pas etre vide", "isTyping": "{user} tape…", "areTyping": "{user1} et {user2} tapent…", "peopleTyping": "{count} personnes tapent…", "linkedRepositories": "Depots lies", "details": "Details", "status": "Statut", "author": "Auteur", "created": "Cree", "updated": "Mis a jour", "closed": "Ferme", "labelsApplied": "Labels appliques", "failedApplyLabels": "Echec de l'application des labels", "commentAdded": "Commentaire ajoute", "failedAddComment": "Echec de l'ajout du commentaire", "commentDeleted": "Commentaire supprime", "failedDeleteComment": "Echec de la suppression du commentaire", "commentUpdated": "Commentaire mis a jour", "failedUpdateComment": "Echec de la mise a jour du commentaire", "issueClosed": "Issue ferme", "issueReopened": "Issue rouvert", "failedUpdateIssue": "Echec de la mise a jour de l'issue", "errorLoadingIssue": "Echec du chargement de l'issue" }, "room": { "selectChannel": "Selectionnez une chaine", "chooseChannelHint": "Choisissez une chaine dans la barre laterale pour commencer a discuter.", "channels": "Chaines", "noChannelsYet": "Pas encore de chaines", "createChannel": "Creer une chaine", "addCategory": "+ Ajouter une categorie", "categoryNamePlaceholder": "Nom de la categorie", "addChannel": "Ajouter une chaine", "channelSettings": "Parametres de la chaine", "expand": "Developper", "collapse": "Reduire", "mute": "Muet", "unmute": "Reactiver le son", "archive": "Archiver", "unarchive": "Desarchiver", "members": "Membres", "online": "En ligne", "ai": "IA" }, "roomDialog": { "newRoom": "Nouveau salon", "createRoomDescription": "Creez un nouveau salon de chat. Choisissez un nom et une visibilite.", "roomName": "Nom du salon", "roomNamePlaceholder": "ex. general", "publicLabel": "Public (visible par tous les membres du projet)", "cancel": "Annuler", "create": "Creer", "creating": "Creation...", "deleteRoom": "Supprimer le salon", "deleteRoomConfirm": "Etes-vous sur de vouloir supprimer \"{name}\"? Tous les messages seront definitivement supprimes. Cette action est irreversible.", "deleting": "Suppression..." }, "roomChat": { "connecting": "Connexion...", "disconnected": "Deconnecte", "mentions": "@Mentions", "searchMessages": "Rechercher des messages", "memberList": "Liste des membres", "pinnedMessages": "Messages epingles", "roomSettings": "Parametres du salon", "deleteChannel": "Supprimer la chaine", "showChannels": "Afficher les chaines", "hideChannels": "Masquer les chaines", "back": "Retour", "isThinking": "{name} reflechit...", "typingSingular": "{user} tape...", "typingDual": "{user1} et {user2} tapent...", "typingOthers": "{user} et {count} autres tapent...", "messageUpdated": "Message mis a jour", "messageDeleted": "Message supprime", "failedCreateThread": "Echec de la creation du fil", "navigateToMessage": "Naviguer vers le message dans {room}", "roomUpdated": "Salon mis a jour", "failedUpdateRoom": "Echec de la mise a jour du salon" }, "commandPalette": { "placeholder": "Rechercher projets, depots, salons, commandes…", "noResults": "Aucun resultat trouve.", "navigation": "Navigation", "create": "Creer", "projects": "Projets", "repositories": "Depots", "rooms": "Salons", "gotoNotifications": "Aller aux notifications", "createProject": "Creer un projet", "createRepoIn": "Creer un depot dans {project}" }, "issueNew": { "backToIssues": "Retour aux Issues", "creatingIn": "Creation dans {project}", "titleRequired": "Titre *", "titlePlaceholder": "Resume bref de l'issue", "description": "Description", "markdown": "Markdown", "bold": "Gras", "italic": "Italique", "code": "Code", "link": "Lien", "list": "Liste", "quote": "Citation", "bodyPlaceholder": "Decrivez l'issue en detail. Markdown est supporte.", "bodyHint": "Supporte Markdown — utilisez **gras**, `code`, listes, et plus", "linkedRepositories": "Depots lies", "linkedReposHint": "Suivre les commits et pull requests lies a cette issue", "assignees": "Assignes", "labels": "Labels", "cancel": "Annuler", "createIssue": "Creer l'issue", "creating": "Creation…", "discardChanges": "Abandonner les modifications?", "discardChangesDesc": "Vous avez des modifications non enregistrees. Etes-vous sur de vouloir quitter?", "keepEditing": "Continuer a modifier", "discard": "Abandonner", "titleRequiredError": "Le titre est requis", "issueCreated": "Issue cree", "failedCreateIssue": "Echec de la creation de l'issue", "selectAssignees": "Selectionner les assiges", "selectAssigneesDesc": "Choisissez les membres de l'equipe a assigner a cette issue", "noMembers": "Aucun membre trouve dans ce projet", "done": "Termine", "selectLabels": "Selectionner les labels", "selectLabelsDesc": "Choisissez les labels pour categoriser cette issue", "noLabels": "Pas encore de labels dans ce projet" }, "issueEdit": { "backToIssue": "Retour a l'issue #{number}", "editingIssue": "Modification de l'issue #{number}", "title": "Modifier l'issue", "titleSection": "Titre", "titleCantChange": "Le titre ne peut pas etre modifie apres la creation", "status": "Statut", "changeStatusHint": "Modifier le statut depuis la page de detail de l'issue", "description": "Description", "descriptionPlaceholder": "Ajouter une description pour plus de contexte (Markdown supporte)", "markdownHint": "Formatage Markdown supporte", "linkedRepositories": "Depots lies", "noRepositories": "Aucun depot dans ce projet", "cancel": "Annuler", "saveChanges": "Enregistrer les modifications", "saving": "Enregistrement…", "discardChanges": "Abandonner les modifications?", "discardChangesDesc": "Vous avez des modifications non enregistrees. Etes-vous sur de vouloir quitter?", "keepEditing": "Continuer a modifier", "discard": "Abandonner", "issueNotFound": "Issue non trouvee.", "issueUpdated": "Issue mise a jour avec succes", "failedUpdateIssue": "Echec de la mise a jour de l'issue", "returnToIssue": "Retour a l'issue" }, "activity": { "title": "Activite", "subtitle": "Evenements recents dans {project}", "filterEvents": "Filtrer les evenements", "perPage": "{count} / page", "noActivity": "Aucune activite trouvee.", "tryDifferentType": "Essayez de selectionner un autre type d'evenement.", "failedLoad": "Echec du chargement du fil d'activite.", "page": "Page {page} sur {totalPages}", "events": "{count} evenements", "allEvents": "Tous les evenements", "commits": "Commits", "branchCreated": "Branche creee", "branchDeleted": "Branche supprimee", "tagCreated": "Tag cree", "tagDeleted": "Tag supprime", "repoCreated": "Depot cree", "issueOpened": "Issue ouverte", "issueClosed": "Issue fermee", "issueReopened": "Issue rouverte", "issueComment": "Commentaire d'issue", "prOpened": "PR ouverte", "prMerged": "PR fusionnee", "prClosed": "PR fermee", "roomMessage": "Message de salon", "roomCreated": "Salon cree", "projectStarred": "Projet mis en favori", "projectUnstarred": "Favori du projet retire", "memberAdded": "Membre ajoute", "memberRemoved": "Membre supprime", "roleChanged": "Role modifie", "labelCreated": "Label cree", "labelUpdated": "Label mis a jour", "labelDeleted": "Label supprime" }, "resources": { "title": "Ressources", "subtitle": "Gerez et publiez les ressources du projet sur le marketplace.", "comingSoon": "Bientot disponible", "description": "Publiez des skills, des paquets et d'autres ressources sur le marketplace." }, "articles": { "title": "Articles", "subtitle": "Redigez et gerez la documentation et les articles du projet.", "comingSoon": "Bientot disponible", "description": "Redigez et publiez des articles pour votre projet." }, "skillsInit": { "backToSkills": "Retour aux Skills", "title": "Nouveau Skill", "subtitle": "Ajouter un skill a ce projet", "slug": "Slug", "slugPlaceholder": "coding/code-review", "slugHint": "Identifiant unique, utilisez / pour grouper les skills", "displayName": "Nom d'affichage", "namePlaceholder": "Agent de revue de code", "description": "Description", "descPlaceholder": "Revoit les pull requests avec l'IA", "content": "Contenu (SKILL.md)", "contentPlaceholder": "# Revue de code\n\nVous etes un expert en revue de code...", "contentHint": "Markdown decrivant quand et comment utiliser ce skill.", "cancel": "Annuler", "createSkill": "Creer le skill", "created": "Skill \"{name}\" cree", "failedCreate": "Echec de la creation du skill" } }, "notification": { "title": "Notifications", "live": "En direct", "unreadTotal": "{unread} non lues · {total} total", "totalNotifications": "{count} notification{plural}", "noGrouping": "Pas de regroupement", "groupByProject": "Regrouper par projet", "groupByType": "Regrouper par type", "cancel": "Annuler", "markRead": "Marquer comme lu", "archive": "Archiver", "markAllRead": "Tout marquer comme lu", "selectMultiple": "Selection multiple", "selectModeActive": "✓ Mode selection active", "markAllReadInGroup": "Tout marquer comme lu dans le groupe", "filterAll": "Tout", "filterUnread": "Non lues", "filterArchived": "Archivees", "notificationSettings": "Parametres de notification", "noUnread": "Pas de notifications non lues", "noArchived": "Pas de notifications archivees", "noNotifications": "Pas encore de notifications", "allCaughtUp": "Vous etes a jour!", "archivedAppearHere": "Les notifications archivees apparaitront ici.", "notificationsAppearHere": "Vous verrez les notifications ici lorsqu'un evenement se produit.", "justNow": "a l'instant", "minutesAgo": "il y a {count}m", "hoursAgo": "il y a {count}h", "daysAgo": "il y a {count}j", "markAsRead": "Marquer comme lu", "notificationArchived": "Notification archivee", "failedMarkRead": "Echec du marquage comme lu", "failedArchive": "Echec de l'archivage", "failedMarkAllRead": "Echec du marquage de tout comme lu", "notificationsArchived": "{count} notifications archivees", "typeMention": "Mention", "typeInvitation": "Invitation", "typeProjectInvite": "Invitation projet", "typeWorkspaceInvite": "Invitation workspace", "typeRoleChange": "Changement de role", "typeRoomCreated": "Salon cree", "typeRoomDeleted": "Salon supprime", "typeAnnouncement": "Annonce", "typeIssueOpened": "Issue ouverte", "typeIssueCommented": "Commentaire d'issue", "typeIssueClosed": "Issue fermee", "typeReviewRequested": "Revue demandee", "typePrApproved": "PR approuvee", "typePrMerged": "PR fusionnee" }, "search": { "placeholder": "Rechercher projets, depots, issues, utilisateurs...", "searchButton": "Rechercher", "projects": "Projets", "repositories": "Depots", "issues": "Issues", "users": "Utilisateurs", "messages": "Messages", "resultsFor": "{count} resultats pour \"{query}\"", "noResultsFor": "Aucun resultat pour \"{query}\"", "messagesFor": "{count} message{plural} pour \"{query}\"{inRoom}", "noMessagesFor": "Aucun message trouve correspondant a \"{query}\"", "noMessagesInRoom": "Aucun message trouve dans le salon \"{room}\" correspondant a \"{query}\"", "searchFailed": "Echec de la recherche", "enterKeyword": "Entrez un mot-cle pour rechercher dans tous les contenus.", "noResultsFound": "Aucun resultat trouve", "tryDifferentKeywords": "Essayez d'autres mots-cles ou verifiez l'orthographe.", "showing": "Affichage de {count} sur {total} {type}", "roomIdPlaceholder": "ID du salon pour rechercher les messages (ex. workspace:general)...", "acrossAllRooms": "dans tous les salons accessibles", "inRoom": " dans le salon {room}" }, "settings": { "account": { "title": "Compte", "subtitle": "Gerez les informations et preferences de votre compte.", "changePassword": "Changer le mot de passe", "changePasswordDesc": "Mettez a jour votre mot de passe pour securiser votre compte.", "currentPassword": "Mot de passe actuel", "currentPasswordPlaceholder": "Entrez votre mot de passe actuel", "newPassword": "Nouveau mot de passe", "newPasswordPlaceholder": "Entrez votre nouveau mot de passe", "confirmNewPassword": "Confirmer le nouveau mot de passe", "confirmNewPasswordPlaceholder": "Confirmez votre nouveau mot de passe", "passwordMinLength": "Doit contenir au moins 8 caracteres", "changePasswordButton": "Changer le mot de passe", "changing": "Modification...", "emailAddress": "Adresse e-mail", "emailAddressDesc": "Mettez a jour votre adresse e-mail. Un e-mail de verification sera envoye pour confirmation.", "currentEmail": "E-mail actuel", "noEmailOnRecord": "Pas d'e-mail enregistre", "newEmailAddress": "Nouvelle adresse e-mail", "newEmailPlaceholder": "Entrez votre nouvelle adresse e-mail", "confirmWithPassword": "Confirmer avec le mot de passe", "passwordPlaceholder": "Entrez votre mot de passe actuel", "sendVerificationEmail": "Envoyer l'e-mail de verification", "sending": "Envoi...", "preferences": "Preferences", "preferencesDesc": "Personnalisez vos preferences de compte et parametres de notification.", "language": "Langue", "theme": "Theme", "timezone": "Fuseau horaire", "light": "Clair", "dark": "Sombre", "system": "Systeme", "notifications": "Notifications", "emailNotifications": "Notifications par e-mail", "emailNotificationsDesc": "Recevoir des notifications par e-mail pour les mises a jour importantes", "inAppNotifications": "Notifications dans l'application", "inAppNotificationsDesc": "Afficher les notifications dans l'application", "reset": "Reinitialiser", "saveChanges": "Enregistrer les modifications", "saving": "Enregistrement...", "passwordChangedSuccess": "Mot de passe change avec succes", "preferencesUpdatedSuccess": "Preferences mises a jour avec succes", "failedChangePassword": "Echec du changement de mot de passe", "failedUpdatePreferences": "Echec de la mise a jour des preferences", "failedLoadPreferences": "Echec du chargement des preferences.", "verificationEmailSent": "E-mail de verification envoye! Veuillez verifier votre nouvel e-mail pour confirmer.", "failedRequestEmailChange": "Echec de la demande de changement d'e-mail", "enterCurrentPassword": "Veuillez entrer votre mot de passe actuel", "enterNewPassword": "Veuillez entrer un nouveau mot de passe", "newPasswordMinLength": "Le nouveau mot de passe doit contenir au moins 8 caracteres", "passwordsDoNotMatch": "Les mots de passe ne correspondent pas", "enterNewEmail": "Veuillez entrer une nouvelle adresse e-mail", "enterValidEmail": "Veuillez entrer une adresse e-mail valide", "enterPasswordConfirm": "Veuillez entrer votre mot de passe pour confirmer" }, "preferences": { "title": "Preferences", "subtitle": "Gerez vos preferences personnelles et parametres de notification.", "notificationChannels": "Canaux de notification", "notificationChannelsDesc": "Choisissez comment vous souhaitez recevoir les notifications.", "emailNotificationsLabel": "Notifications par e-mail", "emailNotificationsDesc": "Recevoir les notifications par e-mail", "inAppNotificationsLabel": "Notifications dans l'application", "inAppNotificationsDesc": "Afficher les notifications dans l'application", "browserPush": "Notifications push du navigateur", "pushUnsupported": "Votre navigateur ne supporte pas les notifications push", "pushBlocked": "Bloque par le navigateur. Activez dans les parametres du site.", "pushSubscribed": "Abonne — vous recevrez des notifications navigateur", "pushNotSubscribed": "Recevoir des notifications meme lorsque l'onglet est ferme", "pushEnable": "Activer", "pushDisable": "Desactiver", "doNotDisturb": "Ne pas deranger", "doNotDisturbDesc": "Definissez des heures silencieuses pendant lesquelles vous ne souhaitez pas etre derange.", "enableDnd": "Activer Ne pas deranger", "dndDesc": "Desactiver les notifications pendant des heures specifiques", "startTime": "Heure de debut", "endTime": "Heure de fin", "notificationCategories": "Categories de notification", "notificationCategoriesDesc": "Choisissez les types de notifications que vous souhaitez recevoir.", "securityAlerts": "Alertes de securite", "securityAlertsDesc": "Mises a jour et alertes de securite importantes", "productUpdates": "Mises a jour produit", "productUpdatesDesc": "Nouvelles fonctionnalites et annonces produit", "marketingPromotions": "Marketing & Promotions", "marketingDesc": "Conseils, offres et contenus promotionnels", "developmentActivity": "Activite de developpement", "developmentActivityDesc": "Controlez les notifications pour l'activite de revue de code et de collaboration.", "issuesActivity": "Issues", "issuesActivityDesc": "Ouvertes, fermees, assignees ou commentees", "pullRequestsActivity": "Pull Requests", "prActivityDesc": "Revue demandee, approuvee, fusionnee ou commentee", "mentionsActivity": "@Mentions", "mentionsActivityDesc": "Quand quelqu'un vous mentionne dans un message, issue ou PR", "roomMessagesActivity": "Messages de salon", "roomMessagesDesc": "Nouveaux messages dans les chaines auxquelles vous etes abonne" }, "security": { "title": "Securite", "subtitle": "Gerez vos parametres de securite et methodes d'authentification.", "securitySettings": "Parametres de securite", "securityDesc": "Configurez l'authentification a deux facteurs, les politiques de mot de passe et la gestion des sessions.", "twoFactorAuth": "Authentification a deux facteurs", "twoFactorDesc": "Ajoutez une couche de securite supplementaire requiring plus qu'un simple mot de passe pour vous connecter.", "enable": "Activer", "disable": "Desactiver", "passwordPolicy": "Politique de mot de passe", "passwordPolicyDesc": "Definissez les exigences de force du mot de passe", "standard": "Standard", "sessionManagement": "Gestion des sessions", "sessionManagementDesc": "Voir et gerer les sessions actives", "active": "actif", "manage": "Gerer" }, "profile": { "title": "Profil", "subtitle": "Gerez vos informations personnelles et parametres de profil.", "profileInfo": "Informations du profil", "profileInfoDesc": "Voir vos informations de base du compte.", "username": "Nom d'utilisateur", "displayName": "Nom d'affichage", "notSet": "Non defini", "email": "E-mail", "memberSince": "Membre depuis", "publicProfile": "Profil public", "publicProfileDesc": "Mettez a jour vos informations de profil public.", "publicAvatar": "Avatar public", "uploadAvatar": "Telecharger un nouvel avatar", "avatarFormat": "JPG, GIF ou PNG. Taille max 2Mo.", "bio": "Bio", "bioPlaceholder": "Parlez-nous de vous", "bioDesc": "Votre bio ou description", "organization": "Organisation", "orgPlaceholder": "Votre entreprise ou organisation", "orgDesc": "L'organisation a laquelle vous appartenez", "reset": "Reinitialiser", "saveChanges": "Enregistrer les modifications", "saving": "Enregistrement...", "avatarUploaded": "Avatar telecharge avec succes", "failedUploadAvatar": "Echec du telechargement de l'avatar", "fileSizeLimit": "La taille du fichier doit etre inferieure a 2Mo", "profileUpdated": "Profil mis a jour avec succes", "failedUpdateProfile": "Echec de la mise a jour du profil" }, "tokens": { "title": "Jetons", "subtitle": "Gerez vos jetons d'acces personnel pour l'acces API.", "createToken": "Creer un jeton", "personalAccessTokens": "Jetons d'acces personnel", "noTokensDesc": "Aucun jeton trouve. Creez un nouveau jeton pour commencer.", "tokensCount": "Vous avez {count} jeton d'acces configure.", "tokensCountPlural": "Vous avez {count} jetons d'acces configures.", "loadingTokens": "Chargement des jetons d'acces...", "noAccessTokens": "Aucun jeton d'acces", "noAccessTokensDesc": "Creez un jeton d'acces personnel pour authentifier les requetes API et acceder aux depots Git via HTTPS.", "createFirstToken": "Creez votre premier jeton", "untitled": "Sans titre", "revoked": "Revoque", "scopes": "Portees:", "created": "Cree le {date}", "expires": "Expire le {date}", "neverExpires": "N'expire jamais", "revoke": "Revoquer", "createAccessToken": "Creer un jeton d'acces", "createTokenDesc": "Creez un nouveau jeton d'acces personnel pour l'authentification API.", "tokenName": "Nom du jeton", "tokenNamePlaceholder": "ex., Pipeline CI/CD, Environnement de developpement", "tokenNameDesc": "Choisissez un nom descriptif pour ce jeton", "scopesLabel": "Portees", "scopesDesc": "Selectionnez les permissions de ce jeton", "expirationDate": "Date d'expiration (Optionnel)", "expirationDesc": "Laissez vide pour pas d'expiration", "cancel": "Annuler", "creating": "Creation...", "tokenCreated": "Jeton cree avec succes", "tokenCreatedDesc": "Assurez-vous de copier votre jeton d'acces maintenant. Vous ne pourrez plus le voir!", "yourAccessToken": "Votre jeton d'acces", "tokenImportant": "Important: Ce jeton ne sera montre qu'une seule fois. Stockez-le en securite.", "iHaveSavedToken": "J'ai enregistre mon jeton", "tokenCopied": "Jeton copie dans le presse-papiers", "deleteTokenTitle": "Supprimer le jeton d'acces", "deleteTokenDesc": "Etes-vous sur de vouloir supprimer ce jeton d'acces? Cette action est irreversible et toute application utilisant ce jeton perdra immediatement l'acces.", "deleting": "Suppression...", "delete": "Supprimer", "revokeTokenTitle": "Revoquer le jeton d'acces", "revokeTokenDesc": "Etes-vous sur de vouloir revoker ce jeton d'acces? Le jeton sera desactive immediatement et ne pourra plus etre utilise pour l'authentification.", "tokenCreatedSuccess": "Jeton d'acces cree avec succes", "failedCreateToken": "Echec de la creation du jeton", "tokenDeleted": "Jeton d'acces supprime avec succes", "failedDeleteToken": "Echec de la suppression du jeton", "nameRequired": "Veuillez entrer un nom pour le jeton d'acces", "scopeRequired": "Veuillez selectionner au moins une portee" }, "activity": { "title": "Activite", "subtitle": "Voir votre activite recente et vos notifications.", "markAllRead": "Tout marquer comme lu", "recentNotifications": "Notifications recentes", "unread": "{count} non lues", "noNotifications": "Pas encore de notifications. Votre activite apparaitra ici.", "newLabel": "Nouveau", "noContent": "Pas de contenu", "unknownDate": "Date inconnue", "allMarkedRead": "Toutes les notifications marquees comme lues", "failedMarkAllRead": "Echec du marquage de toutes les notifications comme lues", "markedRead": "Notification marquee comme lue", "failedMarkRead": "Echec du marquage de la notification comme lue" } }, "init": { "project": { "title": "Creer un nouveau projet", "subtitle": "Creez un nouveau projet pour organiser vos depots", "projectName": "Nom du projet", "namePlaceholder": "mon-super-projet", "description": "Description", "descPlaceholder": "Une breve description de votre projet...", "workspace": "Workspace", "noWorkspace": "Pas de workspace (projet independant)", "workspaceHint": "Associez facultativement ce projet a un workspace.", "publicProject": "Projet public", "publicProjectHint": "Rendre ce projet visible par tous", "creating": "Creation...", "createProject": "Creer le projet", "cancel": "Annuler", "nameRequired": "Le nom du projet est requis", "nameAvailable": "Le nom du projet est disponible", "nameExists": "Le nom du projet existe deja", "failedCheckAvailability": "Echec de la verification de disponibilite", "failedCreate": "Echec de la creation du projet", "createdSuccess": "Projet cree avec succes!" }, "repository": { "title": "Creer un nouveau depot", "subtitle": "Creez un nouveau depot Git dans votre projet", "project": "Projet", "noProjects": "Vous n'avez pas encore de projets.", "createProject": "Creer un projet", "selectProject": "Selectionner un projet", "loadingProjects": "Chargement des projets...", "repoName": "Nom du depot", "namePlaceholder": "mon-super-depot", "description": "Description", "descPlaceholder": "Une breve description de votre depot...", "defaultBranch": "Branche par defaut", "defaultBranchPlaceholder": "main", "initRepo": "Initialiser le depot", "initRepoOn": "Creer un depot git nu maintenant. Definissez la branche par defaut ci-dessous.", "initRepoOff": "Passer l'initialisation. La branche par defaut sera definie automatiquement lors du push.", "privateRepo": "Depot prive", "privateAuto": "Ce depot doit etre prive car le projet est prive", "privateManual": "Rendre ce depot prive et restreindre l'acces", "creating": "Creation...", "createRepo": "Creer le depot", "cancel": "Annuler", "selectProjectFirst": "Veuillez d'abord selectionner un projet", "nameRequired": "Le nom du depot est requis", "nameAvailable": "Le nom du depot est disponible", "nameExists": "Le nom du depot existe deja", "failedCheckAvailability": "Echec de la verification de disponibilite", "failedCreate": "Echec de la creation du depot", "createdSuccess": "Depot cree avec succes", "failedLoadProjects": "Echec du chargement des projets", "failedLoadDetails": "Depot cree mais echec du chargement des details" } }, "pricing": { "title": "Tarification simple et transparente.", "subtitle": "Commencez gratuitement. Scalez selon la croissance de votre flotte d'agents.", "free": "Gratuit", "freePrice": "0 €", "freePeriod": "pour toujours", "freeDesc": "Command as Service pour les particuliers — commandes versionnees, memoire d'agent et registre de skills inclus.", "freeCta": "Commencer gratuitement", "freeFeatures": [ "3 agents actifs", "5 Go de memoire d'agent", "Registre de skills communautaire", "Salons publics", "Historique de 7 jours" ], "pro": "Pro", "proPrice": "29 €", "proPeriod": "par mois", "proDesc": "Command as Service pour les equipes — agents illimites, audit complet du flux de commandes et calcul prioritaire.", "proCta": "Obtenir Pro", "proFeatures": [ "Agents illimites", "50 Go de memoire d'agent", "Registre de skills prive", "Collaborative Rooms", "Historique de 90 jours", "Calcul prioritaire", "Support par e-mail" ], "enterprise": "Enterprise", "enterprisePrice": "Sur mesure", "enterpriseDesc": "Command as Service a grande echelle — deploiement personnalise, gouvernance granulaire du flux de commandes et SLA dedie pour votre flotte d'agents.", "enterpriseCta": "Contacter le service commercial", "enterpriseFeatures": [ "Tout de Pro", "Memoire illimitee", "SSO / SAML", "Routage de modele personnalise", "Calcul dedie", "Garantie SLA", "Support dedie" ], "faqHeading": "Questions frequentes", "faqSubtitle": "Reponses aux questions de facturation.", "faq1Q": "Puis-je changer de plan a tout moment?", "faq1A": "Oui. Passez a un forfait superieur ou inferieur a tout moment. Les modifications prennent effet au prochain cycle de facturation.", "faq2Q": "Qu'est-ce qui compte comme memoire d'agent?", "faq2A": "La memoire d'agent est le contexte persistant total stocke sur tous vos agents, incluant l'historique de conversation et la memoire a long terme.", "faq3Q": "Y a-t-il un essai gratuit pour Pro?", "faq3A": "Oui — le forfait gratuit vous permet d'explorer toutes les fonctionnalites Pro pendant 14 jours lors de la mise a niveau." }, "repository": { "list": { "repositories": "Depots", "searchPlaceholder": "Rechercher des depots…", "filter": "Filtrer", "new": "Nouveau", "filters": "Filtres", "clearAll": "Tout effacer", "visibility": "Visibilite", "all": "Tout", "public": "Public", "private": "Prive", "sortBy": "Trier par", "lastUpdated": "Derniere mise a jour", "name": "Nom", "linkedIssues": "Issues liees", "stars": "Etoiles", "repository": "depot", "repositoriesPlural": "depots", "errorLoading": "Erreur:", "errorLoadFailed": "Echec du chargement des depots", "noRepositories": "Aucun depot trouve", "clearFilters": "Effacer les filtres", "watches": "Abonnements", "branches": "Branches", "defaultBranch": "Branche par defaut", "lastUpdatedColumn": "Derniere mise a jour", "never": "Jamais", "showing": "Affichage de {start}–{end} sur {total}", "previous": "Precedent", "next": "Suivant", "page": "Page {page}" }, "overview": { "repositoryStats": "Statistiques du depot", "defaultBranch": "Branche par defaut", "commits": "Commits", "branches": "Branches", "tags": "Tags", "stars": "Etoiles", "watchers": "Observateurs", "readme": "README", "starred": "En favori", "unstarred": "Favori retire", "watching": "S'abonner au depot", "stoppedWatching": "Abonnement arrete", "failedToStar": "Echec de l'ajout en favori", "failedToUnstar": "Echec du retrait du favori", "failedToWatch": "Echec de l'abonnement", "failedToUnwatch": "Echec de l'arret de l'abonnement" }, "subpages": { "commits": { "title": "Commits", "description": "Parcourez l'historique des commits de ce depot.", "comingSoon": "Bientot disponible", "notAvailable": "L'historique des commits n'est pas encore disponible." }, "branches": { "title": "Branches", "description": "Gerez et parcourez les branches du depot.", "comingSoon": "Bientot disponible", "notAvailable": "La liste et la gestion des branches ne sont pas encore disponibles." }, "tags": { "title": "Tags", "description": "Parcourez les tags et releases du depot.", "comingSoon": "Bientot disponible", "notAvailable": "La gestion des tags et releases n'est pas encore disponible." }, "files": { "title": "Fichiers", "description": "Parcourez et gerez les fichiers du depot.", "comingSoon": "Bientot disponible", "notAvailable": "Le navigateur de fichiers n'est pas encore disponible." }, "contributors": { "title": "Contributeurs", "description": "Voir les statistiques et l'activite des contributeurs.", "comingSoon": "Bientot disponible", "notAvailable": "Les statistiques des contributeurs ne sont pas encore disponibles." }, "pullRequests": { "title": "Pull Requests", "description": "Creez et gerez les pull requests pour {repo}.", "comingSoon": "Bientot disponible", "notAvailable": "La gestion des pull requests n'est pas encore disponible." } } }, "workspace": { "projects": { "title": "Projets", "newProject": "Nouveau projet", "noProjects": "Pas encore de projets dans ce workspace.", "createFirstProject": "Creez votre premier projet", "noDescription": "Pas de description", "private": "Prive" }, "members": { "title": "Membres", "inviteMember": "Inviter un membre", "inviteTo": "Inviter a {name}", "inviteDescription": "Ils recevront un e-mail avec un lien pour rejoindre ce workspace. Les invitations expirent dans 7 jours.", "emailAddress": "Adresse e-mail", "emailPlaceholder": "collegue@exemple.fr", "role": "Role", "memberRoleDesc": "Membre — peut voir et contribuer aux projets", "adminRoleDesc": "Admin — peut gerer les membres et les parametres", "adminInfo": "Les admins peuvent gerer les parametres du workspace, les membres et la facturation.", "memberInfo": "Les membres peuvent creer et gerer les projets assignes a ce workspace.", "cancel": "Annuler", "sendInvitation": "Envoyer l'invitation", "sending": "Envoi...", "pendingInvitations": "Invitations en attente", "expires": "expire le {date}", "by": "par @{username}", "searchMembers": "Rechercher des membres...", "allRoles": "Tous les roles", "owner": "Proprietaire", "admin": "Admin", "member": "Membre", "memberColumn": "Membre", "roleColumn": "Role", "invitedBy": "Invite par", "joined": "Rejoint", "noMatch": "Aucun membre ne correspond a vos filtres", "noMembers": "Pas encore de membres", "remove": "Supprimer", "page": "Page {page} sur {totalPages}", "totalMembers": "{count} membres au total", "invitationSent": "Invitation envoyee a {email}", "failedSendInvitation": "Echec de l'envoi de l'invitation", "memberRemoved": "Membre supprime", "failedRemoveMember": "Echec de la suppression du membre", "invitationCancelled": "Invitation annulee", "failedCancelInvitation": "Echec de l'annulation de l'invitation", "roleUpdated": "Role mis a jour", "failedUpdateRole": "Echec de la mise a jour du role", "pending": "En attente" }, "settings": { "title": "Parametres du Workspace", "general": "General", "avatarUrl": "URL de l'avatar", "avatarUrlPlaceholder": "https://exemple.fr/avatar.png", "avatarHint": "Entrez une URL vers une image pour l'avatar du workspace.", "workspaceName": "Nom du Workspace", "namePlaceholder": "Mon Workspace", "description": "Description", "descPlaceholder": "Decrivez ce workspace...", "billingEmail": "E-mail de facturation", "billingEmailPlaceholder": "facturation@exemple.fr", "billingHint": "Les factures seront envoyees a cette adresse e-mail.", "saveChanges": "Enregistrer les modifications", "saving": "Enregistrement...", "plan": "Plan", "currentPlan": "Plan actuel", "manageBilling": "Gerer la facturation", "dangerZone": "Zone dangereuse", "deleteWorkspace": "Supprimer le workspace", "deleteWarning": "Supprimer definitivement ce workspace et toutes ses donnees. Cette action est irreversible.", "deletingWorkspace": "Suppression...", "deleteConfirm": "Etes-vous sur de vouloir supprimer ce workspace? Cette action est irreversible.", "updated": "Workspace mis a jour", "failedUpdate": "Echec de la mise a jour du workspace", "deleted": "Workspace supprime", "failedDelete": "Echec de la suppression du workspace" } }, "projectSettings": { "general": { "title": "General", "description": "Description", "projectAvatar": "Avatar du projet", "uploadAvatar": "Telecharger l'avatar", "avatarFormat": "PNG, JPG, GIF ou WebP. Max 2Mo.", "displayName": "Nom d'affichage", "publicVisibility": "Visibilite publique", "publicVisibilityDesc": "Permettre a tous de voir ce projet.", "saveChanges": "Enregistrer les modifications", "confirmTitle": "Confirmer les modifications du projet", "confirmDescription": "Vous etes sur le point de mettre a jour les parametres suivants:", "displayNameField": "Nom d'affichage", "descriptionField": "Description", "visibilityField": "Visibilite: {visibility}", "publicWarning": "Rendre ce projet public permettra a chacun de voir son contenu.", "confirmSave": "Confirmer et enregistrer", "projectAvatarUpdated": "Avatar du projet mis a jour", "failedUploadAvatar": "Echec du telechargement de l'avatar", "fileSizeLimit": "La taille du fichier doit etre inferieure a 2Mo", "projectSettingsUpdated": "Parametres du projet mis a jour", "failedUpdateProject": "Echec de la mise a jour des parametres du projet" }, "members": { "title": "Membres", "invite": "Inviter", "searchMembers": "Rechercher des membres…", "member": "membre", "members": "membres", "noMatchSearch": "Aucun membre ne correspond a votre recherche", "noMembers": "Aucun membre trouve", "clearSearch": "Effacer la recherche", "user": "Utilisateur", "role": "Role", "joined": "Rejoint", "actions": "Actions", "inviteMemberTitle": "Inviter un membre", "email": "E-mail", "emailPlaceholder": "collegue@exemple.fr", "cancel": "Annuler", "sendInvite": "Envoyer l'invitation", "sending": "Envoi…", "removeMemberTitle": "Supprimer le membre", "removeConfirm": "Etes-vous sur de vouloir supprimer {username} de ce projet?", "removing": "Suppression…", "remove": "Supprimer", "invitationSent": "Invitation envoyee", "failedSendInvitation": "Echec de l'envoi de l'invitation", "memberRemoved": "Membre supprime", "failedRemoveMember": "Echec de la suppression du membre", "roleUpdated": "Role mis a jour", "failedUpdateRole": "Echec de la mise a jour du role", "emailRequired": "L'e-mail est requis", "errorLoading": "Erreur:", "failedLoadMembers": "Echec du chargement des membres" }, "labels": { "title": "Labels", "description": "Description", "editLabel": "Modifier le label", "createLabel": "Creer un label", "nameRequired": "Nom *", "namePlaceholder": "Nom du label", "color": "Couleur", "descPlaceholder": "Decrivez ce label", "cancel": "Annuler", "updateLabel": "Mettre a jour le label", "createLabelButton": "Creer le label", "addLabel": "Ajouter un label", "failedToLoad": "Echec du chargement des labels", "noLabels": "Aucun label trouve. Creez votre premier label.", "deleteLabelTitle": "Supprimer le label", "deleteLabelConfirm": "Etes-vous sur de vouloir supprimer ce label? Cette action est irreversible.", "delete": "Supprimer", "labelCreated": "Label cree", "labelUpdated": "Label mis a jour", "labelDeleted": "Label supprime", "failedCreateLabel": "Echec de la creation du label", "failedUpdateLabel": "Echec de la mise a jour du label", "failedDeleteLabel": "Echec de la suppression du label", "nameRequiredError": "Le nom du label est requis" }, "boards": { "title": "Tableaux", "newBoard": "Nouveau tableau", "noBoards": "Pas encore de tableaux", "noBoardsHint": "Creez un tableau pour organiser le travail de votre projet.", "newBoardDialog": "Nouveau tableau", "name": "Nom", "namePlaceholder": "ex. Planification Sprint", "description": "Description", "descriptionPlaceholder": "Optionnel", "cancel": "Annuler", "createBoard": "Creer le tableau", "updated": "Mis a jour le {date}", "failedCreate": "Echec de la creation du tableau" }, "billing": { "currentBilling": "Facturation actuelle", "description": "Quota, utilisation et solde du cycle actuel.", "monthlyQuota": "Quota mensuel", "currentBalance": "Solde actuel", "currentUsage": "Utilisation actuelle", "billingHistory": "Historique de facturation", "billingHistoryDesc": "Enregistrements du flux de facturation du projet.", "noRecords": "Pas encore d'enregistrements de facturation.", "time": "Heure", "reason": "Raison", "amount": "Montant", "currency": "Devise", "type": "Type", "charge": "Debit", "credit": "Credit", "showing": "Affichage de {start} a {end} sur {total} enregistrements", "page": "Page {page} sur {totalPages}", "failedToLoad": "Echec du chargement des informations de facturation." }, "skills": { "title": "Skills", "subtitle": "Instructions d'agent pour ce projet", "searchPlaceholder": "Rechercher des skills...", "all": "Tout", "manual": "Manuel", "repo": "Depot", "scanRepos": "Scanner les depots", "addSkill": "Ajouter un skill", "noSkills": "Aucun skill trouve", "noSkillsHint": "Ajoutez des skills manuellement ou scannez les depots pour decouvrir les fichiers SKILL.md.", "noMatch": "Aucun skill ne correspond a votre recherche ou filtre.", "deleteSkill": "Supprimer le skill", "deleteConfirm": "Etes-vous sur de vouloir supprimer \"{name}\"? Cette action est irreversible.", "cancel": "Annuler", "delete": "Supprimer", "content": "Contenu", "moreLines": "+{count} lignes supplementaires", "copied": "Copie", "copyContent": "Copier le contenu", "scannedFromRepo": "Scanne depuis le depot", "addedManually": "Ajoute manuellement", "failedLoad": "Echec du chargement des skills", "scanSuccess": "Depots scannes avec succes", "scanFailed": "Echec du scan des depots", "deleted": "\"{name}\" supprime", "failedDelete": "Echec de la suppression du skill" }, "webhook": { "title": "Webhooks", "description": "Configurez les webhooks pour recevoir des notifications sur les evenements de votre projet.", "comingSoon": "Bientot disponible", "notAvailable": "La configuration des webhooks n'est pas encore disponible." }, "oauth": { "title": "Application OAuth", "description": "Creez et gerez des applications OAuth pour les integrations tierces.", "comingSoon": "Bientot disponible", "notAvailable": "La gestion des applications OAuth n'est pas encore disponible." } }, "shared": { "projects": "Projets", "loading": "Chargement...", "error": "Erreur", "success": "Succes", "cancel": "Annuler", "confirm": "Confirmer", "delete": "Supprimer", "edit": "Modifier", "save": "Enregistrer", "close": "Fermer", "back": "Retour", "next": "Suivant", "previous": "Precedent", "submit": "Soumettre", "search": "Rechercher", "filter": "Filtrer", "clear": "Effacer", "reset": "Reinitialiser", "apply": "Appliquer", "yes": "Oui", "no": "Non", "ok": "OK", "retry": "Reessayer", "refresh": "Actualiser", "noData": "Pas de donnees", "noResults": "Aucun resultat", "loadingFailed": "Echec du chargement", "operationFailed": "Operation echouee", "operationSuccess": "Operation reussie" }, "about": { "title": "A propos de GitDataAI", "subtitle": "Nous croyons que chaque action d'ingenierie devrait etre une commande versionnee — auditable, repeatable et approuvee par l'homme. Nous construisons la plateforme Command as Service pour l'ere des agents.", "quote": "\"Chaque action est une commande. Chaque commande est versionnee et auditable.\"", "mission": "GitDataAI a ete fondee pour apporter Command as Service a l'ere des agents — chaque decision d'agent versionnee, chaque flux de commandes auditable, chaque action humain-dans-la-boucle approuvee.", "ourValues": "Nos valeurs", "values": { "transparency": { "title": "Transparence", "desc": "Chaque decision d'agent est journalisee, versionnee et auditable. Pas de boite noire." }, "collaboration": { "title": "Collaboration", "desc": "Les humains et les agents sont des pairs. Aucun ne remplace l'autre — ensemble ils accomplissent plus." }, "reliability": { "title": "Fiabilite", "desc": "Infrastructure de qualite production. Vos agents fonctionnent quand vous en avez besoin." }, "extensibility": { "title": "Extensibilite", "desc": "Registre ouvert, API ouverte. Le reseau grandit grace aux contributions de la communaute." } }, "theTeam": "L'equipe", "hiring": "Nous recrutons. Venez construire avec nous.", "join": "Rejoindre GitDataAI", "github": "GitHub" }, "invitations": { "title": "Mes invitations", "pendingCount": "{count} invitation en attente", "pendingCountPlural": "{count} invitations en attente", "noPending": "Pas d'invitation en attente", "noPendingHint": "Les invitations de projet et workspace apparaitront ici.", "projectInvitation": "Invitation projet", "workspaceInvitation": "Invitation workspace", "invitedToJoin": "Vous avez ete invite a rejoindre {name}", "invitedToWorkspace": "Vous avez ete invite a rejoindre le workspace {name}", "by": "par {username}", "accept": "Accepter", "decline": "Refuser", "acceptedProject": "Vous avez rejoint le projet: {name}", "declinedInvitation": "Invitation a {name} refusee", "acceptedWorkspace": "Vous avez rejoint le workspace", "failedAccept": "Echec de l'acceptation de l'invitation", "failedDecline": "Echec du refus de l'invitation" }, "network": { "title": "Le reseau GitDataAI", "subtitle": "Un ecosysteme croissant d'agents, workspaces et skills collaborant via un flux de commandes unifie. Chaque action d'agent est une commande. Chaque commande est repeatable.", "activeAgents": "Agents actifs", "workspaces": "Workspaces", "skillRuns": "Executions de skills", "uptimeSla": "SLA de disponibilite", "publicRooms": "Salons publics", "live": "EN DIRECT", "active": "Actif", "agents": "{count} agents", "participants": "{count}", "privacyByDefault": "Prive par defaut", "privacyDesc": "Tous les workspaces sont prives par defaut. Vous controlez qui voit vos agents, skills et historique de conversation. Les salons publics necessitent un opt-in explicite.", "network": "Reseau", "roomsLive": "{count} salons en direct", "ended": "TERMINE", "startYourOwnRoom": "Lancez votre propre salon" }, "skills": { "title": "Le registre de Skills", "subtitle": "Comportements d'agent reutilisables et versionnes, conditionnes en skills — invoques par commande, deployes sur toute votre flotte d'agents.", "searchPlaceholder": "Rechercher des skills...", "categories": [ "Tout", "Frontend", "Backend", "DevOps", "Securite", "Donnees", "Tests" ], "publishCTA": "Publiez votre propre skill et rejoignez le registre.", "publishButton": "Publier un skill", "runs": "{count} executions" }, "solutions": { "title": "Command as Service", "subtitle": "Dans GitDataAI, chaque action est une commande de premiere classe. Les commandes sont versionnees, auditables et composables — votre workflow de developpement est votre API.", "learnMore": "En savoir plus", "coreConcept": "Concept central" }, "notificationDrawer": { "title": "Notifications", "live": "En direct", "markAllRead": "Tout marquer comme lu", "noNotifications": "Pas encore de notifications", "noNotificationsHint": "Vous verrez les mises a jour ici lorsqu'un evenement se produit.", "viewAll": "Voir toutes les notifications", "unread": "{count} non lues", "notifications": "Notifications" } }