Rewrites the desktop mirror as services/sync/SyncEngine: a persistent outbox, per-account server-clock keyset cursors with paging, pulls that never overwrite unsent local edits, deletions both ways through sync_tombstones and per-row failure isolation. It now covers history titles and favorites, dictionary, every meeting's memos and documents, memo tags, user commands and dictation/meeting templates, and registers the desktop as a device that the phone can disconnect. Fixes shipped defects: the first pull after sign-in fetched nothing, only the first meeting's children were pushed, team meetings leaked into the personal database and lost team_id on re-push, and Realtime never connected because Electron's Node 20 has no global WebSocket (ws is now the transport). Anonymous local-mode records are imported into the first account that signs in. The settings sync section is translated and shows pending/rejected changes; synced screens reload on app:dataChanged.
545 lines
32 KiB
JSON
545 lines
32 KiB
JSON
{
|
||
"app.name": "D3RO Voice",
|
||
"app.tagline": "ローカルAI音声アシスタント",
|
||
"nav.dashboard": "ダッシュボード",
|
||
"nav.history": "履歴",
|
||
"nav.dictionary": "辞書",
|
||
"nav.commands": "コマンド",
|
||
"nav.settings": "設定",
|
||
"nav.meetings": "会議",
|
||
"nav.record": "録音",
|
||
"nav.chat": "チャット",
|
||
"nav.knowledge": "知識",
|
||
"nav.actions": "アクション",
|
||
"nav.teams": "チーム",
|
||
"nav.billing": "支払い",
|
||
"nav.logout": "ログアウト",
|
||
"login.subtitle": "AI音声アシスタント",
|
||
"login.google": "Googleで続ける",
|
||
"login.github": "GitHubで続ける",
|
||
"login.terms": "続行すると、利用規約およびプライバシーポリシーに同意したものとみなされます。",
|
||
"dashboard.systemStatus": "システム状態",
|
||
"dashboard.sessionsToday": "本日のセッション",
|
||
"dashboard.pressToRecord": "{{key}} を押して録音開始",
|
||
"dashboard.hotkeyNotSet": "ホットキー未設定",
|
||
"dashboard.words": "単語",
|
||
"dashboard.total": "合計",
|
||
"dashboard.days": "日",
|
||
"dashboard.sessions": "セッション",
|
||
"dashboard.recentTranscriptions": "最近の文字起こし",
|
||
"dashboard.noHistory": "履歴なし — ホットキーを押して録音を開始してください",
|
||
"dashboard.entries": "{{count}}件",
|
||
"dashboard.currentBackend": "現在のバックエンド",
|
||
"dashboard.backendLocal": "ローカル (Ollama)",
|
||
"dashboard.backendPremium": "プレミアム (Claude)",
|
||
"history.title": "文字起こし履歴",
|
||
"history.search": "検索...",
|
||
"history.entries": "{{count}}件",
|
||
"history.noResults": "検索結果なし",
|
||
"history.noHistory": "履歴なし — 録音を開始してください",
|
||
"history.count": "{{count}}件",
|
||
"dictionary.title": "カスタム辞書",
|
||
"dictionary.words": "{{count}}語",
|
||
"dictionary.add": "追加",
|
||
"dictionary.search": "検索...",
|
||
"dictionary.noResults": "検索結果なし",
|
||
"dictionary.noWords": "単語なし — STTの精度向上のためカスタム単語を追加してください",
|
||
"dictionary.used": "{{count}}回使用",
|
||
"dictionary.editTitle": "単語を編集",
|
||
"dictionary.addTitle": "単語を追加",
|
||
"dictionary.word": "単語",
|
||
"dictionary.pronunciation": "読み仮名 (任意)",
|
||
"commands.title": "LLMコマンド",
|
||
"commands.count": "{{count}}個",
|
||
"commands.add": "追加",
|
||
"commands.activeCommand": "アクティブコマンド",
|
||
"commands.none": "なし",
|
||
"commands.noCommands": "コマンドなし — 追加をクリックして作成",
|
||
"commands.editTitle": "コマンドを編集",
|
||
"commands.addTitle": "コマンドを追加",
|
||
"commands.name": "名前",
|
||
"commands.description": "説明",
|
||
"commands.promptTemplate": "プロンプトテンプレート",
|
||
"commands.promptHelp": "{{text}} は文字起こしされたテキストに置換されます",
|
||
"commands.defaultPrompt": "{{text}} を整えてください。",
|
||
"settings.title": "設定",
|
||
"settings.tabs.general": "一般",
|
||
"settings.tabs.audio": "オーディオ",
|
||
"settings.tabs.stt": "STT",
|
||
"settings.tabs.llm": "LLM",
|
||
"settings.tabs.cloud": "クラウド",
|
||
"settings.tabs.about": "情報",
|
||
"settings.shortcuts": "ショートカット",
|
||
"settings.dictation": "ディクテーション",
|
||
"settings.dictation.desc": "押しながら話します。キーを離すと文字起こしが始まります。",
|
||
"settings.agent": "エージェントモード",
|
||
"settings.agent.descWithKey": "{{key}} を2回クリックするとエージェントモードに入ります。",
|
||
"settings.agent.descNoKey": "先にディクテーションホットキーを設定してください。",
|
||
"settings.oneTouch": "ワンタッチモード",
|
||
"settings.oneTouch.desc": "押して開始、もう一度押して停止。別のショートカットが必要です。",
|
||
"settings.key": "キー",
|
||
"settings.notSet": "未設定",
|
||
"settings.enabled": "有効",
|
||
"settings.disabled": "無効",
|
||
"settings.interface": "インターフェース",
|
||
"settings.theme": "テーマ",
|
||
"settings.theme.system": "システム",
|
||
"settings.theme.light": "ライト",
|
||
"settings.theme.dark": "ダーク",
|
||
"settings.language": "言語",
|
||
"settings.appBehavior": "アプリの動作",
|
||
"settings.closeToTray": "トレイに最小化",
|
||
"settings.autoLaunch": "システム起動時に自動起動",
|
||
"settings.autoInsert": "文字起こし後に自動テキスト挿入",
|
||
"settings.soundEffects": "効果音",
|
||
"settings.microphone": "マイク",
|
||
"settings.inputDevice": "入力デバイス",
|
||
"settings.deviceDefault": "(デフォルト)",
|
||
"settings.textInsert": "テキスト挿入",
|
||
"settings.insertMethod": "挿入方式",
|
||
"settings.insertClipboard": "クリップボード (Ctrl+V)",
|
||
"settings.insertKeyboard": "キーボード入力",
|
||
"settings.whisperModel": "音声入力モデル",
|
||
"settings.model.tiny": "tiny (39 MB, 最速)",
|
||
"settings.model.base": "base (74 MB, バランス)",
|
||
"settings.model.small": "small (244 MB, 良好)",
|
||
"settings.model.medium": "medium (769 MB, 高精度)",
|
||
"settings.model.large": "large-v3 (1.5 GB, 最高)",
|
||
"settings.model.largeTurbo": "large-v3-turbo(1.6 GB、高速・高精度)",
|
||
"settings.sttLanguage": "認識言語",
|
||
"settings.sttLang.auto": "自動検出",
|
||
"settings.ollamaServer": "Ollamaサーバー",
|
||
"settings.ollamaUrl": "OllamaサーバーURL",
|
||
"settings.ollamaHint": "Ollamaが起動していれば自動的に接続されます。モデルはOllamaから直接pullしてください(例: ollama pull gemma4:e4b)。",
|
||
"settings.postProcess": "音声後処理",
|
||
"settings.defaultAction": "デフォルト後処理コマンド",
|
||
"settings.action.none": "なし (元のテキストをそのまま)",
|
||
"settings.action.refine": "整形 (文法+自然さ)",
|
||
"settings.action.translate": "翻訳",
|
||
"settings.action.summarize": "要約",
|
||
"settings.action.grammar": "文法修正",
|
||
"settings.action.custom": "カスタムプロンプト",
|
||
"settings.actionHint": "ホットキーで録音後、文字起こしされたテキストに選択したLLM後処理が適用されます。Ollamaが接続されている場合のみ動作します。",
|
||
"settings.about.version": "バージョン",
|
||
"settings.about.techStack": "技術スタック",
|
||
"settings.about.techStackValue": "Electron + React 19 + MUI 7 + TypeScript",
|
||
"settings.about.voiceEngine": "音声エンジン",
|
||
"settings.about.voiceEngineValue": "STT: faster-whisper (ローカル) / LLM: Ollama (ローカル)",
|
||
"settings.about.description": "Speaklyリバースエンジニアリングのノウハウをもとに構築したローカルAI音声アシスタント。クラウドに依存せず完全ローカルで動作します。",
|
||
"settings.about.restartOnboarding": "初期設定ガイドをもう一度見る",
|
||
"status.nudge.title": "Ollamaが起動していません",
|
||
"status.nudge.desc": "LLM後処理(翻訳、要約など)を使用するにはOllamaが必要です。",
|
||
"status.nudge.guide": "インストールガイドを見る →",
|
||
"hotkey.title": "ショートカット設定",
|
||
"hotkey.dictationTitle": "ディクテーションショートカットの設定",
|
||
"hotkey.oneTouchTitle": "ワンタッチモードショートカットの設定",
|
||
"hotkey.prompt": "キーの組み合わせを押してください...",
|
||
"hotkey.ready": "✓ {{keys}} — 保存を押してください",
|
||
"hotkey.noKey": "キーを入力してください",
|
||
"hotkey.reserved": "{{keys}} はシステム予約のショートカットです",
|
||
"hotkey.current": "現在: {{keys}}",
|
||
"hotkey.hint": "組み合わせキー(例: Ctrl+Shift+Q)または単一キー(例: F5)を入力してください",
|
||
"hotkey.reset": "再入力",
|
||
"ollama.title": "OLLAMA SETUP GUIDE",
|
||
"ollama.step1.title": "STEP 1 — Ollamaのインストール",
|
||
"ollama.step1.desc": "OllamaはローカルでLLMを実行するための無料ツールです。",
|
||
"ollama.step2.title": "STEP 2 — モデルのダウンロード",
|
||
"ollama.step2.desc": "ターミナルで希望のモデルをpullしてください。日本語におすすめ:",
|
||
"ollama.step2.alt": "または大きいモデル: ollama pull gemma4:26b (より正確、より遅い)",
|
||
"ollama.step3.title": "STEP 3 — 自動接続",
|
||
"ollama.step3.desc": "Ollamaが起動するとD3RO-VOICEが自動的に検出します。下部ステータスバーのLEDが赤から緑に変われば準備完了!",
|
||
"service.sttEngine": "STT ENGINE",
|
||
"service.ollamaLlm": "OLLAMA LLM",
|
||
"service.hotkeyHook": "HOTKEY HOOK",
|
||
"service.audioInput": "AUDIO INPUT",
|
||
"service.ready": "READY",
|
||
"service.connected": "CONNECTED",
|
||
"service.offline": "OFFLINE",
|
||
"service.active": "ACTIVE",
|
||
"service.standby": "STANDBY",
|
||
"service.premiumLlm": "PREMIUM LLM",
|
||
"service.notConfigured": "NOT SET",
|
||
"common.cancel": "キャンセル",
|
||
"common.save": "保存",
|
||
"common.delete": "削除",
|
||
"common.close": "閉じる",
|
||
"common.confirm": "確認",
|
||
"common.loading": "読み込み中...",
|
||
"common.copy": "コピー",
|
||
"common.test": "テスト",
|
||
"common.stop": "停止",
|
||
"date.today": "今日",
|
||
"date.yesterday": "昨日",
|
||
"settings.theme.nord": "Nord",
|
||
"settings.theme.solarized": "Solarized",
|
||
"settings.theme.catppuccin": "Catppuccin",
|
||
"settings.theme.dracula": "Dracula",
|
||
"settings.sttLang.ko": "한국語",
|
||
"settings.sttLang.en": "English",
|
||
"settings.sttLang.ja": "日本語",
|
||
"settings.sttLang.zh": "中文",
|
||
"template.outputHelperText": "{{フィールド名}} でプレースホルダーを使用",
|
||
"nav.meeting": "ミーティング",
|
||
"meeting.title": "ミーティングモード",
|
||
"meeting.newMeeting": "新規ミーティング",
|
||
"meeting.stopRecording": "録音停止",
|
||
"meeting.recording": "録音中",
|
||
"meeting.processing": "議事録を生成中...",
|
||
"meeting.completed": "完了",
|
||
"meeting.error": "エラー",
|
||
"meeting.memoPlaceholder": "メモを入力(Enterで追加)",
|
||
"meeting.noSessions": "ミーティングの録音がありません",
|
||
"meeting.noSessionsDesc": "「新規ミーティング」を押して録音を開始してください",
|
||
"meeting.transcript": "生のトランスクリプト",
|
||
"meeting.memos": "メモ",
|
||
"meeting.sessions": "{{count}} セッション",
|
||
"meeting.duration": "{{minutes}} 分",
|
||
"meeting.editTitle": "タイトルを編集",
|
||
"meeting.untitled": "無題のミーティング",
|
||
"meeting.processingStep.merging": "トランスクリプトをマージ中...",
|
||
"meeting.processingStep.generating": "LLMで議事録を生成中...",
|
||
"meeting.processingStep.parsing": "議事録を解析中...",
|
||
"meeting.processingStep.saving": "保存中...",
|
||
"meeting.processingStep.notifying": "通知を送信中...",
|
||
"meeting.transcriptTab": "文字起こし",
|
||
"meeting.addDocument": "ドキュメント追加",
|
||
"meeting.selectTemplate": "テンプレートを選択",
|
||
"meeting.generate": "生成",
|
||
"meeting.generating": "ドキュメントを生成中...",
|
||
"meeting.editMode": "編集",
|
||
"meeting.previewMode": "プレビュー",
|
||
"meeting.modified": "編集済み",
|
||
"meeting.originalText": "原文",
|
||
"meeting.editedText": "編集版",
|
||
"meeting.exportDocx": "DOCXエクスポート",
|
||
"meeting.exportTxt": "TXTエクスポート",
|
||
"meeting.exportFormat": "エクスポート",
|
||
"meeting.customPrompt": "カスタムプロンプト",
|
||
"meeting.templateName": "テンプレート名",
|
||
"meeting.templatePrompt": "AIプロンプト",
|
||
"meeting.downloadTranscript": "文字起こしをダウンロード",
|
||
"meeting.polish": "AI で整える",
|
||
"meeting.polishing": "AI が文字起こしを整えています...",
|
||
"meeting.chat": "AI チャット",
|
||
"meeting.chatPlaceholder": "会議について質問してください...",
|
||
"meeting.chatClear": "チャットをクリア",
|
||
"meeting.copyToClipboard": "クリップボードにコピー",
|
||
"meeting.chatCollapse": "チャットを折り畳む",
|
||
"meeting.chatExpand": "チャットを展開",
|
||
"meeting.chatReasoning": "推論中…",
|
||
"meeting.exportMd": "Markdown (.md)",
|
||
"meeting.exportPdfFmt": "PDF (.pdf)",
|
||
"meeting.polishFailed": "AI磨き上げに失敗しました",
|
||
"meeting.viewDetailError": "会議の詳細を読み込めませんでした",
|
||
"meeting.startRecordingError": "録音を開始できませんでした",
|
||
"meeting.diarize": "話者分離",
|
||
"meeting.diarizing": "話者を識別中...",
|
||
"settings.hfToken": "HuggingFaceトークン",
|
||
"settings.hfTokenHint": "話者分離にはHuggingFaceトークンが必要です",
|
||
"settings.diarization": "話者分離",
|
||
"settings.diarizationHint": "録音終了後に自動的に話者を識別します",
|
||
"theme.label": "テーマ",
|
||
"theme.dark": "ダーク",
|
||
"theme.light": "ライト",
|
||
"theme.auto": "自動 (システム)",
|
||
"theme.nord": "Nord",
|
||
"theme.solarized": "Solarized",
|
||
"theme.catppuccin": "Catppuccin",
|
||
"theme.dracula": "Dracula",
|
||
"license.signInRequired": "Sign in to manage your subscription",
|
||
"license.signInToUpgrade": "Sign in to upgrade",
|
||
"license.subscriptionManage": "Manage subscription",
|
||
"license.upgradeToProDesc": "Unlock Premium AI models, cloud sync, and more",
|
||
"license.currentPlanActive": "Your current plan",
|
||
"license.premiumQuota": "Premium Quota",
|
||
"license.modelHaiku": "Haiku",
|
||
"license.modelSonnet": "Sonnet",
|
||
"license.modelOpus": "Opus",
|
||
"license.quotaWeekly": "weekly",
|
||
"license.quotaDaily": "daily",
|
||
"mobile.works.title": "WORKS",
|
||
"mobile.works.count": "機能 {{count}}件",
|
||
"mobile.works.searchPlaceholder": "機能を検索",
|
||
"mobile.works.pinned": "ピン留め",
|
||
"mobile.works.pin": "ピン留め",
|
||
"mobile.works.unpin": "ピン留め解除",
|
||
"mobile.works.emptySearch": "一致する機能がありません。",
|
||
"mobile.works.section.meetings": "会議ワーク",
|
||
"mobile.works.section.team": "チーム・ナレッジ",
|
||
"mobile.works.section.data": "データ・通知",
|
||
"mobile.works.historyDescription": "録音とインポートの文字起こしを検索・管理します。",
|
||
"mobile.meetings.templateEmpty": "利用可能な会議ドキュメントテンプレートがありません。テンプレートなしで会議を開始できます。",
|
||
"mobile.meetings.templateNone": "テンプレートなしで開始",
|
||
"mobile.meetings.templateNoneDesc": "ドキュメント生成時にテンプレートを選択します",
|
||
"keybinding.mouse.left": "マウス左ボタン",
|
||
"keybinding.mouse.right": "マウス右ボタン",
|
||
"keybinding.mouse.middle": "マウス中ボタン",
|
||
"keybinding.mouse.back": "マウス戻るボタン",
|
||
"keybinding.mouse.forward": "マウス進むボタン",
|
||
"keybinding.group.mouse": "マウス",
|
||
"keybinding.group.modifier": "修飾キー",
|
||
"keybinding.group.function": "ファンクションキー",
|
||
"keybinding.group.letter": "文字",
|
||
"keybinding.group.digit": "数字",
|
||
"keybinding.group.numpad": "テンキー",
|
||
"keybinding.group.navigation": "ナビゲーション",
|
||
"keybinding.group.editing": "編集",
|
||
"keybinding.group.punctuation": "記号",
|
||
"keybinding.group.system": "システム",
|
||
"keybinding.action.dictation": "ディクテーション",
|
||
"keybinding.action.dictation.desc": "押している間、録音します。",
|
||
"keybinding.action.handsFree": "ワンタッチモード",
|
||
"keybinding.action.handsFree.desc": "2回押して切り替えます。",
|
||
"keybinding.action.command": "音声コマンド",
|
||
"keybinding.action.command.desc": "音声でコマンドを実行します。",
|
||
"keybinding.action.caption": "リアルタイム字幕",
|
||
"keybinding.action.caption.desc": "リアルタイム字幕をオン・オフします。",
|
||
"keybinding.action.historyPopup": "履歴ポップアップ",
|
||
"keybinding.action.historyPopup.desc": "履歴ポップアップを開きます。",
|
||
"keybinding.action.commandPopup": "コマンドポップアップ",
|
||
"keybinding.action.commandPopup.desc": "コマンドポップアップを開きます。",
|
||
"keybinding.reject.unknownKey": "サポートされていないキーです",
|
||
"keybinding.reject.systemReserved": "システム予約のショートカットです",
|
||
"keybinding.reject.modifierRequired": "修飾キー(Ctrl/Alt/Shift)と組み合わせて使用してください",
|
||
"keybinding.disabled.mouseLeft": "左クリックはすべての画面操作に使われるため、割り当てできません",
|
||
"keybinding.warning.mousePassthrough": "マウスボタンは本来の動作も同時に実行されます",
|
||
"keybinding.ui.add": "追加",
|
||
"keybinding.ui.remove": "削除",
|
||
"keybinding.ui.reset": "既定値に戻す",
|
||
"keybinding.ui.tabRecord": "直接入力",
|
||
"keybinding.ui.tabList": "一覧から選択",
|
||
"keybinding.ui.search": "キーを検索",
|
||
"keybinding.ui.searchEmpty": "検索結果がありません",
|
||
"keybinding.ui.pressKeys": "使用するキーまたはマウスボタンを押してください",
|
||
"keybinding.ui.noBindings": "ショートカット未設定",
|
||
"keybinding.ui.conflictWith": "{{action}}と重複しています",
|
||
"keybinding.ui.modifiers": "修飾キー",
|
||
"keybinding.ui.selectedKey": "選択したキー",
|
||
"keybinding.ui.sectionVoice": "音声",
|
||
"keybinding.ui.sectionWindow": "ウィンドウ / ポップアップ",
|
||
"keybinding.ui.duplicate": "すでに追加されているショートカットです",
|
||
"keybinding.ui.holdMode": "長押し",
|
||
"keybinding.ui.doublePress": "2回押し",
|
||
"keybinding.ui.pickerTitle": "ショートカット設定",
|
||
"keybinding.ui.pressToRecord": "押して録音開始",
|
||
"keybinding.ui.recordHint": "組み合わせキー(例: Ctrl+Shift+Q)または単一キー(例: F5)を入力してください",
|
||
"keybinding.ui.recordAgain": "再入力",
|
||
"keybinding.ui.saveFailed": "ショートカットを保存できませんでした",
|
||
"keybinding.ui.globalEnabled": "グローバルショートカットを使用",
|
||
"input.tab": "入力",
|
||
"input.consent.title": "入力データの収集",
|
||
"input.consent.description": "任意です。キー入力とクリック回数、マウスの移動距離を数えて入力パターンを表示します。どのキーを押したかは保存しません。",
|
||
"input.consent.collect": "キーボードとマウスの統計を収集",
|
||
"input.consent.running": "収集中です。",
|
||
"input.consent.stopped": "収集はオフです。何も記録しません。",
|
||
"input.consent.pause": "収集を一時停止",
|
||
"input.consent.learnText": "入力したテキストを学習",
|
||
"input.consent.learnTextHint": "フォーカス中の入力欄を読み、言い回しを学習します。パスワード欄は常に除外されます。",
|
||
"input.consent.excludedApps": "除外するアプリ",
|
||
"input.consent.excludedAppsPlaceholder": "keepassxc.exe, 1password.exe",
|
||
"input.consent.excludedAppsHint": "カンマ区切りの実行ファイル名です。これらのアプリでは読み取りも計測もしません。",
|
||
"input.consent.clearAll": "収集したデータを削除",
|
||
"input.suggestion.title": "次の一文の提案",
|
||
"input.suggestion.description": "これから書く一文を予測し、カーソルの隣に表示します。承認すると挿入されます。",
|
||
"input.suggestion.enabled": "入力中に提案を表示",
|
||
"input.suggestion.modelReady": "ローカルモデル準備完了。",
|
||
"input.suggestion.modelMissing": "ローカルモデルが起動していません — 提案は無効です。",
|
||
"input.suggestion.delay": "遅延 (ms)",
|
||
"input.suggestion.minPrefix": "最小文字数",
|
||
"input.suggestion.modelDefault": "既定のモデルを使用",
|
||
"input.suggestion.overlayInteractive": "提案ボックスのクリックを許可",
|
||
"input.suggestion.overlayVisible": "提案を表示中",
|
||
"input.suggestion.keyHint": "承認・次候補・閉じるはグローバルキーバインドです(設定 > ショートカット)。",
|
||
"input.suggestion.requestNow": "今すぐ提案",
|
||
"input.suggestion.usage": "本日 {{requests}}/{{budget}} 回使用",
|
||
"input.suggestion.lastSkip": "最後にスキップした理由: {{reason}}",
|
||
"input.insights.title": "直近 {{days}} 日",
|
||
"input.insights.keystrokes": "キー入力",
|
||
"input.insights.clicks": "クリック",
|
||
"input.insights.words": "入力した単語",
|
||
"input.insights.sentences": "文",
|
||
"input.insights.mouseDistance": "マウス移動",
|
||
"input.insights.perDayMeters": " m/日",
|
||
"input.insights.phrases": "個人フレーズ",
|
||
"input.insights.empty": "まだ活動が記録されていません。",
|
||
"input.insights.topApps": "よく入力するアプリ",
|
||
"input.insights.appRow": "キー {{keystrokes}} · クリック {{clicks}}",
|
||
"input.insights.privacyNote": "この端末にはカウンターと距離のみ保存されます。キーの内容は保存されません。",
|
||
"input.phrases.title": "個人フレーズ",
|
||
"input.phrases.description": "入力と音声入力から学習した文です。文体を合わせるために使います。",
|
||
"input.phrases.empty": "まだ学習されたフレーズはありません。",
|
||
"input.phrases.delete": "フレーズを削除",
|
||
"input.feedback.excludedSaved": "除外リストを保存しました。",
|
||
"input.feedback.cleared": "収集したデータを削除しました。",
|
||
"popup.suggestion.hintAccept": "承認",
|
||
"popup.suggestion.hintNext": "次へ",
|
||
"popup.suggestion.hintDismiss": "閉じる",
|
||
"popup.suggestion.hintMove": "移動",
|
||
"popup.suggestion.loading": "生成中…",
|
||
"keybinding.ui.sectionInput": "入力サジェスト",
|
||
"keybinding.action.suggestionAccept": "サジェストを承認",
|
||
"keybinding.action.suggestionAccept.desc": "サジェストされた文を現在のアプリに挿入します。",
|
||
"keybinding.action.suggestionNext": "次のサジェスト",
|
||
"keybinding.action.suggestionNext.desc": "次の候補に切り替えます。",
|
||
"keybinding.action.suggestionDismiss": "サジェストを閉じる",
|
||
"keybinding.action.suggestionDismiss.desc": "現在のサジェストを隠します。",
|
||
"input.suggestion.timeout": "応答上限 (ms)",
|
||
"input.suggestion.latency": "前回の応答: {{ms}}ms",
|
||
"input.suggestion.slowWarning": "入力速度には遅いです — より小さいモデルを試してください。",
|
||
"input.diagnostics.title": "リアルタイム診断",
|
||
"input.diagnostics.app": "フォーカス中のアプリ: {{app}}",
|
||
"input.diagnostics.unknownApp": "(不明)",
|
||
"input.diagnostics.noSnapshot": "まだ入力欄を読み取っていません — テキスト欄をクリックして入力してください。",
|
||
"input.diagnostics.readable": "入力欄を読み取れます ({{source}}, {{length}} 文字) — 提案が動作します。",
|
||
"input.diagnostics.notReadable": "このアプリは入力欄のテキストを公開していません — 読み取れないため提案できません。",
|
||
"input.diagnostics.password": "パスワード欄 — 設計上読み取りを遮断します。",
|
||
"input.diagnostics.caretFallback": "カーソル位置が不明なため、文書の末尾を入力位置とみなします。",
|
||
"input.diagnostics.composing": "IME 変換中 — 提案は少し待ってから表示されます。",
|
||
"input.suggestion.onScreenLabel": "オーバーレイ状態",
|
||
"input.suggestion.onScreen": "表示中",
|
||
"input.suggestion.offScreen": "非表示",
|
||
"input.suggestion.generating": "生成中…",
|
||
"input.kbView.knowledge": "ナレッジベース",
|
||
"input.kbView.insights": "入力インサイト",
|
||
"input.insights.tabs.overview": "概要",
|
||
"input.insights.tabs.keyboard": "キーボード",
|
||
"input.insights.tabs.mouse": "マウス",
|
||
"input.insights.tabs.apps": "アプリ",
|
||
"input.insights.tabs.phrases": "フレーズ・提案",
|
||
"input.insights.chars": "入力文字数",
|
||
"input.insights.wordChars": "文字",
|
||
"input.insights.backspaces": "削除",
|
||
"input.insights.shortcuts": "ショートカット",
|
||
"input.insights.doubleClicks": "ダブルクリック",
|
||
"input.insights.scrollTicks": "スクロール",
|
||
"input.insights.activeMinutes": "アクティブ時間",
|
||
"input.insights.activeDays": "記録日数",
|
||
"input.insights.streak": "最長連続",
|
||
"input.insights.peakDay": "最多入力日",
|
||
"input.insights.perDayAverage": "1日平均",
|
||
"input.insights.mouseDistanceTotal": "移動距離合計",
|
||
"input.insights.hourlyTitle": "時間帯別 (0〜23時)",
|
||
"input.insights.dailyTitle": "日別推移",
|
||
"input.insights.wordsDailyTitle": "日別の単語",
|
||
"input.insights.distanceDailyTitle": "日別マウス移動",
|
||
"input.insights.topHoursHint": "Busiest hours: {{hours}}",
|
||
"input.insights.mouseNote": "Mouse travel is the sum of per-axis absolute deltas (Manhattan), the same measure ActivityWatch uses.",
|
||
"input.insights.appsHint": "Top apps by typing volume. The bar is that app’s share of all keystrokes.",
|
||
"input.insights.suggestions": "提案",
|
||
"input.insights.suggestionsTotal": "生成数",
|
||
"input.insights.suggestionsAccepted": "承認",
|
||
"input.insights.acceptRate": "承認率",
|
||
"input.insights.avgLatency": "平均応答",
|
||
"input.insights.suggestionHistory": "最近の提案",
|
||
"input.insights.accepted": "承認",
|
||
"input.insights.notAccepted": "未承認",
|
||
"input.insights.noSuggestions": "No suggestions recorded yet.",
|
||
"input.insights.samplesNote": "{{count}} learned samples.",
|
||
"input.insights.collectedAt": "Last capture {{at}}",
|
||
"input.insights.rangeLabel": "期間",
|
||
"input.insights.rangeDays": "{{days}}日",
|
||
"input.insights.headerSummary": "Last {{days}} days · {{keys}} keystrokes · {{apps}} apps",
|
||
"input.insights.disabledHint": "Input collection is off. Turn it on in Settings > Input and statistics will collect here.",
|
||
"input.insights.statsMovedHint": "詳細統計はナレッジベース > 入力インサイトにあります。",
|
||
"input.chart.max": "最大 {{value}}",
|
||
"input.chart.noData": "データがまだありません。",
|
||
"input.unit.perDay": "/日",
|
||
"input.unit.perDayMeters": "m/日",
|
||
"input.unit.meters": "m",
|
||
"input.unit.ms": "ms",
|
||
"input.unit.percent": "%",
|
||
"popup.suggestion.warming": "モデルを準備中…",
|
||
"popup.suggestion.hintGenerating": "生成中…",
|
||
"popup.suggestion.hintGeneratingMore": "さらに生成中…(最大{{max}}件)",
|
||
"keybinding.action.suggestionPrev": "前の候補",
|
||
"keybinding.action.suggestionPrev.desc": "前の候補に移動します。",
|
||
"input.insights.tabs.graph": "グラフ",
|
||
"input.graph.description": "Your sentences are stored as nodes and their relations as edges (what follows what, which share terms) so suggestions can pull personal context. Local only.",
|
||
"input.graph.nodes": "文ノード",
|
||
"input.graph.followsEdges": "続きの連結",
|
||
"input.graph.sharesEdges": "用語共有の連結",
|
||
"input.graph.topEdges": "強い連結",
|
||
"input.graph.recentNodes": "最近のノード",
|
||
"input.graph.searchLabel": "文を検索",
|
||
"input.graph.searchPlaceholder": "e.g. meeting schedule",
|
||
"input.graph.searchAction": "検索",
|
||
"input.graph.neighbors": "連結した文",
|
||
"input.graph.empty": "The graph is empty. Enable \"Learn the text I type\" in Settings > Input and it fills up.",
|
||
"input.graph.kindFollows": "続き",
|
||
"input.graph.kindShares": "用語共有",
|
||
"popup.suggestion.generating": "生成中… ({{seconds}}秒)",
|
||
"keybinding.ui.auditClear": "ショートカットの競合や無効な設定はありません。",
|
||
"keybinding.ui.auditIssues": "ショートカットの問題 {{count}} 件",
|
||
"keybinding.ui.auditInvalid": "{{action}}: {{reason}}",
|
||
"keybinding.ui.auditConflict": "{{action}} は {{conflicts}} と競合しています",
|
||
"keybinding.ui.auditUnknown": "不明な問題",
|
||
"input.flow.title": "集中しやすい時間帯",
|
||
"input.flow.empty": "時間帯別の入力データがまだ不足しています。",
|
||
"input.flow.hour": "{{hour}}:00",
|
||
"input.flow.window": "スコア {{score}} · 1日 {{minutes}}分アクティブ · 編集 {{friction}}%",
|
||
"input.friction.title": "編集の摩擦",
|
||
"input.friction.value": "100文字あたり {{count}} 回",
|
||
"input.friction.band.steady": "安定",
|
||
"input.friction.band.watch": "注意",
|
||
"input.friction.band.high": "高い",
|
||
"input.appQuality.title": "アプリ別の提案品質",
|
||
"input.appQuality.empty": "アプリ別の提案履歴はまだありません。",
|
||
"input.appQuality.row": "{{accepted}}/{{total}} 件承認 · {{rate}}% · {{latency}}ms",
|
||
"input.phrases.metadata": "{{source}} · {{count}}回 · {{app}}",
|
||
"input.phrases.appUnknown": "共通",
|
||
"input.privacy.title": "ローカルデータの明細",
|
||
"input.privacy.localOnly": "このデータはこの端末だけに保存されます。",
|
||
"input.privacy.rawKeys": "個別のキーイベントとキーコードは保持しません。学習用の入力テキスト標本は下で別に表示します。",
|
||
"input.privacy.activityRetention": "活動記録の保持",
|
||
"input.privacy.suggestionRetention": "提案記録の保持",
|
||
"input.privacy.learnedRetention": "学習文の保持",
|
||
"input.privacy.activityBuckets": "活動バケット",
|
||
"input.privacy.typingSamples": "入力サンプル",
|
||
"input.privacy.personalPhrases": "個人フレーズ",
|
||
"input.privacy.suggestions": "提案記録",
|
||
"input.privacy.days": "{{days}}日",
|
||
"input.privacy.untilDeleted": "削除するまで",
|
||
"input.exclusion.recommendation": "{{app}} で読めない入力が {{samples}} 回繰り返されました({{reason}})。",
|
||
"input.exclusion.reason.repeated-unreadable": "繰り返し読めない",
|
||
"input.exclusion.reason.repeated-empty": "繰り返し空",
|
||
"input.exclusion.addButton": "{{app}} を除外に追加",
|
||
"input.feedback.recommendationSaved": "{{app}} を除外に追加しました。",
|
||
"popup.suggestion.sourceModel": "ローカルモデル",
|
||
"popup.suggestion.sourceMemory": "ローカル記憶",
|
||
"popup.suggestion.continuations": "続き",
|
||
"popup.suggestion.related": "関連",
|
||
"popup.suggestion.phrases": "フレーズ",
|
||
"popup.suggestion.appPhrases": "このアプリのフレーズ",
|
||
"input.privacy.typingSamplesRetention": "入力テキスト標本の保持",
|
||
"input.privacy.unavailable": "ローカルデータの明細は現在利用できません。件数と保持期間は表示されません。",
|
||
"input.feedback.clearFailed": "収集したデータを削除できませんでした。",
|
||
"input.feedback.excludedFailed": "除外設定を保存できませんでした。",
|
||
"input.feedback.recommendationFailed": "{{app}} を除外に追加できませんでした。",
|
||
"popup.caption.loading": "音声モデルを準備中…",
|
||
"popup.caption.waiting": "聞き取り中… 最初の字幕まで数秒かかることがあります",
|
||
"popup.caption.dragHint": "ドラッグで移動 · ダブルクリックで元の位置",
|
||
"settings.captionRefine": "文脈で字幕を整える",
|
||
"settings.captionRefine.desc": "確定した字幕の区切り・句読点・聞き間違いを、ローカルAIが前後の文脈に合わせて直します。",
|
||
"settings.captionModel": "リアルタイム字幕モデル",
|
||
"settings.captionModel.same": "音声入力と同じ",
|
||
"settings.captionModel.desc": "リアルタイム字幕だけを別のモデルで認識します。音声入力モデルと同時に読み込まれます。",
|
||
"history.favorite": "お気に入り",
|
||
"history.unfavorite": "お気に入りを解除",
|
||
"cloudSync.title": "クラウド同期",
|
||
"cloudSync.description": "履歴・辞書・会議・メモタグ・コマンド・テンプレートをモバイルとウェブに自動で同期します。どの端末で削除しても他の端末からも削除されます。",
|
||
"cloudSync.signIn": "ログイン",
|
||
"cloudSync.signedInAs": "{{email}} でログイン中",
|
||
"cloudSync.noEmail": "メールなし",
|
||
"cloudSync.lastSync": "最終同期: {{time}}",
|
||
"cloudSync.never": "まだありません",
|
||
"cloudSync.upToDate": "すべての変更をアップロード済み",
|
||
"cloudSync.pending": "アップロード待ちの変更 {{count}} 件",
|
||
"cloudSync.failed": "サーバーに拒否された変更 {{count}} 件 —「今すぐ同期」で再試行します",
|
||
"cloudSync.syncNow": "今すぐ同期",
|
||
"cloudSync.syncing": "同期中…",
|
||
"cloudSync.signOut": "ログアウト",
|
||
"cloudSync.browserPending": "ブラウザでログインを完了してください。",
|
||
"cloudSync.signedOut": "ログアウトしました。このコンピューターの記録はそのまま残ります。",
|
||
"cloudSync.done": "同期完了({{count}} 件反映)",
|
||
"cloudSync.doneWithErrors": "同期完了({{count}} 件反映、{{errors}} 件失敗 — 次回の同期で再試行)"
|
||
}
|