feat: sync translations

This commit is contained in:
Xiaohan-Tian
2026-06-02 23:44:05 -07:00
parent 528e4ca7f9
commit 414565ecc9
2 changed files with 208 additions and 108 deletions
+204 -108
View File
@@ -5,17 +5,21 @@ export const frFrMessages: TranslationMessages = {
...enUsMessages, ...enUsMessages,
'app.loading': 'Chargement...', 'app.loading': 'Chargement...',
'assistant.displayName': 'Assistant musical K.G.Studio', 'assistant.displayName': 'Assistant musical K.G.Studio',
'assistant.welcomeFallback': 'Bienvenue dans lassistant musical K.G.Studio.', 'assistant.welcomeFallback': 'Bienvenue dans l\'assistant musical K.G.Studio.',
'chatbox.todo.title': 'Liste des tâches',
'chatbox.todo.ariaLabel': 'Liste des tâches de l\'agent',
'chatbox.todo.count': '{completed}/{total} terminée(s)',
'chatbox.todo.active': 'En cours : {task}',
'mainContent.createTrack': 'Créer une piste', 'mainContent.createTrack': 'Créer une piste',
'mainContent.showGlobalTracks': 'Afficher les pistes globales', 'mainContent.showGlobalTracks': 'Afficher les pistes globales',
'status.chordGuideCandidate': 'Suggestion du guide daccords : {name} - {notes} - {note}', 'status.chordGuideCandidate': 'Suggestion du guide d\'accords : {name} - {notes} - {note}',
'settings.sidebar.title': 'Réglages', 'settings.sidebar.title': 'Réglages',
'settings.sidebar.close': 'Fermer les réglages', 'settings.sidebar.close': 'Fermer les réglages',
'settings.sidebar.general': 'Général', 'settings.sidebar.general': 'Général',
'settings.sidebar.audioIo': 'Entrées/Sorties audio', 'settings.sidebar.audioIo': 'Entrées/Sorties audio',
'settings.sidebar.behavior': 'Comportement', 'settings.sidebar.behavior': 'Comportement',
'settings.sidebar.templates': 'Modèles', 'settings.sidebar.templates': 'Modèles',
'settings.sidebar.chordGuide': 'Guide daccords', 'settings.sidebar.chordGuide': 'Guide d\'accords',
'settings.general.title': 'Général', 'settings.general.title': 'Général',
'settings.general.language.label': 'Langue', 'settings.general.language.label': 'Langue',
'settings.general.language.help': 'Le mode Auto utilise la langue du système.', 'settings.general.language.help': 'Le mode Auto utilise la langue du système.',
@@ -45,17 +49,18 @@ export const frFrMessages: TranslationMessages = {
'settings.general.uvr5.downloadUrl': 'URL de téléchargement UVR-MDX-NET-Inst_HQ_3', 'settings.general.uvr5.downloadUrl': 'URL de téléchargement UVR-MDX-NET-Inst_HQ_3',
'settings.general.htdemucs.downloadUrl': 'URL de téléchargement htdemucs_4s', 'settings.general.htdemucs.downloadUrl': 'URL de téléchargement htdemucs_4s',
'settings.general.modelUrl.help': 'Modifier cette URL peut empêcher le téléchargement ou pointer vers un fichier modèle incompatible.', 'settings.general.modelUrl.help': 'Modifier cette URL peut empêcher le téléchargement ou pointer vers un fichier modèle incompatible.',
'settings.general.openai.section': 'OpenAI',
'settings.general.openai.key': 'Clé', 'settings.general.openai.key': 'Clé',
'settings.general.openai.keyPlaceholder': 'Saisissez votre clé API OpenAI', 'settings.general.openai.keyPlaceholder': 'Saisissez votre clé API OpenAI',
'settings.general.openai.model': 'Modèle', 'settings.general.openai.model': 'Modèle',
'settings.general.openai.flexMode': 'Mode Flex', 'settings.general.openai.flexMode': 'Mode Flex',
'settings.general.openai.flexHelp': 'Le mode Flex utilise le palier de service flexible dOpenAI. Avantages : économies possibles et meilleur débit pendant les périodes chargées. Inconvénients : latence variable, mise en file dattente ou baisse de priorité possibles. Sapplique uniquement au fournisseur OpenAI ; sans effet pour les serveurs compatibles OpenAI.', 'settings.general.openai.flexHelp': 'Le mode Flex utilise le palier de service flexible d\'OpenAI. Avantages : économies possibles et meilleur débit pendant les périodes chargées. Inconvénients : latence variable, mise en file d\'attente ou baisse de priorité possibles. S\'applique uniquement au fournisseur OpenAI ; sans effet pour les serveurs compatibles OpenAI.',
'settings.general.keys.persisted': 'Les clés sont conservées localement (IndexedDB du navigateur).', 'settings.general.keys.persisted': 'Les clés sont conservées localement (IndexedDB du navigateur).',
'settings.general.keys.sessionOnly': 'Par sécurité, les clés ne sont pas conservées sur les hôtes non locaux et restent uniquement en mémoire pour cette session.', 'settings.general.keys.sessionOnly': 'Par sécurité, les clés ne sont pas conservées sur les hôtes non locaux et restent uniquement en mémoire pour cette session.',
'settings.general.claudeOpenRouter.section': 'Anthropic Claude (via OpenRouter)', 'settings.general.claudeOpenRouter.section': 'Anthropic Claude (via OpenRouter)',
'settings.general.claudeOpenRouter.keyPlaceholder': 'Saisissez votre clé API Claude', 'settings.general.claudeOpenRouter.keyPlaceholder': 'Saisissez votre clé API Claude',
'settings.general.baseUrl': 'URL de base', 'settings.general.baseUrl': 'URL de base',
'settings.general.claudeOpenRouter.baseUrlHelp': 'Il sagit de lURL de base de lAPI OpenRouter. Ne la modifiez pas sauf si vous savez précisément ce que vous faites.', 'settings.general.claudeOpenRouter.baseUrlHelp': 'Il s\'agit de l\'URL de base de l\'API OpenRouter. Ne la modifiez pas sauf si vous savez précisément ce que vous faites.',
'settings.general.openaiCompatible.section': 'Serveur compatible OpenAI', 'settings.general.openaiCompatible.section': 'Serveur compatible OpenAI',
'settings.general.openaiCompatible.keyPlaceholder': 'Saisissez votre clé API', 'settings.general.openaiCompatible.keyPlaceholder': 'Saisissez votre clé API',
'settings.general.openaiCompatible.baseUrlPlaceholder': 'ex. https://openrouter.ai/api/v1', 'settings.general.openaiCompatible.baseUrlPlaceholder': 'ex. https://openrouter.ai/api/v1',
@@ -67,75 +72,75 @@ export const frFrMessages: TranslationMessages = {
'settings.general.soundfont.baseUrlHelp': 'Une source de soundfont incompatible peut provoquer des timbres incorrects ou empêcher certains instruments de jouer.', 'settings.general.soundfont.baseUrlHelp': 'Une source de soundfont incompatible peut provoquer des timbres incorrects ou empêcher certains instruments de jouer.',
'settings.general.kgone.section': 'Réglages K.G.One', 'settings.general.kgone.section': 'Réglages K.G.One',
'settings.general.kgone.managed': 'La configuration K.G.One est gérée par le serveur (kgone-server.json). Ces réglages sont en lecture seule.', 'settings.general.kgone.managed': 'La configuration K.G.One est gérée par le serveur (kgone-server.json). Ces réglages sont en lecture seule.',
'settings.general.kgone.enabled': 'Activer lintégration K.G.One', 'settings.general.kgone.enabled': 'Activer l\'intégration K.G.One',
'settings.general.kgone.disabled': 'Désactivé', 'settings.general.kgone.disabled': 'Désactivé',
'settings.general.kgone.enabledOption': 'Activé', 'settings.general.kgone.enabledOption': 'Activé',
'settings.general.kgone.serverBaseUrl': 'URL de base du serveur', 'settings.general.kgone.serverBaseUrl': 'URL de base du serveur',
'settings.general.kgone.serverBaseUrlHelp': 'URL de base dun serveur K.G.One Music Studio en cours dexécution. Utilisée pour la génération de morceau complet, de clip et la séparation de stems.', 'settings.general.kgone.serverBaseUrlHelp': 'URL de base d\'un serveur K.G.One Music Studio en cours d\'exécution. Utilisée pour la génération de morceau complet, de clip et la séparation de stems.',
'settings.audioIo.title': 'Entrées/Sorties audio', 'settings.audioIo.title': 'Entrées/Sorties audio',
'settings.audioIo.deviceRouting': 'Routage des appareils', 'settings.audioIo.deviceRouting': 'Routage des appareils',
'settings.audioIo.refresh': 'Rafraîchir la liste des appareils', 'settings.audioIo.refresh': 'Rafraîchir la liste des appareils',
'settings.audioIo.refreshing': 'Rafraîchissement…', 'settings.audioIo.refreshing': 'Rafraîchissement…',
'settings.audioIo.description': 'Choisissez les appareils que KGStudio doit utiliser pour lenregistrement et la lecture. Les changements dentrée sappliquent à la prochaine session denregistrement. Les changements de sortie demandent un rechargement de la page.', 'settings.audioIo.description': 'Choisissez les appareils que KGStudio doit utiliser pour l\'enregistrement et la lecture. Les changements d\'entrée s\'appliquent à la prochaine session d\'enregistrement. Les changements de sortie demandent un rechargement de la page.',
'settings.audioIo.inputDevice': 'Appareil dentrée audio', 'settings.audioIo.inputDevice': 'Appareil d\'entrée audio',
'settings.audioIo.outputDevice': 'Appareil de sortie audio', 'settings.audioIo.outputDevice': 'Appareil de sortie audio',
'settings.audioIo.inputHelp': 'Les changements sappliquent au prochain enregistrement audio. Si lappareil choisi est retiré, KGStudio reviendra à lappareil système par défaut.', 'settings.audioIo.inputHelp': 'Les changements s\'appliquent au prochain enregistrement audio. Si l\'appareil choisi est retiré, KGStudio reviendra à l\'appareil système par défaut.',
'settings.audioIo.outputHelp': 'Les changements de sortie demandent un rechargement de la page. La prise en charge du routage vers une sortie non par défaut est limitée dans les navigateurs, donc KGStudio continuera à utiliser la sortie système par défaut lorsquelle nest pas prise en charge.', 'settings.audioIo.outputHelp': 'Les changements de sortie demandent un rechargement de la page. La prise en charge du routage vers une sortie non par défaut est limitée dans les navigateurs, donc KGStudio continuera à utiliser la sortie système par défaut lorsqu\'elle n\'est pas prise en charge.',
'settings.audioIo.outputSinkUnsupported': 'Ce navigateur nexpose pas de bascule fiable en direct de la sortie Web Audio. La sélection dune sortie non par défaut reste un effort au mieux et peut finalement rester sur la sortie système par défaut.', 'settings.audioIo.outputSinkUnsupported': 'Ce navigateur n\'expose pas de bascule fiable en direct de la sortie Web Audio. La sélection d\'une sortie non par défaut reste un effort au mieux et peut finalement rester sur la sortie système par défaut.',
'settings.audioIo.chooseOutputDevice': 'Choisir lappareil de sortie…', 'settings.audioIo.chooseOutputDevice': 'Choisir l\'appareil de sortie…',
'settings.audioIo.previousSelectedInput': 'Entrée précédemment sélectionnée (autorisation requise pour vérification)', 'settings.audioIo.previousSelectedInput': 'Entrée précédemment sélectionnée (autorisation requise pour vérification)',
'settings.audioIo.previousSelectedOutput': 'Sortie précédemment sélectionnée (autorisation requise pour vérification)', 'settings.audioIo.previousSelectedOutput': 'Sortie précédemment sélectionnée (autorisation requise pour vérification)',
'settings.audioIo.status.inputUnavailable': 'Lappareil dentrée audio précédemment sélectionné nest pas disponible ; utilisation de lappareil système par défaut.', 'settings.audioIo.status.inputUnavailable': 'L\'appareil d\'entrée audio précédemment sélectionné n\'est pas disponible ; utilisation de l\'appareil système par défaut.',
'settings.audioIo.status.outputUnavailable': 'Lappareil de sortie audio précédemment sélectionné nest pas disponible ; utilisation de lappareil système par défaut.', 'settings.audioIo.status.outputUnavailable': 'L\'appareil de sortie audio précédemment sélectionné n\'est pas disponible ; utilisation de l\'appareil système par défaut.',
'settings.audioIo.status.refreshed': 'La liste des appareils audio a été rafraîchie.', 'settings.audioIo.status.refreshed': 'La liste des appareils audio a été rafraîchie.',
'settings.audioIo.status.readFailed': 'Impossible de lire les appareils audio depuis le navigateur.', 'settings.audioIo.status.readFailed': 'Impossible de lire les appareils audio depuis le navigateur.',
'settings.audioIo.status.inputDefaultNextSession': 'Lentrée audio utilisera lappareil système par défaut lors de la prochaine session denregistrement.', 'settings.audioIo.status.inputDefaultNextSession': 'L\'entrée audio utilisera l\'appareil système par défaut lors de la prochaine session d\'enregistrement.',
'settings.audioIo.status.inputChangedNextSession': 'Lentrée audio changera lors de la prochaine session denregistrement.', 'settings.audioIo.status.inputChangedNextSession': 'L\'entrée audio changera lors de la prochaine session d\'enregistrement.',
'settings.audioIo.status.outputDefaultAfterRefresh': 'La sortie audio utilisera lappareil système par défaut après rechargement.', 'settings.audioIo.status.outputDefaultAfterRefresh': 'La sortie audio utilisera l\'appareil système par défaut après rechargement.',
'settings.audioIo.status.outputSavedRefreshRequired': 'Lappareil de sortie audio a été enregistré. Rechargez la page pour lappliquer.', 'settings.audioIo.status.outputSavedRefreshRequired': 'L\'appareil de sortie audio a été enregistré. Rechargez la page pour l\'appliquer.',
'settings.audioIo.status.outputPromptUnsupported': 'Ce navigateur ne prend pas en charge linvite de sélection dun appareil de sortie audio.', 'settings.audioIo.status.outputPromptUnsupported': 'Ce navigateur ne prend pas en charge l\'invite de sélection d\'un appareil de sortie audio.',
'settings.audioIo.status.outputSelectedRefreshRequired': 'Appareil de sortie sélectionné. Rechargez la page pour lappliquer.', 'settings.audioIo.status.outputSelectedRefreshRequired': 'Appareil de sortie sélectionné. Rechargez la page pour l\'appliquer.',
'settings.audioIo.status.outputSelectionDenied': 'Le navigateur na pas autorisé la sélection dune sortie non par défaut.', 'settings.audioIo.status.outputSelectionDenied': 'Le navigateur n\'a pas autorisé la sélection d\'une sortie non par défaut.',
'settings.behavior.title': 'Comportement', 'settings.behavior.title': 'Comportement',
'settings.behavior.editor': 'Éditeur', 'settings.behavior.editor': 'Éditeur',
'settings.behavior.playheadUpdateFrequency': 'Fréquence de mise à jour de la tête de lecture (fps)', 'settings.behavior.playheadUpdateFrequency': 'Fréquence de mise à jour de la tête de lecture (fps)',
'settings.behavior.playheadUpdateFrequencyHelp': 'Fréquence de mise à jour de lanimation de la tête de lecture pendant la lecture. Des valeurs plus élevées (60 fps) donnent une animation plus fluide mais utilisent plus de CPU. Des valeurs plus faibles (10 fps) sont plus efficaces. Les changements sappliquent immédiatement sans redémarrage.', 'settings.behavior.playheadUpdateFrequencyHelp': 'Fréquence de mise à jour de l\'animation de la tête de lecture pendant la lecture. Des valeurs plus élevées (60 fps) donnent une animation plus fluide mais utilisent plus de CPU. Des valeurs plus faibles (10 fps) sont plus efficaces. Les changements s\'appliquent immédiatement sans redémarrage.',
'settings.behavior.spectrogramHeightResolution': 'Résolution verticale du spectrogramme', 'settings.behavior.spectrogramHeightResolution': 'Résolution verticale du spectrogramme',
'settings.behavior.spectrogramHeightResolutionHelp': 'Contrôle le niveau de détail vertical du spectrogramme sur la plage de hauteurs visible. Des valeurs plus élevées accentuent les contours de hauteur mais consomment davantage de CPU et de mémoire lors du calcul du spectrogramme.', 'settings.behavior.spectrogramHeightResolutionHelp': 'Contrôle le niveau de détail vertical du spectrogramme sur la plage de hauteurs visible. Des valeurs plus élevées accentuent les contours de hauteur mais consomment davantage de CPU et de mémoire lors du calcul du spectrogramme.',
'settings.behavior.chatBox': 'Boîte de discussion', 'settings.behavior.chatBox': 'Boîte de discussion',
'settings.behavior.openAtStartup': 'Ouvrir au démarrage', 'settings.behavior.openAtStartup': 'Ouvrir au démarrage',
'settings.behavior.audio': 'Audio', 'settings.behavior.audio': 'Audio',
'settings.behavior.lookaheadTime': 'Temps danticipation (ms)', 'settings.behavior.lookaheadTime': 'Temps d\'anticipation (ms)',
'settings.behavior.lookaheadTimeHelp': 'Temps danticipation de planification audio (0-500 ms). Des valeurs plus faibles (10-20 ms) réduisent la latence dentrée MIDI mais peuvent provoquer des glitches audio sur les systèmes plus lents. Des valeurs plus élevées (100 ms et plus) améliorent la stabilité de lecture. Les changements sappliquent immédiatement sans redémarrage.', 'settings.behavior.lookaheadTimeHelp': 'Temps d\'anticipation de planification audio (0-500 ms). Des valeurs plus faibles (10-20 ms) réduisent la latence d\'entrée MIDI mais peuvent provoquer des glitches audio sur les systèmes plus lents. Des valeurs plus élevées (100 ms et plus) améliorent la stabilité de lecture. Les changements s\'appliquent immédiatement sans redémarrage.',
'settings.behavior.playbackDelay': 'Délai de lecture (ms)', 'settings.behavior.playbackDelay': 'Délai de lecture (ms)',
'settings.behavior.playbackDelayHelp': 'La lecture démarrera avec un léger délai après avoir appuyé sur le bouton de démarrage (0-500 ms). Augmenter cette valeur peut aider à stabiliser la lecture, surtout pendant les premiers ticks si la valeur danticipation est trop faible. Les changements sappliquent immédiatement sans redémarrage.', 'settings.behavior.playbackDelayHelp': 'La lecture démarrera avec un léger délai après avoir appuyé sur le bouton de démarrage (0-500 ms). Augmenter cette valeur peut aider à stabiliser la lecture, surtout pendant les premiers ticks si la valeur d\'anticipation est trop faible. Les changements s\'appliquent immédiatement sans redémarrage.',
'settings.behavior.midiAutomationInterpolation': 'Interpolation de lautomation MIDI', 'settings.behavior.midiAutomationInterpolation': 'Interpolation de l\'automation MIDI',
'settings.behavior.midiAutomationInterpolation.low': 'Économie (20 ms)', 'settings.behavior.midiAutomationInterpolation.low': 'Économie (20 ms)',
'settings.behavior.midiAutomationInterpolation.balanced': 'Équilibré (10 ms)', 'settings.behavior.midiAutomationInterpolation.balanced': 'Équilibré (10 ms)',
'settings.behavior.midiAutomationInterpolation.high': 'Haute qualité (5 ms)', 'settings.behavior.midiAutomationInterpolation.high': 'Haute qualité (5 ms)',
'settings.behavior.midiAutomationInterpolationHelp': 'Contrôle la densité de cuisson de lautomation MIDI pour la lecture et le bounce. Des intervalles plus courts sonnent plus fluides mais planifient davantage dévénements.', 'settings.behavior.midiAutomationInterpolationHelp': 'Contrôle la densité de cuisson de l\'automation MIDI pour la lecture et le bounce. Des intervalles plus courts sonnent plus fluides mais planifient davantage d\'événements.',
'settings.behavior.midiInputLatency': 'Latence dentrée MIDI (ms)', 'settings.behavior.midiInputLatency': 'Latence d\'entrée MIDI (ms)',
'settings.behavior.midiInputLatencyHelp': 'Correction temporelle pour lenregistrement MIDI (0-500 ms). Si les notes enregistrées apparaissent légèrement en retard par rapport à ce que vous vouliez jouer, augmentez cette valeur pour laligner sur la latence dentrée de votre appareil MIDI. La position de chaque note est reculée de cette valeur lors de la validation.', 'settings.behavior.midiInputLatencyHelp': 'Correction temporelle pour l\'enregistrement MIDI (0-500 ms). Si les notes enregistrées apparaissent légèrement en retard par rapport à ce que vous vouliez jouer, augmentez cette valeur pour l\'aligner sur la latence d\'entrée de votre appareil MIDI. La position de chaque note est reculée de cette valeur lors de la validation.',
'settings.behavior.bounceStartsFromBeat1': 'Le bounce démarre au temps 1', 'settings.behavior.bounceStartsFromBeat1': 'Le bounce démarre au temps 1',
'settings.behavior.bounceStartsFromBeat1Help': 'Oui inclut le silence initial entre le début du morceau et la première région rendue lors du bounce WAV/MP3. Non supprime ce silence initial et démarre le bounce à la première note rendue ou à la première région audio.', 'settings.behavior.bounceStartsFromBeat1Help': 'Oui inclut le silence initial entre le début du morceau et la première région rendue lors du bounce WAV/MP3. Non supprime ce silence initial et démarre le bounce à la première note rendue ou à la première région audio.',
'settings.behavior.captureAudioForScreenSharing': 'Capturer laudio pour le partage décran', 'settings.behavior.captureAudioForScreenSharing': 'Capturer l\'audio pour le partage d\'écran',
'settings.behavior.captureAudioForScreenSharingHelp': 'Redémarrez KGStudio (rechargez la page) pour appliquer ce réglage. Activez cette option lorsque laudio de KGStudio ne peut pas être capturé pendant le partage décran dans les appels vidéo (ex. Zoom, Teams). Cela crée un flux audio supplémentaire que les applications de capture décran peuvent détecter.', 'settings.behavior.captureAudioForScreenSharingHelp': 'Redémarrez KGStudio (rechargez la page) pour appliquer ce réglage. Activez cette option lorsque l\'audio de KGStudio ne peut pas être capturé pendant le partage d\'écran dans les appels vidéo (ex. Zoom, Teams). Cela crée un flux audio supplémentaire que les applications de capture d\'écran peuvent détecter.',
'settings.behavior.captureAudioForScreenSharingWarning': 'Lorsque vous partagez lécran dans Zoom, vérifiez bien que loption "Share Sound" est activée.', 'settings.behavior.captureAudioForScreenSharingWarning': 'Lorsque vous partagez l\'écran dans Zoom, vérifiez bien que l\'option "Share Sound" est activée.',
'settings.behavior.validation.lookahead.invalidNumber': 'Le temps danticipation doit être un nombre valide', 'settings.behavior.validation.lookahead.invalidNumber': 'Le temps d\'anticipation doit être un nombre valide',
'settings.behavior.validation.lookahead.range': 'Le temps danticipation doit être compris entre 0 et 0,5 seconde (0-500 ms)', 'settings.behavior.validation.lookahead.range': 'Le temps d\'anticipation doit être compris entre 0 et 0,5 seconde (0-500 ms)',
'settings.behavior.validation.playbackDelay.invalidNumber': 'Le délai de lecture doit être un nombre valide', 'settings.behavior.validation.playbackDelay.invalidNumber': 'Le délai de lecture doit être un nombre valide',
'settings.behavior.validation.playbackDelay.range': 'Le délai de lecture doit être compris entre 0 et 0,5 seconde (0-500 ms)', 'settings.behavior.validation.playbackDelay.range': 'Le délai de lecture doit être compris entre 0 et 0,5 seconde (0-500 ms)',
'settings.behavior.validation.recordingOffset.invalidNumber': 'La latence dentrée MIDI doit être un nombre valide', 'settings.behavior.validation.recordingOffset.invalidNumber': 'La latence d\'entrée MIDI doit être un nombre valide',
'settings.behavior.validation.recordingOffset.range': 'La latence dentrée MIDI doit être comprise entre 0 et 0,5 seconde (0-500 ms)', 'settings.behavior.validation.recordingOffset.range': 'La latence d\'entrée MIDI doit être comprise entre 0 et 0,5 seconde (0-500 ms)',
'settings.templates.title': 'Modèles', 'settings.templates.title': 'Modèles',
'settings.templates.customInstructions': 'Instructions personnalisées', 'settings.templates.customInstructions': 'Instructions personnalisées',
'settings.templates.placeholder': 'Veuillez saisir vos instructions personnalisées pour lassistant musical K.G.Studio', 'settings.templates.placeholder': 'Veuillez saisir vos instructions personnalisées pour l\'assistant musical K.G.Studio',
'settings.chordGuide.title': 'Guide daccords', 'settings.chordGuide.title': 'Guide d\'accords',
'settings.chordGuide.resetToDefault': 'Rétablir les valeurs par défaut', 'settings.chordGuide.resetToDefault': 'Rétablir les valeurs par défaut',
'settings.chordGuide.group.major': 'Accords candidats majeurs', 'settings.chordGuide.group.major': 'Accords candidats majeurs',
'settings.chordGuide.group.minor': 'Accords candidats mineurs', 'settings.chordGuide.group.minor': 'Accords candidats mineurs',
'settings.chordGuide.help.major': 'Saisissez des accords relatifs à Do majeur. Lapplication les transposera automatiquement pour les autres armures majeures.', 'settings.chordGuide.help.major': 'Saisissez des accords relatifs à Do majeur. L\'application les transposera automatiquement pour les autres armures majeures.',
'settings.chordGuide.help.minor': 'Saisissez des accords relatifs à La mineur. Lapplication les transposera automatiquement pour les autres armures mineures.', 'settings.chordGuide.help.minor': 'Saisissez des accords relatifs à La mineur. L\'application les transposera automatiquement pour les autres armures mineures.',
'settings.chordGuide.functionsAria': 'Fonctions pour {group}', 'settings.chordGuide.functionsAria': 'Fonctions pour {group}',
'settings.chordGuide.addTitle': 'Ajouter un accord à {group}', 'settings.chordGuide.addTitle': 'Ajouter un accord à {group}',
'settings.chordGuide.deleteSelectedRows': 'Supprimer les lignes sélectionnées', 'settings.chordGuide.deleteSelectedRows': 'Supprimer les lignes sélectionnées',
@@ -143,25 +148,26 @@ export const frFrMessages: TranslationMessages = {
'settings.chordGuide.table.notes': 'Notes', 'settings.chordGuide.table.notes': 'Notes',
'settings.chordGuide.table.source': 'Source', 'settings.chordGuide.table.source': 'Source',
'settings.chordGuide.table.note': 'Note', 'settings.chordGuide.table.note': 'Note',
'settings.chordGuide.loadError': 'Impossible de charger les réglages du guide daccords.', 'settings.chordGuide.loadError': 'Impossible de charger les réglages du guide d\'accords.',
'settings.chordGuide.invalidChordSymbol': 'Veuillez saisir un symbole daccord valide. Exemple : Bm7b5', 'settings.chordGuide.invalidChordSymbol': 'Veuillez saisir un symbole d\'accord valide. Exemple : Bm7b5',
'settings.chordGuide.unsupportedChordSymbol': 'Impossible de déduire les notes pour cet accord. Veuillez utiliser un symbole daccord pris en charge.', 'settings.chordGuide.unsupportedChordSymbol': 'Impossible de déduire les notes pour cet accord. Veuillez utiliser un symbole d\'accord pris en charge.',
'dialog.title.notice': 'Information', 'dialog.title.notice': 'Information',
'dialog.title.timeSignature': 'Chiffrage de mesure', 'dialog.title.timeSignature': 'Chiffrage de mesure',
'dialog.title.tempoDetection': 'Détection du tempo', 'dialog.title.tempoDetection': 'Détection du tempo',
'dialog.title.applyTempo': 'Appliquer le tempo', 'dialog.title.applyTempo': 'Appliquer le tempo',
'dialog.title.chordDetection': 'Détection daccords', 'dialog.title.chordDetection': 'Détection d\'accords',
'dialog.title.input': 'Saisie', 'dialog.title.input': 'Saisie',
'dialog.title.confirm': 'Confirmation', 'dialog.title.confirm': 'Confirmation',
'dialog.close': 'Fermer la boîte de dialogue', 'dialog.close': 'Fermer la boîte de dialogue',
'dialog.cancel': 'Annuler', 'dialog.cancel': 'Annuler',
'dialog.ok': 'OK',
'dialog.experimentalFeature': 'Fonction expérimentale', 'dialog.experimentalFeature': 'Fonction expérimentale',
'dialog.recommendedSource': 'Source recommandée', 'dialog.recommendedSource': 'Source recommandée',
'dialog.chordHint.audio': 'Lanalyse daccords reste expérimentale. Le contenu harmonique, la densité de larrangement et les matériaux riches en transitoires peuvent affecter la précision. Pour de meilleurs résultats, commencez avec les réglages par défaut puis affinez la sensibilité et la stabilité jusquà ce que lharmonie détectée corresponde à la phrase musicale.', 'dialog.chordHint.audio': 'L\'analyse d\'accords reste expérimentale. Le contenu harmonique, la densité de l\'arrangement et les matériaux riches en transitoires peuvent affecter la précision. Pour de meilleurs résultats, commencez avec les réglages par défaut puis affinez la sensibilité et la stabilité jusqu\'à ce que l\'harmonie détectée corresponde à la phrase musicale.',
'dialog.chordHint.midi': 'Lanalyse daccords reste expérimentale. La densité des voicings, les chevauchements et les notes dornement peuvent influencer le résultat. Pour des étiquettes daccord plus fiables, partez des réglages par défaut puis ajustez la suppression des notes courtes et le focus harmonique selon le rôle musical du passage.', 'dialog.chordHint.midi': 'L\'analyse d\'accords reste expérimentale. La densité des voicings, les chevauchements et les notes d\'ornement peuvent influencer le résultat. Pour des étiquettes d\'accord plus fiables, partez des réglages par défaut puis ajustez la suppression des notes courtes et le focus harmonique selon le rôle musical du passage.',
'dialog.chordHint.tempo': 'Lanalyse du tempo reste expérimentale. Le rubato, les transitoires clairsemées et les couches de percussions peuvent réduire la précision. Commencez avec la plage de BPM par défaut, puis resserrez la fenêtre danalyse vers la zone de tempo la plus plausible si le premier résultat nest pas convaincant musicalement.', 'dialog.chordHint.tempo': 'L\'analyse du tempo reste expérimentale. Le rubato, les transitoires clairsemées et les couches de percussions peuvent réduire la précision. Commencez avec la plage de BPM par défaut, puis resserrez la fenêtre d\'analyse vers la zone de tempo la plus plausible si le premier résultat n\'est pas convaincant musicalement.',
'dialog.sourceHint.kgone': 'Pour des étiquettes daccord plus fiables, analysez de préférence un stem où les voix et les percussions ont été atténuées ou retirées. Si lintégration du serveur K.G.One Music Studio est disponible, lancez Separator avec le modèle "Vocal, Drums, Bass, Guitar, Piano, and Others" et utilisez de préférence le stem Piano ou Others.', 'dialog.sourceHint.kgone': 'Pour des étiquettes d\'accord plus fiables, analysez de préférence un stem où les voix et les percussions ont été atténuées ou retirées. Si l\'intégration du serveur K.G.One Music Studio est disponible, lancez Separator avec le modèle "Vocal, Drums, Bass, Guitar, Piano, and Others" et utilisez de préférence le stem Piano ou Others.',
'dialog.sourceHint.local': 'Pour des étiquettes daccord plus fiables, analysez de préférence un stem où les voix et les percussions ont été atténuées ou retirées. Si vous utilisez le séparateur local, choisissez le modèle "Vocal, Drums, Bass, and Others" et analysez le stem Others.', 'dialog.sourceHint.local': 'Pour des étiquettes d\'accord plus fiables, analysez de préférence un stem où les voix et les percussions ont été atténuées ou retirées. Si vous utilisez le séparateur local, choisissez le modèle "Vocal, Drums, Bass, and Others" et analysez le stem Others.',
'dialog.label.sensitivity': 'Sensibilité', 'dialog.label.sensitivity': 'Sensibilité',
'dialog.label.stability': 'Stabilité', 'dialog.label.stability': 'Stabilité',
'dialog.label.noChordThreshold': 'Seuil sans accord', 'dialog.label.noChordThreshold': 'Seuil sans accord',
@@ -176,25 +182,27 @@ export const frFrMessages: TranslationMessages = {
'dialog.label.minimumBpm': 'BPM minimum', 'dialog.label.minimumBpm': 'BPM minimum',
'dialog.label.maximumBpm': 'BPM maximum', 'dialog.label.maximumBpm': 'BPM maximum',
'dialog.label.autoAlignRegionToBeat': 'Aligner automatiquement la région sur le temps', 'dialog.label.autoAlignRegionToBeat': 'Aligner automatiquement la région sur le temps',
'dialog.message.chordDetection': 'Ajustez les réglages de détection daccords audio avant le traitement.', 'dialog.message.chordDetection': 'Ajustez les réglages de détection d\'accords audio avant le traitement.',
'dialog.message.tempoDetection': 'Ajustez les réglages de détection du tempo audio avant le traitement.', 'dialog.message.tempoDetection': 'Ajustez les réglages de détection du tempo audio avant le traitement.',
'dialog.message.tempoApply': 'Tempo détecté : {bpm} BPM. Choisissez comment lappliquer.\n\nMettre à jour le tempo courant modifie le tempo actif à lemplacement de ce clip. Insérer un changement de tempo ajoute une nouvelle région de tempo à la mesure la plus proche avant le début du clip.', 'dialog.message.tempoApply': 'Tempo détecté : {bpm} BPM. Choisissez comment l\'appliquer.\n\nMettre à jour le tempo courant modifie le tempo actif à l\'emplacement de ce clip. Insérer un changement de tempo ajoute une nouvelle région de tempo à la mesure la plus proche avant le début du clip.',
'dialog.action.updateCurrentTempo': 'Mettre à jour le tempo courant', 'dialog.action.updateCurrentTempo': 'Mettre à jour le tempo courant',
'dialog.action.insertTempoChange': 'Insérer un changement de tempo', 'dialog.action.insertTempoChange': 'Insérer un changement de tempo',
'eventList.title': 'Liste des événements', 'eventList.title': 'Liste des événements',
'eventList.scopeTabs': 'Portées de la liste dévénements', 'eventList.scopeTabs': 'Portées de la liste d\'événements',
'eventList.scope.region': 'Région', 'eventList.scope.region': 'Région',
'eventList.scope.track': 'Piste', 'eventList.scope.track': 'Piste',
'eventList.scope.global': 'Global', 'eventList.scope.global': 'Global',
'eventList.deleteVisibleSelectedRows': 'Supprimer les lignes visibles sélectionnées', 'eventList.deleteVisibleSelectedRows': 'Supprimer les lignes visibles sélectionnées',
'eventList.table.position': 'Position', 'eventList.table.position': 'Position',
'eventList.table.status': 'État', 'eventList.table.status': 'État',
'eventList.table.num': 'N°',
'eventList.table.val': 'Val.',
'eventList.table.lengthInfo': 'Durée/Infos', 'eventList.table.lengthInfo': 'Durée/Infos',
'eventList.region.filters': 'Filtres des événements de région', 'eventList.region.filters': 'Filtres des événements de région',
'eventList.region.filter.notes': 'Notes', 'eventList.region.filter.notes': 'Notes',
'eventList.region.filter.pitchBends': 'Pitch bends', 'eventList.region.filter.pitchBends': 'Pitch bends',
'eventList.region.filter.controller': 'Contrôleurs', 'eventList.region.filter.controller': 'Contrôleurs',
'eventList.region.empty': 'Sélectionnez une région MIDI, ou ouvrez-en une dans le Piano Roll, pour afficher sa liste dévénements.', 'eventList.region.empty': 'Sélectionnez une région MIDI, ou ouvrez-en une dans le Piano Roll, pour afficher sa liste d\'événements.',
'eventList.region.add.label': 'Ajouter', 'eventList.region.add.label': 'Ajouter',
'eventList.region.add.noteTitle': 'Ajouter une note à la tête de lecture', 'eventList.region.add.noteTitle': 'Ajouter une note à la tête de lecture',
'eventList.region.add.pitchBendTitle': 'Ajouter un pitch bend à la tête de lecture', 'eventList.region.add.pitchBendTitle': 'Ajouter un pitch bend à la tête de lecture',
@@ -202,15 +210,21 @@ export const frFrMessages: TranslationMessages = {
'eventList.region.addType.note': 'Note', 'eventList.region.addType.note': 'Note',
'eventList.region.addType.pitchBend': 'Pitch bend', 'eventList.region.addType.pitchBend': 'Pitch bend',
'eventList.region.addType.controller': 'Contrôleur', 'eventList.region.addType.controller': 'Contrôleur',
'eventList.region.status.note': 'Note',
'eventList.region.status.pitchBend': 'Pitch bend',
'eventList.region.status.controller': 'Contrôleur',
'eventList.track.filters': 'Modes de la liste de piste', 'eventList.track.filters': 'Modes de la liste de piste',
'eventList.track.filter.regions': 'Régions', 'eventList.track.filter.regions': 'Régions',
'eventList.track.filter.volume': 'Volume', 'eventList.track.filter.volume': 'Volume',
'eventList.track.filter.pan': 'Panoramique', 'eventList.track.filter.pan': 'Panoramique',
'eventList.track.empty': 'Sélectionnez une piste pour afficher les régions et lautomation de piste.', 'eventList.track.empty': 'Sélectionnez une piste pour afficher les régions et l\'automation de piste.',
'eventList.track.add.label': 'Ajouter',
'eventList.track.add.midiRegionTitle': 'Ajouter une région MIDI à la tête de lecture', 'eventList.track.add.midiRegionTitle': 'Ajouter une région MIDI à la tête de lecture',
'eventList.track.add.volumeTitle': 'Ajouter un point dautomation de volume à la tête de lecture', 'eventList.track.add.volumeTitle': 'Ajouter un point d\'automation de volume à la tête de lecture',
'eventList.track.add.panTitle': 'Ajouter un point dautomation de panoramique à la tête de lecture', 'eventList.track.add.panTitle': 'Ajouter un point d\'automation de panoramique à la tête de lecture',
'eventList.track.addType.midiRegion': 'Région MIDI', 'eventList.track.addType.midiRegion': 'Région MIDI',
'eventList.track.status.audio': 'Audio',
'eventList.track.status.midi': 'MIDI',
'eventList.track.status.volume': 'Volume', 'eventList.track.status.volume': 'Volume',
'eventList.track.status.pan': 'Panoramique', 'eventList.track.status.pan': 'Panoramique',
'eventList.global.filters': 'Filtres des événements globaux', 'eventList.global.filters': 'Filtres des événements globaux',
@@ -218,10 +232,11 @@ export const frFrMessages: TranslationMessages = {
'eventList.global.filter.tempo': 'Tempo', 'eventList.global.filter.tempo': 'Tempo',
'eventList.global.filter.keySignature': 'Armure', 'eventList.global.filter.keySignature': 'Armure',
'eventList.global.filter.chord': 'Accord', 'eventList.global.filter.chord': 'Accord',
'eventList.global.add.label': 'Ajouter',
'eventList.global.add.markerTitle': 'Ajouter une région de repère à la tête de lecture', 'eventList.global.add.markerTitle': 'Ajouter une région de repère à la tête de lecture',
'eventList.global.add.tempoTitle': 'Ajouter une région de tempo à la tête de lecture', 'eventList.global.add.tempoTitle': 'Ajouter une région de tempo à la tête de lecture',
'eventList.global.add.keySignatureTitle': 'Ajouter une région darmure à la tête de lecture', 'eventList.global.add.keySignatureTitle': 'Ajouter une région d\'armure à la tête de lecture',
'eventList.global.add.chordTitle': 'Ajouter une région daccord à la tête de lecture', 'eventList.global.add.chordTitle': 'Ajouter une région d\'accord à la tête de lecture',
'eventList.global.addType.marker': 'Repère', 'eventList.global.addType.marker': 'Repère',
'eventList.global.addType.tempo': 'Tempo', 'eventList.global.addType.tempo': 'Tempo',
'eventList.global.addType.keySignature': 'Armure', 'eventList.global.addType.keySignature': 'Armure',
@@ -231,29 +246,42 @@ export const frFrMessages: TranslationMessages = {
'eventList.global.status.chord': 'Accord', 'eventList.global.status.chord': 'Accord',
'eventList.global.validation.marker': 'Veuillez saisir un libellé de repère. Un texte non vide est attendu. Exemple : Intro', 'eventList.global.validation.marker': 'Veuillez saisir un libellé de repère. Un texte non vide est attendu. Exemple : Intro',
'eventList.global.validation.tempo': 'Veuillez saisir une valeur BPM en chiffres uniquement. Un entier entre {min} et {max} est attendu. Exemple : 128', 'eventList.global.validation.tempo': 'Veuillez saisir une valeur BPM en chiffres uniquement. Un entier entre {min} et {max} est attendu. Exemple : 128',
'eventList.global.validation.keySignature': 'Veuillez saisir un nom darmure exact. Une valeur canonique telle que "Do majeur" ou "Fa# mineur" est attendue. Exemple : Fa# mineur', 'eventList.global.validation.keySignature': 'Veuillez saisir un nom d\'armure exact. Une valeur canonique telle que "Do majeur" ou "Fa# mineur" est attendue. Exemple : Fa# mineur',
'eventList.global.validation.chord': 'Veuillez saisir un symbole daccord valide. Une écriture daccord que lapplication peut analyser est attendue. Exemple : Bm7b5', 'eventList.global.validation.chord': 'Veuillez saisir un symbole d\'accord valide. Une écriture d\'accord que l\'application peut analyser est attendue. Exemple : Bm7b5',
'eventList.global.validation.position': 'Veuillez saisir une position au début du projet ou après. Une position non négative est attendue. Exemple : 1 1 0', 'eventList.global.validation.position': 'Veuillez saisir une position au début du projet ou après. Une position non négative est attendue. Exemple : 1 1 0',
'eventList.global.validation.length': 'Veuillez saisir une durée positive. Une valeur supérieure à zéro est attendue. Exemple : 4 0', 'eventList.global.validation.length': 'Veuillez saisir une durée positive. Une valeur supérieure à zéro est attendue. Exemple : 4 0',
'globalTracks.label': 'Pistes globales', 'globalTracks.label': 'Pistes globales',
'globalTracks.marker': 'Repère', 'globalTracks.marker': 'Repère',
'globalTracks.tempo': 'Tempo',
'globalTracks.signature': 'Armure', 'globalTracks.signature': 'Armure',
'globalTracks.chord': 'Accord', 'globalTracks.chord': 'Accord',
'globalTracks.addItem': 'Ajouter un élément global {label}', 'globalTracks.addItem': 'Ajouter un élément global {label}',
'pianoRoll.power.sqrtDefault': '√ (par défaut)', 'pianoRoll.power.sqrtDefault': '√ (par défaut)',
'pianoRoll.chordGuide.off': 'Guide daccords désactivé', 'pianoRoll.chordGuide.off': 'Guide d\'accords désactivé',
'pianoRoll.chordGuide.tonic': 'Guide daccords tonique', 'pianoRoll.chordGuide.tonic': 'Guide d\'accords tonique',
'pianoRoll.chordGuide.subdominant': 'Guide daccords sous-dominante', 'pianoRoll.chordGuide.subdominant': 'Guide d\'accords sous-dominante',
'pianoRoll.chordGuide.dominant': 'Guide daccords dominante', 'pianoRoll.chordGuide.dominant': 'Guide d\'accords dominante',
'pianoRoll.spectrogramView': 'Vue spectrogramme', 'pianoRoll.spectrogramView': 'Vue spectrogramme',
'pianoRoll.sheetMusicView': 'Vue partition', 'pianoRoll.sheetMusicView': 'Vue partition',
'pianoRoll.pointerTool': 'Outil pointeur', 'pianoRoll.pointerTool': 'Outil pointeur',
'pianoRoll.pencilTool': 'Outil crayon', 'pianoRoll.pencilTool': 'Outil crayon',
'pianoRoll.toggleAutomationLane': 'Afficher/masquer la voie dautomation', 'pianoRoll.toggleAutomationLane': 'Afficher/masquer la voie d\'automation',
'pianoRoll.automation': 'Automation', 'pianoRoll.automation': 'Automation',
'pianoRoll.automationLane': 'Voie dautomation {label}', 'pianoRoll.automationLane': 'Voie d\'automation {label}',
'pianoRoll.automationType.pitchBend': 'Pitch bend', 'pianoRoll.automationType.pitchBend': 'Pitch bend',
'pianoRoll.chordGuide': 'Guide daccords', 'pianoRoll.mode': 'Mode',
'pianoRoll.modeOption.ionian': 'Ionien',
'pianoRoll.modeOption.dorian': 'Dorien',
'pianoRoll.modeOption.phrygian': 'Phrygien',
'pianoRoll.modeOption.lydian': 'Lydien',
'pianoRoll.modeOption.mixolydian': 'Mixolydien',
'pianoRoll.modeOption.aeolian': 'Éolien',
'pianoRoll.modeOption.locrian': 'Locrien',
'pianoRoll.modeOption.harmonic_minor': 'Mineur harmonique',
'pianoRoll.modeOption.melodic_minor': 'Mineur mélodique',
'pianoRoll.modeOption.phrygian_dominant': 'Phrygien dominant',
'pianoRoll.modeOption.harmonic_major': 'Majeur harmonique',
'pianoRoll.chordGuide': 'Guide d\'accords',
'pianoRoll.sheetQuantization': 'Quantif. partition', 'pianoRoll.sheetQuantization': 'Quantif. partition',
'pianoRoll.snap': 'Snap', 'pianoRoll.snap': 'Snap',
'pianoRoll.snap.none': 'SANS SNAP', 'pianoRoll.snap.none': 'SANS SNAP',
@@ -262,21 +290,25 @@ export const frFrMessages: TranslationMessages = {
'pianoRoll.floor': 'Plancher', 'pianoRoll.floor': 'Plancher',
'pianoRoll.curve': 'Courbe', 'pianoRoll.curve': 'Courbe',
'pianoRoll.zoom': 'Zoom', 'pianoRoll.zoom': 'Zoom',
'pianoRoll.moreOptions': 'Plus doptions', 'pianoRoll.moreOptions': 'Plus d\'options',
'pianoRoll.showActiveRegionOnly': 'Afficher seulement la région active', 'pianoRoll.showActiveRegionOnly': 'Afficher seulement la région active',
'pianoRoll.showEntireTrack': 'Afficher toute la piste', 'pianoRoll.showEntireTrack': 'Afficher toute la piste',
'pianoRoll.detectChords': 'Détecter les accords...', 'pianoRoll.detectChords': 'Détecter les accords...',
'pianoRoll.detectingChords': 'Détection des accords...', 'pianoRoll.detectingChords': 'Détection des accords...',
'pianoRoll.detectTempo': 'Détecter le tempo...', 'pianoRoll.detectTempo': 'Détecter le tempo...',
'pianoRoll.detectingTempo': 'Détection du tempo...', 'pianoRoll.detectingTempo': 'Détection du tempo...',
'toolbar.export.kgstudio': 'Exporter au format KGStudio',
'toolbar.export.midi': 'Exporter au format MIDI',
'toolbar.export.wav': 'Exporter en WAV',
'toolbar.export.mp3': 'Exporter en MP3',
'toolbar.projectName.prompt': 'Saisissez le nom du projet :', 'toolbar.projectName.prompt': 'Saisissez le nom du projet :',
'toolbar.projectName.invalid': 'Nom de projet invalide. Seules les lettres, les chiffres, les espaces, les tirets, les underscores, les points et les parenthèses sont autorisés.', 'toolbar.projectName.invalid': 'Nom de projet invalide. Seules les lettres, les chiffres, les espaces, les tirets, les underscores, les points et les parenthèses sont autorisés.',
'toolbar.projectName.reserved': '"{name}" est un nom de projet réservé. Choisissez-en un autre.', 'toolbar.projectName.reserved': '"{name}" est un nom de projet réservé. Choisissez-en un autre.',
'toolbar.projectName.overwrite': 'Le projet "{name}" existe déjà. Voulez-vous lécraser ?', 'toolbar.projectName.overwrite': 'Le projet "{name}" existe déjà. Voulez-vous l\'écraser ?',
'toolbar.projectName.renameOrCopy': 'Souhaitez-vous renommer ce projet ou lenregistrer comme nouvelle copie ?', 'toolbar.projectName.renameOrCopy': 'Souhaitez-vous renommer ce projet ou l\'enregistrer comme nouvelle copie ?',
'toolbar.projectName.saveAsCopy': 'Enregistrer comme copie', 'toolbar.projectName.saveAsCopy': 'Enregistrer comme copie',
'toolbar.projectName.rename': 'Renommer', 'toolbar.projectName.rename': 'Renommer',
'toolbar.save.error': 'Une erreur est survenue lors de lenregistrement : {error}', 'toolbar.save.error': 'Une erreur est survenue lors de l\'enregistrement : {error}',
'toolbar.load.error': 'Une erreur est survenue lors du chargement du projet : {error}', 'toolbar.load.error': 'Une erreur est survenue lors du chargement du projet : {error}',
'toolbar.newProject.confirm': 'Créer un nouveau projet ? Toutes les modifications non enregistrées seront perdues.', 'toolbar.newProject.confirm': 'Créer un nouveau projet ? Toutes les modifications non enregistrées seront perdues.',
'toolbar.project.notFound': 'Projet "{name}" introuvable.', 'toolbar.project.notFound': 'Projet "{name}" introuvable.',
@@ -285,25 +317,25 @@ export const frFrMessages: TranslationMessages = {
'toolbar.status.newProjectCreated': 'Nouveau projet "{name}" créé', 'toolbar.status.newProjectCreated': 'Nouveau projet "{name}" créé',
'toolbar.status.projectLoaded': '{description} chargé avec succès', 'toolbar.status.projectLoaded': '{description} chargé avec succès',
'toolbar.status.projectExportedKgstudio': 'Projet "{name}" exporté au format KGStudio', 'toolbar.status.projectExportedKgstudio': 'Projet "{name}" exporté au format KGStudio',
'toolbar.status.exportProjectError': 'Erreur lors de lexport du projet : {error}', 'toolbar.status.exportProjectError': 'Erreur lors de l\'export du projet : {error}',
'toolbar.export.failedProject': 'Échec de lexport du projet : {error}', 'toolbar.export.failedProject': 'Échec de l\'export du projet : {error}',
'toolbar.status.projectExportedMidi': 'Projet "{name}" exporté au format MIDI', 'toolbar.status.projectExportedMidi': 'Projet "{name}" exporté au format MIDI',
'toolbar.status.exportMidiError': 'Erreur lors de lexport MIDI : {error}', 'toolbar.status.exportMidiError': 'Erreur lors de l\'export MIDI : {error}',
'toolbar.export.failedMidi': 'Échec de lexport du projet en MIDI : {error}', 'toolbar.export.failedMidi': 'Échec de l\'export du projet en MIDI : {error}',
'toolbar.status.projectExportedWav': 'Projet "{name}" exporté en WAV', 'toolbar.status.projectExportedWav': 'Projet "{name}" exporté en WAV',
'toolbar.status.exportWavError': 'Erreur lors de lexport WAV : {error}', 'toolbar.status.exportWavError': 'Erreur lors de l\'export WAV : {error}',
'toolbar.export.failedWav': 'Échec de lexport du projet en WAV : {error}', 'toolbar.export.failedWav': 'Échec de l\'export du projet en WAV : {error}',
'toolbar.status.projectExportedMp3': 'Projet "{name}" exporté en MP3', 'toolbar.status.projectExportedMp3': 'Projet "{name}" exporté en MP3',
'toolbar.status.exportMp3Error': 'Erreur lors de lexport MP3 : {error}', 'toolbar.status.exportMp3Error': 'Erreur lors de l\'export MP3 : {error}',
'toolbar.export.failedMp3': 'Échec de lexport du projet en MP3 : {error}', 'toolbar.export.failedMp3': 'Échec de l\'export du projet en MP3 : {error}',
'toolbar.status.importFailed': 'Échec de limport du fichier : {error}', 'toolbar.status.importFailed': 'Échec de l\'import du fichier : {error}',
'toolbar.import.failedProjectFile': 'Échec de limport du fichier projet : {error}', 'toolbar.import.failedProjectFile': 'Échec de l\'import du fichier projet : {error}',
'toolbar.import.corruptedKgstudio': 'Le fichier .kgstudio est corrompu ou invalide : {error}', 'toolbar.import.corruptedKgstudio': 'Le fichier .kgstudio est corrompu ou invalide : {error}',
'toolbar.status.importingMidi': 'Import du fichier MIDI "{name}"...', 'toolbar.status.importingMidi': 'Import du fichier MIDI "{name}"...',
'toolbar.status.failedImportMidi': 'Échec de limport MIDI : {error}', 'toolbar.status.failedImportMidi': 'Échec de l\'import MIDI : {error}',
'toolbar.status.playbackFailedStart': 'Impossible de démarrer la lecture', 'toolbar.status.playbackFailedStart': 'Impossible de démarrer la lecture',
'toolbar.status.recordingStoppedCommitted': 'Enregistrement arrêté, notes validées', 'toolbar.status.recordingStoppedCommitted': 'Enregistrement arrêté, notes validées',
'toolbar.status.failedStopPlayback': 'Impossible darrêter la lecture', 'toolbar.status.failedStopPlayback': 'Impossible d\'arrêter la lecture',
'toolbar.maxBars.prompt': 'Saisissez le nouveau nombre maximal de mesures (>= {min}) :', 'toolbar.maxBars.prompt': 'Saisissez le nouveau nombre maximal de mesures (>= {min}) :',
'toolbar.input.invalidNumber': 'Entrée invalide. Veuillez saisir un nombre valide.', 'toolbar.input.invalidNumber': 'Entrée invalide. Veuillez saisir un nombre valide.',
'toolbar.maxBars.invalid': 'Valeur invalide. Veuillez saisir un nombre >= {min}.', 'toolbar.maxBars.invalid': 'Valeur invalide. Veuillez saisir un nombre >= {min}.',
@@ -324,13 +356,14 @@ export const frFrMessages: TranslationMessages = {
'toolbar.redo.none': 'Rien à rétablir', 'toolbar.redo.none': 'Rien à rétablir',
'toolbar.status.undid': 'Action annulée : {description}', 'toolbar.status.undid': 'Action annulée : {description}',
'toolbar.status.redid': 'Action rétablie : {description}', 'toolbar.status.redid': 'Action rétablie : {description}',
'toolbar.action': 'action',
'toolbar.status.chatToggled': 'Chat affiché/masqué', 'toolbar.status.chatToggled': 'Chat affiché/masqué',
'toolbar.status.settingsToggled': 'Réglages affichés/masqués', 'toolbar.status.settingsToggled': 'Réglages affichés/masqués',
'toolbar.pianoRoll.selectMidiRegion': 'Sélectionnez une région MIDI pour ouvrir le Piano Roll.', 'toolbar.pianoRoll.selectMidiRegion': 'Sélectionnez une région MIDI pour ouvrir le Piano Roll.',
'toolbar.status.recordingStopped': 'Enregistrement arrêté', 'toolbar.status.recordingStopped': 'Enregistrement arrêté',
'toolbar.status.audioRecordingStarted': 'Enregistrement audio démarré...', 'toolbar.status.audioRecordingStarted': 'Enregistrement audio démarré...',
'toolbar.recording.openMidiRegion': 'Ouvrez une région MIDI dans le Piano Roll avant de lancer lenregistrement.', 'toolbar.recording.openMidiRegion': 'Ouvrez une région MIDI dans le Piano Roll avant de lancer l\'enregistrement.',
'toolbar.recording.selectMidiRegion': 'Sélectionnez une région MIDI avant de lancer lenregistrement.', 'toolbar.recording.selectMidiRegion': 'Sélectionnez une région MIDI avant de lancer l\'enregistrement.',
'toolbar.recording.noMidiDevice': 'Aucun périphérique MIDI détecté. Connectez un clavier MIDI puis réessayez.', 'toolbar.recording.noMidiDevice': 'Aucun périphérique MIDI détecté. Connectez un clavier MIDI puis réessayez.',
'toolbar.status.recordingStarted': 'Enregistrement démarré...', 'toolbar.status.recordingStarted': 'Enregistrement démarré...',
'toolbar.button.new': 'Nouveau', 'toolbar.button.new': 'Nouveau',
@@ -352,25 +385,30 @@ export const frFrMessages: TranslationMessages = {
'toolbar.button.backToBeginning': 'Retour au début', 'toolbar.button.backToBeginning': 'Retour au début',
'toolbar.button.play': 'Lecture', 'toolbar.button.play': 'Lecture',
'toolbar.button.pause': 'Pause', 'toolbar.button.pause': 'Pause',
'toolbar.button.stopRecording': 'Arrêter lenregistrement', 'toolbar.button.stopRecording': 'Arrêter l\'enregistrement',
'toolbar.button.record': 'Enregistrer', 'toolbar.button.record': 'Enregistrer',
'toolbar.button.loop': 'Boucle', 'toolbar.button.loop': 'Boucle',
'toolbar.button.metronome': 'Métronome', 'toolbar.button.metronome': 'Métronome',
'toolbar.button.piano': 'Piano', 'toolbar.button.piano': 'Piano',
'toolbar.button.kgone': 'Générateur musical K.G.One', 'toolbar.button.kgone': 'Générateur musical K.G.One',
'toolbar.button.chat': 'Chat', 'toolbar.button.chat': 'Chat',
'toolbar.button.eventList': 'Éditeur de liste dévénements', 'toolbar.button.eventList': 'Éditeur de liste d\'événements',
'track.controls.automationButton': 'Automation de piste', 'track.controls.automationButton': 'Automation de piste',
'track.controls.automationDropdown': 'Automation', 'track.controls.automationDropdown': 'Automation',
'track.controls.automation.volume': 'Volume', 'track.controls.automation.volume': 'Volume',
'track.controls.automation.pan': 'Panoramique', 'track.controls.automation.pan': 'Panoramique',
'track.controls.settingsDropdown': 'Réglages', 'track.controls.settingsDropdown': 'Réglages',
'track.controls.settings.deleteTrack': 'Supprimer la piste', 'track.controls.settings.deleteTrack': 'Supprimer la piste',
'toolbar.keySignatureChooser': 'Choisir larmure, actuelle : {value}', 'toolbar.keySignatureChooser': 'Choisir l\'armure, actuelle : {value}',
'toolbar.export.label': 'Exporter', 'toolbar.export.label': 'Exporter',
'toolbar.importProject.title': 'Importer un projet', 'toolbar.importProject.title': 'Importer un projet',
'toolbar.importProject.description': 'Glissez-déposez votre fichier projet ici', 'toolbar.importProject.description': 'Glissez-déposez votre fichier projet ici',
'toolbar.openingProject': 'Ouverture du projet...', 'toolbar.openingProject': 'Ouverture du projet...',
'fileImport.invalidType': 'Type de fichier invalide. Veuillez sélectionner un fichier avec l\'une de ces extensions : {extensions}',
'fileImport.close': 'Fermer la fenêtre d\'import',
'fileImport.supportedFormats': 'Formats pris en charge : {formats}',
'fileImport.or': 'ou',
'fileImport.browse': 'Parcourir les fichiers',
'instrument.group.PIANO_AND_KEYBOARDS': 'Pianos et claviers', 'instrument.group.PIANO_AND_KEYBOARDS': 'Pianos et claviers',
'instrument.group.GUITAR': 'Guitare', 'instrument.group.GUITAR': 'Guitare',
'instrument.group.BASS': 'Basse', 'instrument.group.BASS': 'Basse',
@@ -451,51 +489,68 @@ export const frFrMessages: TranslationMessages = {
'kgone.panel.title.server': 'Générateur musical K.G.One', 'kgone.panel.title.server': 'Générateur musical K.G.One',
'kgone.panel.title.local': 'Générateur musical', 'kgone.panel.title.local': 'Générateur musical',
'kgone.tab.fullSong': 'Morceau complet', 'kgone.tab.fullSong': 'Morceau complet',
'kgone.tab.remix': 'Remix',
'kgone.tab.repaint': 'Repaint',
'kgone.tab.separator': 'Séparateur', 'kgone.tab.separator': 'Séparateur',
'kgone.tab.requiresServer': 'Nécessite lintégration du serveur K.G.One Music Studio', 'kgone.tab.requiresServer': 'Nécessite l\'intégration du serveur K.G.One Music Studio',
'kgone.shared.advancedSettings': 'Réglages avancés', 'kgone.shared.advancedSettings': 'Réglages avancés',
'kgone.shared.caption': 'Description', 'kgone.shared.caption': 'Description',
'kgone.shared.lyrics': 'Paroles', 'kgone.shared.lyrics': 'Paroles',
'kgone.shared.lyricsPlaceholder': '[Verse 1]\nVos paroles ici...\n\n[Chorus]\n...',
'kgone.shared.instrumental': 'Instrumental (sans voix)', 'kgone.shared.instrumental': 'Instrumental (sans voix)',
'kgone.shared.inferenceSteps': 'Étapes dinférence', 'kgone.shared.inferenceSteps': 'Étapes d\'inférence',
'kgone.shared.guidanceScale': 'Échelle de guidage', 'kgone.shared.guidanceScale': 'Échelle de guidage',
'kgone.shared.useRandomSeed': 'Utiliser une seed aléatoire', 'kgone.shared.useRandomSeed': 'Utiliser une seed aléatoire',
'kgone.shared.seed': 'Seed', 'kgone.shared.seed': 'Seed',
'kgone.shared.thinking': 'Réflexion (génération de métadonnées CoT)', 'kgone.shared.thinking': 'Réflexion (génération de métadonnées CoT)',
'kgone.shared.selectedRegion': 'Région sélectionnée', 'kgone.shared.selectedRegion': 'Région sélectionnée',
'kgone.shared.track': 'Piste', 'kgone.shared.track': 'Piste',
'kgone.shared.poweredBy': 'Propulsé par ',
'kgone.shared.btn.loadingModel': 'Chargement du modèle...', 'kgone.shared.btn.loadingModel': 'Chargement du modèle...',
'kgone.shared.btn.generating': 'Génération...', 'kgone.shared.btn.generating': 'Génération...',
'kgone.shared.btn.processing': 'Traitement...', 'kgone.shared.btn.processing': 'Traitement...',
'kgone.shared.btn.downloading': 'Téléchargement...', 'kgone.shared.btn.downloading': 'Téléchargement...',
'kgone.shared.btn.preparingUpload': 'Préparation de lenvoi...', 'kgone.shared.btn.preparingUpload': 'Préparation de l\'envoi...',
'kgone.shared.btn.importing': 'Import...', 'kgone.shared.btn.importing': 'Import...',
'kgone.shared.hint.loadingModel': 'Chargement du modèle : cela peut prendre plus de 60 secondes, veuillez patienter...', 'kgone.shared.hint.loadingModel': 'Chargement du modèle : cela peut prendre plus de 60 secondes, veuillez patienter...',
'kgone.shared.hint.submitting': 'Envoi de la demande de génération...', 'kgone.shared.hint.submitting': 'Envoi de la demande de génération...',
'kgone.shared.hint.downloadingAudio': 'Téléchargement de laudio...', 'kgone.shared.hint.downloadingAudio': 'Téléchargement de l\'audio...',
'kgone.clip.field.prompt': 'Prompt', 'kgone.clip.field.prompt': 'Prompt',
'kgone.clip.field.promptHint': 'Décrivez le clip avec des tags séparés par des virgules : famille dinstrument, sous-type, timbre, effets, nombre de mesures, BPM, tonalité.', 'kgone.clip.field.promptPlaceholder': 'ex. Gritty, Acid, Bassline, 303, Synth Lead, FM, Sub, Upper Mids, High Phaser, High Reverb, Pitch Bend, 8 Bars, 140 BPM, E minor',
'kgone.clip.field.promptHint': 'Décrivez le clip avec des tags séparés par des virgules : famille d\'instrument, sous-type, timbre, effets, nombre de mesures, BPM, tonalité.',
'kgone.clip.field.negativePrompt': 'Prompt négatif', 'kgone.clip.field.negativePrompt': 'Prompt négatif',
'kgone.clip.field.negativePromptPlaceholder': 'ex. distorsion, bruit',
'kgone.clip.field.bars': 'Mesures', 'kgone.clip.field.bars': 'Mesures',
'kgone.clip.field.bars4': '4 mesures',
'kgone.clip.field.bars8': '8 mesures',
'kgone.clip.field.note': 'Note', 'kgone.clip.field.note': 'Note',
'kgone.clip.field.scale': 'Mode', 'kgone.clip.field.scale': 'Mode',
'kgone.clip.field.scaleMajor': 'Majeur', 'kgone.clip.field.scaleMajor': 'Majeur',
'kgone.clip.field.scaleMinor': 'Mineur', 'kgone.clip.field.scaleMinor': 'Mineur',
'kgone.clip.field.bpm': 'BPM',
'kgone.clip.field.steps': 'Étapes', 'kgone.clip.field.steps': 'Étapes',
'kgone.clip.field.cfgScale': 'Échelle CFG',
'kgone.clip.field.seedLabel': 'Seed (-1 = aléatoire)', 'kgone.clip.field.seedLabel': 'Seed (-1 = aléatoire)',
'kgone.clip.field.samplerType': 'Type de sampler', 'kgone.clip.field.samplerType': 'Type de sampler',
'kgone.clip.field.sigmaMin': 'Sigma Min',
'kgone.clip.field.sigmaMax': 'Sigma Max',
'kgone.clip.field.cfgRescale': 'Remise à l\'échelle CFG',
'kgone.clip.hint.generating': 'Génération du clip...', 'kgone.clip.hint.generating': 'Génération du clip...',
'kgone.clip.hint.drag': 'Glissez le lecteur ci-dessus vers une piste pour importer le clip. Déposez-le sur une <strong>piste audio</strong> pour limporter comme région WAV (recommandé), ou sur une <strong>piste MIDI</strong> pour limporter comme région MIDI. Remarque : le MIDI est retranscrit depuis laudio et peut ne pas être parfaitement exact.', 'kgone.clip.hint.drag': 'Glissez le lecteur ci-dessus vers une piste pour importer le clip. Déposez-le sur une <strong>piste audio</strong> pour l\'importer comme région WAV (recommandé), ou sur une <strong>piste MIDI</strong> pour l\'importer comme région MIDI. Remarque : le MIDI est retranscrit depuis l\'audio et peut ne pas être parfaitement exact.',
'kgone.clip.btn.generate': 'Générer le clip', 'kgone.clip.btn.generate': 'Générer le clip',
'kgone.fullSong.field.captionHint': 'Décrivez en langage naturel le style, lambiance, le tempo, linstrumentation et la structure du morceau.', 'kgone.clip.poweredBy': 'Foundation-1',
'kgone.fullSong.field.captionPlaceholder': 'ex. Genre : eurodance, pop électronique des années 90, dynamique. Style : accrocheur, énergique... Tempo : ~130 BPM. Instrumentation : grosse caisse puissante, ligne de basse eurodance...',
'kgone.fullSong.field.captionHint': 'Décrivez en langage naturel le style, l\'ambiance, le tempo, l\'instrumentation et la structure du morceau.',
'kgone.fullSong.field.lyricsHint': 'Utilisez les balises [Intro], [Verse], [Chorus], [Bridge] pour marquer les sections.', 'kgone.fullSong.field.lyricsHint': 'Utilisez les balises [Intro], [Verse], [Chorus], [Bridge] pour marquer les sections.',
'kgone.fullSong.hint.generating': 'Génération...', 'kgone.fullSong.hint.generating': 'Génération...',
'kgone.fullSong.hint.generatingProgress': 'Génération... {pct}% — {stage}', 'kgone.fullSong.hint.generatingProgress': 'Génération... {pct}% — {stage}',
'kgone.fullSong.hint.generatingProgressNoStage': 'Génération... {pct}%', 'kgone.fullSong.hint.generatingProgressNoStage': 'Génération... {pct}%',
'kgone.fullSong.hint.drag': 'Glissez le lecteur ci-dessus vers une <strong>piste audio</strong> pour importer le morceau. Le dépôt sur une piste MIDI nest pas pris en charge pour la génération de morceau complet.', 'kgone.fullSong.hint.drag': 'Glissez le lecteur ci-dessus vers une <strong>piste audio</strong> pour importer le morceau. Le dépôt sur une piste MIDI n\'est pas pris en charge pour la génération de morceau complet.',
'kgone.fullSong.btn.generate': 'Générer le morceau', 'kgone.fullSong.btn.generate': 'Générer le morceau',
'kgone.remix.field.captionHint': 'Décrivez le style, lambiance et linstrumentation visés pour le remix.', 'kgone.fullSong.poweredBy': 'ACE-Step 1.5',
'kgone.remix.field.lyricsHint': 'Laissez vide pour conserver les paroles dorigine, ou saisissez-en de nouvelles. Utilisez les balises [Verse], [Chorus], [Bridge].', 'kgone.remix.field.captionPlaceholder': 'ex. Genre : jazz, style : doux et mélodieux, instrumentation : piano, contrebasse, batterie brossée...',
'kgone.remix.field.captionHint': 'Décrivez le style, l\'ambiance et l\'instrumentation visés pour le remix.',
'kgone.remix.field.lyricsHint': 'Laissez vide pour conserver les paroles d\'origine, ou saisissez-en de nouvelles. Utilisez les balises [Verse], [Chorus], [Bridge].',
'kgone.remix.field.coverStrength': 'Intensité de reprise', 'kgone.remix.field.coverStrength': 'Intensité de reprise',
'kgone.remix.field.coverStrengthHint': '0 = créatif, 1 = fidèle à la structure source', 'kgone.remix.field.coverStrengthHint': '0 = créatif, 1 = fidèle à la structure source',
'kgone.remix.field.noiseStrength': 'Intensité du bruit', 'kgone.remix.field.noiseStrength': 'Intensité du bruit',
@@ -509,15 +564,17 @@ export const frFrMessages: TranslationMessages = {
'kgone.remix.btn.generate': 'Générer le remix', 'kgone.remix.btn.generate': 'Générer le remix',
'kgone.remix.btn.processingRemix': 'Traitement du remix...', 'kgone.remix.btn.processingRemix': 'Traitement du remix...',
'kgone.remix.btn.importAligned': 'Importer aligné sur la source', 'kgone.remix.btn.importAligned': 'Importer aligné sur la source',
'kgone.remix.poweredBy': 'ACE-Step 1.5',
'kgone.repaint.field.repaintRange': 'Plage de repaint', 'kgone.repaint.field.repaintRange': 'Plage de repaint',
'kgone.repaint.field.loopModeOff': 'Le mode boucle est désactivé. Activez le bouton boucle dans la barre doutils et définissez une plage de boucle pour fixer la fenêtre de repaint.', 'kgone.repaint.field.captionPlaceholder': 'ex. Genre : jazz, style : doux et mélodieux, instrumentation : piano, contrebasse, batterie brossée...',
'kgone.repaint.field.loopModeOff': 'Le mode boucle est désactivé. Activez le bouton boucle dans la barre d\'outils et définissez une plage de boucle pour fixer la fenêtre de repaint.',
'kgone.repaint.field.start': 'Début', 'kgone.repaint.field.start': 'Début',
'kgone.repaint.field.end': 'Fin', 'kgone.repaint.field.end': 'Fin',
'kgone.repaint.field.untilEnd': 'jusquà la fin de laudio', 'kgone.repaint.field.untilEnd': 'jusqu\'à la fin de l\'audio',
'kgone.repaint.field.captionHint': 'Décrivez le style cible et linstrumentation de la section repeinte.', 'kgone.repaint.field.captionHint': 'Décrivez le style cible et l\'instrumentation de la section repeinte.',
'kgone.repaint.field.lyricsHint': 'Laissez vide pour conserver les paroles dorigine, ou saisissez-en de nouvelles pour la section repeinte.', 'kgone.repaint.field.lyricsHint': 'Laissez vide pour conserver les paroles d\'origine, ou saisissez-en de nouvelles pour la section repeinte.',
'kgone.repaint.field.repaintStrength': 'Intensité du repaint', 'kgone.repaint.field.repaintStrength': 'Intensité du repaint',
'kgone.repaint.field.repaintStrengthHint': '0 = préserver loriginal, 1 = régénération complète', 'kgone.repaint.field.repaintStrengthHint': '0 = préserver l\'original, 1 = régénération complète',
'kgone.repaint.hint.submitting': 'Envoi de la demande de repaint...', 'kgone.repaint.hint.submitting': 'Envoi de la demande de repaint...',
'kgone.repaint.hint.generating': 'Génération du repaint...', 'kgone.repaint.hint.generating': 'Génération du repaint...',
'kgone.repaint.hint.generatingProgress': 'Génération du repaint... {pct}% — {stage}', 'kgone.repaint.hint.generatingProgress': 'Génération du repaint... {pct}% — {stage}',
@@ -527,23 +584,32 @@ export const frFrMessages: TranslationMessages = {
'kgone.repaint.btn.generate': 'Générer le repaint', 'kgone.repaint.btn.generate': 'Générer le repaint',
'kgone.repaint.btn.processingRepaint': 'Traitement du repaint...', 'kgone.repaint.btn.processingRepaint': 'Traitement du repaint...',
'kgone.repaint.btn.importAligned': 'Importer aligné sur la source', 'kgone.repaint.btn.importAligned': 'Importer aligné sur la source',
'kgone.repaint.poweredBy': 'ACE-Step 1.5',
'kgone.separator.field.separationModel': 'Modèle de séparation', 'kgone.separator.field.separationModel': 'Modèle de séparation',
'kgone.separator.field.chunkDuration': 'Durée optionnelle des segments audio (secondes)', 'kgone.separator.field.chunkDuration': 'Durée optionnelle des segments audio (secondes)',
'kgone.separator.field.chunkDurationPlaceholder': 'Laisser vide pour traiter toute la région', 'kgone.separator.field.chunkDurationPlaceholder': 'Laisser vide pour traiter toute la région',
'kgone.separator.field.modelOverlap': 'Recouvrement du modèle', 'kgone.separator.field.modelOverlap': 'Recouvrement du modèle',
'kgone.separator.hint.drag': 'Glissez chaque lecteur de stem ci-dessus vers une <strong>piste audio</strong> pour limporter. Le dépôt sur une piste MIDI nest pas pris en charge pour la séparation de stems.', 'kgone.separator.hint.drag': 'Glissez chaque lecteur de stem ci-dessus vers une <strong>piste audio</strong> pour l\'importer. Le dépôt sur une piste MIDI n\'est pas pris en charge pour la séparation de stems.',
'kgone.separator.hint.noRegion.download': 'Téléchargez {model}, puis sélectionnez une région audio sur la timeline pour en extraire les stems.', 'kgone.separator.hint.noRegion.download': 'Téléchargez {model}, puis sélectionnez une région audio sur la timeline pour en extraire les stems.',
'kgone.separator.hint.noRegion.select': 'Sélectionnez une région audio sur la timeline pour en extraire les stems. Seules les régions audio sont prises en charge ; les régions MIDI ne peuvent pas être séparées.', 'kgone.separator.hint.noRegion.select': 'Sélectionnez une région audio sur la timeline pour en extraire les stems. Seules les régions audio sont prises en charge ; les régions MIDI ne peuvent pas être séparées.',
'kgone.separator.btn.separateStems': 'Séparer les stems', 'kgone.separator.btn.separateStems': 'Séparer les stems',
'kgone.separator.btn.importAllStems': 'Importer tous les stems sur la timeline', 'kgone.separator.btn.importAllStems': 'Importer tous les stems sur la timeline',
'kgone.separator.poweredBy': 'UVR5 CLI',
'kgone.separator.model.vocalInstMedium': 'Voix et instruments (précision moyenne)',
'kgone.separator.model.vocalInstHigh': 'Voix et instruments (haute précision)',
'kgone.separator.model.6stem': 'Voix, batterie, basse, guitare, piano et autres',
'kgone.separator.model.htdemucs4s': 'Voix, batterie, basse et autres',
'kgone.separator.btn.server.loadingModel': 'Chargement du modèle...',
'kgone.separator.btn.server.generating': 'Préparation de l\'envoi...',
'kgone.separator.btn.server.polling': 'Séparation des stems...', 'kgone.separator.btn.server.polling': 'Séparation des stems...',
'kgone.separator.btn.server.downloading': 'Téléchargement...',
'kgone.separator.btn.local.loadingModel': 'Préparation du modèle local...', 'kgone.separator.btn.local.loadingModel': 'Préparation du modèle local...',
'kgone.separator.btn.local.generating': 'Préparation de laudio...', 'kgone.separator.btn.local.generating': 'Préparation de l\'audio...',
'kgone.separator.btn.local.polling': 'Séparation locale en cours...', 'kgone.separator.btn.local.polling': 'Séparation locale en cours...',
'kgone.separator.btn.local.downloading': 'Finalisation...', 'kgone.separator.btn.local.downloading': 'Finalisation...',
'kgone.separator.local.title': 'Mode séparateur local', 'kgone.separator.local.title': 'Mode séparateur local',
'kgone.separator.local.description': 'Si K.G.One Music Studio nest pas disponible, le mode séparateur local offre une solution intégrée pour extraire des stems directement dans votre navigateur. Deux modèles locaux sont disponibles : Vocal and Instrument (Medium Accuracy), et Vocal, Drums, Bass, and Others. Létat de téléchargement ci-dessous correspond au modèle actuellement sélectionné. Vocal and Instrument (Medium Accuracy) prend généralement plus de temps à traiter que Vocal, Drums, Bass, and Others, et la durée totale dépendra tout de même de votre matériel. Si le traitement bascule sur le CPU, la page peut devenir temporairement moins réactive pendant la séparation.', 'kgone.separator.local.description': 'Si K.G.One Music Studio n\'est pas disponible, le mode séparateur local offre une solution intégrée pour extraire des stems directement dans votre navigateur. Deux modèles locaux sont disponibles : Vocal and Instrument (Medium Accuracy), et Vocal, Drums, Bass, and Others. L\'état de téléchargement ci-dessous correspond au modèle actuellement sélectionné. Vocal and Instrument (Medium Accuracy) prend généralement plus de temps à traiter que Vocal, Drums, Bass, and Others, et la durée totale dépendra tout de même de votre matériel. Si le traitement bascule sur le CPU, la page peut devenir temporairement moins réactive pendant la séparation.',
'kgone.separator.local.learnMore': 'En savoir plus sur lintégration du serveur K.G.One Music Studio.', 'kgone.separator.local.learnMore': 'En savoir plus sur l\'intégration du serveur K.G.One Music Studio.',
'kgone.separator.local.provider': 'Fournisseur : ', 'kgone.separator.local.provider': 'Fournisseur : ',
'kgone.separator.local.model': 'Modèle : ', 'kgone.separator.local.model': 'Modèle : ',
'kgone.separator.local.downloaded': 'téléchargé', 'kgone.separator.local.downloaded': 'téléchargé',
@@ -563,4 +629,34 @@ export const frFrMessages: TranslationMessages = {
'kgone.separator.local.progress.readingAudio': 'Lecture du fichier audio...', 'kgone.separator.local.progress.readingAudio': 'Lecture du fichier audio...',
'kgone.separator.local.progress.running': 'Séparation dans le navigateur en cours...', 'kgone.separator.local.progress.running': 'Séparation dans le navigateur en cours...',
'kgone.separator.local.progress.complete': 'Séparation terminée.', 'kgone.separator.local.progress.complete': 'Séparation terminée.',
'openProjectModal.title': 'Ouvrir un projet',
'openProjectModal.close': 'Fermer',
'openProjectModal.loading': 'Chargement des projets...',
'openProjectModal.date.unknown': 'Inconnu',
'openProjectModal.filter.placeholder': 'Filtrer les projets...',
'openProjectModal.viewToggle.projects': 'Projets',
'openProjectModal.viewToggle.trash': 'Corbeille',
'openProjectModal.trash.hint': 'Les projets supprimés sont automatiquement retirés après 30 jours.',
'openProjectModal.sort.name': 'Nom',
'openProjectModal.sort.created': 'Créé',
'openProjectModal.sort.updated': 'Mis à jour',
'openProjectModal.empty.trash': 'La corbeille est vide',
'openProjectModal.empty.noProjects': 'Aucun projet enregistré',
'openProjectModal.empty.noMatch': 'Aucun projet ne correspond au filtre',
'openProjectModal.meta.created': 'Créé le {date}',
'openProjectModal.meta.updated': 'Mis à jour le {date}',
'openProjectModal.meta.deleted': 'Supprimé le {date}',
'openProjectModal.action.open': 'Ouvrir',
'openProjectModal.action.duplicate': 'Dupliquer',
'openProjectModal.action.delete': 'Supprimer',
'openProjectModal.action.restore': 'Restaurer',
'openProjectModal.action.deletePermanently': 'Supprimer définitivement',
'openProjectModal.dialog.duplicateName': 'Saisissez un nom pour le projet dupliqué :',
'openProjectModal.dialog.invalidName': 'Nom de projet invalide. Seules les lettres, les chiffres, les espaces, les tirets, les underscores, les points et les parenthèses sont autorisés.',
'openProjectModal.dialog.duplicateError': 'Échec de la duplication du projet : {error}',
'openProjectModal.dialog.deleteError': 'Échec de la suppression du projet : {error}',
'openProjectModal.dialog.restoreError': 'Échec de la restauration du projet : {error}',
'openProjectModal.dialog.confirmPermanentDelete': 'Êtes-vous sûr de vouloir supprimer définitivement « {name} » ?\n\nCette opération est irréversible.',
'openProjectModal.dialog.permanentDeleteError': 'Échec de la suppression définitive du projet : {error}',
}; };
+4
View File
@@ -6,6 +6,10 @@ export const zhHkMessages: TranslationMessages = {
'app.loading': '載入中...', 'app.loading': '載入中...',
'assistant.displayName': 'K.G.Studio 音樂創作助手', 'assistant.displayName': 'K.G.Studio 音樂創作助手',
'assistant.welcomeFallback': '歡迎使用 K.G.Studio 音樂創作助手。', 'assistant.welcomeFallback': '歡迎使用 K.G.Studio 音樂創作助手。',
'chatbox.todo.title': '任務清單',
'chatbox.todo.ariaLabel': '代理任務清單',
'chatbox.todo.count': '已完成 {completed}/{total}',
'chatbox.todo.active': '當前進行中:{task}',
'mainContent.createTrack': '建立音軌', 'mainContent.createTrack': '建立音軌',
'mainContent.showGlobalTracks': '顯示全域音軌', 'mainContent.showGlobalTracks': '顯示全域音軌',
'status.chordGuideCandidate': '和弦指導候選: {name} - {notes} - {note}', 'status.chordGuideCandidate': '和弦指導候選: {name} - {notes} - {note}',