{
  "home": {
    "title": "AITuber Flow",
    "subtitle": "ビジュアルワークフローエディタ",
    "newWorkflow": "新規作成",
    "import": "インポート",
    "loading": "読み込み中...",
    "retry": "再試行",
    "serverError": "バックエンドサーバー (http://localhost:8001) が起動していることを確認してください",
    "templates": "テンプレート",
    "templatesDesc": "プリセットのワークフローですぐに始められます",
    "yourWorkflows": "ワークフロー一覧",
    "noWorkflows": "ワークフローがありません",
    "noWorkflowsDesc": "新規作成するか、上のテンプレートから始めましょう",
    "createFirst": "最初のワークフローを作成",
    "nodes": "ノード",
    "connections": "接続",
    "delete": "削除",
    "duplicate": "複製",
    "export": "エクスポート",
    "deleteConfirm": "このワークフローを削除しますか？"
  },
  "editor": {
    "save": "保存",
    "saved": "保存済み",
    "saving": "保存中...",
    "run": "実行",
    "stop": "停止",
    "running": "実行中",
    "back": "戻る",
    "undo": "元に戻す",
    "redo": "やり直す"
  },
  "sidebar": {
    "search": "ノードを検索...",
    "input": "入力",
    "llm": "LLM",
    "tts": "音声合成",
    "output": "出力",
    "control": "制御",
    "utility": "ユーティリティ"
  },
  "settings": {
    "nodeSettings": "ノード設定",
    "selectNode": "ノードを選択して編集",
    "deleteNode": "ノードを削除"
  },
  "logs": {
    "title": "実行ログ",
    "clear": "クリア",
    "empty": "ログがありません。ワークフローを実行するとここに表示されます。"
  },
  "character": {
    "title": "キャラクター",
    "name": "名前",
    "personality": "性格"
  },
  "node": {
    "start": "開始",
    "end": "終了",
    "manualInput": "手動入力",
    "consoleOutput": "コンソール出力",
    "openaiLlm": "OpenAI LLM",
    "anthropicLlm": "Claude LLM",
    "googleLlm": "Gemini LLM",
    "ollamaLlm": "Ollama LLM",
    "voicevoxTts": "VOICEVOX",
    "coeiroinkTts": "COEIROINK",
    "sbv2Tts": "Style-Bert-VITS2",
    "youtubeChat": "YouTubeチャット",
    "twitchChat": "Twitchチャット",
    "switch": "条件分岐",
    "delay": "遅延",
    "loop": "ループ",
    "foreach": "繰り返し",
    "httpRequest": "HTTPリクエスト",
    "textTransform": "テキスト変換",
    "random": "ランダム",
    "timer": "タイマー",
    "variable": "変数"
  },
  "nodeDescription": {
    "start": "ワークフローの開始点。\n【使い方】このノードから処理が始まります。次のノードに接続してください。",
    "end": "ワークフローの終了点。\n【使い方】処理の最後に配置。入力を受けて処理を完了します。",
    "loop": "指定回数だけ処理を繰り返すループノード。\n【使い方】設定で繰り返し回数を指定。body出力に繰り返す処理を接続。",
    "foreach": "配列の各要素に対して処理を繰り返すノード。\n【使い方】array入力に配列を接続。itemには現在の要素が出力されます。",
    "youtube-chat": "YouTubeライブのコメントを取得する入力ノード。\n【使い方】設定でVideo IDを入力。コメントが来るとmessageとauthorを出力。",
    "twitch-chat": "Twitchのチャットメッセージを取得する入力ノード。\n【使い方】設定でチャンネル名を入力。チャットが来るとmessageとauthorを出力。",
    "manual-input": "手動でテキストを入力するノード。\n【使い方】実行時にテキストを入力。テスト・デバッグに便利。",
    "openai-llm": "OpenAI APIでテキスト生成するLLMノード。\n【使い方】promptに質問を接続。設定でモデルとシステムプロンプトを指定。",
    "voicevox-tts": "VOICEVOXでテキストを音声に変換するTTSノード。\n【使い方】textに読み上げテキストを接続。設定で話者を選択。※VOICEVOX起動が必要",
    "console-output": "データをコンソールに出力するデバッグ用ノード。\n【使い方】任意のデータを接続。画面下部のコンソールに出力されます。",
    "switch": "条件に基づいて処理を分岐させるノード。\n【使い方】valueに判定値を接続。設定で条件を指定し、true/falseに分岐。",
    "delay": "指定時間だけ処理を遅延させるノード。\n【使い方】入力を接続し、設定で遅延時間(ms)を指定。タイミング調整に使用。",
    "http-request": "外部APIにHTTPリクエストを送信するノード。\n【使い方】設定でURL・メソッド・ヘッダーを指定。レスポンスがresponseに出力。",
    "text-transform": "テキストをテンプレートで変換するノード。\n【使い方】textに入力を接続。設定でテンプレートを指定。{{text}}で入力を参照。",
    "random": "ランダムな値を生成するノード。\n【使い方】設定で範囲や選択肢を指定。毎回異なる値がvalueに出力。",
    "timer": "一定間隔で自動トリガーするタイマーノード。\n【使い方】設定で間隔(ms)を指定。定期実行したい処理に接続。",
    "variable": "データを保存・取得する変数ノード。\n【使い方】設定で変数名を指定。setで保存、getで取得。ワークフロー内で値を共有。",
    "anthropic-llm": "Anthropic APIでテキスト生成するLLMノード。\n【使い方】promptに質問を接続。設定でモデルとシステムプロンプトを指定。",
    "google-llm": "Google AI APIでテキスト生成するLLMノード。\n【使い方】promptに質問を接続。設定でモデルとシステムプロンプトを指定。",
    "ollama-llm": "ローカルOllamaでテキスト生成するLLMノード。\n【使い方】promptに質問を接続。設定でモデルを指定。※Ollama起動が必要",
    "coeiroink-tts": "COEIROINKでテキストを音声に変換するTTSノード。\n【使い方】textに読み上げテキストを接続。設定で話者を選択。※COEIROINK起動が必要",
    "sbv2-tts": "Style-Bert-VITS2でテキストを音声に変換するTTSノード。\n【使い方】textに読み上げテキストを接続。設定でモデルを選択。※API起動が必要",
    "avatar-configuration": "VRMアバターの設定ノード。\n【使い方】モデルURL、アイドルアニメーションを設定。オーバーレイでアバターが表示。",
    "emotion-analyzer": "テキストから感情を分析するノード。\n【使い方】textに分析するテキストを接続。emotion/intensityが出力。",
    "motion-trigger": "表情やモーションを手動でトリガーするノード。\n【使い方】triggerに任意の入力を接続。設定で表情/モーションを指定。",
    "lip-sync": "音声から口パクデータを生成するノード。\n【使い方】audioに音声を接続。mouth値がリアルタイムで出力。",
    "subtitle-display": "オーバーレイに字幕を表示するノード。\n【使い方】textに表示テキストを接続。オーバーレイ画面に字幕が表示されます。",
    "audio-player": "オーバーレイで音声を再生するノード。\n【使い方】audioに音声データを接続。オーバーレイ画面で音声が再生されます。",
    "obs-scene-switch": "OBSのシーンを切り替えるノード。\n【使い方】triggerに接続して実行。設定でシーン名を指定。※OBS WebSocket有効化が必要",
    "obs-source-toggle": "OBSソースの表示/非表示を切り替えるノード。\n【使い方】triggerに接続。設定でソース名とアクションを指定。※OBS WebSocket有効化が必要",
    "default": "カスタムノード"
  },
  "status": {
    "processing": "処理中...",
    "completed": "完了",
    "error": "エラーが発生しました",
    "ready": "準備完了"
  },
  "error": {
    "invalidJson": "無効なJSONファイルです",
    "loadTemplateFailed": "テンプレートの読み込みに失敗しました"
  },
  "support": {
    "title": "お問い合わせ",
    "description": "問題が発生した場合やご意見がございましたら、お気軽にお問い合わせください",
    "issue": "Issue",
    "dm": "X DM"
  },
  "defaults": {
    "workflowName": "新規ワークフロー",
    "assistantName": "AIアシスタント",
    "assistantPersonality": "親切でフレンドリー"
  },
  "tooltip": {
    "duplicate": "複製",
    "export": "エクスポート",
    "delete": "削除",
    "runFromNode": "このノードから実行",
    "switchToJapanese": "日本語に切替",
    "switchToEnglish": "英語に切替"
  },
  "nodeConfig": {
    "nodeType": "ノードタイプ",
    "deleteNode": "ノードを削除",
    "start": {
      "label": "開始",
      "autoStart": "自動開始",
      "autoStartPlaceholder": "ワークフロー実行時に自動で開始"
    },
    "end": {
      "label": "終了",
      "message": "完了メッセージ"
    },
    "loop": {
      "label": "ループ",
      "mode": "ループモード",
      "modeCount": "回数指定",
      "modeWhile": "条件付き",
      "modeInfinite": "無限",
      "count": "繰り返し回数",
      "condition": "条件式（While用）",
      "maxIterations": "最大繰り返し数（安全用）"
    },
    "foreach": {
      "label": "繰り返し",
      "separator": "区切り文字"
    },
    "youtubeChat": {
      "label": "YouTubeチャット",
      "videoId": "動画ID",
      "apiKey": "APIキー"
    },
    "twitchChat": {
      "label": "Twitchチャット",
      "channel": "チャンネル名"
    },
    "openaiLlm": {
      "label": "ChatGPT (OpenAI)",
      "apiKey": "APIキー",
      "model": "モデル",
      "systemPrompt": "システムプロンプト",
      "systemPromptPlaceholder": "キャラクター設定を入力...",
      "promptBuilder": "プロンプトビルダー",
      "temperature": "温度"
    },
    "anthropicLlm": {
      "label": "Claude (Anthropic)",
      "apiKey": "APIキー",
      "model": "モデル",
      "systemPrompt": "システムプロンプト",
      "maxTokens": "最大トークン数",
      "temperature": "温度"
    },
    "googleLlm": {
      "label": "Gemini (Google)",
      "apiKey": "APIキー",
      "model": "モデル",
      "systemPrompt": "システムプロンプト",
      "maxTokens": "最大トークン数",
      "temperature": "温度"
    },
    "ollamaLlm": {
      "label": "LLM (Ollama)",
      "host": "Ollamaホスト",
      "model": "モデル",
      "systemPrompt": "システムプロンプト",
      "temperature": "温度",
      "contextLength": "コンテキスト長"
    },
    "voicevoxTts": {
      "label": "TTS (VOICEVOX)",
      "host": "VOICEVOXホスト",
      "speaker": "話者",
      "speed": "速度"
    },
    "coeiroinkTts": {
      "label": "TTS (COEIROINK)",
      "host": "COEIROINKホスト",
      "speakerUuid": "話者UUID",
      "styleId": "スタイルID",
      "speed": "速度",
      "pitch": "ピッチ"
    },
    "sbv2Tts": {
      "label": "TTS (Style-Bert-VITS2)",
      "host": "SBV2ホスト",
      "modelName": "モデル名",
      "speakerId": "話者ID",
      "style": "スタイル",
      "styleWeight": "スタイル強度",
      "speed": "速度"
    },
    "manualInput": {
      "label": "手動入力",
      "text": "テキスト",
      "textPlaceholder": "送信するテキストを入力..."
    },
    "consoleOutput": {
      "label": "コンソール出力",
      "prefix": "プレフィックス"
    },
    "switch": {
      "label": "条件分岐",
      "mode": "モード",
      "modeTruthy": "真偽判定",
      "modeEquals": "一致",
      "modeContains": "含む",
      "compareValue": "比較値"
    },
    "delay": {
      "label": "遅延",
      "delayMs": "遅延時間（ミリ秒）",
      "randomize": "ランダム化",
      "randomMin": "最小値（ミリ秒）",
      "randomMax": "最大値（ミリ秒）"
    },
    "httpRequest": {
      "label": "HTTPリクエスト",
      "url": "URL",
      "method": "メソッド",
      "headers": "ヘッダー（JSON）",
      "timeout": "タイムアウト（ミリ秒）"
    },
    "textTransform": {
      "label": "テキスト変換",
      "operation": "操作",
      "opTemplate": "テンプレート",
      "opUppercase": "大文字",
      "opLowercase": "小文字",
      "opTrim": "トリム",
      "opReplace": "置換",
      "opPrefix": "接頭辞",
      "opSuffix": "接尾辞",
      "opSplitFirst": "最初を分割",
      "opSplitLast": "最後を分割",
      "opLength": "文字数",
      "template": "テンプレート",
      "templateInputs": "テンプレート入力",
      "find": "検索文字列",
      "replaceWith": "置換文字列",
      "delimiter": "区切り文字"
    },
    "random": {
      "label": "ランダム",
      "mode": "モード",
      "modeNumber": "数値",
      "modeChoice": "選択",
      "modeBoolean": "真偽",
      "min": "最小値",
      "max": "最大値",
      "choices": "選択肢（カンマ区切り）",
      "trueProbability": "真の確率（%）"
    },
    "timer": {
      "label": "タイマー",
      "intervalMs": "間隔（ミリ秒）",
      "maxTicks": "最大回数（0=無制限）",
      "immediate": "即時実行"
    },
    "variable": {
      "label": "変数",
      "name": "変数名",
      "defaultValue": "デフォルト値",
      "valueType": "値の型",
      "typeString": "文字列",
      "typeNumber": "数値",
      "typeBoolean": "真偽値",
      "typeJson": "JSON"
    },
    "avatarConfiguration": {
      "label": "アバター設定",
      "renderer": "レンダラー",
      "rendererVrm": "VRM（内蔵）",
      "rendererVtubeStudio": "VTube Studio",
      "rendererPng": "PNG画像",
      "modelUrl": "VRMモデル",
      "idleAnimation": "アイドルアニメーション（FBX）",
      "vtubePort": "VTube Studioポート",
      "pngConfig": "PNG表情マッピング"
    },
    "motionTrigger": {
      "label": "モーショントリガー",
      "expression": "表情ID",
      "intensity": "表情の強度（0.0〜1.0）",
      "motionUrl": "モーションアニメーション（FBX）",
      "emitEvents": "アバターイベントを送信"
    },
    "emotionAnalyzer": {
      "label": "感情分析",
      "method": "分析方法",
      "methodLlm": "LLMベース（推奨）",
      "methodRuleBased": "ルールベース（キーワード）",
      "expressions": "利用可能な表情",
      "llmProvider": "LLMプロバイダー",
      "llmApiKey": "LLM APIキー",
      "llmModel": "LLMモデル",
      "language": "言語",
      "langJa": "日本語",
      "langEn": "英語",
      "langAuto": "自動検出",
      "customMappings": "カスタムキーワードマッピング（JSON）",
      "emitEvents": "アバターイベントを送信"
    },
    "lipSync": {
      "label": "リップシンク",
      "method": "リップシンク方式",
      "methodVolume": "音量ベース（シンプル）",
      "methodEnvelope": "エンベロープ追従",
      "sensitivity": "感度（1.0〜10.0）",
      "smoothing": "スムージング（0.0〜0.9）",
      "threshold": "しきい値（0.0〜0.2）",
      "emitRealtime": "リアルタイムイベントを送信",
      "frameRate": "フレームレート"
    },
    "avatarDisplay": {
      "label": "アバター表示"
    },
    "audioPlayer": {
      "label": "音声プレイヤー",
      "waitForCompletion": "完了まで待機",
      "volume": "音量",
      "outputDevice": "出力デバイス"
    },
    "subtitleDisplay": {
      "label": "字幕表示",
      "style": "スタイル",
      "position": "位置",
      "fontSize": "フォントサイズ",
      "fontColor": "フォント色",
      "backgroundColor": "背景色",
      "showSpeaker": "話者を表示",
      "animation": "アニメーション",
      "duration": "表示時間"
    },
    "obsSceneSwitch": {
      "label": "OBSシーン切替",
      "host": "ホスト",
      "port": "ポート",
      "password": "パスワード",
      "sceneName": "シーン名"
    },
    "obsSourceToggle": {
      "label": "OBSソース切替",
      "host": "ホスト",
      "port": "ポート",
      "password": "パスワード",
      "sceneName": "シーン名",
      "sourceName": "ソース名",
      "action": "アクション"
    },
    "common": {
      "enabled": "有効",
      "loadingSpeakers": "話者を読み込み中...",
      "retry": "再試行",
      "selectSpeaker": "話者を選択...",
      "uploadFbx": "FBXをアップロード",
      "uploading": "アップロード中...",
      "selectExisting": "既存のアニメーションを選択...",
      "uploadVrm": "VRMをアップロード",
      "selectExistingModel": "既存のモデルを選択...",
      "clear": "クリア",
      "add": "追加",
      "done": "完了",
      "edit": "編集",
      "loadDefaults": "デフォルトを読み込む"
    }
  },
  "update": {
    "title": "アップデート",
    "downloading": "ダウンロード中...",
    "error": "アップデートに失敗しました",
    "now": "今すぐ更新",
    "later": "あとで",
    "close": "閉じる",
    "retry": "再試行"
  },
  "globalSettings": {
    "title": "グローバル設定",
    "description": "全ワークフローで共有される設定",
    "llmProviders": "LLMプロバイダー",
    "ttsEngines": "音声合成エンジン",
    "apiKey": "APIキー",
    "model": "モデル",
    "host": "ホスト",
    "save": "保存",
    "saved": "設定を保存しました",
    "saveError": "設定の保存に失敗しました",
    "usingGlobal": "グローバル設定を使用",
    "override": "個別設定で上書き",
    "collapse": "閉じる"
  }
}
