{ "common": { "appName": "PieCed", "tagline": "Plateforme IA", "login": "Connexion", "logout": "Déconnexion", "dashboard": "Tableau de bord", "admin": "Admin", "loading": "Chargement…", "language": "Langue", "cancel": "Annuler", "save": "Enregistrer", "error": "Une erreur est survenue", "register": "S'inscrire", "team": "Équipe", "settings": "Paramètres", "optional": "facultatif" }, "login": { "title": "Portail PieCed", "subtitle": "Connectez-vous pour gérer votre assistant IA", "button": "Continuer avec ZITADEL", "footer": "Hébergé on-premises en Suisse", "noAccount": "Pas encore de compte ?", "register": "Créer un compte" }, "register": { "title": "Créer votre compte", "subtitle": "Configurez votre assistant IA hébergé en Suisse", "companyName": "Nom de l'entreprise", "companyNamePlaceholder": "Exemple SA", "givenName": "Prénom", "familyName": "Nom", "email": "Adresse e-mail", "submit": "S'inscrire", "hasAccount": "Déjà un compte ?", "footer": "Vos données sont hébergées exclusivement on-premises en Suisse.", "successTitle": "Inscription reçue", "successDescription": "Vous recevrez un e-mail d'invitation avec un lien pour définir votre mot de passe et vérifier votre adresse e-mail. Ensuite, vous pourrez vous connecter et configurer votre assistant IA.", "goToLogin": "Aller à la connexion", "duplicateDomain": "Un compte pour le domaine de courriel {domain} est déjà enregistré. Veuillez contacter l'administrateur de votre entreprise pour être invité, ou contactez le support PieCed IT si vous pensez qu'il s'agit d'une erreur.", "individualToggle": "S'inscrire en tant que particulier", "individualHint": "Cochez cette case si vous ne vous inscrivez pas au nom d'une entreprise. Votre compte sera configuré comme espace de travail personnel.", "accountTypeLabel": "Type de compte", "personalCardTitle": "Particulier", "personalCardDescription": "Pour vous.", "companyCardTitle": "Entreprise", "companyCardDescription": "Pour votre entreprise ou équipe." }, "onboarding": { "loading": "Chargement du statut…", "welcomeTitle": "Configurer votre assistant IA", "welcomeDescription": "En quelques étapes, vous aurez votre propre assistant IA — hébergé exclusivement en Suisse, entièrement sous votre contrôle.", "welcomeFeature_swissHosted": "Hébergé on-premises en Suisse — vos données ne quittent jamais le pays", "welcomeFeature_privacy": "Aucune donnée partagée avec des tiers — confidentialité totale", "welcomeFeature_customizable": "Personnalité, paquets et intégrations entièrement personnalisables", "getStarted": "Commencer", "configureTitle": "Configurer votre assistant", "configureDescription": "Donnez un nom et une personnalité à votre assistant. Vous pouvez toujours les modifier par la suite.", "agentName": "Nom de l'agent", "soulMd": "Personnalité (SOUL.md)", "soulMdHint": "Définit le comportement de votre assistant. Format Markdown. Modifiable ultérieurement.", "agentsMd": "Instructions de l'agent (AGENTS.md)", "agentsMdHint": "Définit ce que votre assistant fait au démarrage de la session. Optionnel — les paramètres par défaut conviennent à la plupart des configurations.", "toolsMd": "Outils disponibles (TOOLS.md)", "toolsMdHint": "Généré automatiquement en fonction des paquets sélectionnés. Ce fichier est géré automatiquement.", "advancedConfig": "Configuration avancée", "packages": "Paquets", "packagesHint": "Intégrations optionnelles. Les paquets nécessitant des identifiants les demanderont en ligne. Vous pouvez aussi les activer plus tard.", "billingTitle": "Informations de facturation", "billingDescription": "Nous avons besoin de votre adresse de facturation. Un prestataire de paiement sera intégré à l'avenir.", "billingCompany": "Entreprise", "billingStreet": "Rue", "billingPostalCode": "Code postal", "billingCity": "Ville", "billingCountry": "Pays", "billingNotes": "Remarques", "billingNotesPlaceholder": "Remarques sur la facturation (numéro de commande, numéro de TVA, mode de paiement préféré, etc.)", "confirmTitle": "Vérifier et envoyer", "confirmDescription": "Veuillez vérifier votre configuration. Votre demande sera examinée par notre équipe avant la mise en service.", "confirmNote": "Après l'envoi, notre équipe examinera votre demande et vos informations de facturation. Vous recevrez l'accès après approbation — généralement dans un délai d'un jour ouvrable.", "credentialsProvided": "Identifiants fournis", "submitRequest": "Envoyer la demande", "back": "Retour", "next": "Suivant", "pendingTitle": "Demande envoyée", "pendingDescription": "Votre demande a été envoyée et est en cours d'examen par notre équipe. Vous recevrez l'accès après approbation — généralement dans un délai d'un jour ouvrable.", "rejectedTitle": "Demande non approuvée", "rejectedDescription": "Malheureusement, votre demande n'a pas été approuvée. Veuillez nous contacter pour plus d'informations.", "provisioningTitle": "Configuration de votre instance", "provisioningDescription": "Votre assistant IA est en cours de mise en service. Cela prend généralement quelques minutes.", "phase": "Phase", "readyTitle": "Votre assistant est prêt !", "readyDescription": "Votre assistant IA a été mis en service et est actif. Vous pouvez maintenant le gérer depuis le tableau de bord.", "goToDashboard": "Aller au tableau de bord", "submittedAt": "Soumis", "instanceName": "Nom de l'instance", "instanceNamePlaceholder": "ex. Production, Dev, Ventes", "instanceNameHint": "Nom lisible facultatif pour distinguer cette instance des autres sur votre tableau de bord. Laisser vide pour utiliser le nom de votre entreprise.", "validationError": "Veuillez corriger les erreurs avant l'envoi.", "validationErrorsTitle": "Certains champs obligatoires manquent ou sont invalides :", "reviewInstanceDefault": "(par défaut — utilise le nom de l'entreprise)", "reviewNoPackages": "Aucun sélectionné", "reviewBillingTo": "Facturer à", "reviewContactEmail": "E-mail de contact", "editRequestTitle": "Modifier votre demande", "editRequestDescription": "Ajustez la configuration avant que notre équipe ne l'examine.", "editRequest": "Modifier", "cancelRequest": "Annuler la demande", "cancelRequestConfirm": "Oui, annuler la demande", "cancelConfirmRequestTitle": "Annuler cette demande ?", "cancelConfirmRequestDescription": "Votre demande en attente sera marquée comme annulée et retirée de la file. Vous pouvez soumettre une nouvelle demande à tout moment.", "cancelFailed": "Impossible d'annuler la demande.", "cancelledTitle": "Demande annulée", "cancelledDescription": "Vous avez annulé cette demande avant son traitement. Aucune instance n'a été créée.", "dismiss": "Masquer", "dismissFailed": "Impossible de masquer.", "rejectionReason": "Motif indiqué", "saveChanges": "Enregistrer les modifications", "billingVatNumber": "Numéro de TVA", "billingVatHelp": "Votre identifiant TVA enregistré. Si votre entreprise est exonérée de TVA, laissez vide et précisez dans les notes.", "billingNotesPlaceholderPersonal": "Tout ce que nous devons savoir — moyen de paiement préféré, référence de facturation, etc." }, "dashboard": { "title": "Tableau de bord", "welcome": "Bienvenue, {name}", "instanceStatus": "Statut de l'instance", "usage": "Utilisation", "packages": "Paquets", "noInstance": "Aucune instance provisionnée.", "comingSoon": "Vue détaillée à venir dans la Session 6.2", "noInstanceDescription": "Configurez votre instance d'assistant IA pour commencer avec PieCed IT.", "manage": "Gérer l'instance et les paquets", "instances": "Vos instances", "inflightRequests": "Demandes en cours", "createInstance": "Créer une nouvelle instance", "createInstanceDescription": "Provisionner une instance supplémentaire d'assistant IA pour votre organisation. La demande sera examinée par un administrateur avant la création de l'instance.", "noAccessNoInstances": "Votre organisation n'a pas encore d'instances. Demandez au propriétaire de l'organisation d'en configurer une.", "noAssignmentsTitle": "Aucune instance attribuée", "noAssignmentsDescription": "Votre organisation possède des instances, mais aucun accès ne vous a été accordé. Demandez au propriétaire de votre organisation de vous attribuer une instance.", "noInstancesYetTitle": "Pas encore d'instances", "noInstancesYetDescription": "Votre organisation ne possède pas encore d'instances. Demandez au propriétaire de votre organisation d'en configurer une." }, "tenantDetail": { "agent": "Agent", "packages": "Paquets", "workspaceFiles": "Fichiers workspace", "notFound": "Locataire non trouvé.", "usage": "Utilisation et coûts", "provisioned": "Provisionné", "assignedUsers": "Utilisateurs attribués", "subscriptionTitle": "Abonnement", "subscriptionDescriptionActive": "Annulez votre abonnement si vous n'avez plus besoin de cet assistant. Vos données seront conservées et vous pourrez reprendre à tout moment.", "subscriptionDescriptionSuspended": "Votre abonnement est annulé. Reprenez pour remettre l'assistant en ligne.", "cancelSubscription": "Annuler l'abonnement", "cancelSubscriptionConfirm": "Oui, annuler", "resumeSubscription": "Reprendre l'abonnement", "cancelConfirmTitle": "Annuler cet abonnement ?", "cancelConfirmDescription": "Votre assistant sera indisponible. Vous pouvez reprendre à tout moment — vos données sont préservées.", "cancelConfirmBullet1": "Les fichiers de l'espace de travail (SOUL.md, AGENTS.md) sont conservés", "cancelConfirmBullet2": "Les identifiants des packages restent stockés", "cancelConfirmBullet3": "Les informations de facturation sont conservées", "subscriptionUpdateFailed": "Impossible de mettre à jour l'abonnement.", "suspendedTitle": "Abonnement annulé", "suspendedDescription": "Votre assistant est en pause. La configuration et les données sont préservées. Utilisez le contrôle Reprendre en bas de cette page pour le remettre en ligne.", "requestReactivation": "Demander la réactivation", "requestReactivationConfirmTitle": "Demander la réactivation ?", "requestReactivationConfirmDescription": "Un administrateur examinera votre demande et réactivera votre locataire. Vous recevrez un e-mail dès que la demande sera approuvée.", "requestReactivationConfirm": "Envoyer la demande", "cancelResumeRequest": "Annuler la demande", "resumeRequestPendingTitle": "Demande de réactivation en attente", "resumeRequestPendingDescription": "Soumise {when}. Un administrateur l'examinera sous peu.", "resumeRequestPendingNoteAdmin": "Un propriétaire a demandé la réactivation ; vous pouvez reprendre directement ci-dessus ou traiter la demande depuis la file d'attente d'administration.", "cancelConfirmRetentionWarning": "Vos données sont conservées pendant 60 jours après l'annulation. Passé ce délai, toutes les données du locataire — configuration, secrets, conversations et fichiers — seront définitivement supprimées.", "suspendedSince": "Suspendu le {date}", "suspendedDeletionIn": "suppression des données dans {days, plural, one {# jour} other {# jours}} ({date})", "suspendedDeletionImminent": "les données sont en cours de suppression" }, "usage": { "inputTokens": "Tokens d'entrée", "outputTokens": "Tokens de sortie", "totalSpend": "Dépenses totales", "totalCost": "Coût total", "budget": "Budget", "noLimit": "Pas de limite", "last30Days": "30 derniers jours", "noData": "Aucune donnée d'utilisation disponible.", "dailyBreakdown": "Détail journalier", "requests": "requêtes" }, "workspace": { "save": "Enregistrer", "placeholder": "Saisir le contenu pour {file}…", "readonlyNote": "Ce fichier est généré automatiquement et ne peut pas être modifié manuellement.", "seedingNote": "Les fichiers workspace sont initialisés au premier démarrage. Une mise à jour sur une instance existante déclenche une mise à jour du ConfigMap et un redémarrage du pod." }, "packages": { "categories": { "channels": "Canaux", "skills": "Compétences" }, "enable": "Activer", "disable": "Désactiver", "enableAndSave": "Activer et enregistrer", "configure": "Configurer", "requiresApiKey": "Nécessite une clé API", "missingFields": "Veuillez remplir tous les champs obligatoires.", "status": { "pending": "En attente", "active": "Actif", "error": "Erreur" }, "telegram": { "description": "Connectez votre assistant IA à un bot Telegram.", "botTokenLabel": "Token du bot Telegram", "botTokenPlaceholder": "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11", "instructions": "1. Ouvrez @BotFather sur Telegram\n2. Envoyez /newbot et suivez les instructions\n3. Copiez le token du bot", "disclaimer": "Je confirme que je possède ce bot Telegram et autorise PieCed IT à le connecter à mon assistant IA." }, "discord": { "description": "Connectez votre assistant IA à un serveur Discord via un bot.", "botTokenLabel": "Token du bot Discord", "botTokenPlaceholder": "MTAxNjQ0OTk2NjAz...", "instructions": "1. Allez sur discord.com/developers/applications\n2. Créez une nouvelle application et ajoutez un bot\n3. Copiez le token du bot", "disclaimer": "Je confirme que je possède ce bot Discord et autorise PieCed IT à le connecter à mon assistant IA." }, "email": { "description": "Permettez à votre assistant IA d'envoyer et de recevoir des e-mails.", "smtpHostLabel": "Hôte SMTP", "smtpHostPlaceholder": "smtp.example.com", "smtpUserLabel": "Nom d'utilisateur SMTP", "smtpUserPlaceholder": "user@example.com", "smtpPasswordLabel": "Mot de passe SMTP", "smtpPasswordPlaceholder": "••••••••", "imapHostLabel": "Hôte IMAP", "imapHostPlaceholder": "imap.example.com", "instructions": "Fournissez les identifiants SMTP et IMAP. L'assistant les utilise pour envoyer et surveiller les messages.", "disclaimer": "Je confirme que je suis autorisé à utiliser ces identifiants e-mail et que PieCed IT peut accéder à cette boîte mail." }, "webSearch": { "description": "Donnez à votre assistant IA la capacité de rechercher sur le web." }, "documentProcessing": { "description": "Activez l'analyse, le résumé et l'extraction de documents." }, "statusEnabled": "activé", "statusDisabled": "désactivé" }, "admin": { "title": "Admin plateforme", "subtitle": "Gérer les demandes d'onboarding et le cycle de vie des locataires", "allTenants": "Locataires", "noTenants": "Aucun locataire provisionné.", "noAccess": "Permissions insuffisantes pour cette vue.", "name": "Nom", "displayName": "Nom d'affichage", "phase": "Phase", "packages": "Paquets", "created": "Créé", "manage": "Gérer", "requests": "Demandes", "pendingRequests": "Demandes en attente", "approve": "Approuver", "reject": "Rejeter", "reApprove": "Réapprouver", "company": "Entreprise", "contact": "Contact", "agentName": "Agent", "status": "Statut", "submitted": "Soumis", "updated": "Mis à jour", "actions": "Actions", "noRequests": "Aucune demande trouvée.", "loadingRequests": "Chargement des demandes…", "approveConfirm": "Approuver cette demande et démarrer la mise en service ?", "rejectConfirm": "Rejeter cette demande ?", "rejectTitle": "Rejeter la demande", "adminNotesLabel": "Notes (optionnel)", "adminNotesPlaceholder": "Raison du rejet…", "cancelAction": "Annuler", "confirmReject": "Rejeter", "viewTenant": "Voir", "filter_all": "Tous", "filter_pending": "En attente", "filter_provisioning": "Provisionnement", "filter_approved": "Approuvé", "filter_rejected": "Rejeté", "totalTenants": "Total", "running": "En cours", "provisioning": "Provisionnement", "errors": "Erreurs", "suspend": "Suspendre", "resume": "Reprendre", "suspended": "Suspendu", "suspendedBadge": "SUSPENDU", "deleteTenant": "Supprimer", "deleteTitle": "Supprimer le locataire", "deleteWarning": "Cela supprimera définitivement le locataire, son namespace, ses secrets et toutes les données associées. Cette action est irréversible.", "confirmDelete": "Supprimer définitivement", "loadingTenants": "Chargement des locataires…", "filter_deleted": "Supprimé", "filter_active": "Actif", "health": "Santé", "serviceHealth": "Santé des services", "vllmDescription": "Moteur d'inférence GPU", "litellmDescription": "Proxy LLM & suivi des coûts", "tenantOverview": "Aperçu des locataires", "spendOverview": "Aperçu des coûts", "globalSpend": "Coûts globaux (CHF)", "activeTenants": "Locataires actifs", "tenantsWithSpend": "locataires avec dépenses enregistrées", "refresh": "Actualiser", "healthUnavailable": "Données de santé indisponibles.", "loadingHealth": "Chargement des données de santé…", "statusHealthy": "OK", "statusDown": "Hors service", "spendChf": "Coûts (CHF)", "resumeRequestBadge": "Reprise", "resumeRequestTooltip": "Demande de réactivation d'un locataire existant. L'approbation le réactivera ; aucun provisionnement ne s'exécute." }, "channelUsers": { "title": "Utilisateurs autorisés", "description": "Gérez les utilisateurs pouvant interagir avec votre assistant sur chaque canal. Ajoutez leur identifiant numérique pour autoriser l'accès.", "users": "utilisateurs", "placeholder": "Entrez l'identifiant numérique…", "add": "Ajouter", "remove": "Supprimer", "alreadyAdded": "Cet identifiant est déjà autorisé.", "telegramIdHelp": "Pour trouver votre identifiant Telegram :\n1. Ouvrez Telegram et envoyez un message à @userinfobot\n2. Il répond instantanément avec votre identifiant numérique\n3. Entrez ce numéro ici", "discordIdHelp": "Pour trouver votre identifiant Discord :\n1. Activez le mode développeur dans les paramètres Discord (Avancé)\n2. Clic droit sur votre nom → Copier l'identifiant\n3. Entrez ce numéro ici", "emailIdHelp": "Entrez l'adresse e-mail qui doit être autorisée à interagir avec l'assistant." }, "team": { "title": "Équipe", "description": "Gérez les membres de votre organisation. Invitez des collègues et attribuez-leur des instances.", "inviteSectionTitle": "Inviter un membre", "membersSectionTitle": "Membres", "noMembers": "Aucun membre pour l'instant.", "you": "Vous", "noRole": "aucun rôle", "givenName": "Prénom", "familyName": "Nom de famille", "email": "E-mail", "role": "Rôle", "roleUser": "Utilisateur (lecture seule, doit être affecté à des instances)", "roleOwner": "Propriétaire (accès complet à toutes les instances)", "roleHint": "Les propriétaires peuvent gérer les instances, la facturation et les membres de l'équipe. Les utilisateurs ne peuvent voir que les instances qui leur sont attribuées.", "inviteButton": "Envoyer l'invitation", "inviteSent": "Invitation envoyée. L'utilisateur recevra un e-mail avec un lien pour définir son mot de passe.", "inviteUserExists": "Un utilisateur avec cette adresse e-mail est déjà enregistré.", "changeRole": "Modifier le rôle", "roleUpdated": "Rôle mis à jour.", "roleUpdateFailed": "Impossible de mettre à jour le rôle.", "cancel": "Annuler", "save": "Enregistrer", "selfChangeBlocked": "Vous ne pouvez pas modifier votre propre rôle." }, "assignments": { "loading": "Chargement des attributions…", "noneAssigned": "Aucun utilisateur n'est encore attribué à cette instance.", "noCandidates": "Aucun membre de l'équipe disponible pour l'attribution. Invitez d'abord des utilisateurs depuis la page Équipe.", "pickUser": "Sélectionner un utilisateur…", "assign": "Attribuer", "revoke": "Retirer" }, "countries": { "CH": "Suisse", "DE": "Allemagne", "AT": "Autriche", "FR": "France", "IT": "Italie", "LI": "Liechtenstein" }, "phase": { "Pending": "En attente", "Provisioning": "Mise en service", "Running": "Actif", "Ready": "Prêt", "Suspended": "Suspendu", "Error": "Erreur", "Deleting": "Suppression", "Reconfiguring": "Reconfiguration" }, "warnings": { "oneTooltip": "1 avertissement", "manyTooltip": "{count} avertissements" }, "settings": { "title": "Paramètres", "subtitle": "Gérez la configuration au niveau de l'organisation, qui s'applique à tous vos locataires.", "billingTitle": "Facturation", "billingDescription": "Adresse, numéro de TVA et e-mail de facturation utilisés pour tous vos locataires.", "nothingForYou": "Il n'y a rien ici pour votre rôle pour le moment. Les propriétaires peuvent gérer les paramètres de l'organisation.", "billingDescriptionPersonal": "Adresse et e-mail de facturation utilisés pour tous vos locataires." }, "settingsBilling": { "title": "Facturation", "subtitle": "Saisie une fois lors de l'inscription et réutilisée pour chaque locataire de votre organisation. Mettez à jour ici dès que vos coordonnées de facturation changent.", "companyName": "Nom de l'entreprise", "streetAddress": "Adresse", "postalCode": "Code postal", "city": "Ville", "country": "Pays", "vatNumber": "Numéro de TVA", "vatHelp": "Votre identifiant TVA enregistré (par ex. CHE-123.456.789 TVA pour la Suisse).", "billingEmail": "E-mail de facturation", "billingEmailHelp": "Adresse à laquelle les factures et la communication de facturation seront envoyées.", "notes": "Notes", "notesPlaceholder": "Tout ce que la comptabilité doit savoir – exonération de TVA, modalités de facturation particulières, etc.", "save": "Enregistrer", "saved": "Enregistré.", "saveFailed": "Impossible d'enregistrer. Veuillez réessayer.", "lastUpdated": "Dernière mise à jour {when}", "fullName": "Nom complet", "notesPlaceholderPersonal": "Tout ce que nous devons savoir — moyen de paiement préféré, référence de facturation, etc." } }