@moraya/core 0.1.0 → 0.3.1
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/i18n/index.d.ts +231 -0
- package/dist/i18n/index.js +301 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/locales/ar.json +3873 -0
- package/dist/i18n/locales/de.json +3873 -0
- package/dist/i18n/locales/en.json +3943 -0
- package/dist/i18n/locales/es.json +3871 -0
- package/dist/i18n/locales/fr.json +3871 -0
- package/dist/i18n/locales/hi.json +3873 -0
- package/dist/i18n/locales/ja.json +3873 -0
- package/dist/i18n/locales/ko.json +3873 -0
- package/dist/i18n/locales/pt.json +3873 -0
- package/dist/i18n/locales/ru.json +3873 -0
- package/dist/i18n/locales/zh-CN.json +3943 -0
- package/dist/i18n/locales/zh-Hant.json +3873 -0
- package/package.json +7 -2
|
@@ -0,0 +1,3871 @@
|
|
|
1
|
+
{
|
|
2
|
+
"admin": {
|
|
3
|
+
"__mt": true,
|
|
4
|
+
"title": "Team Admin",
|
|
5
|
+
"tab_members": "Members",
|
|
6
|
+
"tab_kbs": "Knowledge Bases",
|
|
7
|
+
"tab_usage": "Usage",
|
|
8
|
+
"members": "Members",
|
|
9
|
+
"knowledge_bases": "Knowledge Bases",
|
|
10
|
+
"invite_member": "Invite Member",
|
|
11
|
+
"remove_member": "Remove",
|
|
12
|
+
"create_kb": "Create KB",
|
|
13
|
+
"no_members": "No members yet.",
|
|
14
|
+
"no_kbs": "No knowledge bases yet.",
|
|
15
|
+
"col_name": "Name",
|
|
16
|
+
"col_email": "Email",
|
|
17
|
+
"col_role": "Role",
|
|
18
|
+
"col_joined": "Joined",
|
|
19
|
+
"e2e": "E2E",
|
|
20
|
+
"ai": "AI",
|
|
21
|
+
"usage_summary": "Usage Summary",
|
|
22
|
+
"storage": "Storage",
|
|
23
|
+
"notes": "Notes",
|
|
24
|
+
"ai_queries": "AI Queries",
|
|
25
|
+
"active_members": "Active Members",
|
|
26
|
+
"this_month": "this month"
|
|
27
|
+
},
|
|
28
|
+
"agent": {
|
|
29
|
+
"__mt": true,
|
|
30
|
+
"title": "AI Agent",
|
|
31
|
+
"subtitle": "Let AI handle multi-step tasks across your knowledge base",
|
|
32
|
+
"query_placeholder": "Describe a task for the agent to complete...",
|
|
33
|
+
"run": "Run",
|
|
34
|
+
"pause": "Pause",
|
|
35
|
+
"resume": "Resume",
|
|
36
|
+
"cancel": "Cancel",
|
|
37
|
+
"new_task": "New Task",
|
|
38
|
+
"final_answer": "Final Answer",
|
|
39
|
+
"upgrade_required": "AI Agent is available on Personal and above plans.",
|
|
40
|
+
"mode": {
|
|
41
|
+
"react": "ReAct (Adaptive)",
|
|
42
|
+
"plan_execute": "Plan & Execute"
|
|
43
|
+
},
|
|
44
|
+
"history": {
|
|
45
|
+
"title": "Agent History",
|
|
46
|
+
"search_placeholder": "Search tasks...",
|
|
47
|
+
"no_results": "No tasks match your search.",
|
|
48
|
+
"empty": "No agent tasks yet. Start your first task!",
|
|
49
|
+
"steps": "steps"
|
|
50
|
+
},
|
|
51
|
+
"market": {
|
|
52
|
+
"title": "Agent Templates",
|
|
53
|
+
"subtitle": "Browse ready-to-use agent templates",
|
|
54
|
+
"search_placeholder": "Search templates...",
|
|
55
|
+
"no_results": "No templates match your search.",
|
|
56
|
+
"all_tags": "All",
|
|
57
|
+
"use": "Use Template"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"ai": {
|
|
61
|
+
"title": "AI",
|
|
62
|
+
"rules_active": "Règles MORAYA.md actives ({count} sections)",
|
|
63
|
+
"clear_chat": "Effacer la conversation",
|
|
64
|
+
"unconfigured": "L'IA n'est pas configurée.",
|
|
65
|
+
"unconfigured_hint": "Ouvrez les Paramètres ({shortcut}) et configurez votre clé API pour activer les fonctionnalités IA.",
|
|
66
|
+
"open_settings": "Ouvrir les paramètres IA",
|
|
67
|
+
"open_image_settings": "Ouvrir les paramètres AIGC",
|
|
68
|
+
"text_ai_label": "IA textuelle (génération de prompts)",
|
|
69
|
+
"image_ai_label": "IA image (génération d'images)",
|
|
70
|
+
"welcome_title": "Comment puis-je vous aider ?",
|
|
71
|
+
"welcome_hint": "Tapez un message ou utilisez {kbd} pour les commandes",
|
|
72
|
+
"you": "Vous",
|
|
73
|
+
"assistant": "IA",
|
|
74
|
+
"typing": "en cours de saisie...",
|
|
75
|
+
"placeholder": "Demandez n'importe quoi à l'IA...",
|
|
76
|
+
"placeholder_selection": "Posez une question sur la sélection...",
|
|
77
|
+
"send": "Envoyer (⌘↵)",
|
|
78
|
+
"stop": "Arrêter (Esc)",
|
|
79
|
+
"retry": "Réessayer",
|
|
80
|
+
"interrupted": "Interrompu",
|
|
81
|
+
"insert_to_editor": "Insérer dans l'éditeur",
|
|
82
|
+
"replace_selection": "Remplacer la sélection",
|
|
83
|
+
"attach_image": "Joindre une image",
|
|
84
|
+
"attach_image_max": "Maximum {max} images",
|
|
85
|
+
"remove_image": "Supprimer l'image",
|
|
86
|
+
"close_preview": "Fermer l'aperçu",
|
|
87
|
+
"more_actions": "Plus d'actions",
|
|
88
|
+
"voice_transcription": "Transcription vocale IA",
|
|
89
|
+
"config": {
|
|
90
|
+
"title": "Configuration IA",
|
|
91
|
+
"provider": "Fournisseur",
|
|
92
|
+
"api_key": "Clé API",
|
|
93
|
+
"api_key_placeholder": "Entrez la clé API {provider}",
|
|
94
|
+
"api_key_not_required": "Non requis pour Ollama",
|
|
95
|
+
"base_url": "URL de base",
|
|
96
|
+
"model": "Modèle",
|
|
97
|
+
"model_placeholder": "Entrez le nom du modèle",
|
|
98
|
+
"max_tokens": "Tokens maximum",
|
|
99
|
+
"temperature": "Température",
|
|
100
|
+
"test_connection": "Tester la connexion",
|
|
101
|
+
"testing": "Test en cours...",
|
|
102
|
+
"connected": "Connecté !",
|
|
103
|
+
"failed": "Échec",
|
|
104
|
+
"test_failed": "Échec du test de connexion"
|
|
105
|
+
},
|
|
106
|
+
"providers": {
|
|
107
|
+
"claude": "Anthropic Claude",
|
|
108
|
+
"openai": "OpenAI",
|
|
109
|
+
"gemini": "Google Gemini",
|
|
110
|
+
"deepseek": "DeepSeek",
|
|
111
|
+
"ollama": "Ollama (Local)",
|
|
112
|
+
"custom": "API personnalisée",
|
|
113
|
+
"grok": "xAI Grok",
|
|
114
|
+
"mistral": "Mistral AI",
|
|
115
|
+
"glm": "Zhipu GLM",
|
|
116
|
+
"minimax": "MiniMax",
|
|
117
|
+
"doubao": "Doubao (ByteDance)"
|
|
118
|
+
},
|
|
119
|
+
"multi_model": {
|
|
120
|
+
"add_model": "+ Ajouter un modèle",
|
|
121
|
+
"default": "Par défaut",
|
|
122
|
+
"set_default": "Définir par défaut",
|
|
123
|
+
"no_models": "Aucun modèle IA configuré",
|
|
124
|
+
"no_models_hint": "Ajoutez un modèle IA pour commencer à utiliser les fonctionnalités IA.",
|
|
125
|
+
"no_image_models": "Aucun modèle d'image configuré",
|
|
126
|
+
"no_image_models_hint": "Ajoutez un modèle de génération d'images pour utiliser les fonctionnalités IA d'image."
|
|
127
|
+
},
|
|
128
|
+
"image_config": {
|
|
129
|
+
"title": "IA de génération d'images",
|
|
130
|
+
"provider": "Fournisseur",
|
|
131
|
+
"provider_openai": "OpenAI DALL-E",
|
|
132
|
+
"provider_grok": "Grok (xAI)",
|
|
133
|
+
"provider_custom": "Personnalisé (compatible OpenAI)",
|
|
134
|
+
"api_key": "Clé API",
|
|
135
|
+
"api_key_placeholder": "Entrez la clé API image",
|
|
136
|
+
"base_url": "URL de base",
|
|
137
|
+
"model": "Modèle",
|
|
138
|
+
"model_placeholder": "Entrez le nom du modèle",
|
|
139
|
+
"default_size": "Taille par défaut",
|
|
140
|
+
"ratio": "Rapport d'aspect",
|
|
141
|
+
"size_level": "Taille",
|
|
142
|
+
"size_large": "Grand",
|
|
143
|
+
"size_medium": "Moyen",
|
|
144
|
+
"size_small": "Petit",
|
|
145
|
+
"provider_gemini": "Google Gemini Imagen",
|
|
146
|
+
"provider_qwen": "Qwen (Alibaba)",
|
|
147
|
+
"provider_doubao": "Doubao (ByteDance)"
|
|
148
|
+
},
|
|
149
|
+
"commands": {
|
|
150
|
+
"write": "Écrire",
|
|
151
|
+
"write_desc": "Rédiger du contenu selon votre consigne",
|
|
152
|
+
"continue": "Continuer l'écriture",
|
|
153
|
+
"continue_desc": "Continuer là où le texte s'est arrêté",
|
|
154
|
+
"summarize": "Résumer",
|
|
155
|
+
"summarize_desc": "Résumer le texte sélectionné",
|
|
156
|
+
"translate": "Traduire",
|
|
157
|
+
"translate_desc": "Traduire le texte dans une autre langue",
|
|
158
|
+
"improve": "Améliorer",
|
|
159
|
+
"improve_desc": "Améliorer la qualité rédactionnelle",
|
|
160
|
+
"fix_grammar": "Corriger la grammaire",
|
|
161
|
+
"fix_grammar_desc": "Corriger les erreurs de grammaire et d'orthographe",
|
|
162
|
+
"simplify": "Simplifier",
|
|
163
|
+
"simplify_desc": "Simplifier un texte complexe",
|
|
164
|
+
"expand": "Développer",
|
|
165
|
+
"expand_desc": "Développer le sujet",
|
|
166
|
+
"outline": "Générer un plan",
|
|
167
|
+
"outline_desc": "Générer un plan d'article",
|
|
168
|
+
"explain": "Expliquer",
|
|
169
|
+
"explain_desc": "Expliquer le texte sélectionné"
|
|
170
|
+
},
|
|
171
|
+
"prompts": {
|
|
172
|
+
"empty_response": "Vous avez renvoyé une réponse vide. Veuillez poursuivre la tâche : effectuez les appels d'outils nécessaires, ou résumez ce qui a été accompli et listez les éléments restants. Ne renvoyez pas de message vide.",
|
|
173
|
+
"empty_response_continue": "\n\nVotre dernier message était : \"{lastMessage}\"\nVeuillez continuer à partir de là.",
|
|
174
|
+
"truncation_continue": "Votre réponse précédente a été coupée en raison de la limite de longueur de sortie. Le texte ci-dessus a été enregistré. Veuillez maintenant terminer la tâche en effectuant les appels d'outils nécessaires. Ne répétez pas le contenu — utilisez-le directement dans les arguments de l'outil.",
|
|
175
|
+
"continuation_prompt": "Veuillez continuer et effectuer les appels d'outils nécessaires pour terminer la tâche. Ne répétez pas ce qui a déjà été dit — procédez directement aux appels d'outils.",
|
|
176
|
+
"mcp_tool_prompt": "Utilisez l'outil {toolName} (depuis {serverName})",
|
|
177
|
+
"review_context": "---\nThis document has {count} pending review comments:\n{items}\n---",
|
|
178
|
+
"review_context_item": "[Line {line}] @{author}: \"{text}\"",
|
|
179
|
+
"review_context_item_unanchored": "[Position lost] @{author}: \"{text}\"",
|
|
180
|
+
"ai_review_request": "Please review the current document and identify issues across four dimensions: logic, expression, fact, and structure. Use the write_ai_reviews tool to return up to 10 structured review comments. For each, provide markedText (an exact text fragment from the document being reviewed), comment (your review), and dimension (one of: logic, expression, fact, structure). If your model does not support tool calls, return the same data as a JSON code block.",
|
|
181
|
+
"ai_improve_request": "The document has {count} pending review comments:\n{items}\n\nPlease apply these reviews and improve the document. Use the update_editor_content tool to write the improved full document. Preserve formatting and original structure where possible.",
|
|
182
|
+
"ai_summary_request": "The document has {count} review comments (including resolved):\n{items}\n\nPlease summarize them across four dimensions (logic / expression / fact / structure), and rate the priority (high / medium / low) for each dimension.",
|
|
183
|
+
"ai_respond_request": "The document contains this text:\n\"{markedText}\"\n\nThe reviewer commented:\n\"{commentText}\"\n\nPlease provide specific suggestions for revision. Do NOT modify the document — give suggestions only."
|
|
184
|
+
},
|
|
185
|
+
"detection": {
|
|
186
|
+
"intent_prefixes": "Je vais|Je dois|Je devrais|Laissez-moi|D'abord|Maintenant|Ensuite",
|
|
187
|
+
"action_verbs": "créer|écrire|lire|mettre à jour|télécharger|générer|récupérer|vérifier|tester|utiliser|exécuter|envoyer|chercher|trouver|sauvegarder|supprimer|modifier|configurer|exporter|afficher",
|
|
188
|
+
"continuation_phrases": "D'abord|Ensuite|Puis|Maintenant",
|
|
189
|
+
"remaining_phrases": "restant|suivant|étape \\d+",
|
|
190
|
+
"unfinished_phrases": "à faire|TODO|prochaine étape|pas encore|en attente"
|
|
191
|
+
},
|
|
192
|
+
"sections": {
|
|
193
|
+
"image_ai": "IA image",
|
|
194
|
+
"image_aihint": "Configurations du modèle de génération d'images IA."
|
|
195
|
+
},
|
|
196
|
+
"generating": "Génération…",
|
|
197
|
+
"not_configured": "Fournisseur IA non configuré"
|
|
198
|
+
},
|
|
199
|
+
"ai_budget": {
|
|
200
|
+
"__mt": true,
|
|
201
|
+
"title": "AI Budget",
|
|
202
|
+
"description": "Set monthly and per-call spending limits for AI requests routed through Moraya.",
|
|
203
|
+
"monthly_spend": "Monthly Spend",
|
|
204
|
+
"monthly_limit": "Monthly Limit",
|
|
205
|
+
"per_call_limit": "Per-Call Limit",
|
|
206
|
+
"hard_stop": "Hard Stop",
|
|
207
|
+
"hard_stop_hint": "Block all AI calls once the monthly limit is reached.",
|
|
208
|
+
"zero_unlimited": "0 = unlimited",
|
|
209
|
+
"limit_reached": "Monthly budget limit reached. AI calls are blocked.",
|
|
210
|
+
"near_limit": "You have used {pct}% of your monthly budget.",
|
|
211
|
+
"saved": "Settings saved.",
|
|
212
|
+
"save": "Save",
|
|
213
|
+
"reset": "Reset Month",
|
|
214
|
+
"how_it_works": "How It Works",
|
|
215
|
+
"info1": "The router tracks estimated and actual costs per API call.",
|
|
216
|
+
"info2": "Hard stop blocks new calls; soft limit shows warnings only.",
|
|
217
|
+
"info3": "Monthly counters reset on the 1st of each month automatically."
|
|
218
|
+
},
|
|
219
|
+
"ai_history": {
|
|
220
|
+
"__mt": true,
|
|
221
|
+
"title": "AI Call History",
|
|
222
|
+
"total_calls": "Total Calls",
|
|
223
|
+
"month_cost": "This Month",
|
|
224
|
+
"success_rate": "Success Rate",
|
|
225
|
+
"tab_list": "Calls",
|
|
226
|
+
"tab_provider": "By Provider",
|
|
227
|
+
"tab_daily": "By Day",
|
|
228
|
+
"no_records": "No call records yet.",
|
|
229
|
+
"failed": "Failed",
|
|
230
|
+
"provider": "Provider",
|
|
231
|
+
"calls": "Calls",
|
|
232
|
+
"cost": "Cost",
|
|
233
|
+
"share": "Share"
|
|
234
|
+
},
|
|
235
|
+
"app": {
|
|
236
|
+
"__mt": true,
|
|
237
|
+
"name": "Moraya Web",
|
|
238
|
+
"tagline": "Your AI, your data, your cloud."
|
|
239
|
+
},
|
|
240
|
+
"audit": {
|
|
241
|
+
"report_title": "Document Audit Report: {filename}",
|
|
242
|
+
"generated_at": "Generated at",
|
|
243
|
+
"knowledge_base": "Knowledge base",
|
|
244
|
+
"git_repo": "Git repository",
|
|
245
|
+
"branch": "branch",
|
|
246
|
+
"commit_history": "Commit History",
|
|
247
|
+
"col_time": "Time",
|
|
248
|
+
"col_author": "Author",
|
|
249
|
+
"col_summary": "Summary",
|
|
250
|
+
"review_summary": "Review Summary",
|
|
251
|
+
"summary_stats": "Total {total} review(s); {resolved} resolved, {wontfix} won't fix, {open} open",
|
|
252
|
+
"resolved_section": "Resolved ({count})",
|
|
253
|
+
"wontfix_section": "Won't Fix ({count})",
|
|
254
|
+
"open_section": "Open ({count})",
|
|
255
|
+
"resolved_note": "resolved at {date} by {user}",
|
|
256
|
+
"wontfix_note": "marked won't fix at {date} by {user}",
|
|
257
|
+
"no_reviews": "No reviews recorded",
|
|
258
|
+
"showing_last_commits": "(Showing only the last {count} commits)",
|
|
259
|
+
"not_git_bound": "Not linked to a Git repository",
|
|
260
|
+
"line_n": "Line {n}",
|
|
261
|
+
"unanchored_label": "Position lost",
|
|
262
|
+
"export_dialog_title": "Export Audit Report",
|
|
263
|
+
"export_filename": "Filename",
|
|
264
|
+
"export_format": "Format",
|
|
265
|
+
"format_markdown": "Markdown (.md)",
|
|
266
|
+
"include_history": "Commit history (last {count} commits)",
|
|
267
|
+
"include_reviews": "Review summary ({total} reviews, {resolved} resolved)",
|
|
268
|
+
"anonymize_authors": "Anonymize authors (@{name} → @reviewer-1)",
|
|
269
|
+
"include_full_discussion": "Include full review discussion (default: summary only)",
|
|
270
|
+
"privacy_notice": "The report will be saved locally. No data is sent to any external service.",
|
|
271
|
+
"cancel": "Cancel",
|
|
272
|
+
"save": "Save…",
|
|
273
|
+
"title": "Audit Log",
|
|
274
|
+
"events": "events",
|
|
275
|
+
"verify_integrity": "Verify Integrity",
|
|
276
|
+
"chain_valid": "Chain Valid",
|
|
277
|
+
"chain_invalid": "Chain Broken",
|
|
278
|
+
"no_events": "No audit events found.",
|
|
279
|
+
"loading": "Loading audit log…"
|
|
280
|
+
},
|
|
281
|
+
"auth": {
|
|
282
|
+
"__mt": true,
|
|
283
|
+
"login": "Sign in with Picora",
|
|
284
|
+
"logout": "Sign out",
|
|
285
|
+
"logging_in": "Signing in...",
|
|
286
|
+
"login_title": "Welcome to Moraya Web",
|
|
287
|
+
"login_subtitle": "Sign in with your Picora account to access your knowledge base.",
|
|
288
|
+
"continue_offline": "Continue offline (no sync)",
|
|
289
|
+
"connect_picora": "Connect Picora to sync",
|
|
290
|
+
"connected_to_picora": "Connected to Picora",
|
|
291
|
+
"disconnect": "Disconnect",
|
|
292
|
+
"local_only_notice": "You are working locally. Notes are stored on this device only."
|
|
293
|
+
},
|
|
294
|
+
"billing": {
|
|
295
|
+
"__mt": true,
|
|
296
|
+
"title": "Billing",
|
|
297
|
+
"current_plan": "Current Plan",
|
|
298
|
+
"upgrade_title": "Upgrade Your Plan",
|
|
299
|
+
"upgrade_subtitle": "Get more AI calls, unlimited storage, and premium features.",
|
|
300
|
+
"downgrade_title": "Downgrade Plan",
|
|
301
|
+
"downgrade_subtitle": "You can choose to downgrade effective immediately or at the end of your billing period.",
|
|
302
|
+
"cancel_title": "Cancel Subscription",
|
|
303
|
+
"cancel_subtitle": "We're sorry to see you go. You can cancel effective immediately or at the end of your billing period.",
|
|
304
|
+
"plan_personal": "Personal",
|
|
305
|
+
"plan_team": "Team",
|
|
306
|
+
"plan_enterprise": "Enterprise",
|
|
307
|
+
"plan_connect": "Connect (Free)",
|
|
308
|
+
"monthly": "Monthly",
|
|
309
|
+
"yearly": "Yearly",
|
|
310
|
+
"yearly_savings": "Save 2 months",
|
|
311
|
+
"per_seat": "/seat",
|
|
312
|
+
"pay_with_stripe": "Pay with Card (Stripe)",
|
|
313
|
+
"pay_with_alipay": "Pay with Alipay",
|
|
314
|
+
"seats_label": "Number of seats",
|
|
315
|
+
"seats_hint": "Minimum 1 seat",
|
|
316
|
+
"effective_immediate": "Effective immediately",
|
|
317
|
+
"effective_period_end": "At the end of the billing period",
|
|
318
|
+
"cancel_confirm": "I understand my subscription will end",
|
|
319
|
+
"downgrade_confirm": "I understand I may lose access to some features",
|
|
320
|
+
"confirm_cancel": "Cancel Subscription",
|
|
321
|
+
"confirm_downgrade": "Confirm Downgrade",
|
|
322
|
+
"refund_title": "Request Refund",
|
|
323
|
+
"refund_14day": "As a first-time subscriber within 14 days, you qualify for an automatic refund.",
|
|
324
|
+
"refund_request": "Request Refund",
|
|
325
|
+
"refund_pending": "Refund request submitted. Our team will review it.",
|
|
326
|
+
"back_to_billing": "Back to Billing",
|
|
327
|
+
"loading": "Loading...",
|
|
328
|
+
"error": "Something went wrong. Please try again.",
|
|
329
|
+
"checkout_redirect": "Redirecting to checkout...",
|
|
330
|
+
"alipay_scan": "Scan with Alipay app to complete payment",
|
|
331
|
+
"devices_title": "Manage Devices",
|
|
332
|
+
"devices_subtitle": "Devices signed into your account.",
|
|
333
|
+
"device_current": "This device",
|
|
334
|
+
"device_revoke": "Sign out",
|
|
335
|
+
"device_revoke_confirm": "Sign out this device?",
|
|
336
|
+
"device_last_active": "Last active",
|
|
337
|
+
"devices_limit_reached": "You've reached the device limit for your plan.",
|
|
338
|
+
"usage_ai_calls": "AI Calls",
|
|
339
|
+
"usage_kbs": "Knowledge Bases",
|
|
340
|
+
"usage_devices": "Devices",
|
|
341
|
+
"usage_of": "{used} of {limit}",
|
|
342
|
+
"upgrade_prompt_ai": "You've used {used}/{limit} AI calls this month.",
|
|
343
|
+
"upgrade_prompt_kb": "You've reached your KB limit ({limit}).",
|
|
344
|
+
"upgrade_now": "Upgrade Now",
|
|
345
|
+
"plan_features_personal": "Unlimited KBs, 2000 AI calls/month, BYO API key, E2E encryption, BYOC storage",
|
|
346
|
+
"plan_features_team": "Everything in Personal, team collaboration, 5000 AI calls/month, Cloud KMS",
|
|
347
|
+
"currency_usd": "USD ($)",
|
|
348
|
+
"currency_cny": "CNY (¥)",
|
|
349
|
+
"currency_eur": "EUR (€)",
|
|
350
|
+
"change_currency": "Change currency"
|
|
351
|
+
},
|
|
352
|
+
"cloud_picker": {
|
|
353
|
+
"title_image": "Insérer une image cloud",
|
|
354
|
+
"title_audio": "Insérer un audio cloud",
|
|
355
|
+
"title_video": "Insérer une vidéo cloud",
|
|
356
|
+
"no_targets": "Aucune cible Picora configurée. Veuillez en ajouter une dans Paramètres → Base de connaissances.",
|
|
357
|
+
"scope_this_kb": "Cette base de connaissances",
|
|
358
|
+
"scope_all": "Tous les fichiers",
|
|
359
|
+
"scope_no_kb": "Sans base de connaissances",
|
|
360
|
+
"tab_recent": "Récents",
|
|
361
|
+
"tab_all": "Tous",
|
|
362
|
+
"tab_favorites": "Favoris",
|
|
363
|
+
"search_placeholder": "Rechercher…",
|
|
364
|
+
"grid_view": "Vue grille",
|
|
365
|
+
"list_view": "Vue liste",
|
|
366
|
+
"error_title": "Échec du chargement",
|
|
367
|
+
"last_cache": "Dernier chargement",
|
|
368
|
+
"empty_title": "Aucun fichier trouvé",
|
|
369
|
+
"empty_sub": "Ajustez les filtres ou téléversez des fichiers vers Picora.",
|
|
370
|
+
"loading_more": "Chargement…",
|
|
371
|
+
"selected_count": "{n} sélectionné(s)",
|
|
372
|
+
"insert_as_html": "Insérer en HTML",
|
|
373
|
+
"insert_btn": "Insérer",
|
|
374
|
+
"processing": "En cours",
|
|
375
|
+
"public": "Public",
|
|
376
|
+
"private": "Privé",
|
|
377
|
+
"favorite": "Favori",
|
|
378
|
+
"copy_url": "Copier l'URL",
|
|
379
|
+
"privacy_title": "Fichiers privés sélectionnés",
|
|
380
|
+
"privacy_desc": "{n} fichier(s) sont privés et peuvent ne pas être visibles publiquement.",
|
|
381
|
+
"privacy_warn": "Rendre les fichiers publics permettra à quiconque possédant le lien de les consulter.",
|
|
382
|
+
"suppress_privacy": "Ne plus avertir",
|
|
383
|
+
"make_public_insert": "Rendre public et insérer",
|
|
384
|
+
"insert_anyway": "Insérer quand même",
|
|
385
|
+
"copy_markdown": "Copier Markdown",
|
|
386
|
+
"empty_kb_scoped_sub": "Aucun fichier dans la KB actuelle. Les téléversements antérieurs ne sont peut-être pas associés à cette KB.",
|
|
387
|
+
"switch_scope_all": "Afficher tous les fichiers",
|
|
388
|
+
"url_missing": "URL du média manquante — l’élément n’est peut-être pas encore prêt."
|
|
389
|
+
},
|
|
390
|
+
"command_palette": {
|
|
391
|
+
"placeholder": "Rechercher des fichiers, commandes ou base de connaissances...",
|
|
392
|
+
"files": "Fichiers",
|
|
393
|
+
"commands": "Commandes",
|
|
394
|
+
"semantic_search": "Recherche sémantique",
|
|
395
|
+
"keyword_search": "Recherche par mots-clés",
|
|
396
|
+
"no_results": "Aucun résultat trouvé"
|
|
397
|
+
},
|
|
398
|
+
"commands": {
|
|
399
|
+
"__mt": true,
|
|
400
|
+
"palette_title": "Command Palette",
|
|
401
|
+
"placeholder": "Search commands...",
|
|
402
|
+
"no_results": "No commands found",
|
|
403
|
+
"type_to_search": "Type to search commands",
|
|
404
|
+
"go_home": "Go to Home",
|
|
405
|
+
"open_settings": "Open Settings",
|
|
406
|
+
"open_workflows": "Open Workflows",
|
|
407
|
+
"toggle_sidebar": "Toggle Sidebar",
|
|
408
|
+
"sidebar_kb": "Sidebar: Knowledge Bases",
|
|
409
|
+
"sidebar_explorer": "Sidebar: Files",
|
|
410
|
+
"sidebar_outline": "Sidebar: Outline"
|
|
411
|
+
},
|
|
412
|
+
"common": {
|
|
413
|
+
"save": "Enregistrer",
|
|
414
|
+
"cancel": "Annuler",
|
|
415
|
+
"close": "Fermer",
|
|
416
|
+
"add": "Ajouter",
|
|
417
|
+
"remove": "Supprimer",
|
|
418
|
+
"connect": "Connecter",
|
|
419
|
+
"disconnect": "Déconnecter",
|
|
420
|
+
"insert": "Insérer",
|
|
421
|
+
"replace": "Remplacer",
|
|
422
|
+
"copy": "Copier",
|
|
423
|
+
"edit": "Modifier",
|
|
424
|
+
"delete": "Supprimer",
|
|
425
|
+
"browse": "Changer",
|
|
426
|
+
"clear": "Réinitialiser",
|
|
427
|
+
"play": "Lecture",
|
|
428
|
+
"stop": "Arrêter",
|
|
429
|
+
"start": "Démarrer",
|
|
430
|
+
"untitled": "Sans titre",
|
|
431
|
+
"retry": "Réessayer",
|
|
432
|
+
"refresh": "Actualiser",
|
|
433
|
+
"new": "Nouveau"
|
|
434
|
+
},
|
|
435
|
+
"compose": {
|
|
436
|
+
"__mt": true,
|
|
437
|
+
"title": "Compose article",
|
|
438
|
+
"start_over": "Start over",
|
|
439
|
+
"stepper_label": "Compose stages",
|
|
440
|
+
"step": {
|
|
441
|
+
"topic": "Topic",
|
|
442
|
+
"article": "Article",
|
|
443
|
+
"cover": "Cover",
|
|
444
|
+
"review": "Review"
|
|
445
|
+
},
|
|
446
|
+
"topic": {
|
|
447
|
+
"title": "What's the article about?",
|
|
448
|
+
"hint": "Describe the topic, audience, key points — the more specific, the better.",
|
|
449
|
+
"placeholder": "e.g. A deep dive on why Rust's async model handles backpressure better than Go's…",
|
|
450
|
+
"next": "Next: write article →"
|
|
451
|
+
},
|
|
452
|
+
"tone": {
|
|
453
|
+
"title": "Tone",
|
|
454
|
+
"general": "General",
|
|
455
|
+
"marketing": "Marketing",
|
|
456
|
+
"technical": "Technical",
|
|
457
|
+
"story": "Story"
|
|
458
|
+
},
|
|
459
|
+
"length": {
|
|
460
|
+
"title": "Length",
|
|
461
|
+
"short": "Short",
|
|
462
|
+
"medium": "Medium",
|
|
463
|
+
"long": "Long"
|
|
464
|
+
},
|
|
465
|
+
"article": {
|
|
466
|
+
"title": "Write the article",
|
|
467
|
+
"ready": "Ready to generate. Tap below to stream the article.",
|
|
468
|
+
"generate": "Generate article",
|
|
469
|
+
"generating": "Streaming from the model…",
|
|
470
|
+
"cancel": "Stop",
|
|
471
|
+
"regenerate": "Regenerate",
|
|
472
|
+
"next": "Next: cover image →",
|
|
473
|
+
"no_provider": "No AI provider configured. Set one up to generate articles.",
|
|
474
|
+
"configure": "Configure AI provider"
|
|
475
|
+
},
|
|
476
|
+
"cover": {
|
|
477
|
+
"title": "Cover image",
|
|
478
|
+
"prompt_hint": "This prompt was auto-derived from your article. Edit if you want a specific look.",
|
|
479
|
+
"prompt_placeholder": "Cover illustration for: ...",
|
|
480
|
+
"generate": "Generate cover",
|
|
481
|
+
"generating": "Generating…",
|
|
482
|
+
"next": "Next: review →",
|
|
483
|
+
"preview_alt": "Cover image preview",
|
|
484
|
+
"no_provider": "No image generation provider configured. Set one up to make cover images.",
|
|
485
|
+
"configure": "Configure image-gen provider",
|
|
486
|
+
"style": "Style"
|
|
487
|
+
},
|
|
488
|
+
"review": {
|
|
489
|
+
"title": "Review & publish",
|
|
490
|
+
"publish_hint": "Insert into a note, or set up an MCP publish target to send this article to WeChat / RSS / custom platforms.",
|
|
491
|
+
"insert": "Insert into note",
|
|
492
|
+
"configure_publish": "Configure publish target",
|
|
493
|
+
"uploading": "Uploading cover…",
|
|
494
|
+
"cover_upload_failed": "Cover upload failed — inserting without it.",
|
|
495
|
+
"insert_failed": "Insert failed: {err}"
|
|
496
|
+
},
|
|
497
|
+
"publish": {
|
|
498
|
+
"send": "Send to…",
|
|
499
|
+
"opening": "Preparing…",
|
|
500
|
+
"picker_title": "Where to publish?",
|
|
501
|
+
"empty": "No publish targets configured yet.",
|
|
502
|
+
"configure": "Configure publish targets",
|
|
503
|
+
"success": "Published to {target}",
|
|
504
|
+
"failed": "{target} failed: {err}"
|
|
505
|
+
},
|
|
506
|
+
"drafts": {
|
|
507
|
+
"title": "Drafts",
|
|
508
|
+
"new": "New draft",
|
|
509
|
+
"new_sub": "Archive current and start fresh",
|
|
510
|
+
"active": "Active",
|
|
511
|
+
"untitled": "Untitled draft",
|
|
512
|
+
"delete": "Delete draft"
|
|
513
|
+
}
|
|
514
|
+
},
|
|
515
|
+
"conflict": {
|
|
516
|
+
"__mt": true,
|
|
517
|
+
"title": "Conflict Detected",
|
|
518
|
+
"description": "This note was edited on another device.",
|
|
519
|
+
"keep_server": "Keep server version",
|
|
520
|
+
"keep_local": "Keep my version",
|
|
521
|
+
"merge": "Merge manually"
|
|
522
|
+
},
|
|
523
|
+
"context_menu": {
|
|
524
|
+
"cut": "Couper",
|
|
525
|
+
"copy": "Copier",
|
|
526
|
+
"paste": "Coller",
|
|
527
|
+
"upload_all_images": "Téléverser toutes les images vers l'hébergeur",
|
|
528
|
+
"upload_starting": "Téléversement des images en cours...",
|
|
529
|
+
"upload_image_success": "Téléversé : {name}",
|
|
530
|
+
"upload_image_failed": "Échec : {name} — {error}",
|
|
531
|
+
"upload_all_complete": "Téléversement terminé : {success}/{total} réussis",
|
|
532
|
+
"upload_no_config": "Veuillez d'abord configurer un hébergeur d'images dans les Paramètres",
|
|
533
|
+
"insert_cloud_image": "Insérer une image cloud…",
|
|
534
|
+
"insert_cloud_audio": "Insérer un audio cloud…",
|
|
535
|
+
"insert_cloud_video": "Insérer une vidéo cloud…"
|
|
536
|
+
},
|
|
537
|
+
"diff": {
|
|
538
|
+
"title": "{filename} · {hash1} ↔ {hash2}",
|
|
539
|
+
"back_to_edit": "← Back to Edit",
|
|
540
|
+
"no_changes": "The two versions are identical — no differences",
|
|
541
|
+
"binary_file": "This version contains binary content and cannot be displayed as text diff",
|
|
542
|
+
"added_line": "Added line",
|
|
543
|
+
"deleted_line": "Deleted line",
|
|
544
|
+
"stats_line": "+{added} added · -{deleted} deleted",
|
|
545
|
+
"left_label": "Old",
|
|
546
|
+
"right_label": "New"
|
|
547
|
+
},
|
|
548
|
+
"editor": {
|
|
549
|
+
"source_mode": "Source",
|
|
550
|
+
"visual_mode": "Visual",
|
|
551
|
+
"split_mode": "Split",
|
|
552
|
+
"unsaved_title": "Modifications non enregistrées",
|
|
553
|
+
"unsaved_new_doc_msg": "Vous avez du contenu non enregistré qui sera perdu. Voulez-vous d'abord l'enregistrer ?",
|
|
554
|
+
"save_first": "Enregistrer",
|
|
555
|
+
"discard_changes": "Ne pas enregistrer",
|
|
556
|
+
"loading": {
|
|
557
|
+
"parsing": "Analyse du markdown…",
|
|
558
|
+
"rendering": "Rendu en cours…"
|
|
559
|
+
},
|
|
560
|
+
"saving": "Saving...",
|
|
561
|
+
"saved": "Saved",
|
|
562
|
+
"offline_cached": "Saved offline",
|
|
563
|
+
"conflict": "Conflict detected",
|
|
564
|
+
"unsaved_changes": "You have unsaved changes. Discard?",
|
|
565
|
+
"discard": "Discard",
|
|
566
|
+
"cancel": "Cancel",
|
|
567
|
+
"words": "words",
|
|
568
|
+
"chars": "chars",
|
|
569
|
+
"new_note": "New note"
|
|
570
|
+
},
|
|
571
|
+
"enterprise": {
|
|
572
|
+
"__mt": true,
|
|
573
|
+
"hsm": {
|
|
574
|
+
"title": "Hardware Security Module (HSM)",
|
|
575
|
+
"subtitle": "Connect your HSM provider for FIPS 140-2 Level 3+ key operations",
|
|
576
|
+
"upgrade_required": "HSM integration requires the Enterprise plan.",
|
|
577
|
+
"providers": {
|
|
578
|
+
"aws": "AWS CloudHSM",
|
|
579
|
+
"aliyun": "Aliyun HSM",
|
|
580
|
+
"pkcs11": "PKCS#11 (Generic)"
|
|
581
|
+
},
|
|
582
|
+
"aws": {
|
|
583
|
+
"cluster_id": "Cluster ID",
|
|
584
|
+
"region": "AWS Region"
|
|
585
|
+
},
|
|
586
|
+
"aliyun": {
|
|
587
|
+
"instance_id": "Instance ID",
|
|
588
|
+
"region": "Region"
|
|
589
|
+
},
|
|
590
|
+
"pkcs11": {
|
|
591
|
+
"lib_path": "Library Path (.so / .dll / .dylib)",
|
|
592
|
+
"slot": "Slot ID",
|
|
593
|
+
"supported_mechanisms": "Supported Mechanisms"
|
|
594
|
+
}
|
|
595
|
+
},
|
|
596
|
+
"orgs": {
|
|
597
|
+
"title": "Multi-Organization Management",
|
|
598
|
+
"subtitle": "Manage seat allocation and cross-org knowledge sharing",
|
|
599
|
+
"upgrade_required": "Multi-org management requires the Enterprise plan.",
|
|
600
|
+
"seat_allocation": "Seat Allocation",
|
|
601
|
+
"total_seats": "Total Seats",
|
|
602
|
+
"allocated": "Allocated",
|
|
603
|
+
"unallocated": "Unallocated",
|
|
604
|
+
"org_list": "Organizations",
|
|
605
|
+
"members": "Members",
|
|
606
|
+
"cross_org_sharing": "Cross-Org Sharing",
|
|
607
|
+
"shares_to": "shares KBs to",
|
|
608
|
+
"kb_ids_placeholder": "kb-1, kb-2, ...",
|
|
609
|
+
"request_share": "Request Share"
|
|
610
|
+
},
|
|
611
|
+
"compliance": {
|
|
612
|
+
"title": "Compliance & Archiving",
|
|
613
|
+
"subtitle": "GDPR, HIPAA, SOC2, ISO 27001 compliance exports and WORM archiving",
|
|
614
|
+
"upgrade_required": "Compliance archiving requires the Enterprise plan.",
|
|
615
|
+
"tabs": {
|
|
616
|
+
"retention": "Retention",
|
|
617
|
+
"worm": "WORM",
|
|
618
|
+
"export": "Export"
|
|
619
|
+
},
|
|
620
|
+
"retention": {
|
|
621
|
+
"title": "7-Year Retention",
|
|
622
|
+
"hint": "Records are retained for 7 years and cannot be deleted during this period.",
|
|
623
|
+
"days_left": "days left",
|
|
624
|
+
"years": "years"
|
|
625
|
+
},
|
|
626
|
+
"worm": {
|
|
627
|
+
"title": "WORM Records",
|
|
628
|
+
"description": "Write-Once-Read-Many records are immutable once created.",
|
|
629
|
+
"immutable_label": "Immutable",
|
|
630
|
+
"immutable_desc": "Records cannot be modified or deleted after creation.",
|
|
631
|
+
"retention_years": "Retention Period"
|
|
632
|
+
},
|
|
633
|
+
"export": {
|
|
634
|
+
"title": "Compliance Export",
|
|
635
|
+
"standard": "Standard",
|
|
636
|
+
"format": "Format",
|
|
637
|
+
"generate": "Generate Export",
|
|
638
|
+
"applicable_events": "Applicable audit events"
|
|
639
|
+
}
|
|
640
|
+
},
|
|
641
|
+
"custom_domain": {
|
|
642
|
+
"title": "Custom Domain",
|
|
643
|
+
"subtitle": "Use your own domain name for the Moraya workspace.",
|
|
644
|
+
"upgrade_required": "Custom domain requires the Enterprise plan.",
|
|
645
|
+
"hostname": "Your Domain",
|
|
646
|
+
"cname_target": "CNAME Target",
|
|
647
|
+
"dns_record": "DNS Record to Add",
|
|
648
|
+
"dns_hint": "Add this CNAME record to your DNS provider and wait for propagation (up to 48h).",
|
|
649
|
+
"save": "Save & Verify",
|
|
650
|
+
"verifying_hint": "Verification in progress. DNS propagation may take up to 48 hours."
|
|
651
|
+
},
|
|
652
|
+
"custom_ai": {
|
|
653
|
+
"title": "Custom AI Endpoint",
|
|
654
|
+
"subtitle": "Connect your own OpenAI-compatible LLM endpoint.",
|
|
655
|
+
"upgrade_required": "Custom AI endpoints require the Enterprise plan.",
|
|
656
|
+
"add_provider": "Add Provider",
|
|
657
|
+
"provider_name": "Provider Name",
|
|
658
|
+
"base_url": "Base URL",
|
|
659
|
+
"api_key_ref": "API Key Reference (Keychain ID)",
|
|
660
|
+
"models_csv": "Models (comma-separated)",
|
|
661
|
+
"add": "Add Provider",
|
|
662
|
+
"saved_providers": "Saved Providers",
|
|
663
|
+
"context_window": "Context window",
|
|
664
|
+
"models": "models",
|
|
665
|
+
"openai_compatible": "OpenAI-compatible",
|
|
666
|
+
"custom_format": "Custom format"
|
|
667
|
+
},
|
|
668
|
+
"data_residency": {
|
|
669
|
+
"title": "Data Residency",
|
|
670
|
+
"subtitle": "Control where your organization's data is stored and processed.",
|
|
671
|
+
"upgrade_required": "Data residency control requires the Enterprise plan.",
|
|
672
|
+
"primary_region": "Primary Region",
|
|
673
|
+
"allowed_regions": "Allowed Regions",
|
|
674
|
+
"restrict_cross_region": "Restrict cross-region data transfers",
|
|
675
|
+
"filter_by_compliance": "Filter by Compliance Standard",
|
|
676
|
+
"all": "All",
|
|
677
|
+
"requirements": "Legal Requirements",
|
|
678
|
+
"save_policy": "Save Policy",
|
|
679
|
+
"policy_saved": "Policy saved"
|
|
680
|
+
}
|
|
681
|
+
},
|
|
682
|
+
"entitlement": {
|
|
683
|
+
"__mt": true,
|
|
684
|
+
"connect": "Connect",
|
|
685
|
+
"personal": "Personal",
|
|
686
|
+
"team": "Team",
|
|
687
|
+
"enterprise": "Enterprise",
|
|
688
|
+
"current_plan": "Current plan",
|
|
689
|
+
"upgrade": "Upgrade"
|
|
690
|
+
},
|
|
691
|
+
"errors": {
|
|
692
|
+
"ai_not_configured": "L'IA n'est pas configurée.",
|
|
693
|
+
"ai_request_failed": "Échec de la requête IA",
|
|
694
|
+
"chat_request_failed": "Échec de la requête de conversation",
|
|
695
|
+
"unknown_command": "Commande IA inconnue : {command}",
|
|
696
|
+
"auth": {
|
|
697
|
+
"picora_token_expired": "Session expired. Please sign in again.",
|
|
698
|
+
"picora_plan_expired": "Your Picora plan has expired. Please renew or upgrade.",
|
|
699
|
+
"oauth_state_missing": "Login session not found. Please try again.",
|
|
700
|
+
"csrf_state_mismatch": "Security check failed. Please try again."
|
|
701
|
+
},
|
|
702
|
+
"storage": {
|
|
703
|
+
"network_offline": "You're offline. Changes saved locally.",
|
|
704
|
+
"conflict_detected": "Someone else edited this note. Please resolve the conflict.",
|
|
705
|
+
"not_found": "Note not found.",
|
|
706
|
+
"access_denied": "Access denied.",
|
|
707
|
+
"too_large": "File is too large.",
|
|
708
|
+
"quota_exceeded": "Storage quota exceeded.",
|
|
709
|
+
"rate_limited": "Too many requests. Please wait.",
|
|
710
|
+
"server_error": "Server error. Please try again."
|
|
711
|
+
},
|
|
712
|
+
"editor": {
|
|
713
|
+
"mount_failed": "Editor failed to load. Please refresh the page."
|
|
714
|
+
},
|
|
715
|
+
"browser": {
|
|
716
|
+
"unsupported": "Your browser is not supported. Please use Chrome 96+, Firefox 95+, or Safari 14+."
|
|
717
|
+
},
|
|
718
|
+
"internal": {
|
|
719
|
+
"unknown": "An unexpected error occurred."
|
|
720
|
+
},
|
|
721
|
+
"ai": {
|
|
722
|
+
"e2e_proxy_blocked": "Moraya proxy AI is not available in E2E mode. Please use your own API key.",
|
|
723
|
+
"e2e_rag_blocked": "Server-side RAG requires Cloud KMS mode."
|
|
724
|
+
},
|
|
725
|
+
"kms": {
|
|
726
|
+
"gcp_not_implemented": "GCP KMS is not yet supported."
|
|
727
|
+
}
|
|
728
|
+
},
|
|
729
|
+
"explorer": {
|
|
730
|
+
"__mt": true,
|
|
731
|
+
"title": "Files",
|
|
732
|
+
"filter_placeholder": "Filter notes...",
|
|
733
|
+
"empty": "No notes yet",
|
|
734
|
+
"no_results": "No matching notes",
|
|
735
|
+
"new_note": "New note",
|
|
736
|
+
"new_folder": "New folder",
|
|
737
|
+
"rename": "Rename",
|
|
738
|
+
"delete": "Delete",
|
|
739
|
+
"favorite": "Add to favorites",
|
|
740
|
+
"unfavorite": "Remove from favorites",
|
|
741
|
+
"context_menu": "File options",
|
|
742
|
+
"tags": "Tags",
|
|
743
|
+
"no_tags": "No tags found",
|
|
744
|
+
"untagged": "Untagged"
|
|
745
|
+
},
|
|
746
|
+
"export": {
|
|
747
|
+
"export_as": "Exporter en {format}",
|
|
748
|
+
"pdf": "PDF",
|
|
749
|
+
"html": "HTML (avec styles)",
|
|
750
|
+
"html_plain": "HTML (sans styles)",
|
|
751
|
+
"image": "Image (PNG)",
|
|
752
|
+
"doc": "Word (.doc)",
|
|
753
|
+
"rtf": "RTF",
|
|
754
|
+
"epub": "Epub",
|
|
755
|
+
"latex": "LaTeX",
|
|
756
|
+
"mediawiki": "MediaWiki",
|
|
757
|
+
"rst": "reStructuredText",
|
|
758
|
+
"textile": "Textile",
|
|
759
|
+
"opml": "OPML",
|
|
760
|
+
"progress": {
|
|
761
|
+
"preparing": "Préparation...",
|
|
762
|
+
"rendering": "Rendu...",
|
|
763
|
+
"paginating": "Pagination ({current}/{total})",
|
|
764
|
+
"writing": "Écriture...",
|
|
765
|
+
"done": "Terminé"
|
|
766
|
+
},
|
|
767
|
+
"fallback": {
|
|
768
|
+
"notice": "Mode compat."
|
|
769
|
+
},
|
|
770
|
+
"error": {
|
|
771
|
+
"generic": "Échec de l'export",
|
|
772
|
+
"timeout": "Délai d'export dépassé",
|
|
773
|
+
"subprocess_failed": "Échec du sous-processus",
|
|
774
|
+
"native_api_failed": "Échec d'impression natif"
|
|
775
|
+
}
|
|
776
|
+
},
|
|
777
|
+
"fulltext_search": {
|
|
778
|
+
"__mt": true,
|
|
779
|
+
"title": "Hybrid Search",
|
|
780
|
+
"placeholder": "Search notes, memories, workflows...",
|
|
781
|
+
"clear": "Clear",
|
|
782
|
+
"filters": "Filters",
|
|
783
|
+
"filter_time": "Time",
|
|
784
|
+
"filter_source": "Source",
|
|
785
|
+
"filter_tags": "Tags",
|
|
786
|
+
"time_all": "All time",
|
|
787
|
+
"time_today": "Today",
|
|
788
|
+
"time_7d": "Last 7 days",
|
|
789
|
+
"time_30d": "Last 30 days",
|
|
790
|
+
"time_90d": "Last 90 days",
|
|
791
|
+
"source_all": "All sources",
|
|
792
|
+
"source_note": "Notes",
|
|
793
|
+
"source_memory": "Memory",
|
|
794
|
+
"source_workflow": "Workflows",
|
|
795
|
+
"cross_kb_hint": "Upgrade for cross-KB search",
|
|
796
|
+
"tab_results": "Results",
|
|
797
|
+
"tab_history": "History",
|
|
798
|
+
"tab_saved": "Saved",
|
|
799
|
+
"save_search": "Save search",
|
|
800
|
+
"save_name_prompt": "Name this saved search",
|
|
801
|
+
"searching": "Searching...",
|
|
802
|
+
"no_results": "No results found",
|
|
803
|
+
"start_typing": "Type to search",
|
|
804
|
+
"history_empty": "No search history",
|
|
805
|
+
"saved_empty": "No saved searches",
|
|
806
|
+
"clear_history": "Clear history",
|
|
807
|
+
"hint_navigate": "Navigate",
|
|
808
|
+
"hint_open": "Open",
|
|
809
|
+
"hint_close": "Close"
|
|
810
|
+
},
|
|
811
|
+
"git": {
|
|
812
|
+
"bind_title": "Lier un dépôt Git",
|
|
813
|
+
"repo_url": "URL du dépôt",
|
|
814
|
+
"branch": "Branche",
|
|
815
|
+
"token": "Jeton d'accès personnel",
|
|
816
|
+
"token_hint": "Jeton d'accès personnel ou clé API. Stocké de façon sécurisée dans le trousseau du système.",
|
|
817
|
+
"auth_method": "Méthode d'authentification",
|
|
818
|
+
"auth_token": "Jeton d'accès",
|
|
819
|
+
"auth_password": "Identifiant et mot de passe",
|
|
820
|
+
"auth_ssh": "Clé SSH",
|
|
821
|
+
"username": "Identifiant",
|
|
822
|
+
"password": "Mot de passe",
|
|
823
|
+
"ssh_key_path": "Chemin de la clé SSH privée",
|
|
824
|
+
"ssh_passphrase": "Phrase secrète SSH",
|
|
825
|
+
"ssh_key_path_hint": "Chemin absolu vers votre clé SSH privée (ex. ~/.ssh/id_ed25519)",
|
|
826
|
+
"ssh_passphrase_hint": "Laisser vide si la clé n'a pas de phrase secrète",
|
|
827
|
+
"error_username_required": "L'identifiant est requis",
|
|
828
|
+
"error_password_required": "Le mot de passe est requis",
|
|
829
|
+
"error_ssh_key_required": "Le chemin de la clé SSH est requis",
|
|
830
|
+
"mode_clone": "Cloner dans le répertoire local",
|
|
831
|
+
"mode_push": "Pousser le contenu local vers le distant",
|
|
832
|
+
"mode_connect": "Se connecter au dépôt existant",
|
|
833
|
+
"detecting": "Détection...",
|
|
834
|
+
"auto_commit": "Commit automatique à l'enregistrement",
|
|
835
|
+
"auto_sync": "Synchronisation automatique en arrière-plan",
|
|
836
|
+
"sync_interval": "Intervalle de synchronisation",
|
|
837
|
+
"minutes": "min",
|
|
838
|
+
"confirm_bind": "Lier le dépôt",
|
|
839
|
+
"error_url_required": "L'URL du dépôt est requise",
|
|
840
|
+
"error_token_required": "Le jeton d'accès est requis",
|
|
841
|
+
"bind": "Lier un dépôt Git",
|
|
842
|
+
"unbind": "Délier Git",
|
|
843
|
+
"unbind_title": "Délier le dépôt Git",
|
|
844
|
+
"unbind_confirm": "Délier le dépôt Git de « {name} » ? Les fichiers locaux seront conservés.",
|
|
845
|
+
"synced": "Synchronisé",
|
|
846
|
+
"ahead": "à pousser",
|
|
847
|
+
"behind": "à tirer",
|
|
848
|
+
"syncing": "Synchronisation...",
|
|
849
|
+
"committing": "Validation...",
|
|
850
|
+
"sync_error": "Échec de la synchronisation",
|
|
851
|
+
"sync_now": "Synchroniser maintenant",
|
|
852
|
+
"not_installed": "Git non installé"
|
|
853
|
+
},
|
|
854
|
+
"history": {
|
|
855
|
+
"tab_label": "History",
|
|
856
|
+
"title": "Commit history of {filename}",
|
|
857
|
+
"export_btn": "Export",
|
|
858
|
+
"view_snapshot": "View Snapshot",
|
|
859
|
+
"compare_with_current": "Compare with Current",
|
|
860
|
+
"compare_with_prev": "Compare with Previous",
|
|
861
|
+
"back_to_list": "← Back to History",
|
|
862
|
+
"blame_toggle": "Show Author Tracking",
|
|
863
|
+
"blame_not_supported_visual": "Blame is only available in Source Mode. Press ⌘/ to switch.",
|
|
864
|
+
"blame_uncommitted": "uncommitted",
|
|
865
|
+
"loading": "Loading…",
|
|
866
|
+
"showing_last": "Showing the last {count} commits",
|
|
867
|
+
"renamed_from": "↪ from {oldPath}",
|
|
868
|
+
"empty": {
|
|
869
|
+
"no_git": "This knowledge base is not linked to Git",
|
|
870
|
+
"no_git_hint": "History requires Git sync support",
|
|
871
|
+
"no_git_action": "Link a Git repository",
|
|
872
|
+
"no_commits": "This file has no commit history yet",
|
|
873
|
+
"no_commits_hint": "Save and sync to Git to view history",
|
|
874
|
+
"no_commits_action": "Save and commit now",
|
|
875
|
+
"error": "Failed to load Git history",
|
|
876
|
+
"error_hint": "Please check repository status",
|
|
877
|
+
"error_retry": "Retry"
|
|
878
|
+
},
|
|
879
|
+
"snapshot": {
|
|
880
|
+
"label": "Snapshot @ {hash}",
|
|
881
|
+
"notice": "This is a historical snapshot (read-only)",
|
|
882
|
+
"copy": "Copy snapshot",
|
|
883
|
+
"compare": "Compare with Current",
|
|
884
|
+
"restore": "Restore this version",
|
|
885
|
+
"confirm_restore": "Restoring will replace the editor content with this snapshot. After saving, a new commit will be created. Continue?"
|
|
886
|
+
},
|
|
887
|
+
"dirty_confirm": "The current document has unsaved changes. Continue anyway?",
|
|
888
|
+
"continue_anyway": "Continue",
|
|
889
|
+
"save_first": "Save first",
|
|
890
|
+
"cancel": "Cancel",
|
|
891
|
+
"merge_blocked": "Repository is in the middle of a merge. Resolve conflicts first."
|
|
892
|
+
},
|
|
893
|
+
"image_ctx": {
|
|
894
|
+
"__mt": true,
|
|
895
|
+
"copy_url": "Copy URL",
|
|
896
|
+
"replace": "Replace Image",
|
|
897
|
+
"edit_alt": "Edit Alt Text",
|
|
898
|
+
"resize": "Resize",
|
|
899
|
+
"delete": "Delete Image",
|
|
900
|
+
"alt_label": "Alt Text",
|
|
901
|
+
"alt_placeholder": "Describe the image...",
|
|
902
|
+
"alt_hint": "Improves accessibility and SEO",
|
|
903
|
+
"save_alt": "Save"
|
|
904
|
+
},
|
|
905
|
+
"image_dialog": {
|
|
906
|
+
"title": "Insérer une image",
|
|
907
|
+
"url_tab": "URL",
|
|
908
|
+
"file_tab": "Fichier local",
|
|
909
|
+
"url_placeholder": "https://exemple.com/image.png",
|
|
910
|
+
"alt_placeholder": "Description de l'image (facultatif)",
|
|
911
|
+
"select_file": "Sélectionner une image...",
|
|
912
|
+
"no_file_selected": "Aucun fichier sélectionné",
|
|
913
|
+
"insert": "Insérer",
|
|
914
|
+
"cancel": "Annuler"
|
|
915
|
+
},
|
|
916
|
+
"image_gen": {
|
|
917
|
+
"title": "Génération d'images IA",
|
|
918
|
+
"step1_title": "Mode image",
|
|
919
|
+
"step2_title": "Générer des images",
|
|
920
|
+
"step3_title": "Insérer dans l'article",
|
|
921
|
+
"generating_prompts": "Génération des prompts...",
|
|
922
|
+
"content_too_short": "Le contenu de l'article est trop court pour la génération d'images.",
|
|
923
|
+
"style_label": "Style",
|
|
924
|
+
"count_label": "Nombre",
|
|
925
|
+
"style_auto": "Automatique",
|
|
926
|
+
"style_photo": "Photo",
|
|
927
|
+
"style_illustration": "Illustration",
|
|
928
|
+
"style_flat": "Flat design",
|
|
929
|
+
"style_ink": "Encre de Chine",
|
|
930
|
+
"style_watercolor": "Aquarelle",
|
|
931
|
+
"style_isometric": "Isométrique",
|
|
932
|
+
"style_infographic": "Infographie",
|
|
933
|
+
"style_editorial": "Éditorial",
|
|
934
|
+
"style_cartoon": "Dessin animé",
|
|
935
|
+
"style_render": "Rendu 3D",
|
|
936
|
+
"style_sketch": "Croquis",
|
|
937
|
+
"style_blueprint": "Plan technique",
|
|
938
|
+
"style_clay": "Modèle en argile",
|
|
939
|
+
"style_wireframe": "Wireframe",
|
|
940
|
+
"style_exploded": "Vue éclatée",
|
|
941
|
+
"style_section": "Coupe transversale",
|
|
942
|
+
"style_cad": "Dessin CAO",
|
|
943
|
+
"style_prototype": "Prototype",
|
|
944
|
+
"style_anime": "Anime",
|
|
945
|
+
"style_comic": "Bande dessinée",
|
|
946
|
+
"style_cinematic": "Cinématique",
|
|
947
|
+
"style_pixel": "Pixel art",
|
|
948
|
+
"style_noir": "Film noir",
|
|
949
|
+
"style_manga": "Manga",
|
|
950
|
+
"style_realistic": "Réaliste",
|
|
951
|
+
"style_studio": "Studio",
|
|
952
|
+
"style_lifestyle": "Lifestyle",
|
|
953
|
+
"style_flatlay": "Flat lay",
|
|
954
|
+
"style_macro": "Macro",
|
|
955
|
+
"style_minimalist": "Minimaliste",
|
|
956
|
+
"style_packaging": "Packaging",
|
|
957
|
+
"style_outdoor": "Extérieur",
|
|
958
|
+
"style_mood": "Ambiance",
|
|
959
|
+
"style_abstract": "Abstrait",
|
|
960
|
+
"style_texture": "Texture",
|
|
961
|
+
"style_gradient": "Dégradé",
|
|
962
|
+
"style_collage": "Collage",
|
|
963
|
+
"style_vintage": "Vintage",
|
|
964
|
+
"style_botanical": "Botanique",
|
|
965
|
+
"style_geometric": "Géométrique",
|
|
966
|
+
"style_ethereal": "Éthéré",
|
|
967
|
+
"style_brutalist": "Brutaliste",
|
|
968
|
+
"generate": "Générer",
|
|
969
|
+
"next": "Suivant",
|
|
970
|
+
"back": "Retour",
|
|
971
|
+
"insert_confirm": "Insérer",
|
|
972
|
+
"insert_paragraph": "Insérer après le paragraphe correspondant (Recommandé)",
|
|
973
|
+
"insert_end": "Insérer à la fin de l'article",
|
|
974
|
+
"insert_replace": "Remplacer les images dans l'article",
|
|
975
|
+
"insert_clipboard": "Copier le Markdown dans le presse-papiers",
|
|
976
|
+
"selected": "{count} sélectionné(s)",
|
|
977
|
+
"completed": "Images générées",
|
|
978
|
+
"step_description": "Générer des illustrations d'article",
|
|
979
|
+
"mode_article": "Article",
|
|
980
|
+
"mode_design": "Design",
|
|
981
|
+
"mode_storyboard": "Storyboard",
|
|
982
|
+
"mode_product": "Produit",
|
|
983
|
+
"mode_moodboard": "Moodboard",
|
|
984
|
+
"mode_portrait": "Portrait",
|
|
985
|
+
"style_portrait": "Portrait",
|
|
986
|
+
"style_headshot": "Portrait en buste",
|
|
987
|
+
"style_fullbody": "Corps entier",
|
|
988
|
+
"style_fashion": "Mode",
|
|
989
|
+
"style_street": "Urbain",
|
|
990
|
+
"style_glamour": "Glamour",
|
|
991
|
+
"style_environmental": "Environnemental",
|
|
992
|
+
"style_candid": "Pris sur le vif",
|
|
993
|
+
"style_group": "Groupe",
|
|
994
|
+
"pre_defined_detected": "{count} prompt(s) prédéfini(s) détecté(s) dans le document",
|
|
995
|
+
"use_predefined": "Utiliser les prompts prédéfinis"
|
|
996
|
+
},
|
|
997
|
+
"image_host": {
|
|
998
|
+
"title": "Hébergement d'images",
|
|
999
|
+
"provider": "Fournisseur",
|
|
1000
|
+
"smms": "SM.MS",
|
|
1001
|
+
"imgur": "Imgur",
|
|
1002
|
+
"github": "Dépôt GitHub",
|
|
1003
|
+
"custom": "API personnalisée",
|
|
1004
|
+
"api_token": "Token API",
|
|
1005
|
+
"api_token_placeholder": "Entrez le token API",
|
|
1006
|
+
"custom_endpoint": "Point de terminaison d'upload",
|
|
1007
|
+
"custom_endpoint_placeholder": "https://votre-api.com/upload",
|
|
1008
|
+
"custom_headers": "En-têtes personnalisés (JSON)",
|
|
1009
|
+
"custom_url_template": "Modèle d'URL de résultat",
|
|
1010
|
+
"custom_url_template_placeholder": "https://example.com/i/{id}",
|
|
1011
|
+
"custom_url_template_hint": "Espaces réservés : {id}, {storageKey}, {filename}, {url}. Laissez vide pour détecter automatiquement les champs d'URL.",
|
|
1012
|
+
"github_repo_url": "URL du dépôt",
|
|
1013
|
+
"github_repo_url_placeholder": "https://github.com/utilisateur/images",
|
|
1014
|
+
"github_branch": "Branche",
|
|
1015
|
+
"github_dir": "Répertoire des images",
|
|
1016
|
+
"github_token": "Token d'accès personnel",
|
|
1017
|
+
"github_token_placeholder": "ghp_xxxxxxxxxxxx",
|
|
1018
|
+
"github_cdn": "Format d'URL",
|
|
1019
|
+
"github_cdn_raw": "raw.githubusercontent.com",
|
|
1020
|
+
"github_cdn_jsdelivr": "CDN jsDelivr",
|
|
1021
|
+
"import_from_publish": "Importer depuis la cible de publication",
|
|
1022
|
+
"auto_upload": "Upload automatique des images au collage/dépôt",
|
|
1023
|
+
"test_upload": "Tester l'upload",
|
|
1024
|
+
"test": "Tester",
|
|
1025
|
+
"testing": "Test en cours...",
|
|
1026
|
+
"success": "Upload réussi !",
|
|
1027
|
+
"failed": "Échec de l'upload",
|
|
1028
|
+
"add_target": "Ajouter un hébergeur d'images",
|
|
1029
|
+
"target_name": "Nom",
|
|
1030
|
+
"target_name_placeholder": "ex. Mon CDN Blog",
|
|
1031
|
+
"settings_empty": "Aucun hébergeur d'images configuré",
|
|
1032
|
+
"settings_hint": "Ajoutez un service d'hébergement d'images pour activer l'upload automatique.",
|
|
1033
|
+
"default": "Par défaut",
|
|
1034
|
+
"set_default": "Définir par défaut",
|
|
1035
|
+
"gitlab": "Dépôt GitLab",
|
|
1036
|
+
"git_custom": "Git personnalisé (Gitea/Forgejo)",
|
|
1037
|
+
"qiniu": "Qiniu Kodo",
|
|
1038
|
+
"aliyun_oss": "Aliyun OSS",
|
|
1039
|
+
"tencent_cos": "Tencent COS",
|
|
1040
|
+
"aws_s3": "AWS S3",
|
|
1041
|
+
"google_gcs": "Google Cloud Storage",
|
|
1042
|
+
"group_api": "Hébergement API",
|
|
1043
|
+
"group_git": "Dépôt Git",
|
|
1044
|
+
"group_oss": "Stockage objet",
|
|
1045
|
+
"gitlab_repo_url": "URL du dépôt",
|
|
1046
|
+
"gitlab_branch": "Branche",
|
|
1047
|
+
"gitlab_dir": "Répertoire des images",
|
|
1048
|
+
"gitlab_token": "Token d'accès personnel",
|
|
1049
|
+
"gitlab_token_placeholder": "glpat-xxxxxxxxxxxx",
|
|
1050
|
+
"git_custom_repo_url": "URL du dépôt",
|
|
1051
|
+
"git_custom_branch": "Branche",
|
|
1052
|
+
"git_custom_dir": "Répertoire des images",
|
|
1053
|
+
"git_custom_token": "Token d'accès",
|
|
1054
|
+
"git_custom_token_placeholder": "Entrez le token",
|
|
1055
|
+
"oss_access_key": "Clé d'accès",
|
|
1056
|
+
"oss_access_key_placeholder": "Entrez l'ID de clé d'accès",
|
|
1057
|
+
"oss_secret_key": "Clé secrète",
|
|
1058
|
+
"oss_secret_key_placeholder": "Entrez la clé secrète",
|
|
1059
|
+
"oss_bucket": "Bucket",
|
|
1060
|
+
"oss_bucket_placeholder": "ex. mon-bucket-images",
|
|
1061
|
+
"oss_region": "Région",
|
|
1062
|
+
"oss_region_placeholder": "ex. cn-east-1, us-east-1",
|
|
1063
|
+
"select_region": "Sélectionner une région",
|
|
1064
|
+
"oss_endpoint": "Point de terminaison personnalisé (facultatif)",
|
|
1065
|
+
"oss_endpoint_placeholder": "ex. https://s3.custom.com",
|
|
1066
|
+
"oss_cdn_domain": "Domaine CDN (facultatif)",
|
|
1067
|
+
"oss_cdn_domain_placeholder": "ex. https://cdn.exemple.com",
|
|
1068
|
+
"oss_path_prefix": "Préfixe de chemin (facultatif)",
|
|
1069
|
+
"oss_path_prefix_placeholder": "ex. images/blog/",
|
|
1070
|
+
"required": "Requis",
|
|
1071
|
+
"qiniu_cdn_required": "Qiniu nécessite un domaine CDN pour générer des URLs d'images accessibles.",
|
|
1072
|
+
"picora": "Picora",
|
|
1073
|
+
"picora_one_click": "Import en un clic",
|
|
1074
|
+
"picora_import_title": "Importer depuis Picora",
|
|
1075
|
+
"picora_import_hint": "Ouvrez la console Picora et cliquez sur « Importer dans Moraya » à côté d’une clé API. Ou saisissez la clé manuellement ci-dessous.",
|
|
1076
|
+
"picora_open_console": "Ouvrir la console Picora",
|
|
1077
|
+
"picora_manual_entry": "J’ai déjà une clé API — saisir manuellement",
|
|
1078
|
+
"picora_verifying": "Vérification auprès de Picora…",
|
|
1079
|
+
"picora_verify_failed": "Échec de la vérification. Vérifiez le jeton et réessayez.",
|
|
1080
|
+
"picora_import_success": "Picora importé ({email})",
|
|
1081
|
+
"picora_featured_badge": "Recommandé",
|
|
1082
|
+
"picora_api_url": "Point de terminaison Picora",
|
|
1083
|
+
"picora_api_url_placeholder": "https://api.picora.me/v1/images",
|
|
1084
|
+
"picora_img_domain": "Domaine CDN",
|
|
1085
|
+
"picora_img_domain_placeholder": "https://media.picora.me",
|
|
1086
|
+
"picora_api_key": "Clé API",
|
|
1087
|
+
"picora_api_key_placeholder": "sk_live_...",
|
|
1088
|
+
"picora_user_email": "Compte Picora",
|
|
1089
|
+
"picora_token_preview": "Aperçu du jeton",
|
|
1090
|
+
"picora_confirm_import": "Confirmer l’import",
|
|
1091
|
+
"picora_import_invalid": "Lien d’import invalide — réessayez depuis la console Picora.",
|
|
1092
|
+
"picora_verify": "Vérifier",
|
|
1093
|
+
"picora_hero_desc": "Notre hébergeur d’images SaaS · configuration en 5 minutes en un clic",
|
|
1094
|
+
"other_providers": "Autres fournisseurs",
|
|
1095
|
+
"picora_api_key_keychain": "Stockée dans le trousseau du système · saisissez une nouvelle clé pour la remplacer",
|
|
1096
|
+
"picora_key_migrated_toast": "{count} clé(s) API Picora migrée(s) vers le trousseau du système."
|
|
1097
|
+
},
|
|
1098
|
+
"image_menu": {
|
|
1099
|
+
"resize": "Redimensionner",
|
|
1100
|
+
"upload": "Uploader vers l'hébergeur d'images",
|
|
1101
|
+
"edit_alt": "Modifier la description",
|
|
1102
|
+
"copy_url": "Copier l'URL de l'image",
|
|
1103
|
+
"copy_image": "Copier l'image",
|
|
1104
|
+
"open_in_browser": "Ouvrir l'image dans le navigateur",
|
|
1105
|
+
"save_as": "Enregistrer l'image sous...",
|
|
1106
|
+
"delete": "Supprimer l'image",
|
|
1107
|
+
"original_size": "Taille originale"
|
|
1108
|
+
},
|
|
1109
|
+
"kb": {
|
|
1110
|
+
"index_all": "Indexer tous les documents",
|
|
1111
|
+
"index_file": "Indexer le fichier",
|
|
1112
|
+
"indexing": "Indexation en cours...",
|
|
1113
|
+
"index_complete": "Indexation terminée",
|
|
1114
|
+
"search_placeholder": "Rechercher dans la base de connaissances...",
|
|
1115
|
+
"no_index": "Aucun index trouvé. Faites un clic droit sur la base de connaissances pour en créer un.",
|
|
1116
|
+
"stale_index": "L'index est obsolète. {count} fichiers ont changé depuis la dernière indexation.",
|
|
1117
|
+
"dimensions": "Dimensions",
|
|
1118
|
+
"auto_index": "Indexer automatiquement lors de la sauvegarde",
|
|
1119
|
+
"provider": "Fournisseur d'embedding",
|
|
1120
|
+
"model": "Modèle d'embedding",
|
|
1121
|
+
"delete_index": "Supprimer l'index",
|
|
1122
|
+
"reindex_all": "Tout réindexer",
|
|
1123
|
+
"delete_confirm": "Êtes-vous sûr de vouloir supprimer l'index ?",
|
|
1124
|
+
"use_same_as_ai": "Utiliser la même configuration que le chat IA",
|
|
1125
|
+
"online_model": "Modèle en Ligne",
|
|
1126
|
+
"dimension_warning": "Maximum pour ce modèle : {max}. Utilisation actuelle : {actual}.",
|
|
1127
|
+
"status": {
|
|
1128
|
+
"indexed": "Indexé ({chunks} fragments, {files} fichiers)",
|
|
1129
|
+
"not_indexed": "Non indexé",
|
|
1130
|
+
"stale": "{count} fichiers modifiés"
|
|
1131
|
+
},
|
|
1132
|
+
"progress": {
|
|
1133
|
+
"scanning": "Analyse des fichiers...",
|
|
1134
|
+
"chunking": "Découpage des documents... ({current}/{total})",
|
|
1135
|
+
"embedding": "Génération des embeddings... ({current}/{total})",
|
|
1136
|
+
"indexing": "Construction de l'index...",
|
|
1137
|
+
"done": "Terminé"
|
|
1138
|
+
},
|
|
1139
|
+
"provider_no_embedding": "Le fournisseur de chat AI actuel ne prend pas en charge l'embedding. Veuillez sélectionner un fournisseur d'embedding ci-dessus.",
|
|
1140
|
+
"local_models": "Modèles Locaux",
|
|
1141
|
+
"download_model": "Télécharger",
|
|
1142
|
+
"delete_model": "Supprimer le Modèle",
|
|
1143
|
+
"select_local_model": "Sélectionner un modèle téléchargé",
|
|
1144
|
+
"no_local_models": "Aucun modèle téléchargé. Téléchargez-en un ci-dessous.",
|
|
1145
|
+
"loading": "Loading knowledge base...",
|
|
1146
|
+
"empty": "No knowledge base found.",
|
|
1147
|
+
"create_in_picora": "Create a KB in Picora",
|
|
1148
|
+
"select_note": "Select a note to edit",
|
|
1149
|
+
"untitled": "Untitled"
|
|
1150
|
+
},
|
|
1151
|
+
"kb_sync": {
|
|
1152
|
+
"card": {
|
|
1153
|
+
"bind": "☁ Picora Sync",
|
|
1154
|
+
"settings": "☁ Bound · Settings"
|
|
1155
|
+
},
|
|
1156
|
+
"bind_dialog": {
|
|
1157
|
+
"title": "Bind Picora Sync — {name}",
|
|
1158
|
+
"step": "Step {current} / {total}",
|
|
1159
|
+
"step1_title": "Select Picora account",
|
|
1160
|
+
"step2_title": "Link or create cloud KB",
|
|
1161
|
+
"step3_title": "Sync strategy",
|
|
1162
|
+
"step4_title": "Preview first sync (dry-run)",
|
|
1163
|
+
"no_picora": "No Picora accounts found. Please add one in Settings → Hosting first.",
|
|
1164
|
+
"loading_kbs": "Loading cloud KBs…",
|
|
1165
|
+
"create_new": "Create new cloud KB",
|
|
1166
|
+
"link_existing": "Link to existing cloud KB",
|
|
1167
|
+
"kb_name": "Name",
|
|
1168
|
+
"kb_slug": "Slug (URL-friendly ID)",
|
|
1169
|
+
"select_kb": "Select a cloud KB…",
|
|
1170
|
+
"back": "← Back",
|
|
1171
|
+
"next": "Next →",
|
|
1172
|
+
"start_sync": "Start Sync ✓",
|
|
1173
|
+
"binding": "Binding…",
|
|
1174
|
+
"previewing": "Scanning local files…",
|
|
1175
|
+
"will_upload": "↑ Upload to cloud ({n} items)",
|
|
1176
|
+
"will_download": "↓ Download to local ({n} items)",
|
|
1177
|
+
"will_delete": "⊘ Delete ({n} items)",
|
|
1178
|
+
"skipped": "⚠ Skipped — exceeds size limit ({n} items)",
|
|
1179
|
+
"first_bind_hint": "No conflicts detected. All local files will be uploaded.",
|
|
1180
|
+
"confirm_label": "I understand — my local KB will be the initial authority",
|
|
1181
|
+
"link_existing_instead": "Lier une KB existante à la place"
|
|
1182
|
+
},
|
|
1183
|
+
"strategy": {
|
|
1184
|
+
"mode": "Trigger",
|
|
1185
|
+
"mode_manual": "Manual only",
|
|
1186
|
+
"mode_on_save": "On save (3s delay)",
|
|
1187
|
+
"mode_interval": "Scheduled",
|
|
1188
|
+
"mode_startup": "On startup & close",
|
|
1189
|
+
"interval60": "Every 1 minute",
|
|
1190
|
+
"interval300": "Every 5 minutes",
|
|
1191
|
+
"interval900": "Every 15 minutes",
|
|
1192
|
+
"interval1800": "Every 30 minutes",
|
|
1193
|
+
"scope": "Scope",
|
|
1194
|
+
"scope_md_only": "Markdown files only (.md / .markdown)",
|
|
1195
|
+
"scope_md_rules": "Markdown + rule files (MORAYA.md / CLAUDE.md / .mdx)",
|
|
1196
|
+
"scope_all": "All text files including hidden directories",
|
|
1197
|
+
"conflict": "Conflict policy",
|
|
1198
|
+
"conflict_prompt": "Prompt me (recommended)",
|
|
1199
|
+
"conflict_local": "Prefer local",
|
|
1200
|
+
"conflict_remote": "Prefer remote"
|
|
1201
|
+
},
|
|
1202
|
+
"settings": {
|
|
1203
|
+
"global_switch": "Enable KB auto-sync on this machine",
|
|
1204
|
+
"global_switch_hint": "When off, all scheduled syncs are paused. Manual \"Sync Now\" still works.",
|
|
1205
|
+
"last_sync": "Last sync",
|
|
1206
|
+
"never": "Never",
|
|
1207
|
+
"unbound": "Not bound to Picora",
|
|
1208
|
+
"sync_now": "Sync Now",
|
|
1209
|
+
"syncing": "Syncing…",
|
|
1210
|
+
"edit_strategy": "Edit strategy",
|
|
1211
|
+
"unbind": "Unbind",
|
|
1212
|
+
"unbind_title": "Unbind Picora Sync",
|
|
1213
|
+
"unbind_confirm": "Remove Picora sync binding for \"{name}\"? Cloud data is preserved.",
|
|
1214
|
+
"view_conflicts": "Conflicts",
|
|
1215
|
+
"bind": "Bind to Picora",
|
|
1216
|
+
"no_kbs": "No knowledge bases added yet."
|
|
1217
|
+
},
|
|
1218
|
+
"conflict": {
|
|
1219
|
+
"title": "Conflict Resolution — {name} ({n} items)",
|
|
1220
|
+
"no_conflicts": "No conflicts to resolve.",
|
|
1221
|
+
"local": "Local version",
|
|
1222
|
+
"remote": "Cloud version",
|
|
1223
|
+
"no_preview": "(no preview)",
|
|
1224
|
+
"keep_local": "Keep local (overwrite cloud)",
|
|
1225
|
+
"keep_remote": "Pull cloud (overwrite local)",
|
|
1226
|
+
"keep_both": "Keep both (cloud copy saved as .conflict.md)",
|
|
1227
|
+
"skip": "Skip",
|
|
1228
|
+
"apply_one": "Apply this",
|
|
1229
|
+
"apply_all": "Apply all selected ({n})"
|
|
1230
|
+
},
|
|
1231
|
+
"statusbar": {
|
|
1232
|
+
"tooltip": "KB Sync status — click for details",
|
|
1233
|
+
"error_label": "Erreur de synchronisation :"
|
|
1234
|
+
},
|
|
1235
|
+
"sync_now": "Synchroniser maintenant",
|
|
1236
|
+
"error": {
|
|
1237
|
+
"target_missing": "Compte Picora introuvable — veuillez relier cette base de connaissances ou restaurer le compte dans les Paramètres."
|
|
1238
|
+
},
|
|
1239
|
+
"trash": {
|
|
1240
|
+
"title": "Corbeille",
|
|
1241
|
+
"toast_deleted": "Picora a supprimé {count} fichier(s). Déplacé(s) dans la corbeille.",
|
|
1242
|
+
"view": "Voir",
|
|
1243
|
+
"restore_all": "Tout restaurer",
|
|
1244
|
+
"restore_success": "{count} fichier(s) restauré(s).",
|
|
1245
|
+
"restore_failed": "Impossible de restaurer certains fichiers.",
|
|
1246
|
+
"restore_conflict_title": "Le fichier existe déjà",
|
|
1247
|
+
"restore_conflict_body": "{path} existe déjà. Écraser ?",
|
|
1248
|
+
"overwrite": "Écraser",
|
|
1249
|
+
"cancel": "Annuler",
|
|
1250
|
+
"filter_kb_all": "Toutes les BC",
|
|
1251
|
+
"filter_time7d": "7 derniers jours",
|
|
1252
|
+
"filter_time30d": "30 derniers jours",
|
|
1253
|
+
"filter_time_all": "Toute la période",
|
|
1254
|
+
"empty_state": "La corbeille est vide.",
|
|
1255
|
+
"loading": "Chargement…",
|
|
1256
|
+
"restore": "Restaurer",
|
|
1257
|
+
"delete_forever": "Supprimer définitivement",
|
|
1258
|
+
"delete_forever_confirm": "Supprimer définitivement {path} ? Impossible d'annuler.",
|
|
1259
|
+
"purge_all": "Vider la corbeille",
|
|
1260
|
+
"purge_all_confirm": "Vider toutes les entrées de plus de {days} jours ?",
|
|
1261
|
+
"purge_result": "{files} fichier(s) nettoyé(s), {size} libéré(s).",
|
|
1262
|
+
"auto_purge_hint": "Les éléments de plus de 7 jours sont supprimés automatiquement.",
|
|
1263
|
+
"entry_deleted_at": "Supprimé le {date}",
|
|
1264
|
+
"kb_unknown": "BC inconnue"
|
|
1265
|
+
}
|
|
1266
|
+
},
|
|
1267
|
+
"knowledge_base": {
|
|
1268
|
+
"title": "Base de connaissances",
|
|
1269
|
+
"add": "Ajouter une base de connaissances",
|
|
1270
|
+
"remove": "Supprimer",
|
|
1271
|
+
"rename": "Renommer",
|
|
1272
|
+
"manage": "Gérer les bases de connaissances...",
|
|
1273
|
+
"empty": "Aucune base de connaissances configurée",
|
|
1274
|
+
"empty_hint": "Ajoutez un dossier comme base de connaissances pour un changement rapide.",
|
|
1275
|
+
"delete_confirm": "Retirer \"{name}\" des bases de connaissances ? Le dossier lui-même ne sera pas supprimé.",
|
|
1276
|
+
"switch_to": "Changer de base de connaissances",
|
|
1277
|
+
"save_hint": "Ce dossier n'est pas dans vos bases de connaissances.",
|
|
1278
|
+
"save_as_kb": "Enregistrer comme base de connaissances"
|
|
1279
|
+
},
|
|
1280
|
+
"link": {
|
|
1281
|
+
"open": "Ouvrir le lien",
|
|
1282
|
+
"remove": "Supprimer le lien"
|
|
1283
|
+
},
|
|
1284
|
+
"mcp": {
|
|
1285
|
+
"title": "MCP servers",
|
|
1286
|
+
"tabs": {
|
|
1287
|
+
"servers": "Serveurs",
|
|
1288
|
+
"publish": "Publication",
|
|
1289
|
+
"sync": "Synchronisation",
|
|
1290
|
+
"marketplace": "Marché"
|
|
1291
|
+
},
|
|
1292
|
+
"ai_services": {
|
|
1293
|
+
"empty": "Aucun service créé par l'IA",
|
|
1294
|
+
"hint": "L'IA peut créer des services MCP pendant la conversation. Demandez-lui d'interagir avec une API !",
|
|
1295
|
+
"node_required": "Node.js 18+ requis",
|
|
1296
|
+
"checking_node": "Vérification de Node.js...",
|
|
1297
|
+
"temp": "Temporaire",
|
|
1298
|
+
"saved": "Enregistré",
|
|
1299
|
+
"view_code": "Code",
|
|
1300
|
+
"tools": "{count} outils",
|
|
1301
|
+
"service_created": "L'IA a créé le service \"{name}\" avec {count} outils",
|
|
1302
|
+
"service_saved": "Service \"{name}\" enregistré",
|
|
1303
|
+
"service_removed": "Service \"{name}\" supprimé",
|
|
1304
|
+
"launch_confirm_title": "Avertissement de sécurité du service IA",
|
|
1305
|
+
"launch_confirm_msg": "L'IA a généré un service MCP qui doit exécuter du code auto-généré :\n Service : {name}\n Outils : {tools}\n\nCe code s'exécutera dans un processus Node.js local.\nVeuillez confirmer que vous faites confiance au code généré par cette IA.",
|
|
1306
|
+
"launch_confirm_ok": "Exécuter",
|
|
1307
|
+
"launch_confirm_cancel": "Annuler"
|
|
1308
|
+
},
|
|
1309
|
+
"servers": {
|
|
1310
|
+
"empty": "Aucun serveur MCP configuré",
|
|
1311
|
+
"local_mcp": "MCP local",
|
|
1312
|
+
"add_server": "Ajouter un serveur",
|
|
1313
|
+
"add_server_plus": "+ Ajouter un serveur",
|
|
1314
|
+
"connected": "Connecté",
|
|
1315
|
+
"disconnected": "Déconnecté",
|
|
1316
|
+
"server_name": "Nom du serveur",
|
|
1317
|
+
"server_url": "URL du serveur (ex. http://localhost:3000/mcp)",
|
|
1318
|
+
"http": "HTTP",
|
|
1319
|
+
"sse": "SSE (Server-Sent Events)",
|
|
1320
|
+
"stdio": "stdio (Processus local)",
|
|
1321
|
+
"command": "Commande",
|
|
1322
|
+
"command_placeholder": "Commande (ex. npx, node, python)",
|
|
1323
|
+
"args_placeholder": "Arguments (ex. -y @modelcontextprotocol/server-filesystem /chemin)",
|
|
1324
|
+
"env_placeholder": "CLE_ENV=valeur (une par ligne)",
|
|
1325
|
+
"presets": "MCP distant",
|
|
1326
|
+
"presets_hint": "Ajoutez en un clic des serveurs MCP populaires",
|
|
1327
|
+
"preset_desc": {
|
|
1328
|
+
"filesystem": "Lire, rechercher et gérer les fichiers locaux",
|
|
1329
|
+
"fetch": "Récupérer des pages web et les convertir en Markdown",
|
|
1330
|
+
"git": "Lire et rechercher dans les dépôts Git",
|
|
1331
|
+
"memory": "Graphe de connaissances persistant pour la mémoire IA",
|
|
1332
|
+
"puppeteer": "Automatisation du navigateur et web scraping",
|
|
1333
|
+
"sqlite": "Interroger et gérer les bases de données SQLite",
|
|
1334
|
+
"slack": "Lire et rechercher les canaux et messages Slack",
|
|
1335
|
+
"google_maps": "Géocodage, itinéraires et recherche de lieux",
|
|
1336
|
+
"sequential_thinking": "Raisonnement étape par étape et résolution de problèmes",
|
|
1337
|
+
"everything": "Recherche de fichiers Windows via Everything"
|
|
1338
|
+
},
|
|
1339
|
+
"preset_env_title": "Variables d'environnement",
|
|
1340
|
+
"preset_env_desc": {
|
|
1341
|
+
"slack_bot_token": "Slack Bot OAuth Token (xoxb-...)",
|
|
1342
|
+
"slack_team_id": "ID de l'équipe/espace de travail Slack (optionnel)",
|
|
1343
|
+
"google_maps_api_key": "Clé API Google Maps"
|
|
1344
|
+
},
|
|
1345
|
+
"preset_add": "Ajouter et connecter",
|
|
1346
|
+
"form_mode": "Formulaire",
|
|
1347
|
+
"json_mode": "JSON",
|
|
1348
|
+
"json_placeholder": "Collez la configuration JSON, ex. :\n{\n \"mcpServers\": {\n \"nom\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \"@.../server-xxx\"]\n }\n }\n}",
|
|
1349
|
+
"json_no_config": "Aucune configuration de serveur MCP valide trouvée",
|
|
1350
|
+
"json_parse_error": "erreur d'analyse",
|
|
1351
|
+
"launch_confirm_title": "Avertissement de sécurité",
|
|
1352
|
+
"launch_confirm_msg": "Sur le point de lancer un programme externe :\n Commande : {command}\n Arguments : {args}\n\nCe serveur MCP s'exécutera avec vos permissions utilisateur et peut accéder aux fichiers locaux et au réseau.\nVeuillez confirmer que ce serveur MCP provient d'une source de confiance.",
|
|
1353
|
+
"launch_confirm_ok": "Lancer",
|
|
1354
|
+
"launch_confirm_cancel": "Annuler",
|
|
1355
|
+
"auto_approve": "Approbation automatique du lancement MCP",
|
|
1356
|
+
"auto_approve_hint": "Ignorer la confirmation de sécurité lors de la connexion aux serveurs MCP et du lancement des services générés par l'IA. Non recommandé pour les sources non fiables.",
|
|
1357
|
+
"error_name_required": "Le nom du serveur est requis",
|
|
1358
|
+
"error_command_required": "La commande est requise",
|
|
1359
|
+
"error_url_required": "L'URL est requise"
|
|
1360
|
+
},
|
|
1361
|
+
"publish": {
|
|
1362
|
+
"empty": "Aucune cible de publication configurée",
|
|
1363
|
+
"hint": "Connectez d'abord un serveur MCP avec des capacités de publication.",
|
|
1364
|
+
"button": "Publier",
|
|
1365
|
+
"publishing": "Publication en cours...",
|
|
1366
|
+
"published": "Publié ! {info}",
|
|
1367
|
+
"failed": "Échec : {message}",
|
|
1368
|
+
"error": "Erreur : {message}"
|
|
1369
|
+
},
|
|
1370
|
+
"sync": {
|
|
1371
|
+
"empty": "Aucune configuration de synchronisation",
|
|
1372
|
+
"hint": "Connectez d'abord un serveur MCP, puis ajoutez une configuration de synchronisation.",
|
|
1373
|
+
"sync_now": "Synchroniser maintenant",
|
|
1374
|
+
"add_sync": "+ Ajouter une synchronisation",
|
|
1375
|
+
"name": "Nom de la configuration",
|
|
1376
|
+
"server": "Serveur MCP",
|
|
1377
|
+
"remote_path": "Chemin distant",
|
|
1378
|
+
"local_path": "Chemin local",
|
|
1379
|
+
"direction": "Direction",
|
|
1380
|
+
"push": "Envoyer (local → distant)",
|
|
1381
|
+
"pull": "Récupérer (distant → local)",
|
|
1382
|
+
"bidirectional": "Bidirectionnel",
|
|
1383
|
+
"last_sync": "Dernière synchronisation : {time}",
|
|
1384
|
+
"syncing": "Synchronisation en cours...",
|
|
1385
|
+
"success": "Synchronisation terminée",
|
|
1386
|
+
"error": "Erreur de synchronisation : {message}"
|
|
1387
|
+
},
|
|
1388
|
+
"marketplace": {
|
|
1389
|
+
"title": "Marché",
|
|
1390
|
+
"search": "Rechercher des serveurs MCP...",
|
|
1391
|
+
"source": "Source",
|
|
1392
|
+
"source_official": "Officiel",
|
|
1393
|
+
"source_lobehub": "LobeHub",
|
|
1394
|
+
"source_smithery": "Smithery",
|
|
1395
|
+
"install": "Installer",
|
|
1396
|
+
"install_and_connect": "Installer et connecter",
|
|
1397
|
+
"installing": "Installation en cours...",
|
|
1398
|
+
"installed": "Installé",
|
|
1399
|
+
"view_details": "Détails",
|
|
1400
|
+
"load_more": "Charger plus",
|
|
1401
|
+
"no_results": "Aucun serveur MCP trouvé",
|
|
1402
|
+
"network_error": "Échec du chargement, vérifiez le réseau",
|
|
1403
|
+
"retry": "Réessayer",
|
|
1404
|
+
"env_vars": "Variables d'environnement",
|
|
1405
|
+
"env_required": "(requis)",
|
|
1406
|
+
"popularity": "utilisations",
|
|
1407
|
+
"installs": "Installations / Utilisations",
|
|
1408
|
+
"verified": "Vérifié",
|
|
1409
|
+
"cancel": "Annuler"
|
|
1410
|
+
},
|
|
1411
|
+
"subtitle": "Connect to Model Context Protocol servers to give the AI agent tools and resources.",
|
|
1412
|
+
"settings_card_label": "MCP servers",
|
|
1413
|
+
"empty_state": {
|
|
1414
|
+
"title": "No MCP servers configured",
|
|
1415
|
+
"body": "Add a remote SSE or HTTP MCP server URL. Mobile builds intentionally do not spawn local processes — see the bridging guide below for how to expose a local MCP server (e.g. via Tailscale tailnet or an SSH tunnel) as a remote URL.",
|
|
1416
|
+
"cta": "Add server"
|
|
1417
|
+
},
|
|
1418
|
+
"list": {
|
|
1419
|
+
"add_button": "Add server",
|
|
1420
|
+
"status": {
|
|
1421
|
+
"connected": "Connected",
|
|
1422
|
+
"connecting": "Connecting…",
|
|
1423
|
+
"disconnected": "Disconnected",
|
|
1424
|
+
"error": "Error"
|
|
1425
|
+
},
|
|
1426
|
+
"tool_count": "{count} tools",
|
|
1427
|
+
"resource_count": "{count} resources",
|
|
1428
|
+
"last_connected": "Last connected {when}",
|
|
1429
|
+
"help_button": "How do I connect?"
|
|
1430
|
+
},
|
|
1431
|
+
"edit": {
|
|
1432
|
+
"title_new": "Add MCP server",
|
|
1433
|
+
"title_edit": "Edit MCP server",
|
|
1434
|
+
"name_label": "Name",
|
|
1435
|
+
"name_placeholder": "e.g. WeChat publisher",
|
|
1436
|
+
"transport_label": "Transport",
|
|
1437
|
+
"transport_sse": "SSE (Server-Sent Events)",
|
|
1438
|
+
"transport_http": "HTTP (Streamable)",
|
|
1439
|
+
"url_label": "URL",
|
|
1440
|
+
"url_placeholder_sse": "https://example.com/mcp/sse",
|
|
1441
|
+
"url_placeholder_http": "https://example.com/mcp",
|
|
1442
|
+
"headers_label": "HTTP headers (optional)",
|
|
1443
|
+
"headers_add": "Add header",
|
|
1444
|
+
"header_key_placeholder": "Authorization",
|
|
1445
|
+
"header_value_placeholder": "Bearer …",
|
|
1446
|
+
"enabled_label": "Enable on startup",
|
|
1447
|
+
"save_button": "Save",
|
|
1448
|
+
"cancel_button": "Cancel",
|
|
1449
|
+
"delete_button": "Delete server",
|
|
1450
|
+
"delete_confirm": "Remove this MCP server? Saved tools and any open connection will be cleared.",
|
|
1451
|
+
"validation": {
|
|
1452
|
+
"name_required": "Name is required.",
|
|
1453
|
+
"url_required": "URL is required.",
|
|
1454
|
+
"url_invalid": "URL must start with http:// or https://"
|
|
1455
|
+
}
|
|
1456
|
+
},
|
|
1457
|
+
"detail": {
|
|
1458
|
+
"title": "Server details",
|
|
1459
|
+
"reconnect_button": "Reconnect",
|
|
1460
|
+
"disconnect_button": "Disconnect",
|
|
1461
|
+
"edit_button": "Edit",
|
|
1462
|
+
"tools_heading": "Tools ({count})",
|
|
1463
|
+
"resources_heading": "Resources ({count})",
|
|
1464
|
+
"no_tools": "No tools exposed yet. Connect first.",
|
|
1465
|
+
"no_resources": "No resources exposed.",
|
|
1466
|
+
"error_heading": "Last error",
|
|
1467
|
+
"transport_label": "Transport: {transport}",
|
|
1468
|
+
"url_label": "URL: {url}"
|
|
1469
|
+
},
|
|
1470
|
+
"help": {
|
|
1471
|
+
"title": "How to bridge a local MCP server",
|
|
1472
|
+
"intro": "Mobile builds only speak to remote MCP servers over SSE or HTTP. Local stdio servers must be exposed via an external bridge — Moraya does not embed Tailscale, an SSH tunnel, or any other bridging tool.",
|
|
1473
|
+
"tailscale": {
|
|
1474
|
+
"heading": "Via your own LAN (e.g. Tailscale tailnet)",
|
|
1475
|
+
"body": "Run your stdio MCP server on a laptop with a public-from-your-device hostname, then add a server here with a URL like http://laptop-name.your-tailnet.ts.net:3030/sse. The hostname is whatever your VPN / LAN provides — Moraya does not detect it for you."
|
|
1476
|
+
},
|
|
1477
|
+
"tunnel": {
|
|
1478
|
+
"heading": "Via a remote tunnel (e.g. SSH or Termex)",
|
|
1479
|
+
"body": "Forward a remote server's MCP port to a URL you can reach from the phone, then paste that URL here. Same shape as a local LAN URL — Moraya treats every remote endpoint identically."
|
|
1480
|
+
},
|
|
1481
|
+
"security": {
|
|
1482
|
+
"heading": "Security",
|
|
1483
|
+
"body": "URLs and headers are stored locally on this device. Headers are sent on every request — use a short-lived token if you connect to anything outside your private network. Plain http:// URLs may require an NSAppTransportSecurity exception on iOS; HTTPS is recommended whenever possible."
|
|
1484
|
+
},
|
|
1485
|
+
"close_button": "Got it"
|
|
1486
|
+
},
|
|
1487
|
+
"errors": {
|
|
1488
|
+
"connect_failed": "Failed to connect to {name}: {message}",
|
|
1489
|
+
"tool_call_failed": "Tool call failed: {message}",
|
|
1490
|
+
"server_not_connected": "Server is not connected.",
|
|
1491
|
+
"tool_not_found": "Tool not found on any connected server."
|
|
1492
|
+
}
|
|
1493
|
+
},
|
|
1494
|
+
"media": {
|
|
1495
|
+
"__mt": true,
|
|
1496
|
+
"upload_title": "Media Uploads",
|
|
1497
|
+
"uploading": "Uploading",
|
|
1498
|
+
"upload_done": "Uploaded",
|
|
1499
|
+
"upload_error": "Upload failed",
|
|
1500
|
+
"compressed_from": "Compressed",
|
|
1501
|
+
"compress_auto": "Auto-compress images > 1MB",
|
|
1502
|
+
"size_limit_exceeded": "File exceeds size limit for your plan",
|
|
1503
|
+
"mime_not_allowed": "File type not supported",
|
|
1504
|
+
"quota_warn": "This note has over 10MB of media",
|
|
1505
|
+
"quota_hard": "Media quota exceeded (100MB per note)",
|
|
1506
|
+
"quota_title": "Media Usage",
|
|
1507
|
+
"paste_title": "Paste Media"
|
|
1508
|
+
},
|
|
1509
|
+
"memory": {
|
|
1510
|
+
"__mt": true,
|
|
1511
|
+
"title": "Long-Term Memory",
|
|
1512
|
+
"upgrade_required": "Long-term memory requires Personal plan or above.",
|
|
1513
|
+
"health_title": "Memory Health",
|
|
1514
|
+
"settings_title": "Memory Settings",
|
|
1515
|
+
"half_life_label": "Memory half-life",
|
|
1516
|
+
"half_life_never": "Never (no decay)",
|
|
1517
|
+
"days": "days",
|
|
1518
|
+
"export_import": "Export / Import",
|
|
1519
|
+
"memories_title": "Memories",
|
|
1520
|
+
"search_placeholder": "Search memories...",
|
|
1521
|
+
"filter_all": "All types",
|
|
1522
|
+
"kind_preference": "Preference",
|
|
1523
|
+
"kind_project": "Project",
|
|
1524
|
+
"kind_fact": "Fact",
|
|
1525
|
+
"no_memories": "No memories yet. Use /memorize in chat to add one.",
|
|
1526
|
+
"edit": "Edit",
|
|
1527
|
+
"delete": "Delete",
|
|
1528
|
+
"enable": "Enable",
|
|
1529
|
+
"disable": "Disable",
|
|
1530
|
+
"save": "Save",
|
|
1531
|
+
"cancel": "Cancel",
|
|
1532
|
+
"weight": "Weight",
|
|
1533
|
+
"danger_zone": "Danger Zone",
|
|
1534
|
+
"reset_all": "Reset all memories",
|
|
1535
|
+
"reset_confirm_instruction": "Type RESET to confirm deleting all memories. This cannot be undone.",
|
|
1536
|
+
"confirm_reset": "Delete all memories",
|
|
1537
|
+
"export_title": "Export Memories",
|
|
1538
|
+
"export_hint": "Download all your memories as a JSON file for backup or migration.",
|
|
1539
|
+
"export_btn": "Export memories",
|
|
1540
|
+
"export_invalid_format": "Invalid memory export format.",
|
|
1541
|
+
"import_title": "Import Memories",
|
|
1542
|
+
"import_hint": "Import memories from a previously exported JSON file.",
|
|
1543
|
+
"choose_file": "Choose file (.json)",
|
|
1544
|
+
"import_placeholder": "Or paste JSON here...",
|
|
1545
|
+
"import_btn": "Import",
|
|
1546
|
+
"import_success": "Memories imported successfully.",
|
|
1547
|
+
"memorize_ack": "Memory saved.",
|
|
1548
|
+
"forget_ack": "Memory forgotten.",
|
|
1549
|
+
"forget_not_found": "No matching memories found.",
|
|
1550
|
+
"private_mode_on": "Private mode on — this conversation will not be extracted.",
|
|
1551
|
+
"extract_queued": "{n} memory/memories pending your review.",
|
|
1552
|
+
"conflict_detected": "Conflict detected with existing memory.",
|
|
1553
|
+
"upgrade_memory": "Upgrade to Personal to unlock long-term memory."
|
|
1554
|
+
},
|
|
1555
|
+
"menu": {
|
|
1556
|
+
"file": "Fichier",
|
|
1557
|
+
"edit": "Édition",
|
|
1558
|
+
"paragraph": "Paragraphe",
|
|
1559
|
+
"format": "Format",
|
|
1560
|
+
"view": "Affichage",
|
|
1561
|
+
"window": "Fenêtre",
|
|
1562
|
+
"help": "Aide",
|
|
1563
|
+
"new": "Nouveau",
|
|
1564
|
+
"new_window": "Nouvelle fenêtre",
|
|
1565
|
+
"open": "Ouvrir...",
|
|
1566
|
+
"save": "Enregistrer",
|
|
1567
|
+
"save_as": "Enregistrer sous...",
|
|
1568
|
+
"export": "Exporter",
|
|
1569
|
+
"export_html": "HTML",
|
|
1570
|
+
"export_pdf": "PDF",
|
|
1571
|
+
"export_image": "Image (PNG)",
|
|
1572
|
+
"export_doc": "Word (.doc)",
|
|
1573
|
+
"heading1": "Titre 1",
|
|
1574
|
+
"heading2": "Titre 2",
|
|
1575
|
+
"heading3": "Titre 3",
|
|
1576
|
+
"heading4": "Titre 4",
|
|
1577
|
+
"heading5": "Titre 5",
|
|
1578
|
+
"heading6": "Titre 6",
|
|
1579
|
+
"table": "Tableau",
|
|
1580
|
+
"code_block": "Bloc de code",
|
|
1581
|
+
"math_block": "Bloc mathématique",
|
|
1582
|
+
"quote": "Citation",
|
|
1583
|
+
"bullet_list": "Liste à puces",
|
|
1584
|
+
"ordered_list": "Liste numérotée",
|
|
1585
|
+
"task_list": "Liste de tâches",
|
|
1586
|
+
"horizontal_rule": "Ligne horizontale",
|
|
1587
|
+
"bold": "Gras",
|
|
1588
|
+
"italic": "Italique",
|
|
1589
|
+
"strikethrough": "Barré",
|
|
1590
|
+
"code": "Code",
|
|
1591
|
+
"link": "Lien",
|
|
1592
|
+
"image": "Image",
|
|
1593
|
+
"visual_mode": "Mode visuel",
|
|
1594
|
+
"source_mode": "Mode source",
|
|
1595
|
+
"split_mode": "Mode divisé",
|
|
1596
|
+
"toggle_sidebar": "Afficher/Masquer la barre latérale",
|
|
1597
|
+
"toggle_aipanel": "Afficher/Masquer le panneau IA",
|
|
1598
|
+
"toggle_outline": "Afficher/Masquer le sommaire",
|
|
1599
|
+
"zoom_in": "Zoom avant",
|
|
1600
|
+
"zoom_out": "Zoom arrière",
|
|
1601
|
+
"actual_size": "Taille réelle",
|
|
1602
|
+
"find": "Rechercher",
|
|
1603
|
+
"replace": "Remplacer",
|
|
1604
|
+
"changelog": "Journal des modifications",
|
|
1605
|
+
"privacy_policy": "Politique de confidentialité",
|
|
1606
|
+
"official_website": "Site officiel",
|
|
1607
|
+
"about_moraya": "À propos de Moraya",
|
|
1608
|
+
"feedback": "Retours",
|
|
1609
|
+
"settings": "Paramètres...",
|
|
1610
|
+
"version_info": "Informations de version",
|
|
1611
|
+
"workflow": "Workflow",
|
|
1612
|
+
"seo_optimization": "Optimisation SEO",
|
|
1613
|
+
"ai_image_generation": "Génération d'images IA",
|
|
1614
|
+
"publish": "Publier",
|
|
1615
|
+
"mcp_tools": "Outils MCP",
|
|
1616
|
+
"no_mcptools": "Aucun outil MCP connecté"
|
|
1617
|
+
},
|
|
1618
|
+
"mermaid": {
|
|
1619
|
+
"loading": "Chargement du diagramme...",
|
|
1620
|
+
"error": "Échec du rendu du diagramme",
|
|
1621
|
+
"edit": "Modifier",
|
|
1622
|
+
"preview": "Aperçu",
|
|
1623
|
+
"empty": "Diagramme vide"
|
|
1624
|
+
},
|
|
1625
|
+
"mfa": {
|
|
1626
|
+
"__mt": true,
|
|
1627
|
+
"title": "Multi-Factor Authentication",
|
|
1628
|
+
"description": "Configure MFA requirements for team members.",
|
|
1629
|
+
"policy": "MFA Policy",
|
|
1630
|
+
"allowed_types": "Allowed MFA Methods",
|
|
1631
|
+
"grace_period": "Grace Period",
|
|
1632
|
+
"grace_period_hint": "Hours new members have to enroll in MFA after joining.",
|
|
1633
|
+
"hours": "hours",
|
|
1634
|
+
"required_banner": "MFA is required. All members must enroll before accessing team resources.",
|
|
1635
|
+
"save": "Save MFA Settings",
|
|
1636
|
+
"saved_success": "MFA settings saved."
|
|
1637
|
+
},
|
|
1638
|
+
"migration": {
|
|
1639
|
+
"__mt": true,
|
|
1640
|
+
"title": "KB Migration",
|
|
1641
|
+
"subtitle": "Move your knowledge base to a different storage provider",
|
|
1642
|
+
"new_migration": "New Migration",
|
|
1643
|
+
"wizard_title": "New Migration Wizard",
|
|
1644
|
+
"kb_id": "KB ID",
|
|
1645
|
+
"kb_name": "KB Name",
|
|
1646
|
+
"provider": "Provider",
|
|
1647
|
+
"bucket": "Bucket",
|
|
1648
|
+
"prefix": "Prefix",
|
|
1649
|
+
"source": "Source",
|
|
1650
|
+
"target": "Target",
|
|
1651
|
+
"encryption_mode": "Encryption Mode",
|
|
1652
|
+
"dry_run_label": "Dry run (simulate only, no files copied)",
|
|
1653
|
+
"dry_run_badge": "Dry Run",
|
|
1654
|
+
"dry_run_start": "Start Dry Run",
|
|
1655
|
+
"start_migration": "Start Migration",
|
|
1656
|
+
"cancel": "Cancel",
|
|
1657
|
+
"files": "files",
|
|
1658
|
+
"errors": "Errors",
|
|
1659
|
+
"started": "Started",
|
|
1660
|
+
"rollback_deadline": "Rollback deadline",
|
|
1661
|
+
"rollback": "Rollback",
|
|
1662
|
+
"download_log": "Download Log",
|
|
1663
|
+
"history_title": "Migration History",
|
|
1664
|
+
"history_empty": "No migrations yet",
|
|
1665
|
+
"loading": "Loading...",
|
|
1666
|
+
"confirm_delete": "Delete this migration session?"
|
|
1667
|
+
},
|
|
1668
|
+
"mobile": {
|
|
1669
|
+
"__mt": true,
|
|
1670
|
+
"tab": {
|
|
1671
|
+
"nav_label": "Primary navigation",
|
|
1672
|
+
"edit": "Edit",
|
|
1673
|
+
"ai": "AI",
|
|
1674
|
+
"files": "Knowledge Base",
|
|
1675
|
+
"settings": "Settings"
|
|
1676
|
+
},
|
|
1677
|
+
"appbar": {
|
|
1678
|
+
"menu": "Open sidebar",
|
|
1679
|
+
"more": "More actions",
|
|
1680
|
+
"toggle_ai_pane": "Toggle AI pane",
|
|
1681
|
+
"untitled": "Untitled"
|
|
1682
|
+
},
|
|
1683
|
+
"overflow": {
|
|
1684
|
+
"mode_label": "Mode",
|
|
1685
|
+
"mode_visual": "Visual",
|
|
1686
|
+
"mode_source": "Source",
|
|
1687
|
+
"search": "Find & Replace",
|
|
1688
|
+
"outline": "Outline",
|
|
1689
|
+
"export": "Export",
|
|
1690
|
+
"share": "Share"
|
|
1691
|
+
},
|
|
1692
|
+
"format": {
|
|
1693
|
+
"bold": "Bold",
|
|
1694
|
+
"italic": "Italic",
|
|
1695
|
+
"heading": "Heading",
|
|
1696
|
+
"list": "List",
|
|
1697
|
+
"code": "Code",
|
|
1698
|
+
"link": "Link",
|
|
1699
|
+
"link_prompt": "Enter URL",
|
|
1700
|
+
"image": "Image"
|
|
1701
|
+
},
|
|
1702
|
+
"ai": {
|
|
1703
|
+
"title": "AI",
|
|
1704
|
+
"placeholder": "Ask anything or describe what you want to write…",
|
|
1705
|
+
"send": "Send",
|
|
1706
|
+
"voice": "Voice",
|
|
1707
|
+
"model": "Model",
|
|
1708
|
+
"empty_state": "Your AI conversations will appear here.",
|
|
1709
|
+
"thinking": "Thinking…",
|
|
1710
|
+
"clear": "Clear conversation",
|
|
1711
|
+
"clear_confirm": "Clear all messages?",
|
|
1712
|
+
"cleared": "Conversation effacée",
|
|
1713
|
+
"clear_undone": "Messages restaurés",
|
|
1714
|
+
"stub_response": "Hi! I'm a placeholder response. The real AI provider will be wired up in v0.68.",
|
|
1715
|
+
"not_configured_title": "AI is not configured yet",
|
|
1716
|
+
"not_configured_text": "Add an API key or pick a local model in Settings → AI to start chatting.",
|
|
1717
|
+
"not_configured": "AI is not configured. Open Settings to set up an AI model?",
|
|
1718
|
+
"configure_now": "Set up",
|
|
1719
|
+
"stop": "Stop",
|
|
1720
|
+
"error_prefix": "Error",
|
|
1721
|
+
"pick_model": "Switch AI model",
|
|
1722
|
+
"no_providers": "No AI providers configured yet. Tap “Set up” to add one.",
|
|
1723
|
+
"conversations": "Conversations",
|
|
1724
|
+
"new_chat": "New chat",
|
|
1725
|
+
"no_conversations": "No conversations yet. Tap “New chat” to start.",
|
|
1726
|
+
"no_matches": "No conversations match your search.",
|
|
1727
|
+
"search_placeholder": "Search conversations…",
|
|
1728
|
+
"attach_image": "Attach image",
|
|
1729
|
+
"remove_attachment": "Remove attachment",
|
|
1730
|
+
"attached_image": "Attached image",
|
|
1731
|
+
"compressing": "Compressing…",
|
|
1732
|
+
"copy": "Copy",
|
|
1733
|
+
"sync_syncing": "Syncing with Picora…",
|
|
1734
|
+
"sync_idle": "Synced with Picora",
|
|
1735
|
+
"sync_offline": "Offline (will retry)",
|
|
1736
|
+
"sync_error": "Sync error — check connection",
|
|
1737
|
+
"sync_disabled": "Sync disabled",
|
|
1738
|
+
"mention_title": "Mention a note",
|
|
1739
|
+
"mention_search": "Search your notes…",
|
|
1740
|
+
"no_notes": "No notes yet — open one from the Files tab.",
|
|
1741
|
+
"insert_action": "Insert",
|
|
1742
|
+
"insert_title": "Insert into note",
|
|
1743
|
+
"insert_append": "Append to current note",
|
|
1744
|
+
"insert_append_sub": "Add this AI reply to the doc you have open in the Edit tab.",
|
|
1745
|
+
"insert_new": "Create new note",
|
|
1746
|
+
"insert_new_sub": "Make a new doc from this AI reply and open it.",
|
|
1747
|
+
"insert_no_active": "No document is open in the Edit tab.",
|
|
1748
|
+
"insert_failed": "Could not write the note — check storage permissions.",
|
|
1749
|
+
"insert_append_ok": "Appended to current note.",
|
|
1750
|
+
"insert_new_ok": "New note created.",
|
|
1751
|
+
"export": "Export / Share",
|
|
1752
|
+
"export_failed": "Could not export this conversation.",
|
|
1753
|
+
"export_ok": "Conversation exported.",
|
|
1754
|
+
"rag_used": "Referenced {n} past message(s)",
|
|
1755
|
+
"rag_on_title": "History RAG enabled — past conversations may be used as context",
|
|
1756
|
+
"citations_title": "{n} reference(s)",
|
|
1757
|
+
"citations_empty": "No citations attached to this message.",
|
|
1758
|
+
"params_title": "Generation parameters",
|
|
1759
|
+
"params_hint": "Override AI generation settings for this conversation only. Leave blank to use the provider default.",
|
|
1760
|
+
"params_save": "Save",
|
|
1761
|
+
"params_reset": "Reset to defaults",
|
|
1762
|
+
"param_temperature": "Temperature",
|
|
1763
|
+
"param_temperature_sub": "0 = deterministic · 1 = balanced · 2 = creative",
|
|
1764
|
+
"param_max_tokens": "Max output tokens",
|
|
1765
|
+
"param_max_tokens_sub": "Hard cap on the model's reply length",
|
|
1766
|
+
"param_top_p": "Top-P",
|
|
1767
|
+
"param_top_p_sub": "Nucleus sampling threshold (0–1)",
|
|
1768
|
+
"param_stop": "Stop sequences",
|
|
1769
|
+
"param_stop_sub": "Model halts when about to emit any of these. Comma-separated; use \\n for newline.",
|
|
1770
|
+
"param_stop_placeholder": "\\n\\n###, END",
|
|
1771
|
+
"presets_label": "Presets",
|
|
1772
|
+
"preset_save_as": "Save current as preset",
|
|
1773
|
+
"preset_save_prompt": "Name this preset:",
|
|
1774
|
+
"preset_delete_confirm": "Delete preset \"{name}\"?",
|
|
1775
|
+
"preset_delete_aria": "Delete preset",
|
|
1776
|
+
"preset_deleted": "Préréglage « {name} » supprimé",
|
|
1777
|
+
"preset_restored": "Préréglage restauré",
|
|
1778
|
+
"preset_picker_title": "Pick a preset",
|
|
1779
|
+
"preset_picker_hint": "Switch tone for this conversation. For fine-tuning, use the ⚙ gear.",
|
|
1780
|
+
"preset_picker_custom_note": "Currently using custom values — open ⚙ to view or save them as a preset.",
|
|
1781
|
+
"preset_custom_label": "Custom",
|
|
1782
|
+
"retry_title": "Retry this reply",
|
|
1783
|
+
"retry_action": "Retry",
|
|
1784
|
+
"retry_as_is": "Retry with current params",
|
|
1785
|
+
"retry_with_preset": "Or try a different preset",
|
|
1786
|
+
"retry_done": "Reply regenerating",
|
|
1787
|
+
"retry_undone": "Original reply restored",
|
|
1788
|
+
"undo": "Undo",
|
|
1789
|
+
"presets": {
|
|
1790
|
+
"default": {
|
|
1791
|
+
"label": "Default"
|
|
1792
|
+
},
|
|
1793
|
+
"precise": {
|
|
1794
|
+
"label": "Precise"
|
|
1795
|
+
},
|
|
1796
|
+
"balanced": {
|
|
1797
|
+
"label": "Balanced"
|
|
1798
|
+
},
|
|
1799
|
+
"creative": {
|
|
1800
|
+
"label": "Creative"
|
|
1801
|
+
}
|
|
1802
|
+
},
|
|
1803
|
+
"default": "Default",
|
|
1804
|
+
"quick_actions_header": "Start with",
|
|
1805
|
+
"workflows_header": "Workflows",
|
|
1806
|
+
"wf_steps": "steps",
|
|
1807
|
+
"wf": {
|
|
1808
|
+
"summarize-then-translate": {
|
|
1809
|
+
"name": "Summarize → Translate",
|
|
1810
|
+
"desc": "TL;DR the input, then translate the summary."
|
|
1811
|
+
},
|
|
1812
|
+
"translate-then-polish": {
|
|
1813
|
+
"name": "Translate → Polish",
|
|
1814
|
+
"desc": "Translate input, then smooth the translation."
|
|
1815
|
+
},
|
|
1816
|
+
"step": {
|
|
1817
|
+
"summarize": "Summarizing",
|
|
1818
|
+
"translate": "Translating",
|
|
1819
|
+
"polish": "Polishing",
|
|
1820
|
+
"tone": "Tone",
|
|
1821
|
+
"length": "Length",
|
|
1822
|
+
"article": "Writing article",
|
|
1823
|
+
"cover": "Cover image",
|
|
1824
|
+
"target_lang": "Target language",
|
|
1825
|
+
"dictate": "Dictation",
|
|
1826
|
+
"structurize": "Structuring"
|
|
1827
|
+
},
|
|
1828
|
+
"write-article": {
|
|
1829
|
+
"name": "Write article + cover",
|
|
1830
|
+
"desc": "Topic → tone/length → article → AI cover",
|
|
1831
|
+
"ask_tone": "What tone should the article take?",
|
|
1832
|
+
"ask_length": "How long should it be?",
|
|
1833
|
+
"cover_hint": "Generating a cover image…"
|
|
1834
|
+
},
|
|
1835
|
+
"translate": {
|
|
1836
|
+
"name": "Translate",
|
|
1837
|
+
"desc": "Translate text into a target language",
|
|
1838
|
+
"ask_lang": "Translate into which language?"
|
|
1839
|
+
},
|
|
1840
|
+
"voice-transcribe": {
|
|
1841
|
+
"name": "Voice → note",
|
|
1842
|
+
"desc": "Dictate, then structure into a note",
|
|
1843
|
+
"hint": "Tap done when you finish speaking."
|
|
1844
|
+
},
|
|
1845
|
+
"tone": {
|
|
1846
|
+
"general": "General",
|
|
1847
|
+
"marketing": "Marketing",
|
|
1848
|
+
"technical": "Technical",
|
|
1849
|
+
"story": "Story"
|
|
1850
|
+
},
|
|
1851
|
+
"length": {
|
|
1852
|
+
"short": "Short (~500)",
|
|
1853
|
+
"medium": "Medium (~1500)",
|
|
1854
|
+
"long": "Long (~3000)"
|
|
1855
|
+
},
|
|
1856
|
+
"lang": {
|
|
1857
|
+
"en": "English",
|
|
1858
|
+
"zh": "Chinese",
|
|
1859
|
+
"ja": "Japanese",
|
|
1860
|
+
"ko": "Korean"
|
|
1861
|
+
},
|
|
1862
|
+
"cancel": "Cancel",
|
|
1863
|
+
"listening": "Listening…",
|
|
1864
|
+
"stt_done": "Done",
|
|
1865
|
+
"generating_cover": "Generating cover…",
|
|
1866
|
+
"cover_failed": "Cover generation failed",
|
|
1867
|
+
"skip_cover": "Skip cover",
|
|
1868
|
+
"regenerate": "Regenerate",
|
|
1869
|
+
"insert_with_cover": "Insert article + cover",
|
|
1870
|
+
"no_image_provider": "No image provider — set one up in Settings → Image generation."
|
|
1871
|
+
},
|
|
1872
|
+
"tpl": {
|
|
1873
|
+
"screenshot-to-md": {
|
|
1874
|
+
"name": "Image → Markdown",
|
|
1875
|
+
"desc": "Convert a screenshot, photo, or chart to clean Markdown.",
|
|
1876
|
+
"input": "Add a caption or leave empty — the model uses your image."
|
|
1877
|
+
},
|
|
1878
|
+
"summarize-current": {
|
|
1879
|
+
"name": "Summarize note",
|
|
1880
|
+
"desc": "TL;DR + key terms of the doc open in the Edit tab.",
|
|
1881
|
+
"input": "Optional focus: “key claims only”, “as bullet list”…"
|
|
1882
|
+
},
|
|
1883
|
+
"continue-writing": {
|
|
1884
|
+
"name": "Continue writing",
|
|
1885
|
+
"desc": "Pick up where you left off in the current doc.",
|
|
1886
|
+
"input": "Optional steering: tone, length, next section…"
|
|
1887
|
+
},
|
|
1888
|
+
"translate-zh-en": {
|
|
1889
|
+
"name": "Translate ZH ↔ EN",
|
|
1890
|
+
"desc": "Auto-detects source language. Preserves Markdown.",
|
|
1891
|
+
"input": "Paste the text to translate."
|
|
1892
|
+
}
|
|
1893
|
+
},
|
|
1894
|
+
"rename": "Rename",
|
|
1895
|
+
"rename_prompt": "New title",
|
|
1896
|
+
"delete_confirm": "Delete “{title}”? This cannot be undone.",
|
|
1897
|
+
"conv_deleted": "Deleted “{title}”",
|
|
1898
|
+
"conv_restored": "Conversation restored",
|
|
1899
|
+
"usage_tooltip": "Prompt tokens ↑ Completion tokens ↓",
|
|
1900
|
+
"budget_warn_confirm": "You are nearing your monthly AI budget. Send anyway?",
|
|
1901
|
+
"budget_over_confirm": "You are OVER your monthly AI budget. Send anyway?",
|
|
1902
|
+
"bulk_import": "Import all",
|
|
1903
|
+
"bulk_export": "Export all",
|
|
1904
|
+
"import_ok": "Imported {n} conversation(s).",
|
|
1905
|
+
"import_empty": "No conversations in that file.",
|
|
1906
|
+
"import_failed": "Import failed: {err}",
|
|
1907
|
+
"compose": "Compose article",
|
|
1908
|
+
"commands_title": "Commands",
|
|
1909
|
+
"more_actions": "More actions",
|
|
1910
|
+
"commands_empty": "No matching commands.",
|
|
1911
|
+
"voice_dictate": "Voice input",
|
|
1912
|
+
"voice_stop": "Stop",
|
|
1913
|
+
"voice_read_aloud": "Read aloud",
|
|
1914
|
+
"voice_local_badge": "On-device",
|
|
1915
|
+
"voice_permission_denied": "Microphone or speech permission denied. Enable it in Settings to use voice.",
|
|
1916
|
+
"voice_start_failed": "Could not start voice input.",
|
|
1917
|
+
"voice_speak_failed": "Could not read this message aloud."
|
|
1918
|
+
},
|
|
1919
|
+
"files": {
|
|
1920
|
+
"title": "Knowledge Base",
|
|
1921
|
+
"kb": "Knowledge Bases",
|
|
1922
|
+
"tree": "All Notes",
|
|
1923
|
+
"recent": "Recent",
|
|
1924
|
+
"favorites": "Favorites",
|
|
1925
|
+
"open_local": "Open from device",
|
|
1926
|
+
"open_local_failed": "Could not open this file. Make sure it's a text or Markdown file.",
|
|
1927
|
+
"new": "New document",
|
|
1928
|
+
"no_recent": "No recently opened documents.",
|
|
1929
|
+
"no_favorites": "No favorites yet. Star a document from the editor to add it here.",
|
|
1930
|
+
"empty": "No notes yet. Tap “New document” or “Open from device” to start.",
|
|
1931
|
+
"loading": "Loading…",
|
|
1932
|
+
"new_kb": "New knowledge base",
|
|
1933
|
+
"kb_name_placeholder": "Knowledge base name",
|
|
1934
|
+
"create": "Create",
|
|
1935
|
+
"cancel": "Cancel",
|
|
1936
|
+
"kb_create_failed": "Could not create the knowledge base."
|
|
1937
|
+
},
|
|
1938
|
+
"media": {
|
|
1939
|
+
"title": "Cloud images",
|
|
1940
|
+
"search": "Search images",
|
|
1941
|
+
"loading": "Loading…",
|
|
1942
|
+
"empty": "No cloud images yet.",
|
|
1943
|
+
"insert": "Insert cloud image"
|
|
1944
|
+
}
|
|
1945
|
+
},
|
|
1946
|
+
"notifications": {
|
|
1947
|
+
"__mt": true,
|
|
1948
|
+
"title": "Push Notifications",
|
|
1949
|
+
"subtitle": "Receive alerts when your AI tasks finish or collaborators @ you.",
|
|
1950
|
+
"unsupported": "This browser does not support push notifications.",
|
|
1951
|
+
"permission_status": "Permission",
|
|
1952
|
+
"permission_denied": "Notification permission denied.",
|
|
1953
|
+
"denied_hint": "Open your browser settings to re-enable notifications.",
|
|
1954
|
+
"enable": "Enable",
|
|
1955
|
+
"disable": "Disable",
|
|
1956
|
+
"no_token": "Failed to obtain a device token.",
|
|
1957
|
+
"device_registered": "This device is registered:",
|
|
1958
|
+
"registered_devices": "Registered devices",
|
|
1959
|
+
"no_devices": "No devices registered yet.",
|
|
1960
|
+
"revoke": "Revoke",
|
|
1961
|
+
"revoke_confirm": "Revoke this device? It will stop receiving push notifications immediately.",
|
|
1962
|
+
"platform": {
|
|
1963
|
+
"web": "Web",
|
|
1964
|
+
"ios": "iOS",
|
|
1965
|
+
"android": "Android",
|
|
1966
|
+
"desktop": "Desktop",
|
|
1967
|
+
"unknown": "Unknown"
|
|
1968
|
+
},
|
|
1969
|
+
"registered_at": "Registered {date}",
|
|
1970
|
+
"last_seen": "Last seen {date}",
|
|
1971
|
+
"error_register": "Could not register this device.",
|
|
1972
|
+
"error_list": "Could not load device list."
|
|
1973
|
+
},
|
|
1974
|
+
"offline": {
|
|
1975
|
+
"__mt": true,
|
|
1976
|
+
"cache_enabled": "Offline cache enabled",
|
|
1977
|
+
"cache_disabled": "Offline cache disabled",
|
|
1978
|
+
"cache_size": "{size} cached",
|
|
1979
|
+
"cache_note_count": "{count} notes cached",
|
|
1980
|
+
"cache_expired": "Cache expired",
|
|
1981
|
+
"note_cached": "Note cached for offline",
|
|
1982
|
+
"note_evicted": "Note evicted from cache",
|
|
1983
|
+
"offline_banner": "You are offline. Showing cached content.",
|
|
1984
|
+
"cache_settings": "Offline Cache Settings",
|
|
1985
|
+
"max_notes": "Max cached notes"
|
|
1986
|
+
},
|
|
1987
|
+
"outline": {
|
|
1988
|
+
"empty": "No headings found",
|
|
1989
|
+
"title": "Outline",
|
|
1990
|
+
"expand": "Expand",
|
|
1991
|
+
"collapse": "Collapse"
|
|
1992
|
+
},
|
|
1993
|
+
"perf": {
|
|
1994
|
+
"__mt": true,
|
|
1995
|
+
"memory_warning": "High memory usage detected ({percent}%)",
|
|
1996
|
+
"memory_critical": "Critical memory usage ({percent}%)",
|
|
1997
|
+
"memory_trend_growing": "Memory growing",
|
|
1998
|
+
"memory_trend_stable": "Memory stable",
|
|
1999
|
+
"memory_trend_shrinking": "Memory shrinking",
|
|
2000
|
+
"vitals_score": "Performance score: {score}",
|
|
2001
|
+
"vitals_good": "Good",
|
|
2002
|
+
"vitals_needs_improvement": "Needs improvement",
|
|
2003
|
+
"vitals_poor": "Poor"
|
|
2004
|
+
},
|
|
2005
|
+
"permissions": {
|
|
2006
|
+
"__mt": true,
|
|
2007
|
+
"paste_title": "Allow Clipboard Access?",
|
|
2008
|
+
"paste_desc": "Moraya wants to read image data from your clipboard. This is used only when you paste an image.",
|
|
2009
|
+
"allow_once": "Allow Once",
|
|
2010
|
+
"allow_always": "Always Allow",
|
|
2011
|
+
"deny": "Deny",
|
|
2012
|
+
"granted": "Clipboard access granted",
|
|
2013
|
+
"denied": "Clipboard access denied",
|
|
2014
|
+
"revoke": "Revoke Permission"
|
|
2015
|
+
},
|
|
2016
|
+
"plugin_action": {
|
|
2017
|
+
"title": "Exécuter le plugin",
|
|
2018
|
+
"run_action": "Exécuter",
|
|
2019
|
+
"invoking": "En cours...",
|
|
2020
|
+
"success": "Plugin appliqué",
|
|
2021
|
+
"no_changes": "Aucun changement",
|
|
2022
|
+
"no_plugins": "Aucun plugin en cours"
|
|
2023
|
+
},
|
|
2024
|
+
"plugins": {
|
|
2025
|
+
"tabs": {
|
|
2026
|
+
"preset": "Intégrés",
|
|
2027
|
+
"installed": "Installés",
|
|
2028
|
+
"market": "Marketplace"
|
|
2029
|
+
},
|
|
2030
|
+
"installed": {
|
|
2031
|
+
"empty": "Aucun plugin installé pour le moment."
|
|
2032
|
+
},
|
|
2033
|
+
"sandbox": {
|
|
2034
|
+
"label": "Niveau de sandbox",
|
|
2035
|
+
"sandbox": "Sandbox (JS)",
|
|
2036
|
+
"local": "Local (sans réseau)",
|
|
2037
|
+
"system": "Système (accès réseau)"
|
|
2038
|
+
},
|
|
2039
|
+
"permissions": {
|
|
2040
|
+
"label": "Permissions"
|
|
2041
|
+
},
|
|
2042
|
+
"market": {
|
|
2043
|
+
"search": "Rechercher des plugins...",
|
|
2044
|
+
"refresh": "Actualiser",
|
|
2045
|
+
"cat_all": "Tous",
|
|
2046
|
+
"cached": "Affichage des résultats en cache",
|
|
2047
|
+
"loading": "Chargement du marketplace...",
|
|
2048
|
+
"empty": "Aucun plugin trouvé",
|
|
2049
|
+
"install": "Installer",
|
|
2050
|
+
"installed": "Installé",
|
|
2051
|
+
"installing": "Installation en cours..."
|
|
2052
|
+
},
|
|
2053
|
+
"install": {
|
|
2054
|
+
"from_file": "Installer depuis un .zip",
|
|
2055
|
+
"url_placeholder": "URL du dépôt GitHub (https://github.com/...)",
|
|
2056
|
+
"validate": "Importer",
|
|
2057
|
+
"confirm_url": "Installer le plugin depuis l'URL ?",
|
|
2058
|
+
"author": "Auteur",
|
|
2059
|
+
"permissions": "Permissions",
|
|
2060
|
+
"no_permissions": "Aucune permission",
|
|
2061
|
+
"fetching_release": "Récupération des informations de version...",
|
|
2062
|
+
"downloading": "Téléchargement en cours..."
|
|
2063
|
+
},
|
|
2064
|
+
"verified": "Vérifié",
|
|
2065
|
+
"enable": "Activer",
|
|
2066
|
+
"disable": "Désactiver",
|
|
2067
|
+
"uninstall": "Désinstaller",
|
|
2068
|
+
"changelog": "Journal des modifications",
|
|
2069
|
+
"view_source": "Source",
|
|
2070
|
+
"blacklisted": "Sur liste noire",
|
|
2071
|
+
"blacklist_warning": "Ce plugin a été mis sur liste noire en raison d'un problème de sécurité. Veuillez le désinstaller.",
|
|
2072
|
+
"process_error": "Le processus du plugin a planté. Basculez pour redémarrer.",
|
|
2073
|
+
"error": {
|
|
2074
|
+
"platform_not_supported": "Aucun téléchargement disponible pour votre plateforme."
|
|
2075
|
+
},
|
|
2076
|
+
"preset": {
|
|
2077
|
+
"initializing": "Chargement...",
|
|
2078
|
+
"download": "Télécharger",
|
|
2079
|
+
"retry": "Réessayer",
|
|
2080
|
+
"ready": "Activé",
|
|
2081
|
+
"downloading": "Téléchargement...",
|
|
2082
|
+
"loading": "Chargement...",
|
|
2083
|
+
"error": "Erreur",
|
|
2084
|
+
"large_bundle": "Gros paquet (>500 Ko) — le téléchargement peut prendre un moment",
|
|
2085
|
+
"cancel": "Annuler",
|
|
2086
|
+
"delete": "Supprimer"
|
|
2087
|
+
}
|
|
2088
|
+
},
|
|
2089
|
+
"publish": {
|
|
2090
|
+
"settings_empty": "Aucune cible de publication configurée",
|
|
2091
|
+
"settings_hint": "Ajoutez un dépôt GitHub ou un point de terminaison API personnalisé pour publier vos articles.",
|
|
2092
|
+
"add_target": "Ajouter une cible",
|
|
2093
|
+
"edit_target": "Modifier",
|
|
2094
|
+
"delete_target": "Supprimer",
|
|
2095
|
+
"test_connection": "Tester la connexion",
|
|
2096
|
+
"github": "Dépôt GitHub",
|
|
2097
|
+
"custom_api": "API personnalisée",
|
|
2098
|
+
"target_name": "Nom",
|
|
2099
|
+
"target_name_placeholder": "ex. Mon Blog",
|
|
2100
|
+
"repo_url": "URL du dépôt",
|
|
2101
|
+
"repo_url_placeholder": "https://github.com/utilisateur/blog",
|
|
2102
|
+
"branch": "Branche",
|
|
2103
|
+
"articles_dir": "Répertoire des articles",
|
|
2104
|
+
"articles_dir_placeholder": "content/posts/",
|
|
2105
|
+
"images_dir": "Répertoire des images",
|
|
2106
|
+
"images_dir_placeholder": "static/images/",
|
|
2107
|
+
"token": "Token d'accès personnel",
|
|
2108
|
+
"token_placeholder": "ghp_xxxxxxxxxxxx",
|
|
2109
|
+
"front_matter_template": "Modèle Front Matter",
|
|
2110
|
+
"endpoint": "Point de terminaison API",
|
|
2111
|
+
"endpoint_placeholder": "https://api.exemple.com/articles",
|
|
2112
|
+
"method": "Méthode HTTP",
|
|
2113
|
+
"headers": "En-têtes (JSON)",
|
|
2114
|
+
"body_template": "Modèle du corps",
|
|
2115
|
+
"template_presets": "Modèles prédéfinis",
|
|
2116
|
+
"preset_hugo": "Hugo",
|
|
2117
|
+
"preset_hexo": "Hexo",
|
|
2118
|
+
"preset_astro": "Astro",
|
|
2119
|
+
"preset_custom": "Personnalisé",
|
|
2120
|
+
"file_name_pattern": "Modèle de nom de fichier",
|
|
2121
|
+
"file_name_preset": "Préréglage de nom",
|
|
2122
|
+
"file_name_preview": "Aperçu",
|
|
2123
|
+
"preset_simple": "Simple (nom de fichier)",
|
|
2124
|
+
"preset_date_slug": "Date + Slug",
|
|
2125
|
+
"preset_date_filename": "Date + Nom de fichier",
|
|
2126
|
+
"preset_year_month": "Année/Mois/Slug",
|
|
2127
|
+
"file_name_variables": "Variables : {{date}}, {{year}}, {{month}}, {{day}}, {{slug}}, {{filename}}, {{title}}",
|
|
2128
|
+
"rss_section": "Flux RSS",
|
|
2129
|
+
"rss_enable": "Générer le flux RSS",
|
|
2130
|
+
"rss_enable_hint": "Mettre à jour automatiquement feed.xml lors de la publication",
|
|
2131
|
+
"rss_feed_path": "Chemin du fichier de flux",
|
|
2132
|
+
"rss_feed_path_placeholder": "feed.xml",
|
|
2133
|
+
"rss_site_url": "URL du site",
|
|
2134
|
+
"rss_site_url_placeholder": "https://monblog.com",
|
|
2135
|
+
"rss_feed_title": "Titre du flux",
|
|
2136
|
+
"rss_feed_title_placeholder": "Mon Blog",
|
|
2137
|
+
"rss_feed_description": "Description du flux",
|
|
2138
|
+
"rss_feed_description_placeholder": "Articles sur...",
|
|
2139
|
+
"rss_language": "Langue",
|
|
2140
|
+
"rss_author_name": "Auteur",
|
|
2141
|
+
"rss_author_name_placeholder": "Jean Dupont",
|
|
2142
|
+
"rss_max_items": "Nombre maximum d'éléments dans le flux",
|
|
2143
|
+
"rss_include_full_content": "Inclure le contenu complet de l'article dans le flux",
|
|
2144
|
+
"rss_feed_endpoint": "Point de terminaison du flux RSS",
|
|
2145
|
+
"rss_feed_endpoint_placeholder": "https://api.exemple.com/rss",
|
|
2146
|
+
"rss_update_failed": "Échec de la mise à jour du flux RSS",
|
|
2147
|
+
"progress_title": "Publication en cours...",
|
|
2148
|
+
"progress_publishing": "Upload en cours...",
|
|
2149
|
+
"progress_rss": "Mise à jour du RSS...",
|
|
2150
|
+
"progress_done": "Terminé",
|
|
2151
|
+
"progress_failed": "Échec",
|
|
2152
|
+
"enable_seo": "Optimisation SEO",
|
|
2153
|
+
"enable_seohint": "Générer le titre, l'extrait, les tags et la méta-description avant publication",
|
|
2154
|
+
"next_seo": "Suivant : SEO →",
|
|
2155
|
+
"back_to_targets": "Retour",
|
|
2156
|
+
"seo_no_provider": "Aucun fournisseur IA configuré. Veuillez en configurer un dans les paramètres."
|
|
2157
|
+
},
|
|
2158
|
+
"pwa": {
|
|
2159
|
+
"__mt": true,
|
|
2160
|
+
"install_prompt": "Install Moraya Web for a better experience.",
|
|
2161
|
+
"install": "Install",
|
|
2162
|
+
"dismiss": "Not now",
|
|
2163
|
+
"update_available": "A new version is available.",
|
|
2164
|
+
"refresh": "Refresh"
|
|
2165
|
+
},
|
|
2166
|
+
"quickopen": {
|
|
2167
|
+
"__mt": true,
|
|
2168
|
+
"title": "Quick Open",
|
|
2169
|
+
"placeholder": "Search notes...",
|
|
2170
|
+
"no_results": "No notes found",
|
|
2171
|
+
"hint_enter": "↵ Open",
|
|
2172
|
+
"hint_cmd_enter": "⌘↵ Open in new tab"
|
|
2173
|
+
},
|
|
2174
|
+
"rag": {
|
|
2175
|
+
"__mt": true,
|
|
2176
|
+
"title": "AI Knowledge Search (RAG)",
|
|
2177
|
+
"mode_label": "Search Mode",
|
|
2178
|
+
"mode_disabled": "Disabled",
|
|
2179
|
+
"mode_client": "Client-side (E2E compatible)",
|
|
2180
|
+
"mode_server": "Server-side (faster, KMS required)",
|
|
2181
|
+
"index_status": "Index Status",
|
|
2182
|
+
"indexed_notes": "Indexed notes",
|
|
2183
|
+
"rebuild_index": "Rebuild Full Index",
|
|
2184
|
+
"pause_rebuild": "Pause",
|
|
2185
|
+
"rebuilding": "Rebuilding index...",
|
|
2186
|
+
"search_settings": "Search Settings",
|
|
2187
|
+
"top_k_label": "Results (top-K)",
|
|
2188
|
+
"threshold_label": "Min. similarity",
|
|
2189
|
+
"sources_label": "Sources",
|
|
2190
|
+
"sources_count": "{n} note excerpts",
|
|
2191
|
+
"jump_to_source": "Jump to note →",
|
|
2192
|
+
"no_sources": "No sources",
|
|
2193
|
+
"server_mode_warning": "Server mode lets Moraya temporarily decrypt your notes for indexing. Requires Cloud KMS.",
|
|
2194
|
+
"model_version": "Model version",
|
|
2195
|
+
"upgrade_for_cross_kb": "Upgrade to Personal to search across all your knowledge bases."
|
|
2196
|
+
},
|
|
2197
|
+
"review": {
|
|
2198
|
+
"panel_title": "Révisions",
|
|
2199
|
+
"tab_label": "Révision",
|
|
2200
|
+
"no_reviews": "Aucune révision pour l'instant",
|
|
2201
|
+
"no_reviews_hint": "Sélectionnez du texte dans l'éditeur et utilisez ⌘⇧R pour ajouter une révision.",
|
|
2202
|
+
"not_git_bound": "Non lié à un dépôt Git",
|
|
2203
|
+
"not_git_bound_hint": "Liez la base de connaissances à un dépôt Git pour utiliser les révisions collaboratives.",
|
|
2204
|
+
"bind_git_btn": "Lier le dépôt Git",
|
|
2205
|
+
"open_count": "ouvert",
|
|
2206
|
+
"resolved_count": "Résolu",
|
|
2207
|
+
"add_review": "Ajouter une révision",
|
|
2208
|
+
"reply": "Répondre",
|
|
2209
|
+
"resolve": "Resolve",
|
|
2210
|
+
"wontfix": "Ne sera pas corrigé",
|
|
2211
|
+
"reanchor": "Réancrer",
|
|
2212
|
+
"mark_resolved": "Marquer comme résolu",
|
|
2213
|
+
"resolved": "Résolu",
|
|
2214
|
+
"wontfix_label": "Ne sera pas corrigé",
|
|
2215
|
+
"unanchored": "Position perdue",
|
|
2216
|
+
"relocated": "Position déplacée",
|
|
2217
|
+
"verified_prompt": "Le document a changé depuis la dernière vérification. Marquer comme révisé?",
|
|
2218
|
+
"mark_verified": "Marquer comme révisé",
|
|
2219
|
+
"lock_self": "Vous éditez ce fichier",
|
|
2220
|
+
"lock_other": "édite ce fichier",
|
|
2221
|
+
"lock_expiry": "min restantes",
|
|
2222
|
+
"view_readonly": "Voir en lecture seule",
|
|
2223
|
+
"force_unlock": "Forcer le déverrouillage",
|
|
2224
|
+
"select_text_first": "Veuillez d'abord sélectionner du texte",
|
|
2225
|
+
"source_mode_limit_hint": "Les révisions ne sont disponibles qu'en mode visuel",
|
|
2226
|
+
"default_comment": "",
|
|
2227
|
+
"ai_improve": "AI Improve",
|
|
2228
|
+
"ai_summary": "AI Summary",
|
|
2229
|
+
"ai_review": "AI Review",
|
|
2230
|
+
"ai_respond": "AI Suggest",
|
|
2231
|
+
"ai_in_progress": "AI is analyzing the document…",
|
|
2232
|
+
"ai_cancel": "Cancel",
|
|
2233
|
+
"ai_no_results": "AI generated no review suggestions",
|
|
2234
|
+
"ai_invalid_filtered": "{count} review(s) had invalid format and were skipped",
|
|
2235
|
+
"ai_author_badge": "AI",
|
|
2236
|
+
"ai_hint_from_tool": "AI returned reviews via tool call",
|
|
2237
|
+
"ai_hint_from_json": "AI returned reviews via JSON fallback",
|
|
2238
|
+
"ai_hint_failed": "This model does not support AI Review. Switch to Claude / GPT-4 / Gemini.",
|
|
2239
|
+
"ai_disclaimer_title": "Enable AI Review — Data Use Notice",
|
|
2240
|
+
"ai_disclaimer_body": "AI Review will send the entire current document and all review comments to your selected AI provider:",
|
|
2241
|
+
"ai_disclaimer_body_details": "Reviews may include team members' names and internal discussion. Please confirm this knowledge base is suitable for cloud processing.",
|
|
2242
|
+
"ai_disclaimer_local_hint": "Want to keep everything local? Switch to an Ollama provider — all processing happens on this machine.",
|
|
2243
|
+
"ai_disclaimer_switch_local": "Switch to local provider",
|
|
2244
|
+
"ai_disclaimer_confirm": "I understand, enable AI Review",
|
|
2245
|
+
"ai_disclaimer_dont_ask": "Don't ask again for this provider",
|
|
2246
|
+
"dimension_logic": "Logic",
|
|
2247
|
+
"dimension_expression": "Expression",
|
|
2248
|
+
"dimension_fact": "Fact",
|
|
2249
|
+
"dimension_structure": "Structure",
|
|
2250
|
+
"ai_inflight_cancelled": "AI Review cancelled because the active file changed",
|
|
2251
|
+
"ai_merge_blocked": "Repository is in the middle of a merge. Resolve conflicts first.",
|
|
2252
|
+
"title": "Reviews",
|
|
2253
|
+
"no_open": "No open reviews.",
|
|
2254
|
+
"resolved_section": "Resolved",
|
|
2255
|
+
"add_comment": "Add a comment…",
|
|
2256
|
+
"send": "Send",
|
|
2257
|
+
"orphaned": "orphaned",
|
|
2258
|
+
"type_suggest": "Suggestion",
|
|
2259
|
+
"type_question": "Question",
|
|
2260
|
+
"type_approve": "Approved",
|
|
2261
|
+
"type_reject": "Rejected",
|
|
2262
|
+
"ai_review_unavailable": "AI Review requires Cloud KMS encryption mode.",
|
|
2263
|
+
"close": "Close"
|
|
2264
|
+
},
|
|
2265
|
+
"search": {
|
|
2266
|
+
"find_placeholder": "Find...",
|
|
2267
|
+
"replace_placeholder": "Replace with...",
|
|
2268
|
+
"no_results": "No results",
|
|
2269
|
+
"case_sensitive": "Respecter la casse",
|
|
2270
|
+
"replace": "Replace",
|
|
2271
|
+
"replace_all": "Replace All",
|
|
2272
|
+
"regex": "Utiliser une expression régulière",
|
|
2273
|
+
"regex_error": "Expression régulière invalide",
|
|
2274
|
+
"match_status": "{current} / {total}",
|
|
2275
|
+
"toggle_regex": "Toggle regular expression",
|
|
2276
|
+
"toggle_case": "Toggle case-sensitive",
|
|
2277
|
+
"prev": "Previous match",
|
|
2278
|
+
"next": "Next match",
|
|
2279
|
+
"open_replace": "Open replace",
|
|
2280
|
+
"close_replace": "Close replace",
|
|
2281
|
+
"close": "Close search",
|
|
2282
|
+
"invalid_regex": "Invalid regular expression"
|
|
2283
|
+
},
|
|
2284
|
+
"security": {
|
|
2285
|
+
"__mt": true,
|
|
2286
|
+
"title": "Security",
|
|
2287
|
+
"encryption_mode_label": "Encryption Mode",
|
|
2288
|
+
"mode_none": "None",
|
|
2289
|
+
"mode_e2e": "E2E Client Encryption",
|
|
2290
|
+
"mode_kms": "Cloud KMS",
|
|
2291
|
+
"setup_title": "Set Up E2E Encryption",
|
|
2292
|
+
"setup_subtitle": "Your notes will be encrypted before leaving your device. Moraya cannot read your notes.",
|
|
2293
|
+
"passphrase_label": "Passphrase",
|
|
2294
|
+
"passphrase_confirm_label": "Confirm Passphrase",
|
|
2295
|
+
"passphrase_strength_weak": "Too weak",
|
|
2296
|
+
"passphrase_strength_fair": "Fair",
|
|
2297
|
+
"passphrase_strength_strong": "Strong",
|
|
2298
|
+
"passphrase_strength_very_strong": "Very strong",
|
|
2299
|
+
"passphrase_min_length": "Minimum 12 characters",
|
|
2300
|
+
"passphrase_mismatch": "Passphrases do not match",
|
|
2301
|
+
"passphrase_too_weak": "Passphrase is too weak. Use a longer, more complex phrase.",
|
|
2302
|
+
"warning_no_recovery": "⚠️ If you forget your passphrase and lose your recovery code, your data cannot be recovered. Moraya has no backup.",
|
|
2303
|
+
"recovery_code_title": "Your Recovery Code",
|
|
2304
|
+
"recovery_code_subtitle": "Write down these 12 words. You will need them if you forget your passphrase.",
|
|
2305
|
+
"recovery_confirm_instruction": "Enter word #{n} to confirm you wrote it down:",
|
|
2306
|
+
"recovery_confirm_correct": "Correct! Enter word #{n}:",
|
|
2307
|
+
"recovery_confirm_wrong": "Wrong word. Try again.",
|
|
2308
|
+
"recovery_complete": "Recovery code confirmed.",
|
|
2309
|
+
"i_have_written_down": "I have written down my recovery code",
|
|
2310
|
+
"unlock_title": "Unlock Your Notes",
|
|
2311
|
+
"unlock_subtitle": "Enter your passphrase to decrypt your notes.",
|
|
2312
|
+
"unlock_button": "Unlock",
|
|
2313
|
+
"unlock_failed": "Wrong passphrase. Please try again.",
|
|
2314
|
+
"unlock_remember_device": "Remember this device for 7 days",
|
|
2315
|
+
"migrate_title": "Upgrade to Cloud KMS",
|
|
2316
|
+
"migrate_subtitle": "Your notes will be re-encrypted using your cloud KMS. Moraya can use your KMS to assist with AI features.",
|
|
2317
|
+
"migrate_warning": "This is a one-way migration. You cannot revert to E2E mode without exporting and re-importing all data.",
|
|
2318
|
+
"migrate_confirm": "I understand and want to proceed",
|
|
2319
|
+
"migrate_progress": "Migrating {completed}/{total} notes...",
|
|
2320
|
+
"migrate_done": "Migration complete!",
|
|
2321
|
+
"migrate_failed": "Migration failed. Your original data is unchanged.",
|
|
2322
|
+
"kms_provider_label": "KMS Provider",
|
|
2323
|
+
"kms_key_arn_label": "Key ARN / Key ID",
|
|
2324
|
+
"kms_role_arn_label": "Role ARN (for AssumeRole)",
|
|
2325
|
+
"kms_verify": "Verify KMS Connection",
|
|
2326
|
+
"kms_verified": "KMS connection verified",
|
|
2327
|
+
"kms_verify_failed": "KMS connection failed",
|
|
2328
|
+
"back": "Back",
|
|
2329
|
+
"next": "Next",
|
|
2330
|
+
"save": "Save",
|
|
2331
|
+
"cancel": "Cancel",
|
|
2332
|
+
"setup_complete": "E2E encryption enabled",
|
|
2333
|
+
"deriving_key": "Deriving encryption key...",
|
|
2334
|
+
"encrypting": "Encrypting notes...",
|
|
2335
|
+
"current_mode": "Current mode: {mode}",
|
|
2336
|
+
"last_unlock": "Last unlocked: {time}",
|
|
2337
|
+
"use_recovery_code": "Use recovery code instead",
|
|
2338
|
+
"recovery_unlock_title": "Recover Access",
|
|
2339
|
+
"recovery_unlock_subtitle": "Enter your 12-word recovery code to regain access.",
|
|
2340
|
+
"recovery_code_input": "Recovery Code (12 words, space-separated)",
|
|
2341
|
+
"recovery_unlock_button": "Recover",
|
|
2342
|
+
"set_new_passphrase": "Set New Passphrase"
|
|
2343
|
+
},
|
|
2344
|
+
"seo": {
|
|
2345
|
+
"title": "Optimisation SEO",
|
|
2346
|
+
"generating": "Analyse de l'article...",
|
|
2347
|
+
"titles": "Candidats de titre",
|
|
2348
|
+
"custom_title": "Titre personnalisé...",
|
|
2349
|
+
"excerpt": "Extrait",
|
|
2350
|
+
"tags": "Étiquettes",
|
|
2351
|
+
"add_tag": "Ajouter une étiquette...",
|
|
2352
|
+
"slug": "Slug d'URL",
|
|
2353
|
+
"meta_description": "Méta-description",
|
|
2354
|
+
"regenerate": "Régénérer",
|
|
2355
|
+
"apply": "Appliquer",
|
|
2356
|
+
"retry": "Réessayer",
|
|
2357
|
+
"content_too_short": "Le contenu de l'article est trop court pour l'analyse SEO.",
|
|
2358
|
+
"completed": "SEO optimisé",
|
|
2359
|
+
"step_description": "Générer le titre, l'extrait et les étiquettes"
|
|
2360
|
+
},
|
|
2361
|
+
"sessions": {
|
|
2362
|
+
"__mt": true,
|
|
2363
|
+
"title": "Active Sessions",
|
|
2364
|
+
"active_sessions": "Active Sessions",
|
|
2365
|
+
"anomaly_alerts": "Security Alerts",
|
|
2366
|
+
"current": "Current",
|
|
2367
|
+
"last_active": "Last active",
|
|
2368
|
+
"revoke": "Revoke",
|
|
2369
|
+
"revoking": "Revoking…",
|
|
2370
|
+
"confirm_revoke": "Revoke this session?",
|
|
2371
|
+
"yes": "Yes",
|
|
2372
|
+
"no": "Cancel",
|
|
2373
|
+
"dismiss": "Dismiss",
|
|
2374
|
+
"just_now": "Just now",
|
|
2375
|
+
"hours_ago": "h ago",
|
|
2376
|
+
"days_ago": "d ago"
|
|
2377
|
+
},
|
|
2378
|
+
"settings": {
|
|
2379
|
+
"title": "Settings",
|
|
2380
|
+
"tabs": {
|
|
2381
|
+
"general": "Général",
|
|
2382
|
+
"editor": "Éditeur",
|
|
2383
|
+
"appearance": "Apparence",
|
|
2384
|
+
"ai": "Chat",
|
|
2385
|
+
"image_ai": "Image IA",
|
|
2386
|
+
"mcp": "MCP",
|
|
2387
|
+
"image": "Hébergement",
|
|
2388
|
+
"publish": "Publication",
|
|
2389
|
+
"voice": "Voix IA",
|
|
2390
|
+
"knowledge_base": "Base de connaissances",
|
|
2391
|
+
"plugins": "Plugins",
|
|
2392
|
+
"kb_sync": "Sync KB",
|
|
2393
|
+
"picora": "Picora",
|
|
2394
|
+
"export": "Exporter",
|
|
2395
|
+
"shortcuts": "Raccourcis"
|
|
2396
|
+
},
|
|
2397
|
+
"groups": {
|
|
2398
|
+
"general": "Général",
|
|
2399
|
+
"ai": "Paramètres IA",
|
|
2400
|
+
"extensions": "Extensions",
|
|
2401
|
+
"knowledge_base": "Base de Connaissances",
|
|
2402
|
+
"picora": "Picora"
|
|
2403
|
+
},
|
|
2404
|
+
"language": {
|
|
2405
|
+
"label": "Langue",
|
|
2406
|
+
"system": "Suivre le système"
|
|
2407
|
+
},
|
|
2408
|
+
"theme": {
|
|
2409
|
+
"label": "Thème",
|
|
2410
|
+
"system": "Suivre le système",
|
|
2411
|
+
"light": "Clair",
|
|
2412
|
+
"dark": "Sombre"
|
|
2413
|
+
},
|
|
2414
|
+
"appearance": {
|
|
2415
|
+
"theme_section": "Thème",
|
|
2416
|
+
"dark_mode_section": "Mode sombre",
|
|
2417
|
+
"font_section": "Police",
|
|
2418
|
+
"separate_dark_theme": "Utiliser un thème distinct pour le mode sombre",
|
|
2419
|
+
"dark_theme": "Thème du mode sombre",
|
|
2420
|
+
"dark_mode_label": "Apparence"
|
|
2421
|
+
},
|
|
2422
|
+
"font_size": {
|
|
2423
|
+
"label": "Taille de police"
|
|
2424
|
+
},
|
|
2425
|
+
"auto_save": {
|
|
2426
|
+
"label": "Enregistrement automatique",
|
|
2427
|
+
"interval": "Intervalle d'enregistrement automatique"
|
|
2428
|
+
},
|
|
2429
|
+
"remember_last_folder": "Se souvenir du dernier dossier ouvert",
|
|
2430
|
+
"show_cloud_insert_entries": "Afficher les options d'insertion cloud",
|
|
2431
|
+
"show_cloud_insert_entries_desc": "Ajouter les options 'Insérer image/audio/vidéo cloud' aux menus Format et contextuel.",
|
|
2432
|
+
"rules_history_count": "Versions d'historique MORAYA.md",
|
|
2433
|
+
"rules_history_count_hint": "Nombre de versions historiques à conserver par fichier de règles (défaut : 10)",
|
|
2434
|
+
"editor": {
|
|
2435
|
+
"line_width": "Largeur de ligne de l'éditeur",
|
|
2436
|
+
"tab_size": "Taille de tabulation",
|
|
2437
|
+
"show_line_numbers": "Afficher les numéros de ligne en mode source"
|
|
2438
|
+
},
|
|
2439
|
+
"version": "Moraya v{version}",
|
|
2440
|
+
"permissions": {
|
|
2441
|
+
"mcp_title": "Permissions MCP",
|
|
2442
|
+
"ai_title": "Paramètres IA",
|
|
2443
|
+
"ai_max_tokens": "Tokens de sortie maximum",
|
|
2444
|
+
"ai_max_tokens_hint": "Nombre maximum de tokens que l'IA peut générer par réponse. Des valeurs plus élevées permettent des réponses plus longues et des appels d'outils, mais coûtent plus cher.",
|
|
2445
|
+
"ai_tool_result_max_chars": "Caractères max des résultats d'outils",
|
|
2446
|
+
"ai_tool_result_max_chars_hint": "Nombre maximum de caractères conservés pour chaque résultat d'outil MCP. Des valeurs plus grandes préservent plus de détails mais consomment plus de contexte.",
|
|
2447
|
+
"ai_max_tool_rounds": "Tours d'appels d'outils maximum",
|
|
2448
|
+
"ai_max_tool_rounds_hint": "Nombre maximum de tours d'appels d'outils que l'IA peut effectuer en un seul tour de conversation. Augmentez pour les tâches complexes à plusieurs étapes."
|
|
2449
|
+
},
|
|
2450
|
+
"voice": {
|
|
2451
|
+
"providers": "Fournisseurs de reconnaissance vocale",
|
|
2452
|
+
"add_provider": "Ajouter un fournisseur",
|
|
2453
|
+
"edit_provider": "Modifier le fournisseur",
|
|
2454
|
+
"no_providers": "Aucun fournisseur de reconnaissance vocale configuré.",
|
|
2455
|
+
"provider": "Fournisseur",
|
|
2456
|
+
"api_key": "Clé API",
|
|
2457
|
+
"api_key_optional": "Facultatif pour AWS (utilisez plutôt la clé d'accès)",
|
|
2458
|
+
"aws_access_key": "ID de clé d'accès AWS",
|
|
2459
|
+
"aws_secret_key": "Clé secrète AWS",
|
|
2460
|
+
"region": "Région",
|
|
2461
|
+
"model": "Modèle",
|
|
2462
|
+
"model_placeholder": "Entrez le nom du modèle",
|
|
2463
|
+
"endpoint_id_placeholder": "Entrez l'ID du point de terminaison d'inférence",
|
|
2464
|
+
"language": "Langue",
|
|
2465
|
+
"lang_auto": "Détection automatique",
|
|
2466
|
+
"lang_multi": "Multilingue",
|
|
2467
|
+
"base_url": "URL WebSocket personnalisée",
|
|
2468
|
+
"test_connection": "Tester la connexion",
|
|
2469
|
+
"testing": "Test en cours...",
|
|
2470
|
+
"test_ok": "Connecté",
|
|
2471
|
+
"test_failed": "Échec de la connexion",
|
|
2472
|
+
"set_active": "Définir par défaut",
|
|
2473
|
+
"active": "Par défaut",
|
|
2474
|
+
"custom": "Personnalisé",
|
|
2475
|
+
"storage": "Stockage",
|
|
2476
|
+
"recording_backup_dir": "Sauvegarde des enregistrements",
|
|
2477
|
+
"recording_backup_hint": "Enregistrer les enregistrements complets en fichiers WAV après chaque session.",
|
|
2478
|
+
"voice_sync_dir": "Répertoire de synchronisation des profils vocaux",
|
|
2479
|
+
"voice_sync_hint": "Synchroniser les profils vocaux via le stockage cloud (ex. iCloud, Dropbox). Utilisez le bouton Changer pour sélectionner un dossier — les profils existants seront migrés automatiquement.",
|
|
2480
|
+
"sync_default": "Données de l'application (par défaut)",
|
|
2481
|
+
"disabled": "Désactivé",
|
|
2482
|
+
"migrating_profiles": "Migration en cours...",
|
|
2483
|
+
"migration_failed": "Échec de la migration",
|
|
2484
|
+
"profiles": "Profils vocaux",
|
|
2485
|
+
"no_profiles": "Aucun profil vocal pour le moment. Ils sont créés automatiquement après les sessions de transcription.",
|
|
2486
|
+
"naming": {
|
|
2487
|
+
"male": "Homme {n}",
|
|
2488
|
+
"female": "Femme {n}",
|
|
2489
|
+
"bystander": "Spectateur {n}",
|
|
2490
|
+
"speaker": "Locuteur {n}"
|
|
2491
|
+
},
|
|
2492
|
+
"providers_hint": "Configurer les fournisseurs de parole pour la transcription."
|
|
2493
|
+
},
|
|
2494
|
+
"image_host": {
|
|
2495
|
+
"picora": {
|
|
2496
|
+
"moved_hint": "Les paramètres Picora se trouvent désormais dans l’onglet Picora.",
|
|
2497
|
+
"jump_to_tab": "Aller à l’onglet Picora"
|
|
2498
|
+
},
|
|
2499
|
+
"subtitle_suffix": "Les options spécifiques à Picora sont dans l’onglet Picora."
|
|
2500
|
+
},
|
|
2501
|
+
"picora": {
|
|
2502
|
+
"account": {
|
|
2503
|
+
"title": "Comptes Picora",
|
|
2504
|
+
"add": "Ajouter un compte Picora",
|
|
2505
|
+
"add_first": "Commencer",
|
|
2506
|
+
"empty": "Aucun compte Picora pour le moment. Connectez votre compte pour activer l’insertion de médias cloud et la synchronisation KB.",
|
|
2507
|
+
"set_default": "Définir par défaut",
|
|
2508
|
+
"test": "Tester la connexion",
|
|
2509
|
+
"edit": "Modifier",
|
|
2510
|
+
"remove": "Supprimer",
|
|
2511
|
+
"quota": "Quota",
|
|
2512
|
+
"unknown_email": "(pas d’e-mail)",
|
|
2513
|
+
"no_endpoint": "(pas d’endpoint)",
|
|
2514
|
+
"in_use": "Utilisé par {n}",
|
|
2515
|
+
"quota_loading": "Chargement du quota…",
|
|
2516
|
+
"quota_unavailable": "Quota indisponible — ↻ pour réessayer",
|
|
2517
|
+
"data_point_na": "Point de données indisponible",
|
|
2518
|
+
"needs_picora_v017": "Nécessite Picora v0.17.1+",
|
|
2519
|
+
"not_activated": "Vous n’avez pas encore activé de plan Picora.",
|
|
2520
|
+
"activate": "Activer le plan",
|
|
2521
|
+
"remove_confirm_title": "Supprimer le compte Picora",
|
|
2522
|
+
"remove_confirm_body": "Va supprimer : {email}",
|
|
2523
|
+
"cascade_default": "Ceci est le compte Picora par défaut — un nouveau défaut sera choisi automatiquement.",
|
|
2524
|
+
"cascade_image_host": "Ceci est l’hôte d’images par défaut — le défaut sera effacé.",
|
|
2525
|
+
"cascade_kb_bindings": "{n} bases de connaissances seront déliées. Les données cloud sont conservées sur Picora.",
|
|
2526
|
+
"cloud_data_preserved": "Seule la configuration locale sera supprimée. Les données cloud sur Picora sont conservées.",
|
|
2527
|
+
"confirm_remove": "Supprimer"
|
|
2528
|
+
},
|
|
2529
|
+
"edit_title": "Modifier le compte Picora",
|
|
2530
|
+
"kb_sync": {
|
|
2531
|
+
"title": "Synchronisation KB",
|
|
2532
|
+
"open_manager": "Ouvrir les paramètres de sync KB",
|
|
2533
|
+
"empty": "Aucune base de connaissances pour le moment.",
|
|
2534
|
+
"missing_target": "(cible manquante)",
|
|
2535
|
+
"never": "Jamais synchronisé",
|
|
2536
|
+
"error": "erreur de sync",
|
|
2537
|
+
"unbound_label": "Non lié à Picora :",
|
|
2538
|
+
"bind_action": "Lier au défaut"
|
|
2539
|
+
},
|
|
2540
|
+
"resources": {
|
|
2541
|
+
"title": "Navigateur de ressources cloud",
|
|
2542
|
+
"tabs": {
|
|
2543
|
+
"image": "Images",
|
|
2544
|
+
"audio": "Audio",
|
|
2545
|
+
"video": "Vidéos"
|
|
2546
|
+
}
|
|
2547
|
+
},
|
|
2548
|
+
"advanced": {
|
|
2549
|
+
"title": "Avancé",
|
|
2550
|
+
"img_domain": "Domaine d’insertion par défaut",
|
|
2551
|
+
"img_domain_hint": "Utilisé comme préfixe d’URL public lors de l’insertion d’images Picora.",
|
|
2552
|
+
"rewrite_base64": "Réécrire automatiquement les images base64 en CDN Picora lors du téléchargement",
|
|
2553
|
+
"sidebar_pin": "Afficher le raccourci Picora dans la barre latérale principale",
|
|
2554
|
+
"debug": "Activer la journalisation de débogage"
|
|
2555
|
+
},
|
|
2556
|
+
"banner": "Nouvel onglet Picora. Tous les paramètres Picora ont été déplacés ici ; l’onglet d’hébergement d’images reste accessible.",
|
|
2557
|
+
"banner_dismiss": "Compris",
|
|
2558
|
+
"welcome": {
|
|
2559
|
+
"title": "Bienvenue sur Picora — un foyer pour vos médias",
|
|
2560
|
+
"body": "Hébergez images, audio, vidéo et documents Markdown sur votre propre compte Picora. Synchronisez les bases de connaissances entre appareils et insérez des ressources cloud depuis l’éditeur en un clic.",
|
|
2561
|
+
"one_click": "Import en un clic (recommandé)",
|
|
2562
|
+
"manual": "Ajouter manuellement",
|
|
2563
|
+
"or": "ou",
|
|
2564
|
+
"register": "Pas de compte ? Inscrivez-vous sur Picora"
|
|
2565
|
+
},
|
|
2566
|
+
"quota": {
|
|
2567
|
+
"images": "Images",
|
|
2568
|
+
"docs": "Documents",
|
|
2569
|
+
"audio": "Audio",
|
|
2570
|
+
"videos": "Vidéos",
|
|
2571
|
+
"kbs": "KBs"
|
|
2572
|
+
},
|
|
2573
|
+
"plan": {
|
|
2574
|
+
"none": "Inactif",
|
|
2575
|
+
"trial": "Essai",
|
|
2576
|
+
"pro": "Pro",
|
|
2577
|
+
"pro_plus": "Pro+"
|
|
2578
|
+
}
|
|
2579
|
+
},
|
|
2580
|
+
"tab_desc": {
|
|
2581
|
+
"export": "Configurer l'export PDF — taille de page, marges, polices et options de contenu."
|
|
2582
|
+
},
|
|
2583
|
+
"export": {
|
|
2584
|
+
"paper_size": "Format de papier",
|
|
2585
|
+
"paper_a4": "A4",
|
|
2586
|
+
"paper_letter": "Letter",
|
|
2587
|
+
"paper_legal": "Legal",
|
|
2588
|
+
"paper_a3": "A3",
|
|
2589
|
+
"paper_a5": "A5",
|
|
2590
|
+
"orientation": "Orientation",
|
|
2591
|
+
"orientation_portrait": "Portrait",
|
|
2592
|
+
"orientation_landscape": "Paysage",
|
|
2593
|
+
"margins": "Marges (mm)",
|
|
2594
|
+
"margins_top": "Haut",
|
|
2595
|
+
"margins_right": "Droite",
|
|
2596
|
+
"margins_bottom": "Bas",
|
|
2597
|
+
"margins_left": "Gauche",
|
|
2598
|
+
"header_footer": "En-tête et pied de page",
|
|
2599
|
+
"header_enabled": "Activer l'en-tête",
|
|
2600
|
+
"footer_enabled": "Activer le pied de page",
|
|
2601
|
+
"template_hint": "Espaces réservés : {title} {page} {total} {date}",
|
|
2602
|
+
"typography": "Typographie",
|
|
2603
|
+
"font_family": "Police",
|
|
2604
|
+
"font_family_placeholder": "Système par défaut",
|
|
2605
|
+
"font_size": "Taille de police",
|
|
2606
|
+
"content": "Contenu",
|
|
2607
|
+
"enable_highlight": "Coloration syntaxique",
|
|
2608
|
+
"enable_math": "Maths (KaTeX)",
|
|
2609
|
+
"enable_mermaid": "Diagrammes Mermaid",
|
|
2610
|
+
"advanced": "Avancé",
|
|
2611
|
+
"auto_fallback": "Basculer automatiquement en mode compatibilité en cas d'échec",
|
|
2612
|
+
"auto_fallback_hint": "Si la voie d'impression native échoue, réessayer avec la voie basée sur canvas. Désactivez pour afficher les erreurs et laisser l'utilisateur réessayer."
|
|
2613
|
+
},
|
|
2614
|
+
"account": "Account",
|
|
2615
|
+
"devices": "Devices",
|
|
2616
|
+
"about": "About",
|
|
2617
|
+
"select_section": "Select a settings section from the left.",
|
|
2618
|
+
"ai": {
|
|
2619
|
+
"title": "AI",
|
|
2620
|
+
"cloud_providers": "Cloud Providers",
|
|
2621
|
+
"local_models": "On-device Models",
|
|
2622
|
+
"add": "Add",
|
|
2623
|
+
"edit": "Edit provider",
|
|
2624
|
+
"delete": "Delete",
|
|
2625
|
+
"delete_confirm": "Delete this provider configuration?",
|
|
2626
|
+
"provider_deleted": "Deleted “{label}”",
|
|
2627
|
+
"provider_restored": "Provider restored",
|
|
2628
|
+
"save": "Save",
|
|
2629
|
+
"test": "Test",
|
|
2630
|
+
"testing": "Testing…",
|
|
2631
|
+
"test_ok": "Connection OK",
|
|
2632
|
+
"test_auth_error": "Auth failed — check API key",
|
|
2633
|
+
"test_network_error": "Network error",
|
|
2634
|
+
"test_rate_limited": "Rate limited — try later",
|
|
2635
|
+
"test_unsupported": "Unsupported response",
|
|
2636
|
+
"test_not_configured": "Not configured",
|
|
2637
|
+
"provider": "Provider",
|
|
2638
|
+
"label": "Label",
|
|
2639
|
+
"api_key": "API Key",
|
|
2640
|
+
"api_key_hint": "Stored only on this device.",
|
|
2641
|
+
"base_url": "Base URL (optional)",
|
|
2642
|
+
"base_url_hint": "Custom OpenAI-compatible endpoint, e.g. Ollama: http://192.168.1.10:11434/v1",
|
|
2643
|
+
"default_model": "Default model",
|
|
2644
|
+
"active": "Active",
|
|
2645
|
+
"set_active": "Use",
|
|
2646
|
+
"status_ready": "Ready",
|
|
2647
|
+
"status_not_configured": "Not configured",
|
|
2648
|
+
"empty_cloud": "No cloud providers configured. Tap “Add” to set up OpenAI, Claude, Gemini, DeepSeek, or any OpenAI-compatible endpoint.",
|
|
2649
|
+
"cloud_hint": "Your API keys are stored locally and sent directly to the provider — Moraya never sees them.",
|
|
2650
|
+
"rag": {
|
|
2651
|
+
"title": "History Reference (RAG)",
|
|
2652
|
+
"enabled": "Reference past conversations",
|
|
2653
|
+
"topk": "Snippets per send",
|
|
2654
|
+
"hint": "When on, Moraya finds up to N relevant snippets from your past AI chats and includes them as context. Off by default — increases token usage. Keyword-based search (no embeddings yet)."
|
|
2655
|
+
},
|
|
2656
|
+
"local": {
|
|
2657
|
+
"free_space": "Device free space",
|
|
2658
|
+
"unknown": "Unknown",
|
|
2659
|
+
"estimate_hint": "Estimated from browser quota.",
|
|
2660
|
+
"native_probe_failed": "Could not read native device free space; showing browser estimate.",
|
|
2661
|
+
"browser_only_hint": "On-device models are available only inside the Moraya iOS / Android app.",
|
|
2662
|
+
"browser_only_footer": "Open this page inside the Moraya mobile app to download and run on-device models.",
|
|
2663
|
+
"mobile_only": "On-device models are only available in the Moraya iOS / Android app.",
|
|
2664
|
+
"download": "Download",
|
|
2665
|
+
"cancel": "Cancel",
|
|
2666
|
+
"use": "Use",
|
|
2667
|
+
"delete": "Delete",
|
|
2668
|
+
"delete_confirm": "Delete {name} from this device?",
|
|
2669
|
+
"delete_failed": "Delete failed: {err}",
|
|
2670
|
+
"download_failed": "Download failed: {err}",
|
|
2671
|
+
"now_active": "{name} is now your active AI model.",
|
|
2672
|
+
"installed": "Installed",
|
|
2673
|
+
"too_big": "Too large",
|
|
2674
|
+
"fit_warn_inline": "This download will use more than 70% of your free space.",
|
|
2675
|
+
"fit_warn": "This model ({size}) will use over 70% of your free space and may slow iOS. Continue?",
|
|
2676
|
+
"fit_block": "Not enough free space for this model ({size}).",
|
|
2677
|
+
"engine_pending_title": "Inference engine pending Xcode setup",
|
|
2678
|
+
"engine_pending_text": "Models can be downloaded today. To run them, link MLX-Swift via Xcode → File → Add Package Dependencies (https://github.com/ml-explore/mlx-swift + mlx-swift-examples), or run `ruby scripts/add-mlx-spm.rb` in moraya-mobile/. The plugin auto-detects the link and activates.",
|
|
2679
|
+
"wifi_only": "Wi-Fi only downloads",
|
|
2680
|
+
"on_wifi": "Connected via Wi-Fi.",
|
|
2681
|
+
"on_cellular_blocked": "On cellular — downloads paused. Toggle off to allow.",
|
|
2682
|
+
"on_cellular_ok": "On cellular — downloads allowed.",
|
|
2683
|
+
"offline": "No network connection.",
|
|
2684
|
+
"cellular_blocked": "Downloads are blocked on cellular. Connect to Wi-Fi or turn off “Wi-Fi only”.",
|
|
2685
|
+
"update": "Update",
|
|
2686
|
+
"update_confirm": "Update {name}? The current copy will be deleted and the latest version downloaded."
|
|
2687
|
+
},
|
|
2688
|
+
"custom_templates": "Custom AI Templates",
|
|
2689
|
+
"empty_templates": "No custom templates yet. Tap “Add” to create a reusable system prompt.",
|
|
2690
|
+
"templates_hint": "Your templates appear in the AI tab’s empty-state quick actions alongside the built-ins.",
|
|
2691
|
+
"custom_workflows": "Custom AI Workflows",
|
|
2692
|
+
"empty_workflows": "No custom workflows yet. Tap “Add” to chain multiple AI steps.",
|
|
2693
|
+
"workflows_hint": "Workflows run their steps sequentially, feeding each step’s output into the next.",
|
|
2694
|
+
"wf": {
|
|
2695
|
+
"add": "New workflow",
|
|
2696
|
+
"edit": "Edit workflow",
|
|
2697
|
+
"name_placeholder": "e.g. Translate then bullet-summarize",
|
|
2698
|
+
"desc_placeholder": "Shown under the tile in the AI tab",
|
|
2699
|
+
"step_label_placeholder": "Step label (e.g. “Translate”)",
|
|
2700
|
+
"step_system_placeholder": "System prompt for this step",
|
|
2701
|
+
"input_tpl_hint": "Use {prev} for the previous step's output and {input} for the user's first message.",
|
|
2702
|
+
"add_step": "Add step",
|
|
2703
|
+
"remove_step": "Remove step",
|
|
2704
|
+
"required_name": "Workflow needs a name.",
|
|
2705
|
+
"required_steps": "Workflow needs at least one step with a system prompt.",
|
|
2706
|
+
"delete_confirm": "Delete this workflow?",
|
|
2707
|
+
"deleted": "Deleted “{name}”",
|
|
2708
|
+
"restored": "Workflow restored"
|
|
2709
|
+
},
|
|
2710
|
+
"tpl": {
|
|
2711
|
+
"add": "New template",
|
|
2712
|
+
"edit": "Edit template",
|
|
2713
|
+
"icon": "Icon",
|
|
2714
|
+
"name": "Name",
|
|
2715
|
+
"name_placeholder": "e.g. Code reviewer",
|
|
2716
|
+
"desc": "Short description",
|
|
2717
|
+
"desc_placeholder": "Shown under the tile",
|
|
2718
|
+
"system_prompt": "System prompt",
|
|
2719
|
+
"system_prompt_placeholder": "Behavior guidance the model receives at the start of every conversation using this template.",
|
|
2720
|
+
"requires_image": "Open image picker on tap",
|
|
2721
|
+
"requires_doc": "Auto-mention the open doc",
|
|
2722
|
+
"auto_insert": "Auto-open “Insert into note” when finished",
|
|
2723
|
+
"save": "Save",
|
|
2724
|
+
"delete": "Delete",
|
|
2725
|
+
"delete_confirm": "Delete this template?",
|
|
2726
|
+
"deleted": "Deleted “{name}”",
|
|
2727
|
+
"restored": "Template restored",
|
|
2728
|
+
"required_fields": "Name and system prompt are required.",
|
|
2729
|
+
"import": "Import",
|
|
2730
|
+
"export": "Export",
|
|
2731
|
+
"import_merge_confirm": "Import {n} template(s) and append to your library?",
|
|
2732
|
+
"import_empty": "The file contains no templates.",
|
|
2733
|
+
"import_failed": "Import failed: {err}"
|
|
2734
|
+
},
|
|
2735
|
+
"usage": {
|
|
2736
|
+
"title": "AI Usage",
|
|
2737
|
+
"loading": "Reading conversations…",
|
|
2738
|
+
"empty": "No AI calls this month yet — usage shows up after your first reply.",
|
|
2739
|
+
"tokens": "Tokens",
|
|
2740
|
+
"conversations": "Conversations",
|
|
2741
|
+
"cost": "Cost",
|
|
2742
|
+
"by_model": "By model",
|
|
2743
|
+
"history": "Previous months"
|
|
2744
|
+
},
|
|
2745
|
+
"budget": {
|
|
2746
|
+
"title": "Monthly Budget",
|
|
2747
|
+
"edit": "Edit",
|
|
2748
|
+
"done": "Done",
|
|
2749
|
+
"no_limit": "No monthly limit set.",
|
|
2750
|
+
"usd_limit": "USD limit / month",
|
|
2751
|
+
"cny_limit": "CNY limit / month",
|
|
2752
|
+
"alert_threshold": "Warn at (0–1)",
|
|
2753
|
+
"hint": "Setting either currency to 0 disables that cap. Warn threshold 0 disables warnings."
|
|
2754
|
+
}
|
|
2755
|
+
},
|
|
2756
|
+
"mcp": "MCP servers",
|
|
2757
|
+
"image_gen": {
|
|
2758
|
+
"title": "Image generation",
|
|
2759
|
+
"providers": "Providers",
|
|
2760
|
+
"add": "Add",
|
|
2761
|
+
"edit": "Edit image provider",
|
|
2762
|
+
"delete": "Delete",
|
|
2763
|
+
"save": "Save",
|
|
2764
|
+
"provider": "Provider",
|
|
2765
|
+
"label": "Label",
|
|
2766
|
+
"api_key": "API Key",
|
|
2767
|
+
"api_key_hint": "Stored only on this device. BYO key — never sent to Moraya servers.",
|
|
2768
|
+
"base_url": "Base URL (optional)",
|
|
2769
|
+
"base_url_hint": "Override for OpenAI-compatible image endpoints (Together AI, Cloudflare AI Gateway, on-prem proxies).",
|
|
2770
|
+
"default_model": "Default model",
|
|
2771
|
+
"active": "Active",
|
|
2772
|
+
"set_active": "Use",
|
|
2773
|
+
"status_ready": "Ready",
|
|
2774
|
+
"status_no_key": "No API key",
|
|
2775
|
+
"empty": "No image providers configured. Tap “Add” to set up OpenAI DALL-E or Doubao Seedream.",
|
|
2776
|
+
"hint": "Image-gen providers power workflow `ai.image` nodes and the upcoming Compose Article flow. Configure at least one to enable cover-image generation.",
|
|
2777
|
+
"style": {
|
|
2778
|
+
"section": "Style presets",
|
|
2779
|
+
"add": "Add",
|
|
2780
|
+
"edit": "Edit style preset",
|
|
2781
|
+
"delete": "Delete",
|
|
2782
|
+
"save": "Save",
|
|
2783
|
+
"label": "Label",
|
|
2784
|
+
"label_placeholder": "e.g. Moody noir",
|
|
2785
|
+
"suffix": "Style suffix",
|
|
2786
|
+
"suffix_placeholder": "Appended to “Cover illustration for: <title>. ”",
|
|
2787
|
+
"suffix_hint": "Describe lighting, palette, mood, aspect ratio — anything the model should remember for this style.",
|
|
2788
|
+
"hint": "These presets apply when you tap one in the Compose Cover step. Built-in presets stay available even after you edit them.",
|
|
2789
|
+
"builtin": "Built-in",
|
|
2790
|
+
"builtin_note": "This is a built-in preset. Your changes save as an override and can be reset by deleting (built-ins cannot be removed)."
|
|
2791
|
+
}
|
|
2792
|
+
},
|
|
2793
|
+
"publish": {
|
|
2794
|
+
"title": "Publish targets",
|
|
2795
|
+
"section": "Targets",
|
|
2796
|
+
"add": "Add",
|
|
2797
|
+
"edit": "Edit publish target",
|
|
2798
|
+
"delete": "Delete",
|
|
2799
|
+
"save": "Save",
|
|
2800
|
+
"icon": "Icon",
|
|
2801
|
+
"label": "Label",
|
|
2802
|
+
"label_placeholder": "WeChat 公众号 (主号)",
|
|
2803
|
+
"mcp_tool": "MCP tool",
|
|
2804
|
+
"mcp_tool_hint": "Bare name (`publish`) or namespaced (`mcp.<server-id>.<tool>`). Configure the MCP server itself in Settings → MCP.",
|
|
2805
|
+
"arg_template": "Argument template (JSON)",
|
|
2806
|
+
"arg_template_hint": "Use {title} {body} {topic} {coverKey} {coverPrompt} placeholders. Strings are JSON-escaped before substitution.",
|
|
2807
|
+
"empty": "No publish targets configured. Tap “Add” to wire a target to an MCP tool.",
|
|
2808
|
+
"hint": "Each target points at one MCP tool — e.g. a WeChat 公众号 bridge, a Substack webhook, or your own remote MCP. Compose’s Send menu lists every target."
|
|
2809
|
+
},
|
|
2810
|
+
"voiceai": {
|
|
2811
|
+
"title": "Voice AI",
|
|
2812
|
+
"engine": "Voice engine",
|
|
2813
|
+
"engine_local": "Local (on-device)",
|
|
2814
|
+
"engine_local_desc": "Speech recognition and read-aloud run entirely on your device — no network, no API keys.",
|
|
2815
|
+
"recommended": "Recommended",
|
|
2816
|
+
"external_soon": "External cloud voice — coming soon.",
|
|
2817
|
+
"unavailable": "On-device voice isn't available here — it requires the iOS app.",
|
|
2818
|
+
"stt_section": "Speech input",
|
|
2819
|
+
"stt_locale": "Recognition language",
|
|
2820
|
+
"stt_locale_device": "Follow device",
|
|
2821
|
+
"tts_section": "Read aloud",
|
|
2822
|
+
"auto_speak": "Auto-read AI replies",
|
|
2823
|
+
"voice_label": "Voice",
|
|
2824
|
+
"voice_default": "System default",
|
|
2825
|
+
"enhanced": "Enhanced",
|
|
2826
|
+
"rate": "Speed",
|
|
2827
|
+
"test": "Test voice",
|
|
2828
|
+
"test_sample": "Hello, I'm Moraya's on-device voice assistant."
|
|
2829
|
+
}
|
|
2830
|
+
},
|
|
2831
|
+
"shortcuts": {
|
|
2832
|
+
"title": "Keyboard Shortcuts",
|
|
2833
|
+
"intro": "All keyboard shortcuts in Moraya. Entries marked 🔒 are managed by the native menu and will become user-configurable in a later version.",
|
|
2834
|
+
"ai_chat_behavior": {
|
|
2835
|
+
"title": "AI Chat — Enter Key Behavior",
|
|
2836
|
+
"intro": "Choose how the Enter key behaves in the AI chat input.",
|
|
2837
|
+
"sends_action": "sends message",
|
|
2838
|
+
"newline_action": "newline",
|
|
2839
|
+
"mod_enter_send": {
|
|
2840
|
+
"label": "Cmd/Ctrl + Entrée envoie"
|
|
2841
|
+
},
|
|
2842
|
+
"enter_send": {
|
|
2843
|
+
"label": "Enter sends"
|
|
2844
|
+
},
|
|
2845
|
+
"default_badge": "Par défaut"
|
|
2846
|
+
},
|
|
2847
|
+
"categories": {
|
|
2848
|
+
"file": "File",
|
|
2849
|
+
"edit": "Edit",
|
|
2850
|
+
"paragraph": "Paragraph",
|
|
2851
|
+
"format": "Format",
|
|
2852
|
+
"view": "View",
|
|
2853
|
+
"ai_chat": "AI Chat",
|
|
2854
|
+
"workflow": "Workflow",
|
|
2855
|
+
"mcp": "MCP"
|
|
2856
|
+
},
|
|
2857
|
+
"actions": {
|
|
2858
|
+
"file": {
|
|
2859
|
+
"new": "New Document",
|
|
2860
|
+
"new_window": "New Window",
|
|
2861
|
+
"open": "Open File",
|
|
2862
|
+
"save": "Save",
|
|
2863
|
+
"save_as": "Save As",
|
|
2864
|
+
"export_html": "Export HTML",
|
|
2865
|
+
"export_pdf": "Exporter en PDF",
|
|
2866
|
+
"export_image": "Exporter en image",
|
|
2867
|
+
"export_doc": "Exporter en Word"
|
|
2868
|
+
},
|
|
2869
|
+
"edit": {
|
|
2870
|
+
"undo": "Undo",
|
|
2871
|
+
"redo": "Redo",
|
|
2872
|
+
"find": "Find",
|
|
2873
|
+
"replace": "Replace"
|
|
2874
|
+
},
|
|
2875
|
+
"paragraph": {
|
|
2876
|
+
"h1": "Heading 1",
|
|
2877
|
+
"h2": "Heading 2",
|
|
2878
|
+
"h3": "Heading 3",
|
|
2879
|
+
"h4": "Heading 4",
|
|
2880
|
+
"h5": "Heading 5",
|
|
2881
|
+
"h6": "Heading 6",
|
|
2882
|
+
"code_block": "Code Block",
|
|
2883
|
+
"quote": "Block Quote"
|
|
2884
|
+
},
|
|
2885
|
+
"format": {
|
|
2886
|
+
"bold": "Bold",
|
|
2887
|
+
"italic": "Italic",
|
|
2888
|
+
"strike": "Strikethrough",
|
|
2889
|
+
"code": "Inline Code",
|
|
2890
|
+
"link": "Link",
|
|
2891
|
+
"insert_image": "Insert Image"
|
|
2892
|
+
},
|
|
2893
|
+
"view": {
|
|
2894
|
+
"toggle_mode": "Toggle Visual / Source",
|
|
2895
|
+
"toggle_split": "Toggle Split Mode",
|
|
2896
|
+
"toggle_sidebar": "Toggle Sidebar",
|
|
2897
|
+
"toggle_aipanel": "Toggle AI Panel",
|
|
2898
|
+
"toggle_outline": "Toggle Outline",
|
|
2899
|
+
"open_settings": "Open Settings",
|
|
2900
|
+
"zoom_in": "Zoom In",
|
|
2901
|
+
"zoom_out": "Zoom Out",
|
|
2902
|
+
"zoom_reset": "Reset Zoom"
|
|
2903
|
+
},
|
|
2904
|
+
"workflow": {
|
|
2905
|
+
"quick_open": "Quick Open",
|
|
2906
|
+
"command_palette": "Command Palette"
|
|
2907
|
+
},
|
|
2908
|
+
"ai_chat": {
|
|
2909
|
+
"send": "Send AI Message",
|
|
2910
|
+
"newline": "Insert Newline"
|
|
2911
|
+
}
|
|
2912
|
+
},
|
|
2913
|
+
"locked_hint": "Managed by the native menu — not customizable here yet",
|
|
2914
|
+
"locked_footnote": "🔒 indicates the shortcut is provided by the OS-native menu and is not customizable in this version.",
|
|
2915
|
+
"editor": {
|
|
2916
|
+
"prompt": "Appuyez sur n'importe quelle combinaison… (Échap pour annuler)",
|
|
2917
|
+
"needs_modifier": "Au moins un modificateur requis (Cmd, Ctrl, Alt ou Shift)",
|
|
2918
|
+
"conflict": "Déjà utilisé par un autre raccourci",
|
|
2919
|
+
"save": "Enregistrer",
|
|
2920
|
+
"cancel": "Annuler",
|
|
2921
|
+
"edit_hint": "Cliquez pour enregistrer un nouveau raccourci",
|
|
2922
|
+
"reset_to_default": "Réinitialiser",
|
|
2923
|
+
"customized": "Personnalisé",
|
|
2924
|
+
"customized_short": "Perso",
|
|
2925
|
+
"reset_conflict": "Le raccourci par défaut entre en conflit avec un autre raccourci personnalisé — modifiez-le d'abord.",
|
|
2926
|
+
"sync_failed": "Impossible de mettre à jour le menu système",
|
|
2927
|
+
"sync_failed_short": "Échec sync",
|
|
2928
|
+
"unbound": "Non défini",
|
|
2929
|
+
"reset_all": "Tout réinitialiser",
|
|
2930
|
+
"reset_all_hint": "Restaurer tous les raccourcis à leurs valeurs par défaut",
|
|
2931
|
+
"reset_all_confirm": "Réinitialiser les {count} raccourci(s) personnalisé(s) aux valeurs par défaut ?",
|
|
2932
|
+
"reset_short": "Par défaut"
|
|
2933
|
+
},
|
|
2934
|
+
"edit_hint": "Astuce : les lignes avec un contour pointillé et l'icône ✎ peuvent être re-enregistrées en cliquant sur les touches. Les autres raccourcis (🔒) proviennent du menu système et ne sont pas encore personnalisables.",
|
|
2935
|
+
"mcp": {
|
|
2936
|
+
"intro": "Associez des raccourcis clavier aux serveurs MCP installés et aux outils qu'ils exposent.",
|
|
2937
|
+
"empty": "Installez d'abord un serveur MCP via « Paramètres → MCP » pour créer des raccourcis.",
|
|
2938
|
+
"add_tool": "Ajouter un raccourci d'outil MCP",
|
|
2939
|
+
"remove_tool": "Supprimer ce raccourci d'outil MCP",
|
|
2940
|
+
"remove_tool_short": "Supprimer",
|
|
2941
|
+
"remove_stale": "Supprimer le raccourci obsolète",
|
|
2942
|
+
"remove_stale_short": "Supprimer",
|
|
2943
|
+
"server_kind_short": "Serveur",
|
|
2944
|
+
"server_kind_hint": "Active ou désactive la connexion au serveur MCP",
|
|
2945
|
+
"tool_kind_short": "Outil",
|
|
2946
|
+
"tool_kind_hint": "Ouvre le panneau d'IA et demande à l'assistant d'utiliser cet outil",
|
|
2947
|
+
"stale_short": "Indisponible",
|
|
2948
|
+
"stale_hint": "Le serveur ou l'outil MCP de cette assignation n'est plus installé",
|
|
2949
|
+
"server_gone": "Le serveur MCP n'est plus installé",
|
|
2950
|
+
"unavailable": "L'outil MCP n'est pas disponible",
|
|
2951
|
+
"toggled": {
|
|
2952
|
+
"on": "{name} activé",
|
|
2953
|
+
"off": "{name} désactivé"
|
|
2954
|
+
},
|
|
2955
|
+
"dialog": {
|
|
2956
|
+
"title": "Ajouter un raccourci d'outil MCP",
|
|
2957
|
+
"server_label": "Serveur MCP",
|
|
2958
|
+
"tool_label": "Outil",
|
|
2959
|
+
"tool_placeholder": "Sélectionner un outil…",
|
|
2960
|
+
"no_tools_for_server": "Ce serveur n'a pas encore d'outils — connectez-le d'abord depuis les paramètres MCP.",
|
|
2961
|
+
"duplicate_error": "Un raccourci pour cet outil existe déjà.",
|
|
2962
|
+
"add": "Ajouter",
|
|
2963
|
+
"cancel": "Annuler"
|
|
2964
|
+
}
|
|
2965
|
+
}
|
|
2966
|
+
},
|
|
2967
|
+
"sidebar": {
|
|
2968
|
+
"title": "Sidebar",
|
|
2969
|
+
"open_folder": "Ouvrir un dossier",
|
|
2970
|
+
"no_folder": "Aucun dossier ouvert",
|
|
2971
|
+
"create_kb": "Créer une base de connaissances",
|
|
2972
|
+
"empty_dir": "Aucun fichier dans ce répertoire",
|
|
2973
|
+
"kb_settings": "Paramètres de la base de connaissances",
|
|
2974
|
+
"tree_view": "Vue arborescente",
|
|
2975
|
+
"list_view": "Vue en liste",
|
|
2976
|
+
"search": "Rechercher des fichiers...",
|
|
2977
|
+
"context_menu": {
|
|
2978
|
+
"new_file": "Nouveau fichier",
|
|
2979
|
+
"new_folder": "Nouveau dossier",
|
|
2980
|
+
"search_files": "Rechercher",
|
|
2981
|
+
"refresh": "Actualiser",
|
|
2982
|
+
"rename": "Renommer",
|
|
2983
|
+
"duplicate": "Créer une copie",
|
|
2984
|
+
"delete": "Supprimer",
|
|
2985
|
+
"copy_path": "Copier le chemin",
|
|
2986
|
+
"reveal_in_finder": "Révéler dans le Finder",
|
|
2987
|
+
"reveal_in_explorer": "Afficher dans l'Explorateur",
|
|
2988
|
+
"history_versions": "Versions historiques"
|
|
2989
|
+
},
|
|
2990
|
+
"history": {
|
|
2991
|
+
"title": "Historique des versions",
|
|
2992
|
+
"empty": "Aucune version sauvegardée",
|
|
2993
|
+
"restore": "Restaurer",
|
|
2994
|
+
"restore_confirm": "Restaurer cette version ? Le contenu actuel de MORAYA.md sera remplacé."
|
|
2995
|
+
},
|
|
2996
|
+
"new_file_prompt": "Entrez le nom du fichier",
|
|
2997
|
+
"new_folder_prompt": "Entrez le nom du dossier",
|
|
2998
|
+
"rename_prompt": "Entrez le nouveau nom",
|
|
2999
|
+
"reserved_dir_title": "Nom réservé",
|
|
3000
|
+
"reserved_dir_name": "\"images\" est un nom de répertoire réservé. Veuillez choisir un autre nom.",
|
|
3001
|
+
"delete_confirm": "Êtes-vous sûr de vouloir supprimer \"{name}\" ? Cette action est irréversible.",
|
|
3002
|
+
"views": "Sidebar views",
|
|
3003
|
+
"knowledge_bases": "Knowledge Bases",
|
|
3004
|
+
"explorer": "Files",
|
|
3005
|
+
"kb_list": "Knowledge base list",
|
|
3006
|
+
"tag_view": "Tags",
|
|
3007
|
+
"open": "Open sidebar",
|
|
3008
|
+
"close": "Close sidebar",
|
|
3009
|
+
"local_workspace": "Local"
|
|
3010
|
+
},
|
|
3011
|
+
"sso": {
|
|
3012
|
+
"__mt": true,
|
|
3013
|
+
"title": "Single Sign-On",
|
|
3014
|
+
"description": "Configure SSO to let team members authenticate via your identity provider.",
|
|
3015
|
+
"enable_sso": "Enable SSO",
|
|
3016
|
+
"require_sso": "Require SSO for all members",
|
|
3017
|
+
"oidc": "OIDC / OAuth 2.0",
|
|
3018
|
+
"saml": "SAML 2.0",
|
|
3019
|
+
"provider": "Identity Provider",
|
|
3020
|
+
"custom_provider": "Custom",
|
|
3021
|
+
"issuer": "Issuer URL",
|
|
3022
|
+
"client_id": "Client ID",
|
|
3023
|
+
"client_secret": "Client Secret",
|
|
3024
|
+
"scopes": "Scopes",
|
|
3025
|
+
"idp_metadata_url": "IdP Metadata URL",
|
|
3026
|
+
"sp_entity_id": "SP Entity ID",
|
|
3027
|
+
"sp_acs_url": "ACS URL",
|
|
3028
|
+
"signing_cert": "Signing Certificate",
|
|
3029
|
+
"save": "Save SSO Configuration",
|
|
3030
|
+
"saved_success": "SSO configuration saved."
|
|
3031
|
+
},
|
|
3032
|
+
"stale_dmg": {
|
|
3033
|
+
"title": "Nettoyer les anciennes images disque",
|
|
3034
|
+
"body": "D'anciennes images disque Moraya sont encore montées. Les laisser montées fait apparaître plusieurs versions dans le menu « Ouvrir avec ». Les éjecter maintenant ?",
|
|
3035
|
+
"eject_all": "Tout éjecter",
|
|
3036
|
+
"skip": "Plus tard",
|
|
3037
|
+
"partial_failure": "Certaines images disque n'ont pas pu être éjectées :"
|
|
3038
|
+
},
|
|
3039
|
+
"statusbar": {
|
|
3040
|
+
"words": "Mots",
|
|
3041
|
+
"characters": "Caractères",
|
|
3042
|
+
"format": "Markdown",
|
|
3043
|
+
"source_mode": "Source",
|
|
3044
|
+
"visual_mode": "Visuel",
|
|
3045
|
+
"split_mode": "Divisé",
|
|
3046
|
+
"publish_workflow": "Workflow IA",
|
|
3047
|
+
"ai_tooltip": "IA"
|
|
3048
|
+
},
|
|
3049
|
+
"storage": {
|
|
3050
|
+
"__mt": true,
|
|
3051
|
+
"title": "Storage",
|
|
3052
|
+
"connected_providers": "Connected Providers",
|
|
3053
|
+
"connect_provider": "Connect Provider",
|
|
3054
|
+
"primary": "Primary",
|
|
3055
|
+
"set_primary": "Set as Primary",
|
|
3056
|
+
"remove": "Remove",
|
|
3057
|
+
"edit": "Edit",
|
|
3058
|
+
"verify": "Verify Connection",
|
|
3059
|
+
"verifying": "Verifying...",
|
|
3060
|
+
"verify_success": "Connection verified",
|
|
3061
|
+
"verify_failed": "Verification failed",
|
|
3062
|
+
"no_providers": "No storage providers connected.",
|
|
3063
|
+
"connect_prompt": "Connect your own cloud storage to keep full control of your data.",
|
|
3064
|
+
"picora_default": "Picora is your storage provider (Connect plan)",
|
|
3065
|
+
"upgrade_for_byoc": "Upgrade to Personal to connect your own storage.",
|
|
3066
|
+
"step_choose": "Choose Provider",
|
|
3067
|
+
"step_setup": "Setup Script",
|
|
3068
|
+
"step_credentials": "Enter Credentials",
|
|
3069
|
+
"step_verify": "Verify",
|
|
3070
|
+
"step_name": "Name & Save",
|
|
3071
|
+
"provider_label": "Provider",
|
|
3072
|
+
"bucket_label": "Bucket Name",
|
|
3073
|
+
"region_label": "Region",
|
|
3074
|
+
"access_key_label": "Access Key ID",
|
|
3075
|
+
"secret_key_label": "Secret Access Key",
|
|
3076
|
+
"role_arn_label": "Role ARN (for STS)",
|
|
3077
|
+
"account_id_label": "Account ID",
|
|
3078
|
+
"key_id_label": "Key ID",
|
|
3079
|
+
"application_key_label": "Application Key",
|
|
3080
|
+
"binding_label": "Display Name",
|
|
3081
|
+
"copy_script": "Copy Script",
|
|
3082
|
+
"copy_policy": "Copy Policy JSON",
|
|
3083
|
+
"copied": "Copied!",
|
|
3084
|
+
"back": "Back",
|
|
3085
|
+
"next": "Next",
|
|
3086
|
+
"save": "Save",
|
|
3087
|
+
"health_ok": "Healthy",
|
|
3088
|
+
"health_degraded": "Degraded",
|
|
3089
|
+
"health_failed": "Failed",
|
|
3090
|
+
"health_unknown": "Unknown",
|
|
3091
|
+
"access_denied": "Access denied.",
|
|
3092
|
+
"bucket_not_found": "Bucket not found.",
|
|
3093
|
+
"bucket_exists": "Bucket already exists.",
|
|
3094
|
+
"clock_skew": "System clock is out of sync. Please check your date/time settings.",
|
|
3095
|
+
"b2_no_sts_warning": "Backblaze B2 does not support STS. Credentials are stored in session only. Enable E2E encryption (v0.43) for better security.",
|
|
3096
|
+
"r2_token_info": "Create an API Token in Cloudflare Dashboard with R2 Read/Write permissions for this bucket."
|
|
3097
|
+
},
|
|
3098
|
+
"table": {
|
|
3099
|
+
"insert_row_above": "Insérer une ligne au-dessus",
|
|
3100
|
+
"insert_row_below": "Insérer une ligne en dessous",
|
|
3101
|
+
"delete_row": "Supprimer la ligne",
|
|
3102
|
+
"insert_col_left": "Insérer une colonne à gauche",
|
|
3103
|
+
"insert_col_right": "Insérer une colonne à droite",
|
|
3104
|
+
"delete_col": "Supprimer la colonne",
|
|
3105
|
+
"align_left": "Aligner à gauche",
|
|
3106
|
+
"align_center": "Centrer",
|
|
3107
|
+
"align_right": "Aligner à droite",
|
|
3108
|
+
"copy_table": "Copier le tableau",
|
|
3109
|
+
"format_table_source": "Formater la source du tableau",
|
|
3110
|
+
"delete_table": "Supprimer le tableau",
|
|
3111
|
+
"copied": "Tableau copié",
|
|
3112
|
+
"formatted_copied": "Tableau formaté copié"
|
|
3113
|
+
},
|
|
3114
|
+
"tabs": {
|
|
3115
|
+
"external_change_title": "Fichier modifié en externe",
|
|
3116
|
+
"external_change_msg": "« {fileName} » a été modifié en dehors de Moraya.",
|
|
3117
|
+
"keep_local": "Conserver les modifications locales",
|
|
3118
|
+
"load_from_disk": "Charger depuis le disque",
|
|
3119
|
+
"unsaved_title": "Modifications non enregistrées",
|
|
3120
|
+
"unsaved_msg": "« {fileName} » contient des modifications non enregistrées.",
|
|
3121
|
+
"save": "Enregistrer",
|
|
3122
|
+
"discard": "Abandonner",
|
|
3123
|
+
"new_tab": "New Tab",
|
|
3124
|
+
"close": "Close Tab",
|
|
3125
|
+
"close_others": "Close Other Tabs",
|
|
3126
|
+
"close_to_right": "Close Tabs to the Right",
|
|
3127
|
+
"close_all": "Close All Tabs",
|
|
3128
|
+
"dirty_confirm": "This tab has unsaved changes. Discard and close?",
|
|
3129
|
+
"discard_close": "Discard & Close",
|
|
3130
|
+
"readonly_banner": "Another tab is editing this note. This tab is read-only.",
|
|
3131
|
+
"takeover": "Take Over",
|
|
3132
|
+
"open_count": "tabs open",
|
|
3133
|
+
"no_tabs": "No open tabs",
|
|
3134
|
+
"upgrade_tabs": "Upgrade to Personal to open multiple tabs.",
|
|
3135
|
+
"rename": "Rename",
|
|
3136
|
+
"rename_placeholder": "Document name",
|
|
3137
|
+
"dirty_dot": "Unsaved changes"
|
|
3138
|
+
},
|
|
3139
|
+
"team": {
|
|
3140
|
+
"__mt": true,
|
|
3141
|
+
"title": "Team Knowledge Bases",
|
|
3142
|
+
"create": "New Team KB",
|
|
3143
|
+
"no_kbs": "You don't have any team knowledge bases yet.",
|
|
3144
|
+
"create_first": "Create your first team KB",
|
|
3145
|
+
"members": "members",
|
|
3146
|
+
"open": "Open",
|
|
3147
|
+
"settings": "Settings",
|
|
3148
|
+
"encryption_kms": "Cloud KMS (AI Review enabled)",
|
|
3149
|
+
"encryption_e2e": "E2E Encryption (AI Review disabled)",
|
|
3150
|
+
"wizard_title": "Create Team Knowledge Base",
|
|
3151
|
+
"step_info": "Name",
|
|
3152
|
+
"step_provider": "Storage",
|
|
3153
|
+
"step_members": "Members",
|
|
3154
|
+
"step_encryption": "Encryption",
|
|
3155
|
+
"step_confirm": "Confirm",
|
|
3156
|
+
"kb_name_label": "Team KB Name",
|
|
3157
|
+
"kb_name_placeholder": "e.g. Engineering Docs",
|
|
3158
|
+
"provider_label": "Provider",
|
|
3159
|
+
"bucket_label": "Bucket",
|
|
3160
|
+
"prefix_label": "Prefix (optional)",
|
|
3161
|
+
"invite_emails_label": "Email addresses (comma-separated)",
|
|
3162
|
+
"invite_role_label": "Role",
|
|
3163
|
+
"mode_kms_name": "Cloud KMS",
|
|
3164
|
+
"mode_kms_desc": "AI Review and server-side features enabled.",
|
|
3165
|
+
"mode_e2e_name": "End-to-End",
|
|
3166
|
+
"mode_e2e_desc": "Maximum privacy. AI Review not available.",
|
|
3167
|
+
"confirm_summary": "Confirm & Create",
|
|
3168
|
+
"creating": "Creating…",
|
|
3169
|
+
"create_kb": "Create Team KB"
|
|
3170
|
+
},
|
|
3171
|
+
"templates": {
|
|
3172
|
+
"gallery": {
|
|
3173
|
+
"title": "Assistant IA",
|
|
3174
|
+
"search": "Rechercher des modèles...",
|
|
3175
|
+
"back": "Retour",
|
|
3176
|
+
"start": "Démarrer"
|
|
3177
|
+
},
|
|
3178
|
+
"my_templates": {
|
|
3179
|
+
"name": "Mes modèles",
|
|
3180
|
+
"desc": "Modèles personnalisés importés ou créés par vous"
|
|
3181
|
+
},
|
|
3182
|
+
"manage": {
|
|
3183
|
+
"title": "Gérer les modèles",
|
|
3184
|
+
"import": "Importer un modèle",
|
|
3185
|
+
"export": "Exporter les modèles",
|
|
3186
|
+
"manage": "Gérer les modèles",
|
|
3187
|
+
"delete": "Supprimer",
|
|
3188
|
+
"delete_confirm": "Confirmer ?",
|
|
3189
|
+
"import_success": "{count} modèle(s) importé(s)",
|
|
3190
|
+
"export_success": "Modèles exportés avec succès",
|
|
3191
|
+
"no_custom_templates": "Aucun modèle personnalisé pour le moment",
|
|
3192
|
+
"source_global": "Global",
|
|
3193
|
+
"source_kb": "Base de connaissances",
|
|
3194
|
+
"invalid_format": "Format de modèle invalide",
|
|
3195
|
+
"select_templates": "Sélectionner les modèles à exporter"
|
|
3196
|
+
},
|
|
3197
|
+
"error": {
|
|
3198
|
+
"no_document": "Veuillez d'abord rédiger du contenu",
|
|
3199
|
+
"no_selection": "Veuillez d'abord sélectionner du texte",
|
|
3200
|
+
"no_content": "Veuillez d'abord rédiger du contenu ou sélectionner du texte"
|
|
3201
|
+
},
|
|
3202
|
+
"writing": {
|
|
3203
|
+
"name": "Rédaction",
|
|
3204
|
+
"desc": "Rédaction, édition et résumé propulsés par l'IA",
|
|
3205
|
+
"free": {
|
|
3206
|
+
"name": "Rédaction libre",
|
|
3207
|
+
"desc": "Entrez un sujet et l'IA génère du contenu",
|
|
3208
|
+
"hint": "Entrez un sujet ou des instructions de rédaction..."
|
|
3209
|
+
},
|
|
3210
|
+
"continue": {
|
|
3211
|
+
"name": "Continuer l'écriture",
|
|
3212
|
+
"desc": "Continuer depuis la fin du document"
|
|
3213
|
+
},
|
|
3214
|
+
"outline": {
|
|
3215
|
+
"name": "Générer un plan",
|
|
3216
|
+
"desc": "Créer un plan d'article",
|
|
3217
|
+
"hint": "Entrez le sujet de l'article..."
|
|
3218
|
+
},
|
|
3219
|
+
"summarize": {
|
|
3220
|
+
"name": "Résumer",
|
|
3221
|
+
"desc": "Résumer le texte sélectionné ou le document entier"
|
|
3222
|
+
},
|
|
3223
|
+
"improve": {
|
|
3224
|
+
"name": "Améliorer",
|
|
3225
|
+
"desc": "Améliorer la qualité rédactionnelle"
|
|
3226
|
+
},
|
|
3227
|
+
"simplify": {
|
|
3228
|
+
"name": "Simplifier",
|
|
3229
|
+
"desc": "Simplifier un texte complexe"
|
|
3230
|
+
},
|
|
3231
|
+
"expand": {
|
|
3232
|
+
"name": "Développer",
|
|
3233
|
+
"desc": "Ajouter plus de détails et d'explications"
|
|
3234
|
+
},
|
|
3235
|
+
"fix_grammar": {
|
|
3236
|
+
"name": "Corriger la grammaire",
|
|
3237
|
+
"desc": "Corriger les erreurs de grammaire et d'orthographe"
|
|
3238
|
+
}
|
|
3239
|
+
},
|
|
3240
|
+
"translation": {
|
|
3241
|
+
"name": "Traduction",
|
|
3242
|
+
"desc": "Traduction multilingue et localisation",
|
|
3243
|
+
"auto": {
|
|
3244
|
+
"name": "Traduction intelligente",
|
|
3245
|
+
"desc": "Détection automatique de la langue et traduction"
|
|
3246
|
+
},
|
|
3247
|
+
"to_target": {
|
|
3248
|
+
"name": "Traduire vers...",
|
|
3249
|
+
"desc": "Choisir la langue cible et traduire"
|
|
3250
|
+
},
|
|
3251
|
+
"explain": {
|
|
3252
|
+
"name": "Traduire et expliquer",
|
|
3253
|
+
"desc": "Traduire avec explication mot à mot"
|
|
3254
|
+
},
|
|
3255
|
+
"polish": {
|
|
3256
|
+
"name": "Localiser",
|
|
3257
|
+
"desc": "Rendre les traductions plus naturelles"
|
|
3258
|
+
},
|
|
3259
|
+
"compare": {
|
|
3260
|
+
"name": "Multi-versions",
|
|
3261
|
+
"desc": "Proposer plusieurs styles de traduction"
|
|
3262
|
+
},
|
|
3263
|
+
"target_lang": "Langue cible",
|
|
3264
|
+
"lang": {
|
|
3265
|
+
"en": "Anglais",
|
|
3266
|
+
"zh_cn": "Chinois simplifié",
|
|
3267
|
+
"zh_hant": "Chinois traditionnel",
|
|
3268
|
+
"ar": "Arabe",
|
|
3269
|
+
"de": "Allemand",
|
|
3270
|
+
"es": "Espagnol",
|
|
3271
|
+
"fr": "Français",
|
|
3272
|
+
"hi": "Hindi",
|
|
3273
|
+
"ja": "Japonais",
|
|
3274
|
+
"ko": "Coréen",
|
|
3275
|
+
"pt": "Portugais",
|
|
3276
|
+
"ru": "Russe"
|
|
3277
|
+
}
|
|
3278
|
+
},
|
|
3279
|
+
"student": {
|
|
3280
|
+
"name": "Aide aux études",
|
|
3281
|
+
"desc": "Apprentissage, prise de notes, compréhension de concepts",
|
|
3282
|
+
"explain": {
|
|
3283
|
+
"name": "Expliquer un concept",
|
|
3284
|
+
"desc": "Expliquer un concept en termes simples",
|
|
3285
|
+
"hint": "Entrez un concept à expliquer..."
|
|
3286
|
+
},
|
|
3287
|
+
"notes": {
|
|
3288
|
+
"name": "Notes d'étude",
|
|
3289
|
+
"desc": "Organiser le contenu en notes structurées"
|
|
3290
|
+
},
|
|
3291
|
+
"flashcard": {
|
|
3292
|
+
"name": "Cartes mémoire",
|
|
3293
|
+
"desc": "Extraire des cartes Q&R du contenu"
|
|
3294
|
+
},
|
|
3295
|
+
"mindmap": {
|
|
3296
|
+
"name": "Carte mentale",
|
|
3297
|
+
"desc": "Générer une carte mentale en Markdown"
|
|
3298
|
+
},
|
|
3299
|
+
"essay_outline": {
|
|
3300
|
+
"name": "Plan de dissertation",
|
|
3301
|
+
"desc": "Générer un plan de dissertation",
|
|
3302
|
+
"hint": "Entrez le sujet de la dissertation..."
|
|
3303
|
+
},
|
|
3304
|
+
"reading": {
|
|
3305
|
+
"name": "Analyse de lecture",
|
|
3306
|
+
"desc": "Analyse approfondie du contenu textuel"
|
|
3307
|
+
},
|
|
3308
|
+
"formula": {
|
|
3309
|
+
"name": "Dérivation de formule",
|
|
3310
|
+
"desc": "Montrer les étapes de dérivation d'une formule",
|
|
3311
|
+
"hint": "Entrez le nom ou le contenu de la formule..."
|
|
3312
|
+
},
|
|
3313
|
+
"compare": {
|
|
3314
|
+
"name": "Comparer des concepts",
|
|
3315
|
+
"desc": "Comparer deux concepts côte à côte",
|
|
3316
|
+
"hint": "Entrez deux concepts (ex. TCP vs UDP)..."
|
|
3317
|
+
}
|
|
3318
|
+
},
|
|
3319
|
+
"kids": {
|
|
3320
|
+
"name": "Apprentissage enfants",
|
|
3321
|
+
"desc": "Histoires, apprentissage ludique, jeux interactifs",
|
|
3322
|
+
"story": {
|
|
3323
|
+
"name": "Histoire pour enfants",
|
|
3324
|
+
"desc": "Générer une histoire à partir de mots-clés",
|
|
3325
|
+
"hint": "Entrez des mots-clés pour l'histoire (ex. lapin forêt aventure)..."
|
|
3326
|
+
},
|
|
3327
|
+
"poem": {
|
|
3328
|
+
"name": "Comptine",
|
|
3329
|
+
"desc": "Créer une comptine sur un sujet",
|
|
3330
|
+
"hint": "Entrez un sujet..."
|
|
3331
|
+
},
|
|
3332
|
+
"why": {
|
|
3333
|
+
"name": "Pourquoi ? Pourquoi ? Pourquoi ?",
|
|
3334
|
+
"desc": "L'IA répond aux questions « pourquoi » sans fin"
|
|
3335
|
+
},
|
|
3336
|
+
"alphabet": {
|
|
3337
|
+
"name": "Jeu de l'alphabet",
|
|
3338
|
+
"desc": "Apprentissage interactif des lettres"
|
|
3339
|
+
},
|
|
3340
|
+
"math_game": {
|
|
3341
|
+
"name": "Jeu de maths",
|
|
3342
|
+
"desc": "Arithmétique interactive et amusante"
|
|
3343
|
+
},
|
|
3344
|
+
"riddle": {
|
|
3345
|
+
"name": "Devinettes",
|
|
3346
|
+
"desc": "L'IA propose des devinettes à résoudre"
|
|
3347
|
+
},
|
|
3348
|
+
"draw_text": {
|
|
3349
|
+
"name": "Image parlante",
|
|
3350
|
+
"desc": "Décrivez une scène, l'IA écrit une histoire",
|
|
3351
|
+
"hint": "Décrivez une scène..."
|
|
3352
|
+
},
|
|
3353
|
+
"knowledge": {
|
|
3354
|
+
"name": "Le saviez-vous ?",
|
|
3355
|
+
"desc": "Nature, science, encyclopédie animale"
|
|
3356
|
+
}
|
|
3357
|
+
},
|
|
3358
|
+
"marketing": {
|
|
3359
|
+
"name": "Marketing",
|
|
3360
|
+
"desc": "Réseaux sociaux, publicité et rédaction SEO",
|
|
3361
|
+
"xiaohongshu": {
|
|
3362
|
+
"name": "Publication Xiaohongshu",
|
|
3363
|
+
"desc": "Générer une publication style avis lifestyle",
|
|
3364
|
+
"hint": "Entrez le produit ou le sujet..."
|
|
3365
|
+
},
|
|
3366
|
+
"twitter": {
|
|
3367
|
+
"name": "Publication Twitter/X",
|
|
3368
|
+
"desc": "Générer du contenu style tweet",
|
|
3369
|
+
"hint": "Entrez le sujet..."
|
|
3370
|
+
},
|
|
3371
|
+
"slogan": {
|
|
3372
|
+
"name": "Slogan publicitaire",
|
|
3373
|
+
"desc": "Générer des slogans de marque accrocheurs",
|
|
3374
|
+
"hint": "Entrez la marque ou le produit..."
|
|
3375
|
+
},
|
|
3376
|
+
"email": {
|
|
3377
|
+
"name": "E-mail marketing",
|
|
3378
|
+
"desc": "Configurer l'audience et le ton pour l'e-mail",
|
|
3379
|
+
"hint": "Décrivez le contenu de l'e-mail..."
|
|
3380
|
+
},
|
|
3381
|
+
"seo_article": {
|
|
3382
|
+
"name": "Article SEO",
|
|
3383
|
+
"desc": "Générer du contenu optimisé SEO",
|
|
3384
|
+
"hint": "Entrez les mots-clés cibles..."
|
|
3385
|
+
},
|
|
3386
|
+
"product_desc": {
|
|
3387
|
+
"name": "Description de produit",
|
|
3388
|
+
"desc": "Générer un texte produit convaincant",
|
|
3389
|
+
"hint": "Entrez les informations du produit..."
|
|
3390
|
+
},
|
|
3391
|
+
"tone": "Ton",
|
|
3392
|
+
"tone.formal": "Formel",
|
|
3393
|
+
"tone.friendly": "Amical",
|
|
3394
|
+
"tone.urgent": "Urgent",
|
|
3395
|
+
"tone.humorous": "Humoristique"
|
|
3396
|
+
},
|
|
3397
|
+
"professional": {
|
|
3398
|
+
"name": "Professionnel",
|
|
3399
|
+
"desc": "E-mails, rapports, comptes rendus de réunion",
|
|
3400
|
+
"email": {
|
|
3401
|
+
"name": "E-mail professionnel",
|
|
3402
|
+
"desc": "Configurer le scénario et le ton de l'e-mail",
|
|
3403
|
+
"hint": "Décrivez le contenu de l'e-mail..."
|
|
3404
|
+
},
|
|
3405
|
+
"meeting": {
|
|
3406
|
+
"name": "Compte rendu de réunion",
|
|
3407
|
+
"desc": "Organiser les notes en procès-verbal formel"
|
|
3408
|
+
},
|
|
3409
|
+
"report": {
|
|
3410
|
+
"name": "Rapport de travail",
|
|
3411
|
+
"desc": "Générer un rapport hebdomadaire/mensuel/trimestriel",
|
|
3412
|
+
"hint": "Entrez les points clés du rapport..."
|
|
3413
|
+
},
|
|
3414
|
+
"review": {
|
|
3415
|
+
"name": "Revue de code",
|
|
3416
|
+
"desc": "Examiner le code et suggérer des améliorations"
|
|
3417
|
+
},
|
|
3418
|
+
"resume": {
|
|
3419
|
+
"name": "Optimisation de CV",
|
|
3420
|
+
"desc": "Optimiser le CV avec la méthode STAR"
|
|
3421
|
+
},
|
|
3422
|
+
"prd": {
|
|
3423
|
+
"name": "Document PRD",
|
|
3424
|
+
"desc": "Générer un document d'exigences produit",
|
|
3425
|
+
"hint": "Entrez la description de la fonctionnalité..."
|
|
3426
|
+
},
|
|
3427
|
+
"tone": "Ton",
|
|
3428
|
+
"tone.concise": "Concis",
|
|
3429
|
+
"report_type": "Type de rapport",
|
|
3430
|
+
"report_type.weekly": "Hebdomadaire",
|
|
3431
|
+
"report_type.monthly": "Mensuel",
|
|
3432
|
+
"report_type.quarterly": "Trimestriel"
|
|
3433
|
+
},
|
|
3434
|
+
"personal": {
|
|
3435
|
+
"name": "Développement personnel",
|
|
3436
|
+
"desc": "Journal, objectifs, prise de décision",
|
|
3437
|
+
"journal": {
|
|
3438
|
+
"name": "Aide au journal",
|
|
3439
|
+
"desc": "Journal guidé et réflexion",
|
|
3440
|
+
"hint": "Que s'est-il passé aujourd'hui ?..."
|
|
3441
|
+
},
|
|
3442
|
+
"goal": {
|
|
3443
|
+
"name": "Décomposition d'objectifs",
|
|
3444
|
+
"desc": "Décomposer les objectifs en étapes concrètes",
|
|
3445
|
+
"hint": "Entrez votre objectif..."
|
|
3446
|
+
},
|
|
3447
|
+
"habit": {
|
|
3448
|
+
"name": "Constructeur d'habitudes",
|
|
3449
|
+
"desc": "Créer un plan de construction d'habitudes",
|
|
3450
|
+
"hint": "Entrez l'habitude que vous souhaitez développer..."
|
|
3451
|
+
},
|
|
3452
|
+
"decision": {
|
|
3453
|
+
"name": "Analyse de décision",
|
|
3454
|
+
"desc": "Analyse des avantages et inconvénients",
|
|
3455
|
+
"hint": "Décrivez vos choix..."
|
|
3456
|
+
},
|
|
3457
|
+
"book_notes": {
|
|
3458
|
+
"name": "Notes de lecture",
|
|
3459
|
+
"desc": "Organiser le contenu en notes de lecture"
|
|
3460
|
+
}
|
|
3461
|
+
},
|
|
3462
|
+
"games_cn": {
|
|
3463
|
+
"name": "Jeux chinois",
|
|
3464
|
+
"desc": "Jeux de poésie, chaînes d'expressions, devinettes",
|
|
3465
|
+
"feihualing": {
|
|
3466
|
+
"name": "Poetry Challenge",
|
|
3467
|
+
"desc": "Take turns reciting poems with a given character"
|
|
3468
|
+
},
|
|
3469
|
+
"chengyu_chain": {
|
|
3470
|
+
"name": "Idiom Chain",
|
|
3471
|
+
"desc": "Chain idioms by last/first character"
|
|
3472
|
+
},
|
|
3473
|
+
"riddle": {
|
|
3474
|
+
"name": "Riddles",
|
|
3475
|
+
"desc": "AI gives clues, you guess the answer"
|
|
3476
|
+
},
|
|
3477
|
+
"lantern_riddle": {
|
|
3478
|
+
"name": "Lantern Riddles",
|
|
3479
|
+
"desc": "Character-based riddle puzzles"
|
|
3480
|
+
},
|
|
3481
|
+
"poetry_fill": {
|
|
3482
|
+
"name": "Poetry Fill-in",
|
|
3483
|
+
"desc": "Fill in missing words from poems"
|
|
3484
|
+
},
|
|
3485
|
+
"story_chain": {
|
|
3486
|
+
"name": "Story Chain",
|
|
3487
|
+
"desc": "Take turns continuing a story"
|
|
3488
|
+
},
|
|
3489
|
+
"character_game": {
|
|
3490
|
+
"name": "Character Guess",
|
|
3491
|
+
"desc": "Guess the Chinese character from clues"
|
|
3492
|
+
},
|
|
3493
|
+
"brain_teaser": {
|
|
3494
|
+
"name": "Brain Teasers",
|
|
3495
|
+
"desc": "Fun brain teaser puzzles"
|
|
3496
|
+
},
|
|
3497
|
+
"couplet": {
|
|
3498
|
+
"name": "Couplets",
|
|
3499
|
+
"desc": "AI gives first line, you match it"
|
|
3500
|
+
},
|
|
3501
|
+
"word_explain": {
|
|
3502
|
+
"name": "Word Charades",
|
|
3503
|
+
"desc": "AI describes, you guess the word"
|
|
3504
|
+
},
|
|
3505
|
+
"ancient_text": {
|
|
3506
|
+
"name": "Classical Chinese",
|
|
3507
|
+
"desc": "Translate classical to modern Chinese"
|
|
3508
|
+
},
|
|
3509
|
+
"homophone": {
|
|
3510
|
+
"name": "Homophones",
|
|
3511
|
+
"desc": "Homophone pun challenge"
|
|
3512
|
+
}
|
|
3513
|
+
},
|
|
3514
|
+
"games_en": {
|
|
3515
|
+
"name": "Jeux anglais",
|
|
3516
|
+
"desc": "Word Chain, Hangman, Trivia et plus",
|
|
3517
|
+
"word_chain": {
|
|
3518
|
+
"name": "Word Chain",
|
|
3519
|
+
"desc": "La dernière lettre commence le mot suivant"
|
|
3520
|
+
},
|
|
3521
|
+
"twenty_questions": {
|
|
3522
|
+
"name": "20 Questions",
|
|
3523
|
+
"desc": "Devinez l'objet en 20 questions oui/non"
|
|
3524
|
+
},
|
|
3525
|
+
"hangman": {
|
|
3526
|
+
"name": "Hangman",
|
|
3527
|
+
"desc": "Devinez le mot lettre par lettre"
|
|
3528
|
+
},
|
|
3529
|
+
"story_builder": {
|
|
3530
|
+
"name": "Story Builder",
|
|
3531
|
+
"desc": "Construisez une histoire à tour de rôle"
|
|
3532
|
+
},
|
|
3533
|
+
"word_association": {
|
|
3534
|
+
"name": "Word Association",
|
|
3535
|
+
"desc": "Chaîne d'association de mots libre"
|
|
3536
|
+
},
|
|
3537
|
+
"riddles": {
|
|
3538
|
+
"name": "Riddles",
|
|
3539
|
+
"desc": "Résolvez des devinettes en anglais"
|
|
3540
|
+
},
|
|
3541
|
+
"trivia": {
|
|
3542
|
+
"name": "Trivia Quiz",
|
|
3543
|
+
"desc": "Questions de culture générale"
|
|
3544
|
+
},
|
|
3545
|
+
"rhyme_time": {
|
|
3546
|
+
"name": "Rhyme Time",
|
|
3547
|
+
"desc": "Créez des histoires avec des mots qui riment"
|
|
3548
|
+
},
|
|
3549
|
+
"acronym": {
|
|
3550
|
+
"name": "Acronym Game",
|
|
3551
|
+
"desc": "Inventez des significations pour des acronymes aléatoires"
|
|
3552
|
+
},
|
|
3553
|
+
"taboo": {
|
|
3554
|
+
"name": "Taboo",
|
|
3555
|
+
"desc": "Décrivez sans utiliser les mots interdits"
|
|
3556
|
+
},
|
|
3557
|
+
"sentence_builder": {
|
|
3558
|
+
"name": "Sentence Builder",
|
|
3559
|
+
"desc": "Construisez la phrase la plus longue avec les mots donnés"
|
|
3560
|
+
},
|
|
3561
|
+
"emoji_story": {
|
|
3562
|
+
"name": "Emoji Story",
|
|
3563
|
+
"desc": "Racontez des histoires avec des emojis"
|
|
3564
|
+
}
|
|
3565
|
+
},
|
|
3566
|
+
"quiz": {
|
|
3567
|
+
"name": "Quiz et exercices",
|
|
3568
|
+
"desc": "Questions générées par l'IA avec notation",
|
|
3569
|
+
"practice": {
|
|
3570
|
+
"name": "Quiz universel",
|
|
3571
|
+
"desc": "Choisissez le sujet et la difficulté, l'IA vous interroge"
|
|
3572
|
+
},
|
|
3573
|
+
"direction": "Matière",
|
|
3574
|
+
"dir": {
|
|
3575
|
+
"programming": "Programmation",
|
|
3576
|
+
"math": "Mathématiques",
|
|
3577
|
+
"english": "Anglais",
|
|
3578
|
+
"science": "Sciences",
|
|
3579
|
+
"history": "Histoire",
|
|
3580
|
+
"interview": "Préparation d'entretien",
|
|
3581
|
+
"custom": "Matière personnalisée"
|
|
3582
|
+
},
|
|
3583
|
+
"difficulty": "Difficulté",
|
|
3584
|
+
"diff": {
|
|
3585
|
+
"easy": "Facile",
|
|
3586
|
+
"medium": "Moyen",
|
|
3587
|
+
"hard": "Difficile"
|
|
3588
|
+
}
|
|
3589
|
+
}
|
|
3590
|
+
},
|
|
3591
|
+
"theme": {
|
|
3592
|
+
"__mt": true,
|
|
3593
|
+
"title": "Appearance",
|
|
3594
|
+
"mode_title": "Color Mode",
|
|
3595
|
+
"mode_light": "Light",
|
|
3596
|
+
"mode_dark": "Dark",
|
|
3597
|
+
"mode_system": "System",
|
|
3598
|
+
"custom_title": "Custom Themes",
|
|
3599
|
+
"custom_new": "New Theme",
|
|
3600
|
+
"custom_export": "Export",
|
|
3601
|
+
"custom_import": "Import",
|
|
3602
|
+
"custom_delete": "Delete",
|
|
3603
|
+
"custom_activate": "Activate",
|
|
3604
|
+
"custom_deactivate": "Deactivate",
|
|
3605
|
+
"custom_edit": "Edit",
|
|
3606
|
+
"editor_title": "Theme Editor",
|
|
3607
|
+
"name_label": "Theme Name",
|
|
3608
|
+
"no_custom": "No custom themes yet. Create one below.",
|
|
3609
|
+
"groups_base": "Base Colors",
|
|
3610
|
+
"groups_editor": "Editor",
|
|
3611
|
+
"groups_ui": "UI Components",
|
|
3612
|
+
"groups_code": "Code Block",
|
|
3613
|
+
"saved": "Save",
|
|
3614
|
+
"import_error": "Invalid theme file. Please use a valid Moraya theme JSON."
|
|
3615
|
+
},
|
|
3616
|
+
"titlebar": {
|
|
3617
|
+
"unsaved": "Non enregistré",
|
|
3618
|
+
"minimize": "Réduire",
|
|
3619
|
+
"maximize": "Agrandir",
|
|
3620
|
+
"close": "Fermer",
|
|
3621
|
+
"new_file": "Nouveau fichier",
|
|
3622
|
+
"open_file": "Ouvrir un fichier..."
|
|
3623
|
+
},
|
|
3624
|
+
"transcription": {
|
|
3625
|
+
"title": "Transcription",
|
|
3626
|
+
"recording": "Enregistrement",
|
|
3627
|
+
"connecting": "Connexion en cours...",
|
|
3628
|
+
"paused": "En pause",
|
|
3629
|
+
"stopping": "Arrêt en cours...",
|
|
3630
|
+
"idle": "Prêt",
|
|
3631
|
+
"start": "Démarrer",
|
|
3632
|
+
"stop": "Arrêter",
|
|
3633
|
+
"pause": "Pause",
|
|
3634
|
+
"resume": "Reprendre",
|
|
3635
|
+
"back": "Retour à la conversation",
|
|
3636
|
+
"empty_idle": "Cliquez sur Démarrer pour commencer l'enregistrement et la transcription.",
|
|
3637
|
+
"empty_waiting": "En attente de parole...",
|
|
3638
|
+
"summarize_with_ai": "Résumer avec l'IA",
|
|
3639
|
+
"save_as_doc": "Enregistrer comme document",
|
|
3640
|
+
"summarize_prompt": "Veuillez générer un résumé de réunion à partir de la transcription suivante. Identifiez les points de discussion clés, les décisions prises et les actions à mener. Formatez en Markdown.",
|
|
3641
|
+
"no_speech_config": "Aucun fournisseur de reconnaissance vocale configuré. Veuillez en ajouter un dans Paramètres → Voix.",
|
|
3642
|
+
"no_speech_config_hint": "Allez dans Paramètres → Voix pour ajouter un fournisseur de reconnaissance vocale (ex. Deepgram).",
|
|
3643
|
+
"go_to_voice_settings": "Ouvrir les paramètres vocaux"
|
|
3644
|
+
},
|
|
3645
|
+
"update": {
|
|
3646
|
+
"title": "Informations de version",
|
|
3647
|
+
"current_version": "Version actuelle",
|
|
3648
|
+
"latest_version": "Dernière version",
|
|
3649
|
+
"checking": "Vérification des mises à jour...",
|
|
3650
|
+
"up_to_date": "Vous utilisez la dernière version !",
|
|
3651
|
+
"check_failed": "Échec de la vérification des mises à jour",
|
|
3652
|
+
"release_notes": "Nouveautés",
|
|
3653
|
+
"no_asset": "Aucun installateur disponible pour votre plateforme. Veuillez le télécharger manuellement.",
|
|
3654
|
+
"upgrade": "Mettre à jour",
|
|
3655
|
+
"retry": "Réessayer",
|
|
3656
|
+
"view_release": "Voir la version",
|
|
3657
|
+
"downloading": "Téléchargement en cours...",
|
|
3658
|
+
"download_failed": "Échec du téléchargement",
|
|
3659
|
+
"install_launched": "L'installateur a été lancé. Moraya va bientôt se fermer.",
|
|
3660
|
+
"new_version_available": "Nouvelle version disponible ! Cliquez pour mettre à jour."
|
|
3661
|
+
},
|
|
3662
|
+
"voice": {
|
|
3663
|
+
"__mt": true,
|
|
3664
|
+
"title": "Voice Capture",
|
|
3665
|
+
"provider": "Provider",
|
|
3666
|
+
"language": "Language",
|
|
3667
|
+
"doubao": "Doubao (Realtime)",
|
|
3668
|
+
"start": "Record",
|
|
3669
|
+
"stop": "Stop",
|
|
3670
|
+
"processing": "Processing...",
|
|
3671
|
+
"transcript": "Transcript",
|
|
3672
|
+
"words": "words",
|
|
3673
|
+
"structurize": "AI Structurize",
|
|
3674
|
+
"view_history": "View History",
|
|
3675
|
+
"untitled": "Untitled",
|
|
3676
|
+
"key_points": "Key Points",
|
|
3677
|
+
"action_items": "Action Items",
|
|
3678
|
+
"save_note": "Save Note",
|
|
3679
|
+
"discard": "Discard",
|
|
3680
|
+
"quota_exceeded": "Monthly voice quota exceeded. Upgrade or wait until next month.",
|
|
3681
|
+
"quota_near": "You are near your monthly voice limit.",
|
|
3682
|
+
"history": {
|
|
3683
|
+
"title": "Voice History",
|
|
3684
|
+
"new_capture": "+ New Recording",
|
|
3685
|
+
"search_placeholder": "Search transcripts...",
|
|
3686
|
+
"no_results": "No transcripts match your search.",
|
|
3687
|
+
"empty": "No recordings yet. Start capturing your voice!",
|
|
3688
|
+
"reprocess": "Re-process",
|
|
3689
|
+
"delete": "Delete"
|
|
3690
|
+
}
|
|
3691
|
+
},
|
|
3692
|
+
"welcome": {
|
|
3693
|
+
"title": "Bienvenue dans Moraya",
|
|
3694
|
+
"subtitle": "Un éditeur Markdown minimal, prêt pour l'IA.",
|
|
3695
|
+
"features_title": "Fonctionnalités",
|
|
3696
|
+
"feature_wysiwyg": "Édition Markdown **WYSIWYG**",
|
|
3697
|
+
"feature_math": "Support des formules mathématiques : $E = mc^2$",
|
|
3698
|
+
"feature_themes": "Thèmes clair et sombre",
|
|
3699
|
+
"feature_ai": "Assistant d'écriture propulsé par l'IA",
|
|
3700
|
+
"feature_mcp": "Protocole MCP pour la publication et la synchronisation",
|
|
3701
|
+
"feature_lightweight": "Léger (~5 Mo d'installateur)",
|
|
3702
|
+
"math_title": "Exemple mathématique",
|
|
3703
|
+
"code_title": "Exemple de code",
|
|
3704
|
+
"table_title": "Exemple de tableau",
|
|
3705
|
+
"table_feature": "Fonctionnalité",
|
|
3706
|
+
"table_status": "Statut",
|
|
3707
|
+
"table_done": "Terminé",
|
|
3708
|
+
"start_writing": "Commencez à écrire vos idées ici...",
|
|
3709
|
+
"tip": "**Astuce :** Appuyez sur `Cmd+I` pour afficher/masquer le panneau de l'assistant IA.",
|
|
3710
|
+
"shortcuts_title": "Raccourcis clavier",
|
|
3711
|
+
"shortcut_save": "`Cmd+S` — Enregistrer le document",
|
|
3712
|
+
"shortcut_open": "`Cmd+O` — Ouvrir un fichier",
|
|
3713
|
+
"shortcut_new": "`Cmd+N` — Nouveau document",
|
|
3714
|
+
"shortcut_toggle_mode": "`Cmd+/` — Basculer le mode Visuel/Source",
|
|
3715
|
+
"shortcut_split_mode": "`Cmd+Shift+/` — Basculer le mode Divisé",
|
|
3716
|
+
"shortcut_sidebar": "`Cmd+\\` — Afficher/Masquer la barre latérale",
|
|
3717
|
+
"shortcut_settings": "`Cmd+,` — Ouvrir les paramètres",
|
|
3718
|
+
"shortcut_ai": "`Cmd+Shift+I` — Afficher/Masquer le panneau IA",
|
|
3719
|
+
"shortcut_export": "`Cmd+Shift+E` — Exporter en HTML",
|
|
3720
|
+
"blockquote_title": "Exemple de citation",
|
|
3721
|
+
"blockquote_content": "L'art d'écrire est l'art de découvrir ce que l'on croit. — Gustave Flaubert",
|
|
3722
|
+
"advanced_math_title": "Mathématiques avancées",
|
|
3723
|
+
"list_title": "Exemple de liste imbriquée",
|
|
3724
|
+
"list_item1": "Premiers pas",
|
|
3725
|
+
"list_item1a": "Installer l'application",
|
|
3726
|
+
"list_item1b": "Configurer vos préférences",
|
|
3727
|
+
"list_item1c": "Commencer à écrire",
|
|
3728
|
+
"list_item2": "Fonctionnalités avancées",
|
|
3729
|
+
"list_item2a": "Assistance à l'écriture propulsée par l'IA",
|
|
3730
|
+
"list_item2b": "Intégration du protocole MCP",
|
|
3731
|
+
"list_item2c": "Multiples formats d'export",
|
|
3732
|
+
"list_item3": "Personnalisation",
|
|
3733
|
+
"list_item3a": "Thèmes et apparence",
|
|
3734
|
+
"list_item3b": "Paramètres de l'éditeur",
|
|
3735
|
+
"list_item3c": "Raccourcis clavier",
|
|
3736
|
+
"paragraph_title": "À propos de Moraya",
|
|
3737
|
+
"paragraph1": "Moraya est un éditeur Markdown moderne et léger construit avec Rust et Tauri. Il combine la simplicité d'un éditeur de texte avec la puissance d'une interface WYSIWYG, offrant le meilleur des deux mondes.",
|
|
3738
|
+
"paragraph2": "Le nom « Moraya » est la combinaison de « mora » (latin pour « un instant ») et « ya » (chinois pour « élégance »), symbolisant des instants d'écriture élégants.",
|
|
3739
|
+
"paragraph3": "Que vous rédigiez de la documentation technique, des articles de blog, des travaux académiques ou des notes personnelles, Moraya offre un environnement sans distraction qui vous permet de vous concentrer sur l'essentiel — votre contenu.",
|
|
3740
|
+
"hr_title": "Lignes horizontales",
|
|
3741
|
+
"hr_description": "Vous pouvez utiliser des lignes horizontales pour séparer les différentes sections de votre document :"
|
|
3742
|
+
},
|
|
3743
|
+
"workflow": {
|
|
3744
|
+
"title": "Workflow IA",
|
|
3745
|
+
"seo_step": "Optimisation SEO",
|
|
3746
|
+
"image_gen_step": "Images IA",
|
|
3747
|
+
"publish_step": "Publication",
|
|
3748
|
+
"publish_desc": "Publier vers les plateformes cibles",
|
|
3749
|
+
"optional_above": "Les étapes ci-dessus sont facultatives",
|
|
3750
|
+
"select_targets": "Sélectionner les cibles de publication",
|
|
3751
|
+
"confirm_publish": "Publier",
|
|
3752
|
+
"publishing": "Publication en cours...",
|
|
3753
|
+
"publish_success": "Publié avec succès !",
|
|
3754
|
+
"publish_failed": "Échec de la publication",
|
|
3755
|
+
"mcp_entry": "IA MCP",
|
|
3756
|
+
"mcp_server_count": "services connectés",
|
|
3757
|
+
"mcp_tool_count": "outils",
|
|
3758
|
+
"list": {
|
|
3759
|
+
"title": "Workflows",
|
|
3760
|
+
"new_workflow": "New Workflow",
|
|
3761
|
+
"empty_state": "Automate your notes with AI workflows",
|
|
3762
|
+
"no_workflows": "No workflows yet",
|
|
3763
|
+
"run_now": "Run Now",
|
|
3764
|
+
"last_run": "Last run",
|
|
3765
|
+
"never_run": "Never run",
|
|
3766
|
+
"enable": "Enable",
|
|
3767
|
+
"disable": "Disable",
|
|
3768
|
+
"delete": "Delete",
|
|
3769
|
+
"confirm_delete": "Delete this workflow?",
|
|
3770
|
+
"locked_custom": "Custom workflows require Personal plan or above"
|
|
3771
|
+
},
|
|
3772
|
+
"trigger": {
|
|
3773
|
+
"cron": "Scheduled",
|
|
3774
|
+
"manual": "Manual",
|
|
3775
|
+
"note_event": "Note Event",
|
|
3776
|
+
"webhook": "Webhook"
|
|
3777
|
+
},
|
|
3778
|
+
"status": {
|
|
3779
|
+
"running": "Running",
|
|
3780
|
+
"completed": "Completed",
|
|
3781
|
+
"failed": "Failed",
|
|
3782
|
+
"paused": "Paused",
|
|
3783
|
+
"cancelled": "Cancelled",
|
|
3784
|
+
"enabled": "Enabled",
|
|
3785
|
+
"disabled": "Disabled"
|
|
3786
|
+
},
|
|
3787
|
+
"edit": {
|
|
3788
|
+
"title_new": "New Workflow",
|
|
3789
|
+
"title_edit": "Edit Workflow",
|
|
3790
|
+
"save": "Save",
|
|
3791
|
+
"run": "Run",
|
|
3792
|
+
"cancel": "Cancel",
|
|
3793
|
+
"yaml_label": "Workflow YAML",
|
|
3794
|
+
"yaml_placeholder": "Enter workflow YAML...",
|
|
3795
|
+
"nodes_label": "Nodes",
|
|
3796
|
+
"valid": "Valid",
|
|
3797
|
+
"invalid": "Invalid",
|
|
3798
|
+
"engine_client": "Client Engine",
|
|
3799
|
+
"engine_server": "Server Engine (KMS required)",
|
|
3800
|
+
"unsaved_changes": "You have unsaved changes"
|
|
3801
|
+
},
|
|
3802
|
+
"history": {
|
|
3803
|
+
"title": "Execution History",
|
|
3804
|
+
"no_runs": "No runs yet",
|
|
3805
|
+
"trigger": "Trigger",
|
|
3806
|
+
"started": "Started",
|
|
3807
|
+
"duration": "Duration",
|
|
3808
|
+
"status": "Status",
|
|
3809
|
+
"workflow": "Workflow",
|
|
3810
|
+
"node_results": "Node Results",
|
|
3811
|
+
"node_id": "Node",
|
|
3812
|
+
"error_detail": "Error"
|
|
3813
|
+
},
|
|
3814
|
+
"market": {
|
|
3815
|
+
"title": "Workflow Templates",
|
|
3816
|
+
"templates": "Built-in Templates",
|
|
3817
|
+
"use_template": "Use Template",
|
|
3818
|
+
"export": "Export Workflow",
|
|
3819
|
+
"export_select": "Select workflow to export",
|
|
3820
|
+
"import": "Import Workflow",
|
|
3821
|
+
"import_placeholder": "Paste workflow YAML here...",
|
|
3822
|
+
"import_btn": "Import",
|
|
3823
|
+
"import_success": "Workflow imported successfully",
|
|
3824
|
+
"import_error": "Invalid workflow YAML",
|
|
3825
|
+
"search_placeholder": "Search templates..."
|
|
3826
|
+
},
|
|
3827
|
+
"templates": {
|
|
3828
|
+
"daily_summary": {
|
|
3829
|
+
"name": "Daily Summary",
|
|
3830
|
+
"description": "Automatically summarize your notes every evening"
|
|
3831
|
+
},
|
|
3832
|
+
"note_translation": {
|
|
3833
|
+
"name": "Note Translation",
|
|
3834
|
+
"description": "Translate notes to another language on demand"
|
|
3835
|
+
},
|
|
3836
|
+
"auto_tagging": {
|
|
3837
|
+
"name": "Auto Tagging",
|
|
3838
|
+
"description": "Automatically tag newly created notes with AI"
|
|
3839
|
+
},
|
|
3840
|
+
"weekly_review": {
|
|
3841
|
+
"name": "Weekly Review",
|
|
3842
|
+
"description": "Generate a weekly reflection every Sunday evening"
|
|
3843
|
+
},
|
|
3844
|
+
"knowledge_graph": {
|
|
3845
|
+
"name": "Knowledge Graph",
|
|
3846
|
+
"description": "Extract entities and relationships from all notes"
|
|
3847
|
+
}
|
|
3848
|
+
},
|
|
3849
|
+
"nodes": {
|
|
3850
|
+
"ai_call": "AI Call",
|
|
3851
|
+
"rag_search": "RAG Search",
|
|
3852
|
+
"transform": "Transform",
|
|
3853
|
+
"if": "Condition",
|
|
3854
|
+
"notes_write": "Write Note",
|
|
3855
|
+
"notify": "Notify",
|
|
3856
|
+
"tool_call": "Tool Call"
|
|
3857
|
+
},
|
|
3858
|
+
"quota": {
|
|
3859
|
+
"exceeded": "Workflow quota exceeded",
|
|
3860
|
+
"daily_limit": "Daily run limit reached",
|
|
3861
|
+
"ai_quota": "AI call quota exceeded"
|
|
3862
|
+
},
|
|
3863
|
+
"safety": {
|
|
3864
|
+
"write_permission_title": "Allow Workflow to Write Notes?",
|
|
3865
|
+
"write_permission_body": "Workflow \"{{ name }}\" wants to create or modify notes.",
|
|
3866
|
+
"allow_once": "Allow Once",
|
|
3867
|
+
"allow_always": "Always Allow",
|
|
3868
|
+
"deny": "Deny"
|
|
3869
|
+
}
|
|
3870
|
+
}
|
|
3871
|
+
}
|