{
"cli.bundle.add.adding": "Ajout du pack au bundle...",
"cli.bundle.add.bundle": " Bundle : {}",
"cli.bundle.add.created_structure": "Structure du bundle créée dans {}",
"cli.bundle.add.dry_run": "[simulation] Ajouterait le pack au bundle",
"cli.bundle.add.env": " Env : {}",
"cli.bundle.add.pack_ref": " Référence du pack : {}",
"cli.bundle.add.resolved": " Packs résolus : {}",
"cli.bundle.add.success": "Pack ajouté au bundle avec succès.",
"cli.bundle.add.team": " Équipe : {}",
"cli.bundle.add.tenant": " Tenant : {}",
"cli.bundle.add.version_warning": "Avertissement : la validation de la version {} a échoué : {}",
"cli.bundle.build.building": "Construction du bundle portable...",
"cli.bundle.build.output": " Sortie : {}",
"cli.bundle.build.running_doctor": "Exécution de la validation doctor...",
"cli.bundle.build.success": "Bundle construit avec succès dans {}",
"cli.bundle.init.created": "Bundle créé dans {}",
"cli.bundle.init.creating": "Création du bundle dans {}...",
"cli.bundle.init.exists": "Le bundle existe déjà dans {}",
"cli.bundle.init.next_steps": "Prochaines étapes :",
"cli.bundle.init.step_add": " 1. greentic-setup bundle add <pack.gtpack> --bundle {}",
"cli.bundle.init.step_setup": " 2. greentic-setup bundle setup --bundle {} --answers answers.yaml",
"cli.bundle.list.bundle": "Bundle : {}",
"cli.bundle.list.domain": "Domaine : {}",
"cli.bundle.list.packs_found": "Packs trouvés : {}",
"cli.bundle.remove.cancelled": "suppression annulée - utilisez --force pour confirmer",
"cli.bundle.remove.complete": "Provider supprimé : {}",
"cli.bundle.remove.confirm": "Cela supprimera la configuration du provider.",
"cli.bundle.remove.removing": "Suppression du provider...",
"cli.bundle.remove.use_force": "Utilisez --force pour confirmer.",
"cli.bundle.setup.complete": "Configuration du provider terminée : {}",
"cli.bundle.setup.domain": " Domaine : {}",
"cli.bundle.setup.dry_run": "[simulation] Configurerait le provider : {}",
"cli.bundle.setup.emit_usage": "Modifiez et utilisez avec : greentic-setup bundle setup --answers {}",
"cli.bundle.setup.emit_written": "Modèle de réponses écrit dans : {}",
"cli.bundle.setup.env_bootstrap_created": "Environnement `local` initialisé avec les liaisons de capacités par défaut à {}.",
"cli.bundle.setup.interactive_not_impl": "La configuration interactive n'est pas encore implémentée.",
"cli.bundle.setup.provider": " Provider : {}",
"cli.bundle.setup.setting_up": "Configuration du provider...",
"cli.bundle.setup.use_answers": "Utilisez --answers <fichier> pour fournir les réponses de configuration.",
"cli.bundle.setup.use_emit_answers": "Ou utilisez --emit-answers <fichier> pour générer un modèle de réponses.",
"cli.bundle.status.bundle_label": "Bundle : {}",
"cli.bundle.status.not_found": "Bundle introuvable : {}",
"cli.bundle.status.packs": "Packs : {} installé(s)",
"cli.bundle.status.tenants": "Tenants : {}",
"cli.bundle.status.valid_no": "non (greentic.demo.yaml manquant)",
"cli.bundle.status.valid_yes": "oui",
"cli.bundle.update.complete": "Mise à jour du provider terminée : {}",
"cli.bundle.update.dry_run": "[simulation] Mettrait à jour le provider : {}",
"cli.bundle.update.emit_usage": "Modifiez et utilisez avec : greentic-setup bundle update --answers {}",
"cli.bundle.update.updating": "Mise à jour de la configuration du provider...",
"cli.error.answers_required": "--answers requis en mode non interactif",
"cli.error.failed_build_plan": "échec de la construction du plan",
"cli.error.failed_create_bundle": "échec de la création de la structure du bundle",
"cli.error.failed_emit_answers": "échec de la génération du modèle de réponses",
"cli.error.failed_execute_plan": "échec de l'exécution du plan",
"cli.error.failed_read_answers": "échec de la lecture du fichier de réponses",
"cli.error.interactive_required": "la configuration interactive nécessite un fichier --answers",
"cli.error.invalid_bundle": "répertoire de bundle invalide",
"cli.help.for_help": "Pour l'aide : greentic-setup --help",
"cli.simple.bundle_required": "Chemin du bundle requis. Utilisation : greentic-setup [OPTIONS] <BUNDLE>",
"cli.simple.dry_run": "[simulation] Configurerait le bundle : {}",
"cli.simple.emit_usage": "Modifiez et utilisez avec : greentic-setup --answers {} {}",
"cli.simple.expected_bundle_format": "répertoire ou fichier .gtbundle attendu : {}",
"cli.simple.extracted_to": " Extrait dans : {}",
"cli.simple.extracting": "Extraction de l'archive .gtbundle...",
"cli.simple.header": "Greentic Setup",
"cli.simple.interactive_mode": "Mode assistant interactif",
"cli.simple.wizard_not_impl": "assistant interactif non encore implémenté - utilisez --answers <fichier>",
"env_wizard.basic_mode": "Mode basique — passez --advanced pour définir aussi l’id client, les remplacements de configuration, les hôtes de routage, le flux de bienvenue et les références secrètes d’endpoint.",
"env_wizard.dry_run_secrets_note": "Remarque : --dry-run affiche seulement un aperçu — les {} valeur(s) secrète(s) collée(s) que vous avez saisie(s) ne sont PAS écrites dans le magasin. Relancez sans --dry-run et confirmez le plan pour les conserver.",
"env_wizard.form.desc": "Crée un manifeste `greentic.env-manifest.v1` — le document d’état souhaité durable et réapplicable pour un environnement.",
"env_wizard.form.title": "Configuration de l’environnement",
"env_wizard.list.bundles.item_label": "bundle",
"env_wizard.list.messaging_endpoints.item_label": "Endpoint de messagerie",
"env_wizard.list.secrets.item_label": "secret",
"env_wizard.manifest_prompt": "Fichier manifeste [{}] : ",
"env_wizard.q.bundle_id.desc": "Clé naturelle — unique dans le manifeste.",
"env_wizard.q.bundle_id.title": "Id du bundle",
"env_wizard.q.bundle_path.desc": "`.gtbundle` local. Les chemins relatifs sont résolus par rapport au répertoire du fichier manifeste.",
"env_wizard.q.bundle_path.title": "Chemin du bundle",
"env_wizard.q.bundles.desc": "Déploiements de bundles pour cet environnement.",
"env_wizard.q.bundles.title": "Bundles",
"env_wizard.q.config_overrides.desc": "Objet JSON `{\"<pack_id>\": {\"<key>\": <value>}}`. Vide = laisser inchangé ; `{}` = effacement explicite.",
"env_wizard.q.config_overrides.title": "Remplacements de configuration (JSON)",
"env_wizard.q.customer_id.desc": "Principal de facturation — requis par apply pour les environnements non `local`.",
"env_wizard.q.customer_id.title": "Id client",
"env_wizard.q.environment_id.desc": "Environnement auquel appliquer. `local` s’initialise avec les liaisons env-pack par défaut ; tout autre id doit déjà exister (apply le réconcilie ; la création d’environnement non local est réservée au magasin opérateur).",
"env_wizard.q.environment_id.title": "Id d’environnement",
"env_wizard.q.from_env.desc": "Nom de la variable contenant la valeur secrète (p. ex. TELEGRAM_BOT_TOKEN) — le nom, jamais la valeur. Requis lorsque la source est `env`.",
"env_wizard.q.from_env.title": "Nom de la variable d’environnement",
"env_wizard.q.links.desc": "`bundle_id`s séparés par des virgules que cet endpoint admet.",
"env_wizard.q.links.title": "Ids de bundles liés",
"env_wizard.q.messaging_endpoints.desc": "Endpoints de messagerie et leurs liens de bundles.",
"env_wizard.q.messaging_endpoints.title": "Endpoints de messagerie",
"env_wizard.q.name.desc": "Identifiant local au manifeste et nom d’affichage. Clé d’upsert avec le type de fournisseur.",
"env_wizard.q.name.title": "Nom de l’endpoint",
"env_wizard.q.path.desc": "`<tenant>/<team>/<pack>/<name>`, p. ex. default/_/messaging-telegram/telegram_bot_token",
"env_wizard.q.path.title": "Chemin du secret",
"env_wizard.q.provider_type.desc": "Classe du fournisseur, p. ex. messaging.telegram.bot.",
"env_wizard.q.provider_type.title": "Type de fournisseur",
"env_wizard.q.public_base_url.desc": "URL d’origine uniquement conservée dans l’environnement (p. ex. https://bots.example.com). Laissez vide pour conserver la valeur actuelle.",
"env_wizard.q.public_base_url.title": "URL de base publique",
"env_wizard.q.route_hosts.desc": "Noms d’hôtes séparés par des virgules pour la liaison de route.",
"env_wizard.q.route_hosts.title": "Hôtes de route",
"env_wizard.q.route_path_prefixes.desc": "Préfixes de chemin HTTP séparés par des virgules, chacun commençant par `/` (p. ex. /legal).",
"env_wizard.q.route_path_prefixes.title": "Préfixes de chemin de route",
"env_wizard.q.route_team.desc": "Équipe pour le sélecteur de tenant de la liaison de route — à définir avec `route_tenant`.",
"env_wizard.q.route_team.title": "Équipe de route",
"env_wizard.q.route_tenant.desc": "Tenant pour le sélecteur de tenant de la liaison de route — à définir avec `route_team`.",
"env_wizard.q.route_tenant.title": "Tenant de route",
"env_wizard.q.secret_refs.desc": "Références secrètes séparées par des virgules transmises lors de la création de l’endpoint.",
"env_wizard.q.secret_refs.title": "Références secrètes",
"env_wizard.q.secrets.desc": "Entrées secrètes du magasin de développement. La valeur de chaque secret provient soit d’une variable d’environnement nommée, soit d’une valeur que vous collez — les valeurs ne vont jamais dans un manifeste.",
"env_wizard.q.secrets.title": "Secrets",
"env_wizard.q.source.desc": "`env` lit la valeur depuis une variable d’environnement nommée au moment de l’application ; `paste` vous permet de saisir la valeur de manière interactive — elle est stockée dans le magasin de secrets de l’environnement, jamais dans le manifeste.",
"env_wizard.q.source.title": "Source du secret",
"env_wizard.q.trust_root_bootstrap.desc": "Initialiser la racine de confiance de l’environnement avec la clé opérateur locale (idempotent ; requis une fois avant que les bundles puissent être préparés).",
"env_wizard.q.trust_root_bootstrap.title": "Initialiser la racine de confiance ?",
"env_wizard.q.webchat_gui.desc": "Servir la console webchat intégrée afin que vous puissiez discuter avec cet environnement en ouvrant son URL dans un navigateur. Activé par défaut pour `local`; le chemin de discussion est limité au loopback et non authentifié, donc gardez-le désactivé pour les environnements exposés sur une URL publique sauf si c’est intentionnel.",
"env_wizard.q.webchat_gui.title": "Ajouter une interface webchat ?",
"env_wizard.q.welcome_bundle_id.desc": "Définissez les trois champs welcome_* ensemble (ou aucun).",
"env_wizard.q.welcome_bundle_id.title": "Flux d’accueil : id du bundle",
"env_wizard.q.welcome_flow_id.desc": "Définissez les trois champs welcome_* ensemble (ou aucun).",
"env_wizard.q.welcome_flow_id.title": "Flux d’accueil : id du flux",
"env_wizard.q.welcome_pack_id.desc": "Définissez les trois champs welcome_* ensemble (ou aucun).",
"env_wizard.q.welcome_pack_id.title": "Flux d’accueil : id du pack",
"env_wizard.secrets.choose": "Pour chacun, choisissez d’où vient la valeur : une variable\nd’environnement nommée, ou collez-la maintenant. Les valeurs collées sont stockées dans le\nmagasin de secrets de l’environnement — jamais écrites dans le manifeste.",
"env_wizard.secrets.entry": "{} — {} (bundle : {}){}",
"env_wizard.secrets.envvar_prompt": "nom de la variable d’environnement [{}] : ",
"env_wizard.secrets.envvar_required": "Un nom de variable d’environnement est requis.",
"env_wizard.secrets.keep_env_note": "note : conservation du secret existant `{}` (bundle non reconstruit)",
"env_wizard.secrets.keep_paste_note": "note : conservation du secret collé existant `{}` (bundle non reconstruit)",
"env_wizard.secrets.need": "Secrets — les bundles configurés nécessitent {} secret(s).",
"env_wizard.secrets.none": "Secrets — les bundles configurés ne déclarent aucun secret ; rien à saisir.",
"env_wizard.secrets.optional_suffix": " [facultatif]",
"env_wizard.secrets.paste_prompt": "coller la valeur (masquée, une seule ligne) : ",
"env_wizard.secrets.paste_prompt_keep": "coller la valeur (masquée, une seule ligne ; vide conserve la valeur stockée) : ",
"env_wizard.secrets.paste_required": "Une valeur est requise.",
"env_wizard.secrets.path": "chemin du secret : {}",
"env_wizard.secrets.source_invalid": "Saisissez 1 (variable d’environnement) ou 2 (coller).",
"env_wizard.secrets.source_prompt": "valeur depuis [1] variable d’environnement ou [2] coller maintenant ? [{}] : ",
"env_wizard.wrote_manifest": "Écriture de `{}` — le manifeste est l’artefact durable ; conservez-le dans le contrôle de version.",
"setup.answers.emitted": "Modèle de réponses écrit dans {}",
"setup.answers.loaded": "Réponses chargées depuis {}",
"setup.capability.not_found": "Capacité '{}' introuvable",
"setup.capability.resolved": "Capacité résolue : pack_id={} stable_id={}",
"setup.discovering_packs": "Découverte des packs dans le bundle...",
"setup.dry_run.header": "Plan de configuration (simulation) :",
"setup.error.bundle_not_found": "Bundle introuvable : {}",
"setup.error.protocol_not_supported": "Protocole non encore pris en charge : {}",
"setup.error.version_mismatch": "La version du tag ({}) ne correspond pas à la version du crate ({})",
"setup.execute.failed": "Échec de la configuration : {}",
"setup.execute.success": "Configuration terminée : {}",
"setup.found_packs": "{} pack(s) trouvé(s) : {}",
"setup.plan.header": "Plan de configuration :",
"setup.plan.step.collect_answers": "Collecter les réponses pour {}",
"setup.plan.step.discover": "Découvrir les packs",
"setup.plan.step.resolve": "Générer le manifeste résolu",
"setup.plan.step.run_setup": "Exécuter le flux de configuration pour {}",
"setup.plan.step.seed_secrets": "Initialiser les secrets pour {}",
"setup.plan.step.validate": "Valider le bundle",
"setup.plan.step.webhooks": "Enregistrer les webhooks pour {}",
"setup.plan.step.write_config": "Écrire la configuration pour {}",
"setup.qa.invalid_choice": "Choix invalide. Options : {}",
"setup.qa.list.add_first": "Ajouter {} ? [y/N] ",
"setup.qa.list.add_more": "Ajouter un autre {} ? [y/N] ",
"setup.qa.list.field_required_row": "Ce champ est requis — au moins une ligne est nécessaire.",
"setup.qa.list.max_reached": "(maximum de {} lignes atteint)",
"setup.qa.list.min_required": "Au moins {} ligne(s) requise(s) — {} obtenue(s). Tapez 'y' pour en ajouter une autre.",
"setup.qa.list.row_dropped": "(ligne supprimée — les colonnes requises étaient vides)",
"setup.qa.list.row_header": "Ligne n°{} :",
"setup.qa.prompt.configuring": "Configuration de {} : {}",
"setup.qa.prompt.default": "(par défaut : {}) ",
"setup.qa.prompt.field_required": "Ce champ est requis.",
"setup.qa.prompt.invalid_choice": "Choix invalide. Options : {}",
"setup.qa.prompt.invalid_format": "Format invalide. Motif attendu : {}",
"setup.qa.prompt.mode_advanced": " (avancé)",
"setup.qa.prompt.optional_marker": " (facultatif)",
"setup.qa.prompt.required_marker": " (requis)",
"setup.qa.question_prompt": "{}",
"setup.qa.required_field": "Ce champ est obligatoire",
"setup.qa.secret_input": "Entrez la valeur secrète (masquée) :",
"setup.secrets.failed": "Échec de l'initialisation des secrets pour provider={} tenant={} : {}",
"setup.secrets.seeded": "{} secret(s) initialisé(s) pour provider={} tenant={}",
"setup.state_store.fallback": "Utilisation du store d'état en mémoire (aucune URL Redis disponible)",
"setup.state_store.upgraded": "Store d'état mis à niveau vers Redis : {}",
"ui.back": "Retour",
"ui.close": "Fermer",
"ui.configure": "Configurer {}",
"ui.continue": "Continuer",
"ui.dashboard.add_scope": "Ajouter un périmètre",
"ui.dashboard.back": "Retour au tableau de bord",
"ui.dashboard.configured": "configuré",
"ui.dashboard.delete": "Supprimer",
"ui.dashboard.description": "Configurez {} fournisseur(s) dans {}. Créez plusieurs périmètres pour différents locataires/environnements.",
"ui.dashboard.executed": "Exécuté",
"ui.dashboard.export": "Exporter les réponses",
"ui.description": "Configurer {} fournisseur(s) dans {}",
"ui.discovering": "Découverte des fournisseurs...",
"ui.discovering_sub": "Lecture de la configuration du bundle",
"ui.done": "Terminé",
"ui.execute_setup": "Exécuter la configuration",
"ui.executing.sub": "Application de la configuration au bundle",
"ui.executing.title": "Exécution de la configuration...",
"ui.export.description": "Téléchargez la configuration sous forme de fichier de réponses JSON compatible avec le mode --answers.",
"ui.export.download": "Télécharger answers.json",
"ui.export.password": "Mot de passe de chiffrement",
"ui.export.password_help": "S’il est défini, les valeurs secrètes seront chiffrées avec AES-256-GCM. Vous aurez besoin de ce mot de passe lors de l’utilisation de --answers --key.",
"ui.export.password_hint": "Laisser vide pour ne pas chiffrer",
"ui.export.title": "Exporter les réponses",
"ui.field.required": "{} est requis.",
"ui.import.decrypt_failed": "Échec du déchiffrement",
"ui.import.dropzone": "Déposez answers.json ici ou cliquez pour importer",
"ui.import.no_scopes": "Aucun périmètre valide trouvé dans le fichier.",
"ui.import.parse_error": "Échec de l’analyse du fichier",
"ui.import.password_prompt": "Ce fichier contient des secrets chiffrés. Saisissez le mot de passe de déchiffrement :",
"ui.new_setup": "Nouvelle configuration",
"ui.no_providers": "Aucun fournisseur trouvé dans le bundle.",
"ui.nothing_to_configure": "Rien à configurer.",
"ui.pending": "En attente",
"ui.provider.configure": "Configurer {}",
"ui.q.api_base_url": "URL de base de l'API",
"ui.q.base_url": "URL de base",
"ui.q.channel_id": "ID du canal",
"ui.q.default_channel": "Canal par défaut",
"ui.q.default_room_id": "ID de la salle par défaut",
"ui.q.default_to_person_email": "E-mail de la personne par défaut",
"ui.q.enabled": "Activer le fournisseur",
"ui.q.jwt_signing_key": "Clé de signature JWT",
"ui.q.jwt_signing_key.help": "Clé secrète utilisée pour signer les jetons Direct Line. Utilisez n'importe quelle chaîne aléatoire (par ex. openssl rand -hex 32).",
"ui.q.mode": "Mode",
"ui.q.ms_bot_app_id": "ID de l'application Bot",
"ui.q.ms_bot_app_id.help": "ID de l'application Microsoft Bot provenant de l'inscription au service Azure Bot",
"ui.q.ms_bot_app_password": "Mot de passe de l'application Bot",
"ui.q.oauth_custom_auth_url": "URL d'autorisation",
"ui.q.oauth_custom_client_id": "ID client",
"ui.q.oauth_custom_label": "Nom d'affichage du fournisseur",
"ui.q.oauth_custom_scopes": "Portées",
"ui.q.oauth_custom_token_url": "URL du jeton",
"ui.q.oauth_enable_custom": "Activer le fournisseur OIDC personnalisé",
"ui.q.oauth_enable_github": "Activer la connexion GitHub",
"ui.q.oauth_enable_google": "Activer la connexion Google",
"ui.q.oauth_enable_microsoft": "Activer la connexion Microsoft",
"ui.q.oauth_enabled": "Activer la connexion OAuth",
"ui.q.oauth_enabled.help": "Exiger que les utilisateurs se connectent avant d'accéder au chat",
"ui.q.oauth_github_client_id": "ID client GitHub",
"ui.q.oauth_github_client_secret": "Secret client GitHub",
"ui.q.oauth_google_client_id": "ID client Google",
"ui.q.oauth_google_client_secret": "Secret client Google",
"ui.q.oauth_microsoft_client_id": "ID client Microsoft",
"ui.q.oauth_microsoft_client_secret": "Secret client Microsoft",
"ui.q.public_base_url": "URL de base publique",
"ui.q.public_base_url.help": "URL publique pour les rappels de webhook (par ex. https://xxxx.trycloudflare.com)",
"ui.q.route": "Route",
"ui.q.slack_app_id": "ID de l'application Slack",
"ui.q.slack_bot_token": "Jeton du bot Slack",
"ui.q.slack_configuration_token": "Jeton de configuration Slack",
"ui.q.team_id": "ID de l'équipe",
"ui.q.tenant_channel_id": "ID du canal du locataire",
"ui.q.webex_bot_token": "Jeton du bot Webex",
"ui.questions": "questions",
"ui.result.closed": "Configuration fermée.",
"ui.result.closed_sub": "Vous pouvez fermer cet onglet.",
"ui.result.fail.description": "Un problème est survenu pendant la configuration.",
"ui.result.fail.title": "Échec de la configuration",
"ui.result.log": "Journal",
"ui.result.manual_steps": "Étapes manuelles requises",
"ui.result.output": "Sortie",
"ui.result.success.description": "Bundle configuré avec succès.",
"ui.result.success.title": "Configuration terminée",
"ui.review.description": "Vérifiez la configuration avant de l'appliquer au bundle.",
"ui.review.no": "Non",
"ui.review.secret_mask": "********",
"ui.review.title": "Vérifier et exécuter",
"ui.review.yes": "Oui",
"ui.review_execute": "Vérifier et exécuter",
"ui.scope.description": "Configurez le locataire cible, l’environnement et l’équipe pour cette installation.",
"ui.scope.detected_tenant": "Détecté depuis le bundle : {}",
"ui.scope.env": "Environnement",
"ui.scope.env_help": "Doit correspondre à GREENTIC_ENV utilisé par l’exécution (dev, local, test).",
"ui.scope.hint": "Ces valeurs déterminent où les secrets et la configuration sont stockés. Assurez-vous qu’elles correspondent à vos paramètres d’exécution.",
"ui.scope.team": "Équipe",
"ui.scope.team_help": "Laisser vide pour la valeur par défaut. Utilisé pour limiter les secrets par équipe.",
"ui.scope.tenant": "Locataire",
"ui.scope.title": "Périmètre de configuration",
"ui.select_action": "Sélectionnez une action pour commencer.",
"ui.shared.description": "Ces questions s'appliquent à tous les fournisseurs.",
"ui.shared.title": "Configuration partagée",
"ui.start_config": "Commencer la configuration",
"ui.title": "Configuration Greentic"
}