@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.
@@ -0,0 +1,3873 @@
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": "MORAYA.md ルール有効({count} セクション)",
63
+ "clear_chat": "チャットをクリア",
64
+ "unconfigured": "AI が設定されていません。",
65
+ "unconfigured_hint": "設定({shortcut})を開いて API キーを構成し、AI 機能を有効にしてください。",
66
+ "open_settings": "AI 設定を開く",
67
+ "open_image_settings": "AIGC 設定を開く",
68
+ "text_ai_label": "テキスト AI(プロンプト生成)",
69
+ "image_ai_label": "画像 AI(画像生成)",
70
+ "welcome_title": "何かお手伝いできますか?",
71
+ "welcome_hint": "メッセージを入力するか、{kbd} でコマンドを使用",
72
+ "you": "あなた",
73
+ "assistant": "AI",
74
+ "typing": "入力中...",
75
+ "placeholder": "AI に何でも聞いてください...",
76
+ "placeholder_selection": "選択範囲について質問...",
77
+ "send": "送信(⌘↵)",
78
+ "stop": "停止(Esc)",
79
+ "retry": "再試行",
80
+ "interrupted": "中断されました",
81
+ "insert_to_editor": "エディターに挿入",
82
+ "replace_selection": "選択範囲を置換",
83
+ "attach_image": "画像を添付",
84
+ "attach_image_max": "最大 {max} 枚の画像",
85
+ "remove_image": "画像を削除",
86
+ "close_preview": "プレビューを閉じる",
87
+ "more_actions": "その他の操作",
88
+ "voice_transcription": "AI 音声文字起こし",
89
+ "config": {
90
+ "title": "AI 設定",
91
+ "provider": "プロバイダー",
92
+ "api_key": "API キー",
93
+ "api_key_placeholder": "{provider} の API キーを入力",
94
+ "api_key_not_required": "Ollama では不要です",
95
+ "base_url": "ベース URL",
96
+ "model": "モデル",
97
+ "model_placeholder": "モデル名を入力",
98
+ "max_tokens": "最大トークン数",
99
+ "temperature": "Temperature",
100
+ "test_connection": "接続テスト",
101
+ "testing": "テスト中...",
102
+ "connected": "接続済み!",
103
+ "failed": "失敗",
104
+ "test_failed": "接続テストに失敗しました"
105
+ },
106
+ "providers": {
107
+ "claude": "Anthropic Claude",
108
+ "openai": "OpenAI",
109
+ "gemini": "Google Gemini",
110
+ "deepseek": "DeepSeek",
111
+ "ollama": "Ollama(ローカル)",
112
+ "custom": "カスタム API",
113
+ "grok": "xAI Grok",
114
+ "mistral": "Mistral AI",
115
+ "glm": "智譜 GLM",
116
+ "minimax": "MiniMax",
117
+ "doubao": "豆包(ByteDance)"
118
+ },
119
+ "multi_model": {
120
+ "add_model": "+ モデルを追加",
121
+ "default": "デフォルト",
122
+ "set_default": "デフォルトに設定",
123
+ "no_models": "AI モデルが設定されていません",
124
+ "no_models_hint": "AI 機能を使用するには、AI モデルを追加してください。",
125
+ "no_image_models": "画像モデルが設定されていません",
126
+ "no_image_models_hint": "AI 画像機能を使用するには、画像生成モデルを追加してください。"
127
+ },
128
+ "image_config": {
129
+ "title": "画像生成 AI",
130
+ "provider": "プロバイダー",
131
+ "provider_openai": "OpenAI DALL-E",
132
+ "provider_grok": "Grok(xAI)",
133
+ "provider_custom": "カスタム(OpenAI 互換)",
134
+ "api_key": "API キー",
135
+ "api_key_placeholder": "画像 API キーを入力",
136
+ "base_url": "ベース URL",
137
+ "model": "モデル",
138
+ "model_placeholder": "モデル名を入力",
139
+ "default_size": "デフォルトサイズ",
140
+ "ratio": "アスペクト比",
141
+ "size_level": "サイズ",
142
+ "size_large": "大",
143
+ "size_medium": "中",
144
+ "size_small": "小",
145
+ "provider_gemini": "Google Gemini Imagen",
146
+ "provider_qwen": "Qwen(Alibaba)",
147
+ "provider_doubao": "豆包(ByteDance)"
148
+ },
149
+ "commands": {
150
+ "write": "執筆",
151
+ "write_desc": "プロンプトに基づいてコンテンツを作成します",
152
+ "continue": "続きを書く",
153
+ "continue_desc": "テキストの続きから書きます",
154
+ "summarize": "要約",
155
+ "summarize_desc": "選択したテキストを要約します",
156
+ "translate": "翻訳",
157
+ "translate_desc": "テキストを別の言語に翻訳します",
158
+ "improve": "改善",
159
+ "improve_desc": "文章の品質を向上させます",
160
+ "fix_grammar": "文法修正",
161
+ "fix_grammar_desc": "文法とスペルのエラーを修正します",
162
+ "simplify": "簡素化",
163
+ "simplify_desc": "複雑なテキストを簡潔にします",
164
+ "expand": "拡張",
165
+ "expand_desc": "トピックをさらに詳しく展開します",
166
+ "outline": "アウトライン生成",
167
+ "outline_desc": "記事のアウトラインを生成します",
168
+ "explain": "説明",
169
+ "explain_desc": "選択したテキストを説明します"
170
+ },
171
+ "prompts": {
172
+ "empty_response": "空の応答が返されました。タスクを続行してください:必要なツール呼び出しを行うか、完了した内容と残りの項目をまとめてください。空のメッセージを返さないでください。",
173
+ "empty_response_continue": "\n\nあなたの最後のメッセージは:「{lastMessage}」\nそこから続けてください。",
174
+ "truncation_continue": "前の応答は出力長の制限により途中で切れました。上記のテキストは保存されています。必要なツール呼び出しを行ってタスクを完了してください。内容を繰り返さず、ツール引数で直接使用してください。",
175
+ "continuation_prompt": "続行して、タスクを完了するために必要なツール呼び出しを行ってください。すでに述べた内容は繰り返さず、直接ツール呼び出しに進んでください。",
176
+ "mcp_tool_prompt": "{toolName} ツール({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": "私は|私が|まず|次に|これから|それでは|今から|最初に",
187
+ "action_verbs": "作成|書き込み|読み取り|更新|アップロード|生成|取得|呼び出し|確認|検証|テスト|調査|使用|適用|実行|公開|送信|投稿|提出|検索|参照|発見|探索|ダウンロード|開く|アクセス|接続|設定|構成|変更|編集|削除|除去|保存|格納|エクスポート|分析|処理|変換|一覧|表示|ヘルプ",
188
+ "continuation_phrases": "まず|次に|続いて|それから",
189
+ "remaining_phrases": "残り|次の|ステップ\\d+",
190
+ "unfinished_phrases": "まだ|未完了|保留中|次のステップ|TODO"
191
+ },
192
+ "sections": {
193
+ "image_ai": "画像 AI",
194
+ "image_aihint": "AI 画像生成モデルの設定。"
195
+ },
196
+ "generating": "生成中…",
197
+ "not_configured": "AI プロバイダーが未設定です"
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": "クラウド画像を挿入",
354
+ "title_audio": "クラウド音声を挿入",
355
+ "title_video": "クラウド動画を挿入",
356
+ "no_targets": "Picora ターゲットが設定されていません。設定 → ナレッジベースで追加してください。",
357
+ "scope_this_kb": "このナレッジベース",
358
+ "scope_all": "すべてのファイル",
359
+ "scope_no_kb": "ナレッジベースなし",
360
+ "tab_recent": "最近",
361
+ "tab_all": "すべて",
362
+ "tab_favorites": "お気に入り",
363
+ "search_placeholder": "検索…",
364
+ "grid_view": "グリッド表示",
365
+ "list_view": "リスト表示",
366
+ "error_title": "読み込み失敗",
367
+ "last_cache": "最終読み込み",
368
+ "empty_title": "ファイルが見つかりません",
369
+ "empty_sub": "フィルターを調整するか、Picora にファイルをアップロードしてください。",
370
+ "loading_more": "読み込み中…",
371
+ "selected_count": "{n} 件選択中",
372
+ "insert_as_html": "HTML として挿入",
373
+ "insert_btn": "挿入",
374
+ "processing": "処理中",
375
+ "public": "公開",
376
+ "private": "非公開",
377
+ "favorite": "お気に入り",
378
+ "copy_url": "URL をコピー",
379
+ "privacy_title": "非公開ファイルが選択されています",
380
+ "privacy_desc": "{n} 件のファイルが非公開で、公開されない場合があります。",
381
+ "privacy_warn": "公開にすると、リンクを持つ誰でも閲覧できるようになります。",
382
+ "suppress_privacy": "今後警告しない",
383
+ "make_public_insert": "公開にして挿入",
384
+ "insert_anyway": "そのまま挿入",
385
+ "copy_markdown": "Markdown をコピー",
386
+ "empty_kb_scoped_sub": "現在の KB にファイルがありません。以前のアップロードはこの KB にタグ付けされていない可能性があります。",
387
+ "switch_scope_all": "アカウント全体のファイルを表示",
388
+ "url_missing": "メディア URL がありません — アイテムはまだ準備できていない可能性があります。"
389
+ },
390
+ "command_palette": {
391
+ "placeholder": "ファイル、コマンド、ナレッジベースを検索...",
392
+ "files": "ファイル",
393
+ "commands": "コマンド",
394
+ "semantic_search": "セマンティック検索",
395
+ "keyword_search": "キーワード検索",
396
+ "no_results": "結果が見つかりません"
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": "保存",
414
+ "cancel": "キャンセル",
415
+ "close": "閉じる",
416
+ "add": "追加",
417
+ "remove": "削除",
418
+ "connect": "接続",
419
+ "disconnect": "切断",
420
+ "insert": "挿入",
421
+ "replace": "置換",
422
+ "copy": "コピー",
423
+ "edit": "編集",
424
+ "delete": "削除",
425
+ "browse": "変更",
426
+ "clear": "リセット",
427
+ "play": "再生",
428
+ "stop": "停止",
429
+ "start": "起動",
430
+ "untitled": "無題",
431
+ "retry": "再試行",
432
+ "refresh": "更新",
433
+ "new": "新規"
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": "切り取り",
525
+ "copy": "コピー",
526
+ "paste": "貼り付け",
527
+ "upload_all_images": "すべての画像を画像ホストにアップロード",
528
+ "upload_starting": "画像をホストにアップロード中...",
529
+ "upload_image_success": "アップロード成功:{name}",
530
+ "upload_image_failed": "アップロード失敗:{name} — {error}",
531
+ "upload_all_complete": "アップロード完了:{success}/{total} 件成功",
532
+ "upload_no_config": "先に設定で画像ホストを設定してください",
533
+ "insert_cloud_image": "クラウド画像を挿入…",
534
+ "insert_cloud_audio": "クラウド音声を挿入…",
535
+ "insert_cloud_video": "クラウド動画を挿入…"
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": "未保存の変更",
553
+ "unsaved_new_doc_msg": "未保存の内容があります。先に保存しますか?",
554
+ "save_first": "保存",
555
+ "discard_changes": "保存しない",
556
+ "loading": {
557
+ "parsing": "Markdown を解析中…",
558
+ "rendering": "レンダリング中…"
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": "AI が設定されていません。",
693
+ "ai_request_failed": "AI リクエストに失敗しました",
694
+ "chat_request_failed": "チャットリクエストに失敗しました",
695
+ "unknown_command": "不明な AI コマンド: {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": "{format} としてエクスポート",
748
+ "pdf": "PDF",
749
+ "html": "HTML(スタイル付き)",
750
+ "html_plain": "HTML(スタイルなし)",
751
+ "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": "準備中…",
762
+ "rendering": "レンダリング中…",
763
+ "paginating": "ページ分割中({current}/{total})",
764
+ "writing": "書き込み中…",
765
+ "done": "完了"
766
+ },
767
+ "fallback": {
768
+ "notice": "互換モード"
769
+ },
770
+ "error": {
771
+ "generic": "エクスポート失敗",
772
+ "timeout": "エクスポートのタイムアウト",
773
+ "subprocess_failed": "サブプロセスが失敗",
774
+ "native_api_failed": "ネイティブ印刷が失敗"
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": "Git リポジトリをリンク",
813
+ "repo_url": "リポジトリ URL",
814
+ "branch": "ブランチ",
815
+ "token": "パーソナルアクセストークン",
816
+ "token_hint": "個人アクセストークンまたは API キー。OS キーチェーンに安全に保存されます。",
817
+ "auth_method": "認証方式",
818
+ "auth_token": "アクセストークン",
819
+ "auth_password": "ユーザー名&パスワード",
820
+ "auth_ssh": "SSH キー",
821
+ "username": "ユーザー名",
822
+ "password": "パスワード",
823
+ "ssh_key_path": "SSH 秘密鍵のパス",
824
+ "ssh_passphrase": "SSH パスフレーズ",
825
+ "ssh_key_path_hint": "SSH 秘密鍵ファイルの絶対パス (例: ~/.ssh/id_ed25519)",
826
+ "ssh_passphrase_hint": "パスフレーズがない場合は空欄",
827
+ "error_username_required": "ユーザー名は必須です",
828
+ "error_password_required": "パスワードは必須です",
829
+ "error_ssh_key_required": "SSH キーのパスは必須です",
830
+ "mode_clone": "ローカルにクローン",
831
+ "mode_push": "ローカルコンテンツをリモートにプッシュ",
832
+ "mode_connect": "既存のリポジトリに接続",
833
+ "detecting": "検出中...",
834
+ "auto_commit": "保存時に自動コミット",
835
+ "auto_sync": "バックグラウンド自動同期",
836
+ "sync_interval": "同期間隔",
837
+ "minutes": "分",
838
+ "confirm_bind": "リポジトリをリンク",
839
+ "error_url_required": "リポジトリ URL を入力してください",
840
+ "error_token_required": "アクセストークンを入力してください",
841
+ "bind": "Git リポジトリをリンク",
842
+ "unbind": "Git リンクを解除",
843
+ "unbind_title": "Git リポジトリのリンクを解除",
844
+ "unbind_confirm": "「{name}」の Git リポジトリのリンクを解除しますか?ローカルファイルは保持されます。",
845
+ "synced": "同期済み",
846
+ "ahead": "プッシュ待ち",
847
+ "behind": "プル待ち",
848
+ "syncing": "同期中...",
849
+ "committing": "コミット中...",
850
+ "sync_error": "同期に失敗",
851
+ "sync_now": "今すぐ同期",
852
+ "not_installed": "Git 未インストール"
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": "画像を挿入",
907
+ "url_tab": "URL",
908
+ "file_tab": "ローカルファイル",
909
+ "url_placeholder": "https://example.com/image.png",
910
+ "alt_placeholder": "画像の説明(任意)",
911
+ "select_file": "画像を選択...",
912
+ "no_file_selected": "ファイルが選択されていません",
913
+ "insert": "挿入",
914
+ "cancel": "キャンセル"
915
+ },
916
+ "image_gen": {
917
+ "title": "AI 画像生成",
918
+ "step1_title": "画像モード",
919
+ "step2_title": "画像を生成",
920
+ "step3_title": "記事に挿入",
921
+ "generating_prompts": "プロンプトを生成中...",
922
+ "content_too_short": "記事の内容が画像生成には短すぎます。",
923
+ "style_label": "スタイル",
924
+ "count_label": "枚数",
925
+ "style_auto": "自動",
926
+ "style_photo": "写真",
927
+ "style_illustration": "イラスト",
928
+ "style_flat": "フラット",
929
+ "style_ink": "水墨画",
930
+ "style_watercolor": "水彩画",
931
+ "style_isometric": "アイソメトリック",
932
+ "style_infographic": "インフォグラフィック",
933
+ "style_editorial": "エディトリアル",
934
+ "style_cartoon": "カートゥーン",
935
+ "style_render": "3D レンダー",
936
+ "style_sketch": "スケッチ",
937
+ "style_blueprint": "設計図",
938
+ "style_clay": "クレイモデル",
939
+ "style_wireframe": "ワイヤーフレーム",
940
+ "style_exploded": "分解図",
941
+ "style_section": "断面図",
942
+ "style_cad": "CAD 図面",
943
+ "style_prototype": "プロトタイプ",
944
+ "style_anime": "アニメ",
945
+ "style_comic": "コミック",
946
+ "style_cinematic": "シネマティック",
947
+ "style_pixel": "ピクセルアート",
948
+ "style_noir": "フィルムノワール",
949
+ "style_manga": "マンガ",
950
+ "style_realistic": "リアリスティック",
951
+ "style_studio": "スタジオ",
952
+ "style_lifestyle": "ライフスタイル",
953
+ "style_flatlay": "フラットレイ",
954
+ "style_macro": "マクロ",
955
+ "style_minimalist": "ミニマリスト",
956
+ "style_packaging": "パッケージング",
957
+ "style_outdoor": "アウトドア",
958
+ "style_mood": "ムード",
959
+ "style_abstract": "アブストラクト",
960
+ "style_texture": "テクスチャ",
961
+ "style_gradient": "グラデーション",
962
+ "style_collage": "コラージュ",
963
+ "style_vintage": "ヴィンテージ",
964
+ "style_botanical": "ボタニカル",
965
+ "style_geometric": "ジオメトリック",
966
+ "style_ethereal": "エシリアル",
967
+ "style_brutalist": "ブルータリスト",
968
+ "generate": "生成",
969
+ "next": "次へ",
970
+ "back": "戻る",
971
+ "insert_confirm": "挿入",
972
+ "insert_paragraph": "対応する段落の後に挿入(推奨)",
973
+ "insert_end": "記事の末尾に挿入",
974
+ "insert_replace": "記事内の画像を置換",
975
+ "insert_clipboard": "Markdown をクリップボードにコピー",
976
+ "selected": "{count} 件選択中",
977
+ "completed": "画像生成完了",
978
+ "step_description": "記事のイラストを生成",
979
+ "mode_article": "記事",
980
+ "mode_design": "デザイン",
981
+ "mode_storyboard": "ストーリーボード",
982
+ "mode_product": "プロダクト",
983
+ "mode_moodboard": "ムードボード",
984
+ "mode_portrait": "ポートレート",
985
+ "style_portrait": "ポートレート",
986
+ "style_headshot": "ヘッドショット",
987
+ "style_fullbody": "全身",
988
+ "style_fashion": "ファッション",
989
+ "style_street": "ストリート",
990
+ "style_glamour": "グラマー",
991
+ "style_environmental": "環境ポートレート",
992
+ "style_candid": "キャンディッド",
993
+ "style_group": "グループ",
994
+ "pre_defined_detected": "ドキュメント内に {count} 件の定義済みプロンプトを検出しました",
995
+ "use_predefined": "定義済みプロンプトを使用"
996
+ },
997
+ "image_host": {
998
+ "title": "画像ホスティング",
999
+ "provider": "プロバイダー",
1000
+ "smms": "SM.MS",
1001
+ "imgur": "Imgur",
1002
+ "github": "GitHub リポジトリ",
1003
+ "custom": "カスタム API",
1004
+ "api_token": "API トークン",
1005
+ "api_token_placeholder": "API トークンを入力",
1006
+ "custom_endpoint": "アップロードエンドポイント",
1007
+ "custom_endpoint_placeholder": "https://your-api.com/upload",
1008
+ "custom_headers": "カスタムヘッダー(JSON)",
1009
+ "custom_url_template": "結果 URL テンプレート",
1010
+ "custom_url_template_placeholder": "https://example.com/i/{id}",
1011
+ "custom_url_template_hint": "プレースホルダー: {id}、{storageKey}、{filename}、{url}。空欄の場合、レスポンスの URL フィールドを自動検出します。",
1012
+ "github_repo_url": "リポジトリ URL",
1013
+ "github_repo_url_placeholder": "https://github.com/user/images",
1014
+ "github_branch": "ブランチ",
1015
+ "github_dir": "画像ディレクトリ",
1016
+ "github_token": "パーソナルアクセストークン",
1017
+ "github_token_placeholder": "ghp_xxxxxxxxxxxx",
1018
+ "github_cdn": "URL 形式",
1019
+ "github_cdn_raw": "raw.githubusercontent.com",
1020
+ "github_cdn_jsdelivr": "jsDelivr CDN",
1021
+ "import_from_publish": "公開ターゲットからインポート",
1022
+ "auto_upload": "ペースト/ドロップ時に画像を自動アップロード",
1023
+ "test_upload": "テストアップロード",
1024
+ "test": "テスト",
1025
+ "testing": "テスト中...",
1026
+ "success": "アップロード成功!",
1027
+ "failed": "アップロード失敗",
1028
+ "add_target": "画像ホストを追加",
1029
+ "target_name": "名前",
1030
+ "target_name_placeholder": "例:マイブログ CDN",
1031
+ "settings_empty": "画像ホスティングターゲットが設定されていません",
1032
+ "settings_hint": "自動アップロードを有効にするには、画像ホスティングサービスを追加してください。",
1033
+ "default": "デフォルト",
1034
+ "set_default": "デフォルトに設定",
1035
+ "gitlab": "GitLab リポジトリ",
1036
+ "git_custom": "カスタム Git(Gitea/Forgejo)",
1037
+ "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": "API ホスティング",
1043
+ "group_git": "Git リポジトリ",
1044
+ "group_oss": "オブジェクトストレージ",
1045
+ "gitlab_repo_url": "リポジトリ URL",
1046
+ "gitlab_branch": "ブランチ",
1047
+ "gitlab_dir": "画像ディレクトリ",
1048
+ "gitlab_token": "パーソナルアクセストークン",
1049
+ "gitlab_token_placeholder": "glpat-xxxxxxxxxxxx",
1050
+ "git_custom_repo_url": "リポジトリ URL",
1051
+ "git_custom_branch": "ブランチ",
1052
+ "git_custom_dir": "画像ディレクトリ",
1053
+ "git_custom_token": "アクセストークン",
1054
+ "git_custom_token_placeholder": "トークンを入力",
1055
+ "oss_access_key": "アクセスキー",
1056
+ "oss_access_key_placeholder": "アクセスキー ID を入力",
1057
+ "oss_secret_key": "シークレットキー",
1058
+ "oss_secret_key_placeholder": "シークレットキーを入力",
1059
+ "oss_bucket": "バケット",
1060
+ "oss_bucket_placeholder": "例:my-images-bucket",
1061
+ "oss_region": "リージョン",
1062
+ "oss_region_placeholder": "例:cn-east-1, us-east-1",
1063
+ "select_region": "リージョンを選択",
1064
+ "oss_endpoint": "カスタムエンドポイント(任意)",
1065
+ "oss_endpoint_placeholder": "例:https://s3.custom.com",
1066
+ "oss_cdn_domain": "CDN ドメイン(任意)",
1067
+ "oss_cdn_domain_placeholder": "例:https://cdn.example.com",
1068
+ "oss_path_prefix": "パスプレフィックス(任意)",
1069
+ "oss_path_prefix_placeholder": "例:images/blog/",
1070
+ "required": "必須",
1071
+ "qiniu_cdn_required": "Qiniuはアクセス可能な画像URLを生成するためにCDNドメインが必要です。",
1072
+ "picora": "Picora",
1073
+ "picora_one_click": "ワンクリックインポート",
1074
+ "picora_import_title": "Picora からインポート",
1075
+ "picora_import_hint": "Picora コンソールを開き、任意の API Key の横にある「Moraya にインポート」をクリックしてください。下に API Key を手入力することもできます。",
1076
+ "picora_open_console": "Picora コンソールを開く",
1077
+ "picora_manual_entry": "既に API Key がある — 手動入力",
1078
+ "picora_verifying": "Picora で検証中…",
1079
+ "picora_verify_failed": "検証に失敗しました。トークンを確認して再試行してください。",
1080
+ "picora_import_success": "Picora をインポートしました({email})",
1081
+ "picora_featured_badge": "おすすめ",
1082
+ "picora_api_url": "Picora エンドポイント",
1083
+ "picora_api_url_placeholder": "https://api.picora.me/v1/images",
1084
+ "picora_img_domain": "CDN ドメイン",
1085
+ "picora_img_domain_placeholder": "https://media.picora.me",
1086
+ "picora_api_key": "API Key",
1087
+ "picora_api_key_placeholder": "sk_live_...",
1088
+ "picora_user_email": "Picora アカウント",
1089
+ "picora_token_preview": "トークンプレビュー",
1090
+ "picora_confirm_import": "インポートを確認",
1091
+ "picora_import_invalid": "インポートリンクが無効です — Picora コンソールから再試行してください。",
1092
+ "picora_verify": "検証",
1093
+ "picora_hero_desc": "自社 SaaS 画像ホスト · 5 分でワンクリック設定",
1094
+ "other_providers": "その他のプロバイダー",
1095
+ "picora_api_key_keychain": "システムキーチェーンに保存済み · 新しいキーで上書き可能",
1096
+ "picora_key_migrated_toast": "{count} 個の Picora API キーをシステムキーチェーンに移行しました。"
1097
+ },
1098
+ "image_menu": {
1099
+ "resize": "リサイズ",
1100
+ "upload": "画像ホストにアップロード",
1101
+ "edit_alt": "説明を編集",
1102
+ "copy_url": "画像 URL をコピー",
1103
+ "copy_image": "画像をコピー",
1104
+ "open_in_browser": "ブラウザーで画像を開く",
1105
+ "save_as": "画像を名前を付けて保存...",
1106
+ "delete": "画像を削除",
1107
+ "original_size": "元のサイズ"
1108
+ },
1109
+ "kb": {
1110
+ "index_all": "全ドキュメントをインデックス",
1111
+ "index_file": "ファイルをインデックス",
1112
+ "indexing": "インデックス中...",
1113
+ "index_complete": "インデックス完了",
1114
+ "search_placeholder": "ナレッジベースを検索...",
1115
+ "no_index": "インデックスが見つかりません。ナレッジベースを右クリックしてインデックスを作成してください。",
1116
+ "stale_index": "インデックスが古くなっています。前回のインデックス以降、{count} 件のファイルが変更されました。",
1117
+ "dimensions": "次元数",
1118
+ "auto_index": "保存時に自動インデックス",
1119
+ "provider": "Embedding プロバイダー",
1120
+ "model": "Embedding モデル",
1121
+ "delete_index": "インデックスを削除",
1122
+ "reindex_all": "全て再インデックス",
1123
+ "delete_confirm": "インデックスを削除してもよろしいですか?",
1124
+ "use_same_as_ai": "AI チャットと同じ設定を使用",
1125
+ "online_model": "オンラインモデル",
1126
+ "dimension_warning": "このモデルの最大値: {max}。使用中: {actual}。",
1127
+ "status": {
1128
+ "indexed": "インデックス済み({chunks} チャンク、{files} ファイル)",
1129
+ "not_indexed": "未インデックス",
1130
+ "stale": "{count} 件のファイルが変更"
1131
+ },
1132
+ "progress": {
1133
+ "scanning": "ファイルをスキャン中...",
1134
+ "chunking": "ドキュメントを分割中... ({current}/{total})",
1135
+ "embedding": "埋め込みを生成中... ({current}/{total})",
1136
+ "indexing": "インデックスを構築中...",
1137
+ "done": "完了"
1138
+ },
1139
+ "provider_no_embedding": "現在のAIチャットプロバイダーはEmbeddingに対応していません。上でEmbeddingプロバイダーを選択してください。",
1140
+ "local_models": "ローカルモデル",
1141
+ "download_model": "ダウンロード",
1142
+ "delete_model": "モデルを削除",
1143
+ "select_local_model": "ダウンロード済みモデルを選択",
1144
+ "no_local_models": "モデルがダウンロードされていません。下でダウンロードしてください。",
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": "既存の KB をリンクする"
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": "同期エラー:"
1234
+ },
1235
+ "sync_now": "今すぐ同期",
1236
+ "error": {
1237
+ "target_missing": "Picora アカウントが見つかりません — この知識ベースを再バインドするか、設定でアカウントを復元してください。"
1238
+ },
1239
+ "trash": {
1240
+ "title": "ゴミ箱",
1241
+ "toast_deleted": "Picora が {count} 件のファイルを削除し、ゴミ箱に移動しました。",
1242
+ "view": "表示",
1243
+ "restore_all": "すべて復元",
1244
+ "restore_success": "{count} 件のファイルを復元しました。",
1245
+ "restore_failed": "一部のファイルを復元できませんでした。",
1246
+ "restore_conflict_title": "ファイルは既に存在します",
1247
+ "restore_conflict_body": "{path} は既に存在します。上書きしますか?",
1248
+ "overwrite": "上書き",
1249
+ "cancel": "キャンセル",
1250
+ "filter_kb_all": "すべてのKB",
1251
+ "filter_time7d": "過去 7 日間",
1252
+ "filter_time30d": "過去 30 日間",
1253
+ "filter_time_all": "すべての期間",
1254
+ "empty_state": "ゴミ箱は空です。",
1255
+ "loading": "読み込み中…",
1256
+ "restore": "復元",
1257
+ "delete_forever": "完全に削除",
1258
+ "delete_forever_confirm": "{path} を完全に削除しますか?この操作は元に戻せません。",
1259
+ "purge_all": "ゴミ箱を空にする",
1260
+ "purge_all_confirm": "{days} 日より古いすべての項目を削除しますか?",
1261
+ "purge_result": "{files} 件のファイルを削除し、{size} を解放しました。",
1262
+ "auto_purge_hint": "7 日以上経過した項目は自動的に削除されます。",
1263
+ "entry_deleted_at": "{date} に削除",
1264
+ "kb_unknown": "不明な KB"
1265
+ }
1266
+ },
1267
+ "knowledge_base": {
1268
+ "title": "ナレッジベース",
1269
+ "add": "ナレッジベースを追加",
1270
+ "remove": "削除",
1271
+ "rename": "名前を変更",
1272
+ "manage": "ナレッジベースを管理...",
1273
+ "empty": "ナレッジベースが設定されていません",
1274
+ "empty_hint": "フォルダーをナレッジベースとして追加すると、素早く切り替えられます。",
1275
+ "delete_confirm": "「{name}」をナレッジベースから削除しますか?フォルダー自体は削除されません。",
1276
+ "switch_to": "ナレッジベースを切り替え",
1277
+ "save_hint": "このフォルダーはナレッジベースに含まれていません。",
1278
+ "save_as_kb": "ナレッジベースとして保存"
1279
+ },
1280
+ "link": {
1281
+ "open": "リンクを開く",
1282
+ "remove": "リンクを削除"
1283
+ },
1284
+ "mcp": {
1285
+ "title": "MCP servers",
1286
+ "tabs": {
1287
+ "servers": "サーバー",
1288
+ "publish": "公開",
1289
+ "sync": "同期",
1290
+ "marketplace": "マーケット"
1291
+ },
1292
+ "ai_services": {
1293
+ "empty": "AI 作成のサービスはありません",
1294
+ "hint": "AI はチャット中に MCP サービスを作成できます。API との連携を依頼してみてください!",
1295
+ "node_required": "Node.js 18+ が必要です",
1296
+ "checking_node": "Node.js を確認中...",
1297
+ "temp": "一時",
1298
+ "saved": "保存済み",
1299
+ "view_code": "コード",
1300
+ "tools": "{count} ツール",
1301
+ "service_created": "AI がサービス「{name}」を作成しました({count} ツール)",
1302
+ "service_saved": "サービス「{name}」を保存しました",
1303
+ "service_removed": "サービス「{name}」を削除しました",
1304
+ "launch_confirm_title": "AI サービスセキュリティ警告",
1305
+ "launch_confirm_msg": "AI が自動生成コードを実行する MCP サービスを生成しました:\n サービス: {name}\n ツール: {tools}\n\nこのコードはローカルの Node.js プロセスで実行されます。\nこの AI 生成サービスコードを信頼できることを確認してください。",
1306
+ "launch_confirm_ok": "実行",
1307
+ "launch_confirm_cancel": "キャンセル"
1308
+ },
1309
+ "servers": {
1310
+ "empty": "MCP サーバーが設定されていません",
1311
+ "local_mcp": "ローカル MCP",
1312
+ "add_server": "サーバーを追加",
1313
+ "add_server_plus": "+ サーバーを追加",
1314
+ "connected": "接続済み",
1315
+ "disconnected": "切断済み",
1316
+ "server_name": "サーバー名",
1317
+ "server_url": "サーバー URL(例:http://localhost:3000/mcp)",
1318
+ "http": "HTTP",
1319
+ "sse": "SSE(Server-Sent Events)",
1320
+ "stdio": "stdio(ローカルプロセス)",
1321
+ "command": "コマンド",
1322
+ "command_placeholder": "コマンド(例:npx, node, python)",
1323
+ "args_placeholder": "引数(例:-y @modelcontextprotocol/server-filesystem /path)",
1324
+ "env_placeholder": "ENV_KEY=value(1行に1つ)",
1325
+ "presets": "リモート MCP",
1326
+ "presets_hint": "人気の MCP サーバーをワンクリックで追加",
1327
+ "preset_desc": {
1328
+ "filesystem": "ローカルファイルの読み取り、検索、管理",
1329
+ "fetch": "Web ページを取得して Markdown に変換",
1330
+ "git": "Git リポジトリの読み取りと検索",
1331
+ "memory": "AI メモリ用の永続ナレッジグラフ",
1332
+ "puppeteer": "ブラウザ自動化とウェブスクレイピング",
1333
+ "sqlite": "SQLiteデータベースのクエリと管理",
1334
+ "slack": "Slackチャンネルとメッセージの閲覧・検索",
1335
+ "google_maps": "ジオコーディング、ルート案内、場所検索",
1336
+ "sequential_thinking": "段階的推論と問題解決",
1337
+ "everything": "Everything によるWindowsファイル検索"
1338
+ },
1339
+ "preset_env_title": "環境変数",
1340
+ "preset_env_desc": {
1341
+ "slack_bot_token": "Slack Bot OAuth Token (xoxb-...)",
1342
+ "slack_team_id": "Slackチーム/ワークスペースID(任意)",
1343
+ "google_maps_api_key": "Google Maps APIキー"
1344
+ },
1345
+ "preset_add": "追加して接続",
1346
+ "form_mode": "フォーム",
1347
+ "json_mode": "JSON",
1348
+ "json_placeholder": "JSON 設定を貼り付けてください。例:\n{\n \"mcpServers\": {\n \"name\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \"@.../server-xxx\"]\n }\n }\n}",
1349
+ "json_no_config": "有効な MCP サーバー設定が見つかりません",
1350
+ "json_parse_error": "パースエラー",
1351
+ "launch_confirm_title": "セキュリティ警告",
1352
+ "launch_confirm_msg": "外部プログラムを起動しようとしています:\n コマンド: {command}\n 引数: {args}\n\nこの MCP サーバーはユーザー権限で実行され、ローカルファイルとネットワークにアクセスできます。\nこの MCP サーバーが信頼できるソースからのものであることを確認してください。",
1353
+ "launch_confirm_ok": "起動",
1354
+ "launch_confirm_cancel": "キャンセル",
1355
+ "auto_approve": "MCP 起動の自動承認",
1356
+ "auto_approve_hint": "MCP サーバーの接続や AI 生成サービスの起動時にセキュリティ確認をスキップします。信頼できないソースには推奨しません。",
1357
+ "error_name_required": "サーバー名は必須です",
1358
+ "error_command_required": "コマンドは必須です",
1359
+ "error_url_required": "URLは必須です"
1360
+ },
1361
+ "publish": {
1362
+ "empty": "公開ターゲットが設定されていません",
1363
+ "hint": "まず公開機能を持つ MCP サーバーを接続してください。",
1364
+ "button": "公開",
1365
+ "publishing": "公開中...",
1366
+ "published": "公開しました! {info}",
1367
+ "failed": "失敗: {message}",
1368
+ "error": "エラー: {message}"
1369
+ },
1370
+ "sync": {
1371
+ "empty": "同期設定がありません",
1372
+ "hint": "まず MCP サーバーを接続してから、同期設定を追加してください。",
1373
+ "sync_now": "今すぐ同期",
1374
+ "add_sync": "+ 同期を追加",
1375
+ "name": "設定名",
1376
+ "server": "MCP サーバー",
1377
+ "remote_path": "リモートパス",
1378
+ "local_path": "ローカルパス",
1379
+ "direction": "方向",
1380
+ "push": "プッシュ(ローカル → リモート)",
1381
+ "pull": "プル(リモート → ローカル)",
1382
+ "bidirectional": "双方向",
1383
+ "last_sync": "最終同期: {time}",
1384
+ "syncing": "同期中...",
1385
+ "success": "同期完了",
1386
+ "error": "同期エラー: {message}"
1387
+ },
1388
+ "marketplace": {
1389
+ "title": "マーケット",
1390
+ "search": "MCP サーバーを検索...",
1391
+ "source": "ソース",
1392
+ "source_official": "公式",
1393
+ "source_lobehub": "LobeHub",
1394
+ "source_smithery": "Smithery",
1395
+ "install": "インストール",
1396
+ "install_and_connect": "インストールして接続",
1397
+ "installing": "インストール中...",
1398
+ "installed": "インストール済み",
1399
+ "view_details": "詳細",
1400
+ "load_more": "もっと読み込む",
1401
+ "no_results": "MCP サーバーが見つかりません",
1402
+ "network_error": "読み込みに失敗しました。ネットワークを確認してください",
1403
+ "retry": "再試行",
1404
+ "env_vars": "環境変数",
1405
+ "env_required": "(必須)",
1406
+ "popularity": "利用数",
1407
+ "installs": "インストール / 利用数",
1408
+ "verified": "認証済み",
1409
+ "cancel": "キャンセル"
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": "ファイル",
1557
+ "edit": "編集",
1558
+ "paragraph": "段落",
1559
+ "format": "書式",
1560
+ "view": "表示",
1561
+ "window": "ウィンドウ",
1562
+ "help": "ヘルプ",
1563
+ "new": "新規",
1564
+ "new_window": "新規ウィンドウ",
1565
+ "open": "開く...",
1566
+ "save": "保存",
1567
+ "save_as": "名前を付けて保存...",
1568
+ "export": "エクスポート",
1569
+ "export_html": "HTML",
1570
+ "export_pdf": "PDF",
1571
+ "export_image": "画像(PNG)",
1572
+ "export_doc": "Word(.doc)",
1573
+ "heading1": "見出し 1",
1574
+ "heading2": "見出し 2",
1575
+ "heading3": "見出し 3",
1576
+ "heading4": "見出し 4",
1577
+ "heading5": "見出し 5",
1578
+ "heading6": "見出し 6",
1579
+ "table": "表",
1580
+ "code_block": "コードブロック",
1581
+ "math_block": "数式ブロック",
1582
+ "quote": "引用",
1583
+ "bullet_list": "箇条書きリスト",
1584
+ "ordered_list": "番号付きリスト",
1585
+ "task_list": "タスクリスト",
1586
+ "horizontal_rule": "水平線",
1587
+ "bold": "太字",
1588
+ "italic": "斜体",
1589
+ "strikethrough": "取り消し線",
1590
+ "code": "コード",
1591
+ "link": "リンク",
1592
+ "image": "画像",
1593
+ "visual_mode": "ビジュアルモード",
1594
+ "source_mode": "ソースモード",
1595
+ "split_mode": "分割モード",
1596
+ "toggle_sidebar": "サイドバーの切り替え",
1597
+ "toggle_aipanel": "AI パネルの切り替え",
1598
+ "toggle_outline": "アウトラインの切り替え",
1599
+ "zoom_in": "拡大",
1600
+ "zoom_out": "縮小",
1601
+ "actual_size": "実際のサイズ",
1602
+ "find": "検索",
1603
+ "replace": "置換",
1604
+ "changelog": "変更履歴",
1605
+ "privacy_policy": "プライバシーポリシー",
1606
+ "official_website": "公式サイト",
1607
+ "about_moraya": "Moraya について",
1608
+ "feedback": "フィードバック",
1609
+ "settings": "設定...",
1610
+ "version_info": "バージョン情報",
1611
+ "workflow": "ワークフロー",
1612
+ "seo_optimization": "SEO最適化",
1613
+ "ai_image_generation": "AI画像生成",
1614
+ "publish": "公開",
1615
+ "mcp_tools": "MCPツール",
1616
+ "no_mcptools": "接続されたMCPツールはありません"
1617
+ },
1618
+ "mermaid": {
1619
+ "loading": "ダイアグラムを読み込み中...",
1620
+ "error": "ダイアグラムの描画に失敗しました",
1621
+ "edit": "編集",
1622
+ "preview": "プレビュー",
1623
+ "empty": "空のダイアグラム"
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": "会話をクリアしました",
1713
+ "clear_undone": "メッセージを復元しました",
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": "プリセット「{name}」を削除しました",
1777
+ "preset_restored": "プリセットを復元しました",
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": "プラグイン実行",
2018
+ "run_action": "実行",
2019
+ "invoking": "実行中...",
2020
+ "success": "プラグインを適用しました",
2021
+ "no_changes": "変更なし",
2022
+ "no_plugins": "実行中のプラグインなし"
2023
+ },
2024
+ "plugins": {
2025
+ "tabs": {
2026
+ "preset": "組み込み",
2027
+ "installed": "インストール済み",
2028
+ "market": "マーケットプレイス"
2029
+ },
2030
+ "installed": {
2031
+ "empty": "プラグインはまだインストールされていません。"
2032
+ },
2033
+ "sandbox": {
2034
+ "label": "サンドボックスレベル",
2035
+ "sandbox": "サンドボックス(JS)",
2036
+ "local": "ローカル(ネットワークなし)",
2037
+ "system": "システム(ネットワークアクセス)"
2038
+ },
2039
+ "permissions": {
2040
+ "label": "権限"
2041
+ },
2042
+ "market": {
2043
+ "search": "プラグインを検索...",
2044
+ "refresh": "更新",
2045
+ "cat_all": "すべて",
2046
+ "cached": "キャッシュされた結果を表示しています",
2047
+ "loading": "マーケットプレイスを読み込み中...",
2048
+ "empty": "プラグインが見つかりません",
2049
+ "install": "インストール",
2050
+ "installed": "インストール済み",
2051
+ "installing": "インストール中..."
2052
+ },
2053
+ "install": {
2054
+ "from_file": ".zip からインストール",
2055
+ "url_placeholder": "GitHub リポジトリ URL(https://github.com/...)",
2056
+ "validate": "インポート",
2057
+ "confirm_url": "URL からプラグインをインストールしますか?",
2058
+ "author": "作者",
2059
+ "permissions": "権限",
2060
+ "no_permissions": "権限なし",
2061
+ "fetching_release": "リリース情報を取得中...",
2062
+ "downloading": "ダウンロード中..."
2063
+ },
2064
+ "verified": "認証済み",
2065
+ "enable": "有効化",
2066
+ "disable": "無効化",
2067
+ "uninstall": "アンインストール",
2068
+ "changelog": "変更履歴",
2069
+ "view_source": "ソース",
2070
+ "blacklisted": "ブラックリスト",
2071
+ "blacklist_warning": "このプラグインはセキュリティ上の問題によりブラックリストに登録されています。アンインストールしてください。",
2072
+ "process_error": "プラグインプロセスがクラッシュしました。切り替えて再起動してください。",
2073
+ "error": {
2074
+ "platform_not_supported": "お使いのプラットフォーム用のダウンロードがありません。"
2075
+ },
2076
+ "preset": {
2077
+ "initializing": "読み込み中...",
2078
+ "download": "ダウンロード",
2079
+ "retry": "再試行",
2080
+ "ready": "有効",
2081
+ "downloading": "ダウンロード中...",
2082
+ "loading": "読み込み中...",
2083
+ "error": "エラー",
2084
+ "large_bundle": "大きなバンドル(>500 KB)— ダウンロードに少し時間がかかる場合があります",
2085
+ "cancel": "キャンセル",
2086
+ "delete": "削除"
2087
+ }
2088
+ },
2089
+ "publish": {
2090
+ "settings_empty": "公開ターゲットが設定されていません",
2091
+ "settings_hint": "GitHub リポジトリまたはカスタム API エンドポイントを追加して、記事を公開してください。",
2092
+ "add_target": "ターゲットを追加",
2093
+ "edit_target": "編集",
2094
+ "delete_target": "削除",
2095
+ "test_connection": "接続テスト",
2096
+ "github": "GitHub リポジトリ",
2097
+ "custom_api": "カスタム API",
2098
+ "target_name": "名前",
2099
+ "target_name_placeholder": "例:マイブログ",
2100
+ "repo_url": "リポジトリ URL",
2101
+ "repo_url_placeholder": "https://github.com/user/blog",
2102
+ "branch": "ブランチ",
2103
+ "articles_dir": "記事ディレクトリ",
2104
+ "articles_dir_placeholder": "content/posts/",
2105
+ "images_dir": "画像ディレクトリ",
2106
+ "images_dir_placeholder": "static/images/",
2107
+ "token": "パーソナルアクセストークン",
2108
+ "token_placeholder": "ghp_xxxxxxxxxxxx",
2109
+ "front_matter_template": "フロントマターテンプレート",
2110
+ "endpoint": "API エンドポイント",
2111
+ "endpoint_placeholder": "https://api.example.com/articles",
2112
+ "method": "HTTP メソッド",
2113
+ "headers": "ヘッダー(JSON)",
2114
+ "body_template": "ボディテンプレート",
2115
+ "template_presets": "テンプレートプリセット",
2116
+ "preset_hugo": "Hugo",
2117
+ "preset_hexo": "Hexo",
2118
+ "preset_astro": "Astro",
2119
+ "preset_custom": "カスタム",
2120
+ "file_name_pattern": "ファイル名パターン",
2121
+ "file_name_preset": "名前プリセット",
2122
+ "file_name_preview": "プレビュー",
2123
+ "preset_simple": "シンプル(ファイル名)",
2124
+ "preset_date_slug": "日付 + スラッグ",
2125
+ "preset_date_filename": "日付 + ファイル名",
2126
+ "preset_year_month": "年/月/スラッグ",
2127
+ "file_name_variables": "変数: {{date}}, {{year}}, {{month}}, {{day}}, {{slug}}, {{filename}}, {{title}}",
2128
+ "rss_section": "RSS フィード",
2129
+ "rss_enable": "RSS フィードを生成",
2130
+ "rss_enable_hint": "公開時に feed.xml を自動更新します",
2131
+ "rss_feed_path": "フィードファイルパス",
2132
+ "rss_feed_path_placeholder": "feed.xml",
2133
+ "rss_site_url": "サイト URL",
2134
+ "rss_site_url_placeholder": "https://myblog.com",
2135
+ "rss_feed_title": "フィードタイトル",
2136
+ "rss_feed_title_placeholder": "マイブログ",
2137
+ "rss_feed_description": "フィードの説明",
2138
+ "rss_feed_description_placeholder": "〜についての記事...",
2139
+ "rss_language": "言語",
2140
+ "rss_author_name": "著者",
2141
+ "rss_author_name_placeholder": "山田太郎",
2142
+ "rss_max_items": "フィードの最大項目数",
2143
+ "rss_include_full_content": "フィードに記事の全文を含める",
2144
+ "rss_feed_endpoint": "RSS フィードエンドポイント",
2145
+ "rss_feed_endpoint_placeholder": "https://api.example.com/rss",
2146
+ "rss_update_failed": "RSS フィードの更新に失敗しました",
2147
+ "progress_title": "公開中...",
2148
+ "progress_publishing": "アップロード中...",
2149
+ "progress_rss": "RSS 更新中...",
2150
+ "progress_done": "完了",
2151
+ "progress_failed": "失敗",
2152
+ "enable_seo": "SEO最適化",
2153
+ "enable_seohint": "公開前にタイトル、抜粋、タグ、メタディスクリプションを生成",
2154
+ "next_seo": "次へ:SEO →",
2155
+ "back_to_targets": "戻る",
2156
+ "seo_no_provider": "AIプロバイダーが設定されていません。設定でAIプロバイダーを構成してください。"
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": "レビュー",
2199
+ "tab_label": "レビュー",
2200
+ "no_reviews": "まだレビューはありません",
2201
+ "no_reviews_hint": "エディタでテキストを選択し、⌘⇧R でレビューを追加します。",
2202
+ "not_git_bound": "Git リポジトリに接続されていません",
2203
+ "not_git_bound_hint": "協働レビューを使用するには、ナレッジベースを Git リポジトリにリンクしてください。",
2204
+ "bind_git_btn": "Git リポジトリをリンク",
2205
+ "open_count": "オープン",
2206
+ "resolved_count": "解決済み",
2207
+ "add_review": "レビューを追加",
2208
+ "reply": "返信",
2209
+ "resolve": "Resolve",
2210
+ "wontfix": "修正しない",
2211
+ "reanchor": "再アンカー",
2212
+ "mark_resolved": "解決済みとしてマーク",
2213
+ "resolved": "解決済み",
2214
+ "wontfix_label": "修正しない",
2215
+ "unanchored": "位置が失われました",
2216
+ "relocated": "位置が移動されました",
2217
+ "verified_prompt": "前回の確認後にドキュメントが変更されました。確認済みとしてマークしますか?",
2218
+ "mark_verified": "確認済みとしてマーク",
2219
+ "lock_self": "このファイルを編集中です",
2220
+ "lock_other": "がこのファイルを編集中です",
2221
+ "lock_expiry": "分残り",
2222
+ "view_readonly": "読み取り専用で表示",
2223
+ "force_unlock": "強制解除",
2224
+ "select_text_first": "最初にテキストを選択してください",
2225
+ "source_mode_limit_hint": "レビューはビジュアルモードでのみ利用可能です",
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": "大文字/小文字を区別",
2270
+ "replace": "Replace",
2271
+ "replace_all": "Replace All",
2272
+ "regex": "正規表現を使用",
2273
+ "regex_error": "正規表現が無効です",
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": "SEO 最適化",
2346
+ "generating": "記事を分析中...",
2347
+ "titles": "タイトル候補",
2348
+ "custom_title": "カスタムタイトル...",
2349
+ "excerpt": "抜粋",
2350
+ "tags": "タグ",
2351
+ "add_tag": "タグを追加...",
2352
+ "slug": "URL スラッグ",
2353
+ "meta_description": "メタディスクリプション",
2354
+ "regenerate": "再生成",
2355
+ "apply": "適用",
2356
+ "retry": "再試行",
2357
+ "content_too_short": "記事の内容が SEO 分析には短すぎます。",
2358
+ "completed": "SEO 最適化済み",
2359
+ "step_description": "タイトル、抜粋、タグを生成"
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": "一般",
2382
+ "editor": "エディター",
2383
+ "appearance": "外観",
2384
+ "ai": "チャット",
2385
+ "image_ai": "画像AI",
2386
+ "mcp": "MCP",
2387
+ "image": "ホスティング",
2388
+ "publish": "公開",
2389
+ "voice": "音声AI",
2390
+ "knowledge_base": "ナレッジベース",
2391
+ "plugins": "プラグイン",
2392
+ "kb_sync": "KB 同期",
2393
+ "picora": "Picora",
2394
+ "export": "エクスポート",
2395
+ "shortcuts": "ショートカット"
2396
+ },
2397
+ "groups": {
2398
+ "general": "一般",
2399
+ "ai": "AI 設定",
2400
+ "extensions": "拡張",
2401
+ "knowledge_base": "ナレッジベース",
2402
+ "picora": "Picora"
2403
+ },
2404
+ "tab_desc": {
2405
+ "image": "画像アップロード用のクラウドストレージプロバイダーを設定します。",
2406
+ "publish": "ブログ、GitHub Pages、RSS などの公開先を設定します。",
2407
+ "export": "PDF エクスポートを設定 — 用紙サイズ、余白、フォント、コンテンツの切替。"
2408
+ },
2409
+ "language": {
2410
+ "label": "言語",
2411
+ "system": "システムに従う"
2412
+ },
2413
+ "theme": {
2414
+ "label": "テーマ",
2415
+ "system": "システムに従う",
2416
+ "light": "ライト",
2417
+ "dark": "ダーク"
2418
+ },
2419
+ "appearance": {
2420
+ "theme_section": "テーマ",
2421
+ "dark_mode_section": "ダークモード",
2422
+ "font_section": "フォント",
2423
+ "separate_dark_theme": "ダークモード用の別テーマを使用する",
2424
+ "dark_theme": "ダークモードテーマ",
2425
+ "dark_mode_label": "外観"
2426
+ },
2427
+ "font_size": {
2428
+ "label": "フォントサイズ"
2429
+ },
2430
+ "auto_save": {
2431
+ "label": "自動保存",
2432
+ "interval": "自動保存の間隔"
2433
+ },
2434
+ "remember_last_folder": "最後に開いたフォルダーを記憶する",
2435
+ "show_cloud_insert_entries": "クラウド挿入メニュー項目を表示",
2436
+ "show_cloud_insert_entries_desc": "フォーマットメニューと右クリックメニューに「クラウド画像/音声/動画を挿入」オプションを追加します。",
2437
+ "rules_history_count": "MORAYA.md 履歴バージョン数",
2438
+ "rules_history_count_hint": "ルールファイルごとに保持する履歴バージョンの数(デフォルト:10)",
2439
+ "editor": {
2440
+ "line_width": "エディターの行幅",
2441
+ "tab_size": "タブサイズ",
2442
+ "show_line_numbers": "ソースモードで行番号を表示する"
2443
+ },
2444
+ "version": "Moraya v{version}",
2445
+ "permissions": {
2446
+ "mcp_title": "MCP 権限",
2447
+ "ai_title": "AI 設定",
2448
+ "ai_max_tokens": "最大出力トークン数",
2449
+ "ai_max_tokens_hint": "AIが1回の応答で生成できるトークンの最大数です。値を大きくすると長い応答やツール呼び出しが可能になりますが、コストが増加します。",
2450
+ "ai_tool_result_max_chars": "ツール結果の最大文字数",
2451
+ "ai_tool_result_max_chars_hint": "各MCPツール結果から保持する最大文字数です。値を大きくすると詳細が保持されますが、コンテキストの消費が増えます。",
2452
+ "ai_max_tool_rounds": "ツール呼び出しの最大ラウンド数",
2453
+ "ai_max_tool_rounds_hint": "AIが1回の会話ターンで実行できるツール呼び出しラウンドの最大数です。複雑なマルチステップタスクの場合は増やしてください。"
2454
+ },
2455
+ "voice": {
2456
+ "providers": "音声認識プロバイダー",
2457
+ "add_provider": "プロバイダーを追加",
2458
+ "edit_provider": "プロバイダーを編集",
2459
+ "no_providers": "音声認識プロバイダーが設定されていません。",
2460
+ "provider": "プロバイダー",
2461
+ "api_key": "API キー",
2462
+ "api_key_optional": "AWS の場合はオプション(代わりにアクセスキーを使用)",
2463
+ "aws_access_key": "AWS アクセスキー ID",
2464
+ "aws_secret_key": "AWS シークレットアクセスキー",
2465
+ "region": "リージョン",
2466
+ "model": "モデル",
2467
+ "model_placeholder": "モデル名を入力",
2468
+ "endpoint_id_placeholder": "推論エンドポイント ID を入力",
2469
+ "language": "言語",
2470
+ "lang_auto": "自動検出",
2471
+ "lang_multi": "多言語",
2472
+ "base_url": "カスタム WebSocket URL",
2473
+ "test_connection": "接続テスト",
2474
+ "testing": "テスト中...",
2475
+ "test_ok": "接続済み",
2476
+ "test_failed": "接続に失敗しました",
2477
+ "set_active": "デフォルトに設定",
2478
+ "active": "デフォルト",
2479
+ "custom": "カスタム",
2480
+ "storage": "ストレージ",
2481
+ "recording_backup_dir": "録音バックアップ",
2482
+ "recording_backup_hint": "各セッション後に録音を WAV ファイルとして保存します。",
2483
+ "voice_sync_dir": "ボイスプロファイル同期ディレクトリ",
2484
+ "voice_sync_hint": "クラウドストレージ(iCloud、Dropbox など)でボイスプロファイルを同期します。変更ボタンでフォルダーを選択すると、既存のプロファイルが自動的に移行されます。",
2485
+ "sync_default": "アプリデータ(デフォルト)",
2486
+ "disabled": "無効",
2487
+ "migrating_profiles": "移行中...",
2488
+ "migration_failed": "移行に失敗しました",
2489
+ "profiles": "ボイスプロファイル",
2490
+ "no_profiles": "ボイスプロファイルはまだありません。文字起こしセッション後に自動的に作成されます。",
2491
+ "naming": {
2492
+ "male": "男性{n}",
2493
+ "female": "女性{n}",
2494
+ "bystander": "傍観者{n}",
2495
+ "speaker": "話者{n}"
2496
+ },
2497
+ "providers_hint": "音声文字起こし用のスピーチプロバイダーを設定。"
2498
+ },
2499
+ "image_host": {
2500
+ "picora": {
2501
+ "moved_hint": "Picora 設定は Picora タブに移動しました。",
2502
+ "jump_to_tab": "Picora タブに移動"
2503
+ },
2504
+ "subtitle_suffix": "Picora 固有のオプションは Picora タブにあります。"
2505
+ },
2506
+ "picora": {
2507
+ "account": {
2508
+ "title": "Picora アカウント",
2509
+ "add": "Picora アカウントを追加",
2510
+ "add_first": "始める",
2511
+ "empty": "まだ Picora アカウントがありません。アカウントを接続してクラウドメディア挿入と KB 同期を有効にしてください。",
2512
+ "set_default": "デフォルトに設定",
2513
+ "test": "接続テスト",
2514
+ "edit": "編集",
2515
+ "remove": "削除",
2516
+ "quota": "クォータ",
2517
+ "unknown_email": "(メールなし)",
2518
+ "no_endpoint": "(endpoint なし)",
2519
+ "in_use": "{n} 箇所で使用中",
2520
+ "quota_loading": "クォータ読み込み中…",
2521
+ "quota_unavailable": "クォータ取得不可 — ↻ で再試行",
2522
+ "data_point_na": "データポイント利用不可",
2523
+ "needs_picora_v017": "Picora v0.17.1+ が必要",
2524
+ "not_activated": "まだ Picora プランをアクティベートしていません。",
2525
+ "activate": "プランをアクティベート",
2526
+ "remove_confirm_title": "Picora アカウントを削除",
2527
+ "remove_confirm_body": "削除しようとしています: {email}",
2528
+ "cascade_default": "これはデフォルトの Picora アカウントです — 新しいデフォルトが自動的に選択されます。",
2529
+ "cascade_image_host": "これはデフォルトの画像ホストです — デフォルトはクリアされます。",
2530
+ "cascade_kb_bindings": "{n} 個のナレッジベースのバインドが解除されます。クラウドデータは Picora に保存されています。",
2531
+ "cloud_data_preserved": "ローカル設定のみ削除されます。Picora 上のクラウドデータは保持されます。",
2532
+ "confirm_remove": "削除"
2533
+ },
2534
+ "edit_title": "Picora アカウントを編集",
2535
+ "kb_sync": {
2536
+ "title": "ナレッジベース同期",
2537
+ "open_manager": "KB 同期設定を開く",
2538
+ "empty": "まだナレッジベースがありません。",
2539
+ "missing_target": "(ターゲット欠落)",
2540
+ "never": "同期したことなし",
2541
+ "error": "同期エラー",
2542
+ "unbound_label": "Picora にバインドされていない:",
2543
+ "bind_action": "デフォルトにバインド"
2544
+ },
2545
+ "resources": {
2546
+ "title": "クラウドリソースブラウザ",
2547
+ "tabs": {
2548
+ "image": "画像",
2549
+ "audio": "音声",
2550
+ "video": "動画"
2551
+ }
2552
+ },
2553
+ "advanced": {
2554
+ "title": "詳細",
2555
+ "img_domain": "デフォルト挿入ドメイン",
2556
+ "img_domain_hint": "Picora 画像挿入時の公開 URL プレフィックスとして使用されます。",
2557
+ "rewrite_base64": "アップロード時に文書内の base64 画像を Picora CDN に自動書き換え",
2558
+ "sidebar_pin": "メインサイドバーに Picora ショートカットを表示",
2559
+ "debug": "デバッグログを有効化"
2560
+ },
2561
+ "banner": "新しい Picora タブが登場。すべての Picora 設定はここに移動しました;画像ホスティングタブは引き続き使用可能です。",
2562
+ "banner_dismiss": "了解",
2563
+ "welcome": {
2564
+ "title": "Picora へようこそ — あなたのメディアの拠点",
2565
+ "body": "画像・音声・動画・Markdown ドキュメントをご自身の Picora アカウントでホスト。デバイス間でナレッジベースを同期し、エディタから一クリックでクラウド資産を挿入。",
2566
+ "one_click": "ワンクリックインポート(推奨)",
2567
+ "manual": "手動で追加",
2568
+ "or": "または",
2569
+ "register": "アカウントがない?Picora に登録"
2570
+ },
2571
+ "quota": {
2572
+ "images": "画像",
2573
+ "docs": "ドキュメント",
2574
+ "audio": "音声",
2575
+ "videos": "動画",
2576
+ "kbs": "KB"
2577
+ },
2578
+ "plan": {
2579
+ "none": "未アクティベート",
2580
+ "trial": "トライアル",
2581
+ "pro": "Pro",
2582
+ "pro_plus": "Pro+"
2583
+ }
2584
+ },
2585
+ "export": {
2586
+ "paper_size": "用紙サイズ",
2587
+ "paper_a4": "A4",
2588
+ "paper_letter": "Letter",
2589
+ "paper_legal": "Legal",
2590
+ "paper_a3": "A3",
2591
+ "paper_a5": "A5",
2592
+ "orientation": "向き",
2593
+ "orientation_portrait": "縦向き",
2594
+ "orientation_landscape": "横向き",
2595
+ "margins": "余白 (mm)",
2596
+ "margins_top": "上",
2597
+ "margins_right": "右",
2598
+ "margins_bottom": "下",
2599
+ "margins_left": "左",
2600
+ "header_footer": "ヘッダーとフッター",
2601
+ "header_enabled": "ヘッダーを有効化",
2602
+ "footer_enabled": "フッターを有効化",
2603
+ "template_hint": "プレースホルダ: {title} {page} {total} {date}",
2604
+ "typography": "タイポグラフィ",
2605
+ "font_family": "フォント",
2606
+ "font_family_placeholder": "システム既定",
2607
+ "font_size": "フォントサイズ",
2608
+ "content": "コンテンツ",
2609
+ "enable_highlight": "コードのシンタックスハイライト",
2610
+ "enable_math": "数式 (KaTeX)",
2611
+ "enable_mermaid": "Mermaid 図",
2612
+ "advanced": "詳細設定",
2613
+ "auto_fallback": "失敗時に互換モードへ自動フォールバック",
2614
+ "auto_fallback_hint": "ネイティブ印刷パスが失敗した場合、canvas ベースのパスで再試行します。無効にするとエラーを表示してユーザーに再試行させます。"
2615
+ },
2616
+ "account": "Account",
2617
+ "devices": "Devices",
2618
+ "about": "About",
2619
+ "select_section": "Select a settings section from the left.",
2620
+ "ai": {
2621
+ "title": "AI",
2622
+ "cloud_providers": "Cloud Providers",
2623
+ "local_models": "On-device Models",
2624
+ "add": "Add",
2625
+ "edit": "Edit provider",
2626
+ "delete": "Delete",
2627
+ "delete_confirm": "Delete this provider configuration?",
2628
+ "provider_deleted": "Deleted “{label}”",
2629
+ "provider_restored": "Provider restored",
2630
+ "save": "Save",
2631
+ "test": "Test",
2632
+ "testing": "Testing…",
2633
+ "test_ok": "Connection OK",
2634
+ "test_auth_error": "Auth failed — check API key",
2635
+ "test_network_error": "Network error",
2636
+ "test_rate_limited": "Rate limited — try later",
2637
+ "test_unsupported": "Unsupported response",
2638
+ "test_not_configured": "Not configured",
2639
+ "provider": "Provider",
2640
+ "label": "Label",
2641
+ "api_key": "API Key",
2642
+ "api_key_hint": "Stored only on this device.",
2643
+ "base_url": "Base URL (optional)",
2644
+ "base_url_hint": "Custom OpenAI-compatible endpoint, e.g. Ollama: http://192.168.1.10:11434/v1",
2645
+ "default_model": "Default model",
2646
+ "active": "Active",
2647
+ "set_active": "Use",
2648
+ "status_ready": "Ready",
2649
+ "status_not_configured": "Not configured",
2650
+ "empty_cloud": "No cloud providers configured. Tap “Add” to set up OpenAI, Claude, Gemini, DeepSeek, or any OpenAI-compatible endpoint.",
2651
+ "cloud_hint": "Your API keys are stored locally and sent directly to the provider — Moraya never sees them.",
2652
+ "rag": {
2653
+ "title": "History Reference (RAG)",
2654
+ "enabled": "Reference past conversations",
2655
+ "topk": "Snippets per send",
2656
+ "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)."
2657
+ },
2658
+ "local": {
2659
+ "free_space": "Device free space",
2660
+ "unknown": "Unknown",
2661
+ "estimate_hint": "Estimated from browser quota.",
2662
+ "native_probe_failed": "Could not read native device free space; showing browser estimate.",
2663
+ "browser_only_hint": "On-device models are available only inside the Moraya iOS / Android app.",
2664
+ "browser_only_footer": "Open this page inside the Moraya mobile app to download and run on-device models.",
2665
+ "mobile_only": "On-device models are only available in the Moraya iOS / Android app.",
2666
+ "download": "Download",
2667
+ "cancel": "Cancel",
2668
+ "use": "Use",
2669
+ "delete": "Delete",
2670
+ "delete_confirm": "Delete {name} from this device?",
2671
+ "delete_failed": "Delete failed: {err}",
2672
+ "download_failed": "Download failed: {err}",
2673
+ "now_active": "{name} is now your active AI model.",
2674
+ "installed": "Installed",
2675
+ "too_big": "Too large",
2676
+ "fit_warn_inline": "This download will use more than 70% of your free space.",
2677
+ "fit_warn": "This model ({size}) will use over 70% of your free space and may slow iOS. Continue?",
2678
+ "fit_block": "Not enough free space for this model ({size}).",
2679
+ "engine_pending_title": "Inference engine pending Xcode setup",
2680
+ "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.",
2681
+ "wifi_only": "Wi-Fi only downloads",
2682
+ "on_wifi": "Connected via Wi-Fi.",
2683
+ "on_cellular_blocked": "On cellular — downloads paused. Toggle off to allow.",
2684
+ "on_cellular_ok": "On cellular — downloads allowed.",
2685
+ "offline": "No network connection.",
2686
+ "cellular_blocked": "Downloads are blocked on cellular. Connect to Wi-Fi or turn off “Wi-Fi only”.",
2687
+ "update": "Update",
2688
+ "update_confirm": "Update {name}? The current copy will be deleted and the latest version downloaded."
2689
+ },
2690
+ "custom_templates": "Custom AI Templates",
2691
+ "empty_templates": "No custom templates yet. Tap “Add” to create a reusable system prompt.",
2692
+ "templates_hint": "Your templates appear in the AI tab’s empty-state quick actions alongside the built-ins.",
2693
+ "custom_workflows": "Custom AI Workflows",
2694
+ "empty_workflows": "No custom workflows yet. Tap “Add” to chain multiple AI steps.",
2695
+ "workflows_hint": "Workflows run their steps sequentially, feeding each step’s output into the next.",
2696
+ "wf": {
2697
+ "add": "New workflow",
2698
+ "edit": "Edit workflow",
2699
+ "name_placeholder": "e.g. Translate then bullet-summarize",
2700
+ "desc_placeholder": "Shown under the tile in the AI tab",
2701
+ "step_label_placeholder": "Step label (e.g. “Translate”)",
2702
+ "step_system_placeholder": "System prompt for this step",
2703
+ "input_tpl_hint": "Use {prev} for the previous step's output and {input} for the user's first message.",
2704
+ "add_step": "Add step",
2705
+ "remove_step": "Remove step",
2706
+ "required_name": "Workflow needs a name.",
2707
+ "required_steps": "Workflow needs at least one step with a system prompt.",
2708
+ "delete_confirm": "Delete this workflow?",
2709
+ "deleted": "Deleted “{name}”",
2710
+ "restored": "Workflow restored"
2711
+ },
2712
+ "tpl": {
2713
+ "add": "New template",
2714
+ "edit": "Edit template",
2715
+ "icon": "Icon",
2716
+ "name": "Name",
2717
+ "name_placeholder": "e.g. Code reviewer",
2718
+ "desc": "Short description",
2719
+ "desc_placeholder": "Shown under the tile",
2720
+ "system_prompt": "System prompt",
2721
+ "system_prompt_placeholder": "Behavior guidance the model receives at the start of every conversation using this template.",
2722
+ "requires_image": "Open image picker on tap",
2723
+ "requires_doc": "Auto-mention the open doc",
2724
+ "auto_insert": "Auto-open “Insert into note” when finished",
2725
+ "save": "Save",
2726
+ "delete": "Delete",
2727
+ "delete_confirm": "Delete this template?",
2728
+ "deleted": "Deleted “{name}”",
2729
+ "restored": "Template restored",
2730
+ "required_fields": "Name and system prompt are required.",
2731
+ "import": "Import",
2732
+ "export": "Export",
2733
+ "import_merge_confirm": "Import {n} template(s) and append to your library?",
2734
+ "import_empty": "The file contains no templates.",
2735
+ "import_failed": "Import failed: {err}"
2736
+ },
2737
+ "usage": {
2738
+ "title": "AI Usage",
2739
+ "loading": "Reading conversations…",
2740
+ "empty": "No AI calls this month yet — usage shows up after your first reply.",
2741
+ "tokens": "Tokens",
2742
+ "conversations": "Conversations",
2743
+ "cost": "Cost",
2744
+ "by_model": "By model",
2745
+ "history": "Previous months"
2746
+ },
2747
+ "budget": {
2748
+ "title": "Monthly Budget",
2749
+ "edit": "Edit",
2750
+ "done": "Done",
2751
+ "no_limit": "No monthly limit set.",
2752
+ "usd_limit": "USD limit / month",
2753
+ "cny_limit": "CNY limit / month",
2754
+ "alert_threshold": "Warn at (0–1)",
2755
+ "hint": "Setting either currency to 0 disables that cap. Warn threshold 0 disables warnings."
2756
+ }
2757
+ },
2758
+ "mcp": "MCP servers",
2759
+ "image_gen": {
2760
+ "title": "Image generation",
2761
+ "providers": "Providers",
2762
+ "add": "Add",
2763
+ "edit": "Edit image provider",
2764
+ "delete": "Delete",
2765
+ "save": "Save",
2766
+ "provider": "Provider",
2767
+ "label": "Label",
2768
+ "api_key": "API Key",
2769
+ "api_key_hint": "Stored only on this device. BYO key — never sent to Moraya servers.",
2770
+ "base_url": "Base URL (optional)",
2771
+ "base_url_hint": "Override for OpenAI-compatible image endpoints (Together AI, Cloudflare AI Gateway, on-prem proxies).",
2772
+ "default_model": "Default model",
2773
+ "active": "Active",
2774
+ "set_active": "Use",
2775
+ "status_ready": "Ready",
2776
+ "status_no_key": "No API key",
2777
+ "empty": "No image providers configured. Tap “Add” to set up OpenAI DALL-E or Doubao Seedream.",
2778
+ "hint": "Image-gen providers power workflow `ai.image` nodes and the upcoming Compose Article flow. Configure at least one to enable cover-image generation.",
2779
+ "style": {
2780
+ "section": "Style presets",
2781
+ "add": "Add",
2782
+ "edit": "Edit style preset",
2783
+ "delete": "Delete",
2784
+ "save": "Save",
2785
+ "label": "Label",
2786
+ "label_placeholder": "e.g. Moody noir",
2787
+ "suffix": "Style suffix",
2788
+ "suffix_placeholder": "Appended to “Cover illustration for: <title>. ”",
2789
+ "suffix_hint": "Describe lighting, palette, mood, aspect ratio — anything the model should remember for this style.",
2790
+ "hint": "These presets apply when you tap one in the Compose Cover step. Built-in presets stay available even after you edit them.",
2791
+ "builtin": "Built-in",
2792
+ "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)."
2793
+ }
2794
+ },
2795
+ "publish": {
2796
+ "title": "Publish targets",
2797
+ "section": "Targets",
2798
+ "add": "Add",
2799
+ "edit": "Edit publish target",
2800
+ "delete": "Delete",
2801
+ "save": "Save",
2802
+ "icon": "Icon",
2803
+ "label": "Label",
2804
+ "label_placeholder": "WeChat 公众号 (主号)",
2805
+ "mcp_tool": "MCP tool",
2806
+ "mcp_tool_hint": "Bare name (`publish`) or namespaced (`mcp.<server-id>.<tool>`). Configure the MCP server itself in Settings → MCP.",
2807
+ "arg_template": "Argument template (JSON)",
2808
+ "arg_template_hint": "Use {title} {body} {topic} {coverKey} {coverPrompt} placeholders. Strings are JSON-escaped before substitution.",
2809
+ "empty": "No publish targets configured. Tap “Add” to wire a target to an MCP tool.",
2810
+ "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."
2811
+ },
2812
+ "voiceai": {
2813
+ "title": "Voice AI",
2814
+ "engine": "Voice engine",
2815
+ "engine_local": "Local (on-device)",
2816
+ "engine_local_desc": "Speech recognition and read-aloud run entirely on your device — no network, no API keys.",
2817
+ "recommended": "Recommended",
2818
+ "external_soon": "External cloud voice — coming soon.",
2819
+ "unavailable": "On-device voice isn't available here — it requires the iOS app.",
2820
+ "stt_section": "Speech input",
2821
+ "stt_locale": "Recognition language",
2822
+ "stt_locale_device": "Follow device",
2823
+ "tts_section": "Read aloud",
2824
+ "auto_speak": "Auto-read AI replies",
2825
+ "voice_label": "Voice",
2826
+ "voice_default": "System default",
2827
+ "enhanced": "Enhanced",
2828
+ "rate": "Speed",
2829
+ "test": "Test voice",
2830
+ "test_sample": "Hello, I'm Moraya's on-device voice assistant."
2831
+ }
2832
+ },
2833
+ "shortcuts": {
2834
+ "title": "Keyboard Shortcuts",
2835
+ "intro": "All keyboard shortcuts in Moraya. Entries marked 🔒 are managed by the native menu and will become user-configurable in a later version.",
2836
+ "ai_chat_behavior": {
2837
+ "title": "AI Chat — Enter Key Behavior",
2838
+ "intro": "Choose how the Enter key behaves in the AI chat input.",
2839
+ "sends_action": "sends message",
2840
+ "newline_action": "newline",
2841
+ "mod_enter_send": {
2842
+ "label": "Cmd/Ctrl + Enter で送信"
2843
+ },
2844
+ "enter_send": {
2845
+ "label": "Enter sends"
2846
+ },
2847
+ "default_badge": "デフォルト"
2848
+ },
2849
+ "categories": {
2850
+ "file": "File",
2851
+ "edit": "Edit",
2852
+ "paragraph": "Paragraph",
2853
+ "format": "Format",
2854
+ "view": "View",
2855
+ "ai_chat": "AI Chat",
2856
+ "workflow": "Workflow",
2857
+ "mcp": "MCP"
2858
+ },
2859
+ "actions": {
2860
+ "file": {
2861
+ "new": "New Document",
2862
+ "new_window": "New Window",
2863
+ "open": "Open File",
2864
+ "save": "Save",
2865
+ "save_as": "Save As",
2866
+ "export_html": "Export HTML",
2867
+ "export_pdf": "PDF にエクスポート",
2868
+ "export_image": "画像にエクスポート",
2869
+ "export_doc": "Word にエクスポート"
2870
+ },
2871
+ "edit": {
2872
+ "undo": "Undo",
2873
+ "redo": "Redo",
2874
+ "find": "Find",
2875
+ "replace": "Replace"
2876
+ },
2877
+ "paragraph": {
2878
+ "h1": "Heading 1",
2879
+ "h2": "Heading 2",
2880
+ "h3": "Heading 3",
2881
+ "h4": "Heading 4",
2882
+ "h5": "Heading 5",
2883
+ "h6": "Heading 6",
2884
+ "code_block": "Code Block",
2885
+ "quote": "Block Quote"
2886
+ },
2887
+ "format": {
2888
+ "bold": "Bold",
2889
+ "italic": "Italic",
2890
+ "strike": "Strikethrough",
2891
+ "code": "Inline Code",
2892
+ "link": "Link",
2893
+ "insert_image": "Insert Image"
2894
+ },
2895
+ "view": {
2896
+ "toggle_mode": "Toggle Visual / Source",
2897
+ "toggle_split": "Toggle Split Mode",
2898
+ "toggle_sidebar": "Toggle Sidebar",
2899
+ "toggle_aipanel": "Toggle AI Panel",
2900
+ "toggle_outline": "Toggle Outline",
2901
+ "open_settings": "Open Settings",
2902
+ "zoom_in": "Zoom In",
2903
+ "zoom_out": "Zoom Out",
2904
+ "zoom_reset": "Reset Zoom"
2905
+ },
2906
+ "workflow": {
2907
+ "quick_open": "Quick Open",
2908
+ "command_palette": "Command Palette"
2909
+ },
2910
+ "ai_chat": {
2911
+ "send": "Send AI Message",
2912
+ "newline": "Insert Newline"
2913
+ }
2914
+ },
2915
+ "locked_hint": "Managed by the native menu — not customizable here yet",
2916
+ "locked_footnote": "🔒 indicates the shortcut is provided by the OS-native menu and is not customizable in this version.",
2917
+ "editor": {
2918
+ "prompt": "任意のキー組み合わせを押してください…(Esc でキャンセル)",
2919
+ "needs_modifier": "修飾キー(Cmd、Ctrl、Alt、Shift)を 1 つ以上含めてください",
2920
+ "conflict": "他のショートカットで使用されています",
2921
+ "save": "保存",
2922
+ "cancel": "キャンセル",
2923
+ "edit_hint": "クリックして新しいショートカットを記録",
2924
+ "reset_to_default": "既定に戻す",
2925
+ "customized": "カスタム済み",
2926
+ "customized_short": "カスタム",
2927
+ "reset_conflict": "デフォルトが他のカスタムショートカットと衝突します。先にそちらを変更してください。",
2928
+ "sync_failed": "システムメニューを更新できませんでした",
2929
+ "sync_failed_short": "メニュー同期失敗",
2930
+ "unbound": "未設定",
2931
+ "reset_all": "すべてリセット",
2932
+ "reset_all_hint": "すべてのショートカットを既定に戻す",
2933
+ "reset_all_confirm": "カスタマイズした {count} 件のショートカットをすべて既定に戻しますか?",
2934
+ "reset_short": "既定に戻す"
2935
+ },
2936
+ "edit_hint": "ヒント:破線の枠と ✎ アイコンが付いた行はキーをクリックして再記録できます。🔒 のショートカットはシステムメニュー管理で、現バージョンではカスタマイズできません。",
2937
+ "mcp": {
2938
+ "intro": "インストール済みの MCP サーバーとそのツールにキーボードショートカットを割り当てます。",
2939
+ "empty": "まず「設定 → MCP」で MCP サーバーをインストールしてください。",
2940
+ "add_tool": "MCP ツールのショートカットを追加",
2941
+ "remove_tool": "この MCP ツールのショートカットを削除",
2942
+ "remove_tool_short": "削除",
2943
+ "remove_stale": "無効な割り当てを削除",
2944
+ "remove_stale_short": "削除",
2945
+ "server_kind_short": "サーバー",
2946
+ "server_kind_hint": "MCP サーバーの接続状態を切り替えます",
2947
+ "tool_kind_short": "ツール",
2948
+ "tool_kind_hint": "AI パネルを開き、このツールを使うようアシスタントに依頼します",
2949
+ "stale_short": "無効",
2950
+ "stale_hint": "この割り当てが指す MCP サーバーまたはツールは存在しません",
2951
+ "server_gone": "MCP サーバーはインストールされていません",
2952
+ "unavailable": "対応する MCP ツールは利用できません",
2953
+ "toggled": {
2954
+ "on": "{name} を有効にしました",
2955
+ "off": "{name} を無効にしました"
2956
+ },
2957
+ "dialog": {
2958
+ "title": "MCP ツールのショートカットを追加",
2959
+ "server_label": "MCP サーバー",
2960
+ "tool_label": "ツール",
2961
+ "tool_placeholder": "ツールを選択…",
2962
+ "no_tools_for_server": "このサーバーにはまだツールがありません。先に MCP 設定で接続してください。",
2963
+ "duplicate_error": "このツールのショートカットは既に存在します。",
2964
+ "add": "追加",
2965
+ "cancel": "キャンセル"
2966
+ }
2967
+ }
2968
+ },
2969
+ "sidebar": {
2970
+ "title": "Sidebar",
2971
+ "open_folder": "フォルダーを開く",
2972
+ "no_folder": "フォルダーが開かれていません",
2973
+ "create_kb": "ナレッジベースを作成",
2974
+ "empty_dir": "このディレクトリにファイルはありません",
2975
+ "kb_settings": "ナレッジベース設定",
2976
+ "tree_view": "ツリー表示",
2977
+ "list_view": "リスト表示",
2978
+ "search": "ファイルを検索...",
2979
+ "context_menu": {
2980
+ "new_file": "新規ファイル",
2981
+ "new_folder": "新規フォルダ",
2982
+ "search_files": "検索",
2983
+ "refresh": "更新",
2984
+ "rename": "名前を変更",
2985
+ "duplicate": "コピーを作成",
2986
+ "delete": "削除",
2987
+ "copy_path": "パスをコピー",
2988
+ "reveal_in_finder": "Finder で表示",
2989
+ "reveal_in_explorer": "エクスプローラーで表示",
2990
+ "history_versions": "履歴バージョン"
2991
+ },
2992
+ "history": {
2993
+ "title": "バージョン履歴",
2994
+ "empty": "保存されたバージョンはありません",
2995
+ "restore": "復元",
2996
+ "restore_confirm": "このバージョンに復元しますか?現在の MORAYA.md の内容が置き換えられます。"
2997
+ },
2998
+ "new_file_prompt": "ファイル名を入力",
2999
+ "new_folder_prompt": "フォルダ名を入力",
3000
+ "rename_prompt": "新しい名前を入力",
3001
+ "reserved_dir_title": "予約済み名前",
3002
+ "reserved_dir_name": "\"images\" はシステム予約済みのディレクトリ名です。別の名前を使用してください。",
3003
+ "delete_confirm": "「{name}」を削除してもよろしいですか?この操作は取り消せません。",
3004
+ "views": "Sidebar views",
3005
+ "knowledge_bases": "Knowledge Bases",
3006
+ "explorer": "Files",
3007
+ "kb_list": "Knowledge base list",
3008
+ "tag_view": "Tags",
3009
+ "open": "Open sidebar",
3010
+ "close": "Close sidebar",
3011
+ "local_workspace": "Local"
3012
+ },
3013
+ "sso": {
3014
+ "__mt": true,
3015
+ "title": "Single Sign-On",
3016
+ "description": "Configure SSO to let team members authenticate via your identity provider.",
3017
+ "enable_sso": "Enable SSO",
3018
+ "require_sso": "Require SSO for all members",
3019
+ "oidc": "OIDC / OAuth 2.0",
3020
+ "saml": "SAML 2.0",
3021
+ "provider": "Identity Provider",
3022
+ "custom_provider": "Custom",
3023
+ "issuer": "Issuer URL",
3024
+ "client_id": "Client ID",
3025
+ "client_secret": "Client Secret",
3026
+ "scopes": "Scopes",
3027
+ "idp_metadata_url": "IdP Metadata URL",
3028
+ "sp_entity_id": "SP Entity ID",
3029
+ "sp_acs_url": "ACS URL",
3030
+ "signing_cert": "Signing Certificate",
3031
+ "save": "Save SSO Configuration",
3032
+ "saved_success": "SSO configuration saved."
3033
+ },
3034
+ "stale_dmg": {
3035
+ "title": "古いディスクイメージのクリーンアップ",
3036
+ "body": "古い Moraya ディスクイメージがまだマウントされたままです。マウントされたままにすると、「このアプリケーションで開く」メニューに複数のバージョンが表示されます。今すぐ取り出しますか?",
3037
+ "eject_all": "すべて取り出す",
3038
+ "skip": "後で",
3039
+ "partial_failure": "一部のディスクイメージを取り出せませんでした:"
3040
+ },
3041
+ "statusbar": {
3042
+ "words": "単語数",
3043
+ "characters": "文字数",
3044
+ "format": "Markdown",
3045
+ "source_mode": "ソース",
3046
+ "visual_mode": "ビジュアル",
3047
+ "split_mode": "分割",
3048
+ "publish_workflow": "AI ワークフロー",
3049
+ "ai_tooltip": "AI"
3050
+ },
3051
+ "storage": {
3052
+ "__mt": true,
3053
+ "title": "Storage",
3054
+ "connected_providers": "Connected Providers",
3055
+ "connect_provider": "Connect Provider",
3056
+ "primary": "Primary",
3057
+ "set_primary": "Set as Primary",
3058
+ "remove": "Remove",
3059
+ "edit": "Edit",
3060
+ "verify": "Verify Connection",
3061
+ "verifying": "Verifying...",
3062
+ "verify_success": "Connection verified",
3063
+ "verify_failed": "Verification failed",
3064
+ "no_providers": "No storage providers connected.",
3065
+ "connect_prompt": "Connect your own cloud storage to keep full control of your data.",
3066
+ "picora_default": "Picora is your storage provider (Connect plan)",
3067
+ "upgrade_for_byoc": "Upgrade to Personal to connect your own storage.",
3068
+ "step_choose": "Choose Provider",
3069
+ "step_setup": "Setup Script",
3070
+ "step_credentials": "Enter Credentials",
3071
+ "step_verify": "Verify",
3072
+ "step_name": "Name & Save",
3073
+ "provider_label": "Provider",
3074
+ "bucket_label": "Bucket Name",
3075
+ "region_label": "Region",
3076
+ "access_key_label": "Access Key ID",
3077
+ "secret_key_label": "Secret Access Key",
3078
+ "role_arn_label": "Role ARN (for STS)",
3079
+ "account_id_label": "Account ID",
3080
+ "key_id_label": "Key ID",
3081
+ "application_key_label": "Application Key",
3082
+ "binding_label": "Display Name",
3083
+ "copy_script": "Copy Script",
3084
+ "copy_policy": "Copy Policy JSON",
3085
+ "copied": "Copied!",
3086
+ "back": "Back",
3087
+ "next": "Next",
3088
+ "save": "Save",
3089
+ "health_ok": "Healthy",
3090
+ "health_degraded": "Degraded",
3091
+ "health_failed": "Failed",
3092
+ "health_unknown": "Unknown",
3093
+ "access_denied": "Access denied.",
3094
+ "bucket_not_found": "Bucket not found.",
3095
+ "bucket_exists": "Bucket already exists.",
3096
+ "clock_skew": "System clock is out of sync. Please check your date/time settings.",
3097
+ "b2_no_sts_warning": "Backblaze B2 does not support STS. Credentials are stored in session only. Enable E2E encryption (v0.43) for better security.",
3098
+ "r2_token_info": "Create an API Token in Cloudflare Dashboard with R2 Read/Write permissions for this bucket."
3099
+ },
3100
+ "table": {
3101
+ "insert_row_above": "上に行を挿入",
3102
+ "insert_row_below": "下に行を挿入",
3103
+ "delete_row": "行を削除",
3104
+ "insert_col_left": "左に列を挿入",
3105
+ "insert_col_right": "右に列を挿入",
3106
+ "delete_col": "列を削除",
3107
+ "align_left": "左揃え",
3108
+ "align_center": "中央揃え",
3109
+ "align_right": "右揃え",
3110
+ "copy_table": "テーブルをコピー",
3111
+ "format_table_source": "テーブルソースをフォーマット",
3112
+ "delete_table": "テーブルを削除",
3113
+ "copied": "テーブルをコピーしました",
3114
+ "formatted_copied": "フォーマット済みテーブルをコピーしました"
3115
+ },
3116
+ "tabs": {
3117
+ "external_change_title": "ファイルが外部で変更されました",
3118
+ "external_change_msg": "「{fileName}」が Moraya の外部で変更されました。",
3119
+ "keep_local": "ローカルの変更を保持",
3120
+ "load_from_disk": "ディスクから読み込む",
3121
+ "unsaved_title": "未保存の変更",
3122
+ "unsaved_msg": "「{fileName}」には未保存の変更があります。",
3123
+ "save": "保存",
3124
+ "discard": "破棄",
3125
+ "new_tab": "New Tab",
3126
+ "close": "Close Tab",
3127
+ "close_others": "Close Other Tabs",
3128
+ "close_to_right": "Close Tabs to the Right",
3129
+ "close_all": "Close All Tabs",
3130
+ "dirty_confirm": "This tab has unsaved changes. Discard and close?",
3131
+ "discard_close": "Discard & Close",
3132
+ "readonly_banner": "Another tab is editing this note. This tab is read-only.",
3133
+ "takeover": "Take Over",
3134
+ "open_count": "tabs open",
3135
+ "no_tabs": "No open tabs",
3136
+ "upgrade_tabs": "Upgrade to Personal to open multiple tabs.",
3137
+ "rename": "Rename",
3138
+ "rename_placeholder": "Document name",
3139
+ "dirty_dot": "Unsaved changes"
3140
+ },
3141
+ "team": {
3142
+ "__mt": true,
3143
+ "title": "Team Knowledge Bases",
3144
+ "create": "New Team KB",
3145
+ "no_kbs": "You don't have any team knowledge bases yet.",
3146
+ "create_first": "Create your first team KB",
3147
+ "members": "members",
3148
+ "open": "Open",
3149
+ "settings": "Settings",
3150
+ "encryption_kms": "Cloud KMS (AI Review enabled)",
3151
+ "encryption_e2e": "E2E Encryption (AI Review disabled)",
3152
+ "wizard_title": "Create Team Knowledge Base",
3153
+ "step_info": "Name",
3154
+ "step_provider": "Storage",
3155
+ "step_members": "Members",
3156
+ "step_encryption": "Encryption",
3157
+ "step_confirm": "Confirm",
3158
+ "kb_name_label": "Team KB Name",
3159
+ "kb_name_placeholder": "e.g. Engineering Docs",
3160
+ "provider_label": "Provider",
3161
+ "bucket_label": "Bucket",
3162
+ "prefix_label": "Prefix (optional)",
3163
+ "invite_emails_label": "Email addresses (comma-separated)",
3164
+ "invite_role_label": "Role",
3165
+ "mode_kms_name": "Cloud KMS",
3166
+ "mode_kms_desc": "AI Review and server-side features enabled.",
3167
+ "mode_e2e_name": "End-to-End",
3168
+ "mode_e2e_desc": "Maximum privacy. AI Review not available.",
3169
+ "confirm_summary": "Confirm & Create",
3170
+ "creating": "Creating…",
3171
+ "create_kb": "Create Team KB"
3172
+ },
3173
+ "templates": {
3174
+ "gallery": {
3175
+ "title": "AI アシスタント",
3176
+ "search": "テンプレートを検索...",
3177
+ "back": "戻る",
3178
+ "start": "開始"
3179
+ },
3180
+ "my_templates": {
3181
+ "name": "マイテンプレート",
3182
+ "desc": "インポートまたは作成したカスタムテンプレート"
3183
+ },
3184
+ "manage": {
3185
+ "title": "テンプレート管理",
3186
+ "import": "テンプレートをインポート",
3187
+ "export": "テンプレートをエクスポート",
3188
+ "manage": "テンプレート管理",
3189
+ "delete": "削除",
3190
+ "delete_confirm": "確認しますか?",
3191
+ "import_success": "{count} 件のテンプレートをインポートしました",
3192
+ "export_success": "テンプレートのエクスポートに成功しました",
3193
+ "no_custom_templates": "カスタムテンプレートはまだありません",
3194
+ "source_global": "グローバル",
3195
+ "source_kb": "ナレッジベース",
3196
+ "invalid_format": "無効なテンプレート形式",
3197
+ "select_templates": "エクスポートするテンプレートを選択"
3198
+ },
3199
+ "error": {
3200
+ "no_document": "まずコンテンツを書いてください",
3201
+ "no_selection": "まずテキストを選択してください",
3202
+ "no_content": "コンテンツを書くか、テキストを選択してください"
3203
+ },
3204
+ "writing": {
3205
+ "name": "ライティング",
3206
+ "desc": "AI による執筆、編集、要約",
3207
+ "free": {
3208
+ "name": "フリーライティング",
3209
+ "desc": "トピックを入力すると AI がコンテンツを生成します",
3210
+ "hint": "執筆のトピックまたは指示を入力..."
3211
+ },
3212
+ "continue": {
3213
+ "name": "続きを書く",
3214
+ "desc": "ドキュメントの末尾から続きを書きます"
3215
+ },
3216
+ "outline": {
3217
+ "name": "アウトライン生成",
3218
+ "desc": "記事のアウトラインを作成します",
3219
+ "hint": "記事のトピックを入力..."
3220
+ },
3221
+ "summarize": {
3222
+ "name": "要約",
3223
+ "desc": "選択したテキストまたはドキュメント全体を要約します"
3224
+ },
3225
+ "improve": {
3226
+ "name": "改善",
3227
+ "desc": "文章の品質を向上させます"
3228
+ },
3229
+ "simplify": {
3230
+ "name": "簡素化",
3231
+ "desc": "複雑なテキストを簡潔にします"
3232
+ },
3233
+ "expand": {
3234
+ "name": "拡張",
3235
+ "desc": "詳細と説明を追加します"
3236
+ },
3237
+ "fix_grammar": {
3238
+ "name": "文法修正",
3239
+ "desc": "文法とスペルのエラーを修正します"
3240
+ }
3241
+ },
3242
+ "translation": {
3243
+ "name": "翻訳",
3244
+ "desc": "多言語翻訳とローカライゼーション",
3245
+ "auto": {
3246
+ "name": "スマート翻訳",
3247
+ "desc": "言語を自動検出して翻訳します"
3248
+ },
3249
+ "to_target": {
3250
+ "name": "指定言語に翻訳",
3251
+ "desc": "翻訳先の言語を選択して翻訳します"
3252
+ },
3253
+ "explain": {
3254
+ "name": "翻訳と解説",
3255
+ "desc": "単語ごとの解説付きで翻訳します"
3256
+ },
3257
+ "polish": {
3258
+ "name": "ローカライズ",
3259
+ "desc": "翻訳をより自然な表現にします"
3260
+ },
3261
+ "compare": {
3262
+ "name": "マルチバージョン",
3263
+ "desc": "複数の翻訳スタイルを提供します"
3264
+ },
3265
+ "target_lang": "翻訳先の言語",
3266
+ "lang": {
3267
+ "en": "英語",
3268
+ "zh_cn": "簡体字中国語",
3269
+ "zh_hant": "繁体字中国語",
3270
+ "ar": "アラビア語",
3271
+ "de": "ドイツ語",
3272
+ "es": "スペイン語",
3273
+ "fr": "フランス語",
3274
+ "hi": "ヒンディー語",
3275
+ "ja": "日本語",
3276
+ "ko": "韓国語",
3277
+ "pt": "ポルトガル語",
3278
+ "ru": "ロシア語"
3279
+ }
3280
+ },
3281
+ "student": {
3282
+ "name": "学習ヘルパー",
3283
+ "desc": "学習、ノート作成、概念理解",
3284
+ "explain": {
3285
+ "name": "概念の説明",
3286
+ "desc": "概念をわかりやすく説明します",
3287
+ "hint": "説明してほしい概念を入力..."
3288
+ },
3289
+ "notes": {
3290
+ "name": "学習ノート",
3291
+ "desc": "内容を構造化されたノートに整理します"
3292
+ },
3293
+ "flashcard": {
3294
+ "name": "フラッシュカード",
3295
+ "desc": "内容から Q&A フラッシュカードを抽出します"
3296
+ },
3297
+ "mindmap": {
3298
+ "name": "マインドマップ",
3299
+ "desc": "Markdown マインドマップを生成します"
3300
+ },
3301
+ "essay_outline": {
3302
+ "name": "エッセイアウトライン",
3303
+ "desc": "エッセイのアウトラインを生成します",
3304
+ "hint": "エッセイのトピックを入力..."
3305
+ },
3306
+ "reading": {
3307
+ "name": "読解分析",
3308
+ "desc": "テキスト内容の深い分析"
3309
+ },
3310
+ "formula": {
3311
+ "name": "数式の導出",
3312
+ "desc": "数式の導出手順を表示します",
3313
+ "hint": "数式の名前または内容を入力..."
3314
+ },
3315
+ "compare": {
3316
+ "name": "概念の比較",
3317
+ "desc": "2つの概念を並べて比較します",
3318
+ "hint": "2つの概念を入力(例:TCP vs UDP)..."
3319
+ }
3320
+ },
3321
+ "kids": {
3322
+ "name": "子供の学習",
3323
+ "desc": "物語、楽しい学習、インタラクティブゲーム",
3324
+ "story": {
3325
+ "name": "子供向けストーリー",
3326
+ "desc": "キーワードからストーリーを生成します",
3327
+ "hint": "ストーリーのキーワードを入力(例:うさぎ 森 冒険)..."
3328
+ },
3329
+ "poem": {
3330
+ "name": "童謡",
3331
+ "desc": "トピックについて童謡を作ります",
3332
+ "hint": "トピックを入力..."
3333
+ },
3334
+ "why": {
3335
+ "name": "なぜ?なぜ?なぜ?",
3336
+ "desc": "AI が終わりなき「なぜ」の質問に答えます"
3337
+ },
3338
+ "alphabet": {
3339
+ "name": "アルファベット遊び",
3340
+ "desc": "インタラクティブな文字学習"
3341
+ },
3342
+ "math_game": {
3343
+ "name": "算数ゲーム",
3344
+ "desc": "楽しいインタラクティブ計算"
3345
+ },
3346
+ "riddle": {
3347
+ "name": "なぞなぞ",
3348
+ "desc": "AI が子供向けのなぞなぞを出します"
3349
+ },
3350
+ "draw_text": {
3351
+ "name": "ピクチャートーク",
3352
+ "desc": "場面を描写すると、AI がストーリーを書きます",
3353
+ "hint": "場面を描写してください..."
3354
+ },
3355
+ "knowledge": {
3356
+ "name": "おもしろ豆知識",
3357
+ "desc": "自然、科学、動物百科事典"
3358
+ }
3359
+ },
3360
+ "marketing": {
3361
+ "name": "マーケティング",
3362
+ "desc": "SNS、広告、SEO コピーライティング",
3363
+ "xiaohongshu": {
3364
+ "name": "小紅書投稿",
3365
+ "desc": "ライフスタイルレビュー風の投稿を生成します",
3366
+ "hint": "商品またはトピックを入力..."
3367
+ },
3368
+ "twitter": {
3369
+ "name": "Twitter/X 投稿",
3370
+ "desc": "ツイート形式のコンテンツを生成します",
3371
+ "hint": "トピックを入力..."
3372
+ },
3373
+ "slogan": {
3374
+ "name": "広告スローガン",
3375
+ "desc": "キャッチーなブランドスローガンを生成します",
3376
+ "hint": "ブランドまたは商品を入力..."
3377
+ },
3378
+ "email": {
3379
+ "name": "マーケティングメール",
3380
+ "desc": "対象とトーンを設定してメールを作成します",
3381
+ "hint": "メールの内容を説明..."
3382
+ },
3383
+ "seo_article": {
3384
+ "name": "SEO 記事",
3385
+ "desc": "SEO に最適化されたコンテンツを生成します",
3386
+ "hint": "ターゲットキーワードを入力..."
3387
+ },
3388
+ "product_desc": {
3389
+ "name": "商品説明",
3390
+ "desc": "魅力的な商品コピーを生成します",
3391
+ "hint": "商品情報を入力..."
3392
+ },
3393
+ "tone": "トーン",
3394
+ "tone.formal": "フォーマル",
3395
+ "tone.friendly": "フレンドリー",
3396
+ "tone.urgent": "緊急",
3397
+ "tone.humorous": "ユーモラス"
3398
+ },
3399
+ "professional": {
3400
+ "name": "ビジネス",
3401
+ "desc": "メール、レポート、議事録",
3402
+ "email": {
3403
+ "name": "ビジネスメール",
3404
+ "desc": "シーンとトーンを設定してメールを作成します",
3405
+ "hint": "メールの内容を説明..."
3406
+ },
3407
+ "meeting": {
3408
+ "name": "議事録",
3409
+ "desc": "メモを正式な議事録に整理します"
3410
+ },
3411
+ "report": {
3412
+ "name": "業務報告",
3413
+ "desc": "週次/月次/四半期レポートを生成します",
3414
+ "hint": "レポートの要点を入力..."
3415
+ },
3416
+ "review": {
3417
+ "name": "コードレビュー",
3418
+ "desc": "コードをレビューして改善を提案します"
3419
+ },
3420
+ "resume": {
3421
+ "name": "履歴書ブラッシュアップ",
3422
+ "desc": "STAR メソッドで履歴書を最適化します"
3423
+ },
3424
+ "prd": {
3425
+ "name": "PRD ドキュメント",
3426
+ "desc": "プロダクト要件書を生成します",
3427
+ "hint": "機能の説明を入力..."
3428
+ },
3429
+ "tone": "トーン",
3430
+ "tone.concise": "簡潔",
3431
+ "report_type": "レポートの種類",
3432
+ "report_type.weekly": "週次",
3433
+ "report_type.monthly": "月次",
3434
+ "report_type.quarterly": "四半期"
3435
+ },
3436
+ "personal": {
3437
+ "name": "自己成長",
3438
+ "desc": "日記、目標設定、意思決定",
3439
+ "journal": {
3440
+ "name": "日記ヘルパー",
3441
+ "desc": "ガイド付きの日記と振り返り",
3442
+ "hint": "今日何がありましたか?..."
3443
+ },
3444
+ "goal": {
3445
+ "name": "目標の細分化",
3446
+ "desc": "目標を実行可能なステップに分解します",
3447
+ "hint": "目標を入力..."
3448
+ },
3449
+ "habit": {
3450
+ "name": "習慣づくり",
3451
+ "desc": "習慣形成プランを作成します",
3452
+ "hint": "身につけたい習慣を入力..."
3453
+ },
3454
+ "decision": {
3455
+ "name": "意思決定分析",
3456
+ "desc": "メリット/デメリット分析で意思決定を支援します",
3457
+ "hint": "選択肢を説明..."
3458
+ },
3459
+ "book_notes": {
3460
+ "name": "読書ノート",
3461
+ "desc": "内容を読書ノートに整理します"
3462
+ }
3463
+ },
3464
+ "games_cn": {
3465
+ "name": "中文游戏",
3466
+ "desc": "飞花令、成语接龙、猜谜语等文字游戏",
3467
+ "feihualing": {
3468
+ "name": "飞花令",
3469
+ "desc": "轮流说含指定字的诗句"
3470
+ },
3471
+ "chengyu_chain": {
3472
+ "name": "成语接龙",
3473
+ "desc": "末字接首字的成语接龙"
3474
+ },
3475
+ "riddle": {
3476
+ "name": "猜谜语",
3477
+ "desc": "AI 出谜面,你猜谜底"
3478
+ },
3479
+ "lantern_riddle": {
3480
+ "name": "猜灯谜",
3481
+ "desc": "字谜、拆字等灯谜挑战"
3482
+ },
3483
+ "poetry_fill": {
3484
+ "name": "诗词填空",
3485
+ "desc": "古诗词记忆力考验"
3486
+ },
3487
+ "story_chain": {
3488
+ "name": "故事接龙",
3489
+ "desc": "双方交替续写故事"
3490
+ },
3491
+ "character_game": {
3492
+ "name": "猜字游戏",
3493
+ "desc": "根据描述猜汉字"
3494
+ },
3495
+ "brain_teaser": {
3496
+ "name": "脑筋急转弯",
3497
+ "desc": "趣味脑筋急转弯"
3498
+ },
3499
+ "couplet": {
3500
+ "name": "对联",
3501
+ "desc": "AI 出上联,你对下联"
3502
+ },
3503
+ "word_explain": {
3504
+ "name": "你说我猜",
3505
+ "desc": "AI 描述词语你来猜"
3506
+ },
3507
+ "ancient_text": {
3508
+ "name": "文言文翻译",
3509
+ "desc": "文言文翻译白话文挑战"
3510
+ },
3511
+ "homophone": {
3512
+ "name": "谐音梗",
3513
+ "desc": "谐音双关创意挑战"
3514
+ }
3515
+ },
3516
+ "games_en": {
3517
+ "name": "英語ゲーム",
3518
+ "desc": "Word Chain、Hangman、Trivia など英語の言葉遊び",
3519
+ "word_chain": {
3520
+ "name": "Word Chain",
3521
+ "desc": "最後の文字で始まる単語をつなげます"
3522
+ },
3523
+ "twenty_questions": {
3524
+ "name": "20 Questions",
3525
+ "desc": "20回のはい/いいえの質問で物を当てます"
3526
+ },
3527
+ "hangman": {
3528
+ "name": "Hangman",
3529
+ "desc": "1文字ずつ推測して単語を当てます"
3530
+ },
3531
+ "story_builder": {
3532
+ "name": "Story Builder",
3533
+ "desc": "交互にストーリーを作り上げます"
3534
+ },
3535
+ "word_association": {
3536
+ "name": "Word Association",
3537
+ "desc": "自由連想の単語チェーン"
3538
+ },
3539
+ "riddles": {
3540
+ "name": "Riddles",
3541
+ "desc": "英語のなぞなぞを解きます"
3542
+ },
3543
+ "trivia": {
3544
+ "name": "Trivia Quiz",
3545
+ "desc": "一般知識のクイズ"
3546
+ },
3547
+ "rhyme_time": {
3548
+ "name": "Rhyme Time",
3549
+ "desc": "韻を踏む言葉でストーリーを作ります"
3550
+ },
3551
+ "acronym": {
3552
+ "name": "Acronym Game",
3553
+ "desc": "ランダムな頭字語の意味を考えます"
3554
+ },
3555
+ "taboo": {
3556
+ "name": "Taboo",
3557
+ "desc": "禁止ワードを使わずに説明します"
3558
+ },
3559
+ "sentence_builder": {
3560
+ "name": "Sentence Builder",
3561
+ "desc": "与えられた単語で最長の文を作ります"
3562
+ },
3563
+ "emoji_story": {
3564
+ "name": "Emoji Story",
3565
+ "desc": "絵文字を使ってストーリーを伝えます"
3566
+ }
3567
+ },
3568
+ "quiz": {
3569
+ "name": "クイズ & 練習",
3570
+ "desc": "AI 生成の問題とスコアリング",
3571
+ "practice": {
3572
+ "name": "ユニバーサルクイズ",
3573
+ "desc": "科目と難易度を選び、AI がクイズを出題します"
3574
+ },
3575
+ "direction": "科目",
3576
+ "dir": {
3577
+ "programming": "プログラミング",
3578
+ "math": "数学",
3579
+ "english": "英語",
3580
+ "science": "科学",
3581
+ "history": "歴史",
3582
+ "interview": "面接対策",
3583
+ "custom": "カスタム科目"
3584
+ },
3585
+ "difficulty": "難易度",
3586
+ "diff": {
3587
+ "easy": "易しい",
3588
+ "medium": "普通",
3589
+ "hard": "難しい"
3590
+ }
3591
+ }
3592
+ },
3593
+ "theme": {
3594
+ "__mt": true,
3595
+ "title": "Appearance",
3596
+ "mode_title": "Color Mode",
3597
+ "mode_light": "Light",
3598
+ "mode_dark": "Dark",
3599
+ "mode_system": "System",
3600
+ "custom_title": "Custom Themes",
3601
+ "custom_new": "New Theme",
3602
+ "custom_export": "Export",
3603
+ "custom_import": "Import",
3604
+ "custom_delete": "Delete",
3605
+ "custom_activate": "Activate",
3606
+ "custom_deactivate": "Deactivate",
3607
+ "custom_edit": "Edit",
3608
+ "editor_title": "Theme Editor",
3609
+ "name_label": "Theme Name",
3610
+ "no_custom": "No custom themes yet. Create one below.",
3611
+ "groups_base": "Base Colors",
3612
+ "groups_editor": "Editor",
3613
+ "groups_ui": "UI Components",
3614
+ "groups_code": "Code Block",
3615
+ "saved": "Save",
3616
+ "import_error": "Invalid theme file. Please use a valid Moraya theme JSON."
3617
+ },
3618
+ "titlebar": {
3619
+ "unsaved": "未保存",
3620
+ "minimize": "最小化",
3621
+ "maximize": "最大化",
3622
+ "close": "閉じる",
3623
+ "new_file": "新規ファイル",
3624
+ "open_file": "ファイルを開く..."
3625
+ },
3626
+ "transcription": {
3627
+ "title": "文字起こし",
3628
+ "recording": "録音中",
3629
+ "connecting": "接続中...",
3630
+ "paused": "一時停止中",
3631
+ "stopping": "停止中...",
3632
+ "idle": "準備完了",
3633
+ "start": "開始",
3634
+ "stop": "停止",
3635
+ "pause": "一時停止",
3636
+ "resume": "再開",
3637
+ "back": "チャットに戻る",
3638
+ "empty_idle": "「開始」をクリックして録音と文字起こしを始めましょう。",
3639
+ "empty_waiting": "音声を待っています...",
3640
+ "summarize_with_ai": "AI で要約",
3641
+ "save_as_doc": "ドキュメントとして保存",
3642
+ "summarize_prompt": "以下の文字起こしから会議の要約を生成してください。主な議論ポイント、決定事項、アクションアイテムを特定してください。Markdown 形式でフォーマットしてください。",
3643
+ "no_speech_config": "音声認識プロバイダーが設定されていません。設定 → 音声 で追加してください。",
3644
+ "no_speech_config_hint": "設定 → 音声 で音声認識プロバイダー(例:Deepgram)を追加してください。",
3645
+ "go_to_voice_settings": "音声設定を開く"
3646
+ },
3647
+ "update": {
3648
+ "title": "バージョン情報",
3649
+ "current_version": "現在のバージョン",
3650
+ "latest_version": "最新バージョン",
3651
+ "checking": "アップデートを確認中...",
3652
+ "up_to_date": "最新バージョンを使用しています!",
3653
+ "check_failed": "アップデートの確認に失敗しました",
3654
+ "release_notes": "更新内容",
3655
+ "no_asset": "お使いのプラットフォーム用のインストーラーがありません。手動でダウンロードしてください。",
3656
+ "upgrade": "アップグレード",
3657
+ "retry": "再試行",
3658
+ "view_release": "リリースを表示",
3659
+ "downloading": "ダウンロード中...",
3660
+ "download_failed": "ダウンロードに失敗しました",
3661
+ "install_launched": "インストーラーを起動しました。まもなく Moraya が終了します。",
3662
+ "new_version_available": "新しいバージョンが利用可能です!クリックしてアップグレードしてください。"
3663
+ },
3664
+ "voice": {
3665
+ "__mt": true,
3666
+ "title": "Voice Capture",
3667
+ "provider": "Provider",
3668
+ "language": "Language",
3669
+ "doubao": "Doubao (Realtime)",
3670
+ "start": "Record",
3671
+ "stop": "Stop",
3672
+ "processing": "Processing...",
3673
+ "transcript": "Transcript",
3674
+ "words": "words",
3675
+ "structurize": "AI Structurize",
3676
+ "view_history": "View History",
3677
+ "untitled": "Untitled",
3678
+ "key_points": "Key Points",
3679
+ "action_items": "Action Items",
3680
+ "save_note": "Save Note",
3681
+ "discard": "Discard",
3682
+ "quota_exceeded": "Monthly voice quota exceeded. Upgrade or wait until next month.",
3683
+ "quota_near": "You are near your monthly voice limit.",
3684
+ "history": {
3685
+ "title": "Voice History",
3686
+ "new_capture": "+ New Recording",
3687
+ "search_placeholder": "Search transcripts...",
3688
+ "no_results": "No transcripts match your search.",
3689
+ "empty": "No recordings yet. Start capturing your voice!",
3690
+ "reprocess": "Re-process",
3691
+ "delete": "Delete"
3692
+ }
3693
+ },
3694
+ "welcome": {
3695
+ "title": "Moraya へようこそ",
3696
+ "subtitle": "ミニマルで AI 対応の Markdown エディターです。",
3697
+ "features_title": "機能",
3698
+ "feature_wysiwyg": "**WYSIWYG** Markdown 編集",
3699
+ "feature_math": "数式サポート: $E = mc^2$",
3700
+ "feature_themes": "ダーク & ライトテーマ",
3701
+ "feature_ai": "AI パワード ライティングアシスタント",
3702
+ "feature_mcp": "MCP プロトコルによる公開と同期",
3703
+ "feature_lightweight": "軽量(インストーラー約 5MB)",
3704
+ "math_title": "数式の例",
3705
+ "code_title": "コードの例",
3706
+ "table_title": "表の例",
3707
+ "table_feature": "機能",
3708
+ "table_status": "ステータス",
3709
+ "table_done": "完了",
3710
+ "start_writing": "ここにアイデアを書き始めましょう...",
3711
+ "tip": "**ヒント:** `Cmd+I` を押して AI アシスタントパネルを切り替えられます。",
3712
+ "shortcuts_title": "キーボードショートカット",
3713
+ "shortcut_save": "`Cmd+S` — ドキュメントを保存",
3714
+ "shortcut_open": "`Cmd+O` — ファイルを開く",
3715
+ "shortcut_new": "`Cmd+N` — 新規ドキュメント",
3716
+ "shortcut_toggle_mode": "`Cmd+/` — ビジュアル/ソースモード切り替え",
3717
+ "shortcut_split_mode": "`Cmd+Shift+/` — 分割モード切り替え",
3718
+ "shortcut_sidebar": "`Cmd+\\` — サイドバー切り替え",
3719
+ "shortcut_settings": "`Cmd+,` — 設定を開く",
3720
+ "shortcut_ai": "`Cmd+Shift+I` — AI パネル切り替え",
3721
+ "shortcut_export": "`Cmd+Shift+E` — HTML としてエクスポート",
3722
+ "blockquote_title": "引用の例",
3723
+ "blockquote_content": "書く技術とは、自分が何を信じているかを発見する技術である。 — ギュスターヴ・フローベール",
3724
+ "advanced_math_title": "高度な数式",
3725
+ "list_title": "ネストされたリストの例",
3726
+ "list_item1": "はじめに",
3727
+ "list_item1a": "アプリケーションをインストール",
3728
+ "list_item1b": "お好みの設定を構成",
3729
+ "list_item1c": "執筆を開始",
3730
+ "list_item2": "高度な機能",
3731
+ "list_item2a": "AI パワード ライティングアシスタント",
3732
+ "list_item2b": "MCP プロトコル統合",
3733
+ "list_item2c": "複数のエクスポート形式",
3734
+ "list_item3": "カスタマイズ",
3735
+ "list_item3a": "テーマと外観",
3736
+ "list_item3b": "エディター設定",
3737
+ "list_item3c": "キーボードショートカット",
3738
+ "paragraph_title": "Moraya について",
3739
+ "paragraph1": "Moraya は Rust と Tauri で構築された、モダンで軽量な Markdown エディターです。テキストエディターのシンプルさと WYSIWYG インターフェースのパワーを兼ね備え、両方の良さを提供します。",
3740
+ "paragraph2": "「Moraya」という名前は、ラテン語の「mora」(一瞬)と中国語の「雅」(優雅さ)を組み合わせたもので、優雅な執筆の瞬間を象徴しています。",
3741
+ "paragraph3": "技術文書、ブログ記事、学術論文、個人的なメモなど、何を書いていても、Moraya は最も大切なもの、つまりあなたのコンテンツに集中できる、気が散らない環境を提供します。",
3742
+ "hr_title": "水平線",
3743
+ "hr_description": "水平線を使って文書の異なるセクションを区切ることができます:"
3744
+ },
3745
+ "workflow": {
3746
+ "title": "AI ワークフロー",
3747
+ "seo_step": "SEO 最適化",
3748
+ "image_gen_step": "AI 画像",
3749
+ "publish_step": "公開",
3750
+ "publish_desc": "ターゲットプラットフォームに公開",
3751
+ "optional_above": "上記のステップは任意です",
3752
+ "select_targets": "公開ターゲットを選択",
3753
+ "confirm_publish": "公開",
3754
+ "publishing": "公開中...",
3755
+ "publish_success": "公開に成功しました!",
3756
+ "publish_failed": "公開に失敗しました",
3757
+ "mcp_entry": "AI MCP",
3758
+ "mcp_server_count": "サービス接続中",
3759
+ "mcp_tool_count": "ツール",
3760
+ "list": {
3761
+ "title": "Workflows",
3762
+ "new_workflow": "New Workflow",
3763
+ "empty_state": "Automate your notes with AI workflows",
3764
+ "no_workflows": "No workflows yet",
3765
+ "run_now": "Run Now",
3766
+ "last_run": "Last run",
3767
+ "never_run": "Never run",
3768
+ "enable": "Enable",
3769
+ "disable": "Disable",
3770
+ "delete": "Delete",
3771
+ "confirm_delete": "Delete this workflow?",
3772
+ "locked_custom": "Custom workflows require Personal plan or above"
3773
+ },
3774
+ "trigger": {
3775
+ "cron": "Scheduled",
3776
+ "manual": "Manual",
3777
+ "note_event": "Note Event",
3778
+ "webhook": "Webhook"
3779
+ },
3780
+ "status": {
3781
+ "running": "Running",
3782
+ "completed": "Completed",
3783
+ "failed": "Failed",
3784
+ "paused": "Paused",
3785
+ "cancelled": "Cancelled",
3786
+ "enabled": "Enabled",
3787
+ "disabled": "Disabled"
3788
+ },
3789
+ "edit": {
3790
+ "title_new": "New Workflow",
3791
+ "title_edit": "Edit Workflow",
3792
+ "save": "Save",
3793
+ "run": "Run",
3794
+ "cancel": "Cancel",
3795
+ "yaml_label": "Workflow YAML",
3796
+ "yaml_placeholder": "Enter workflow YAML...",
3797
+ "nodes_label": "Nodes",
3798
+ "valid": "Valid",
3799
+ "invalid": "Invalid",
3800
+ "engine_client": "Client Engine",
3801
+ "engine_server": "Server Engine (KMS required)",
3802
+ "unsaved_changes": "You have unsaved changes"
3803
+ },
3804
+ "history": {
3805
+ "title": "Execution History",
3806
+ "no_runs": "No runs yet",
3807
+ "trigger": "Trigger",
3808
+ "started": "Started",
3809
+ "duration": "Duration",
3810
+ "status": "Status",
3811
+ "workflow": "Workflow",
3812
+ "node_results": "Node Results",
3813
+ "node_id": "Node",
3814
+ "error_detail": "Error"
3815
+ },
3816
+ "market": {
3817
+ "title": "Workflow Templates",
3818
+ "templates": "Built-in Templates",
3819
+ "use_template": "Use Template",
3820
+ "export": "Export Workflow",
3821
+ "export_select": "Select workflow to export",
3822
+ "import": "Import Workflow",
3823
+ "import_placeholder": "Paste workflow YAML here...",
3824
+ "import_btn": "Import",
3825
+ "import_success": "Workflow imported successfully",
3826
+ "import_error": "Invalid workflow YAML",
3827
+ "search_placeholder": "Search templates..."
3828
+ },
3829
+ "templates": {
3830
+ "daily_summary": {
3831
+ "name": "Daily Summary",
3832
+ "description": "Automatically summarize your notes every evening"
3833
+ },
3834
+ "note_translation": {
3835
+ "name": "Note Translation",
3836
+ "description": "Translate notes to another language on demand"
3837
+ },
3838
+ "auto_tagging": {
3839
+ "name": "Auto Tagging",
3840
+ "description": "Automatically tag newly created notes with AI"
3841
+ },
3842
+ "weekly_review": {
3843
+ "name": "Weekly Review",
3844
+ "description": "Generate a weekly reflection every Sunday evening"
3845
+ },
3846
+ "knowledge_graph": {
3847
+ "name": "Knowledge Graph",
3848
+ "description": "Extract entities and relationships from all notes"
3849
+ }
3850
+ },
3851
+ "nodes": {
3852
+ "ai_call": "AI Call",
3853
+ "rag_search": "RAG Search",
3854
+ "transform": "Transform",
3855
+ "if": "Condition",
3856
+ "notes_write": "Write Note",
3857
+ "notify": "Notify",
3858
+ "tool_call": "Tool Call"
3859
+ },
3860
+ "quota": {
3861
+ "exceeded": "Workflow quota exceeded",
3862
+ "daily_limit": "Daily run limit reached",
3863
+ "ai_quota": "AI call quota exceeded"
3864
+ },
3865
+ "safety": {
3866
+ "write_permission_title": "Allow Workflow to Write Notes?",
3867
+ "write_permission_body": "Workflow \"{{ name }}\" wants to create or modify notes.",
3868
+ "allow_once": "Allow Once",
3869
+ "allow_always": "Always Allow",
3870
+ "deny": "Deny"
3871
+ }
3872
+ }
3873
+ }