Files
VoiceStudio/frontend/src/i18n/locales/fr.json
T
Palash Debnath ba8f6cfd15 Merge feat/catalogue-one-page (with main) into feat/engine-list-detail
Conflicts: RecoBanner (deleted here: the recommendation card is gone),
ModelStoreTab + EngineCompatibilityMatrix (this branch's rewrite kept),
supertonic3 backend (main's own-venv check kept, message without the
retired "→ Engines" step), CHANGELOG (base layout + the #2020 line).

Carried over from main and the review:
- The list row hides Install while only the license review is left
  (main's #2017 rule, now in the row; Accept lives in the panel).
- Engine action aria labels go through i18n (engines.aria*, all 21
  locales) instead of hardcoded English.
- Every "Model Catalogue → Engines/Models" path main added, plus the
  frontend strings that still named the retired panes, now point at the
  one-page catalogue.
- test_engine_unavailable_reason_1866 reads the license matcher from its
  new home, engines/engineDisplay.js.
2026-09-10 12:17:02 -07:00

2835 lines
173 KiB
JSON
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"longformPersistence": {
"storage_unavailable_title": "Impossible de charger les projets",
"storage_unavailable_body": "VoiceStudio na pas pu lire le stockage local des projets. Vos données nont pas été modifiées. Réessayez pour les ouvrir en toute sécurité.",
"clear_projects": "Effacer les projets enregistrés",
"clear_confirm": "Cette action supprime définitivement tous les projets Histoires et Livres audio enregistrés ainsi que tout brouillon non enregistré afin que VoiceStudio puisse souvrir à nouveau. Elle est irréversible. Continuer ?"
},
"backendUnreachable": {
"contact_recent": "Il répondait il y a {{ago}} puis a cessé de répondre, et aucun plantage n'a été enregistré — il est donc peut-être toujours actif, mais bloqué sur une tâche lourde qui monopolise le moteur.",
"contact_never": "Il n'a pas répondu du tout durant cette session — il n'a peut-être jamais démarré.",
"dev": "Impossible de joindre le backend VoiceStudio local. {{contact}} Avec `bun run dev`, le backend tourne en rechargement automatique : toute modification de fichier — y compris une sauvegarde pendant une requête en cours — le redémarre et coupe la connexion. Réessayez d'abord l'action ; s'il s'agissait d'un rechargement, cela fonctionnera. Si l'échec persiste, consultez le terminal exécutant `bun run dev` pour un traceback Python ou un message de sortie, et omnivoice.log dans votre dossier de données VoiceStudio.",
"server": "Impossible de joindre le serveur backend VoiceStudio. {{contact}} Consultez les journaux du serveur pour en trouver la cause (p. ex. `docker logs <conteneur>` ou `journalctl`) — et notez que si Docker sert cette page, la page elle-même peut tomber avec le backend.",
"misrouted": "Le serveur qui répond à {{url}} n'est pas un backend VoiceStudio — il a renvoyé sa propre page 404. Les requêtes API arrivent sur le mauvais hôte : vérifiez l'URL du backend dans Paramètres → Partage ou, si un proxy inverse sert cette interface, sa route pour les chemins d'API.",
"desktop": "Impossible de joindre le backend VoiceStudio local. {{contact}} Ouvrez l'avis de plantage s'il y en a eu un, ou Paramètres → Journaux → Backend pour la dernière chose qu'il a enregistrée — « {{retry}} » le redémarre, et « {{cleanRetry}} » reconstruit son environnement s'il ne revient pas."
},
"nav": {
"clone": "Cloner",
"design": "Concevoir",
"dub": "Doubler",
"settings": "Paramètres",
"stories": "Histoires",
"launchpad": "Barre de lancement",
"gallery": "Galerie",
"transcripts": "Transcriptions",
"omnidrive": "OmniDrive",
"catalogue": "Catalogue",
"move_rail_right": "Déplacer le rail vers la droite",
"move_rail_left": "Déplacer le rail vers la gauche",
"flip_rail": "Côté rail rabattable",
"voice": "Voix",
"audiobook": "Livre audio",
"workspaces": "Espaces de travail"
},
"catalogue": {
"title": "Catalogue de modèles",
"summary_title": "Votre configuration",
"other_weights": "Autres poids",
"change": "Modifier",
"status_setup": "Configuration requise",
"status_cpu": "Repli CPU",
"status_off": "Désactivé",
"storage_link": "Paramètres de stockage",
"reco_line": "{{installed}} des {{total}} modèles recommandés pour {{device}} installés · {{remaining}} Go restants",
"install_rest": "Installer le reste",
"device_remote": "Distant"
},
"settings": {
"remote_backend_test": "Tester la connexion",
"remote_backend_save": "Enregistrer et recharger",
"remote_backend_recovery_title": "Impossible de joindre le backend distant",
"remote_backend_recovery_hint": "Vous pourrez modifier le backend distant plus tard dans Réglages → Partage.",
"remote_backend_use_local": "Utiliser le backend local",
"remote_backend_error_tls": "La connexion sécurisée na pas pu être vérifiée. Vérifiez le certificat et utilisez le port de lAPI HTTP VoiceStudio.",
"remote_backend_error_cors": "Le backend distant a bloqué cette application. Autorisez lorigine de lapplication dans les réglages CORS.",
"remote_backend_error_network": "Le backend distant est inaccessible. Vérifiez son adresse, le réseau et le pare-feu.",
"remote_backend_error_timeout": "Le backend distant na pas répondu à temps.",
"remote_backend_error_http": "Le backend distant a renvoyé HTTP {{status}}.",
"remote_backend_error_wrong_port": "Ce service ne semble pas être lAPI HTTP VoiceStudio. Le port 7443 sert généralement au contrôle du worker distant ; essayez le port 3900.",
"openapi": "API VoiceStudio",
"general": "Général",
"theme": "Thème",
"language": "Langue",
"language_desc": "Sélectionner la langue de l'interface",
"appearance": "Apparence",
"sharing": "Partage",
"models": "Modèles",
"engines": "Moteurs",
"capture": "Saisie",
"credentials": "Identifiants",
"llm_providers": "Fournisseurs LLM",
"llmp_desc": "Alimente la traduction Cinematic et Autofit — le LLM reformule chaque ligne pour respecter le budget temps de son segment afin de préserver le timing de la vidéo. Les clés sont stockées chiffrées ; les fournisseurs locaux (Ollama/LM Studio) restent entièrement hors ligne.",
"llmp_catalogue_note": "Le fournisseur marqué comme actif est celui qui répond dès que la famille de moteurs LLM du catalogue est réglée sur « compatible OpenAI ».",
"llmp_catalogue_link": "Ouvrir la famille LLM dans le catalogue",
"llmp_provider": "Fournisseur",
"llmp_provider_hint": "Choisissez un fournisseur à configurer. Le fournisseur actif est utilisé pour la traduction Cinematic/Autofit. Les fournisseurs locaux ne nécessitent aucune clé, mais leur serveur doit être en cours d'exécution.",
"llmp_local_tag": "local",
"llmp_about": "À propos",
"llmp_get_key": "Obtenir une clé API",
"llmp_account_id": "ID de compte",
"llmp_account_placeholder": "ID de compte Cloudflare",
"llmp_api_key": "Clé API",
"llmp_key_env": "définie via l'environnement (.env) — remplace ce champ",
"llmp_key_stored": "enregistrée — saisissez pour remplacer",
"llmp_key_paste": "collez votre clé API",
"llmp_base_url": "URL de base",
"llmp_model": "Modèle",
"llmp_model_placeholder": "nom du modèle",
"llmp_fetch_models": "Récupérer les modèles",
"llmp_models_loaded": "{{count}} modèles disponibles chez ce fournisseur",
"llmp_status": "Statut",
"llmp_save": "Enregistrer",
"llmp_save_active": "Enregistrer et utiliser pour la traduction",
"llmp_save_keep": "Enregistrer et conserver l'actif",
"llmp_test": "Tester",
"llmp_active_badge": "actif",
"llmp_test_ok": "ok — {{model}} · {{ms}} ms",
"llmp_err_config": "Clé API ou URL de base manquante — renseignez-les puis enregistrez.",
"llmp_err_auth": "Clé rejetée (401/403) — vérifiez votre clé API.",
"llmp_err_not_found": "Introuvable (404) — vérifiez le nom du modèle et le chemin de l'URL de base.",
"llmp_err_rate_limit": "Limite de débit atteinte (429) — la clé fonctionne ; réessayez dans un instant.",
"llmp_err_network": "Impossible de joindre le fournisseur — vérifiez l'URL de base, votre réseau, ou que le serveur local est en cours d'exécution.",
"llmp_err_error": "Échec du test",
"llmp_load_failed": "Échec du chargement des fournisseurs",
"llmp_save_failed": "Échec de l'enregistrement",
"updates": "Mises à jour",
"logs": "Journaux",
"about": "À propos",
"privacy": "Confidentialité",
"title": "Paramètres",
"ui_scale": "Échelle de l'interface utilisateur",
"ui_scale_setup_screen": "Écran : {{width}} × {{height}}",
"ui_scale_setup_title": "Choisissez une taille dinterface confortable",
"ui_scale_setup_desc": "Vérifiez laperçu en direct et choisissez l’échelle qui vous convient le mieux sur cet écran. Vous pourrez la modifier plus tard dans les réglages.",
"ui_scale_setup_suggested": "Recommandé",
"ui_scale_setup_preview_title": "Aperçu en direct",
"ui_scale_setup_current_suggestion": "Point de départ recommandé : {{percent}} %",
"ui_scale_setup_continue": "Utiliser {{percent}} %",
"proxy": "Procuration",
"proxy_desc": "Proxy HTTP/SOCKS5 pour les téléchargements (téléchargements vidéo, Hugging Face). Prend en charge http://, https://, socks5://. S'applique immédiatement aux nouveaux téléchargements.",
"proxy_saved": "Proxy défini — les nouveaux téléchargements l'utiliseront",
"proxy_save_failed": "Échec de l'enregistrement du proxy",
"proxy_cleared": "Proxy effacé",
"proxy_clear": "Effacer",
"ffmpeg": "FFmpeg",
"ffmpeg_found": "Trouvé",
"ffmpeg_missing": "Pas trouvé",
"ffmpeg_current": "Chemin actuel",
"ffmpeg_desc": "Définissez un chemin ffmpeg personnalisé si la détection automatique échoue.",
"ffmpeg_saved": "Ensemble de chemins FFmpeg redémarrez le backend pour appliquer.",
"diagnostics_copied": "Diagnostics copiés : collez-les dans votre rapport de problème.",
"updater_desktop": "Le programme de mise à jour ne s'exécute que dans l'application de bureau.",
"latest_version": "Vous êtes sur la dernière version.",
"logs_load_failed": "Échec du chargement des journaux : {{message}}",
"clear_frontend_confirm": "Effacer le tampon du journal frontal en mémoire ?",
"clear_frontend_title": "Effacer les journaux",
"frontend_logs_cleared": "Journaux frontend effacés",
"clear_tauri_confirm": "Tronquer les fichiers journaux côté Tauri ? Le système d'exploitation continuera à écrire de nouvelles entrées.",
"clear_tauri_title": "Effacer les journaux Tauri",
"nothing_to_clear": "Rien à effacer pas encore de fichier journal Tauri sur le disque.",
"cleared_tauri_one": "Fichier journal {{count}} Tauri effacé",
"cleared_tauri_other": "Fichiers journaux {{count}} Tauri effacés",
"clear_tauri_failed": "Échec de la suppression des journaux Tauri : {{message}}",
"clear_backend_confirm": "Effacer le runtime backend + les journaux de crash ? Cela ne peut pas être annulé.",
"clear_backend_title": "Effacer les journaux",
"backend_logs_cleared": "Journaux back-end effacés",
"clear_backend_failed": "Échec de la suppression des journaux",
"copy_failed": "Échec de la copie : {{message}}",
"update_check_failed": "Échec de la vérification de la mise à jour : {{message}}",
"save_failed": "Échec de l'enregistrement : {{message}}",
"clear_failed": "Échec de la suppression : {{message}}",
"engine_switched": "{{family}} basculé vers {{engine}}",
"channel_set_failed": "Échec de la définition du canal : {{message}}",
"updater_downloading": "Téléchargement de {{version}}…",
"updater_installed": "Installé — relance.",
"updater_available_title": "Mise à jour disponible",
"updater_available_body": "La version {{version}} est disponible.\n\n{{notes}}\n\nTélécharger et installer maintenant ?",
"updater_notes_fallback": "Voir les notes de version sur GitHub.",
"shortcut_load_failed": "Impossible de charger le raccourci : {{message}}",
"shortcut_set": "Raccourci de dictée défini sur {{shortcut}}",
"shortcut_register_failed": "Impossible de s'inscrire : {{message}}",
"shortcut_reset": "Réinitialiser aux valeurs par défaut",
"shortcut_reset_failed": "Échec de la réinitialisation : {{message}}",
"reset_longform_failed": "VoiceStudio na pas pu effacer les projets enregistrés en toute sécurité. Les données de vos projets sont restées intactes ; libérez de lespace ou redémarrez lapplication, puis réessayez.",
"cancel": "Annuler",
"hf_token_also_clear": "Supprimer aussi les fichiers de jetons enregistrés de HuggingFace CLI",
"hf_token_clear_btn": "Effacer le jeton",
"hf_token_clear_confirm": "Effacer le jeton HuggingFace de la source App ?",
"hf_token_clear_dialog": "Effacer le jeton",
"hf_token_input": "Jeton HuggingFace",
"hf_token_sources": "Sources du jeton HF",
"hf_token_test_now": "Tester maintenant",
"hf_token_test_now_title": "Relancer whoami pour chaque source",
"color_theme": "Thème de couleur",
"font": "Police",
"autoplay_preview": "Aperçu de la lecture automatique",
"autoplay_preview_label": "Lire la sortie dès la fin du rendu",
"autoplay_preview_hint": "Lorsqu'elle est désactivée, un rendu terminé ne démarre plus tout seul, ce qui est utile lors de la génération de segments par lots.",
"appearance_help": "Ces contrôles se trouvaient dans la barre inférieure des journaux déplacés ici afin que le pied de page puisse rester concentré sur les journaux. Les modifications sappliquent instantanément et persistent lors des lancements.",
"advanced": "Avancé",
"shortcut": "Raccourci de dictée",
"credentials_desc": "Clés et jetons API définis pour cette session.",
"credentials_more": "Plus de fournisseurs",
"group_general": "Général",
"group_voice": "Voix et moteurs",
"group_system": "Système",
"group_app": "Application",
"search_placeholder": "Paramètres de recherche…",
"restart_required": "Redémarrage requis",
"applies_now": "S'applique maintenant",
"dictation": "Dictée",
"pronunciation": "Prononciation",
"translation": "Traduction",
"network": "Réseau",
"performance": "Performances et appareil",
"storage": "Stockage",
"device": "Appareil et calcul",
"device_desc": "Lectures matérielles et back-end en direct.",
"network_desc": "Chemins proxy et FFmpeg pour les téléchargements et le traitement multimédia.",
"translation_desc": "Comment le doublage traduit les dialogues et quel moteur le fait.",
"translate_quality": "Qualité de la traduction",
"translate_quality_desc": "Rapide est littéral et rapide ; Cinematic utilise le LLM pour un phrasé naturel.",
"translate_fast": "Rapide",
"translate_cinematic": "Cinématique",
"translation_providers": "Prestataires de traduction",
"translation_providers_desc": "Clés API pour les traducteurs en ligne, définies pour cette session.",
"review_mode": "Mode révision",
"review_mode_on": "Examen",
"review_mode_off": "Tir rapide",
"review_mode_desc": "Faites une pause entre les étapes du pipeline afin de pouvoir examiner le résultat ASR/traduction.",
"header_live_stats": "Afficher les métriques du système en direct dans l'en-tête",
"header_live_stats_desc": "Ajoute un moniteur RAM / CPU / VRAM en direct à la barre supérieure (désactivé par défaut).",
"nav_style": "Style de navigation",
"nav_style_desc": "Changez d'espace de travail depuis une barre d'icônes sur le bord de la fenêtre ou depuis des onglets dans la barre de titre.",
"nav_style_rail": "Barre latérale",
"nav_style_tabs": "Onglets dans la barre de titre",
"storage_desc": "Où VoiceStudio conserve vos données et sorties.",
"history_retention": "Historique de génération",
"history_retention_desc": "Nombre de prises à conserver avant de nettoyer les plus anciennes.",
"history_retention_help": "Après chaque génération, les prises les plus anciennes sans étoile au-delà de cette limite sont supprimées avec leurs fichiers audio. Les prises étoilées sont toujours conservées. 0 = tout conserver.",
"history_retention_cap": "Prises à conserver",
"history_retention_cap_hint": "Les prises étoilées ne comptent jamais pour le nettoyage · 0 = illimité",
"history_retention_saved": "Limite de rétention enregistrée",
"history_retention_save_failed": "Enregistrement impossible",
"history_retention_invalid": "Saisissez 0 ou plus",
"workers_title": "Workers distants",
"workers_desc": "Envoyez des tâches individuelles aux GPU de vos autres machines. Les résultats reviennent ici. Rien n'est envoyé tant que vous n'avez pas ajouté et approuvé un worker.",
"workers_enable": "Utiliser des workers distants",
"workers_enable_hint": "Tant que ceci est désactivé, aucune connexion n'est acceptée et rien ne quitte cette machine.",
"workers_port_conflict": "Les workers distants sont indisponibles, car une autre instance de VoiceStudio les accepte déjà sur ce port. Fermez lautre instance, ou définissez OMNIVOICE_WORKER_PORT sur un autre port puis redémarrez VoiceStudio.",
"workers_endpoint": "Les workers se connectent à",
"workers_endpoint_hint": "Un worker doit pouvoir joindre cette adresse. Sur des réseaux différents, un VPN comme Tailscale est la méthode fiable.",
"workers_add": "Ajouter un worker",
"workers_add_hint": "Générez un jeton, puis collez-le dans OmniVoice sur l'autre machine.",
"workers_new_token": "Générer un jeton",
"workers_token_once": "Copiez-le maintenant : il n'est affiché qu'une fois, ne fonctionne qu'une fois et expire dans 15 minutes.",
"workers_copy": "Copier",
"workers_copied": "Copié",
"workers_copy_failed": "Copie impossible.",
"workers_none": "Aucun worker pour l'instant. Générez un jeton pour ajouter le premier.",
"workers_load": "Tâches {{active}} / {{slots}}",
"workers_needs_consent": "Non approuvé",
"workers_status_online": "En ligne",
"workers_status_offline": "Hors ligne",
"workers_status_paused": "En pause",
"workers_status_disabled": "Désactivé",
"workers_resume": "Reprendre",
"workers_disable": "Désactiver",
"workers_enable_one": "Activer",
"workers_remove": "Supprimer",
"workers_remove_title": "Supprimer le worker ?",
"workers_remove_confirm": "Supprimer {{name}} ? Sa clé est révoquée, il ne pourra pas se reconnecter sans un nouveau jeton.",
"workers_rename": "Renommer le worker",
"inbound_add_person": "Ajouter une personne",
"inbound_add_person_hint": "Crée une chaîne de connexion pour une personne. Donnez-en une à chacun, afin qu'en supprimer une ne déconnecte pas tout le monde.",
"inbound_bind": "Accessible depuis",
"inbound_bind_apply": "Appliquer",
"inbound_bind_exposed": "Toute personne pouvant atteindre {{address}} peut se connecter avec une chaîne valide. TLS chiffre la session et épingle le certificat de cette machine ; gardez chaque chaîne privée et retirez les accès inutiles.",
"inbound_bind_local": "Seule cette machine peut y accéder. Saisissez votre adresse réseau pour permettre à d'autres machines de se connecter.",
"inbound_connect": "Se connecter",
"inbound_connect_desc": "Collez la chaîne de connexion qu'on vous a donnée. La machine doit accepter les connexions pour que cela fonctionne.",
"inbound_connect_hint": "Commence par ovnode:// et contient la clé, l'adresse, le port et l'empreinte du certificat.",
"inbound_connect_placeholder": "ovnode://…@192.168.0.110:7444?fingerprint=…",
"inbound_request_failed": "Impossible de joindre cette machine GPU. Vérifiez qu'elle est en ligne et accepte les connexions, puis réessayez.",
"inbound_connect_row": "Chaîne de connexion",
"inbound_connect_title": "Se connecter à une machine GPU",
"inbound_connected": "connecté",
"inbound_connected_now": "Connectés en ce moment",
"inbound_connecting": "connexion…",
"inbound_create": "Créer",
"inbound_desc": "Autorisez d'autres machines à se connecter afin que plusieurs personnes partagent ce GPU. Chaque connexion est chiffrée et épinglée au certificat de cette machine.",
"inbound_disconnect": "Déconnecter",
"inbound_enable": "Accepter les connexions",
"inbound_enable_hint": "Les autres se connectent à cette machine au lieu que ce soit elle qui se connecte à eux. Personne n'entre sans une chaîne de connexion que vous créez.",
"inbound_exposed_badge": "Sur votre réseau",
"inbound_forget": "Supprimer",
"inbound_hours_ago": "il y a {{count}} h",
"inbound_jobs_run": "{{count}} tâches",
"inbound_just_now": "à l'instant",
"inbound_label": "Nom",
"inbound_label_placeholder": "Portable d'Alice",
"inbound_last_seen": "dernière utilisation {{when}}",
"inbound_minutes_ago": "il y a {{count}} min",
"inbound_nobody": "Personne n'est connecté.",
"inbound_people": "Personnes ayant accès",
"inbound_revoke": "Supprimer",
"inbound_revoke_confirm": "Retirer l'accès de {{label}} ? Sa chaîne de connexion cesse immédiatement de fonctionner. Tous les autres restent connectés.",
"inbound_revoke_title": "Retirer l'accès ?",
"inbound_shown_once": "Copiez-la maintenant — elle ne sera plus affichée. Ne la donnez qu'à {{label}}.",
"inbound_shown_once_warning": "Traitez-la comme un mot de passe et transmettez-la en privé. L'empreinte du certificat épingle la connexion chiffrée à cette machine GPU.",
"inbound_title": "Partager ce GPU avec d'autres personnes",
"history_retention_load_failed": "Impossible de charger la limite de rétention actuelle",
"models_dir_help": "Emplacement des poids de modèles. Choisissez si besoin un disque plus grand ou plus rapide ; les changements sappliquent après redémarrage.",
"models_dir_saved": "Dossier des modèles enregistré — redémarrez pour appliquer",
"models_dir_reverted": "Dossier par défaut restauré — redémarrez pour appliquer",
"models_dir_reset_hint": "Rétablir lemplacement du cache par défaut",
"models_dir_effective": "Utilisé actuellement",
"models_dir_configured": "Configuré",
"models_dir_default": "Valeur par défaut",
"models_dir_restart": "↻ Redémarrez VoiceStudio pour utiliser le nouvel emplacement.",
"worker_join": "Rejoindre",
"worker_join_code": "Code d'association",
"worker_join_code_hint": "À usage unique, expire dans 15 minutes. Générez-le sur la machine qui enverra les tâches.",
"worker_join_desc": "Autorisez une autre copie de VoiceStudio à envoyer des tâches à cette machine. Collez le code d'association qu'elle vous a montré — ou scannez son QR avec votre téléphone et collez-le ici.",
"worker_join_env": "OMNIVOICE_WORKER_MODE est défini dans l'environnement de cette machine, c'est donc lui qui décide — modifiez-le là-bas.",
"worker_join_no_endpoint": "Aucun plan de contrôle mémorisé.",
"worker_join_ok": "Association réussie. Cette machine accepte désormais des tâches.",
"worker_join_placeholder": "ovw_…",
"worker_join_rejoin": "En rejoindre une autre",
"worker_join_stopped": "Arrêté",
"worker_join_take_work": "Accepter des tâches de",
"worker_join_title": "Prêter le GPU de cette machine",
"worker_join_working": "Au travail",
"workers_add_hint_qr": "Générez un jeton, puis scannez le QR depuis l'autre machine ou collez le code dans ses paramètres Workers distants.",
"workers_approve": "Approuver",
"workers_last_seen": "vu pour la dernière fois {{when}}",
"workers_qr_alt": "Code QR contenant ce code — à scanner depuis l'autre machine",
"workers_secret_done": "Terminé",
"workers_seen_hr": "il y a {{count}} h",
"workers_seen_min": "il y a {{count}} min",
"workers_seen_now": "à l'instant",
"workers_step_1": "Installez VoiceStudio sur la machine équipée du GPU.",
"workers_step_2": "Générez un jeton ci-dessus.",
"workers_step_3": "Scannez-y le QR, ou collez le code dans ses paramètres Workers distants.",
"workers_summary_none": "Personne n'est connecté",
"workers_summary_online": "{{count}} en ligne",
"workers_token_expired": "Expiré — générez-en un nouveau",
"workers_token_expires_in": "Expire dans {{time}}",
"workers_token_qr_hint": "Sur l'autre machine : Paramètres → Système → Workers distants → Rejoindre, puis scannez ou collez.",
"compute_device": "Périphérique de calcul",
"compute_device_title": "Périphérique de calcul",
"compute_device_desc": "Sur quel périphérique le backend exécute les modèles. Auto convient à presque tout le monde.",
"compute_device_env_pinned": "Épinglé par la variable d'environnement OMNIVOICE_DEVICE",
"compute_device_ignored": "Ce périphérique n'a pas été détecté sur cette machine — Auto est en vigueur",
"compute_device_restart": "Prend effet après le redémarrage de l'application",
"compute_device_note": "Seuls les périphériques détectés sur cette machine sont listés. Le CPU fonctionne toujours ; épingler un périphérique n'invente jamais de matériel.",
"compute_device_auto": "Auto (recommandé)",
"device_family_cuda": "NVIDIA GPU (CUDA)",
"device_family_rocm": "AMD GPU (ROCm)",
"device_family_xpu": "Intel GPU (XPU)",
"device_family_npu": "NPU",
"device_family_mps": "Apple GPU (MPS)",
"device_family_cpu": "CPU",
"device_load_failed": "Impossible de charger le réglage du périphérique",
"perf_save_failed": "Impossible d'enregistrer le réglage",
"generate_budget_title": "Budget de temps de calcul",
"generate_budget_desc": "Durée pendant laquelle une génération peut s'exécuter avant d'être abandonnée comme trop lourde pour ce matériel. Les rendus sur processeur sont légitimement plus lents que les rendus accélérés, ils ont donc leur propre seuil, plus élevé.",
"generate_timeout_gpu": "Budget accéléré (GPU)",
"generate_timeout_gpu_note": "Utilisé lorsque la génération s'exécute sur CUDA, ROCm, MPS ou un autre accélérateur. Également utilisé pour la génération sur processeur si aucun budget CPU n'est défini ci-dessous.",
"generate_timeout_cpu": "Budget CPU",
"generate_timeout_cpu_note": "Utilisé lorsque la génération s'exécute sur le processeur. Une fois enregistrée ici, cette valeur régit toujours la génération sur processeur — indépendamment du budget accéléré ci-dessus.",
"generate_timeout_invalid": "Saisissez un nombre de secondes supérieur à 0 et au maximum {{max}}.",
"generate_timeout_saved": "Enregistré. Redémarrez VoiceStudio pour que le nouveau budget prenne effet.",
"generate_timeout_shadowed_badge": "Remplacé de l'extérieur",
"generate_timeout_shadowed_note": "Une variable d'environnement extérieure à VoiceStudio (shell, fichier .env ou conteneur) définit actuellement cette valeur — la valeur enregistrée ici est ignorée tant que cette variable n'est pas supprimée.",
"generate_timeout_shadowed_toast": "Enregistré, mais une variable d'environnement extérieure à VoiceStudio définit actuellement cette valeur — elle continuera d'être utilisée tant que cette variable ne sera pas supprimée.",
"hf_token_not_checked": "Non testé",
"hf_source_app_label": "VoiceStudio (chiffré, recommandé)",
"hf_source_cli_label": "HuggingFace CLI",
"hf_source_env_label": "Variable denvironnement",
"theme_auto": "Auto (Système)",
"theme_light": "Clair",
"reduce_motion": "Réduire les animations",
"reduce_motion_desc": "Arrête les animations darrière-plan et les transitions. Le réglage système reste actif de son côté ; ceci sy ajoute."
},
"bootstrap": {
"title": "VoiceStudio",
"checking": "Vérification de l'environnement…",
"downloading_uv": "Téléchargement de uv (gestionnaire de paquets Python)…",
"creating_venv": "Création de l'environnement virtuel Python…",
"installing_deps": "Installation des dépendances — premier lancement, 510 min.",
"starting_backend": "Démarrage du serveur…",
"ready": "Prêt",
"failed": "Échec de l'installation",
"what_to_try": "Que tenter :",
"retry": "Réessayer",
"clean_retry": "Nettoyer et réessayer",
"clean_retry_confirm": "Cela supprimera l'environnement Python mis en cache et téléchargera à nouveau toutes les dépendances (~5-10 min). Continuer ?",
"hide_logs": "Masquer les journaux",
"show_logs": "Afficher les journaux",
"lines": "{{count}} lignes",
"copy": "Copier",
"copied": "Copié !",
"waiting_output": "En attente de sortie…",
"auto_detect": "Détecter automatiquement",
"suggest_lang": "Passer au Français ?",
"select_lang": "Langue :",
"lines_one": "Ligne {{count}}",
"lines_other": "{{count}} lignes",
"region_global": "Mondial (direct)",
"region_china": "Chine (miroir)",
"region_russia": "Russie (miroir)",
"region_restricted": "Restreint (miroir)",
"unknown_error": "Erreur inconnue",
"retrying": "Nouvelle tentative…",
"hint_readme": "README.md manquait dans le paquet. C'est désormais corrigé automatiquement — réessayer devrait fonctionner.",
"hint_python_mirror": "Le réseau n'a pas pu atteindre le téléchargement de Python (release github.com). Changez de région dans Paramètres → Réseau (Chine / Russie / Restreint passent par un miroir), ou installez Python 3.11+ sur le système pour que l'application l'utilise.",
"hint_uv_timeout": "Délai réseau dépassé lors du téléchargement de uv. Vérifiez votre connexion internet ou essayez une autre région dans Paramètres → Réseau.",
"hint_uv_sync": "L'installation des dépendances a échoué. « Nettoyer et réessayer » supprimera le venv en cache et repartira de zéro.",
"hint_build_backend": "Erreur du backend de build Python. « Nettoyer et réessayer » supprime le venv défectueux pour le reconstruire entièrement.",
"hint_ffmpeg": "Le téléchargement de ffmpeg a échoué. Ce n'est pas bloquant — réessayez ou installez ffmpeg manuellement.",
"hint_port": "Le port 3900 est déjà utilisé. Fermez les autres instances d'VoiceStudio ou les applications utilisant ce port.",
"hint_silent_crash": "Le backend s'est arrêté sans message d'erreur. « Nettoyer et réessayer » corrige souvent un venv corrompu.",
"hint_github_blocked": "Votre réseau bloque peut-être GitHub. Installez Python 3.11+ depuis python.org (ajout au PATH) et relancez, ou définissez UV_PYTHON_INSTALL_MIRROR — voir docs/install/troubleshooting.md.",
"hint_intel_mac": "Ce Mac a un processeur Intel et PyTorch ne publie plus de versions pour Mac Intel — le backend IA local ne peut pas être installé, et réessayer n'y changera rien. Vous pouvez toujours connecter l'application à un backend distant sur une autre machine (Paramètres → Partage → Backend distant) ou utiliser VoiceStudio sur un Mac Apple Silicon, Windows ou Linux. Détails : docs/install/macos.md.",
"hint_default": "Essayez d'abord « Réessayer ». En cas de nouvel échec, « Nettoyer et réessayer » reconstruira l'environnement de zéro.",
"hint_stuck": "Le backend n'a pas fini de démarrer. À partir des sources, exécutez d'abord « uv sync » et assurez-vous que « uv » et Python sont sur votre PATH, puis réessayez. Consultez le journal ci-dessous (ou Paramètres → Journaux → Backend) pour connaître le point de décrochage exact."
},
"stories": {
"title": "Éditeur d'histoires",
"subtitle": "Livre audio multipiste avec voix par personnage",
"cast": "Casting",
"castTitle": "Cast  attribuez une voix à chaque personnage",
"addCharacter": "Ajouter un personnage",
"character": "Caractère",
"characterName": "Nom du personnage",
"narratorLocked": "Le narrateur est toujours présent",
"removeCharacter": "Supprimer un personnage",
"noProfiles": "Aucun profil vocal n'est encore installé : clonez ou concevez d'abord une voix.",
"pasteSplit": "Coller et diviser",
"import": "Importer",
"autocast": "Diffusion automatique",
"autocastHint": "Détectez qui parle et attribuez automatiquement des voix",
"autocastEmpty": "Rien à diffuser automatiquement : collez ou importez d'abord une histoire.",
"autocastDone": "Diffusez automatiquement {{lines}} lignes sur {{voices}} voix(s)",
"importFailed": "Impossible de lire ce fichier.",
"addLine": "Ajouter une ligne",
"addChapter": "Ajouter un chapitre",
"chapterN": "Chapitre {{n}}",
"stems": "Tiges",
"stemsDone": "Tige(s) de caractère {{count}} exportée(s)",
"format": "Format d'exportation",
"mp3Fallback": "Encodage MP3 indisponible  téléchargé WAV à la place.",
"projects": "Projets",
"newStory": "Nouvelle histoire",
"save": "Enregistrer",
"untitled": "Histoire sans titre",
"projectName": "Nom du projet",
"deleteProject": "Supprimer le projet",
"noProjects": "Aucune histoire enregistrée pour linstant Enregistrez pour conserver celle-ci.",
"projectSaved": "Histoire enregistrée",
"generateAll": "Générer",
"splitPlaceholder": "Collez un long passage. Nous le diviserons en segments aux limites des phrases.",
"maxChars": "Nombre maximum de caractères par segment",
"segmentsHint": "~{{count}} segment(s) à {{max}} caractères",
"pasteAbove": "Coller le texte ci-dessus",
"cancel": "Annuler",
"splitIntoTracks": "Divisé en lignes",
"emptyText": "Commencez votre histoire en ajoutant des lignes de dialogue et de narration. Attribuez à chaque personnage une voix dans le casting.",
"addFirst": "Ajouter la première ligne",
"linePlaceholder": "Entrez un dialogue ou une narration… utilisez [pause 0,5 s] pour une pause silencieuse",
"text": "texte",
"voice": "voix",
"defaultVoice": "Par défaut",
"inlineVoice": "Définir la voix en ligne",
"inlineVoiceHint": "Changer de voix pour le texte en surbrillance (ou insérer un commutateur au niveau du curseur)",
"resetInlineVoice": "Réinitialiser à la voix de ligne",
"insertPause": "Insérer une pause de [pause 0,5 s]",
"preview": "Aperçu de cette ligne",
"removeLine": "Supprimer la ligne",
"tune": "Tonalité et vitesse",
"speed": "Vitesse",
"reset": "Réinitialiser",
"tones": {
"laugh": "Rire",
"sigh": "Soupir",
"question": "Question",
"surprise": "Surprise",
"confirm": "Confirmer",
"dissatisfaction": "Hmph"
},
"lines": "{{count}} lignes",
"characters": "{{count}} caractères",
"minutes": "~{{count}} min",
"chars": "{{count}} caractères",
"exportDone": "Livre audio téléchargé",
"exportFailed": "Échec de l'exportation : vérifiez que le backend est en cours d'exécution.",
"global_speed": "Vitesse",
"global_speed_hint": "Vitesse de lecture pour toutes les lignes sans leur propre priorité de vitesse",
"deleteProjectConfirm": "Supprimer définitivement ce projet ?"
},
"common": {
"stop": "Arrêter",
"resume": "Reprendre",
"paused": "En pause",
"open": "Ouvert",
"cancel": "Annuler",
"save": "Enregistrer",
"delete": "Supprimer",
"loading": "Chargement…",
"error": "Quelque chose s'est mal passé",
"languages_count": "646 langues",
"clear": "Effacer",
"refresh": "Actualiser",
"close": "Fermer",
"minimize_window": "Réduire la fenêtre",
"maximize_restore_window": "Agrandir ou restaurer la fenêtre",
"close_window": "Fermer la fenêtre",
"back": "Retour",
"play": "Jouer",
"pause": "Pause",
"reload": "Forcer le rechargement de l'interface utilisateur",
"backend": "Back-end",
"frontend": "Front-end",
"tauri": "Taureau",
"cancelOp": "Annuler l'opération",
"dismiss": "Rejeter",
"dismissStatus": "Ignorer le statut",
"search": "Rechercher…",
"no_matches": "Aucune correspondance",
"recent_and_popular": "Récents et populaires",
"popular_label": "Populaire",
"showing_of": "Montrant {{shown}} sur {{total}}. Tapez pour rechercher…",
"yes": "Oui",
"no": "Non",
"more_info": "Plus d'informations",
"learn_more": "En savoir plus",
"saving": "Enregistrement…",
"remove": "Supprimer {{term}}",
"not_set": "Non défini"
},
"launchpad": {
"greeting": "bonjour",
"hero_title": "Faites des voix qui <1>vous ressemblent</1>.",
"hero_desc": "Clonez une voix, concevez-en une nouvelle ou doublez une vidéo dans <1>{{count}} langues</1>. Conçu pour les créateurs qui se soucient du son.",
"clone_title": "Clonage vocal",
"clone_desc": "Déposez un court extrait nous le refléterons. Un échantillon suffit généralement.",
"design_title": "Conception vocale",
"design_desc": "Construisez une nouvelle voix à partir dune phrase. Sexe, âge, accent, humeur : à vous de décider.",
"dub_title": "Doublage vidéo",
"dub_desc": "Transcrivez, traduisez, ré-exprimez. Conservez chaque haut-parleur, alignez le timing, expédiez-le.",
"ab_compare": "Comparaison A/B",
"ab_compare_title": "Essayez deux voix côte à côte",
"cloned_voices": "Voix clonées",
"designed_voices": "Voix conçues",
"dubbing_projects": "Projets de doublage",
"empty_hint": "Rien ici pour l'instant choisissez une carte ci-dessus.",
"demo_callout": "Essayez la voix de démonstration appuyez sur Générer pour l'entendre.",
"locked": "VERROUILLÉ",
"open": "Ouvert",
"try_it": "Essayez-le",
"audio_only": "Audio uniquement",
"stories_title": "Histoires",
"stories_desc": "Livres audio multi-voix : lancez vos personnages, insérez un script, exportez par chapitre.",
"gallery_title": "Galerie vocale",
"gallery_desc": "Parcourez les voix prêtes à lemploi par accent, âge et style aucune configuration.",
"transcripts_title": "Transcriptions",
"transcripts_desc": "Transformez l'audio ou la vidéo en texte modifiable et consultable, dans 646 langues.",
"recent_files": "Fichiers récents",
"view_all_files": "Afficher tous les fichiers",
"file": "Fichier",
"audiobook_title": "Livre audio",
"audiobook_desc": "Transformez un long script ou un EPUB en un livre audio chapitrené : couvertures, métadonnées, un narrateur.",
"convert_title": "Changeur de voix",
"convert_desc": "Dites-le une fois — écoutez-le avec une autre voix. De la parole à la parole, entièrement en local."
},
"clone": {
"text_label": "Texte",
"paste": "Coller",
"paste_failed": "Laccès au presse-papiers est bloqué. Collez directement dans le champ de texte avec le clavier.",
"prompt": "Invite",
"language": "Langue",
"steps": "Étapes",
"voice_source": "Source vocale",
"reference_audio": "Audio de référence",
"reference_hint": "Utilisez 5 à 15 secondes de voix claire.",
"upload_audio": "Importer un audio",
"optional_details": "Détails facultatifs",
"starting_recording": "Démarrage…",
"unsupported_audio": "Choisissez un fichier audio compatible : WAV, MP3, M4A, FLAC, OGG, AAC ou WebM.",
"saved_profiles": "Profils enregistrés",
"transcript": "Transcription",
"style": "Style",
"save_as_profile": "Enregistrer en tant que profil vocal",
"profile_name": "Nom du profil…",
"save": "Enregistrer",
"cancel": "Annuler",
"synthesize": "Synthétiser l'audio",
"synthesizing": "Synthèse… ({{seconds}}s)",
"drop_audio": "Déposez laudio ici ou cliquez. WAV, MP3, M4A… 🎤",
"record": "Enregistrer",
"cleaning": "Nettoyage…",
"using_profile": "Utilisation du profil : {{name}}",
"clear": "clair",
"production_overrides": "Dépassements de production",
"denoise": "Débruit",
"postprocess": "Post-traitement",
"duration": "Durée",
"auto": "Automatique",
"optional": "(Facultatif)",
"toggle_sidebar": "Basculer la barre latérale",
"delete_profile": "Supprimer le profil",
"personality_narrator": "Narrateur",
"personality_casual": "Décontracté",
"personality_news_anchor": "Présentateur de nouvelles",
"personality_storyteller": "Conteur",
"personality_corporate": "Entreprise",
"personality_energetic": "Énergique",
"preset_narrator": "🎙️ Faisant autorité",
"preset_excited_child": "🧒 Enfant excité",
"preset_anxious_whisper": "🤫 Chuchotement",
"preset_surprised_woman": "😲 Surpris",
"preset_elderly_story": "👴 Aîné",
"preset_sichuan": "🌶️ 四川话",
"prompt_placeholder": "Que devrait dire cette voix ?",
"design_placeholder": "Décrivez la voix, puis tapez ce qu'elle dit…",
"speed": "Vitesse",
"tshift": "t_shift",
"pos_temp": "Température de position",
"class_temp": "Temporaire de classe",
"layer_pen": "Stylo de calque",
"auto_kicker": "· automobile",
"cat_Gender": "Sexe",
"cat_Age": "Âge",
"cat_Pitch": "Emplacement",
"cat_Style": "Style",
"cat_EnglishAccent": "Accent anglais",
"cat_ChineseDialect": "Dialecte chinois",
"vd_exclusive_cleared": "{{cleared}} effacé — un dialecte chinois et un accent anglais ne peuvent pas être combinés.",
"opt_Auto": "✨Auto",
"opt_male": "mâle",
"opt_female": "femelle",
"opt_child": "enfant",
"opt_teenager": "adolescent",
"opt_young_adult": "jeune adulte",
"opt_middle_aged": "d'âge moyen",
"opt_elderly": "personnes âgées",
"opt_very_low_pitch": "ton très grave",
"opt_low_pitch": "ton grave",
"opt_moderate_pitch": "pitch modéré",
"opt_high_pitch": "ton aigu",
"opt_very_high_pitch": "ton très aigu",
"opt_whisper": "murmurer",
"style_placeholder": "par ex. murmurer",
"stop_playback": "Arrêter la lecture",
"describe_label": "Décrivez votre voix",
"describe_placeholder": "p. ex. a warm elderly British storyteller, slightly raspy",
"describe_hint": "Décrivez la voix, ou choisissez un point de départ. L'un ou l'autre renseigne les détails ci-dessous.",
"describe_unmatched": "Impossible d'associer : {{items}}",
"describe_no_match": "Aucun trait vocal reconnu pour l'instant — essayez des mots comme deep, elderly ou British.",
"define_by_design": "Par conception",
"define_from_audio": "À partir de l'audio",
"define_voice": "Définir la voix",
"save_design_as_profile": "Enregistrer la conception en tant que profil",
"generating_done_status": "Génération terminée",
"generating_status": "Génération de l'audio…",
"identity": "Identité",
"identity_auto": "Auto — le modèle décide",
"insert": "Insérer",
"insert_token": "Insérer un jeton d'expression",
"script": "Scénario",
"starting_points": "Points de départ",
"voice_kicker": "Voix",
"seed_label": "Semence",
"seed_placeholder": "aléatoire à chaque fois",
"seed_keep": "Gardez cette graine",
"seed_reroll": "Nouvelle graine",
"seed_reroll_hint": "Lancez une nouvelle graine aléatoire et conservez-la",
"define_convert": "Convertir",
"details": "Détails",
"edit": "Modifier",
"cat_AccentDialect": "Accent ou dialecte",
"accent_dialect_hint": "l'un ou l'autre, jamais les deux",
"reset_to_description": "Réinitialiser selon la description",
"chips_more": "{{count}} de plus…",
"cfg": "CFG"
},
"about": {
"app": "Application",
"version": "Version",
"tauri_runtime": "Exécution Tauri",
"platform": "Plateforme",
"architecture": "Architecture",
"python": "Python",
"compute_device": "Appareil de calcul",
"gpu_active": "GPU actif",
"ram": "RAM",
"vram": "VRAM",
"backend": "Back-end",
"active_model": "Modèle actif",
"asr_model": "Modèle ASR",
"translator": "Traducteur",
"hf_token": "Jeu de jetons HF",
"data_dir": "Répertoire de données",
"outputs": "Sorties",
"crash_log": "Journal des incidents",
"update_endpoint": "Mettre à jour le point de terminaison",
"yes": "oui",
"no": "non",
"web_preview": "aperçu Web",
"downloading": "Téléchargement…",
"check_updates": "Vérifier les mises à jour",
"copy_diagnostics": "Copier les diagnostics",
"github": "VoiceStudio sur GitHub",
"commercial_license": "Licence commerciale",
"update_channel": "Canal de mise à jour",
"channel_stable": "Stable",
"channel_preview": "Aperçu",
"channel_set": "Canal de mise à jour réglé sur {{channel}}",
"channel_preview_hint": "L'aperçu suit la dernière version de main : fonctionnalités plus récentes, moins testées. Revient à la version stable si une version stable est plus avancée.",
"self_check": "Lancer l'auto-diagnostic",
"self_check_failed": "Échec de l'auto-diagnostic : {{message}}",
"self_check_ok": "OK",
"self_check_warn": "Avertissement",
"self_check_fail": "Échec",
"self_check_healthy": "Toutes les vérifications sont passées — cette installation semble saine.",
"self_check_attention": "{{count}} vérification(s) en échec — voir les indications ci-dessus.",
"save_bundle": "Enregistrer le paquet de diagnostic",
"bundle_saved": "Paquet de diagnostic enregistré : {{filename}}",
"bundle_failed": "Impossible de créer le paquet de diagnostic : {{message}}"
},
"privacy": {
"desc": "Tout fonctionne sur <1>cette machine</1>. Votre audio, vidéo et transcriptions ne quittent jamais votre ordinateur, sauf si vous utilisez explicitement un traducteur en ligne (Google, DeepL, etc.) ou si vous poussez vers HuggingFace.",
"uploads_at": "Téléchargements stockés sur",
"outputs_at": "Sorties stockées dans",
"gen_history": "Historique des générations",
"network_calls": "Appels réseau",
"model_telemetry": "Télémétrie du modèle",
"local_sqlite": "SQLite local",
"translator_online": "Le traducteur est en ligne : {{provider}}",
"translator_offline": "Traducteur hors ligne",
"no_tracking": "Aucun — pas de suivi",
"watermark_title": "Filigrane invisible",
"watermark_subtitle": "Activé par défaut. Marque l'audio généré comme créé par IA afin qu'il puisse être identifié plus tard. N'affecte que l'audio généré à partir de maintenant.",
"watermark_on_toast": "Filigrane invisible activé pour les nouveaux audios.",
"watermark_off_toast": "Filigrane invisible désactivé pour les nouveaux audios.",
"watermark_failed": "Impossible de modifier le réglage du filigrane."
},
"consent": {
"title": "Aider à améliorer VoiceStudio ?",
"desc": "Statistiques d'utilisation anonymes et sans contenu qui nous aident à corriger les bugs plus vite — entièrement facultatives, désactivées par défaut.",
"step_label": "Améliorer VoiceStudio",
"body": "Statistiques d'utilisation anonymes, sans contenu : quels moteurs sont utilisés, la durée des générations et le type d'erreurs. Jamais votre texte, votre audio, vos fichiers ni rien qui vous identifie. Rien n'est envoyé sans votre accord, et vous pouvez changer d'avis à tout moment dans Réglages → Confidentialité.",
"learn_more": "Qu'est-ce qui est envoyé exactement ?",
"yes": "Oui, partager des statistiques anonymes",
"no": "Non merci",
"dismiss": "Fermer (l'analyse reste désactivée)"
},
"langPrompt": {
"offer": "VoiceStudio s'est ouvert en {{language}}. Vous préférez l'anglais ?",
"switch": "Passer à l'anglais",
"keep": "Garder {{language}}"
},
"credentials": {
"title": "Informations d'identification",
"desc": "Les clés et jetons API sont définis <1>pour cette session uniquement</1>. Pour la persistance après les redémarrages, définissez-les comme variables d'environnement dans votre profil shell.",
"hf_token": "Jeton de visage câlin",
"hf_help": "Nécessaire pour la diarisation des enceintes et les téléchargements de modèles plus rapides. Obtenez le vôtre sur huggingface.co/settings/tokens.",
"translate_key": "Clé API LLM",
"translate_help": "Facultatif : pour DeepL, OpenAI ou les fournisseurs de traduction payants. Non nécessaire pour Google Translate (niveau gratuit).",
"save": "Enregistrer",
"saved": "✓ Définir",
"not_set": "✗ Non défini",
"get_token": "Obtenir un jeton →",
"saved_session": "{{key}} enregistré pour cette session",
"save_failed": "Échec de l'enregistrement",
"save_error": "Échec de l'enregistrement : {{message}}",
"deepl_key": "Clé API DeepL",
"deepl_help": "Pour le moteur de traduction DeepL. Obtenez votre clé sur deepl.com/pro-api.",
"deepl_base_url": "URL de base DeepL",
"deepl_base_url_help": "Point de terminaison de l'API DeepL personnalisé (par défaut : https://api.deepl.com/v2). Changer pour proxy/auto-hébergé.",
"microsoft_key": "Clé du traducteur Microsoft",
"microsoft_help": "Pour le moteur Microsoft Translator. Obtenez votre clé sur le portail Azure.",
"microsoft_base_url": "URL de base du traducteur Microsoft",
"microsoft_base_url_help": "Point de terminaison Azure Translator personnalisé (par défaut : https://api.cognitive.microsofttranslator.com).",
"llm_base_url": "URL de base LLM",
"llm_base_url_help": "Pour une qualité cinématique ou un moteur LLM. Tout point de terminaison compatible OpenAI (OpenAI, Ollama, LM Studio, etc.).",
"llm_model": "Modèle LLM",
"llm_model_help": "Nom du modèle à utiliser avec le moteur LLM (par exemple gpt-4o, deepseek-chat, qwen2.5).",
"group_huggingface": "ÉtreindreVisage",
"group_translate": "Traduction (LLM / Cinématique)",
"group_deepl": "Point de terminaison personnalisé DeepL",
"group_microsoft": "Point de terminaison personnalisé du traducteur Microsoft"
},
"engines": {
"banners_on": "Bannières de scène sur",
"banners_off": "Les bannières de la scène sont retirées",
"backend": "Back-end",
"status": "Statut",
"ready": "prêt",
"unavailable": "indisponible",
"use": "Utiliser",
"configureProviders": "Configurer les fournisseurs",
"loading": "Chargement des moteurs…",
"refresh": "Actualiser",
"matrixTitle": "Moteurs",
"ariaTest": "Tester {{engine}}",
"ariaRecheck": "Revérifier {{engine}}",
"ariaSelfTest": "Autotest de {{engine}}",
"ariaUnload": "Décharger {{engine}}",
"ariaUse": "Utiliser {{engine}}",
"ariaAcceptLicense": "Examiner et accepter la licence de {{engine}}",
"weights": "Poids",
"noWeights": "Aucun poids au catalogue — ce moteur récupère ce qu'il lui faut au premier usage.",
"colRunsOn": "S'exécute sur",
"detailsFor": "Détails de {{engine}}",
"runsIsolated": "Exécution isolée",
"selectHint": "Sélectionnez un moteur pour voir ses prérequis, le tester ou l'installer.",
"loadFailed": "Échec du chargement des moteurs : {{message}}",
"couldNotLoad": "Impossible de charger les moteurs : {{message}}",
"retry": "Réessayer",
"activeEngine": "Actif {{family}} : {{engine}}",
"engineCompatLabel": "Compatibilité moteur {{family}}",
"dictation_model": "Modèle de dictée",
"dictation_model_hint": "Utilisé par la dictée en direct et par ce moteur pour la transcription.",
"dictation_not_installed": "Non installé — sélectionnez pour télécharger",
"active": "actif",
"whyUnavailable": "Ce qu'il lui faut",
"diskDetails": "Détails du disque",
"diskModelDownload": "Téléchargement du modèle",
"diskPackageDownload": "Téléchargement des paquets",
"diskUniqueInstalled": "Installation unique",
"diskPotentiallyShared": "Potentiellement partagé",
"diskTemporary": "Espace libre temporaire",
"diskDestination": "Destination",
"diskDestination_hf_model_cache": "Volume du cache de modèles Hugging Face",
"diskDestination_engine_data": "Volume de données des moteurs VoiceStudio",
"diskActualModel": "Modèle réel",
"diskActualEnvironment": "Environnement réel",
"diskActualCache": "Cache partagé réel",
"diskActualTotal": "Total réellement détenu",
"diskEstimateConfidence": "Fiabilité de lestimation",
"diskActualConfidence": "Fiabilité de la mesure",
"diskConfidence_exact": "Exacte",
"diskConfidence_measured": "Mesurée",
"diskConfidence_estimated": "Estimée",
"diskConfidence_unknown": "Inconnue",
"diskDedup_uv_same_volume": "uv déduplique les wheels identiques uniquement si son cache et lenvironnement du moteur sont sur le même volume.",
"sectionReady": "Prêts à l'emploi",
"sectionMore": "Ajouter d'autres moteurs",
"lastError": "Dernière erreur : {{error}}",
"installedAndReady": "Installé et prêt",
"notInstalled": "Non installé",
"available": "Disponible",
"subprocessTitle": "S'exécute dans son propre sous-processus + venv",
"inProcessTitle": "S'exécute dans le processus VoiceStudio Python",
"testEngine": "Moteur de test",
"testing": "Test…",
"recheck": "Revérifier",
"rechecking": "Revérification…",
"latencyMs": "{{ms}} ms",
"failed": "échoué",
"acceptLicense": "Accepter la licence",
"noBackends": "Aucun backend enregistré.",
"switch_failed": "Impossible de changer de moteur",
"routingAccelerated": "GPU actif",
"routingCpuFallback": "Reprise du processeur",
"routingCpuOnly": "Processeur",
"routingRemote": "À distance",
"routingUnknown": "Inconnu",
"routingEffectiveChip": "Fonctionne le {{device}} sur cette machine",
"gpuVulkan": "Vulkan",
"routingCaveatTitle": "GPU sélectionné, mais : {{reason}}",
"selectCpuFallback": "{{engine}} : fonctionne sur le processeur — {{reason}}",
"selectWithCaveat": "Basculé vers {{engine}} — {{reason}}",
"generateCaveat": "{{engine}} risque d'être lent sur cette machine — {{reason}}",
"cpuLongText": "{{engine}} fonctionne ici sur le processeur et ce texte est long — la génération risque de dépasser le budget de temps. Un texte plus court ou un moteur optimisé CPU (OmniVoice GGUF, Supertonic-3) sera bien plus rapide.",
"cpuLongTextTuned": "{{engine}} fonctionne ici sur le processeur et ce texte est long — la génération risque de dépasser le budget de temps. Un texte plus court, ou découpé en plusieurs prises, sera bien plus rapide.",
"familyMatrixTitle": "Moteurs {{family}}",
"familyDesc_tts": "Transforme votre script en voix. Studio, Doublage et Traitement par lots utilisent le moteur actif.",
"familyDesc_asr": "Transforme laudio en texte pour la transcription, le doublage, les sous-titres et la dictée.",
"familyDesc_llm": "Assistant textuel facultatif pour la traduction et la réécriture. « Désactivé » ignore ces étapes.",
"mpsLongText": "{{engine}} fonctionne ici sur Apple Silicon (MPS) et ce texte est long — la génération risque de dépasser le budget de temps. Un texte plus court, ou découpé en plusieurs prises, sera bien plus rapide.",
"inMemory": "En mémoire"
},
"capture": {
"desc": "Les raccourcis clavier globaux ne fonctionnent que dans l'application de bureau. L'interface utilisateur Web utilise un raccourci <1>Ctrl+Shift+Espace</1> sur la page lorsque la fenêtre a le focus.",
"desc_detail": "Le raccourci clavier fonctionne à l'échelle du système pendant l'exécution d'VoiceStudio : il concentre la fenêtre et démarre la dictée. Évitez les combos déjà revendiqués par le système d'exploitation (sur macOS, <1>⌘+Space</1> est Spotlight et <2>⌘+⇧+Space</2> cycles sources d'entrée). Si linscription échoue, choisissez un autre combo.",
"active_shortcut": "Raccourci actif",
"new_shortcut": "Nouveau raccourci",
"press_key": "Appuyez sur une combinaison de touches…",
"listening": "⌨︎ écoute (Esc pour annuler)",
"record_shortcut": "Raccourci d'enregistrement",
"recording": "Enregistrement…",
"save": "Enregistrer",
"reset_default": "Réinitialiser aux valeurs par défaut",
"listening_label": "A l'écoute…",
"transcribing_label": "Transcription…",
"a11y_setup": "Autorisez l'accessibilité pour que la dictée puisse écrire à votre place",
"pasted": "Collé",
"inserted": "Inséré",
"copied": "Copié dans le presse-papiers",
"no_speech": "Aucune parole détectée",
"mic_denied": "Accès au micro refusé",
"mic_denied_toast": "Accès au microphone refusé. {{hint}}",
"mic_hint_mac": "macOS : ouvrez Paramètres système → Confidentialité et sécurité → Microphone et activez VoiceStudio.",
"mic_hint_windows": "Windows : ouvrez Paramètres → Confidentialité et sécurité → Microphone, activez « Accès au microphone » et « Autoriser les applications de bureau à accéder à votre microphone », puis autorisez VoiceStudio.",
"mic_hint_linux": "Linux : vérifiez que votre utilisateur est dans le groupe audio et que WebView a accès au micro.",
"transcription_failed": "Échec de la transcription : {{message}}",
"mic_not_found": "Aucun microphone détecté. Branchez ou activez un microphone, puis réessayez.",
"mic_in_use": "Le microphone est occupé ou indisponible. Fermez les autres applications susceptibles de l'utiliser, puis réessayez.",
"mic_error_generic": "Impossible de démarrer le microphone : {{message}}"
},
"logs": {
"no_tauri_log": "Pas encore de connexion Tauri sur le disque - lancez-le via la version de bureau pour en produire un",
"empty_frontend": "Aucune entrée de console frontale capturée pour l'instant. Interagissez avec l'application : chaque console.* apparaîtra ici.",
"empty_tauri": "Aucun journal Tauri disponible. Fonctionne uniquement dans le shell du bureau.",
"empty_backend": "Le journal d'exécution est vide. L'activité apparaîtra ici au fur et à mesure que le backend l'enregistrera.",
"title": "Journaux",
"source_backend": "Back-end",
"source_frontend": "Front-end",
"source_tauri": "Taureau",
"expand": "Développer les journaux",
"collapse": "Réduire les journaux",
"expand_aria": "Développer le panneau des journaux",
"collapse_aria": "Réduire le panneau des journaux",
"drag_resize": "Faites glisser pour redimensionner",
"refresh": "Actualiser",
"refresh_aria": "Actualiser les journaux",
"copy_visible": "Copier le journal visible",
"copy_visible_aria": "Copier le journal visible",
"clear": "Effacer",
"clear_aria": "Effacer le journal",
"report_issue": "Signaler un problème (copie de diagnostic)",
"report_issue_aria": "Signaler un problème",
"close": "Fermer",
"close_aria": "Fermer le panneau des journaux",
"join_discord": "Rejoignez notre Discord",
"join_discord_aria": "Rejoignez notre communauté Discord",
"support_project": "Soutenez ce projet",
"support_project_aria": "Soutenez ce projet",
"empty_frontend_short": "Pas encore de sortie de console frontale.",
"empty_lines": "Aucune ligne.",
"all_clear": "✅ Tout est clair aucun problème détecté",
"log_cleared": "Journal {{source}} effacé",
"clear_failed": "Échec de la suppression : {{message}}",
"log_copied": "Journal {{source}} copié",
"copy_failed": "Échec de la copie : {{message}}",
"report_copied": "Rapport de diagnostic copié : collez-le dans un problème GitHub.",
"report_failed": "Échec du rapport : {{message}}",
"version_updates": "Vérifier les mises à jour",
"version_updates_aria": "Ouvrir les mises à jour  version de l'application {{v}}",
"update_available": "Mise à jour disponible ({{version}}) — cliquez pour mettre à jour",
"update_available_aria": "Mise à jour disponible ({{version}}) — mises à jour ouvertes",
"contact": "Contacter",
"contact_aria": "Ouvrir la page contact"
},
"voice_profile": {
"test_text": "Bonjour, c'est un test de cette voix.",
"not_found": "Voix introuvable.",
"needs_name": "Le profil vocal a besoin d'un nom.",
"saved": "Enregistré",
"save_failed": "Échec de l'enregistrement : {{message}}",
"delete_confirm": "Supprimer définitivement « {{name}} » ? Cela supprime également l'audio de référence sur le disque.",
"deleted": "Voix supprimée",
"delete_failed": "Échec de la suppression : {{message}}",
"unlock_confirm": "Débloquer cette voix ? Les générations futures ne seront plus reproductibles.",
"unlocked": "Voix déverrouillée",
"unlock_failed": "Échec du déverrouillage : {{message}}",
"gen_failed": "Échec de la génération : {{message}}",
"designed": "Conçu",
"cloned": "Cloné",
"edit": "Modifier",
"name_placeholder": "Nom de la voix",
"locked": "Verrouillé",
"free": "Gratuit",
"locked_ref": "Référence verrouillée",
"ref_audio": "Audio de référence",
"details": "Détails",
"style_instruct": "Instruire en matière de style",
"style_placeholder": "par ex. murmure, excité, doux",
"language": "Langue",
"ref_transcript": "Transcription de référence",
"ref_help": "Ce que dit l'audio de référence. Utilisé pour améliorer la précision du clonage.",
"locked_explain": "Cette voix est peu reproductible. Chaque génération utilise la même référence + graine.",
"unlock": "Déverrouiller",
"try_voice": "Essayez cette voix",
"test_phrase": "Phrase de test",
"test_help": "Tapez n'importe quoi - nous le générerons avec les paramètres actuels de cette voix.",
"test_placeholder": "Tapez quelque chose pour entendre cette voix le dire…",
"gen_preview": "Générer un aperçu",
"generating": "Générer…",
"used_title": "Où cette voix a été utilisée",
"used_empty": "Cette voix n'a pas encore été utilisée. Générez un aperçu ci-dessus ou sélectionnez-le dans un doublage.",
"synth_clips_one": "{{count}} clip de synthétiseur",
"synth_clips_other": "{{count}} extraits de synthétiseur",
"projects_count_one": "Projet {{count}}",
"projects_count_other": "{{count}} projets",
"dubbed_segments_one": "{{count}} segment doublé",
"dubbed_segments_other": "{{count}} segments doublés",
"verified": "Vérifié",
"persona_export": "Exporter le personnage",
"persona_exporting": "Construire la personnalité…",
"persona_exported": "Persona exporté",
"persona_export_no_audio": "Cette voix n'a pas d'audio lisible à partir duquel créer un aperçu.",
"persona_export_failed": "L'exportation a échoué.",
"persona_include_ref": "Inclure un clip vocal",
"persona_include_ref_hint": "Incluez le clip de référence brut. Désactivé = partager uniquement un aperçu filigrané (recommandé).",
"consent_title": "Propriété de la voix",
"consent_explain": "Enregistrez-vous en train de lire la déclaration ci-dessous pour vérifier qu'il s'agit bien de votre propre voix. Une vérification sera requise pour les fonctionnalités agents et le partage communautaire jamais pour la synthèse locale.",
"consent_statement": "Je confirme que ce profil vocal est ma propre voix et j'accepte qu'VoiceStudio le clone en mon nom.",
"consent_record": "Enregistrer la déclaration de consentement",
"consent_stop": "Arrêter l'enregistrement",
"consent_saved": "Propriété vocale vérifiée",
"consent_failed": "Échec de la vérification : {{message}}",
"consent_verified_explain": "Vous avez enregistré une déclaration de consentement le {{date}}. La révocation supprime l'enregistrement et le statut vérifié.",
"consent_revoke": "Révoquer",
"consent_revoke_confirm": "Révoquer la vérification de la propriété vocale ? L'enregistrement du consentement sera supprimé et les fonctionnalités agents ne pourront plus utiliser cette voix.",
"consent_revoked": "Vérification révoquée"
},
"dub": {
"timing_label": "Synchronisation",
"timing_concise": "Concis",
"timing_stretch_video": "Étirer la vidéo",
"install_engine_pkg": "Installer {{pkg}}",
"needs_install_short": "Installation requise",
"install_popover_title": "Installer ce moteur",
"install_popover_frozen_body": "Cette version packagée ne peut pas installer de moteurs : son environnement Python est en lecture seule et signé. Exécutez la commande ci-dessous dans une installation depuis les sources, ou passez au moteur Argos intégré.",
"switch_to_argos": "Passer à Argos (intégré, hors ligne)",
"copy_command": "Copier la commande",
"install_cmd_copied": "Commande copiée",
"dismiss_error": "Ignorer",
"transcribe": "Transcrire",
"translate": "Traduire",
"generate": "Générer",
"export": "Exporter",
"no_video": "Aucune vidéo chargée",
"segments": "segments",
"speakers": "haut-parleurs",
"video_dubbing_studio": "Studio de doublage vidéo",
"drop_here": "Déposez la vidéo ou l'audio ici",
"paste_url": "…ou collez lURL YouTube/vidéo",
"ingest": "Ingérer",
"pull_captions": "Extrayez les sous-titres YouTube + les traductions automatiques",
"batch_queue_link": "Beaucoup de vidéos à doubler ? Ouvrir la file par lots",
"youtube_auth": "Connexion YouTube (facultative)",
"youtube_cookie_file": "Choisir un export cookies.txt",
"remove_cookie_file": "Supprimer le fichier de cookies",
"cookie_transport_error": "Lexport de cookies nécessite HTTPS ou lapplication de bureau locale.",
"cookie_size_error": "Lexport de cookies doit faire 1 Mo maximum.",
"save": "Enregistrer",
"reset": "Réinitialiser",
"save_project": "Enregistrer le projet",
"change_file": "Changer de fichier",
"import_srt": "Importer .srt",
"import_srt_alt": "Importez plutôt .srt",
"cast": "ACTEURS",
"speaker": "Intervenant {{n}} :",
"default": "Par défaut",
"language": "Langue",
"auto": "Automatique",
"iso_code": "Code ISO",
"style": "Style",
"style_placeholder": "par ex. femelle",
"optional": "facultatif",
"translate_all": "Traduire tout",
"translating": "Traduire…",
"retranslate": "Retraduire",
"transcript": "Transcription",
"generate_dub": "Générer un doublage",
"export_mp4": "MP4",
"export_wav": "WAV",
"export_srt": "SRT",
"upload_transcribe": "Télécharger et transcrire",
"multi_lang": "Multilingue",
"prep_download": "Téléchargement de la vidéo…",
"prep_extract": "Extraction du son…",
"prep_demucs": "Séparation chant/musique (Demucs)…",
"prep_scene": "Détection des coupures de scène…",
"prep_cached": "Utilisation des résultats mis en cache…",
"prep_preparing": "Préparation…",
"prep_chip_download": "télécharger",
"prep_chip_extract": "extrait",
"prep_chip_demucs": "Démocrates",
"prep_chip_scene": "scène",
"prep_chip_cached": "mis en cache",
"prep_demucs_note": "Les Demucs peuvent prendre plusieurs minutes sur de longues vidéos. Audio long = attente plus longue.",
"transcribing": "Transcription audio…",
"elapsed": "écoulé",
"remaining": "il reste",
"sidebar_toggle": "Basculer la barre latérale",
"retry_transcription": "Réessayer la transcription",
"supported_formats": "MP4 · MOV · MKV · WEBM · MP3 · WAV · FLAC · M4A",
"pull_captions_title": "Lorsque l'URL est un hôte portant des sous-titres (YouTube, Vimeo, TED…), extrayez également les sous-titres originaux et toutes les traductions automatiques YouTube. Lance l'éditeur sans exécuter Whisper ; ignorez Tout traduire pour les langues déjà couvertes par YouTube.",
"time_col": "Temps",
"spkr_col": "Spkr",
"text_col": "Texte",
"voice_col": "Voix",
"segs": "segments",
"preview": "Aperçu",
"original_audio": "Originale",
"dubbed_audio": "Doublé ({{code}})",
"first_play_hint": "la première lecture peut prendre un moment pour multiplexer",
"cast_title": "Attribuez une voix à chaque locuteur détecté. Les clones multilingues conservent la même identité de locuteur dans une nouvelle langue.",
"from_video": "🎤 À partir de la vidéo · {{duration}}s",
"clone_profiles": "Cloner des profils",
"design_presets": "Préréglages de conception",
"casting_board": "Tableau de casting",
"casting_board_hint": "Ouvrir le tableau de casting — glissez une voix sur un locuteur",
"casting_voices": "Voix",
"casting_drag_hint": "Glissez une pastille de voix sur un locuteur, ou appuyez sur Entrée sur un locuteur pour choisir dans une liste.",
"casting_assign_to": "Attribuer une voix à {{speaker}}",
"casting_assigned": "{{voice}} attribuée à {{speaker}}",
"edit_settings": "Modifier les paramètres de traduction",
"style_label_prefix": "style:",
"collapse_settings": "Réduire les paramètres de traduction",
"quality_label": "Qualité",
"quality_title": "Cinématique = raffinement LLM en 3 étapes (traduire → réfléchir → adapter). Nécessite un LLM configuré.",
"fast_quality": "Rapide",
"cinematic_quality": "Cinématique",
"auto_glossary_label": "Glossaire auto",
"auto_glossary_title": "Une passe LLM supplémentaire lit toute la transcription et en extrait le thème de la vidéo et les termes clés, afin que noms et terminologie restent cohérents d'un segment à l'autre. Vos entrées manuelles du glossaire ont toujours priorité.",
"reflect_label": "Passe de relecture",
"reflect_title": "Après la traduction directe de chaque segment, le LLM la critique puis la réécrit en dialogue parlé naturel. Utilise 3 appels LLM par segment au lieu de 1 ; si l'affinage échoue, la traduction directe est conservée.",
"restore": "↺ Restaurer",
"restore_title": "Restaurer tous les segments dans le texte transcrit d'origine",
"clean_up": "Nettoyer",
"clean_up_title": "Fusionner de minuscules fragments et des segments courts adjacents",
"popular": "Populaire",
"all_languages": "Toutes les langues",
"engine_label": "Moteur",
"install_engine": "Installer ce moteur",
"installing_engine": "…installation",
"needs_dev_install": "a besoin d'une installation de développement",
"install_disabled_title": "Les installations sont désactivées dans les versions packagées",
"needs_install_suffix": "- doit être installé",
"glossary_title": "Épinglez les traductions des termes récurrents (noms, mots de marque, jargon)",
"glossary_btn": "+ Glossaire ({{count}})",
"selected_count": "{{count}} sélectionné",
"set_voice": "Définir la voix…",
"clear_voice": "⊘ Par défaut",
"set_lang": "Définir la langue…",
"default_lang": "(Par défaut)",
"delete_selected": "Supprimer",
"clear_selection": "Effacer",
"tracks_done": "C'est fait ! Pistes : {{tracks}}",
"segments_changed": "{{count}} segment(s) modifié(s) depuis la dernière génération",
"all_up_to_date": "tous les {{count}} segments à jour",
"output_options": "Options de sortie :",
"mix_bg_audio": "Mélanger l'audio BG",
"dual_subs": "Double sous-titres",
"dual_subs_title": "Exportez les sous-titres avec le texte traduit en haut et l'original en italique en dessous.",
"burn_subs": "Graver les sous-titres",
"burn_subs_title": "Rendu des sous-titres directement dans le flux vidéo MP4 (hardsubs). Utilise le format double sous-titre lorsque les sous-titres doubles sont activés.",
"timing_smart_fit": "Ajustement intelligent",
"timing_smart_fit_title": "Répartit l'effort : accélère légèrement l'audio (hauteur préservée, jusqu'à 1,5×) et ralentit légèrement ce segment de la vidéo (jusqu'à 2×) pour que la voix à débit naturel tienne. Tout dépassement est coupé et signalé. L'export réencode la vidéo.",
"voice_match": "Correspondance de voix :",
"voice_match_title": "Correspondance de voix — chaque ligne doublée est clonée depuis son propre extrait source, ou toutes les lignes d'un locuteur partagent une référence unique.",
"voice_match_per_line": "Par ligne",
"voice_match_per_line_title": "Chaque ligne est clonée depuis un extrait de son propre audio source. Meilleure prosodie par ligne, mais l'identité de la voix peut dériver d'une ligne à l'autre.",
"voice_match_consistent": "Cohérente",
"voice_match_consistent_title": "Toutes les lignes d'un locuteur sont clonées depuis une référence partagée (le clone du locuteur, ou le meilleur extrait unique à défaut). Identité vocale plus stable sur tout le doublage.",
"timing_lip_sync": "Synchronisation labiale",
"default_track": "Piste par défaut :",
"original_track": "Originale",
"selected_dub": "{{code}} (doublage sélectionné)",
"dub_track": "{{code}} (doublage)",
"export_tracks": "Exporter les pistes :",
"stopping": "Arrêter…",
"stop_progress": "Arrêter ({{current}}/{{total}})",
"regen_changed": "Régénération {{count}} modifiée",
"export_btn": "Exporter…",
"prep_stop": "Arrêter",
"install_progress": "Installation de {{engine}}…",
"install_restart": "{{engine}} installé. Redémarrez le backend pour le charger.",
"install_already": "{{engine}} était déjà installé",
"install_ok": "{{engine}} installé",
"install_failed": "Échec de l'installation : {{message}}",
"prep_elapsed": "{{time}} écoulé",
"add_language": "Ajouter une langue",
"search_languages": "Rechercher des langues…",
"more_to_narrow": "+{{count}} plus — tapez pour affiner",
"no_matches": "Aucune correspondance",
"diagnostic_copied": "Diagnostic copié",
"copy_failed": "Échec de la copie",
"open_docs": "Ouvrir des documents",
"copy_diagnostic": "Copier le diagnostic",
"dialect_label": "Dialecte",
"dialect_default": "Par défaut",
"dialect_title": "Dialecte régional et vocabulaire pour la traduction (p. ex. Argentine → « vos sos » au lieu de « tú eres »). Appliqué par les moteurs LLM (OpenAI/Ollama) et la qualité Cinematic.",
"num_speakers_label": "Locuteurs",
"num_speakers_auto": "Auto",
"num_speakers_help": "Combien de locuteurs dans cette vidéo ? Laissez vide pour la détection automatique. Indiquez un nombre si la détection fusionne plusieurs locuteurs en un seul.",
"advanced": "Avancé",
"cinematic_needs_llm_hint": "Cinématique nécessite un LLM. Configurez-en un dans Paramètres → Identifiants → point de terminaison LLM (Ollama fonctionne localement, aucune clé requise).",
"generate_dub_multi": "Générer {{count}} doublages",
"pipeline": "Pipeline de doublage",
"preview_language": "Langue d'aperçu",
"target_language": "Doubler en",
"source_language": "Langue source",
"retry_failed": "Réessayer {{count}} échecs",
"skip_failed": "Ignorer les échecs",
"transcript_after_extract": "La transcription apparaît après l'extraction.",
"qc_btn": "Vérifier le timing du doublage (vérification du deuxième passage)",
"verify": "Vérifier",
"qc_running": "Vérification du timing de doublage…",
"qc_result": "{{flagged}} lignes sur {{total}} peuvent nécessiter une réécoute",
"qc_clean": "Toutes les lignes {{total}} correspondent au script",
"qc_failed": "Échec de la vérification du timing : {{message}}",
"paste_translation_btn": "Coller une traduction",
"paste_translation_title": "Coller une traduction",
"paste_translation_desc": "Collez une traduction réalisée ailleurs (ChatGPT, DeepL, un traducteur humain). Elle est appliquée aux segments existants — les timings et la transcription d'origine restent intacts.",
"paste_translation_placeholder": "Collez des sous-titres (SRT/VTT), des lignes numérotées (1. …) ou une ligne traduite par segment — ou déposez un fichier .srt/.vtt ici.",
"paste_translation_load_file": "Charger un fichier .srt / .vtt",
"paste_translation_mode_timestamped": "Horodaté (SRT/VTT)",
"paste_translation_mode_numbered": "Lignes numérotées",
"paste_translation_mode_plain": "Lignes simples",
"paste_translation_counts": "{{segments}} segments · {{lines}} lignes · {{unmatched}} sans correspondance",
"paste_translation_unused": "{{count}} ligne(s) collée(s) inutilisée(s)",
"paste_translation_none_matched": "Aucune correspondance. Vérifiez que le texte collé correspond aux segments ci-dessous.",
"paste_translation_row_unmatched": "aucune correspondance — inchangé",
"paste_translation_apply": "Appliquer à {{count}} segments",
"paste_translation_cancel": "Annuler",
"paste_translation_more_rows": "+ {{count}} lignes supplémentaires",
"languages_selected": "Langues sélectionnées : {{count}}",
"languages_selected_one": "{{count}} langue sélectionnée",
"languages_selected_other": "{{count}} langues sélectionnées",
"multi_translating": "Traduction → {{lang}} ({{current}}/{{total}})…",
"multi_lang_skipped": "La traduction a échoué pour {{langs}} ; ces doublages ont été ignorés afin d’éviter une piste dans la mauvaise langue.",
"manage_languages": "Gérer les langues",
"languages_done": "Terminé",
"languages_pending": "En attente",
"live_preview": "Aperçu en direct",
"live_preview_title": "Écoutez une ligne pendant que vous la modifiez : le segment modifié diffuse la synthèse vocale avec sa voix CAST après une courte pause. Lecture seule : rien n'est enregistré et l'export reste rendu en pleine qualité.",
"live_preview_pick_voice": "Attribuez une voix CAST à cette ligne ou à son locuteur pour entendre l'aperçu en direct.",
"autofit_quality": "Ajustement automatique"
},
"glossary": {
"title": "Glossaire",
"load_error": "Échec du chargement du glossaire : {{message}}",
"needs_project": "Le glossaire a besoin d'un projet chargé.",
"add_error": "Échec de l'ajout : {{message}}",
"update_error": "Échec de la mise à jour : {{message}}",
"delete_error": "Échec de la suppression : {{message}}",
"clear_auto_confirm": "Supprimer tous les termes extraits automatiquement ? Les entrées manuelles sont conservées.",
"clear_error": "Échec de la suppression : {{message}}",
"pick_target": "Choisissez d'abord une langue cible.",
"no_segments": "Aucun segment à analyser.",
"auto_empty": "L'extraction automatique n'a trouvé aucun nouveau terme.",
"auto_added_one": "Ajout du terme automatique {{count}}. Révisez et modifiez avant de traduire.",
"auto_added_other": "Ajout des termes automatiques {{count}}. Révisez et modifiez avant de traduire.",
"auto_error": "Échec de l'extraction automatique : {{message}}",
"count": "{{count}} termes",
"count_one": "{{count}} terme",
"count_other": "{{count}} termes",
"auto_count": "{{count}} automatique",
"auto_title": "Demandez au LLM de scanner les segments à la recherche de noms propres + termes récurrents",
"auto_btn": "Automatique",
"clear_auto_title": "Supprimez tous les termes extraits automatiquement, conservez ceux manuels",
"clear_auto_btn": "Effacer automatiquement",
"empty_save": "Enregistrez le doublage en tant que projet pour démarrer un glossaire.",
"source": "Source",
"target": "Cible",
"note": "Remarque",
"no_terms": "Pas encore de conditions. Ajoutez-en un ci-dessous ou cliquez sur Auto.",
"source_placeholder": "Origine ({{lang}})",
"target_placeholder": "Cible ({{lang}})",
"note_placeholder": "Remarque (facultatif)",
"add_term": "Ajouter un terme",
"hint": "Un glossaire est injecté dans chaque invite de traduction cinématographique. Les saisies manuelles sont prioritaires.",
"auto_badge": "automobile",
"manual_badge": "manuel",
"close": "Réduire le glossaire"
},
"segment": {
"time": "Temps",
"spkr": "Spkr",
"text": "Texte",
"lang": "Lang",
"voice": "Voix",
"vol": "Vol",
"vol_title": "Volume (0 à 200 %)",
"search_placeholder": "Rechercher du texte…",
"all_speakers": "Tous les intervenants",
"select_all_title": "Sélectionner tout filtré",
"sel_count": "{{count}} sel",
"select_title": "Sélectionnez un segment (maj+clic pour la plage)",
"sync_title": "L'audio généré correspond à {{pct}} % de la durée de l'original.",
"sync_label": "Synchronisation : {{pct}} %",
"rate_title": "Ajustement du débit vocal : {{ratio}}× par rapport à l'emplacement{{error}}",
"speaker_id": "ID du haut-parleur",
"translate_error_title": "Erreur de traduction : {{error}}",
"translate_degraded_title": "Traduit (brut) — la passe de polissage a été ignorée : {{reason}}",
"budget_title": "Le texte représente {{pct}} % de l'original  envisagez une vitesse plus élevée ou une formulation plus courte",
"text_title": "Cmd/Ctrl+D pour diviser au niveau du curseur · Cmd/Ctrl+M pour fusionner avec le suivant · Cmd/Ctrl+Maj+M pour fusionner avec le précédent",
"orig_label": "orig",
"restore_title": "Restaurer le texte original",
"lang_default": "(Déf)",
"voice_default": "Par défaut",
"from_video": "À partir de la vidéo",
"clone_profiles": "Cloner des profils",
"design_presets": "Préréglages de conception",
"preview_title": "Aperçu en direct",
"set_direction": "Définir la direction…",
"edit_direction": "Modifier la direction…",
"split_label": "Diviser au curseur",
"merge_label": "Fusionner avec le suivant",
"merge_prev_label": "Fusionner avec le précédent",
"insert_label": "Insérer une ligne en dessous",
"direction_title": "Direction : {{dir}}",
"more_actions_title": "Plus dactions",
"speaker_pick": "Choisissez…",
"speaker_title_detected": "Haut-parleur : choisissez parmi ceux détectés ou saisissez un nom personnalisé",
"speaker_title_custom": "Haut-parleur : saisissez un nom (aucun clone de diarisation détecté)",
"time_edit_title": "Cliquez pour modifier l'heure de début (m:ss.s). Entrez pour valider, Esc pour annuler.",
"time_edit_end_title": "Cliquez pour modifier l'heure de fin (m:ss.s). Entrez pour valider, Esc pour annuler.",
"time_nudge_start_earlier": "Avancer le début de 0,1 seconde",
"time_nudge_start_later": "Reculer le début de 0,1 seconde",
"time_nudge_end_earlier": "Avancer la fin de 0,1 seconde",
"time_nudge_end_later": "Reculer la fin de 0,1 seconde",
"fit_fits": "Convient",
"fit_fits_title": "L'audio à débit naturel s'adapte à l'intérieur de la fente.",
"fit_overflows": "Débordements +{{seconds}}s",
"fit_overflows_title": "Le texte traduit était plus long que l'emplacement d'origine de {{seconds}}s. Laudio était dur ; raccourcissez le texte ou réglez le timing sur « Étirer la vidéo ».",
"fit_stretched": "Vidéo {{ratio}}×",
"fit_stretched_title": "Mode vidéo extensible : la vidéo de ce segment a été ralentie à {{ratio}}× pour s'adapter à l'audio naturel du doublage.",
"fit_slowed": "ralenti {{ratio}}×",
"fit_slowed_title": "La réplique doublée était plus courte que son créneau — ralentie {{ratio}}× (hauteur préservée) pour couvrir le temps de parole d'origine au lieu de laisser un trou",
"fit_compressed_title": "L'audio TTS représente {{pct}}% de l'emplacement — fortement compressé.",
"fit_audio_title": "L'audio s'adapte à l'intérieur de la fente.",
"fit_ratio_title": "L'audio TTS représente {{pct}}% de l'emplacement.",
"qc_verify": "Vérifier",
"qc_verify_title": "ASR de deuxième passage entendu : \"{{heard}}\"  réécoutez ou redoublez cette ligne.",
"live_play_title": "Diffuser cette ligne maintenant (aperçu en direct)",
"live_stop_title": "Arrêter l'aperçu en direct",
"plan_apply": "Utiliser la version plus courte",
"plan_apply_title": "Remplacer cette ligne par la version plus courte proposée : « {{text}} »",
"plan_impossible": "Ne tient pas +{{seconds}}s",
"plan_impossible_title": "Parole estimée ≈{{est}}s pour {{avail}}s disponibles. Environ {{seconds}}s dépassent les possibilités dajustement ; laudio serait coupé. Raccourcissez le texte avant la génération.",
"plan_tight": "Ajustement serré",
"plan_tight_title": "Parole estimée ≈{{est}}s pour {{avail}}s disponibles. Lajustement intelligent peut compenser avec une accélération audible ou un ralentissement vidéo. Raccourcissez le texte pour un meilleur résultat."
},
"timeline": {
"track_label": "Chronologie des segments",
"keyboard_hint": "Les flèches sélectionnent un segment · Entrée bascule le mode édition · Suppr supprime · S cale sur le départ de voix le plus proche",
"segment_aria": "Segment {{index}} : de {{start}} à {{end}}",
"overlap_warning": "Chevauche un segment adjacent — les deux répliques joueront ensemble",
"moved_announce": "Segment {{index}} déplacé à {{start}}",
"resized_announce": "Segment {{index}} : de {{start}} à {{end}}",
"deleted_announce": "Segment {{index}} supprimé",
"snapped_announce": "Bord calé sur le départ de voix à {{time}}",
"edit_mode_on": "Mode édition : les flèches déplacent le début, Maj la fin, Alt tout le segment, Échap termine",
"edit_mode_off": "Mode édition désactivé",
"play_slot": "Lire cet intervalle",
"preview_dub": "Pré-écouter le doublage ici"
},
"voice": {
"personality": "Personnalité",
"pick_personality": "Choisissez un préréglage de personnalité…",
"instruct": "Instruire",
"reference_text": "Texte de référence",
"language": "Langue",
"generate": "Générer",
"name": "Nom"
},
"tools": {
"title": "Outils",
"desc": "Traitement audio, conversion de format et utilitaires",
"directorial_ai": "IA réalisatrice",
"directorial_desc": "Tapez une direction en langage naturel - consultez les jetons de taxonomie auxquels elle correspond + l'instruction TTS + l'indice de traduction + le biais de débit de parole.",
"direction": "Direction",
"parse": "Analyser",
"method": "méthode :",
"tts_instruct": "tts instruit :",
"translate_hint": "indice de traduction :",
"rate_bias": "biais de taux :",
"tokens": "jetons",
"taxonomy": "taxonomie",
"speech_rate_fit": "Ajustement du débit de parole",
"speech_rate_desc": "Vérifiez comment une ligne traduite se compare à son créneau horaire.",
"translated_line": "Ligne traduite",
"slot_seconds": "Emplacement (secondes)",
"target_language": "Langue cible",
"fit": "Ajustement",
"ratio": "rapport :",
"attempts": "tentatives :",
"result": "résultat :",
"probe_file": "Fichier de sonde",
"probe_desc": "wrapper ffprobe — inspecte le codec, les flux, la profondeur de bits et la durée.",
"absolute_path": "Chemin absolu",
"probe": "Sonde",
"probe_placeholder": "/Utilisateurs/vous/Films/sample.mp4",
"probe_failed": "Échec de la sonde : {{message}}",
"parse_failed": "Échec de l'analyse : {{message}}",
"fit_failed": "Échec de l'ajustement : {{message}}"
},
"projects": {
"title": "Projets",
"empty": "Aucun projet pour l'instant",
"create": "Nouveau projet",
"all": "Tout",
"dub_projects": "Projets de doublage",
"voice_profiles": "Profils vocaux",
"transcripts": "Transcriptions",
"history": "Histoire",
"exports": "Exportations",
"search_placeholder": "Rechercher des doublages, des clones, des transcriptions, des exports…",
"card_grid": "Grille de cartes",
"list": "Liste",
"no_matches": "Aucun résultat pour \"{{query}}\"",
"empty_hint": "Rien ici encore. Démarrez un doublage, concevez une voix ou générez de l'audio pour la voir apparaître.",
"generated_audio": "Audio généré",
"export": "Exporter",
"transcription": "Transcription",
"designed_voice": "Voix conçue",
"cloned_voice": "Voix clonée",
"stories": "Histoires",
"untitled_story": "Histoire sans titre",
"story_lines": "Ligne {{count}}",
"story_lines_plural": "{{count}} lignes",
"story_voices": "{{count}} voix",
"story_voices_plural": "{{count}} voix",
"audiobooks": "Livres audio",
"audiobook": "Livre audio",
"story": "Histoire"
},
"batch": {
"title": "Doublage par lots",
"active": "Actif",
"completed": "Terminé",
"failed": "Échec",
"back": "← Retour",
"refresh": "Actualiser",
"add_videos": "Ajouter des vidéos",
"file_input_label": "Choisir des fichiers vidéo",
"cancel": "Annuler",
"delete": "Supprimer",
"no_active": "Aucun emploi actif.",
"no_completed": "Rien n'a été terminé récemment.",
"no_failed": "Aucun travail échoué profitez du silence.",
"drop_hint": "Déposez les vidéos ci-dessus pour démarrer le doublage par lots.",
"enqueue_failed": "Échec de la mise en file d'attente {{name}} : {{message}}",
"enqueued": "{{count}} vidéo(s) ajoutée(s) à la file d'attente",
"job_cancelled": "Travail annulé",
"cancel_failed": "Échec de l'annulation : {{message}}",
"job_deleted": "Travail supprimé",
"delete_failed": "Échec de la suppression : {{message}}",
"completed_in": "Terminé en {{duration}}",
"seg": "seg {{current}}/{{total}}",
"stage_extract": "🎬 Extraction de l'audio…",
"stage_transcribe": "📝 Transcription…",
"stage_translate": "🌐 Traduire…",
"stage_generate": "🗣️ Générer de la parole…",
"stage_mix": "🎛️ Mixage audio…",
"stage_complete": "✅ Complet",
"status_queued": "en file d'attente",
"status_running": "courir",
"status_done": "fait",
"status_failed": "échoué",
"status_cancelled": "annulé",
"add_to_queue_title": "Ajouter des vidéos à la file d'attente",
"drop_hint_text": "Déposez les fichiers vidéo ici ou cliquez pour parcourir",
"drop_formats": "MP4 · MOV · MKV · WEBM",
"files_kicker": "FICHIERS ({{count}})",
"file_size_mb": "{{size}} Mo",
"target_languages": "LANGUES CIBLES",
"voice_kicker": "VOIX",
"default_option": "Par défaut",
"clone_profiles": "Cloner des profils",
"presets": "Préréglages",
"preserve_bg": "Préserver l'audio de fond (musique/FX)",
"estimate": "{{videos}} vidéo(s) × {{langs}} langue(s) = {{jobs}} travail(s)",
"select_files_langs": "Sélectionnez les fichiers et les langues",
"add_to_queue": "Ajouter à la file d'attente",
"watch_folder": "Surveiller un dossier",
"watching": "Surveillance de {{folder}}",
"watch_paused": "En pause — {{folder}}",
"watch_added": "{{count}} ajoutés automatiquement",
"watch_pause": "Pause",
"watch_resume": "Reprendre",
"watch_stop": "Arrêter",
"watch_started": "Surveillance de {{folder}} — les nouvelles vidéos sont ajoutées à la file automatiquement",
"watch_unsupported": "La surveillance de dossier nécessite l'application de bureau ou un navigateur basé sur Chromium — utilisez plutôt Ajouter des vidéos.",
"watch_failed": "Surveillance arrêtée — le dossier n'est plus lisible (déplacé, supprimé ou permissions modifiées). Sélectionnez-le à nouveau pour reprendre.",
"watch_start_failed": "Impossible de commencer à surveiller ce dossier — sélectionnez-le à nouveau pour réessayer."
},
"gallery": {
"title": "VoiceStudio Galerie",
"search_placeholder": "Rechercher sur YouTube…",
"all_voices": "Toutes les voix ({{count}})",
"no_voices": "Pas encore de voix",
"download_hint": "Recherchez ci-dessus pour télécharger des clips",
"search_btn": "Rechercher",
"download_btn": "Télécharger",
"saving": "Sauvegarde…",
"trim": "Couper",
"delete_confirm": "Supprimer ce clip vocal ?",
"view_mode_list": "Liste",
"view_mode_grid": "Grille",
"youtube_results": "Résultats YouTube ({{count}})",
"clone_profile": "Cloner le profil",
"crop_audio": "Recadrer l'audio",
"subtitle": "Des centaines de voix prêtes à l'emploi : choisissez-en une et c'est parti.",
"zone_archetypes": "Archétypes",
"zone_imports": "Mes importations",
"all": "Tout",
"favorites": "Favoris",
"favorite": "Favoris",
"reset": "Réinitialiser",
"preview": "Aperçu",
"use_voice": "Utiliser la voix",
"more_actions": "Plus dactions",
"use_in_stories": "Utiliser dans les Histoires",
"set_audiobook_default": "Définir comme voix par défaut du Livre audio",
"open_designer": "Ouvrir dans le Concepteur",
"no_matches": "Aucune voix ne correspond à ces filtres.",
"load_more": "Charger plus",
"saved_as_profile": "Ajout de \"{{name}}\" à vos voix.",
"use_failed": "Impossible de créer cette voix : {{message}}",
"preview_failed": "Aperçu indisponible : {{message}}",
"import_explainer": "Collez une URL sur laquelle vous disposez des droits (ou téléchargez un fichier), coupez la partie dont vous avez besoin et enregistrez-la en tant que voix. Vous êtes responsable de loctroi de licences pour tout ce que vous importez.",
"import_placeholder": "Collez une URL vidéo/audio ou saisissez pour rechercher…",
"imported_clip": "Clip importé",
"upload": "Télécharger le fichier",
"import": "Importer",
"my_imports": "Mes importations",
"no_imports": "Rien d'importé pour l'instant. Collez une URL ci-dessus pour commencer.",
"search_results": "{{count}} résultats",
"download_failed": "Échec du téléchargement : {{msg}}",
"search_failed": "La recherche a échoué : {{message}}",
"upload_failed": "Le téléchargement a échoué : {{message}}",
"save_failed": "Impossible d'enregistrer le profil : {{message}}",
"confirm_delete": "Supprimer « {{name}} » ?",
"trim_load_failed": "Impossible de charger l'audio pour le découpage : {{message}}",
"delete": "Supprimer",
"community_empty": "Aucune voix communautaire chargée pour l'instant — connectez-vous à internet et rouvrez, ou soyez le premier à en soumettre une.",
"community_explainer": "Préréglages conçus et voix enregistrées partagés par la communauté, chargés depuis l'omnivoice-gallery.",
"no_designer": "Voix enregistrée — utilisez plutôt « Utiliser la voix ».",
"no_preview": "Aucun aperçu — ajoutez-la avec « Utiliser la voix » pour l'entendre.",
"submit_failed": "Impossible d'ouvrir le formulaire de soumission.",
"submit_preset": "Soumettre un préréglage",
"submit_voice": "Soumettre une voix",
"zone_community": "Communauté",
"import_persona": "Importer un ensemble de personnages .ovsvoice",
"persona_imported": "Importé \"{{name}}\"{{unverified}}.",
"persona_unverified_suffix": "(non vérifié)",
"persona_too_large": "Ce bundle est trop volumineux (max 100 Mo).",
"persona_import_failed": "Impossible d'importer cet ensemble de personnages.",
"filters": "Filtres"
},
"transcriptions": {
"title": "Transcriptions",
"entries": "{{count}} entrées",
"search_placeholder": "Rechercher des transcriptions…",
"export": "Exporter",
"clear": "Effacer",
"export_title": "Exporter tout",
"clear_title": "Tout effacer",
"empty_title": "Aucune transcription pour l'instant",
"empty_desc": "Sélectionnez Démarrer la dictée ou appuyez sur {{shortcut}} pour enregistrer et transcrire l'audio.",
"capture": "Démarrer la dictée",
"capture_failed": "Impossible de démarrer la dictée. Vérifiez laccès au microphone, puis réessayez.",
"empty_search_title": "Aucune transcription correspondante",
"empty_search_desc": "Essayez un autre terme de recherche.",
"copy": "Copier",
"delete": "Supprimer",
"segments_title": "Segments",
"copied": "Copié dans le presse-papiers",
"copy_failed": "Échec de la copie",
"exported": "Transcriptions exportées",
"just_now": "Juste maintenant",
"m_ago": "il y a {{count}} m",
"h_ago": "Il y a {{count}}h"
},
"setup": {
"welcome": "Bienvenue",
"system_check": "Vérification du système",
"install_models": "Installer des modèles",
"pick_engines": "Choisir des moteurs",
"system_check_desc": "Sondez la RAM, le disque, le GPU, ffmpeg et le réseau. Les bloqueurs sont signalés à lavance afin que vous le sachiez avant de télécharger.",
"install_models_desc": "Téléchargez ~2,4 Go de poids — seul le modèle TTS est requis. Ajoutez des modèles de transcription adaptés à votre matériel maintenant, ou plus tard depuis les Réglages.",
"pick_engines_desc": "Choisissez les backends TTS / ASR / LLM. Les valeurs par défaut fonctionnent immédiatement : personnalisez-les à tout moment dans les paramètres.",
"hero_desc": "Doublage, clonage vocal et conception vocale, le tout exécuté localement sur votre ordinateur.",
"first_run": "La première exécution prend 5 à 10 minutes pour le téléchargement. Après cela, chaque lancement est instantané et entièrement hors ligne.",
"get_started": "Commencez",
"back": "Retour",
"continue_ok": "Tout va bien - continuez",
"continue_warn": "Continuer (avec avertissements)",
"continue_blocked": "Résolvez les bloqueurs pour continuer",
"waiting_models": "En attente des modèles requis…",
"models_ready": "Modèles requis prêts — continuer",
"still_needed": "Encore nécessaire :",
"enter_studio": "Entrez dans l'atelier",
"probing": "Système de sondage…",
"checking": "Vérification de la configuration…",
"system_preflight": "Contrôle en amont du système",
"recheck": "Revérifier",
"resolve_blockers": "Résolvez les échecs des vérifications ci-dessus pour continuer.",
"footer_downloads": "Téléchargements à partir de huggingface.co",
"open_finder": "Ouvrir dans le Finder",
"open": "Ouvert",
"install_required_models": "Installez les modèles requis ci-dessus pour continuer.",
"try_dictation": "Essayez la dictée",
"try_dictation_desc": "Appuyez une fois sur votre raccourci pour vérifier que la dictée fonctionne avant de terminer la configuration.",
"dictation_step_label": "Dictée",
"next_try_dictation": "Suivant : Essayez la dictée",
"step_aria": "Étape {{num}} : {{label}}",
"step_completed": "terminée",
"cache_label": "Cache modèle"
},
"donate": {
"title": "Assistance",
"desc": "Si ce projet vous plaît, pensez à faire un don pour soutenir notre développement.",
"hero_title": "Prise en charge d'VoiceStudio",
"hero_desc": "VoiceStudio est gratuit, open source et fonctionne entièrement sur votre matériel. Si cela apporte de la valeur à votre flux de travail, envisagez de soutenir l'équipe principale.",
"github_desc": "Récurrent ou ponctuel directement via GitHub.",
"coffee_desc": "Achetez un café à l'équipe. Aucun compte requis.",
"paypal_desc": "Rapide unique ou récurrent via PayPal.",
"platforms": "Plateformes",
"footer": "Chaque contribution contribue à repousser les limites de lIA locale.",
"back": "Retour à l'Atelier",
"commercial": "Licence commerciale",
"pill": "Prise en charge d'VoiceStudio",
"suggested_title": "Choisissez un montant",
"most_common": "le plus courant",
"custom": "Personnalisé",
"choose_method": "Choisissez comment donner",
"choose_method_amount": "Continuez avec ${{amount}}",
"goal": {
"title": "Fonds Claude Max",
"of": "de",
"per_month": "/mois",
"aria": "{{raised}} sur {{goal}} objectif mensuel",
"remaining": "{{amount}} à emporter",
"met": "🎉 Objectif atteint — {{raised}} augmenté. Merci!",
"social_proof": "Rejoignez les sympathisants de {{count}} qui financent l'IA locale"
},
"postcard": {
"title": "Fonds Claude Max",
"lead_default": "Content que ça ait fonctionné ! VoiceStudio est gratuit et entièrement local. Si cela vous fait gagner du temps, une petite contribution mensuelle finance le Claude Max derrière.",
"lead_first_clone": "Votre premier clone de voix est terminé  super ! VoiceStudio fonctionne entièrement sur votre ordinateur et votre assistance le maintient ainsi.",
"lead_tenth_dub": "Dix doublages vous le mettez clairement à profit. Une petite contribution mensuelle finance le Claude Max qui fournit ces fonctionnalités.",
"lead_sustained": "Vous travaillez chez VoiceStudio depuis un mois. Si cela a gagné une place dans votre flux de travail, envisagez de contribuer à financer la suite.",
"chip_in": "Participez",
"later": "Peut-être plus tard",
"star": "Étoile sur GitHub",
"opt_out": "Ne demande plus",
"dismiss_aria": "Rejeter"
}
},
"enterprise": {
"title": "Licence commerciale",
"desc": "Licence professionnelle et support technique pour les utilisateurs commerciaux.",
"back": "Retour à l'Atelier",
"badge": "Licence commerciale",
"hero_title": "Expédier les voix de l'IA en production",
"hero_desc": "VoiceStudio est un logiciel libre et open source sous licence GNU Affero General Public License v3 (AGPL-3.0) — gratuit pour tout usage, y compris commercial et interne en entreprise. Une licence commerciale n'est nécessaire que si vous souhaitez intégrer VoiceStudio dans un produit ou service propriétaire ou à code fermé, sans les obligations copyleft de l'AGPL-3.0.",
"why_title": "Pourquoi les entreprises choisissent VoiceStudio",
"pricing_title": "Tarifs",
"faq_title": "Questions courantes",
"pricing_desc": "Les niveaux et les tarifs sont encore en cours de finalisation.",
"pricing_detail": "Jusqu'à ce qu'ils soient publics, chaque déploiement commercial est proposé individuellement afin que nous puissions l'adapter à votre équipe et à votre charge de travail.",
"request_quote": "Demander un devis",
"footer_email": "Des questions ? Contactez VoiceStudio@palash.dev",
"footer_discord": "Rejoignez notre Discord pour le soutien de la communauté.",
"benefit_ip": "Propriété IP complète",
"benefit_ip_desc": "Vous possédez chaque sortie, chaque modèle, chaque dérivé. Pas de location partagée, pas de fuite de données.",
"benefit_cost": "Zéro coût par minute",
"benefit_cost_desc": "Pas de factures API, pas de dépassements surprises. Fonctionne sur votre propre matériel dès le premier jour.",
"benefit_team": "Accès à l’échelle de l’équipe",
"benefit_team_desc": "Une licence couvre un nombre illimité d'utilisateurs au sein de votre organisation.",
"benefit_support": "Assistance directe",
"benefit_support_desc": "Assistance prioritaire par e-mail et par appel vidéo de la part de l'équipe d'ingénierie principale.",
"benefit_source": "Noyau disponible à la source",
"benefit_source_desc": "Visibilité totale sur la pile. Auditez, forkez et adaptez selon les termes de la licence.",
"benefit_lang": "646 langues",
"benefit_lang_desc": "Transcrivez, traduisez et doublez dans 646 langues avec une qualité humaine.",
"hero_note": "L'utilisation, l'auto-hébergement et l'usage commercial sont gratuits sous AGPL-3.0 — y compris à grande échelle. L'AGPL est une licence copyleft réseau : si vous modifiez VoiceStudio et proposez cette version modifiée à des tiers via un réseau, vous devez partager votre code source modifié aux mêmes conditions. Une licence commerciale lève ces obligations copyleft pour les déploiements propriétaires à code fermé. Les tarifs arrivent bientôt — contactez-nous d'ici là.",
"hero_simple": "VoiceStudio est gratuit et open source sous AGPL-3.0, y compris pour un usage commercial et interne. Vous navez besoin que dune licence commerciale pour lintégrer dans un produit à source fermée sans les obligations de copyleft de lAGPL.",
"contact_lead": "Le prix est indiqué par déploiement afin de s'adapter à votre équipe et à votre charge de travail. Dites-moi votre cas d'utilisation et je vous ferai un devis."
},
"exportModal": {
"export": "Exporter",
"export_options": "Options d'exportation",
"close_drawer": "Fermer le tiroir d'exportation",
"presets": "PRÉRÉGLAGES",
"preset_title": "Accédez à l'onglet {{tab}} avec les valeurs par défaut {{label}}",
"preset_youtube": "YouTube",
"preset_archive": "Archiver",
"preset_web": "Web",
"preset_podcast": "Baladodiffusion",
"preset_studyset": "Ensemble d'étude",
"tracks": "PISTES",
"track_all": "Tout",
"track_none": "Aucun",
"track_dubs_only": "Doublage uniquement",
"primary": "primaire",
"tab_video": "Vidéo",
"tab_audio": "Audio",
"tab_subs": "Sous-titres",
"tab_pkg": "Forfait",
"container": "Conteneur",
"mp4_h264": "MP4 (H.264)",
"default_audio_track": "Piste audio par défaut",
"default_audio_hint": "Quel flux audio est lu par défaut lorsque le spectateur ouvre le fichier",
"original": "Originale",
"dub_suffix": "(Doublage)",
"bg_audio": "Audio de fond",
"mix_bg_video": "Mélangez de la musique/des effets sous chaque piste doublée",
"subs_in_video": "Sous-titres en vidéo",
"hardsub": "Graver les sous-titres dans l'image (hardsub)",
"dual_subs_video": "Dual (traduit par-dessus l'original en italique)",
"subs_style_line": "Ligne",
"subs_style_karaoke": "Karaoké (surlignage des mots)",
"karaoke_dual_note": "Le karaoké n'est pas disponible avec les sous-titres duals",
"format": "Formater",
"wav_lossless": "WAV (sans perte)",
"mp3_compressed": "MP3 (compressé)",
"bitrate": "Débit",
"what_to_export": "Quoi exporter",
"export_each_dub": "Chaque doublage sélectionné (fichiers séparés)",
"export_single_lang": "Langue unique",
"mix_bg_audio": "Mixez de la musique/des effets sous la voix doublée",
"both": "Les deux",
"layout": "Disposition",
"single_line": "Ligne unique",
"dual_subs": "Double (traduit + original)",
"languages": "Langues",
"current_target": "Cible actuelle ({{code}})",
"all_selected_dubs": "Tous les doublages sélectionnés ({{count}})",
"subs_note": "Les sous-titres sont générés à partir du texte du segment tel quel : modifiez le tableau des segments avant de l'exporter si vous avez repéré des fautes de frappe.",
"retime_note": "Le recalage vidéo par segment réencode l'intégralité de la vidéo à l'export — comptez environ 0,5 à 2× la durée de la vidéo sur CPU.",
"pkg_clips_title": "Clips par segment (.zip)",
"pkg_clips_body": "Chaque segment généré sous forme de WAV numéroté dans un zip - idéal pour la révision, la publication de voix off ou la création d'un ensemble de données.",
"pkg_clips_cta": "Exporter les clips zip",
"pkg_stems_title": "Tiges (.zip)",
"pkg_stems_body": "Piste vocale isolée + fond (musique/FX) sous forme de WAV séparés. Utile pour l'édition audio en aval.",
"pkg_stems_cta": "Exporter les tiges zip",
"pkg_audio_title": "Pistes audio (fichiers individuels)",
"pkg_audio_body_one": "Accédez à l'onglet Audio pour exporter les doublages par langue au format WAV ou MP3 (doublage {{count}} disponible).",
"pkg_audio_body_other": "Accédez à l'onglet Audio pour exporter les doublages par langue au format WAV ou MP3 ({{count}} doublages disponibles).",
"pkg_audio_cta": "Ouvrir l'onglet audio",
"license_text": "L'utilisation commerciale nécessite un",
"license_link": "licence",
"output": "SORTIE",
"nothing_selected": "Rien de sélectionné ou piste indisponible",
"export_mp4": "Exporter MP4",
"export_n_audio_one": "Exporter le fichier audio {{count}}",
"export_n_audio_other": "Exporter des fichiers audio {{count}}",
"export_audio": "Exporter l'audio",
"export_subtitles": "Exporter les sous-titres"
},
"demo": {
"clone_coachmark": "Il s'agit d'une démo guidée : essayez l'invite suggérée ou écrivez la vôtre.",
"hear_demo": "Écoutez la démo",
"stop_demo": "Arrêter la démo",
"prerendered_chip": "Échantillon pré-rendu : installez un moteur TTS pour synthétiser un nouveau texte.",
"preset_preview": "Aperçu",
"preset_stop": "Arrêter",
"preset_use": "Utilisez cette conception →",
"dictation_title": "Essayez la dictée",
"dictation_lede": "Lisez-en un à haute voix après avoir appuyé sur votre touche de raccourci, ou appuyez sur Replay pour envoyer l'échantillon fourni via le transcripteur afin que vous puissiez voir le travail de dictée de bout en bout sans parler.",
"dictation_status_ok": "Vérifié  le raccourci clavier fonctionne sur cette machine",
"dictation_status_pending": "Appuyez n'importe où sur votre raccourci pour tester",
"dictation_status_taken": "Une autre application utilise déjà ce raccourci — choisissez-en un autre dans les Réglages.",
"dictation_status_warn": "Aucun raccourci clavier enregistré  définissez-en un ci-dessous",
"dictation_hear": "Écoutez",
"dictation_stop": "Arrêter",
"dictation_replay": "Rejouer",
"dictation_transcribing": "Transcription…",
"dubbing_title": "Voir le doublage en action",
"dubbing_sync": "Lecture synchronisée",
"dubbing_picker": "Essayez une autre langue :",
"dubbing_cta": "Exécutez ceci sur votre propre vidéo →",
"dubbing_loading": "Chargement de la démo de doublage…",
"dubbing_dismiss": "Ignorer la démo de doublage",
"original_tag": "originale",
"dubbed_tag": "doublé",
"script_conversational": "Conversationnel",
"script_technical": "Vocabulaire technique",
"script_french": "Non anglais (français)",
"aria_pause": "Pause {{label}}",
"aria_hear": "Écoutez {{label}}",
"aria_replay": "Rejouer {{label}} via le transcripteur",
"dictation_lede_hotkey_only": "Maintenez le raccourci ci-dessus n'importe où sur votre bureau, parlez, relâchez — le texte arrive dans l'application active. Appuyez maintenant pour vérifier."
},
"direction": {
"title": "Direction pour le segment #{{id}}",
"desc": "Dites au pipeline ce que devrait ressentir cette ligne. L'anglais simple fonctionne : le système mappe vos mots sur une taxonomie stable (énergie/émotion/rythme/intimité/formalité), puis enchaîne la taxonomie via la traduction cinématographique, le TTS et l'ajustement par fente.",
"label": "Direction",
"lineHint": "Ligne : \"{{text}}\"",
"placeholder": "par ex. urgent et surpris / chaleureux, plein d'espoir / murmuré, intime",
"previewParse": "Aperçu de l'analyse",
"previewFailed": "Échec de l'aperçu : {{message}}",
"clear": "Effacer",
"cancel": "Annuler",
"saveDirection": "Enregistrer la direction",
"ttsInstruct": "Instruire TTS :",
"nothingParsed": "— (rien d'analysé)",
"translateHint": "Indice de traduction :",
"rateBias": "Biais de taux :",
"speedsUp": "accélère",
"slowsDown": "ralentit",
"taxonomyTokens": "jetons de taxonomie"
},
"errors": {
"title": "Cet onglet a rencontré un problème.",
"desc": "Ne vous inquiétez pas, le reste de l'application fonctionne toujours. Vous pouvez changer d'onglet ou réessayer ci-dessous.",
"tryAgain": "Réessayez",
"openDocs": "Ouvrir la documentation pour cette erreur",
"crash_port_in_use": "Le backend n'a pas pu démarrer car le port 3900 est déjà utilisé — une autre copie d'VoiceStudio (ou une application ayant réclamé ce port) l'occupe. Quittez l'autre instance et relancez ; si rien ne tourne visiblement, un backend orphelin d'une session précédente occupe encore le port.",
"crash_oom_kill": "Il a été arrêté de force (signal 9), ce qui signifie généralement que le système d'exploitation a manqué de mémoire (RAM). Fermez les applications gourmandes en mémoire, choisissez un modèle ASR plus petit dans Réglages → Modèles, ou déchargez le modèle TTS avant de transcrire.",
"crash_native_fault": "Le plantage s'est produit dans la pile de calcul et non par manque de mémoire — cela indique un pilote GPU qui ne correspond pas au runtime CUDA fourni, ou un fichier de modèle téléchargé de façon incomplète. Mettez à jour votre pilote GPU, puis retéléchargez le modèle depuis Réglages → Modèles (un téléchargement partiel est réparé sur place). Si cela persiste, passez à un moteur isolé dans Réglages → Moteurs : « VoiceStudio (subprocess) » pour la synthèse, « Faster-Whisper (crash-isolated subprocess) » pour la transcription. Ils exécutent le modèle dans un processus séparé, si bien qu'un tel plantage n'emporte que ce processus et non tout le backend.",
"report": "Signaler ce bogue",
"report_failed": "Impossible d'ouvrir le rapport de bug. Réessayez, ou copiez les détails ci-dessus dans un nouveau ticket.",
"searchIssues": "Rechercher des problèmes similaires",
"unexpected": "Erreur inattendue : {{message}}",
"backend_shutting_down": "VoiceStudio est en cours de fermeture. Rouvrez lapplication et réessayez.",
"crash_broken_env": "Il est mort en chargeant ses propres dépendances Python : ce n'est donc ni la mémoire ni votre GPU, mais un environnement incomplet ou à moitié mis à jour. Utilisez « Nettoyer et réessayer » dans Paramètres → Journaux → Backend, qui le reconstruit de zéro et le répare sur place, sans toucher à vos voix ni à vos projets. Si l'échec persiste, les détails du plantage nomment le paquet qui refusait de s'importer.",
"crash_vram_default": "Sur les GPU plus modestes, la cause habituelle est un manque de VRAM lors du chargement du modèle ASR en plus du modèle TTS : déchargez d'abord le modèle TTS, ou choisissez un modèle ASR plus petit dans Catalogue de modèles → Modèles.",
"stream_cut_backend_alive": "Le flux s'est terminé prématurément, mais le backend tourne toujours — il n'a donc pas planté. Dans une installation servie ou conteneurisée, c'est généralement un reverse proxy ou un répartiteur de charge qui met la connexion en tampon ou la coupe par timeout : désactivez la mise en tampon des réponses pour cette route (nginx: proxy_buffering off; X-Accel-Buffering: no) et augmentez son délai de lecture. Lancer l'application de bureau directement, ou sur localhost sans proxy, permettra de le confirmer."
},
"keyboard": {
"title": "Raccourcis clavier",
"footer": "Appuyez sur <1>?</1> à tout moment pour l'ouvrir.",
"or": "ou",
"nav": "Navigation",
"nav_cheatsheet": "Afficher cette aide-mémoire",
"nav_enginePickerKey": "Cmd/Ctrl+E",
"nav_workspacesKey": "Cmd/Ctrl+19",
"nav_closeModal": "Fermer modal / annuler",
"nav_save": "Enregistrer le projet/commettre le trim",
"segmentEditor": "Editeur de segments",
"seg_split": "Diviser le segment au niveau du curseur",
"seg_merge": "Fusionner avec le segment suivant",
"seg_merge_prev": "Fusionner avec le segment précédent",
"seg_undo": "Annuler",
"seg_redo": "Refaire",
"seg_click": "Action primaire",
"seg_shiftClick": "Sélection de plage",
"trimmer": "Tondeuse audio",
"trim_playPause": "Aperçu de la lecture/pause",
"trim_nudgeStart": "Poignée de démarrage par poussée",
"trim_nudgeEnd": "Poignée d'extrémité poussée",
"trim_fineNudge": "Bon coup de pouce",
"trim_coarseNudge": "Coup de pouce grossier",
"trim_zoomIn": "Zoom avant/arrière",
"trim_fitAll": "Tout adapter/Sélection d'ajustement",
"trim_confirm": "Confirmer la coupe",
"dub": "Doublage",
"dub_generate": "Générer un doublage",
"dub_sidebar": "Basculer la barre latérale"
},
"network": {
"sharing_on_title": "Partage sur — cliquez pour plus de détails",
"share_on_network": "Partagez sur votre réseau",
"switching": "Commutation…",
"network": "Réseau",
"local": "Locale",
"share_confirm_title": "Partager sur votre réseau ?",
"share_confirm_hint": "Les autres appareils connectés à votre réseau Wi-Fi/Ethernet pourront accéder à VoiceStudio en utilisant le code PIN d'accès affiché une fois allumé.",
"enabling": "Activation…",
"enable": "Activer",
"shared_title": "Partagé sur votre réseau",
"no_interface": "Aucune interface réseau accessible connectez-vous au Wi-Fi/Ethernet.",
"copy_link": "Copier le lien",
"open_in_browser": "Ouvrir dans le navigateur",
"qr_alt": "QR pour {{ip}}",
"pin": "NIP :",
"stop_sharing": "Arrêter de partager",
"copied": "Copié",
"enable_error": "Impossible d'activer le partage : {{message}}",
"disable_error": "Impossible de désactiver : {{message}}"
},
"readiness": {
"checking_system": "Système de vérification…",
"all_ready": "Tous les systèmes sont prêts",
"system_readiness": "État de préparation du système",
"asr_model": "Modèle ASR",
"tts_model": "Modèle TTS",
"loaded_ready": "Chargé et prêt",
"loading_first_run": "Chargement… (cela peut prendre 1 à 2 minutes lors de la première exécution)",
"failed_to_load": "Échec du chargement",
"not_loaded_yet": "Pas encore chargé  se chargera lors de la première transcription",
"tts_not_loaded_yet": "Pas encore chargé — se chargera lors de la première génération vocale",
"error_check_logs": "Erreur : {{error}}. Vérifiez les journaux et essayez de redémarrer.",
"check_logs_restart": "Vérifiez les journaux pour détecter les erreurs de chargement du modèle. Essayez de redémarrer.",
"llm_cinematic": "LLM (Cinématique)",
"llm_configure": "Configurer TRANSLATE_BASE_URL pour la qualité de traduction cinématographique",
"llm_set_env": "Définissez les variables d'environnement TRANSLATE_BASE_URL et TRANSLATE_API_KEY. Fonctionne avec Ollama, OpenAI, LM Studio, etc.",
"llm_optional": "Facultatif : définissez TRANSLATE_BASE_URL pour la qualité cinématographique"
},
"license": {
"title": "Supertonic-3 — Acceptation de la licence",
"intro": "Supertonic-3 est expédié sous deux licences distinctes. Veuillez vérifier les deux avant d'activer le moteur.",
"sdk_heading": "Code SDK · MIT",
"sdk_desc": "Le SDK d'inférence Python (supertonic) est sous licence MIT. Utilisation permissive, y compris commerciale.",
"read_mit": "Lire la licence MIT →",
"model_heading": "Poids des modèles · OpenRAIL-M",
"model_desc": "Les poids du modèle Supertonic-3 sont publiés sous la licence OpenRAIL-M. Cette licence restreint l'utilisation à des fins non malveillantes — consultez la licence liée pour l'ensemble complet des restrictions basées sur l'utilisation.",
"read_openrail": "Lire la licence OpenRAIL-M →",
"footer": "Cliquer sur Accepter enregistre votre acceptation dans les paramètres locaux d'VoiceStudio et active le moteur. Votre acceptation est stockée sur cette machine uniquement — rien n'est signalé à Supertone Inc. ou à un tiers.",
"saving": "Sauvegarde…",
"accept": "Accepter",
"accepted_toast": "Licence Supertonic-3 acceptée.",
"accept_error": "Échec de l'enregistrement de l'acceptation de la licence : {{message}}",
"pockettts_title": "Acceptation des licences de PocketTTS",
"pockettts_intro": "PocketTTS de Kyutai est distribué sous deux licences et ses poids sont aussi soumis à des conditions daccès sur Hugging Face. Lisez-les avant dactiver le moteur.",
"pockettts_sdk_desc": "La bibliothèque Python pocket-tts est sous licence MIT, permissive et compatible avec un usage commercial.",
"pockettts_model_heading": "Poids du modèle (CC-BY-4.0)",
"pockettts_model_desc": "Les poids du modèle PocketTTS sont publiés sous CC-BY-4.0. Lusage commercial est permis avec attribution.",
"read_cc_by": "Lire la licence CC-BY-4.0",
"gate_heading": "Accès restreint",
"gate_desc": "Les poids sont restreints sur Hugging Face. Avant le premier téléchargement, vous devez créer un compte gratuit, partager vos coordonnées et accepter les conditions daccès.",
"pockettts_conditions_desc": "Les conditions interdisent tout usage vocal illégal, nuisible, trompeur, frauduleux, non autorisé ou sans consentement. Lisez les conditions complètes avant de continuer.",
"review_access_conditions": "Consulter les conditions daccès",
"pockettts_footer": "Cliquer sur Accepter enregistre votre accord uniquement dans les réglages locaux de VoiceStudio, puis active le moteur. Laccès au modèle et son téléchargement passent par Hugging Face, qui reçoit les données habituelles de requête et de compte.",
"pockettts_accepted_toast": "Conditions de PocketTTS acceptées."
},
"voicePreview": {
"title": "Aperçu vocal",
"close": "Fermer l'aperçu",
"default_text": "Bonjour ! Ceci est un aperçu de la façon dont je sonne avec cette voix.",
"default_voice": "Voix par défaut",
"clone_profiles": "Cloner des profils",
"designed_voices": "Voix conçues",
"presets": "Préréglages",
"placeholder": "Tapez quelque chose à entendre…",
"stop": "Arrêter",
"regenerate": "Régénérer",
"preview": "Aperçu",
"hint": "8 étapes · aperçu rapide"
},
"header": {
"speech": "Parole",
"kicker_studio": "Atelier",
"kicker_library": "Bibliothèque",
"kicker_preferences": "Préférences",
"kicker_licensing": "Licence",
"label_launchpad": "Barre de lancement",
"label_clone": "Clonage vocal",
"label_design": "Conception vocale",
"label_dub": "Doublage",
"label_projects": "OmniDrive",
"label_gallery": "Galerie",
"label_transcriptions": "Transcriptions",
"label_settings": "Paramètres",
"label_catalogue": "Catalogue de modèles",
"label_enterprise": "Licence commerciale",
"status_ready": "Prêt",
"status_loading": "Chargement…",
"status_idle": "Inactif",
"memory_management": "Gestion de la mémoire",
"flush": "Rincer",
"loaded_models": "Modèles chargés",
"no_models": "Aucun modèle chargé",
"unload": "Décharger",
"flush_caches": "Vider les caches",
"unload_all_flush": "Tout décharger + rincer"
},
"sidebar": {
"tab_drive": "Conduire",
"tab_history": "Histoire",
"tab_exports": "Exportations",
"save_project": "Enregistrer le projet de doublage",
"save_new_project": "Enregistrer en tant que nouveau projet de doublage",
"dub_projects": "Projets de doublage",
"voice_clones": "Clones vocaux",
"designed_voices": "Voix conçues",
"no_dub_projects": "Aucun projet de doublage enregistré",
"no_dub_hint": "Téléchargez une vidéo et cliquez sur Enregistrer pour conserver votre travail.",
"no_clones": "Pas encore de clones de voix",
"no_clones_hint": "Enregistrez ou téléchargez de l'audio, puis cliquez sur Enregistrer en tant que profil vocal.",
"no_designs": "Aucune voix conçue pour l'instant",
"no_designs_hint": "Générez une voix et enregistrez-la depuis l'historique.",
"history_subtitle": "Historique des générations · Stocké dans SQLite",
"no_history": "Pas d'historique de génération",
"no_history_hint": "Synthétisez de l'audio ou doublez une vidéo : les résultats apparaîtront ici.",
"clear_history": "Effacer l'historique",
"clear_confirm": "Effacer tous les éléments de l'historique {{count}} ? Cela ne peut pas être annulé.",
"history_cleared": "Historique effacé",
"recent_exports": "Exportations récentes",
"no_exports": "Aucune sortie téléchargée",
"no_exports_hint": "Exportez un fichier via Tauri pour le voir suivi ici.",
"show_in_folder": "Afficher dans le dossier",
"open": "Ouvert",
"select": "Sélectionnez",
"try_voice": "Essayez",
"consistent": "cohérent",
"locked": "Verrouillé",
"clone_label": "Cloner",
"design_label": "Conception",
"dub_label": "Doublage",
"save_label": "Enregistrer",
"lock_identity": "Verrouiller l'identité vocale",
"in_folder": "en {{folder}}",
"search": "Rechercher…",
"rename": "Renommer",
"rename_save": "Enregistrer le nom"
},
"trimmer": {
"title": "Couper l'audio de référence",
"decoding": "Décodage audio…",
"meta_length": "Longueur {{duration}} · {{sampleRate}} Hz",
"meta_rendering": "rendu de la forme d'onde {{percent}}%",
"keyboard_hint": "scroll = zoom · maj+scroll = panoramique · alt+glisser = panoramique · ⏐ ⟵ ⟶ ⏐ les touches ajustent les poignées",
"zoom_in": "Zoomer (+)",
"zoom_out": "Zoom arrière (-)",
"fit_all": "Convient à tous (Accueil)",
"fit_selection": "Ajuster la sélection (Fin)",
"fit_sel_btn": "AJUSTEMENT SÉL.",
"view_range": "Afficher {{start}} → {{end}} ({{duration}})",
"start_label": "Commencer",
"end_label": "Fin",
"length_label": "Longueur",
"too_long": ">{{max}}s",
"too_short": "trop court",
"length_ok": "ok",
"loop_preview": "Aperçu de la boucle",
"pause": "Pause",
"preview_selection": "Aperçu de la sélection",
"play_hint": "Espace pour jouer · Enter pour confirmer · Esc pour annuler",
"cancel": "Annuler",
"use_trimmed": "Utiliser coupé",
"decode_failed": "Échec du décodage : {{message}}",
"playback_failed": "Échec de la lecture : {{message}}",
"audio_load_failed": "Échec du chargement audio",
"unit_seconds": "s"
},
"casting": {
"title": "Casting de haut-parleurs",
"auto_assign_title": "Attribuer automatiquement les voix des clones de haut-parleurs extraits",
"auto_cast": "Diffusion automatique",
"all_cast": "Tous les acteurs",
"segments_count": "{{count}} segments",
"assign_voice": "Attribuer une voix…",
"from_video": "🎤 À partir de la vidéo ({{name}})",
"no_profiles": "Aucun profil vocal n'a encore été enregistré.",
"preview_voice": "Aperçu de la voix"
},
"checkpoint": {
"timing_review": "{{count}} segments nécessitent une vérification du minutage",
"asr_title": "Transcriptions prêtes",
"asr_cta": "Traduire",
"asr_hint": "Corrigez toutes les erreurs ASR maintenant : une diction serrée enregistre les tentatives TTS plus tard.",
"translate_title": "Traductions prêtes",
"translate_cta": "Générer un doublage",
"translate_hint": "Parcourez le texte cible. Les lignes trop longues sont accélérées ; vous pouvez également modifier directement.",
"done_title": "Doublage terminé",
"done_hint": "Examinez les ratios de synchronisation et de synchronisation. Ajustez n'importe quelle ligne et appuyez sur \"Regen changé\" pour une restauration partielle rapide.",
"segment_one": "{{count}} segment",
"segment_other": "{{count}} segments",
"dismiss_title": "Ignorer - ne réapparaîtra pas pour cette étape jusqu'au rechargement",
"timing_review_one": "{{count}} segment nécessite une vérification du minutage",
"timing_review_other": "{{count}} segments nécessitent une vérification du minutage",
"timing_review_zero": "{{count}} segments nécessitent une vérification du minutage",
"timing_review_two": "{{count}} segments nécessitent une vérification du minutage",
"timing_review_few": "{{count}} segments nécessitent une vérification du minutage",
"timing_review_many": "{{count}} segments nécessitent une vérification du minutage"
},
"compare": {
"title": "Comparaison vocale A/B",
"close": "Comparaison étroite",
"desc": "Comparez deux voix côte à côte pour prendre des décisions de casting. L'application reste interactive.",
"test_phrase": "Phrase de test",
"voice_a": "Voix A",
"voice_b": "Voix B",
"select_voice": "— Sélectionnez la voix —",
"preset_suffix": "(Préréglé)",
"no_audio": "Pas encore de son",
"close_btn": "Fermer",
"comparing": "En comparant…",
"compare_btn": "Comparez",
"preparing_voice": "Préparation de la voix...",
"generating_voice_a": "Génération de la voix A...",
"generating_voice_b": "Génération de la voix B...",
"comparison_complete": "Comparaison terminée !",
"play_failed": "Échec de la lecture : {{message}}"
},
"models": {
"hf_token_set_toast": "Ensemble de jetons HuggingFace  téléchargements plus rapides activés",
"hf_token_save_failed": "Échec de l'enregistrement du jeton",
"install_started": "Installation démarrée  progression dans la ligne",
"delete_confirm": "Supprimer {{repoId}} ? Vous pourrez le réinstaller plus tard.",
"delete_confirm_title": "Supprimer le modèle",
"deleted": "Supprimé {{repoId}}",
"reinstall_confirm": "Réinstaller {{repoId}} ? Cela supprimera la copie actuelle et la téléchargera à nouveau.",
"reinstall_confirm_title": "Réinstaller le modèle",
"reinstalling": "Réinstallation",
"recommended_installed": "Les modèles recommandés sont déjà installés.",
"started_downloading_one": "J'ai commencé à télécharger le modèle {{count}}",
"started_downloading_other": "J'ai commencé à télécharger les modèles {{count}}",
"install_failed": "Échec de l'installation : {{message}}",
"removing_cached": "Suppression des révisions mises en cache…",
"resolving_metadata": "Résolution des métadonnées du dépôt",
"retry_attempt": "Nouvelle tentative {{attempt}} — {{error}}",
"connecting_hf": "Connexion à HuggingFace…",
"resolving_files_one": "Résolution du fichier {{count}}…",
"resolving_files_other": "Résolution des fichiers {{count}}…",
"resolving_files_active": "Résolution de {{count}} fichier(s)… · {{file}}",
"measuring": "mesurer…",
"files_progress": "Fichiers {{done}}/{{total}}",
"install_error": "Échec de l'installation : {{error}}",
"view_on_hf": "Voir sur HuggingFace",
"install_btn": "Installer",
"section_tts": "TTS (synthèse vocale)",
"section_asr": "ASR (transcription hors ligne)",
"section_dictation": "Dictée (streaming)",
"section_diarisation": "Diarisation",
"section_other": "Autres",
"show_incompatible": "Afficher les incompatibles ({{count}})",
"hide_incompatible": "Masquer les incompatibles ({{count}})",
"incompatible_title": "Modèles incompatibles avec ce système",
"recommended_title": "Sélection pour cette machine — optionnel",
"download_all_remaining_title": "Télécharger tous les modèles recommandés restants",
"reco_install_one": "Installer {{label}}",
"reinstall_btn": "Réinstaller",
"downloading": "téléchargement",
"deleting": "suppression",
"working": "travailler",
"installed": "installé",
"not_installed": "non installé",
"required_tag": "requis",
"delete_btn": "Supprimer",
"hf_token_btn": "Jeton HF",
"hf_set_title": "Définir le jeton HuggingFace pour des téléchargements plus rapides",
"get_token": "Obtenir un jeton →",
"reco_installed_for": "Offre groupée recommandée installée pour {{device}}",
"reco_for": "Recommandé pour {{device}}",
"starting": "Commencer…",
"required_size": "Requis ~{{size}} Go",
"all_size": "Tous ~{{size}} Go",
"req_tag": "demande",
"search_placeholder": "Rechercher des modèles…",
"search_label": "Rechercher des modèles",
"no_matches": "Aucun modèle ne correspond à vos filtres.",
"sort_by": "Trier par {{column}}",
"column_model": "Modèle",
"column_role": "Rôle",
"column_size": "Taille",
"column_status": "Statut",
"ready_badge": "Prêt",
"loading_badge": "Chargement…",
"idle_badge": "Inactif",
"started_downloading_required_one": "Début du téléchargement du modèle requis {{count}}",
"started_downloading_required_other": "Début du téléchargement des {{count}} modèles requis",
"to_download": "télécharger",
"cached": "mis en cache",
"fast_download_badge": "téléchargement rapide",
"fast_download_title": "Téléchargements rapides via Xet {{version}} — transfert fragmenté parallèle",
"voice_previews": "Aperçus de voix",
"voice_previews_desc": "Téléchargez des aperçus pré-rendus pour que les voix se lisent instantanément, même avant la fin du téléchargement d'un modèle vocal. Rien n'est téléchargé tant que vous n'activez pas cette option.",
"voice_previews_off": "Désactivé — les aperçus sont générés sur cet appareil",
"voice_previews_ready": "Sélection en cache",
"voice_previews_partial": "{{cached}} aperçus en vedette sur {{total}} en cache",
"voice_previews_checked": "vérifié {{when}}",
"voice_previews_never": "pas encore vérifié",
"voice_previews_check": "Vérifier maintenant",
"voice_previews_rejected": "Mise à jour de la galerie de voix refusée : {{message}}",
"role_llm": "LLM",
"role_tts": "TTS",
"role_asr": "ASR"
},
"enterprise_faq": {
"q_internal_tools": "Ai-je besoin dune licence pour les outils internes ?",
"a_internal_tools": "Non. L'utilisation par vos employés et prestataires — y compris la modification et l'auto-hébergement en interne — est gratuite sous AGPL-3.0. Une licence commerciale n'est nécessaire que si vous intégrez VoiceStudio dans un produit ou service propriétaire ou à code fermé sans vouloir respecter les obligations de partage du code source de l'AGPL.",
"q_try_before": "Puis-je essayer avant de m'engager ?",
"a_try_before": "Oui. L'application complète est gratuite à télécharger, exécuter et auto-héberger sous AGPL-3.0 — aucun accord requis. Quand vous serez prêt à discuter d'une licence commerciale (usage propriétaire), écrivez-nous et nous verrons les détails ensemble.",
"q_watermark": "Et le filigrane ?",
"a_watermark": "Le filigrane invisible AudioSeal est intégré par défaut pour tout le monde. Vous pouvez le désactiver dans Réglages → Confidentialité ; il n'affecte que l'audio généré après la modification."
},
"gallery_extra": {
"save_prompt": "Saisissez un nom pour ce profil vocal :",
"saved_as_profile": "Voix enregistrée en tant que profil !",
"save_profile_failed": "Échec de l'enregistrement du profil",
"download_failed": "Échec du téléchargement : {{message}}",
"trim_load_failed": "Échec du chargement de l'audio à découper : {{message}}",
"upload_crop_failed": "Échec de l'importation de la voix tronquée : {{message}}"
},
"dub_workflow": {
"preparing_audio": "Préparation du son…",
"preparing_video": "Préparation de la vidéo…",
"extracting_audio_scenes": "Extraction de l'audio et des scènes…",
"transcribing_audio": "Transcription audio…",
"transcription_complete": "Transcription terminée",
"upload_cancelled": "Téléchargement annulé",
"upload_failed": "Échec du téléchargement : {{message}}",
"downloading_video": "Téléchargement de la vidéo…",
"ingested": "Ingéré {{url}}",
"ingest_cancelled": "Ingestion annulée",
"ingest_failed": "Échec de l'ingestion de l'URL : {{message}}",
"retry_cancelled": "Nouvelle tentative annulée",
"transcription_failed": "Échec de la transcription : {{message}}",
"import_srt_no_job": "Téléchargez ou ingérez dabord une vidéo il ny a aucune tâche à laquelle attacher des sous-titres.",
"import_srt_after_speakers": "SRT mis en attente. Lanalyse des locuteurs se terminera dabord afin de préserver les voix clonées.",
"imported_cues": "Cues {{count}} importées de {{file}}",
"skipped_malformed": "{{count}} ignoré (mal formé)",
"dropped_overlap": "{{count}} supprimé (chevauchement)",
"clamped_to_duration": "{{count}} fixé à la longueur du support",
"srt_import_failed": "L'importation SRT a échoué",
"cleaned_one": "Fragment {{count}} nettoyé",
"cleaned_other": "Fragments {{count}} nettoyés",
"segments_clean": "Segments déjà propres",
"cleanup_failed": "Échec du nettoyage : {{message}}",
"cinematic_no_llm": "La qualité cinématographique nécessite un LLM — définissez TRANSLATE_BASE_URL + TRANSLATE_API_KEY (Ollama fonctionne localement). Revenir à Fast.",
"dialect_not_applied": "Le dialecte sélectionné nécessite un LLM — passez le moteur sur OpenAI/Ollama ou choisissez la qualité Cinematic.",
"translate_errors": "Échec du ou des segments {{errorCount}}/{{totalCount}} : {{firstError}}",
"translate_degraded": "Les {{totalCount}} segment(s) ont été traduits — {{count}} utilisent la traduction brute car la passe de polissage a été ignorée ({{reason}})",
"translated_segments": "Segment(s) {{count}} traduit(s) → {{lang}}",
"translated_cinematic_suffix": "(Cinématique)",
"translation_failed": "Échec de la traduction : {{message}}",
"regenerating": "Régénération de {{count}} segment(s)…",
"generating_dub": "Génération du doublage…",
"generating_progress": "Génération du doublage… {{current}}/{{total}}",
"generation_aborted": "Génération avortée.",
"dubbing_aborted": "Doublage interrompu",
"generation_stream_ended": "Le flux de génération s'est terminé avant la fin",
"dub_complete": "Doublage terminé",
"stop_failed": "Impossible d'arrêter",
"save_first": "Veuillez d'abord cliquer sur « Télécharger et transcrire » afin que la vidéo soit traitée sur le serveur avant de l'enregistrer.",
"project_saved": "Projet enregistré",
"project_created": "Projet créé",
"save_failed": "Échec de l'enregistrement : {{message}}",
"opened_project": "Ouvert : {{name}}",
"delete_project_confirm": "Supprimer ce projet ? Cela ne peut pas être annulé.",
"project_deleted": "Projet supprimé",
"delete_history_confirm": "Supprimer cet élément de l'historique ?",
"history_deleted": "Élément d'historique supprimé",
"restored_state": "État de la génération précédente restauré",
"upgrading_preview": "Mise à niveau de {{count}} segments en qualité d'aperçu vers une qualité complète…",
"session_expired": "Cette session de doublage a expiré ou a été nettoyée : téléchargez à nouveau votre vidéo pour en démarrer une nouvelle."
},
"tts_errors": {
"enter_text": "Veuillez saisir du texte",
"upload_or_select": "Téléchargez un audio ou sélectionnez un profil vocal",
"trim_hint": "L'audio est de {{duration}}s — coupez à ≤{{max}}s pour un meilleur clonage",
"timeout": "Le délai de génération a expiré : le téléchargement du modèle est peut-être encore en cours. Vérifiez Paramètres → Journaux, puis réessayez.",
"generation_in_progress": "Une génération est déjà en cours — attendez sa fin avant den lancer une autre.",
"error_prefix": "Erreur : {{message}}",
"ignored_unsupported": "Instruction non prise en charge ignorée : {{items}}",
"ignored_duplicate": "Ignoré (catégorie déjà définie) : {{items}}",
"ignored_conflict": "{{items}} ignoré — un dialecte chinois et un accent anglais ne peuvent pas être combinés.",
"dialect_accent_conflict": "Un dialecte chinois et un accent anglais ne peuvent pas être utilisés ensemble. Effacez l'un des deux avant de régénérer.",
"instruct_category_conflict": "Deux options de conception vocale contradictoires ont été sélectionnées dans la même catégorie (par ex. deux genres). Effacez-en une avant de régénérer.",
"ref_audio_unusable": "Aucune voix n'a été détectée dans l'audio de référence — le clip est silencieux ou presque, il n'y a donc aucune voix à cloner. Réenregistrez plus près du micro (vérifiez que le bon périphérique d'entrée est sélectionné et que le niveau bouge) ou choisissez un autre clip.",
"ref_audio_too_long": "Une référence peut durer au maximum 20 secondes avec transcription, ou 75 secondes sans transcription. Coupez-la sur un passage vocal clair de 3 à 10 secondes ; si vous fournissez du texte, coupez la transcription sur le même passage.",
"ref_audio_no_speech": "La détection automatique n'a trouvé aucune parole dans la référence. Coupez-la sur un passage vocal clair de 3 à 10 secondes ou fournissez une transcription correspondante."
},
"sharing": {
"title": "Partage et accès à distance",
"help": "Exposez cette instance VoiceStudio en cours d'exécution à vos autres machines sans la redémarrer. Le bouclage uniquement est la valeur par défaut : rien n'est partagé jusqu'à ce que vous l'activiez ici.",
"local_network": "Réseau local",
"local_help": "Partagez sur votre Wi-Fi / Ethernet avec un code PIN d'accès unique. D'autres appareils scannent le code QR ou ouvrent le lien.",
"ports_title": "Ports",
"ports_help": "Celles-ci sont définies via des variables d'environnement lues au démarrage. Modifiez le port backend ou UI en définissant la variable et en redémarrant VoiceStudio.",
"backend_port": "Port principal",
"ui_port": "Port d'interface utilisateur",
"lan_share_port": "Port de partage LAN",
"port_error": "Entrez un port entre 1024 et 65535",
"port_saved": "Port de partage LAN enregistré : s'appliquera la prochaine fois que vous activerez le partage",
"port_save_failed": "Impossible d'enregistrer le port : {{message}}",
"saving": "Sauvegarde…",
"ports_note": "Les ports backend et UI sappliquent au redémarrage. Le port de partage LAN s'appliquera la prochaine fois que vous activerez le partage.",
"tailscale_title": "Tailscale (accès à distance privé)",
"tailscale_checking": "Vérification de la queue…",
"tailscale_absent": "Échelle arrière non détectée. Installez-le pour accéder à VoiceStudio en toute sécurité depuis n'importe où sur votre réseau privé.",
"tailscale_install": "Installer la balance arrière",
"tailscale_running": "Tailscale est en cours dexécution. Servez VoiceStudio sur votre réseau privé.",
"tailscale_not_logged_in": "Tailscale est installé mais nest pas connecté. Démarrez et connectez-vous dabord à Tailscale.",
"tailscale_enabled": "Service Tailscale activé",
"tailscale_enable_failed": "Impossible d'activer Tailscale",
"tailscale_enable_error": "Impossible d'activer Tailscale : {{message}}",
"tailscale_disabled": "Service Tailscale désactivé",
"tailscale_disable_failed": "Impossible de désactiver Tailscale",
"tailscale_disable_error": "Impossible de désactiver Tailscale : {{message}}",
"tailscale_enabling": "Activation…",
"tailscale_enable_btn": "Activer le service Tailscale",
"tailscale_disabling": "Désactivation…",
"tailscale_disable_btn": "Arrêter le service Tailscale",
"tailscale_copy": "Copier le lien",
"tailscale_open": "Ouvrir dans le navigateur",
"copied": "Copié",
"tailscale_qr_alt": "Code QR pour l'URL Tailscale"
},
"reportBug": {
"label": "Signaler un bug",
"title": "Ouvre une page de problèmes GitHub pré-remplie dans votre navigateur. Rien n'est envoyé jusqu'à ce que vous cliquiez sur Soumettre.",
"staleTitle": "Mise à jour disponible",
"staleMessage": "Vous utilisez VoiceStudio {{current}}, mais {{latest}} est déjà sortie — ce bug y est peut-être déjà corrigé. Voir la dernière version avant de signaler ?",
"staleView": "Voir la mise à jour",
"staleFileAnyway": "Signaler quand même"
},
"app": {
"loading": "Chargement…",
"trimmed_loaded": "Audio découpé chargé",
"toast_exported": "Exporté : {{name}}",
"toast_export_failed": "Échec de l'exportation : {{message}}",
"toast_open_folder_failed": "Impossible d'ouvrir le dossier : {{message}}",
"toast_saving": "Sauvegarde de {{name}}...",
"toast_saved": "Enregistré : {{path}}",
"toast_save_error": "Erreur d'enregistrement : {{message}}",
"toast_processing": "Traitement {{name}}...",
"toast_downloaded": "Téléchargé {{name}}",
"toast_download_error": "Erreur de téléchargement : {{message}}",
"toast_upload_first": "Veuillez d'abord cliquer sur « Télécharger et transcrire » afin que la vidéo soit traitée sur le serveur avant de l'enregistrer.",
"toast_save_failed": "Échec de l'enregistrement : {{message}}",
"toast_opened": "Ouvert : {{name}}",
"toast_project_deleted": "Projet supprimé",
"toast_restored_state": "État de la génération précédente restauré",
"toast_history_deleted": "Élément d'historique supprimé",
"toast_flushed": "Vidé — RAM {{ram}}G · VRAM {{vram}}G{{unloaded}}",
"toast_model_unloaded": "· modèle déchargé",
"toast_flush_failed": "Échec du rinçage : {{message}}",
"toast_project_saved": "Projet enregistré",
"toast_project_created": "Projet créé"
},
"update": {
"available": "Mise à jour {{version}} disponible",
"install": "Installer et redémarrer",
"install_hint": "Télécharger la mise à jour et redémarrer dans la nouvelle version",
"downloading": "Mise à jour… {{pct}} %",
"restart": "Redémarrer pour mettre à jour",
"busy": "Attendez la fin du travail en cours, puis installez la mise à jour.",
"whats_new": "Quoi de neuf",
"failed": "La mise à jour a échoué",
"retry": "Réessayer",
"dismiss": "Rejeter",
"toast_available": "VoiceStudio {{version}} est disponible",
"toast_install": "Installer et redémarrer",
"toast_whats_new": "Nouveautés",
"toast_later": "Plus tard"
},
"archetypes": {
"featured": "En vedette",
"browse_all": "Parcourir tout",
"use_narration": "Narration et histoire",
"use_conversational": "Conversationnel",
"use_characters": "Personnages et animations",
"use_social": "Médias sociaux",
"use_entertainment": "Divertissement et télévision",
"use_advertisement": "Publicité",
"use_informative": "Informatif et éducatif",
"facet_gender": "Sexe",
"facet_age": "Âge",
"facet_pitch": "Emplacement",
"facet_accent": "Accent",
"facet_lang": "Langue",
"facet_whisper": "Chuchoter"
},
"support": {
"tab_support": "Assistance",
"tab_license": "Licence commerciale",
"toggle_label": "Support ou licence commerciale",
"other_ways": "Autres moyens d'aider",
"star_github": "Étoile sur GitHub",
"join_discord": "Rejoignez Discorde"
},
"updates": {
"tab": "Mises à jour",
"up_to_date": "À jour · v{{version}}",
"check_now": "Vérifiez maintenant",
"releases": "Versions",
"current": "actuelle",
"prerelease": "aperçu",
"loading": "Chargement des versions…",
"none": "Aucune version trouvée",
"load_error": "Impossible de charger les versions (hors ligne ?)",
"retry_load": "Réessayer"
},
"firstrun": {
"backend_stop_failed": "VoiceStudio na pas pu arrêter lancien backend en toute sécurité. Fermez toute autre fenêtre ou tout autre processus VoiceStudio, puis réessayez.",
"loading": "Préparation de la configuration…",
"title": "Configurer VoiceStudio",
"subtitle": "Rien n'est encore installé : vérifiez où tout sera placé, puis lancez. Modifiable plus tard dans les Réglages.",
"language": "Langue",
"mode_title": "Mode d'installation",
"mode_installed": "Installé",
"mode_installed_desc": "Utilise les dossiers système standard. Recommandé pour la plupart des utilisateurs.",
"mode_portable": "Portable",
"mode_portable_desc": "Tout vit dans un dossier à côté de l'application — déplacez-le vers un autre disque ou une autre machine d'un bloc.",
"mode_portable_unavailable": "Indisponible : le dossier à côté de l'application n'est pas accessible en écriture.",
"storage_title": "Stockage",
"portable_folder": "Dossier portable",
"portable_folder_desc": "Environnement, modèles et vos données vocales — un seul dossier, entièrement déplaçable.",
"portable_moved": "Enregistré à côté de l'application sous forme de chemin relatif : déplacer l'application et ce dossier ensemble — même vers une autre machine ou lettre de lecteur — laisse l'installation fonctionnelle.",
"portable_moved_machine_bound": "Cet emplacement exact est mémorisé sur cette machine. Si l'application ou ce dossier est déplacé, ou si vous utilisez une autre machine, vous devrez à nouveau l'indiquer à l'application.",
"env_dir": "Environnement de l'application",
"env_dir_desc": "Runtime Python et bibliothèques d'IA.",
"data_dir": "Données vocales et projets",
"data_dir_desc": "Vos voix, doublages, sorties et la base de données des projets.",
"models_dir": "Cache des modèles",
"models_dir_desc": "Modèles d'IA téléchargés — la partie la plus volumineuse et la plus facile à déplacer.",
"needs": "requiert ~{{size}}",
"free": "{{size}} libres",
"checking": "vérification…",
"not_writable": "non inscriptible",
"change": "Modifier…",
"compute_title": "Calcul",
"compute_label": "GPU / accélérateur",
"compute_auto": "Auto (NVIDIA CUDA / Apple MPS / CPU)",
"compute_rocm": "GPU AMD (ROCm, Linux)",
"channel_label": "Canal de mise à jour",
"channel_stable": "Stable",
"channel_preview": "Préversion (dernier main)",
"network_title": "Réseau",
"region_label": "Région de téléchargement",
"mirrors_title": "Miroirs personnalisés (avancé)",
"mirror_pypi": "URL de l'index PyPI",
"mirror_hf": "Endpoint Hugging Face",
"mirror_python": "Miroir de téléchargement Python",
"insufficient_space": "Espace insuffisant : cette configuration nécessite ~{{need}} sur un même disque, seulement {{free}} disponibles. Choisissez un autre emplacement.",
"blocked_not_writable": "Un dossier choisi n'est pas inscriptible — choisissez un autre emplacement.",
"total_required": "Espace disque total : ~{{size}} (téléchargement unique au premier lancement)",
"start": "Démarrer l'installation",
"starting": "Démarrage…",
"compute_detected": "Détecté",
"compute_match": "correspond à cette machine",
"compute_auto_desc": "Choisit le meilleur backend de cette machine à l'exécution — CUDA sur NVIDIA, MPS sur Apple Silicon, sinon CPU.",
"compute_rocm_desc": "Installe les wheels ROCm de PyTorch pour les cartes AMD sous Linux. Laissez Auto en cas de doute.",
"channel_stable_desc": "Uniquement des versions testées — les mises à jour arrivent après validation par la communauté.",
"channel_preview_desc": "Builds continues du dernier main — nouveaux moteurs et correctifs en premier, quelques aspérités possibles.",
"installing_title": "Installation",
"activity_title": "Activité",
"stage_setup": "Configuration",
"stage_models": "Modèles et moteurs",
"chip_required": "requis",
"chip_optional": "optionnel",
"chip_engine": "moteur",
"lib_download": "Télécharger",
"lib_downloading": "téléchargement…",
"lib_use": "Utiliser",
"lib_active": "actif",
"lib_in_settings": "installer plus tard dans Réglages",
"lib_show_all": "Afficher {{count}} modèles optionnels",
"trust_line": "La confidentialité dabord : vos voix, enregistrements et projets ne quittent jamais cette machine — sans compte, sans traitement dans le cloud.",
"resume_note": "Les téléchargements interrompus reprennent automatiquement — fermer lapplication est sans risque.",
"eta_left": "~{{eta}} restantes",
"first_sound_text": "Bienvenue dans votre studio. Chaque mot que vous entendez vient d’être généré sur cette machine.",
"first_sound_done": "Cette voix ? Générée il y a quelques secondes, en local. Bienvenue.",
"hf_token_title": "Jeton Hugging Face (optionnel)",
"hf_token_hint": "Débloque les modèles restreints — p. ex. la diarisation pour le doublage multi-locuteurs (pyannote). Jeton de compte gratuit ; reste sur cette machine.",
"hf_token_save": "Enregistrer",
"hf_token_saving": "enregistrement…",
"hf_token_saved": "Jeton Hugging Face enregistré",
"hf_token_error": "Impossible denregistrer le jeton — réessayez ou configurez-le plus tard dans Réglages → Identifiants.",
"chip_recommended": "recommandé",
"chip_recommended_title": "Recommandé pour cette machine — optionnel",
"size_left": "{{size}} reste",
"hf_token_card_title": "Ajoutez un jeton Hugging Face gratuit pour des téléchargements plus rapides",
"hf_token_get": "Vous n'avez pas de jeton ? Obtenez-en un gratuitement →",
"hf_token_saved_fast": "Jeton Hugging Face enregistré les téléchargements sont désormais plus rapides",
"hf_token_inline_prompt": "Accélérez les téléchargements avec un jeton Hugging Face gratuit",
"hf_token_inline_ph": "Coller le jeton hf_… (facultatif)",
"hf_token_get_short": "Obtenez-en un gratuitement →",
"hf_token_active_using": "Jeton Hugging Face trouvé dans {{source}} — {{masked}}",
"hf_token_replace": "Remplacer le jeton…",
"hf_token_replace_warning": "Cela remplace le jeton enregistré pour cette application, sans révoquer lancien jeton."
},
"history": {
"dub_meta": "{{segments}} segments · {{duration}} s",
"dub_meta_zero": "{{count}} segment · {{duration}} s",
"dub_meta_one": "{{count}} segment · {{duration}} s",
"dub_meta_two": "{{count}} segments · {{duration}} s",
"dub_meta_few": "{{count}} segments · {{duration}} s",
"dub_meta_many": "{{count}} segments · {{duration}} s",
"dub_meta_other": "{{count}} segments · {{duration}} s",
"dub_title": "Historique des doublages",
"empty": "Rien ici pour l'instant — vos générations apparaîtront à droite.",
"empty_dub": "Vos doublages apparaîtront ici.",
"title": "Historique",
"star_take": "Étoiler — conserver cette prise",
"unstar_take": "Retirer l'étoile — autoriser le nettoyage",
"play_take": "Charger comme sortie active",
"filter_starred": "Étoilées",
"load_take_failed": "Impossible de charger cette prise : {{message}}",
"mode_clone": "Clonage",
"mode_synth": "Synthèse",
"generation_seconds": "{{duration}} s",
"expand_text": "Développer le texte",
"collapse_text": "Réduire le texte",
"seed": "Graine {{seed}}",
"load_config": "Charger les réglages",
"delete_confirm": "Supprimer cet élément de lhistorique ?"
},
"openapi": {
"title": "API VoiceStudio",
"loading": "Chargement de la spécification de lAPI…",
"unreachable_title": "Spécification du backend indisponible",
"unreachable_body": "Impossible datteindre la spécification OpenAPI du backend local à ladresse {{url}}. Vérifiez que le backend fonctionne, puis réessayez.",
"retry": "Réessayer",
"copy_url": "Copier lURL de la spécification",
"copy_url_aria": "Copier lURL /openapi.json",
"copied": "URL de la spécification copiée",
"copy_failed": "Échec de la copie — sélectionnez et copiez manuellement lURL ci-dessus.",
"open_raw": "Ouvrir la spécification brute",
"open_raw_aria": "Ouvrir le JSON OpenAPI brut dans le navigateur"
},
"recording": {
"cleaned_loaded": "Enregistrement nettoyé et chargé !",
"loaded_raw": "Enregistrement chargé (brut — débruitage indisponible)",
"too_short": "Enregistrement trop court",
"input_device": "Périphérique dentrée",
"default_input": "Entrée système par défaut",
"microphone_number": "Microphone {{number}}",
"channels": "Canaux",
"channels_auto": "Automatique",
"channels_mono": "Mono",
"channels_stereo": "Stéréo",
"input_level": "Niveau dentrée du microphone",
"input_detected": "Entrée détectée",
"no_input_detected": "Aucune entrée détectée"
},
"pronunciation": {
"title": "Dictionnaire de prononciation",
"help": "Apprenez au moteur à prononcer des mots délicats. Chaque entrée remplace un mot par une réorthographe avant synthèse, elle s'applique donc sur tous les moteurs. Étendez une entrée à une seule langue ou laissez-la globale. En ligne, [[word|respelling]] remplace le dictionnaire une fois.",
"term": "Durée",
"term_placeholder": "mot ou expression (par exemple GIF)",
"replacement": "Remplacement",
"replacement_placeholder": "réorthographe (par exemple jiff)",
"scope": "Portée",
"global": "Mondial",
"type": "Tapez",
"type_respelling": "Répellation",
"type_ipa": "API",
"type_cmu": "CMU",
"enabled": "Activé",
"add": "Ajouter une entrée",
"remove": "Supprimer {{term}}",
"empty": "Aucune entrée pour l'instant. Ajoutez-en une ci-dessous pour corriger un mot mal prononcé.",
"test_label": "Tester une phrase",
"test_placeholder": "Tapez une phrase pour prévisualiser la substitution…",
"test_result": "Sera prononcé comme :",
"test_nochange": "Aucune entrée ne correspond prononcée comme écrite.",
"test_inert": "Enregistré mais pas encore appliqué sur ce moteur : {{terms}}. Les entrées IPA et CMU sont enregistrées et validées, mais seul le respelling modifie le texte prononcé pour linstant.",
"not_applied_badge": "Pas encore appliqué",
"load_error": "Impossible de charger le dictionnaire de prononciation.",
"save_error": "Impossible d'enregistrer cette entrée.",
"lang_label": "Code de langue (par exemple en, de) ou laissez vide pour Global",
"enable_entry": "Activer {{term}}",
"lang_placeholder": "en, de… (vide = Mondial)",
"test_language": "Langue de l'aperçu",
"test_global_hint": "Aperçu avec les entrées globales uniquement — choisissez une langue pour inclure les entrées propres à une langue.",
"test_error": "Aperçu indisponible — le backend n'a pas répondu.",
"backup_title": "Sauvegarde et restauration",
"backup_hint": "Téléchargez le dictionnaire au format JSON ou importez des entrées d'un export précédent.",
"export": "Exporter JSON",
"import": "Importer JSON",
"import_replace_prompt": "Remplacer les {{count}} entrées existantes par le fichier importé ? Choisissez Non pour ajouter les entrées importées aux entrées existantes.",
"import_done": "{{count}} entrées importées.",
"import_error": "Impossible d'importer ce fichier — JSON d'un export de prononciation attendu.",
"export_error": "Impossible d'exporter le dictionnaire."
},
"audiobook": {
"cast": "Distribution",
"cast_hint": "Associez une voix à chaque [voice:NAME] de votre script.",
"cast_empty": "Ajoutez des balises [voice:NAME] à votre script pour attribuer plusieurs voix.",
"cast_uses_default": "utilise la voix par défaut",
"markup_toolbar": "Insérer un balisage",
"insert_pause": "Pause",
"insert_voice": "Voix",
"insert_slow": "Lent",
"insert_fast": "Rapide",
"insert_emphasis": "Emphase",
"insert_spell": "Épeler",
"insert_reactions": "Réactions",
"stats": "{{chapters}} chapitres · {{words}} mots · {{runtime}} de durée est.",
"warnings_title": "Avant de créer",
"warn_unknown_voice": "Voix inconnue « {{name}} » — la voix par défaut sera utilisée",
"warn_empty_chapter": "Le chapitre « {{title}} » ne contient aucun texte parlé",
"warn_unknown_tag": "Balise non reconnue {{tag}} — elle sera lue à voix haute",
"untitled": "Livre audio sans titre",
"dismiss": "Ignorer",
"output": "Sortie",
"title": "Livre audio",
"tab_script": "Script",
"tab_voices": "Voix",
"tab_book": "Livre",
"subtitle": "Écrivez ou importez votre histoire, attribuez chaque voix, puis exportez un livre audio soigné avec de vrais chapitres.",
"script": "Scénario",
"script_placeholder": "# Chapitre un\nIl était une fois… [pause 500ms] la fin.\n\n# Chapitre deux\n[voix:narrateur] Et ainsi de suite.",
"default_voice": "Voix par défaut",
"engine_default": "Moteur par défaut",
"preview_plan": "Aperçu du plan",
"stop": "Arrêter",
"stopped_note": "Arrêté — les chapitres terminés sont en cache ; relancez Créer pour reprendre.",
"recovery_title": "Livre audio interrompu",
"recovery_progress": "{{done}} chapitres sur {{total}} sont mis en cache",
"recovery_hint": "Reprendre réutilise les chapitres terminés et ne synthétise que ce qui reste.",
"resume": "Reprendre",
"open_chapter_cache": "Ouvrir le cache des chapitres",
"cache_location_hint": "Cache audio des chapitres : {{cachePath}} · Manifeste de reprise : {{manifestPath}}",
"resume_failed": "Impossible de reprendre le livre audio : {{message}}",
"open_cache_failed": "Impossible d'ouvrir le cache des chapitres",
"progress_summary": "Synthèse de {{current}} sur {{total}} chapitres",
"eta": "~{{time}} restant",
"chapter_n": "Chapitre {{n}}",
"cached_tag": "en cache",
"failed_tag": "échoué",
"empty_hint": "Rien à narrer pour l'instant — utilisez Charger un exemple pour essayer un script de démo.",
"create": "Créer un livre audio",
"plan_heading": "Plan — {{count}} chapitre(s)",
"chapter_meta": "{{spans}} étendue(s) · {{chars}} caractères",
"synthesizing": "Synthèse du chapitre {{current}} de {{total}} {{title}}",
"assembling": "Assemblage du livre audio…",
"ready": "Livre audio prêt",
"download": "Télécharger",
"lyrics": "Suivez le texte",
"format": "Formater",
"format_m4b": "M4B (chapitres)",
"format_mp3": "MP3",
"loudness": "Volume sonore",
"loudness_off": "Volume : désactivé",
"loudness_acx": "Normaliser (ACX)",
"loudness_podcast": "Normaliser (podcast)",
"details": "Couverture et détails",
"cover": "Couverture",
"cover_add": "Ajouter une couverture",
"cover_remove": "Retirer le couvercle",
"meta_title": "Titre",
"meta_author": "Auteur",
"meta_narrator": "Narrateur",
"meta_year": "Année",
"meta_genre": "Genre",
"meta_description": "Descriptif",
"preview_chapter": "Chapitre d'aperçu : {{title}}",
"cached_note": "Réutilisation de {{count}} chapitre(s) déjà rendu(s).",
"failed_note": "Échec de {{count}} chapitre(s) : cliquez à nouveau sur Créer pour réessayer uniquement ceux-là.",
"import": "Importer",
"import_failed": "Échec de l'importation : {{message}}",
"load_sample": "Charger l'exemple",
"load_sample_hint": "Remplissez l'éditeur avec un script de démonstration montrant chapitres, voix par personnage, pauses et balises expressives — à essayer avant votre vrai travail",
"load_sample_confirm": "Remplacer le script actuel par l'exemple ?",
"lexicon": "Prononciation",
"lex_word": "Mot",
"lex_say": "Dites-le comme…",
"lex_add": "Ajouter un mot",
"lex_remove": "Supprimer",
"markup_help": "Référence de balisage",
"markup_hint": "# Titre du chapitre · [voice:NAME] changer de voix · [pause 500ms] / [pause 1s] · [slow]…[/slow] · [fast]…[/fast] · [emphasis]…[/emphasis] · [spell]…[/spell] · Réactions (VoiceStudio): [laughter] [sigh] [confirmation-en] [question-en] [question-ah] [question-oh] [question-ei] [question-yi] [surprise-ah] [surprise-oh] [surprise-wa] [surprise-yo] [dissatisfaction-hnn]",
"language": "Langue",
"expressive": "Remplacements de production",
"reset": "Réinitialiser",
"seed": "Graine",
"seed_ph": "Auto",
"vary_repeats": "Varier les lignes répétées",
"vary_repeats_help": "Donnez des prises distinctes aux lignes identiques au lieu de réutiliser un enregistrement.",
"emotion_help": "Émotion graduée — appliquée par le moteur IndexTTS2 uniquement.",
"emotion_text": "Description de l'émotion",
"emotion_text_ph": "p. ex. sonne épuisé et triste",
"emotion_alpha": "Force de l'émotion"
},
"voicePanel": {
"title": "Voix",
"subtitle": "Dictée parole-texte locale avec des modèles intégrés à l'appareil.",
"enable_label": "Activer la dictée vocale",
"enable_sub": "Appuyez sur {{shortcut}} pour dicter du texte dans n'importe quel volet ciblé.",
"mode_label": "Mode dictée",
"mode_sub": "Basculer : appuyez une fois pour démarrer, une nouvelle fois pour arrêter. Maintenir : dicter pendant que la touche est maintenue.",
"mode_toggle": "Basculer",
"mode_hold": "Tenir",
"model_label": "Modèle de parole",
"model_sub": "Choisissez le modèle sur l'appareil utilisé pour la dictée.",
"badge_offline": "hors ligne",
"badge_streaming": "diffusion en continu",
"badge_recommended": "recommandé",
"download_model": "Télécharger le modèle",
"delete_model": "Supprimer le modèle",
"downloading": "Téléchargement…",
"downloading_pct": "Téléchargement de {{pct}}%",
"delete_confirm": "Supprimer le modèle vocal \"{{label}}\" ? Vous pourrez le retélécharger plus tard.",
"delete_confirm_title": "Supprimer le modèle vocal",
"engine_unavailable": "Le moteur de dictée en direct n'est pas disponible sur cette installation. La dictée revient au chemin de transcription standard.",
"model_desc": {
"sherpa-parakeet-tdt-v3": "Dictée rapide et précise dans 25 langues européennes.",
"sherpa-parakeet-tdt-v2": "Dictée rapide et précise en anglais uniquement.",
"sherpa-zipformer-bilingual-zh-en": "Streaming chinois + anglais avec partiels en direct.",
"sherpa-paraformer-bilingual-zh-en": "Streaming chinois + anglais, modèle compact.",
"sherpa-zipformer-en-20m": "Petit modèle anglais de streaming latence la plus faible.",
"sherpa-zipformer-zh-14m": "Petit modèle chinois de streaming latence la plus faible.",
"sherpa-whisper-tiny": "Recommandé. Dictée multilingue dans plus de 90 langues avec détection automatique de la langue."
}
},
"profiles": {
"need_name_audio": "Besoin d'un nom et d'une référence audio",
"synthesizing_preview": "Aperçu de la synthèse pour {{name}}...",
"synthesizing_segment": "Segment de synthèse...",
"preview_ready": "Aperçu prêt !",
"playback_failed": "La lecture a échoué",
"preview_failed": "Échec de l'aperçu : {{message}}",
"saved": "Voix enregistrée dans les profils !",
"save_failed": "Échec de l'enregistrement du profil vocal",
"locked": "Voix verrouillée ! Lidentité est désormais cohérente à travers toutes les générations.",
"lock_failed": "Échec du verrouillage du profil",
"unlocked": "Voix déverrouillée. Les générations varieront encore.",
"unlock_failed": "Échec du déverrouillage du profil"
},
"transcriptionPicker": {
"title": "Importer à partir d'une transcription",
"search_placeholder": "Rechercher des transcriptions…",
"empty": "Aucune transcription pour l'instant. Enregistrez-en un dans longlet Transcriptions.",
"empty_search": "Aucune transcription ne correspond à votre recherche."
},
"waveform": {
"source_missing": "Support source manquant : ce fichier a peut-être été déplacé ou supprimé. Re-téléchargez la vidéo pour continuer.",
"load_failed": "Impossible de charger l'audio de ce fichier",
"controls": "Commandes de lecture",
"restart": "Recommencer la lecture",
"shortcuts": "J/K/L : reculer, lire/pause, avancer",
"zoom": "Niveau de zoom",
"timeline": "Chronologie de la forme donde audio",
"loading": "Chargement de la forme donde…"
},
"tts": {
"routingFallback": "Fonctionnant sur CPU : ce moteur n'a pas de chemin GPU sur votre machine, la génération sera donc plus lente. {{reason}}",
"routingCaveat": "Utilisation du GPU, mais : {{reason}}",
"droppedChunks_one": "Attention : {{count}} partie de votre texte n'a produit aucun audio, elle manque donc dans cette prise. Relancez la génération — une autre graine suffit généralement.",
"droppedChunks_other": "Attention : {{count}} parties de votre texte n'ont produit aucun audio, elles manquent donc dans cette prise. Relancez la génération — une autre graine suffit généralement.",
"droppedChunksWithText_one": "Attention : {{count}} partie de votre texte n'a produit aucun audio et manque dans cette prise — « {{text}} ». Relancez la génération ; une autre graine suffit généralement.",
"droppedChunksWithText_other": "Attention : {{count}} parties de votre texte n'ont produit aucun audio et manquent dans cette prise — « {{text}} ». Relancez la génération ; une autre graine suffit généralement.",
"streamingOffRemote": "L'aperçu progressif est désactivé pendant que {{label}} effectue le rendu — la prise finale sera lue dès son arrivée."
},
"voiceSelector": {
"engineDefault": "Moteur par défaut",
"clone": "Voix clonées",
"designed": "Voix conçues",
"presets": "Préréglages",
"fromVideo": "À partir de la vidéo",
"missingVoice": "Voix introuvable (re-sélectionner)",
"preview": "Aperçu de la voix",
"openGallery": "Ouvrir dans la galerie vocale",
"createVoice": "Créer une nouvelle voix",
"gallery": "Galerie",
"addingVoice": "Ajout de la voix…",
"addVoiceFailed": "Impossible d'ajouter cette voix"
},
"remote_gate": {
"title": "Saisir le code PIN d'accès",
"body": "Cette instance VoiceStudio est partagée sur le réseau. Entrez le code PIN affiché sur l'hôte.",
"label": "Accéder au code PIN",
"connect": "Se connecter"
},
"remote_apikey_gate": {
"title": "Enter API key",
"body": "This backend requires an API key. Enter the value of OMNIVOICE_API_KEY set on the server.",
"label": "API key",
"connect": "Connect"
},
"contact": {
"hero_title": "Contactez-nous",
"hero_desc": "Questions, bugs, licences ou simplement pour me dire bonjour : voici comment me joindre.",
"email": "Courriel",
"email_desc": "Licences, partenariats ou tout ce qui est privé.",
"website": "Site Web",
"website_desc": "En savoir plus sur le projet et le créateur.",
"follow_title": "Suivez-nous sur X",
"follow_desc": "Notes de version, nouveaux moteurs et un aperçu occasionnel de ce qui arrive. Pratique si vous préférez ne pas rester dans un serveur de discussion.",
"follow_cta": "Suivre sur X"
},
"permissions": {
"title": "Autorisations",
"desc": "VoiceStudio s'exécute entièrement sur votre appareil — ces autorisations système ne servent qu'aux fonctions listées ici, et l'audio ne quitte jamais votre machine.",
"microphone": "Microphone",
"microphone_why": "Utilisé pour la dictée et l'enregistrement vocal. L'audio est traité localement.",
"accessibility": "Accessibilité",
"accessibility_why": "Permet à la dictée de coller ou de saisir le texte dans d'autres applications.",
"status_granted": "Accordée",
"status_denied": "Refusée",
"status_prompt": "Pas encore demandée",
"status_unknown": "Inconnue",
"open_settings": "Ouvrir les réglages",
"web_note": "L'état des autorisations n'est lisible que dans l'application de bureau — dans le navigateur, l'accès au micro est géré par le navigateur lui-même."
},
"asr_missing": {
"message": "Aucun modèle de reconnaissance vocale n'est installé — cette fonction en a besoin pour transcrire l'audio.",
"download": "Télécharger {{label}} ({{size}} Go)",
"started": "Téléchargement de {{label}} — suivez la progression dans Réglages → Modèles, puis réessayez.",
"install_failed": "Impossible de démarrer le téléchargement : {{message}}",
"choose": "Choisissez le modèle adapté à votre usage : précision, langues et taille de téléchargement varient. Les téléchargements ne démarrent qu'au clic.",
"group_offline": "Meilleure précision — transcrit une fois que vous avez fini de parler",
"group_streaming": "Latence minimale — texte en direct pendant que vous parlez",
"use": "Utiliser {{label}}",
"installed": "Installé"
},
"model_missing": {
"message": "Ce modèle nest pas téléchargé sur {{target}}.",
"download": "Télécharger le modèle",
"download_size": "Télécharger ({{size}})",
"started": "Téléchargement sur {{target}} — relancez Générer une fois terminé.",
"failed": "Impossible de lancer le téléchargement : {{message}}",
"manual_worker": "Installez ce moteur directement sur {{target}}."
},
"backend_start_failure": {
"notice": "Le backend d'VoiceStudio n'a pas pu démarrer — rien ne fonctionnera tant qu'il ne démarre pas.",
"view": "Voir pourquoi",
"title": "Le backend n'a pas pu démarrer",
"intro": "L'application a enregistré ceci en tentant de démarrer le backend. Joindre cette sortie à un rapport nous aide à corriger le problème.",
"output_title": "Ce que l'application a signalé",
"retry_hint": "Essayez « Réessayer » dans Paramètres → Journaux → Backend. En cas de nouvel échec, « Nettoyer et réessayer » reconstruit l'environnement de zéro."
},
"crash": {
"notice_unclean": "La session précédente s'est terminée sans arrêt propre il y a {{ago}}. C'est souvent bénin : mise en veille, fermeture forcée ou arrêt d'une VM/d'un conteneur.",
"details_intro_unclean": "Le marqueur d'arrêt de l'exécution précédente n'a jamais été effacé, il y a {{ago}}. VoiceStudio ne peut pas savoir s'il s'agit d'un plantage ou d'une simple interruption — mise en veille, fermeture forcée ou arrêt d'une VM/d'un conteneur laissent la même trace. Si tout fonctionne maintenant, il n'y a rien à faire.",
"report_needs_log": "Aucune sortie d'erreur n'a été capturée pour cet événement ; un rapport en un clic serait vide. Si quelque chose ne va vraiment pas, joignez les dernières lignes de Paramètres → Journaux → Backend à un nouveau ticket."
},
"gpu": {
"local": "Local",
"picker": "Où les tâches s'exécutent",
"tasks": "tâches",
"coverage": "{{ops}} uniquement",
"opLocal": "Local — {{op}} ne s'exécute pas encore à distance",
"dictationLocal": "La dictée s'exécute toujours sur cette machine",
"ops": {
"tts": "TTS",
"clone": "clonage vocal",
"dub": "doublage",
"audiobook": "rendu de livre audio",
"longform": "narration d'histoires",
"asr": "transcription"
}
},
"compute": {
"add_machine": "Ajouter une machine",
"manage": "Paramètres des workers distants",
"off_hint": "Tout s'exécute sur cette machine. Activez Distant pour en utiliser une autre.",
"quick_settings": "Calcul — où les tâches s'exécutent",
"remote": "Distant",
"title": "Où les tâches s'exécutent",
"token_once": "Scannez-le ou collez-le sur l'autre machine. Affiché une seule fois."
},
"voices": {
"active": "Voix active",
"active_clone_recipe": "Clonée à partir de votre extrait de référence",
"cta_clone": "Déposez un extrait de 3 s dans Voix ← pour en cloner une",
"cta_design": "Décrivez-en une dans Voix ← pour la concevoir",
"new": "Nouvelle voix",
"none_selected": "Aucune voix sélectionnée — décrivez-en une, déposez un audio ou choisissez ci-dessous."
},
"convert": {
"source_kicker": "Clip source",
"drop_audio": "Déposez le clip à convertir — ou cliquez. WAV, MP3, M4A…",
"target_voice": "Voix cible",
"pick_voice": "Choisir un profil de voix…",
"match_duration": "Aligner sur la durée source",
"match_duration_hint": "Étire le résultat dans le temps (hauteur préservée) pour approcher la durée du clip source.",
"convert": "Convertir",
"converting": "Conversion…",
"transcript": "Ce qui a été entendu",
"result_kicker": "Prise convertie",
"need_source_and_voice": "Ajoutez d'abord un clip source et choisissez une voix cible."
},
"player": {
"pause": "Mettre en pause",
"play": "Lire"
}
}