@nac3/forge-cli 1.0.77 → 1.0.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +152 -30
- package/dist/chat/panel.js.map +1 -1
- package/dist/core/file_tree.d.ts +2 -0
- package/dist/core/file_tree.d.ts.map +1 -1
- package/dist/core/file_tree.js +4 -2
- package/dist/core/file_tree.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/i18n/catalogs/ar.json +529 -525
- package/src/i18n/catalogs/de.json +529 -525
- package/src/i18n/catalogs/en.json +529 -525
- package/src/i18n/catalogs/es.json +529 -525
- package/src/i18n/catalogs/fr.json +529 -525
- package/src/i18n/catalogs/hi.json +529 -525
- package/src/i18n/catalogs/it.json +529 -525
- package/src/i18n/catalogs/ja.json +529 -525
- package/src/i18n/catalogs/pt.json +529 -525
- package/src/i18n/catalogs/zh.json +529 -525
|
@@ -1,527 +1,531 @@
|
|
|
1
|
-
{
|
|
2
|
-
"panel.brand": "Yujin Forge",
|
|
3
|
-
"panel.brand.kanji": "侑",
|
|
4
|
-
"panel.tagline": "Assistant de developpement vocal",
|
|
5
|
-
"panel.input.placeholder": "Demande a Yujin",
|
|
6
|
-
"panel.button.send": "Envoyer",
|
|
7
|
-
"panel.button.mic": "Parler (maintenir)",
|
|
8
|
-
"panel.button.mic.recording": "Appuyer pour arreter l'enregistrement",
|
|
9
|
-
"panel.button.tts": "Voix activee",
|
|
10
|
-
"panel.button.keys": "Cles",
|
|
11
|
-
"panel.button.minimise": "Reduire",
|
|
12
|
-
"panel.button.maximise": "Agrandir",
|
|
13
|
-
"panel.button.close": "Fermer",
|
|
14
|
-
"panel.button.language": "Langue",
|
|
15
|
-
"panel.trace.title": "Trace des actions",
|
|
16
|
-
"panel.trace.count.one": "{n} appel d'outil",
|
|
17
|
-
"panel.trace.count.other": "{n} appels d'outils",
|
|
18
|
-
"panel.trace.empty.kanji": "空",
|
|
19
|
-
"panel.trace.empty.body": "Yujin Forge affiche ici chaque outil qu'il invoque pour te repondre : lecture du manifest, recherche dans le SPEC, edition de composants, lecture de documents. Pose une question qui necessite de les consulter.",
|
|
20
|
-
"panel.trace.badge.tool": "OUTIL",
|
|
21
|
-
"panel.trace.badge.voice": "VOIX",
|
|
22
|
-
"panel.trace.badge.error": "ERREUR",
|
|
23
|
-
"panel.stream.empty.kanji": "侑仁",
|
|
24
|
-
"panel.stream.empty.body": "Yujin Forge en ligne. Demande des changements au projet.",
|
|
25
|
-
"panel.status.no_audio": "Aucun audio capture. Le micro n'a probablement rien recu.",
|
|
26
|
-
"panel.status.did_not_catch": "Je n'ai pas compris. Essayons a nouveau.",
|
|
27
|
-
"panel.status.mic_denied": "Permission micro refusee ou indisponible : {error}",
|
|
28
|
-
"panel.status.voice_failed": "La voix a echoue : {error}",
|
|
29
|
-
"panel.status.voice_reply_failed": "Impossible de lire la reponse : {error}",
|
|
30
|
-
"panel.status.audio_play_error": "Impossible de lire l'audio : {error}",
|
|
31
|
-
"panel.status.reading": "Lecture de {filename}...",
|
|
32
|
-
"panel.status.ingest_failed": "L'ingestion a echoue : {error}",
|
|
33
|
-
"panel.status.read_failed": "Impossible de lire la specification : {error}",
|
|
34
|
-
"panel.drop.title": "Depose la specification ici",
|
|
35
|
-
"panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
|
|
36
|
-
"panel.ingest.spec_attached": "Specification jointe : {filename}, {kb} KB",
|
|
37
|
-
"panel.ingest.read_label": "Lue.",
|
|
38
|
-
"panel.ingest.title_label": "Titre : {title}",
|
|
39
|
-
"panel.ingest.no_title": "(sans titre)",
|
|
40
|
-
"panel.ingest.format_label": "Format : {format} / {sections} section(s) / {kb} KB",
|
|
41
|
-
"panel.ingest.first_lines": "Premieres lignes :",
|
|
42
|
-
"panel.ingest.action_done": "Action {tool} terminee.",
|
|
43
|
-
"vault.modal.title": "Identifiants (vault)",
|
|
44
|
-
"vault.modal.aria.close": "Fermer la modale des identifiants",
|
|
45
|
-
"vault.tab.list": "Slots charges",
|
|
46
|
-
"vault.tab.add": "Ajouter",
|
|
47
|
-
"vault.list.loading": "Chargement...",
|
|
48
|
-
"vault.list.empty": "Tu n'as encore charge aucune cle. Clique sur \"Ajouter\" pour commencer.",
|
|
49
|
-
"vault.add.slot_label": "Nom du slot",
|
|
50
|
-
"vault.add.slot_hint": "Lettres minuscules, chiffres, soulignement, tiret. Doit commencer par une lettre.",
|
|
51
|
-
"vault.add.value_label": "Valeur en clair (masquee)",
|
|
52
|
-
"vault.add.value_hint": "Affichee une seule fois lors de la sauvegarde. Apres, tu peux la remplacer mais pas la relire.",
|
|
53
|
-
"vault.add.button_save": "Enregistrer",
|
|
54
|
-
"vault.add.button_cancel": "Annuler",
|
|
55
|
-
"vault.add.success": "Slot {slot} enregistre.",
|
|
56
|
-
"vault.add.overwrite": "Slot {slot} ecrase.",
|
|
57
|
-
"manual.intro": "Yujin Forge -- manuel utilisateur",
|
|
58
|
-
"manual.section.welcome": "Bienvenue",
|
|
59
|
-
"manual.section.install": "Installation",
|
|
60
|
-
"manual.section.first_run": "Premiere execution",
|
|
61
|
-
"manual.section.voice": "Commandes vocales",
|
|
62
|
-
"manual.section.spec_ingest": "Ingestion de specifications",
|
|
63
|
-
"manual.section.troubleshooting": "Depannage",
|
|
64
|
-
"manual.section.support": "Support",
|
|
65
|
-
"lang.name.es": "Espagnol",
|
|
66
|
-
"lang.name.en": "Anglais",
|
|
67
|
-
"lang.name.pt": "Portugais",
|
|
68
|
-
"lang.name.fr": "Francais",
|
|
69
|
-
"lang.name.ja": "Japonais",
|
|
70
|
-
"lang.name.zh": "Chinois",
|
|
71
|
-
"lang.name.hi": "Hindi",
|
|
72
|
-
"lang.name.ar": "Arabe",
|
|
73
|
-
"lang.name.de": "Allemand",
|
|
74
|
-
"lang.name.it": "Italien",
|
|
75
|
-
"recap.fallback_period": ".",
|
|
76
|
-
"recap.empty": "Il n'y a rien a resumer pour l'instant.",
|
|
77
|
-
"error_ui.severity.info": "INFO",
|
|
78
|
-
"error_ui.severity.warning": "ATTENTION",
|
|
79
|
-
"error_ui.severity.error": "ERREUR",
|
|
80
|
-
"error_ui.severity.fatal": "FATAL",
|
|
81
|
-
"error_ui.label.what": "Que s'est-il passe",
|
|
82
|
-
"error_ui.label.why": "Pourquoi",
|
|
83
|
-
"error_ui.label.fix": "Comment debloquer",
|
|
84
|
-
"error_ui.label.cmd": "Commande",
|
|
85
|
-
"error_ui.label.docs": "Docs locales",
|
|
86
|
-
"error_ui.label.retry": "Reessayer dans",
|
|
87
|
-
"error_ui.copy_btn": "Copier la commande",
|
|
88
|
-
"error_ui.unknown.what": "Forge a rencontre une erreur interne (code inconnu).",
|
|
89
|
-
"error_ui.unknown.why": "Le code {code} n'est pas dans le catalogue. C'est un bug.",
|
|
90
|
-
"error_ui.unknown.fix": "Ouvrez un issue sur https://github.com/yujinapp/yujin-forge/issues avec le code + le traceback.",
|
|
91
|
-
"error.cap_frontier_exhausted.what": "Cap mensuel de tokens du tier frontier epuise (gros modele).",
|
|
92
|
-
"error.cap_frontier_exhausted.why": "Votre plan {plan} permet jusqu'a {cap} tokens/mois en frontier. Vous avez utilise {used}. Reset au debut du prochain mois UTC.",
|
|
93
|
-
"error.cap_frontier_exhausted.fix": "Passez au BYOK Anthropic direct: ignore le cap mensuel du worker. Votre cout devient ce qu'Anthropic facture.",
|
|
94
|
-
"error.cap_frontier_exhausted.cmd": "yf brain config --frontier-provider anthropic --frontier-model claude-opus-4-7",
|
|
95
|
-
"error.cap_eco_exhausted.what": "Cap mensuel de tokens du tier eco epuise (petit modele).",
|
|
96
|
-
"error.cap_eco_exhausted.why": "Votre plan {plan} permet jusqu'a {cap} tokens/mois en eco. Vous avez utilise {used}. Reset au debut du prochain mois UTC.",
|
|
97
|
-
"error.cap_eco_exhausted.fix": "Passez au BYOK direct ou montez de plan. BYOK ignore le cap du worker.",
|
|
98
|
-
"error.cap_eco_exhausted.cmd": "yf brain config --eco-provider google_ai --eco-model gemini-2.5-flash-lite",
|
|
99
|
-
"error.tier_not_in_plan.what": "Le tier {tier} n'est pas active sur votre plan.",
|
|
100
|
-
"error.tier_not_in_plan.why": "Votre plan {plan} n'inclut pas le tier {tier}. Vous etes probablement en free-public ou votre licence a expire.",
|
|
101
|
-
"error.tier_not_in_plan.fix": "Activez une licence payante ou passez au BYOK direct (votre cout, sans cap du worker).",
|
|
102
|
-
"error.tier_not_in_plan.cmd": "yf license activate --key <jwt>",
|
|
103
|
-
"error.response_truncated.what": "La reponse du modele a ete coupee avant la fin.",
|
|
104
|
-
"error.response_truncated.why": "Limite managed_max_tokens_per_turn = {limit} tokens atteinte en plein turn. Le modele a arrete de generer.",
|
|
105
|
-
"error.response_truncated.fix": "Augmentez la limite via yf limits. S'applique au prochain turn sans redemarrer le chat.",
|
|
106
|
-
"error.response_truncated.cmd": "yf limits set managed_max_tokens_per_turn 16384",
|
|
107
|
-
"error.response_truncated.banner": "[Reponse tronquee par max_tokens={max}. Augmentez la limite avec: yf limits set managed_max_tokens_per_turn {suggested}]",
|
|
108
|
-
"error.modal_trace_stale.what": "Le modal d'approbation a expire ou est orphelin.",
|
|
109
|
-
"error.modal_trace_stale.why": "Le trace_id {trace_id} n'a pas d'approval en attente dans le dispatcher. Probable race condition entre invoke et etat du panel, ou cancel precedent a laisse le trace zombie.",
|
|
110
|
-
"error.modal_trace_stale.fix": "Reinvoquez le verb depuis le chat: demarre un nouveau trace propre. Si ca persiste, lancez yf doctor pour verifier le panel.",
|
|
111
|
-
"error.modal_trace_stale.cmd": "yf doctor",
|
|
112
|
-
"error.byok_key_missing.what": "API key manquante pour le provider {provider}.",
|
|
113
|
-
"error.byok_key_missing.why": "Vous avez configure {provider} comme provider du tier {tier} mais le slot byok_{slot} n'est pas dans le Vault chiffre.",
|
|
114
|
-
"error.byok_key_missing.fix": "Configurez la key avec yf keys set (atomique, mode 0600, jamais journalise).",
|
|
115
|
-
"error.byok_key_missing.cmd": "yf keys set {slot}",
|
|
116
|
-
"error.worker_unreachable.what": "Impossible d'atteindre le worker yujin.app.",
|
|
117
|
-
"error.worker_unreachable.why": "Timeout reseau ou worker en panne (HTTP {status}). Reessaye {attempts} fois.",
|
|
118
|
-
"error.worker_unreachable.fix": "Verifiez votre internet. Si OK, passez temporairement au BYOK direct pour eviter la dependance au worker.",
|
|
119
|
-
"error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
|
|
120
|
-
"error.vault_decrypt_failed.what": "Impossible de dechiffrer une cle du Vault.",
|
|
121
|
-
"error.vault_decrypt_failed.why": "La master key est incorrecte ou le fichier du Vault est corrompu. Peut arriver si vous avez deplace la config entre machines sans migrer la master ou par disk error.",
|
|
122
|
-
"error.vault_decrypt_failed.fix": "Recuperez la copie du serveur (rechiffre avec votre master locale) si vous avez le server backup actif.",
|
|
123
|
-
"error.vault_decrypt_failed.cmd": "yf keys setup --pull",
|
|
124
|
-
"error.shell_exec_rejected.what": "Vous avez rejete le modal R8 de yujin.shell.exec.",
|
|
125
|
-
"error.shell_exec_rejected.why": "La commande {command} a ete classee comme {classification}. shell.exec demande toujours approbation par securite, meme si la commande est read-only.",
|
|
126
|
-
"error.shell_exec_rejected.fix": "Si la commande etait read-only (yf projects active, git status, ls), utilisez le verb natif equivalent. Si elle etait necessaire et vous avez rejete par erreur, reinvoquez.",
|
|
127
|
-
"error.project_not_registered.what": "Aucun projet adopter enregistre.",
|
|
128
|
-
"error.project_not_registered.why": "Le verb invoque necessite un project root actif mais ~/.yujin-forge/projects.json n'a pas d'entrees.",
|
|
129
|
-
"error.project_not_registered.fix": "Creez-en un avec yujin.project.init ou enregistrez un existant avec yf projects add.",
|
|
130
|
-
"error.project_not_registered.cmd": "yf projects scan",
|
|
131
|
-
"panel.button.agents": "Agents",
|
|
132
|
-
"panel.agents.title": "Agents",
|
|
133
|
-
"panel.agents.subtitle": "Director et sous-agents enregistres dans ce projet",
|
|
134
|
-
"panel.agents.empty.title": "Aucun agent pour l'instant",
|
|
135
|
-
"panel.agents.empty.body": "Executez `yf agent install --defaults` pour enregistrer le Director et ses 4 sous-agents (Analyste, Coder, Tester, Scaffolder).",
|
|
136
|
-
"panel.agents.legend.eco": "Eco",
|
|
137
|
-
"panel.agents.legend.managed": "Managed",
|
|
138
|
-
"panel.agents.legend.frontier": "Frontier",
|
|
139
|
-
"panel.agents.status.disabled": "Runtime des agents non demarre",
|
|
140
|
-
"panel.agents.event.running": "En cours",
|
|
141
|
-
"panel.agents.event.idle": "En attente",
|
|
142
|
-
"panel.agents.tick.live": "Connecte",
|
|
143
|
-
"panel.agents.tick.lost": "Connexion perdue",
|
|
144
|
-
"workflow.phase.i": "Triage et intention",
|
|
145
|
-
"workflow.phase.ii": "Clarification (fonctionnel + 4 NFR + blocs)",
|
|
146
|
-
"workflow.phase.iii": "Specifications (RFP + Arch + Design + approbations)",
|
|
147
|
-
"workflow.phase.iv": "Bootstrap",
|
|
148
|
-
"workflow.phase.v": "Developpement par blocs",
|
|
149
|
-
"workflow.phase.vi": "Deploiement + post-lancement",
|
|
150
|
-
"wizard.title": "Bienvenue dans Yujin Forge",
|
|
151
|
-
"wizard.close": "Fermer",
|
|
152
|
-
"wizard.intro": "Pour commencer, choisissez comment Forge se connecte a votre modele IA. Vous pourrez modifier ce choix plus tard depuis Settings.",
|
|
153
|
-
"wizard.back": "Retour",
|
|
154
|
-
"wizard.start": "Commencer",
|
|
155
|
-
"wizard.plan.badge": "Recommande",
|
|
156
|
-
"wizard.plan.title": "Plan Claude",
|
|
157
|
-
"wizard.plan.desc": "Abonnement mensuel Claude. Option la moins chere pour usage regulier. Forge utilise votre session claude -p.",
|
|
158
|
-
"wizard.plan.price": "Forfait mensuel (Plan)",
|
|
159
|
-
"wizard.plan.step.title": "Connecter votre Plan Claude",
|
|
160
|
-
"wizard.plan.step.1": "Ouvrez un nouveau terminal.",
|
|
161
|
-
"wizard.plan.step.2": "Lancez la commande claude (sans arguments) et completez la connexion dans le navigateur.",
|
|
162
|
-
"wizard.plan.step.3": "Revenez ici et cliquez sur Je suis connecte pour verifier.",
|
|
163
|
-
"wizard.plan.done": "Je suis connecte",
|
|
164
|
-
"wizard.byok.title": "Votre propre cle API (BYOK)",
|
|
165
|
-
"wizard.byok.desc": "Votre propre cle de n importe quel fournisseur (Anthropic, OpenAI, Google, DeepSeek...). Paiement a l usage sur votre compte.",
|
|
166
|
-
"wizard.byok.price": "Paiement a l usage (Console)",
|
|
167
|
-
"wizard.byok.step.title": "Choisissez votre fournisseur et collez votre cle API",
|
|
168
|
-
"wizard.byok.step.intro": "Choisissez le fournisseur dans le menu et collez sa cle API. Forge la stocke chiffree dans le Vault local ; elle ne quitte jamais votre machine.",
|
|
169
|
-
"wizard.byok.test": "Valider et enregistrer",
|
|
170
|
-
"wizard.skip.title": "Je suis deja configure",
|
|
171
|
-
"wizard.skip.desc": "Sauter l assistant. Vous pourrez le rouvrir depuis Settings.",
|
|
172
|
-
"wizard.done.kanji": "Termine",
|
|
173
|
-
"wizard.done.title": "Termine",
|
|
174
|
-
"wizard.done.msg": "Forge est configure. Commencez a discuter.",
|
|
175
|
-
"pizarron.button.read": "Lire",
|
|
176
|
-
"pizarron.button.copy": "Copier",
|
|
177
|
-
"pizarron.button.edit": "Modifier",
|
|
178
|
-
"pizarron.graph.refresh": "Actualiser",
|
|
179
|
-
"pizarron.graph.regenerating": "Regeneration...",
|
|
180
|
-
"pizarron.graph.detail.hint": "Touchez un noeud pour le detail.",
|
|
181
|
-
"pizarron.graph.detail.empty": "Aucun detail pour ce noeud.",
|
|
1
|
+
{
|
|
2
|
+
"panel.brand": "Yujin Forge",
|
|
3
|
+
"panel.brand.kanji": "侑",
|
|
4
|
+
"panel.tagline": "Assistant de developpement vocal",
|
|
5
|
+
"panel.input.placeholder": "Demande a Yujin",
|
|
6
|
+
"panel.button.send": "Envoyer",
|
|
7
|
+
"panel.button.mic": "Parler (maintenir)",
|
|
8
|
+
"panel.button.mic.recording": "Appuyer pour arreter l'enregistrement",
|
|
9
|
+
"panel.button.tts": "Voix activee",
|
|
10
|
+
"panel.button.keys": "Cles",
|
|
11
|
+
"panel.button.minimise": "Reduire",
|
|
12
|
+
"panel.button.maximise": "Agrandir",
|
|
13
|
+
"panel.button.close": "Fermer",
|
|
14
|
+
"panel.button.language": "Langue",
|
|
15
|
+
"panel.trace.title": "Trace des actions",
|
|
16
|
+
"panel.trace.count.one": "{n} appel d'outil",
|
|
17
|
+
"panel.trace.count.other": "{n} appels d'outils",
|
|
18
|
+
"panel.trace.empty.kanji": "空",
|
|
19
|
+
"panel.trace.empty.body": "Yujin Forge affiche ici chaque outil qu'il invoque pour te repondre : lecture du manifest, recherche dans le SPEC, edition de composants, lecture de documents. Pose une question qui necessite de les consulter.",
|
|
20
|
+
"panel.trace.badge.tool": "OUTIL",
|
|
21
|
+
"panel.trace.badge.voice": "VOIX",
|
|
22
|
+
"panel.trace.badge.error": "ERREUR",
|
|
23
|
+
"panel.stream.empty.kanji": "侑仁",
|
|
24
|
+
"panel.stream.empty.body": "Yujin Forge en ligne. Demande des changements au projet.",
|
|
25
|
+
"panel.status.no_audio": "Aucun audio capture. Le micro n'a probablement rien recu.",
|
|
26
|
+
"panel.status.did_not_catch": "Je n'ai pas compris. Essayons a nouveau.",
|
|
27
|
+
"panel.status.mic_denied": "Permission micro refusee ou indisponible : {error}",
|
|
28
|
+
"panel.status.voice_failed": "La voix a echoue : {error}",
|
|
29
|
+
"panel.status.voice_reply_failed": "Impossible de lire la reponse : {error}",
|
|
30
|
+
"panel.status.audio_play_error": "Impossible de lire l'audio : {error}",
|
|
31
|
+
"panel.status.reading": "Lecture de {filename}...",
|
|
32
|
+
"panel.status.ingest_failed": "L'ingestion a echoue : {error}",
|
|
33
|
+
"panel.status.read_failed": "Impossible de lire la specification : {error}",
|
|
34
|
+
"panel.drop.title": "Depose la specification ici",
|
|
35
|
+
"panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
|
|
36
|
+
"panel.ingest.spec_attached": "Specification jointe : {filename}, {kb} KB",
|
|
37
|
+
"panel.ingest.read_label": "Lue.",
|
|
38
|
+
"panel.ingest.title_label": "Titre : {title}",
|
|
39
|
+
"panel.ingest.no_title": "(sans titre)",
|
|
40
|
+
"panel.ingest.format_label": "Format : {format} / {sections} section(s) / {kb} KB",
|
|
41
|
+
"panel.ingest.first_lines": "Premieres lignes :",
|
|
42
|
+
"panel.ingest.action_done": "Action {tool} terminee.",
|
|
43
|
+
"vault.modal.title": "Identifiants (vault)",
|
|
44
|
+
"vault.modal.aria.close": "Fermer la modale des identifiants",
|
|
45
|
+
"vault.tab.list": "Slots charges",
|
|
46
|
+
"vault.tab.add": "Ajouter",
|
|
47
|
+
"vault.list.loading": "Chargement...",
|
|
48
|
+
"vault.list.empty": "Tu n'as encore charge aucune cle. Clique sur \"Ajouter\" pour commencer.",
|
|
49
|
+
"vault.add.slot_label": "Nom du slot",
|
|
50
|
+
"vault.add.slot_hint": "Lettres minuscules, chiffres, soulignement, tiret. Doit commencer par une lettre.",
|
|
51
|
+
"vault.add.value_label": "Valeur en clair (masquee)",
|
|
52
|
+
"vault.add.value_hint": "Affichee une seule fois lors de la sauvegarde. Apres, tu peux la remplacer mais pas la relire.",
|
|
53
|
+
"vault.add.button_save": "Enregistrer",
|
|
54
|
+
"vault.add.button_cancel": "Annuler",
|
|
55
|
+
"vault.add.success": "Slot {slot} enregistre.",
|
|
56
|
+
"vault.add.overwrite": "Slot {slot} ecrase.",
|
|
57
|
+
"manual.intro": "Yujin Forge -- manuel utilisateur",
|
|
58
|
+
"manual.section.welcome": "Bienvenue",
|
|
59
|
+
"manual.section.install": "Installation",
|
|
60
|
+
"manual.section.first_run": "Premiere execution",
|
|
61
|
+
"manual.section.voice": "Commandes vocales",
|
|
62
|
+
"manual.section.spec_ingest": "Ingestion de specifications",
|
|
63
|
+
"manual.section.troubleshooting": "Depannage",
|
|
64
|
+
"manual.section.support": "Support",
|
|
65
|
+
"lang.name.es": "Espagnol",
|
|
66
|
+
"lang.name.en": "Anglais",
|
|
67
|
+
"lang.name.pt": "Portugais",
|
|
68
|
+
"lang.name.fr": "Francais",
|
|
69
|
+
"lang.name.ja": "Japonais",
|
|
70
|
+
"lang.name.zh": "Chinois",
|
|
71
|
+
"lang.name.hi": "Hindi",
|
|
72
|
+
"lang.name.ar": "Arabe",
|
|
73
|
+
"lang.name.de": "Allemand",
|
|
74
|
+
"lang.name.it": "Italien",
|
|
75
|
+
"recap.fallback_period": ".",
|
|
76
|
+
"recap.empty": "Il n'y a rien a resumer pour l'instant.",
|
|
77
|
+
"error_ui.severity.info": "INFO",
|
|
78
|
+
"error_ui.severity.warning": "ATTENTION",
|
|
79
|
+
"error_ui.severity.error": "ERREUR",
|
|
80
|
+
"error_ui.severity.fatal": "FATAL",
|
|
81
|
+
"error_ui.label.what": "Que s'est-il passe",
|
|
82
|
+
"error_ui.label.why": "Pourquoi",
|
|
83
|
+
"error_ui.label.fix": "Comment debloquer",
|
|
84
|
+
"error_ui.label.cmd": "Commande",
|
|
85
|
+
"error_ui.label.docs": "Docs locales",
|
|
86
|
+
"error_ui.label.retry": "Reessayer dans",
|
|
87
|
+
"error_ui.copy_btn": "Copier la commande",
|
|
88
|
+
"error_ui.unknown.what": "Forge a rencontre une erreur interne (code inconnu).",
|
|
89
|
+
"error_ui.unknown.why": "Le code {code} n'est pas dans le catalogue. C'est un bug.",
|
|
90
|
+
"error_ui.unknown.fix": "Ouvrez un issue sur https://github.com/yujinapp/yujin-forge/issues avec le code + le traceback.",
|
|
91
|
+
"error.cap_frontier_exhausted.what": "Cap mensuel de tokens du tier frontier epuise (gros modele).",
|
|
92
|
+
"error.cap_frontier_exhausted.why": "Votre plan {plan} permet jusqu'a {cap} tokens/mois en frontier. Vous avez utilise {used}. Reset au debut du prochain mois UTC.",
|
|
93
|
+
"error.cap_frontier_exhausted.fix": "Passez au BYOK Anthropic direct: ignore le cap mensuel du worker. Votre cout devient ce qu'Anthropic facture.",
|
|
94
|
+
"error.cap_frontier_exhausted.cmd": "yf brain config --frontier-provider anthropic --frontier-model claude-opus-4-7",
|
|
95
|
+
"error.cap_eco_exhausted.what": "Cap mensuel de tokens du tier eco epuise (petit modele).",
|
|
96
|
+
"error.cap_eco_exhausted.why": "Votre plan {plan} permet jusqu'a {cap} tokens/mois en eco. Vous avez utilise {used}. Reset au debut du prochain mois UTC.",
|
|
97
|
+
"error.cap_eco_exhausted.fix": "Passez au BYOK direct ou montez de plan. BYOK ignore le cap du worker.",
|
|
98
|
+
"error.cap_eco_exhausted.cmd": "yf brain config --eco-provider google_ai --eco-model gemini-2.5-flash-lite",
|
|
99
|
+
"error.tier_not_in_plan.what": "Le tier {tier} n'est pas active sur votre plan.",
|
|
100
|
+
"error.tier_not_in_plan.why": "Votre plan {plan} n'inclut pas le tier {tier}. Vous etes probablement en free-public ou votre licence a expire.",
|
|
101
|
+
"error.tier_not_in_plan.fix": "Activez une licence payante ou passez au BYOK direct (votre cout, sans cap du worker).",
|
|
102
|
+
"error.tier_not_in_plan.cmd": "yf license activate --key <jwt>",
|
|
103
|
+
"error.response_truncated.what": "La reponse du modele a ete coupee avant la fin.",
|
|
104
|
+
"error.response_truncated.why": "Limite managed_max_tokens_per_turn = {limit} tokens atteinte en plein turn. Le modele a arrete de generer.",
|
|
105
|
+
"error.response_truncated.fix": "Augmentez la limite via yf limits. S'applique au prochain turn sans redemarrer le chat.",
|
|
106
|
+
"error.response_truncated.cmd": "yf limits set managed_max_tokens_per_turn 16384",
|
|
107
|
+
"error.response_truncated.banner": "[Reponse tronquee par max_tokens={max}. Augmentez la limite avec: yf limits set managed_max_tokens_per_turn {suggested}]",
|
|
108
|
+
"error.modal_trace_stale.what": "Le modal d'approbation a expire ou est orphelin.",
|
|
109
|
+
"error.modal_trace_stale.why": "Le trace_id {trace_id} n'a pas d'approval en attente dans le dispatcher. Probable race condition entre invoke et etat du panel, ou cancel precedent a laisse le trace zombie.",
|
|
110
|
+
"error.modal_trace_stale.fix": "Reinvoquez le verb depuis le chat: demarre un nouveau trace propre. Si ca persiste, lancez yf doctor pour verifier le panel.",
|
|
111
|
+
"error.modal_trace_stale.cmd": "yf doctor",
|
|
112
|
+
"error.byok_key_missing.what": "API key manquante pour le provider {provider}.",
|
|
113
|
+
"error.byok_key_missing.why": "Vous avez configure {provider} comme provider du tier {tier} mais le slot byok_{slot} n'est pas dans le Vault chiffre.",
|
|
114
|
+
"error.byok_key_missing.fix": "Configurez la key avec yf keys set (atomique, mode 0600, jamais journalise).",
|
|
115
|
+
"error.byok_key_missing.cmd": "yf keys set {slot}",
|
|
116
|
+
"error.worker_unreachable.what": "Impossible d'atteindre le worker yujin.app.",
|
|
117
|
+
"error.worker_unreachable.why": "Timeout reseau ou worker en panne (HTTP {status}). Reessaye {attempts} fois.",
|
|
118
|
+
"error.worker_unreachable.fix": "Verifiez votre internet. Si OK, passez temporairement au BYOK direct pour eviter la dependance au worker.",
|
|
119
|
+
"error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
|
|
120
|
+
"error.vault_decrypt_failed.what": "Impossible de dechiffrer une cle du Vault.",
|
|
121
|
+
"error.vault_decrypt_failed.why": "La master key est incorrecte ou le fichier du Vault est corrompu. Peut arriver si vous avez deplace la config entre machines sans migrer la master ou par disk error.",
|
|
122
|
+
"error.vault_decrypt_failed.fix": "Recuperez la copie du serveur (rechiffre avec votre master locale) si vous avez le server backup actif.",
|
|
123
|
+
"error.vault_decrypt_failed.cmd": "yf keys setup --pull",
|
|
124
|
+
"error.shell_exec_rejected.what": "Vous avez rejete le modal R8 de yujin.shell.exec.",
|
|
125
|
+
"error.shell_exec_rejected.why": "La commande {command} a ete classee comme {classification}. shell.exec demande toujours approbation par securite, meme si la commande est read-only.",
|
|
126
|
+
"error.shell_exec_rejected.fix": "Si la commande etait read-only (yf projects active, git status, ls), utilisez le verb natif equivalent. Si elle etait necessaire et vous avez rejete par erreur, reinvoquez.",
|
|
127
|
+
"error.project_not_registered.what": "Aucun projet adopter enregistre.",
|
|
128
|
+
"error.project_not_registered.why": "Le verb invoque necessite un project root actif mais ~/.yujin-forge/projects.json n'a pas d'entrees.",
|
|
129
|
+
"error.project_not_registered.fix": "Creez-en un avec yujin.project.init ou enregistrez un existant avec yf projects add.",
|
|
130
|
+
"error.project_not_registered.cmd": "yf projects scan",
|
|
131
|
+
"panel.button.agents": "Agents",
|
|
132
|
+
"panel.agents.title": "Agents",
|
|
133
|
+
"panel.agents.subtitle": "Director et sous-agents enregistres dans ce projet",
|
|
134
|
+
"panel.agents.empty.title": "Aucun agent pour l'instant",
|
|
135
|
+
"panel.agents.empty.body": "Executez `yf agent install --defaults` pour enregistrer le Director et ses 4 sous-agents (Analyste, Coder, Tester, Scaffolder).",
|
|
136
|
+
"panel.agents.legend.eco": "Eco",
|
|
137
|
+
"panel.agents.legend.managed": "Managed",
|
|
138
|
+
"panel.agents.legend.frontier": "Frontier",
|
|
139
|
+
"panel.agents.status.disabled": "Runtime des agents non demarre",
|
|
140
|
+
"panel.agents.event.running": "En cours",
|
|
141
|
+
"panel.agents.event.idle": "En attente",
|
|
142
|
+
"panel.agents.tick.live": "Connecte",
|
|
143
|
+
"panel.agents.tick.lost": "Connexion perdue",
|
|
144
|
+
"workflow.phase.i": "Triage et intention",
|
|
145
|
+
"workflow.phase.ii": "Clarification (fonctionnel + 4 NFR + blocs)",
|
|
146
|
+
"workflow.phase.iii": "Specifications (RFP + Arch + Design + approbations)",
|
|
147
|
+
"workflow.phase.iv": "Bootstrap",
|
|
148
|
+
"workflow.phase.v": "Developpement par blocs",
|
|
149
|
+
"workflow.phase.vi": "Deploiement + post-lancement",
|
|
150
|
+
"wizard.title": "Bienvenue dans Yujin Forge",
|
|
151
|
+
"wizard.close": "Fermer",
|
|
152
|
+
"wizard.intro": "Pour commencer, choisissez comment Forge se connecte a votre modele IA. Vous pourrez modifier ce choix plus tard depuis Settings.",
|
|
153
|
+
"wizard.back": "Retour",
|
|
154
|
+
"wizard.start": "Commencer",
|
|
155
|
+
"wizard.plan.badge": "Recommande",
|
|
156
|
+
"wizard.plan.title": "Plan Claude",
|
|
157
|
+
"wizard.plan.desc": "Abonnement mensuel Claude. Option la moins chere pour usage regulier. Forge utilise votre session claude -p.",
|
|
158
|
+
"wizard.plan.price": "Forfait mensuel (Plan)",
|
|
159
|
+
"wizard.plan.step.title": "Connecter votre Plan Claude",
|
|
160
|
+
"wizard.plan.step.1": "Ouvrez un nouveau terminal.",
|
|
161
|
+
"wizard.plan.step.2": "Lancez la commande claude (sans arguments) et completez la connexion dans le navigateur.",
|
|
162
|
+
"wizard.plan.step.3": "Revenez ici et cliquez sur Je suis connecte pour verifier.",
|
|
163
|
+
"wizard.plan.done": "Je suis connecte",
|
|
164
|
+
"wizard.byok.title": "Votre propre cle API (BYOK)",
|
|
165
|
+
"wizard.byok.desc": "Votre propre cle de n importe quel fournisseur (Anthropic, OpenAI, Google, DeepSeek...). Paiement a l usage sur votre compte.",
|
|
166
|
+
"wizard.byok.price": "Paiement a l usage (Console)",
|
|
167
|
+
"wizard.byok.step.title": "Choisissez votre fournisseur et collez votre cle API",
|
|
168
|
+
"wizard.byok.step.intro": "Choisissez le fournisseur dans le menu et collez sa cle API. Forge la stocke chiffree dans le Vault local ; elle ne quitte jamais votre machine.",
|
|
169
|
+
"wizard.byok.test": "Valider et enregistrer",
|
|
170
|
+
"wizard.skip.title": "Je suis deja configure",
|
|
171
|
+
"wizard.skip.desc": "Sauter l assistant. Vous pourrez le rouvrir depuis Settings.",
|
|
172
|
+
"wizard.done.kanji": "Termine",
|
|
173
|
+
"wizard.done.title": "Termine",
|
|
174
|
+
"wizard.done.msg": "Forge est configure. Commencez a discuter.",
|
|
175
|
+
"pizarron.button.read": "Lire",
|
|
176
|
+
"pizarron.button.copy": "Copier",
|
|
177
|
+
"pizarron.button.edit": "Modifier",
|
|
178
|
+
"pizarron.graph.refresh": "Actualiser",
|
|
179
|
+
"pizarron.graph.regenerating": "Regeneration...",
|
|
180
|
+
"pizarron.graph.detail.hint": "Touchez un noeud pour le detail.",
|
|
181
|
+
"pizarron.graph.detail.empty": "Aucun detail pour ce noeud.",
|
|
182
182
|
"pizarron.graph.detail.weight": "poids",
|
|
183
183
|
"pizarron.graph.orbit": "Orbite",
|
|
184
|
-
"pizarron.graph.orbit.speed": "Vitesse orbitale",
|
|
185
|
-
"startup.tab.graph": "Graphe visuel",
|
|
186
|
-
"startup.tab.graphSem": "Graphe semantique",
|
|
187
|
-
"startup.tab.pendings": "En attente",
|
|
188
|
-
"startup.tab.workflow": "Workflow",
|
|
189
|
-
"settings.startupTabs": "Onglets a l'ouverture (graphe, en attente, workflow)",
|
|
190
|
-
"graph.term.nodes": "noeuds",
|
|
191
|
-
"graph.term.edges": "aretes",
|
|
192
|
-
"coding.read": "Lecture de {x}",
|
|
193
|
-
"coding.read_bare": "Lecture d'un fichier",
|
|
194
|
-
"coding.edit": "Modification de {x}",
|
|
195
|
-
"coding.edit_bare": "Modification d'un fichier",
|
|
196
|
-
"coding.write": "Ecriture de {x}",
|
|
197
|
-
"coding.write_bare": "Ecriture d'un fichier",
|
|
198
|
-
"coding.notebook_bare": "Modification du notebook",
|
|
199
|
-
"coding.bash": "Execution : {x}",
|
|
200
|
-
"coding.bash_bare": "Execution d'une commande",
|
|
201
|
-
"coding.grep": "Recherche \"{x}\"",
|
|
202
|
-
"coding.grep_bare": "Recherche dans le code",
|
|
203
|
-
"coding.glob": "Liste de {x}",
|
|
204
|
-
"coding.glob_bare": "Liste des fichiers",
|
|
205
|
-
"coding.web_bare": "Lecture du web",
|
|
206
|
-
"coding.websearch": "Recherche web : {x}",
|
|
207
|
-
"coding.websearch_bare": "Recherche web",
|
|
208
|
-
"coding.task": "Sous-agent : {x}",
|
|
209
|
-
"coding.task_bare": "Lancement d'un sous-agent",
|
|
210
|
-
"coding.todo": "Mise a jour de sa liste de taches",
|
|
211
|
-
"coding.verb_bare": "Execution d'un verbe yujin",
|
|
212
|
-
"panel.button.stop": "Arreter",
|
|
213
|
-
"panel.status.stopping": "Arret en cours...",
|
|
214
|
-
"panel.status.noActiveTurn": "Aucun tour n'etait en cours.",
|
|
215
|
-
"panel.status.interruptFailed": "Impossible d'envoyer l'interruption.",
|
|
216
|
-
"panel.status.turnInterrupted": "Tour interrompu.",
|
|
217
|
-
"panel.label.interrupted": "(interrompu)",
|
|
218
|
-
"panel.queue.label": "En file",
|
|
219
|
-
"panel.queue.remove": "Retirer de la file",
|
|
220
|
-
"panel.project.switchHint": "Changer de projet",
|
|
221
|
-
"panel.project.title": "Projets",
|
|
222
|
-
"panel.project.add": "Ajouter un projet...",
|
|
223
|
-
"panel.project.addPrompt": "Chemin absolu du projet a ajouter :",
|
|
224
|
-
"panel.project.switching": "Changement de projet...",
|
|
225
|
-
"startup.tab.files": "Fichiers",
|
|
226
|
-
"panel.project.remove": "Retirer de la liste",
|
|
227
|
-
"panel.project.removeConfirm": "Retirer ce projet de la liste ? (ne supprime pas les fichiers sur le disque)",
|
|
228
|
-
"panel.project.removed": "Projet retiré de la liste",
|
|
229
|
-
"panel.files.refresh": "Actualiser",
|
|
230
|
-
"panel.files.loading": "Chargement...",
|
|
231
|
-
"panel.files.error": "Impossible de lire les fichiers.",
|
|
232
|
-
"panel.files.empty": "(aucun fichier)",
|
|
233
|
-
"panel.files.truncated": "(liste tronquée)",
|
|
234
|
-
"panel.files.opened": "Ouvert",
|
|
235
|
-
"panel.files.openFailed": "Impossible d'ouvrir le fichier.",
|
|
236
|
-
"
|
|
237
|
-
"
|
|
238
|
-
"
|
|
239
|
-
"
|
|
240
|
-
"
|
|
241
|
-
"settings.
|
|
242
|
-
"settings.
|
|
243
|
-
"settings.
|
|
244
|
-
"settings.voice.
|
|
245
|
-
"settings.voice.
|
|
246
|
-
"settings.voice.
|
|
247
|
-
"settings.voice.
|
|
248
|
-
"settings.
|
|
249
|
-
"settings.
|
|
250
|
-
"settings.
|
|
251
|
-
"settings.
|
|
252
|
-
"settings.vad.
|
|
253
|
-
"settings.vad.
|
|
254
|
-
"settings.vad.
|
|
255
|
-
"settings.vad.
|
|
256
|
-
"settings.vad.
|
|
257
|
-
"settings.vad.
|
|
258
|
-
"settings.vad.
|
|
259
|
-
"settings.vad.
|
|
260
|
-
"settings.vad.
|
|
261
|
-
"settings.vad.
|
|
262
|
-
"settings.vad.
|
|
263
|
-
"settings.vad.
|
|
264
|
-
"settings.
|
|
265
|
-
"settings.
|
|
266
|
-
"settings.
|
|
267
|
-
"settings.
|
|
268
|
-
"settings.brain.
|
|
269
|
-
"settings.brain.
|
|
270
|
-
"settings.brain.
|
|
271
|
-
"settings.brain.
|
|
272
|
-
"settings.brain.
|
|
273
|
-
"settings.brain.
|
|
274
|
-
"settings.brain.
|
|
275
|
-
"settings.brain.
|
|
276
|
-
"settings.brain.
|
|
277
|
-
"settings.brain.
|
|
278
|
-
"settings.
|
|
279
|
-
"settings.
|
|
280
|
-
"settings.
|
|
281
|
-
"settings.
|
|
282
|
-
"settings.federation.
|
|
283
|
-
"settings.federation.
|
|
284
|
-
"settings.federation.
|
|
285
|
-
"settings.federation.
|
|
286
|
-
"settings.federation.
|
|
287
|
-
"settings.federation.
|
|
288
|
-
"settings.federation.
|
|
289
|
-
"settings.federation.
|
|
290
|
-
"settings.federation.
|
|
291
|
-
"settings.federation.
|
|
292
|
-
"settings.
|
|
293
|
-
"settings.
|
|
294
|
-
"settings.
|
|
295
|
-
"settings.
|
|
296
|
-
"settings.keys.
|
|
297
|
-
"settings.keys.
|
|
298
|
-
"settings.keys.
|
|
299
|
-
"settings.keys.
|
|
300
|
-
"settings.keys.
|
|
301
|
-
"settings.keys.
|
|
302
|
-
"settings.keys.
|
|
303
|
-
"settings.keys.
|
|
304
|
-
"settings.keys.
|
|
305
|
-
"settings.keys.
|
|
306
|
-
"settings.
|
|
307
|
-
"settings.
|
|
308
|
-
"settings.
|
|
309
|
-
"settings.
|
|
310
|
-
"settings.
|
|
311
|
-
"settings.
|
|
312
|
-
"settings.
|
|
313
|
-
"settings.
|
|
314
|
-
"settings.
|
|
315
|
-
"settings.
|
|
316
|
-
"settings.license.
|
|
317
|
-
"settings.license.
|
|
318
|
-
"settings.license.
|
|
319
|
-
"settings.
|
|
320
|
-
"settings.
|
|
321
|
-
"settings.
|
|
322
|
-
"settings.
|
|
323
|
-
"settings.budget.
|
|
324
|
-
"settings.
|
|
325
|
-
"settings.
|
|
326
|
-
"settings.
|
|
327
|
-
"settings.
|
|
328
|
-
"settings.
|
|
329
|
-
"settings.
|
|
330
|
-
"settings.
|
|
331
|
-
"settings.
|
|
332
|
-
"settings.
|
|
333
|
-
"settings.
|
|
334
|
-
"settings.
|
|
335
|
-
"settings.
|
|
336
|
-
"settings.
|
|
337
|
-
"settings.audit.
|
|
338
|
-
"settings.audit.
|
|
339
|
-
"settings.
|
|
340
|
-
"settings.
|
|
341
|
-
"settings.
|
|
342
|
-
"settings.
|
|
343
|
-
"settings.
|
|
344
|
-
"settings.
|
|
345
|
-
"settings.
|
|
346
|
-
"settings.
|
|
347
|
-
"
|
|
348
|
-
"
|
|
349
|
-
"
|
|
350
|
-
"
|
|
351
|
-
"panel.status.
|
|
352
|
-
"panel.status.
|
|
353
|
-
"panel.status.
|
|
354
|
-
"panel.status.
|
|
355
|
-
"panel.status.
|
|
356
|
-
"panel.status.
|
|
357
|
-
"panel.status.
|
|
358
|
-
"panel.status.
|
|
359
|
-
"panel.status.
|
|
360
|
-
"panel.status.
|
|
361
|
-
"panel.status.
|
|
362
|
-
"panel.status.
|
|
363
|
-
"panel.status.
|
|
364
|
-
"panel.status.
|
|
365
|
-
"panel.status.
|
|
366
|
-
"panel.status.
|
|
367
|
-
"panel.status.
|
|
368
|
-
"panel.
|
|
369
|
-
"panel.
|
|
370
|
-
"panel.
|
|
371
|
-
"panel.
|
|
372
|
-
"panel.confirm.
|
|
373
|
-
"panel.
|
|
374
|
-
"panel.
|
|
375
|
-
"panel.
|
|
376
|
-
"panel.
|
|
377
|
-
"panel.
|
|
378
|
-
"panel.voice.
|
|
379
|
-
"panel.voice.
|
|
380
|
-
"panel.voice.
|
|
381
|
-
"panel.voice.
|
|
382
|
-
"panel.voice.
|
|
383
|
-
"panel.voice.
|
|
384
|
-
"panel.voice.
|
|
385
|
-
"panel.voice.
|
|
386
|
-
"panel.voice.
|
|
387
|
-
"panel.voice.
|
|
388
|
-
"panel.voice.
|
|
389
|
-
"panel.voice.
|
|
390
|
-
"panel.voice.
|
|
391
|
-
"panel.voice.
|
|
392
|
-
"panel.voice.
|
|
393
|
-
"panel.voice.
|
|
394
|
-
"panel.voice.
|
|
395
|
-
"panel.voice.
|
|
396
|
-
"panel.voice.
|
|
397
|
-
"panel.voice.
|
|
398
|
-
"panel.
|
|
399
|
-
"panel.
|
|
400
|
-
"panel.
|
|
401
|
-
"panel.
|
|
402
|
-
"panel.
|
|
403
|
-
"panel.
|
|
404
|
-
"panel.
|
|
405
|
-
"panel.tip.
|
|
406
|
-
"panel.tip.
|
|
407
|
-
"panel.tip.
|
|
408
|
-
"panel.tip.
|
|
409
|
-
"panel.tip.
|
|
410
|
-
"panel.tip.
|
|
411
|
-
"panel.tip.
|
|
412
|
-
"panel.tip.
|
|
413
|
-
"panel.tip.
|
|
414
|
-
"panel.tip.
|
|
415
|
-
"panel.tip.
|
|
416
|
-
"panel.tip.
|
|
417
|
-
"panel.tip.
|
|
418
|
-
"panel.tip.
|
|
419
|
-
"panel.tip.
|
|
420
|
-
"panel.tip.
|
|
421
|
-
"panel.tip.
|
|
422
|
-
"panel.tip.
|
|
423
|
-
"panel.
|
|
424
|
-
"panel.
|
|
425
|
-
"panel.
|
|
426
|
-
"panel.
|
|
427
|
-
"panel.aria.
|
|
428
|
-
"panel.aria.
|
|
429
|
-
"panel.aria.
|
|
430
|
-
"panel.
|
|
431
|
-
"panel.
|
|
432
|
-
"panel.
|
|
433
|
-
"panel.
|
|
434
|
-
"panel.
|
|
435
|
-
"panel.
|
|
436
|
-
"panel.
|
|
437
|
-
"panel.
|
|
438
|
-
"panel.
|
|
439
|
-
"panel.
|
|
440
|
-
"panel.
|
|
441
|
-
"panel.
|
|
442
|
-
"panel.
|
|
443
|
-
"panel.
|
|
444
|
-
"panel.
|
|
445
|
-
"panel.feedback.
|
|
446
|
-
"panel.feedback.
|
|
447
|
-
"panel.feedback.
|
|
448
|
-
"panel.feedback.
|
|
449
|
-
"panel.feedback.
|
|
450
|
-
"panel.
|
|
451
|
-
"panel.
|
|
452
|
-
"panel.
|
|
453
|
-
"panel.
|
|
454
|
-
"panel.pair.
|
|
455
|
-
"panel.
|
|
456
|
-
"panel.
|
|
457
|
-
"panel.
|
|
458
|
-
"panel.
|
|
459
|
-
"panel.
|
|
460
|
-
"panel.
|
|
461
|
-
"panel.nac3.
|
|
462
|
-
"panel.nac3.
|
|
463
|
-
"panel.nac3.
|
|
464
|
-
"panel.
|
|
465
|
-
"panel.
|
|
466
|
-
"panel.
|
|
467
|
-
"panel.
|
|
468
|
-
"panel.
|
|
469
|
-
"panel.
|
|
470
|
-
"panel.
|
|
471
|
-
"panel.
|
|
472
|
-
"panel.
|
|
473
|
-
"panel.
|
|
474
|
-
"panel.
|
|
475
|
-
"panel.
|
|
476
|
-
"panel.license.
|
|
477
|
-
"panel.license.
|
|
478
|
-
"panel.license.
|
|
479
|
-
"panel.license.
|
|
480
|
-
"panel.license.
|
|
481
|
-
"panel.license.
|
|
482
|
-
"panel.license.
|
|
483
|
-
"panel.license.
|
|
484
|
-
"panel.license.
|
|
485
|
-
"panel.license.
|
|
486
|
-
"panel.
|
|
487
|
-
"panel.
|
|
488
|
-
"panel.
|
|
489
|
-
"panel.
|
|
490
|
-
"panel.
|
|
491
|
-
"panel.
|
|
492
|
-
"panel.
|
|
493
|
-
"panel.
|
|
494
|
-
"panel.
|
|
495
|
-
"panel.agentsChat.
|
|
496
|
-
"panel.agentsChat.
|
|
497
|
-
"panel.
|
|
498
|
-
"panel.
|
|
499
|
-
"panel.
|
|
500
|
-
"panel.
|
|
501
|
-
"panel.
|
|
502
|
-
"panel.
|
|
503
|
-
"panel.
|
|
504
|
-
"panel.
|
|
505
|
-
"panel.
|
|
506
|
-
"panel.
|
|
507
|
-
"panel.
|
|
508
|
-
"panel.
|
|
509
|
-
"panel.
|
|
510
|
-
"panel.
|
|
511
|
-
"panel.
|
|
512
|
-
"panel.brain.
|
|
513
|
-
"panel.brain.
|
|
514
|
-
"panel.
|
|
515
|
-
"panel.
|
|
516
|
-
"panel.
|
|
517
|
-
"panel.
|
|
518
|
-
"panel.bridge.
|
|
519
|
-
"panel.
|
|
520
|
-
"panel.
|
|
521
|
-
"panel.
|
|
522
|
-
"panel.
|
|
523
|
-
"panel.
|
|
524
|
-
"panel.
|
|
525
|
-
"panel.
|
|
526
|
-
"panel.
|
|
527
|
-
}
|
|
184
|
+
"pizarron.graph.orbit.speed": "Vitesse orbitale",
|
|
185
|
+
"startup.tab.graph": "Graphe visuel",
|
|
186
|
+
"startup.tab.graphSem": "Graphe semantique",
|
|
187
|
+
"startup.tab.pendings": "En attente",
|
|
188
|
+
"startup.tab.workflow": "Workflow",
|
|
189
|
+
"settings.startupTabs": "Onglets a l'ouverture (graphe, en attente, workflow)",
|
|
190
|
+
"graph.term.nodes": "noeuds",
|
|
191
|
+
"graph.term.edges": "aretes",
|
|
192
|
+
"coding.read": "Lecture de {x}",
|
|
193
|
+
"coding.read_bare": "Lecture d'un fichier",
|
|
194
|
+
"coding.edit": "Modification de {x}",
|
|
195
|
+
"coding.edit_bare": "Modification d'un fichier",
|
|
196
|
+
"coding.write": "Ecriture de {x}",
|
|
197
|
+
"coding.write_bare": "Ecriture d'un fichier",
|
|
198
|
+
"coding.notebook_bare": "Modification du notebook",
|
|
199
|
+
"coding.bash": "Execution : {x}",
|
|
200
|
+
"coding.bash_bare": "Execution d'une commande",
|
|
201
|
+
"coding.grep": "Recherche \"{x}\"",
|
|
202
|
+
"coding.grep_bare": "Recherche dans le code",
|
|
203
|
+
"coding.glob": "Liste de {x}",
|
|
204
|
+
"coding.glob_bare": "Liste des fichiers",
|
|
205
|
+
"coding.web_bare": "Lecture du web",
|
|
206
|
+
"coding.websearch": "Recherche web : {x}",
|
|
207
|
+
"coding.websearch_bare": "Recherche web",
|
|
208
|
+
"coding.task": "Sous-agent : {x}",
|
|
209
|
+
"coding.task_bare": "Lancement d'un sous-agent",
|
|
210
|
+
"coding.todo": "Mise a jour de sa liste de taches",
|
|
211
|
+
"coding.verb_bare": "Execution d'un verbe yujin",
|
|
212
|
+
"panel.button.stop": "Arreter",
|
|
213
|
+
"panel.status.stopping": "Arret en cours...",
|
|
214
|
+
"panel.status.noActiveTurn": "Aucun tour n'etait en cours.",
|
|
215
|
+
"panel.status.interruptFailed": "Impossible d'envoyer l'interruption.",
|
|
216
|
+
"panel.status.turnInterrupted": "Tour interrompu.",
|
|
217
|
+
"panel.label.interrupted": "(interrompu)",
|
|
218
|
+
"panel.queue.label": "En file",
|
|
219
|
+
"panel.queue.remove": "Retirer de la file",
|
|
220
|
+
"panel.project.switchHint": "Changer de projet",
|
|
221
|
+
"panel.project.title": "Projets",
|
|
222
|
+
"panel.project.add": "Ajouter un projet...",
|
|
223
|
+
"panel.project.addPrompt": "Chemin absolu du projet a ajouter :",
|
|
224
|
+
"panel.project.switching": "Changement de projet...",
|
|
225
|
+
"startup.tab.files": "Fichiers",
|
|
226
|
+
"panel.project.remove": "Retirer de la liste",
|
|
227
|
+
"panel.project.removeConfirm": "Retirer ce projet de la liste ? (ne supprime pas les fichiers sur le disque)",
|
|
228
|
+
"panel.project.removed": "Projet retiré de la liste",
|
|
229
|
+
"panel.files.refresh": "Actualiser",
|
|
230
|
+
"panel.files.loading": "Chargement...",
|
|
231
|
+
"panel.files.error": "Impossible de lire les fichiers.",
|
|
232
|
+
"panel.files.empty": "(aucun fichier)",
|
|
233
|
+
"panel.files.truncated": "(liste tronquée)",
|
|
234
|
+
"panel.files.opened": "Ouvert",
|
|
235
|
+
"panel.files.openFailed": "Impossible d'ouvrir le fichier.",
|
|
236
|
+
"panel.files.searchName": "Filtrer par nom",
|
|
237
|
+
"panel.files.searchType": "Type (ex : ts, png)",
|
|
238
|
+
"panel.files.matches": "{n} resultats",
|
|
239
|
+
"panel.files.noMatches": "Aucun resultat",
|
|
240
|
+
"startup.tab.tasks": "Taches",
|
|
241
|
+
"settings.bridge.title": "Coordination entre instances",
|
|
242
|
+
"settings.bridge.accept": "Accepter les messages diriges d'autres instances (injectes comme chat)",
|
|
243
|
+
"settings.bridge.composePlaceholder": "Message aux autres instances...",
|
|
244
|
+
"settings.voice.title": "Voix",
|
|
245
|
+
"settings.voice.mode": "Mode",
|
|
246
|
+
"settings.voice.modeMic": "mode micro",
|
|
247
|
+
"settings.voice.stt": "STT",
|
|
248
|
+
"settings.voice.sttBrowser": "STT navigateur",
|
|
249
|
+
"settings.voice.ttsEngine": "Moteur TTS",
|
|
250
|
+
"settings.voice.ttsBrowser": "TTS navigateur",
|
|
251
|
+
"settings.voice.ttsVoice": "Voix TTS (Google uniquement)",
|
|
252
|
+
"settings.vad.title": "VAD (detection de silence)",
|
|
253
|
+
"settings.vad.resetDefaults": "Reinitialiser",
|
|
254
|
+
"settings.vad.engine": "Moteur",
|
|
255
|
+
"settings.vad.engineAmplitude": "Amplitude (RMS)",
|
|
256
|
+
"settings.vad.engineBand": "Bande 80-400Hz",
|
|
257
|
+
"settings.vad.baselineWindow": "Fenetre de reference",
|
|
258
|
+
"settings.vad.thresholdMult": "Mult. de seuil (baseline x N)",
|
|
259
|
+
"settings.vad.thresholdMin": "Seuil minimum",
|
|
260
|
+
"settings.vad.thresholdMax": "Seuil maximum",
|
|
261
|
+
"settings.vad.silence": "Silence pour fermer",
|
|
262
|
+
"settings.vad.minVoiced": "Voix minimale (anti-blip)",
|
|
263
|
+
"settings.vad.tick": "Tick du VAD",
|
|
264
|
+
"settings.vad.bandLow": "Bande voix : low (Hz)",
|
|
265
|
+
"settings.vad.bandHigh": "Bande voix : high (Hz)",
|
|
266
|
+
"settings.vad.showOverlay": "Afficher l'overlay live",
|
|
267
|
+
"settings.vad.logStats": "Journaliser les stats par session",
|
|
268
|
+
"settings.brain.anthropicMode": "Anthropic : mode",
|
|
269
|
+
"settings.brain.modePlan": "Plan (abonnement Claude)",
|
|
270
|
+
"settings.brain.modeConsole": "Console (API key)",
|
|
271
|
+
"settings.brain.modeNote": "S'applique a la reouverture du panneau.",
|
|
272
|
+
"settings.brain.ecoEnabled": "Mode eco active",
|
|
273
|
+
"settings.brain.ecoHint": "desactive = frontier toujours",
|
|
274
|
+
"settings.brain.modelEco": "Modele eco",
|
|
275
|
+
"settings.brain.modelFrontier": "Modele frontier",
|
|
276
|
+
"settings.brain.modelMultimodal": "Modele multimodal",
|
|
277
|
+
"settings.brain.multimodalClearTitle": "Retirer le brain multimodal dedie (retour au routage de vision automatique)",
|
|
278
|
+
"settings.brain.auto": "Auto",
|
|
279
|
+
"settings.brain.multimodalHint": "Brain dedie pour les tours avec image. Auto = routage de vision automatique (le frontier s'il voit, sinon un avis).",
|
|
280
|
+
"settings.brain.geminiCache": "Cache explicite de Gemini (CachedContent)",
|
|
281
|
+
"settings.brain.geminiCacheHint": "Opt-in. Utile pour les longues sessions avec Gemini Pro ; pour les sessions courtes, le cache implicite gratuit de 2.5 suffit.",
|
|
282
|
+
"settings.federation.title": "Federation de brain",
|
|
283
|
+
"settings.federation.intro": "Utilisez le brain d'un autre Forge (sa key ne quitte jamais sa machine) ou pretez le votre. Votre code s'execute en local ; seule l'inference voyage.",
|
|
284
|
+
"settings.federation.connectedTo": "Connecte a",
|
|
285
|
+
"settings.federation.disconnect": "Deconnecter",
|
|
286
|
+
"settings.federation.connectMe": "Me connecter",
|
|
287
|
+
"settings.federation.tokenPlaceholder": "Collez le code de federation",
|
|
288
|
+
"settings.federation.connect": "Connecter",
|
|
289
|
+
"settings.federation.lendBrain": "Preter mon brain",
|
|
290
|
+
"settings.federation.generateCode": "Generer un code",
|
|
291
|
+
"settings.federation.host": "Heberger (repondre aux enfants)",
|
|
292
|
+
"settings.federation.fedBrain": "Brain de federation",
|
|
293
|
+
"settings.federation.fedBrainNote": "Celui qui repond aux enfants. API directe (DeepSeek par defaut). Claude Plan ne peut pas heberger ; il faut une key avec credit.",
|
|
294
|
+
"settings.federation.codeOnce": "Code (usage unique)",
|
|
295
|
+
"settings.federation.copy": "Copier",
|
|
296
|
+
"settings.keys.title": "API keys (BYOK)",
|
|
297
|
+
"settings.keys.configure": "Configurer",
|
|
298
|
+
"settings.keys.remove": "Retirer",
|
|
299
|
+
"settings.keys.brainAnthropic": "Brain (Anthropic)",
|
|
300
|
+
"settings.keys.brainOpenai": "Brain (OpenAI)",
|
|
301
|
+
"settings.keys.brainGoogle": "Brain (Google IA)",
|
|
302
|
+
"settings.keys.brainDeepseek": "Brain (DeepSeek)",
|
|
303
|
+
"settings.keys.brainXai": "Brain (xAI / Grok)",
|
|
304
|
+
"settings.keys.brainMistral": "Brain (Mistral)",
|
|
305
|
+
"settings.keys.brainCohere": "Brain (Cohere)",
|
|
306
|
+
"settings.keys.sttGoogle": "STT Google",
|
|
307
|
+
"settings.keys.ttsGoogle": "TTS Google",
|
|
308
|
+
"settings.keys.ttsElevenlabs": "TTS ElevenLabs",
|
|
309
|
+
"settings.keys.sttWhisper": "STT Whisper",
|
|
310
|
+
"settings.lang.title": "Langue",
|
|
311
|
+
"settings.lang.panelVoice": "Panneau + voix",
|
|
312
|
+
"settings.lang.changeButton": "Changer de langue",
|
|
313
|
+
"settings.vault.title": "Vault (chiffre)",
|
|
314
|
+
"settings.vault.slots": "Slots",
|
|
315
|
+
"settings.vault.open": "Ouvrir le vault",
|
|
316
|
+
"settings.license.email": "Email",
|
|
317
|
+
"settings.license.validated": "Valide",
|
|
318
|
+
"settings.license.connectHint": "Connectez votre compte Polar. Saisissez l'email avec lequel vous avez paye et nous synchronisons votre plan automatiquement.",
|
|
319
|
+
"settings.license.emailPlaceholder": "email@exemple.com",
|
|
320
|
+
"settings.license.connect": "Connecter",
|
|
321
|
+
"settings.license.sync": "Synchroniser avec Polar",
|
|
322
|
+
"settings.license.buy": "Acheter / activer le plan",
|
|
323
|
+
"settings.budget.title": "Budget ce mois-ci",
|
|
324
|
+
"settings.budget.renews": "Renouvellement",
|
|
325
|
+
"settings.budget.tokensEco": "Tokens eco",
|
|
326
|
+
"settings.budget.tokensFrontier": "Tokens frontier",
|
|
327
|
+
"settings.budget.buyExtension": "Acheter une extension de tokens",
|
|
328
|
+
"settings.limits.title": "Limites (avance)",
|
|
329
|
+
"settings.limits.editHint": "Modifiez n'importe quelle valeur + tab/blur enregistre.",
|
|
330
|
+
"settings.limits.reset": "Reinitialiser aux valeurs par defaut",
|
|
331
|
+
"settings.bookmarks.title": "Signets du Reader",
|
|
332
|
+
"settings.graph.title": "Graphe de connaissances du projet",
|
|
333
|
+
"settings.pair.title": "Lier le telephone",
|
|
334
|
+
"settings.pair.hint": "Ouvrez Forge Mobile, touchez \"Lier\" et scannez ce QR. C'est fait.",
|
|
335
|
+
"settings.pair.generateQr": "Generer le QR",
|
|
336
|
+
"settings.pair.cantRead": "La camera ne lit pas le QR ? Copiez ce code et collez-le dans Forge Mobile :",
|
|
337
|
+
"settings.audit.viewFull": "Voir tout",
|
|
338
|
+
"settings.audit.close": "Fermer",
|
|
339
|
+
"settings.audit.allKinds": "Tous les kinds",
|
|
340
|
+
"settings.audit.allModes": "Tous les modes",
|
|
341
|
+
"settings.audit.copyJson": "Copier le JSON",
|
|
342
|
+
"settings.audit.closeDetail": "Fermer le detail",
|
|
343
|
+
"settings.about.title": "A propos",
|
|
344
|
+
"settings.danger.title": "Zone de danger",
|
|
345
|
+
"settings.danger.warning": "Quand active, Yujin execute TOUTE action sans demander de confirmation (y compris shell.exec, rm, git push --force, etc). La vitesse avant la securite. Tout est enregistre dans l'audit log.",
|
|
346
|
+
"settings.keyEditor.placeholder": "Collez votre API key ici",
|
|
347
|
+
"settings.license.title": "Licence",
|
|
348
|
+
"settings.plan": "Forfait",
|
|
349
|
+
"settings.audit.title": "Journal d'audit",
|
|
350
|
+
"settings.legal.title": "Mentions légales",
|
|
351
|
+
"panel.status.projectSwitchFail": "Impossible de changer de projet.",
|
|
352
|
+
"panel.status.projectRemoveFail": "Impossible de retirer le projet.",
|
|
353
|
+
"panel.status.projectAddFail": "Impossible d'ajouter le projet.",
|
|
354
|
+
"panel.status.cancelFail": "Annulation impossible : {reason}",
|
|
355
|
+
"panel.status.cancelNetError": "Erreur reseau lors de l'annulation du shell.",
|
|
356
|
+
"panel.status.notEditable": "Ce type de contenu n'est pas modifiable.",
|
|
357
|
+
"panel.status.savedAsPicker": "Enregistre sous : {name} (a l'emplacement choisi dans la boite de dialogue).",
|
|
358
|
+
"panel.status.saveAsFail": "Erreur d'Enregistrer sous : {error} -- utilisation du fallback.",
|
|
359
|
+
"panel.status.saveFail": "Erreur lors de l'enregistrement : {error}",
|
|
360
|
+
"panel.status.savedAs": "Enregistre sous : {path} ({bytes} octets)",
|
|
361
|
+
"panel.status.netError": "Erreur reseau : {error}",
|
|
362
|
+
"panel.status.savedTabOnly": "Modifications enregistrees dans l'onglet (pas sur le disque -- sans file_path).",
|
|
363
|
+
"panel.status.saved": "Enregistre : {path} ({bytes} octets)",
|
|
364
|
+
"panel.status.copied": "Copie dans le presse-papiers.",
|
|
365
|
+
"panel.status.copyFail": "Copie impossible.",
|
|
366
|
+
"panel.status.modeAvailable": "Modes disponibles : didactico, tecnico. Usage : /modo tecnico",
|
|
367
|
+
"panel.status.modeChangeFail": "Impossible de changer le mode : {error}",
|
|
368
|
+
"panel.status.modeChanged": "Mode change en {target}. Le prochain tour utilise deja ce mode.",
|
|
369
|
+
"panel.status.genericError": "Erreur : {error}",
|
|
370
|
+
"panel.status.brainTierAuto": "Brain tier de retour a auto (le router decide selon le verbe / la phase).",
|
|
371
|
+
"panel.status.brainTierForced": "Brain tier force a \"{target}\" pour cette session. /auto revient au router.",
|
|
372
|
+
"panel.confirm.tabUnsaved": "L'onglet \"{title}\" a des modifications non enregistrees. Fermer quand meme ?",
|
|
373
|
+
"panel.confirm.tabsUnsaved": "Des onglets ont des modifications non enregistrees. Tout fermer quand meme ?",
|
|
374
|
+
"panel.confirm.discardChanges": "Abandonner les modifications non enregistrees ?",
|
|
375
|
+
"panel.confirm.removeSlot": "Retirer le slot \"{slot}\" ? Cette action est irreversible.",
|
|
376
|
+
"panel.confirm.removeKey": "Retirer la key de {slot} ?",
|
|
377
|
+
"panel.prompt.saveAs": "Enregistrer sous (chemin relatif au projet) :",
|
|
378
|
+
"panel.voice.sttFallback": "STT du navigateur indisponible ; utilisation du fallback serveur.",
|
|
379
|
+
"panel.voice.noMicSupport": "Votre navigateur ne prend pas en charge l'acces au microphone.",
|
|
380
|
+
"panel.voice.recordingCountdown": "Enregistrement... arret auto dans {n}s",
|
|
381
|
+
"panel.voice.autoStopped": "Enregistrement arrete automatiquement a 55s (limite de 1 min de Google STT). Essayez plus court.",
|
|
382
|
+
"panel.voice.noAudio": "Aucun audio capture. Reessayez.",
|
|
383
|
+
"panel.voice.audioTooLong": "Audio trop long (>1 min). Limite synchrone de Google STT. Essayez plus court.",
|
|
384
|
+
"panel.voice.ttsUnavailable": "TTS du navigateur indisponible ; revenez a Google dans les parametres.",
|
|
385
|
+
"panel.voice.micClosedHalfDuplex": "Micro ferme pendant que Yujin parle (half-duplex).",
|
|
386
|
+
"panel.voice.micBlocked": "Microphone bloque. Autorisez le microphone pour cette app dans les parametres du navigateur et reessayez.",
|
|
387
|
+
"panel.voice.noMicDevice": "Aucun microphone detecte sur cet appareil.",
|
|
388
|
+
"panel.voice.micOpenFail": "Impossible d'ouvrir le microphone : {error}",
|
|
389
|
+
"panel.voice.micOpenListening": "Micro ouvert, ecoute...",
|
|
390
|
+
"panel.voice.listening": "Je vous ecoute...",
|
|
391
|
+
"panel.voice.listeningInterim": "Je vous ecoute... {text}",
|
|
392
|
+
"panel.voice.micBlockedBrowser": "Microphone bloque par le navigateur. Cliquez sur l'icone de cadenas dans la barre d'URL et autorisez le microphone, puis rechargez la page. Ou passez le STT a \"google\" / \"whisper\" dans les parametres si vous avez la API key.",
|
|
393
|
+
"panel.voice.noMicPhysical": "Aucun microphone physique detecte. Branchez-en un ou passez le STT a \"google\" / \"whisper\" dans les parametres.",
|
|
394
|
+
"panel.voice.networkRequired": "Web Speech necessite une connexion internet (Chrome utilise Google en coulisses). Essayez sans connexion intermittente ou passez le STT a \"whisper\" si vous avez la API key.",
|
|
395
|
+
"panel.voice.langNotSupported": "Votre navigateur ne prend pas en charge cette langue pour le STT. Changez la langue du panneau pour une langue prise en charge (en, es, pt) ou passez le STT a \"google\" / \"whisper\".",
|
|
396
|
+
"panel.voice.micError": "Erreur de micro : {error}",
|
|
397
|
+
"panel.voice.noAudioToRecognizer": "Aucun audio n'a atteint le moteur de reconnaissance : la dictee du navigateur ne capture pas dans cette app.",
|
|
398
|
+
"panel.voice.micOpenNoVoice": "Micro ouvert mais aucune voix detectee. Rapprochez-vous du microphone et parlez plus fort ; si cela persiste, la dictee gratuite ne fonctionne pas dans cette PWA.",
|
|
399
|
+
"panel.voice.voiceNoText": "Voix detectee mais le navigateur n'a renvoye aucun texte (STT gratuit indisponible dans cette PWA).",
|
|
400
|
+
"panel.voice.startingDictation": "Demarrage de la dictee...",
|
|
401
|
+
"panel.voice.couldNotStartMic": "Impossible de demarrer le micro : {error}",
|
|
402
|
+
"panel.status.imageTooLarge": "Image trop grande (>6 Mo) : {name}",
|
|
403
|
+
"panel.status.imageReady": "Image prete a envoyer : {name}",
|
|
404
|
+
"panel.status.imageReadFail": "Impossible de lire l'image : {error}",
|
|
405
|
+
"panel.tip.attachFile": "Joindre un fichier",
|
|
406
|
+
"panel.tip.refreshDiscovery": "Actualiser la decouverte",
|
|
407
|
+
"panel.tip.refreshNow": "Actualiser maintenant",
|
|
408
|
+
"panel.tip.filterByProject": "Filtrer par projet",
|
|
409
|
+
"panel.tip.concurrentRuns": "Executions simultanees : limites globales / par projet",
|
|
410
|
+
"panel.tip.mcpBridges": "MCP Bridges (F101)",
|
|
411
|
+
"panel.tip.activity": "Activite des agents + inspecteur de bridge + chat par agent",
|
|
412
|
+
"panel.tip.settings": "Parametres (mode vocal, STT, TTS, cles, langue)",
|
|
413
|
+
"panel.tip.zoomOut": "Zoom arriere (Ctrl -)",
|
|
414
|
+
"panel.tip.zoomReset": "Reinitialiser le zoom (Ctrl 0)",
|
|
415
|
+
"panel.tip.zoomIn": "Zoom avant (Ctrl +)",
|
|
416
|
+
"panel.tip.maximize": "Agrandir / restaurer (plein ecran)",
|
|
417
|
+
"panel.tip.closeBoard": "Fermer tout le tableau",
|
|
418
|
+
"panel.tip.openInEditor": "Ouvrir dans mon editeur",
|
|
419
|
+
"panel.tip.open": "Ouvrir",
|
|
420
|
+
"panel.tip.saveAs": "Enregistrer sous -- choisissez un nouveau chemin (relatif au projet)",
|
|
421
|
+
"panel.tip.codeModeDetail": "Detaille : fichiers, diffs et commandes en direct",
|
|
422
|
+
"panel.tip.codeModeZen": "Sumi-e : art avec texte occasionnel",
|
|
423
|
+
"panel.tip.cancelShell": "Annuler la commande shell",
|
|
424
|
+
"panel.tip.closeTab": "Fermer l'onglet",
|
|
425
|
+
"panel.tip.reopenNativeTabs": "Rouvrir les onglets natifs fermes",
|
|
426
|
+
"panel.tip.notTestedYet": "pas encore teste",
|
|
427
|
+
"panel.aria.activity": "Activite",
|
|
428
|
+
"panel.aria.settings": "Parametres",
|
|
429
|
+
"panel.aria.zoomOut": "Zoom arriere",
|
|
430
|
+
"panel.aria.zoomIn": "Zoom avant",
|
|
431
|
+
"panel.aria.maximize": "Agrandir",
|
|
432
|
+
"panel.aria.closeBoard": "tout fermer",
|
|
433
|
+
"panel.aria.thinking": "reflexion",
|
|
434
|
+
"panel.hint.boardEmpty": "Le contenu structure apparait ici : code, tableaux, documents. Demandez a Yujin d’ecrire ou de modifier quelque chose.",
|
|
435
|
+
"panel.hint.planMode": "Vous etes en mode Plan (abonnement). Le tableau s’affiche lorsque le brain fonctionne en mode API : changez-le dans <strong>Parametres > Brain > Anthropic : mode > Console</strong> et rouvrez le panneau.",
|
|
436
|
+
"panel.hint.bookmarksEmpty": "Aucun bookmark. Demandez a Yujin \"marque ce point comme ...\" en lisant un doc.",
|
|
437
|
+
"panel.voice.replyFailed": "Echec de la reponse vocale : {err}",
|
|
438
|
+
"panel.voice.replyError": "Erreur de reponse vocale : {err}",
|
|
439
|
+
"panel.status.languageSwitchFailed": "Echec du changement de langue : {err}",
|
|
440
|
+
"panel.status.languageListFailed": "Impossible de charger la liste des langues",
|
|
441
|
+
"panel.legal.loading": "Chargement...",
|
|
442
|
+
"panel.legal.loadError": "Erreur {status} lors du chargement du document.",
|
|
443
|
+
"panel.legal.networkError": "Erreur reseau : {err}",
|
|
444
|
+
"panel.legal.defaultTitle": "Mentions legales",
|
|
445
|
+
"panel.feedback.copied": "Copie",
|
|
446
|
+
"panel.feedback.copyFailed": "Echec de la copie",
|
|
447
|
+
"panel.feedback.clipboardUnavailable": "Presse-papiers indisponible",
|
|
448
|
+
"panel.feedback.saving": "Enregistrement...",
|
|
449
|
+
"panel.feedback.saved": "Enregistre.",
|
|
450
|
+
"panel.feedback.saveError": "erreur d’enregistrement",
|
|
451
|
+
"panel.feedback.netError": "erreur reseau",
|
|
452
|
+
"panel.feedback.netErrorSaving": "erreur reseau lors de l’enregistrement",
|
|
453
|
+
"panel.feedback.errorPrefix": "Erreur : {detail}",
|
|
454
|
+
"panel.pair.generating": "Generation...",
|
|
455
|
+
"panel.pair.generateQr": "Generer le QR",
|
|
456
|
+
"panel.pair.copy": "Copier",
|
|
457
|
+
"panel.pair.expiry": "Expire dans ~{mins} min. Regenerez-le s’il expire.",
|
|
458
|
+
"panel.pair.qrNetError": "Erreur reseau lors de la generation du QR.",
|
|
459
|
+
"panel.audit.copyJson": "Copier le JSON",
|
|
460
|
+
"panel.limits.resetApplied": "Reinitialisation aux valeurs par defaut appliquee",
|
|
461
|
+
"panel.nac3.effects": "Effets : {list}",
|
|
462
|
+
"panel.nac3.effectsUnknown": "inconnus",
|
|
463
|
+
"panel.nac3.cancel": "Annuler",
|
|
464
|
+
"panel.nac3.reject": "Rejeter",
|
|
465
|
+
"panel.nac3.approve": "Approuver",
|
|
466
|
+
"panel.nac3.approveDestructive": "Approuver (destructif)",
|
|
467
|
+
"panel.nac3.executing": "Execution...",
|
|
468
|
+
"panel.tts.providerBrowser": "TTS navigateur",
|
|
469
|
+
"panel.tts.providerGoogle": "TTS Google",
|
|
470
|
+
"panel.tts.providerTitle": "Cliquez pour basculer entre le navigateur (SpeechSynthesis natif, voix du SE) et Google Cloud TTS (cote serveur).",
|
|
471
|
+
"panel.stt.providerBrowser": "STT navigateur",
|
|
472
|
+
"panel.stt.providerGoogle": "STT Google",
|
|
473
|
+
"panel.stt.providerWhisper": "STT Whisper",
|
|
474
|
+
"panel.stt.providerTitle": "Cliquez pour basculer entre le navigateur (rapide + es-AR natif + gratuit), Google Cloud STT (cote serveur, BYOK) ou Whisper (cote serveur, BYOK).",
|
|
475
|
+
"panel.tts.voiceTitle": "Voix actuelle : {id} / {persona} ({gender}) -- {style}. Cliquez pour faire defiler. Studio = articule s clairement ; Neural2 = espagnol naturel (aspire les s finaux).",
|
|
476
|
+
"panel.license.lendNeedsLicense": "activez votre licence pour preter votre brain",
|
|
477
|
+
"panel.license.emailInvalid": "Saisissez un email valide (avec @).",
|
|
478
|
+
"panel.license.connecting": "Connexion...",
|
|
479
|
+
"panel.license.savingEmail": "Enregistrement de l’email + synchronisation avec Polar...",
|
|
480
|
+
"panel.license.syncFailedRetry": "Email enregistre, mais la synchro a echoue : {err}{http}. Si vous venez de payer, attendez 1-2 min puis cliquez sur \"Synchroniser avec Polar\".",
|
|
481
|
+
"panel.license.planOk": "OK -- offre : {plan}.",
|
|
482
|
+
"panel.license.netError": "Erreur reseau : {err}",
|
|
483
|
+
"panel.license.syncing": "Synchronisation...",
|
|
484
|
+
"panel.license.querying": "Interrogation du serveur...",
|
|
485
|
+
"panel.license.syncError": "Erreur de synchro : {err}{http}",
|
|
486
|
+
"panel.license.planUnchanged": "Offre inchangee : {plan}",
|
|
487
|
+
"panel.license.planUpdated": "Offre mise a jour : {before} -> {after}",
|
|
488
|
+
"panel.license.syncWithPolar": "Synchroniser avec Polar",
|
|
489
|
+
"panel.license.errorWithCode": "erreur : {code}",
|
|
490
|
+
"panel.keyEditor.keyTooShort": "Cle trop courte (min 8 caracteres).",
|
|
491
|
+
"panel.bridge.coordUnavailable": "Coordination indisponible.",
|
|
492
|
+
"panel.bridge.statusUnavailable": "indisponible",
|
|
493
|
+
"panel.mcp.loadingBridges": "Chargement des bridges...",
|
|
494
|
+
"panel.tools.loading": "Chargement des outils...",
|
|
495
|
+
"panel.agentsChat.backPairs": "< Paires",
|
|
496
|
+
"panel.agentsChat.noMessages": "Aucun message dans cette paire.",
|
|
497
|
+
"panel.agentsChat.noAgents": "aucun agent",
|
|
498
|
+
"panel.agentsChat.pickAgent": "Choisissez un agent + tapez du texte avant d’envoyer.",
|
|
499
|
+
"panel.agentsChat.sending": "Envoi...",
|
|
500
|
+
"panel.agentsChat.errorGeneric": "Erreur : {err}",
|
|
501
|
+
"panel.whatsNew.dismiss": "Fermer",
|
|
502
|
+
"panel.alert.noEditor": "Aucun editeur dans le PATH. Copiez le chemin : {path}",
|
|
503
|
+
"panel.alert.pathRelative": "Le chemin doit etre relatif au projet (sans \"/\" initial ni \"..\").",
|
|
504
|
+
"panel.tip.saveTo": "Enregistrer dans {path}",
|
|
505
|
+
"panel.tip.saveToMemory": "(memoire)",
|
|
506
|
+
"panel.button.saveAs": "Enregistrer sous...",
|
|
507
|
+
"panel.aria.concurrentRuns": "Executions simultanees",
|
|
508
|
+
"panel.activity.allProjects": "Tous les projets",
|
|
509
|
+
"panel.activity.loadingFeed": "Chargement du flux...",
|
|
510
|
+
"panel.feedback.savedShort": "enregistre",
|
|
511
|
+
"panel.pair.qrFailed": "Impossible de generer le QR.",
|
|
512
|
+
"panel.brain.modePlan": "Plan (abonnement)",
|
|
513
|
+
"panel.brain.modeConsole": "Console (cle API)",
|
|
514
|
+
"panel.brain.applying": "application de {mode}...",
|
|
515
|
+
"panel.brain.applied": "{mode} applique. Le prochain tour utilise deja ce mode.",
|
|
516
|
+
"panel.brain.reopenHint": "S’applique a la reouverture du panneau.",
|
|
517
|
+
"panel.brain.active": "{mode} actif",
|
|
518
|
+
"panel.bridge.roleHost": "hote",
|
|
519
|
+
"panel.bridge.roleClient": "client",
|
|
520
|
+
"panel.bridge.instanceOne": "instance",
|
|
521
|
+
"panel.bridge.instanceMany": "instances",
|
|
522
|
+
"panel.bridge.you": "vous",
|
|
523
|
+
"panel.tip.deleteTask": "Supprimer la tache",
|
|
524
|
+
"panel.tasks.cmdPlaceholder": "commande (ex : pnpm install)...",
|
|
525
|
+
"panel.readAloud.code": "Code",
|
|
526
|
+
"panel.readAloud.codeLang": "Code en {lang}",
|
|
527
|
+
"panel.readAloud.file": "Fichier {file}",
|
|
528
|
+
"panel.readAloud.content": "Contenu : {content}",
|
|
529
|
+
"panel.pizarron.tabOne": "onglet",
|
|
530
|
+
"panel.pizarron.tabMany": "onglets"
|
|
531
|
+
}
|