const jaJP = {
  sidebar: {
    home: 'ホーム',
    extensions: '拡張機能',
    installedPlugins: 'インストール済み',
    pluginMarket: 'プラグインマーケット',
    mcpServers: 'MCPサーバー',
    addExtension: '拡張機能を追加',
    pluginPages: 'プラグインページ',
    pluginPagesTooltip: 'インストール済みプラグインが提供するビジュアルページ',
    quickStart: 'クイックスタート',
    scrollToBottom: '一番下までスクロール',
    editionCommunity: 'コミュニティ版',
    editionCloud: 'Cloud',
  },
  common: {
    login: 'ログイン',
    logout: 'ログアウト',
    accountOptions: 'システム設定',
    account: 'アカウント',
    integration: '連携',
    email: 'メールアドレス',
    password: 'パスワード',
    welcome: 'LangBot へおかえりなさい 👋',
    continueToLogin: 'ログインしてください',
    loginSuccess: 'ログインに成功しました',
    loginFailed:
      'ログインに失敗しました。メールアドレスまたはパスワードをご確認ください',
    loginLoadError: 'サーバーに接続できません',
    loginLoadErrorDesc:
      'LangBot バックエンドに接続できません。サービスが起動していることを確認してから再試行してください。',
    retry: '再試行',
    enterEmail: 'メールアドレスを入力',
    enterPassword: 'パスワードを入力',
    invalidEmail: '有効なメールアドレスを入力してください',
    emptyPassword: 'パスワードを入力してください',
    language: '言語',
    helpDocs: 'ヘルプドキュメント',
    featureRequest: 'フィードバック',
    starOnGitHub: 'GitHubでStarする',
    joinDiscord: 'Discord に参加',
    create: '作成',
    edit: '編集',
    delete: '削除',
    add: '追加',
    select: '選択してください',
    skill: 'スキル',
    cancel: 'キャンセル',
    submit: '送信',
    error: 'エラー',
    success: '成功',
    save: '保存',
    saving: '保存中...',
    recommend: 'おすすめ',
    start: '開始',
    confirm: '確認',
    confirmDelete: '削除の確認',
    deleteConfirmation: '本当に削除しますか？',
    selectOption: 'オプションを選択',
    selectPreset: 'プリセットを選択',
    required: '必須',
    enable: '有効にする',
    name: '名前',
    description: '説明',
    icon: 'アイコン',
    close: '閉じる',
    deleteSuccess: '削除に成功しました',
    deleteError: '削除に失敗しました：',
    addRound: 'ラウンドを追加',
    copy: 'コピー',
    copySuccess: 'コピーに成功しました',
    copyFailed: 'コピーに失敗しました',
    test: 'テスト',
    forgotPassword: 'パスワードを忘れた？',
    agreementNotice: '続行することで、以下に同意したものとみなされます：',
    termsOfService: '利用規約',
    privacyPolicy: 'プライバシーポリシー',
    and: 'および',
    dataCollectionPolicy: 'データ収集ポリシー',
    dataCollectionPolicyUrl: 'https://link.langbot.app/ja/docs/data-policy',
    loading: '読み込み中...',
    fieldRequired: 'この項目は必須です',
    or: 'または',
    loginWithSpace: 'LangBot アカウントでログイン',
    spaceLoginRecommended:
      'おすすめ：公式の安定したモデル API とクラウドサービスを利用',
    loginLocal: 'ローカルアカウントでログイン',
    loginWithPassword: 'パスワードでログイン',
    spaceLoginTitle: 'LangBot アカウントでログイン',
    spaceLoginDescription:
      'QRコードをスキャンするか、下のリンクにアクセスして認証してください',
    spaceLoginUserCode: '認証コード',
    spaceLoginExpires: 'コードは {{seconds}} 秒後に期限切れになります',
    spaceLoginWaiting: '認証を待っています...',
    spaceLoginSuccess: '認証に成功しました',
    spaceLoginFailed: 'LangBot アカウントログインに失敗しました',
    spaceLoginExpired:
      '認証コードの有効期限が切れました。もう一度お試しください',
    spaceLoginCancel: 'キャンセル',
    spaceLoginVisitLink: 'リンクにアクセス',
    spaceLoginProcessing: 'LangBot アカウントでログイン中',
    spaceLoginProcessingDescription:
      'ログインを完了しています。しばらくお待ちください...',
    spaceLoginSuccessDescription: 'LangBot にリダイレクト中...',
    spaceLoginError: 'ログインに失敗しました',
    spaceLoginNoCode: '認証コードがありません',
    backToLogin: 'ログインに戻る',
    backToHome: 'ホームに戻る',
    spaceAccountCannotChangePassword:
      'LangBot アカウントはここでパスワードを変更できません',
    theme: 'テーマ',
    changePassword: 'パスワードを変更',
    currentPassword: '現在のパスワード',
    newPassword: '新しいパスワード',
    confirmNewPassword: '新しいパスワードを確認',
    enterCurrentPassword: '現在のパスワードを入力',
    enterNewPassword: '新しいパスワードを入力',
    enterConfirmPassword: '新しいパスワードを確認',
    currentPasswordRequired: '現在のパスワードは必須です',
    newPasswordRequired: '新しいパスワードは必須です',
    confirmPasswordRequired: '新しいパスワードを確認してください',
    passwordsDoNotMatch: '新しいパスワードが一致しません',
    changePasswordSuccess: 'パスワードの変更に成功しました',
    changePasswordFailed:
      'パスワードの変更に失敗しました。現在のパスワードを確認してください',
    apiIntegration: 'API統合',
    apiIntegrationDescription:
      '外部アクセス用の API キーと Webhook を管理します',
    apiKeys: 'API キー',
    manageApiIntegration: 'API統合の管理',
    manageApiKeys: 'API キーの管理',
    createApiKey: 'API キーを作成',
    apiKeyName: 'API キー名',
    apiKeyDescription: 'API キーの説明',
    apiKeyValue: 'API キー値',
    apiKeyCreated: 'API キーの作成に成功しました',
    apiKeyDeleted: 'API キーの削除に成功しました',
    apiKeyDeleteConfirm: 'この API キーを削除してもよろしいですか？',
    apiKeyNameRequired: 'API キー名は必須です',
    copyApiKey: 'API キーをコピー',
    apiKeyCopied: 'API キーをクリップボードにコピーしました',
    noApiKeys: 'API キーが設定されていません',
    apiKeyHint:
      'API キーを使用すると、外部システムが LangBot Service API にアクセスできます',
    mcpTab: 'MCP',
    mcpHint:
      'LangBot は MCP（Model Context Protocol）サーバーを提供し、AI エージェントがこのインスタンスを管理できます。Service API と同じ API キーを使用します。',
    mcpEndpoint: 'MCP エンドポイント',
    mcpAuthTitle: '認証',
    mcpAuthDesc:
      '「API キー」タブの任意のキーを、ヘッダーで送信して認証します：',
    mcpGlobalKeyNote:
      'config.yaml にグローバル API キー（api.global_api_key）を設定すると、ログインなしで使用できます。',
    mcpClientConfigTitle: 'MCP クライアント設定の例',
    webhooks: 'Webhooks',
    createWebhook: 'Webhook を作成',
    webhookName: 'Webhook 名',
    webhookUrl: 'Webhook URL',
    webhookDescription: 'Webhook の説明',
    webhookEnabled: '有効',
    webhookCreated: 'Webhook が正常に作成されました',
    webhookDeleted: 'Webhook が正常に削除されました',
    webhookDeleteConfirm: 'この Webhook を削除してもよろしいですか？',
    webhookNameRequired: 'Webhook 名は必須です',
    webhookUrlRequired: 'Webhook URL は必須です',
    noWebhooks: 'Webhook が設定されていません',
    webhookHint:
      'Webhook を使用すると、LangBot は個人メッセージとグループメッセージイベントを外部システムにプッシュできます',
    actions: 'アクション',
    apiKeyCreatedMessage:
      'この API キーをコピーしてください。もしボタンが無効な場合は手動でコピーしてください。',
    apiKeyStoredSecurely: 'シークレットは作成時のみ表示されます',
    none: 'なし',
    more: 'もっと見る ({{count}})',
    less: '折りたたむ',
    noItems: '項目がありません',
  },
  notFound: {
    title: 'ページが見つかりません',
    description:
      'お探しのページは存在しないようです。入力したURLが正しいか確認するか、ホームページに戻ってください。',
    back: '戻る',
    home: 'ホームに戻る',
    help: 'ヘルプドキュメントを見る',
  },
  models: {
    title: 'モデル設定',
    description: 'パイプラインで使用できるモデルを設定・管理',
    createModel: 'モデルを作成',
    editModel: 'モデルを編集',
    getModelListError: 'モデルリストの取得に失敗しました：',
    modelName: 'モデル名',
    modelProvider: 'モデルプロバイダー',
    modelBaseURL: 'ベースURL',
    modelAbilities: 'モデル機能',
    saveSuccess: '保存に成功しました',
    saveError: '保存に失敗しました：',
    createSuccess: '作成に成功しました',
    createError: '作成に失敗しました：',
    deleteSuccess: '削除に成功しました',
    deleteError: '削除に失敗しました：',
    deleteConfirmation: '本当にこのモデルを削除しますか？',
    modelNameRequired: 'モデル名は必須です',
    modelProviderRequired: 'モデルプロバイダーは必須です',
    requestURLRequired: 'リクエストURLは必須です',
    apiKeyRequired: 'APIキーは必須です',
    keyNameRequired: 'キー名は必須です',
    mustBeValidNumber: '有効な数値である必要があります',
    mustBeTrueOrFalse: 'true または false である必要があります',
    requestURL: 'リクエストURL',
    scanURL: 'モデルスキャンURL',
    scanURLPlaceholder: '空のままにするとリクエストURL + /modelsを使用します',
    scanURLDescription:
      'モデルスキャンがモデル呼び出しと同じアドレスを使用しない場合は、実際のモデルリストのエンドポイントを入力してください。',
    apiKey: 'APIキー',
    abilities: '機能',
    selectModelAbilities: 'モデル機能を選択',
    visionAbility: '視覚機能',
    functionCallAbility: '関数呼び出し',
    reasoningAbility: '推論',
    reasoningLevel: '推論レベル',
    reasoningLevels: {
      providerDefault: 'Provider デフォルト',
      disabled: 'オフ',
      enabled: 'オン',
      minimal: '最小',
      low: '低',
      medium: '中',
      high: '高',
      xhigh: '最高',
      max: '最大',
    },
    contextLength: 'コンテキストウィンドウ',
    contextLengthPlaceholder: '不明',
    contextLengthInvalid:
      'コンテキストウィンドウは正の整数である必要があります',
    extraParameters: '追加パラメータ',
    addParameter: 'パラメータを追加',
    keyName: 'キー名',
    type: 'タイプ',
    value: '値',
    string: '文字列',
    number: '数値',
    boolean: 'ブール値',
    object: 'オブジェクト',
    objectJsonPlaceholder: '{ "type": "disabled" }',
    invalidJsonObject: '値は有効なJSONオブジェクトである必要があります',
    selectModelProvider: 'モデルプロバイダーを選択',
    modelProviderDescription: 'プロバイダーが提供するモデル名をご入力ください',
    modelManufacturer: 'モデルメーカー',
    aggregationPlatform: 'アグリゲーションプラットフォーム',
    selfDeployed: 'セルフデプロイ',
    builtin: 'ビルトイン',
    selectModel: 'モデルを選択してください',
    testSuccess: 'テストに成功しました',
    testError: 'テストに失敗しました。モデル設定を確認してください',
    llmModels: 'LLM モデル',
    localProvider: 'ローカル',
    localProviderDescription: 'ローカルで設定・管理されているモデル',
    spaceProviderDescription: 'LangBot アカウントから同期されたモデル',
    spaceDisabledForLocalAccount:
      'LangBot アカウントでログインしてクラウドモデルを使用',
    syncModels: '同期',
    syncSuccess: '同期完了：{{created}} 件作成、{{updated}} 件更新',
    syncError: '同期に失敗しました：',
    spaceModelReadOnly: 'Space モデルは読み取り専用です',
    noSpaceModels:
      'Space モデルがありません。同期ボタンをクリックして Space からモデルを取得してください。',
    noLocalModels:
      'ローカルモデルがありません。作成ボタンをクリックしてモデルを追加してください。',
    providerCount: '{{count}} 件のプロバイダー',
    addModel: 'モデルを追加',
    manualAdd: '手動追加',
    scanAdd: 'スキャン追加',
    scanModels: 'モデルをスキャン',
    scanModelsHint:
      '現在のプロバイダーから利用可能なモデルを取得し、追加するモデルを選択します。',
    scannedModels: 'スキャン結果',
    scanDebug: 'デバッグ情報',
    searchScannedModels: 'スキャン結果を検索',
    noScannedModels:
      'まだスキャン結果がありません。上のボタンからスキャンしてください。',
    noScannedModelsMatch: '一致するモデルがありません',
    addSelectedModels: '選択したモデルを追加',
    addSelectedModelsSuccess: '{{count}} 件のモデルを追加しました',
    selectAll: 'すべて選択',
    alreadyAdded: '追加済み',
    addLLMModel: 'LLMモデルを追加',
    addEmbeddingModel: '埋め込みモデルを追加',
    provider: 'プロバイダー',
    existingProvider: '既存のプロバイダー',
    newProvider: '新規プロバイダー',
    selectProvider: 'プロバイダーを選択',
    requester: 'プロバイダータイプ',
    selectRequester: 'プロバイダータイプを選択',
    searchProviders: 'プロバイダーを検索...',
    langbotModelsDescription: 'LangBot Space が提供するクラウドモデル',
    credits: 'クレジット',
    loginWithSpace: 'LangBot アカウントでログイン',
    loginToUseModels: 'LangBot アカウントでログインしてクラウドモデルを使用',
    ownerMustBindSpace:
      'LangBot モデルを使うにはワークスペース所有者が LangBot アカウントを連携する必要があります。',
    usesOwnerSpaceBilling:
      'ワークスペース所有者の LangBot アカウント課金とクレジットを使用します。',
    noModels: 'モデルがありません',
    langbotModels: 'LangBot モデル',
    spaceTrialTooltip:
      '無料トライアルクレジットが利用可能！LangBot アカウントでログインして、設定不要でクラウドモデルを使用できます。',
    unlockModels: 'ログインして使用',
    editProvider: 'プロバイダーを編集',
    addProvider: 'プロバイダーを追加',
    addProviderHint:
      '他のソースのモデルを使用するにはプロバイダーを追加してください',
    addProviderHintSimple: 'モデルを使用するにはプロバイダーを追加してください',
    noProviders: 'プロバイダーがありません',
    providerName: 'プロバイダー名',
    providerNameRequired: 'プロバイダー名は必須です',
    requesterRequired: 'プロバイダータイプは必須です',
    providerSaved: 'プロバイダーを保存しました',
    providerCreated: 'プロバイダーを作成しました',
    providerSaveError: 'プロバイダーの保存に失敗しました：',
    providerDeleted: 'プロバイダーを削除しました',
    providerDeleteError: 'プロバイダーの削除に失敗しました：',
    deleteProviderConfirmation: 'このプロバイダーを削除してもよろしいですか？',
    loadError: 'データの読み込みに失敗しました',
    chat: 'チャット',
    embedding: '埋め込み',
    rerank: '再順位付け',
    rerankUrlTooltip:
      '再順位付けエンドポイントの完全URL（例: https://dashscope.aliyuncs.com/compatible-api/v1/reranks）',
    rerankPathTooltip:
      'ベースURLに追加するパス（デフォルト: rerank、一部サービスはreranksを使用）',
    modelsCount: '{{count}} 個のモデル',
    expandModels: '展開',
    collapseModels: '折りたたむ',
    fallback: {
      primary: 'プライマリモデル',
      fallbackList: 'フォールバックモデル',
      addFallback: 'フォールバックモデルを追加',
    },
  },
  bots: {
    title: 'ボット',
    description:
      'ボットの作成と管理を行います。LangBotと各プラットフォームを接続するためのエントリーポイントです',
    createBot: 'ボットを作成',
    selectFromSidebar: 'サイドバーからボットを選択してください',
    editBot: 'ボットを編集',
    getBotListError: 'ボットリストの取得に失敗しました：',
    botName: 'ボット名',
    botDescription: 'ボットの説明',
    botNameRequired: 'ボット名は必須です',
    botDescriptionRequired: 'ボットの説明は必須です',
    adapterRequired: 'アダプターは必須です',
    defaultDescription: 'ボット',
    getBotConfigError: 'ボット設定の取得に失敗しました：',
    saveSuccess: '保存に成功しました',
    saveError: '保存に失敗しました：',
    createSuccess:
      '作成が完了しました。有効化するか、パイプラインの設定を行ってください',
    createError: '作成に失敗しました：',
    deleteSuccess: '削除に成功しました',
    deleteError: '削除に失敗しました：',
    deleteConfirmation: '本当にこのボットを削除しますか？',
    platformAdapter: 'プラットフォーム/アダプター選択',
    selectAdapter: 'アダプターを選択',
    adapterConfig: 'アダプター設定',
    viewAdapterDocs: 'ドキュメントを見る',
    bindPipeline: 'パイプラインを紐付け',
    selectPipeline: 'パイプラインを選択',
    selectBot: 'ボットを選択してください',
    botLogTitle: 'ボットログ',
    enableAutoRefresh: '自動更新を有効にする',
    session: 'セッション',
    yesterday: '昨日',
    earlier: 'それ以前',
    dateFormat: '{{month}}月{{day}}日',
    setBotEnableError: 'ボットの有効状態の設定に失敗しました',
    log: 'ログ',
    configuration: '設定',
    logs: 'ログ',
    basicInfo: '基本情報',
    basicInfoDescription: 'ボットの名前と説明を設定',
    routingConnection: 'ルーティングと接続',
    routingConnectionDescription:
      'このボットのメッセージを処理するパイプラインを紐付け',
    routingRules: '条件付きルーティングルール',
    routingRulesDescription:
      'ルールは順番に評価され、最初に一致したルールのパイプラインにルーティングされます。一致しない場合はデフォルトパイプラインが使用されます。',
    addRoutingRule: 'ルールを追加',
    ruleTypeLauncherType: 'セッションタイプ',
    ruleTypeLauncherId: 'セッション ID',
    ruleTypeMessageContent: 'メッセージ内容',
    operatorEq: '等しい',
    operatorNeq: '等しくない',
    operatorContains: '含む',
    operatorNotContains: '含まない',
    operatorStartsWith: '前方一致',
    operatorRegex: '正規表現',
    operatorHas: '含む',
    operatorNotHas: '含まない',
    ruleTypeMessageHasElement: 'メッセージ要素',
    ruleValueElementPlaceholder: '要素タイプを選択',
    elementImage: '画像',
    elementVoice: '音声',
    elementFile: 'ファイル',
    elementForward: '転送',
    elementFace: '絵文字',
    elementAt: '@メンション',
    elementAtAll: '@全員',
    elementQuote: '引用',
    ruleValuePlaceholder: '一致値',
    ruleValueLauncherIdPlaceholder: 'グループまたはユーザー ID',
    ruleValueMessagePlaceholder: 'メッセージテキスト',
    ruleValuePrefixPlaceholder: '例: !draw',
    ruleValueRegexpPlaceholder: '例: ^/help',
    pipelineDiscard: 'メッセージを破棄',
    sessionTypePerson: 'プライベートチャット',
    sessionTypeGroup: 'グループチャット',
    adapterConfigDescription: '選択したプラットフォームアダプターを設定',
    dangerZone: '危険ゾーン',
    dangerZoneDescription: '元に戻せない操作',
    deleteBotAction: 'このボットを削除',
    deleteBotHint:
      '削除すると、関連する全ての設定が完全に削除され、復元できません。',
    webhookUrl: 'Webhook コールバック URL',
    webhookUrlCopied: 'Webhook URL をコピーしました',
    webhookUrlHint:
      '入力ボックスをクリックして全選択し、Ctrl+C (Mac: Cmd+C) でコピーするか、右側のボタンをクリックしてください',
    webhookUrlHintEither:
      '上記の2つのURLのいずれかをプラットフォーム設定に使用してください',
    webhookSaasHint:
      'Webhook には公開アクセス可能なドメインが必要です。LangBot Cloud では、ボット用のパブリックエンドポイントをすぐにご利用いただけます。',
    webhookSaasLink: 'LangBot Cloud の詳細はこちら',
    adapterCategory: {
      popular: '人気',
      china: '中国',
      global: 'グローバル',
      protocol: 'プロトコル',
    },
    logLevel: 'ログレベル',
    allLevels: 'すべてのレベル',
    selectLevel: 'レベルを選択',
    levelsSelected: 'レベル選択済み',
    viewDetailedLogs: '詳細ログを表示',
    viewDetails: '詳細',
    collapse: '折りたたむ',
    imagesAttached: '枚の画像が添付されています',
    noLogs: 'ログはまだありません',
    sessionMonitor: {
      title: 'セッション監視',
      sessions: 'セッション一覧',
      noSessions: 'セッションが見つかりません',
      selectSession: 'セッションを選択してメッセージを表示',
      noMessages: 'このセッションにはメッセージがありません',
      messages: '件のメッセージ',
      messageCount: '{{count}} 件のメッセージ',
      loading: '読み込み中...',
      loadingSessions: 'セッションを読み込み中...',
      loadingMessages: 'メッセージを読み込み中...',
      user: 'ユーザー',
      variables: '変数',
      platform: 'プラットフォーム',
      lastActive: '最終アクティブ',
      refresh: '更新',
      active: 'アクティブ',
      inactive: '非アクティブ',
      discarded: '破棄済み',
      userMessage: 'ユーザー',
      botMessage: 'アシスタント',
    },
    admins: {
      title: 'Admins',
      description:
        "Launchers (person/group IDs) that have admin privilege for this bot's commands",
      addAdmin: 'Add Admin',
      launcherType: 'Type',
      launcherId: 'ID',
      typePerson: 'Person',
      typeGroup: 'Group',
      placeholderId: 'User or group ID',
      addSuccess: 'Admin added',
      addError: 'Failed to add admin: ',
      deleteSuccess: 'Admin removed',
      deleteError: 'Failed to remove admin: ',
      noAdmins: 'No admins configured',
      setAdminTitle: 'Set as admin',
      removeAdminTitle: 'Remove admin',
      adminBadge: 'Admin',
      configureAdmins: 'Manage Admins',
    },
  },
  plugins: {
    title: '拡張機能',
    description:
      'LangBotの機能を拡張するプラグインをインストール・設定。流水線設定で使用します',
    createPlugin: 'プラグインを作成',
    editPlugin: 'プラグインを編集',
    installed: 'インストール済み',
    marketplace: 'プラグインマーケット',
    arrange: '並び替え',
    install: 'インストール',
    installPlugin: 'プラグインをインストール',
    newPlugin: '新規プラグイン',
    onlySupportGithub: '現在はGitHubからのインストールのみサポートしています',
    enterGithubLink: 'プラグインのGitHubリンクを入力してください',
    installing: 'プラグインをインストール中...',
    installSuccess: 'プラグインのインストールに成功しました',
    installFailed: 'プラグインのインストールに失敗しました：',
    searchPlugin: 'プラグインを検索',
    sortBy: '並び順',
    mostStars: 'スター数順',
    recentlyAdded: '最近追加',
    recentlyUpdated: '最近更新',
    noMatchingPlugins: '一致するプラグインが見つかりません',
    loading: '読み込み中...',
    getPluginListError: 'プラグインリストの取得に失敗しました：',
    noPluginInstalled: 'プラグインがインストールされていません',
    noExtensionInstalled: '拡張機能がインストールされていません',
    loadingExtensions: '拡張機能を読み込み中...',
    groupByType: '形式でグループ化',
    pluginConfig: 'プラグイン設定',
    pluginSort: 'プラグインの並び替え',
    pluginSortDescription:
      'プラグインの順序は、同一イベント内での処理順序に影響します。カードをドラッグして並び替えが可能です',
    pluginSortSuccess: 'プラグインの並び替えに成功しました',
    pluginSortError: 'プラグインの並び替えに失敗しました：',
    pluginNoConfig: 'プラグインに設定項目がありません。',
    systemDisabled: 'プラグインシステムが無効になっています',
    systemDisabledDesc:
      'プラグインシステムが無効になっています。プラグインシステムを有効にするか、ドキュメントに従って設定を変更してください',
    connectionError: 'プラグインシステム接続エラー',
    connectionErrorDesc:
      'プラグインシステム設定を確認するか、管理者に連絡してください',
    errorDetails: 'エラー詳細',
    loadingStatus: 'プラグインシステム状態を確認中...',
    failedToGetStatus: 'プラグインシステム状態の取得に失敗しました',
    pluginSystemNotReady:
      'プラグインシステムが準備されていません。この操作を実行できません',
    debugInfo: 'デバッグ情報',
    debugInfoTitle: 'プラグインデバッグ情報',
    debugUrl: 'デバッグURL',
    debugKey: 'デバッグキー',
    debugKeyExpires:
      '{{time}} にローテーションします。Workspace ごとにキーが異なります',
    noDebugKey: '(未設定)',
    debugKeyDisabled: 'デバッグ認証情報を一時的に利用できません',
    boxStatusTitle: 'Box ランタイム',
    boxStatus: 'ステータス',
    boxConnected: '接続済み',
    boxUnavailable: '利用不可',
    boxBackend: 'バックエンド',
    boxProfile: 'プロファイル',
    boxSandboxes: 'サンドボックス',
    boxErrors: 'エラー',
    boxSessionImage: 'イメージ',
    boxSessionBackend: 'バックエンド',
    boxSessionResources: 'リソース',
    boxSessionNetwork: 'ネットワーク',
    boxStatusLoadFailed: 'Box ステータスの読み込みに失敗しました',
    failedToGetDebugInfo: 'デバッグ情報の取得に失敗しました',
    copiedToClipboard: 'クリップボードにコピーしました',
    deleting: '削除中...',
    deletePlugin: 'プラグインを削除',
    cancel: 'キャンセル',
    saveConfig: '設定を保存',
    saving: '保存中...',
    confirmDeletePlugin:
      'プラグイン「{{author}}/{{name}}」を削除してもよろしいですか？',
    deleteDataCheckbox: 'プラグイン設定と永続化ストレージも削除する',
    confirmDelete: '削除を確認',
    deleteError: '削除に失敗しました：',
    close: '閉じる',
    deleteConfirm: '削除の確認',
    deleteSuccess: '削除に成功しました',
    dangerZone: '危険ゾーン',
    dangerZoneDescription: '取り消しできない操作です',
    modifyFailed: '変更に失敗しました：',
    componentName: {
      Tool: 'ツール',
      EventListener: 'イベント監視器',
      Command: 'コマンド',
      KnowledgeEngine: '知識エンジン',
      Parser: 'パーサー',
      Page: 'ページ',
    },
    uploadLocal: 'ローカルアップロード',
    debugging: 'デバッグ中',
    uploadLocalPlugin: 'ローカルプラグインのアップロード',
    localPreview: {
      title: 'ローカルプラグインパッケージをプレビュー',
      unpacking: 'パッケージを展開してプレビュー中...',
      unpackComplete: 'パッケージのプレビュー準備完了',
      failed: 'パッケージのプレビューに失敗しました',
      pluginInfo: 'プラグイン情報',
      packageInfo: 'パッケージ情報',
      name: '名前',
      author: '作者',
      version: 'バージョン',
      fileCount: 'ファイル数',
      dependencies: '依存関係',
      components: 'コンポーネント',
      ready:
        'プラグインパッケージを展開しました。確認するとインストールを開始します。',
    },
    dragToUpload: 'ファイルをここにドラッグしてアップロード',
    unsupportedFileType:
      'サポートされていないファイルタイプです。.lbpkg と .zip ファイルのみサポートされています',
    uploadingPlugin: 'プラグインをアップロード中...',
    uploadSuccess: 'アップロード成功',
    uploadFailed: 'アップロード失敗',
    selectFileToUpload: 'アップロードするプラグインファイルを選択',
    askConfirm: 'プラグイン "{{name}}" ({{version}}) をインストールしますか？',
    askConfirmNoVersion: 'プラグイン "{{name}}" をインストールしますか？',
    fromGithub: 'GitHubから',
    fromLocal: 'ローカルから',
    fromMarketplace: 'プラグインマーケットから',
    componentsList: '部品：',
    noComponents: '部品がありません',
    delete: 'プラグインを削除',
    update: 'プラグインを更新',
    new: 'New',
    updateConfirm: '更新の確認',
    confirmUpdatePlugin:
      'プラグイン「{{author}}/{{name}}」を更新してもよろしいですか？',
    confirmUpdate: '更新を確認',
    updating: '更新中...',
    updateSuccess: 'プラグインの更新に成功しました',
    updateError: '更新に失敗しました：',
    saveConfigSuccessNormal: '設定を保存しました',
    saveConfigError: '設定の保存に失敗しました：',
    config: '設定',
    readme: 'ドキュメント',
    viewSource: 'ソースを表示',
    loadingReadme: 'ドキュメントを読み込み中...',
    noReadme: 'このプラグインはREADMEドキュメントを提供していません',
    tabDocs: 'ドキュメント',
    tabLogs: 'ログ',
    logsLevelAll: 'すべてのレベル',
    logsRefresh: '更新',
    logsAutoRefresh: '自動更新',
    logsEmpty:
      'ログはまだありません。プラグインが logger で出力したログがここに表示されます。',
    fileUpload: {
      tooLarge: 'ファイルサイズが 10MB の制限を超えています',
      success: 'ファイルのアップロードに成功しました',
      failed: 'ファイルのアップロードに失敗しました',
      uploading: 'アップロード中...',
      chooseFile: 'ファイルを選択',
      addFile: 'ファイルを追加',
    },
    installFromGithub: 'GitHubから',
    enterRepoUrl: 'GitHubリポジトリのURLを入力してください',
    repoUrlPlaceholder: '例: https://github.com/owner/repo',
    fetchingReleases: 'リリース一覧を取得中...',
    selectRelease: 'リリースを選択',
    noReleasesFound: 'リリースが見つかりません',
    fetchReleasesError: 'リリース一覧の取得に失敗しました：',
    selectAsset: 'インストールするファイルを選択',
    noAssetsFound: 'このリリースには利用可能な .lbpkg ファイルがありません',
    fetchAssetsError: 'ファイル一覧の取得に失敗しました：',
    backToReleases: 'リリース一覧に戻る',
    backToRepoUrl: 'リポジトリURLに戻る',
    backToAssets: 'ファイル選択に戻る',
    releaseTag: 'タグ: {{tag}}',
    releaseName: '名前: {{name}}',
    publishedAt: '公開日: {{date}}',
    prerelease: 'プレリリース',
    assetSize: 'サイズ: {{size}}',
    confirmInstall: 'インストールを確認',
    installFromGithubDesc: 'GitHubリリースからプラグインをインストール',
    goToMarketplace: 'マーケットプレイスへ',
    installProgress: {
      title: '{{name}} をインストール中',
      titleGeneric: 'プラグインのインストール',
      overallProgress: '全体の進捗',
      downloading: 'プラグインをダウンロード中',
      installingDeps: '依存関係をインストール中',
      initializing: '設定を初期化中',
      launching: 'プラグインを起動中',
      completed: '完了',
      failed: '失敗',
      downloadSize: 'パッケージサイズ: {{size}}',
      depsInfo: '{{count}} 個の依存関係をインストール',
      depsProgress:
        '{{installed}}/{{total}} インストール済み · 残り {{remaining}} 個',
      installComplete: 'プラグインのインストール完了',
      dismiss: '閉じる',
      background: 'バックグラウンドで実行',
      taskQueue: 'インストールタスク',
      clearCompleted: '完了を消去',
      noTasks: 'インストールタスクはありません',
      titlePlugin: 'プラグイン {{name}} をインストール中',
      titleMCP: 'MCP サーバー {{name}} をインストール中',
      titleSkill: 'スキル {{name}} をインストール中',
      installCompletePlugin: 'プラグインをインストールしました',
      installCompleteMCP: 'MCP サーバーをインストールしました',
      installCompleteSkill: 'スキルをインストールしました',
    },
    uploadPluginOnly: '.lbpkg プラグインパッケージのみ対応しています',
  },
  market: {
    searchPlaceholder: 'プラグインを検索...',
    searchPlaceholderCount:
      '{{count}} 個の拡張機能・機能・ユースケースを検索...',
    searchResults: '{{count}} 個の拡張機能が見つかりました',
    totalPlugins: '合計 {{count}} 個の拡張機能',
    noPlugins: '利用可能なプラグインがありません',
    noResults: '関連するプラグインが見つかりません',
    loadingMore: 'さらに読み込み中...',
    loading: '読み込み中...',
    allLoaded: 'すべてのプラグインが表示されました',
    allLoadedCount: '{{count}} 個の拡張機能をすべて表示しました',
    install: 'インストール',
    installConfirm:
      'プラグイン "{{name}}" ({{version}}) をインストールしますか？',
    downloadComplete: 'プラグイン "{{name}}" のダウンロードが完了しました',
    installFailed: 'インストールに失敗しました。後でもう一度お試しください',
    loadFailed:
      'プラグインリストの取得に失敗しました。後でもう一度お試しください',
    noDescription: '説明がありません',
    recommendation: {
      pause: '自動ローテーションを一時停止',
      resume: '自動ローテーションを再開',
    },
    notFound: 'プラグイン情報が見つかりません',
    sortBy: '並び順',
    sort: {
      hottest: '人気順',
      recentlyAdded: '最近追加',
      recentlyUpdated: '最近更新',
      mostDownloads: 'ダウンロード数多',
      leastDownloads: 'ダウンロード数少',
    },
    downloads: '回ダウンロード',
    download: 'ダウンロード',
    like: 'いいね',
    unlike: 'いいねを解除',
    likeFailed: 'いいねを更新できませんでした。もう一度お試しください。',
    repository: 'リポジトリ',
    downloadFailed: 'ダウンロード失敗',
    noReadme: 'このプラグインはREADMEドキュメントを提供していません',
    description: '説明',
    tagLabel: 'タグ',
    submissionTitle: 'プラグインの提出が審査中です： {{name}}',
    submissionPending: 'プラグインの提出が審査中です： {{name}}',
    submissionApproved: 'プラグインの提出が承認されました： {{name}}',
    submissionRejected: 'プラグインの提出が拒否されました： {{name}}',
    clickToRevoke: '取り消し',
    revokeSuccess: '取り消し成功',
    revokeFailed: '取り消し失敗',
    submissionDetails: 'プラグイン提出詳細',
    markAsRead: '既読',
    markAsReadSuccess: '既読に設定しました',
    markAsReadFailed: '既読に設定に失敗しました',
    filterByComponent: 'プラグインコンポーネント',
    filterByComponentHint:
      'プラグインが提供する機能の種類です（ツール、コマンド、イベントリスナーなど）。LangBot のさまざまな機能を拡張するために使われます。コンポーネントで絞り込むと、その機能を提供するプラグインのみを表示できます。',
    allComponents: '全部コンポーネント',
    componentName: {
      Tool: 'ツール',
      EventListener: 'イベント監視器',
      Command: 'コマンド',
      KnowledgeEngine: '知識エンジン',
      Parser: 'パーサー',
      Page: 'ページ',
    },
    filterByType: 'タイプ',
    allTypes: '全部',
    typePlugin: 'プラグイン',
    typeMCP: 'MCP',
    typeSkill: 'スキル',
    requestPlugin: 'プラグインをリクエスト',
    tags: {
      filterByTags: 'タグで絞り込み',
      selected: '選択済み',
      selectTags: 'タグを選択',
      clearAll: 'クリア',
      noTags: 'タグがありません',
    },
    filters: {
      allFormats: 'すべての種類',
      more: 'もっと',
      advancedTitle: '高度なフィルター',
      advancedDescription: '拡張子タイプでフィルター',
      technicalType: '技術タイプ',
    },
    allExtensions: 'すべての拡張機能',
    viewDetails: '詳細を表示',
    deprecated: '非推奨',
    deprecatedTooltip:
      '対応する「ナレッジエンジン」プラグインをインストールしてください。',
    installCard: '{{name}} をインストール',
  },
  mcp: {
    title: 'MCP',
    createServer: 'MCPサーバーを追加',
    addMCPServer: 'MCPサーバーを追加',
    editServer: 'MCPサーバーを編集',
    deleteServer: 'MCPサーバーを削除',
    confirmDeleteServer: 'このMCPサーバーを削除してもよろしいですか？',
    confirmDeleteTitle: 'MCPサーバーを削除',
    getServerListError: 'MCPサーバーリストの取得に失敗しました：',
    serverName: 'サーバー名',
    serverMode: '接続モード',
    stdio: 'Stdioモード',
    sse: 'SSEモード',
    http: 'HTTPモード',
    local: 'ローカル（Stdio）',
    remote: 'リモート',
    localModeDescription:
      'Box サンドボックス内でサブプロセスとして MCP サーバーをローカル実行します。',
    remoteModeDescription:
      'URL でリモート MCP サーバーに接続します。トランスポート（Streamable HTTP または SSE）は自動検出されます。',
    remoteUrlPlaceholder: 'https://example.com/mcp',
    remoteUrlDescription:
      'MCP サーバーの URL を貼り付けてください。Streamable HTTP と従来の SSE エンドポイントの両方に対応しています。',
    selectMode: '接続モードを選択',
    noServerInstalled: 'MCPサーバーが設定されていません',
    serverNameRequired: 'サーバー名は必須です',
    commandRequired: 'コマンドは必須です',
    urlRequired: 'URLは必須です',
    timeoutMustBePositive: 'タイムアウトは正の数でなければなりません',
    command: 'コマンド',
    args: '引数',
    env: '環境変数',
    url: 'URL',
    headers: 'ヘッダー',
    timeout: 'タイムアウト',
    toolCallTimeout: 'ツール呼び出しタイムアウト（秒）',
    toolCallTimeoutDescription:
      '1 回のツール呼び出しの最大待機時間です。0 で無制限、既定値は 300 秒です。',
    addArgument: '引数を追加',
    addEnvVar: '環境変数を追加',
    addHeader: 'ヘッダーを追加',
    keyName: 'キー名',
    value: '値',
    testing: 'テスト中...',
    connecting: '接続中...',
    testSuccess: '刷新に成功しました',
    testFailed: '刷新に失敗しました：',
    testError: '刷新エラー',
    refreshSuccess: '刷新に成功しました',
    refreshFailed: '刷新に失敗しました：',
    connectionSuccess: '接続に成功しました',
    connectionFailed: '接続に失敗しました，URLを確認してください',
    connectionFailedStatus: '接続失敗',
    boxDisabledStdioRefused:
      'Stdio モードの MCP サーバーは Box サンドボックスを必要としますが、設定で無効化されています（box.enabled = false）。',
    boxUnavailableStdioRefused:
      'Stdio モードの MCP サーバーは Box サンドボックスを必要としますが、現在接続できません。',
    boxStdioRefusedSuggestion:
      'Box を有効化（box.enabled = true）してランタイムの接続を確認するか、このサーバーを http/sse モードに切り替えてください。',
    boxRequired: 'Box が必要',
    disabledByPolicy: 'ポリシーにより無効',
    stdioDisabledByPolicy:
      'このデプロイでは Stdio MCP が無効です。リモート MCP サーバーを使用してください。',
    stdioBlockedByBoxToast:
      'Box サンドボックスが無効または利用できないため、stdio モードの MCP は保存できません。Box を有効化するか、http/sse モードに切り替えてください。',
    toolsFound: '個のツール',
    unknownError: '不明なエラー',
    noToolsFound: 'ツールが見つかりません',
    noResourcesFound: 'リソースが見つかりません',
    tabTools: 'ツール',
    tabResources: 'リソース',
    tabDocs: 'ドキュメント',
    tabLogs: 'ログ',
    logsLevelAll: 'すべてのレベル',
    logsRefresh: '更新',
    logsAutoRefresh: '自動更新',
    logsEmpty: 'ログはありません。MCPサーバーの実行ログがここに表示されます。',
    noReadme: 'ドキュメントがありません',
    parseResultFailed: 'テスト結果の解析に失敗しました',
    noResultReturned: 'テスト結果が返されませんでした',
    getTaskFailed: 'タスクステータスの取得に失敗しました',
    noTaskId: 'タスクIDを取得できませんでした',
    deleteSuccess: '削除に成功しました',
    deleteFailed: '削除に失敗しました：',
    deleteError: '削除に失敗しました：',
    saveSuccess: '保存に成功しました',
    saveError: '保存に失敗しました：',
    createSuccess: '作成に成功しました',
    createFailed: '作成に失敗しました：',
    createError: '作成に失敗しました：',
    loadFailed: '読み込みに失敗しました',
    modifyFailed: '変更に失敗しました：',
    toolCount: 'ツール：{{count}}',
    parameterCount: 'パラメータ：{{count}}',
    noParameters: 'パラメータなし',
    resourceCount: 'リソース：{{count}}',
    resourceBinaryContent: 'バイナリコンテンツ（表示できません）',
    resourceBinaryOmitted:
      'リソース安全ポリシーによりバイナリコンテンツを省略しました',
    resourceTruncated: 'バイトまたはトークンの上限により内容を切り詰めました',
    resourceReadFailed: 'リソースの読み込みに失敗しました',
    statusConnected: '接続済み',
    statusDisconnected: '未接続',
    statusError: '接続エラー',
    statusDisabled: '無効',
    loading: '読み込み中...',
    starCount: 'スター：{{count}}',
    install: 'インストール',
    installFromGithub: 'GitHubからMCPサーバーをインストール',
    add: '追加',
    name: '名前',
    nameRequired: '名前は必須です',
    sseTimeout: 'SSEタイムアウト',
    sseTimeoutDescription: 'SSE接続を確立するためのタイムアウト',
    extraParametersDescription:
      'MCPサーバーの特定の動作を設定するための追加パラメータ',
    timeoutMustBeNumber: 'タイムアウトは数値である必要があります',
    timeoutNonNegative: 'タイムアウトは負の数にできません',
    sseTimeoutMustBeNumber: 'SSEタイムアウトは数値である必要があります',
    sseTimeoutNonNegative: 'SSEタイムアウトは負の数にできません',
    updateSuccess: '更新に成功しました',
    updateFailed: '更新に失敗しました：',
    selectFromSidebar: 'サイドバーからMCPサーバーを選択してください',
    dangerZone: '危険ゾーン',
    dangerZoneDescription: 'このMCPサーバーに対する不可逆的な操作です。',
    deleteMCPAction: 'このMCPサーバーを削除',
    deleteMCPHint: '削除すると、このMCPサーバーの設定は復元できません。',
  },
  pipelines: {
    title: 'パイプライン',
    description:
      'メッセージイベントの処理フローを定義し、ボットに紐付けて使用するパイプラインです',
    createPipeline: 'パイプラインを作成',
    selectFromSidebar: 'サイドバーからパイプラインを選択してください',
    editPipeline: 'パイプラインを編集',
    chat: 'チャット',
    configuration: '設定',
    debugChat: 'チャットデバッグ',
    getPipelineListError: 'パイプラインリストの取得に失敗しました：',
    daysAgo: '日前',
    today: '今日',
    updateTime: '更新日時',
    defaultBadge: 'デフォルト',
    sortBy: '並び順',
    newestCreated: '最新作成',
    earliestCreated: '最古作成',
    recentlyEdited: '最近編集',
    earliestEdited: '最古編集',
    basicInfo: '基本情報',
    basicInfoDescription: 'パイプラインの名前、アイコン、説明を設定',
    aiCapabilities: 'AI機能',
    triggerConditions: 'トリガー条件',
    safetyControls: '安全制御',
    outputProcessing: '出力処理',
    nameRequired: '名前は必須です',
    descriptionRequired: '説明は必須です',
    createSuccess:
      '作成が完了しました。パイプラインの詳細パラメータを設定してください',
    createError: '作成に失敗しました：',
    saveSuccess: '保存に成功しました',
    saveError: '保存に失敗しました：',
    copySuffix: ' Copy',
    deleteConfirmation:
      '本当にこのパイプラインを削除しますか？このパイプラインに紐付けられたボットは動作しなくなります。',
    defaultPipelineCannotDelete: 'デフォルトパイプラインは削除できません',
    deleteSuccess: '削除に成功しました',
    deleteError: '削除に失敗しました：',
    copyConfirmTitle: 'コピーの確認',
    copyConfirmation:
      'このパイプラインをコピーしますか？すべての設定を含む新しいパイプラインが作成されます。',
    unsavedChanges: '未保存の変更があります',
    dangerZone: '危険ゾーン',
    dangerZoneDescription: '元に戻せない操作',
    deletePipelineAction: 'このパイプラインを削除',
    deletePipelineHint:
      '削除すると、このパイプラインに紐付けられたボットは動作しなくなります。',
    copyPipelineAction: 'このパイプラインをコピー',
    copyPipelineHint: 'すべての設定を複製した新しいパイプラインを作成します。',
    extensions: {
      title: 'プラグイン統合',
      loadError: 'プラグインリストの読み込みに失敗しました',
      saveSuccess: '保存に成功しました',
      saveError: '保存に失敗しました',
      noPluginsAvailable: '利用可能なプラグインがありません',
      disabled: '無効',
      noPluginsSelected: 'プラグインが選択されていません',
      addPlugin: 'プラグインを追加',
      selectPlugins: 'プラグインを選択',
      pluginsTitle: 'プラグイン',
      mcpServersTitle: 'MCPサーバー',
      mcpResourcesTitle: 'MCPリソース',
      noMCPServersSelected: 'MCPサーバーが選択されていません',
      noMCPResourcesAvailable: '利用可能なMCPリソースがありません',
      addMCPServer: 'MCPサーバーを追加',
      selectMCPServers: 'MCPサーバーを選択',
      enableMCPResourceAgentRead: 'モデルの読み取りを許可',
      toolCount: '{{count}}個のツール',
      noPluginsInstalled: 'インストールされているプラグインがありません',
      noMCPServersConfigured: '設定されているMCPサーバーがありません',
      selectAll: 'すべて選択',
      enableAllPlugins: 'すべてのプラグインを有効にする',
      enableAllMCPServers: 'すべてのMCPサーバーを有効にする',
      allPluginsEnabled: 'すべてのプラグインが有効になっています',
      allMCPServersEnabled: 'すべてのMCPサーバーが有効になっています',
      enableAllSkills: 'すべてのスキルを有効化',
      allSkillsEnabled: 'すべてのスキルが有効です',
      skillsTitle: 'スキル',
      noSkillsSelected: 'スキルが選択されていません',
      addSkill: 'スキルを追加',
      selectSkills: 'スキルを選択',
      noSkillsAvailable: '利用可能なスキルがありません',
      mcpServersScopeTooltip:
        'ここでは、このパイプラインに紐付ける MCP サーバーだけを管理します。個別の MCP ツールとリソースは AI 機能の Local Agent で選択します。',
      enableAllMCPServersTooltip:
        '有効にすると、設定済みで有効なすべての MCP サーバーが AI 機能の MCP ツールとリソース候補になります。',
    },
    localAgent: {
      toolsTitle: 'ツール',
      toolsDescription:
        'この Local Agent が使用できるプラグイン、MCP、組み込みツールを選択します。',
      toolsScopeTooltip:
        'MCP ツールは拡張機能で紐付けられた MCP サーバーからのみ表示されます。追加するには先に拡張機能でサーバーを紐付けてください。',
      enableAllTools: 'すべてのツールを有効化',
      allToolsEnabled: '利用可能なすべてのツールが有効です',
      noToolsSelected: 'ツールが選択されていません',
      editTools: 'ツールを編集',
      builtinTools: '組み込みツール',
      pluginTools: 'プラグインツール',
      skillTools: 'スキルツール',
      mcpTools: 'MCP ツール',
      mcpToolsScopeTooltip:
        '拡張機能で現在許可されている MCP サーバーのツールだけが表示されます。',
      skillToolsScopeTooltip:
        'スキルツールは LangBot のスキルサービスと Box サンドボックスバックエンドが利用可能なときに表示され、Agent がスキルを有効化または登録できるようにします。',
      selectTools: 'ツールを選択',
      resourcesTitle: 'リソース',
      resourcesDescription:
        'この Local Agent が読み取れる MCP リソースとナレッジベースを選択します。',
      knowledgeBases: 'ナレッジベース',
      mcpResources: 'MCP リソース',
      mcpResourcesScopeTooltip:
        '拡張機能で現在許可されている MCP サーバーのリソースだけが表示されます。',
      enableMCPResourceRead: 'モデルによる MCP リソース読み取りを許可',
      mcpResourceReadTooltip:
        '無効にすると、選択済みの MCP リソースもモデルコンテキストに注入されません。',
      noMCPResourcesAvailable: '利用可能な MCP リソースがありません',
      selectKnowledgeBases: 'ナレッジベースを選択',
    },
    debugDialog: {
      title: 'パイプラインのチャット',
      selectPipeline: 'パイプラインを選択',
      sessionType: 'セッションタイプ',
      privateChat: 'プライベートチャット',
      groupChat: 'グループチャット',
      send: '送信',
      reset: '会話をリセット',
      inputPlaceholder: '{{type}}メッセージを送信...',
      noMessages: 'メッセージがありません',
      userMessage: 'ユーザー',
      botMessage: 'ボット',
      sendFailed: '送信に失敗しました',
      resetSuccess: '会話がリセットされました',
      resetFailed: 'リセットに失敗しました',
      loadMessagesFailed: 'メッセージの読み込みに失敗しました',
      loadPipelinesFailed: 'パイプラインの読み込みに失敗しました',
      atTips: 'ボットをメンション',
      streaming: 'ストリーミング',
      streamOutput: 'ストリーム',
      connected: 'WebSocket接続済み',
      disconnected: 'WebSocket未接続',
      connectionError: 'WebSocket接続エラー',
      connectionFailed: 'WebSocket接続に失敗しました',
      notConnected:
        'WebSocketに接続されていません。しばらくしてからやり直してください',
      imageUploadFailed: '画像のアップロードに失敗しました',
      reply: '返信',
      replyTo: '返信先',
      showMarkdown: 'Markdownで表示',
      showRaw: '原文で表示',
      allMembers: '全メンバー',
      file: 'ファイル',
      voice: '音声',
      uploadImage: '画像をアップロード',
      uploading: 'アップロード中...',
    },
    monitoring: {
      title: 'ダッシュボード',
      description: 'このパイプラインの実行ログとエラー情報を表示（過去24時間）',
      detailedLogs: '詳細ログ',
    },
  },
  knowledge: {
    title: '知識ベース',
    createKnowledgeBase: '知識ベースを作成',
    selectFromSidebar: 'サイドバーから知識ベースを選択してください',
    editKnowledgeBase: '知識ベースを編集',
    selectKnowledgeBase: '知識ベースを選択',
    selectKnowledgeBases: '知識ベースを選択',
    addKnowledgeBase: '知識ベースを追加',
    noKnowledgeBaseSelected: '知識ベースが選択されていません',
    empty: 'なし',
    editDocument: 'ドキュメント',
    description: 'LLMの回答品質向上のための知識ベースを設定します',
    metadata: 'メタデータ',
    documents: 'ドキュメント',
    kbNameRequired: '知識ベース名は必須です',
    kbDescriptionRequired: '知識ベースの説明は必須です',
    embeddingModelUUIDRequired: '埋め込みモデルは必須です',
    daysAgo: '日前',
    today: '今日',
    kbName: '知識ベース名',
    kbDescription: '知識ベースの説明',
    topK: 'Top K',
    topKRequired: 'Top Kは必須です',
    topKMax: 'Top Kの最大値は30です',
    topKdescription:
      '取得する関連性の高い上位K件の文書の数。1～30の範囲で設定できます',
    defaultDescription: '知識ベース',
    embeddingModelUUID: '埋め込みモデル',
    selectEmbeddingModel: '埋め込みモデルを選択',
    embeddingModelDescription:
      'テキストのベクトル化に使用する埋め込みモデルを管理します',
    updateTime: '更新日時',
    cannotChangeEmbeddingModel:
      '知識ベース作成後は埋め込みモデルを変更できません',
    updateKnowledgeBaseSuccess: '知識ベースの更新に成功しました',
    updateKnowledgeBaseFailed: '知識ベースの更新に失敗しました：',
    documentsTab: {
      name: '名前',
      status: 'ステータス',
      noResults: 'ドキュメントがありません',
      dragAndDrop:
        'ファイルをここにドラッグ&ドロップするか、クリックしてアップロードしてください',
      uploading: 'アップロード中...',
      supportedFormats:
        'PDF、Word、TXT、Markdownなどのドキュメントファイルをサポートしています',
      uploadSuccess: 'ファイルのアップロードに成功しました！',
      uploadError: 'ファイルのアップロードに失敗しました：',
      uploadingFile: 'ファイルをアップロード中...',
      fileSizeExceeded:
        'ファイルサイズが10MBの制限を超えています。より小さいファイルに分割してください。',
      actions: 'アクション',
      delete: 'ドキュメントを削除',
      fileDeleteSuccess: 'ドキュメントの削除に成功しました',
      fileDeleteFailed: 'ドキュメントの削除に失敗しました：',
      processing: '処理中',
      completed: '完了',
      failed: '失敗',
      selectParser: 'パーサーを選択',
      builtInParser: '知識エンジンが提供',
      noParserAvailable:
        'このファイル形式に対応するパーサーがありません。対応するパーサープラグインをインストールしてください。',
      installParserHint: 'マーケットプレイスでパーサープラグインを探す →',
      confirmUpload: 'アップロード',
      cancelUpload: 'キャンセル',
    },
    deleteKnowledgeBaseConfirmation:
      '本当にこの知識ベースを削除しますか？この知識ベースに紐付けられたドキュメントは削除されます。',
    retrieve: '検索テスト',
    retrieveTest: '検索テスト',
    query: '検索',
    queryPlaceholder: '検索内容を入力...',
    distance: '距離',
    content: '内容',
    fileName: 'ファイル名',
    noResults: '検索結果がありません',
    retrieveError: '検索に失敗しました：',
    basicInfo: '基本情報',
    basicInfoDescription: 'ナレッジベースの名前、アイコン、説明を設定',
    engineSettings: 'エンジン設定',
    engineSettingsDescription: '選択したナレッジエンジンの設定',
    engineSettingsReadonly: '編集モードでは変更できません',
    engineSettingsInvalid:
      'エンジン設定の検証に失敗しました、必須項目を確認してください',
    retrievalSettingsInvalid:
      '検索設定の検証に失敗しました、必須項目を確認してください',
    retrievalSettings: '検索設定',
    retrievalSettingsDescription: 'このナレッジベースからの文書検索方法を設定',
    dangerZone: '危険ゾーン',
    dangerZoneDescription: '元に戻せない操作',
    deleteKbAction: 'このナレッジベースを削除',
    deleteKbHint:
      '削除すると、このナレッジベース内のすべての文書とデータが完全に削除されます。',
    noEnginesAvailable: '利用可能なナレッジエンジンがありません',
    installEngineHint:
      '先に「ナレッジエンジン」プラグインをインストールしてください',
    unknownEngine: '不明なエンジン',
    knowledgeEngine: 'ナレッジエンジン',
    knowledgeEngineRequired: 'ナレッジエンジンは必須です',
    selectKnowledgeEngine: 'ナレッジエンジンを選択',
    builtInEngine: '組み込みエンジン',
    cannotChangeKnowledgeEngine:
      '作成後にナレッジエンジンを変更することはできません',
    createKnowledgeBaseFailed: 'ナレッジベースの作成に失敗しました：',
    loadKnowledgeBaseFailed: 'ナレッジベースの読み込みに失敗しました：',
    deleteKnowledgeBaseFailed: 'ナレッジベースの削除に失敗しました：',
    getKnowledgeBaseListError: 'ナレッジベース一覧の取得に失敗しました：',
    embeddingModel: 'Embeddingモデル',
    embeddingModelRequired: 'このエンジンにはEmbeddingモデルが必要です',
    addExternal: '外部ナレッジベースを追加',
    createExternalSuccess: '外部ナレッジベースが正常に作成されました',
    updateExternalSuccess: '外部ナレッジベースが正常に更新されました',
    deleteExternalSuccess: '外部ナレッジベースが正常に削除されました',
    retriever: '検索器',
    selectRetriever: '検索器を選択...',
    retrieverConfiguration: '検索器設定',
    retrieverInstallInfo: 'ナレッジ検索器プラグインは',
    retrieverMarketLink: 'こちらからインストールできます',
    migration: {
      title: 'ナレッジベースの移行',
      description:
        '新バージョンではナレッジベースをプラグインベースのアーキテクチャに再構築し、内蔵ナレッジベースと外部ナレッジベースを「ナレッジエンジン」プラグインとして統合しました。旧ナレッジベースデータの移行が必要です。旧データはデータベースに自動的にバックアップされています。',
      detected:
        '移行が必要なナレッジベースが{{total}}件見つかりました（内部{{internal}}件、外部{{external}}件）。',
      startWithInstall: 'プラグインを自動インストールして移行',
      startDataOnly: 'データのみ移行',
      dataOnlyHint:
        '「データのみ移行」はオフライン環境向けです。移行完了後に対応するプラグインを手動でインストールしてください。',
      dismiss: '元データを破棄',
      running: 'ナレッジベースを移行中です。しばらくお待ちください...',
      success: 'ナレッジベースの移行が完了しました',
      error: 'ナレッジベースの移行に失敗しました：',
      dismissError: '操作に失敗しました',
      retry: 'リトライ',
    },
  },
  register: {
    title: 'LangBot を初期化 👋',
    description: 'これはLangBotの初回起動です',
    adminAccountNote:
      'ここで初期化されたアカウントは管理者アカウントとして使用されます',
    register: '登録',
    initWithSpace: 'LangBot アカウントで初期化',
    spaceRecommended:
      'おすすめ：公式の安定したモデル API とクラウドサービスを利用',
    spaceInfoTip1:
      'Space は統一されたアカウント認証サービスを提供し、機密情報をアップロードすることはありません。',
    spaceInfoTip2:
      'LangBot アカウントでログインすると、LangBot Models などのクラウドサービスを利用でき、無料のモデル呼び出しクレジットで迅速に開始できます。',
    spaceInfoTip3:
      'ログイン方法は他の機能に影響しません。いつでも他のソースからモデルを設定して使用できます。',
    registerLocal: 'ローカルアカウントを登録',
    registerWithPassword: 'メールアドレスとパスワードで登録',
    initSuccess: '初期化に成功しました。ログインしてください',
    initFailed: '初期化に失敗しました：',
  },
  resetPassword: {
    title: 'パスワードをリセット 🔐',
    description:
      '復旧キーと新しいパスワードを入力して、アカウントのパスワードをリセットします',
    recoveryKey: '復旧キー',
    recoveryKeyDescription:
      '設定ファイル `data/config.yaml` の `system.recovery_key` に保存されています',
    newPassword: '新しいパスワード',
    enterRecoveryKey: '復旧キーを入力',
    enterNewPassword: '新しいパスワードを入力',
    recoveryKeyRequired: '復旧キーは必須です',
    newPasswordRequired: '新しいパスワードは必須です',
    resetPassword: 'パスワードをリセット',
    resetting: 'リセット中...',
    resetSuccess: 'パスワードのリセットに成功しました。ログインしてください',
    resetFailed:
      'パスワードのリセットに失敗しました。メールアドレスと復旧キーを確認してください',
    backToLogin: 'ログインに戻る',
  },
  embedding: {
    description: 'テキストのベクトル化に使用する埋め込みモデルを管理します',
    createModel: '埋め込みモデルを作成',
    editModel: '埋め込みモデルを編集',
    getModelListError: '埋め込みモデルリストの取得に失敗しました：',
    embeddingModels: '埋め込みモデル',
    extraParametersDescription:
      'リクエストボディに追加されるパラメータ（encoding_format、dimensions など）',
  },
  llm: {
    description: 'チャットメッセージの生成に使用するLLMモデルを管理します',
    llmModels: 'LLMモデル',
    extraParametersDescription:
      'リクエストボディに追加されるパラメータ（max_tokens、temperature、top_p など）',
  },
  version: {
    newVersionAvailable: '新しいバージョンが利用可能',
    viewUpdateGuide: 'アップデート方法を見る',
    noReleaseNotes: 'リリースノートはありません',
  },
  account: {
    settings: 'アカウント設定',
    settingsDescription: 'パスワードと連携アカウントを管理します',
    setPassword: 'パスワードを設定',
    passwordSetSuccess: 'パスワードの設定に成功しました',
    passwordStatus: 'ローカルパスワード',
    passwordSet: '設定済み',
    passwordNotSet: '未設定',
    passwordSetDescription:
      'パスワードが設定されています。メールとパスワードでログインできます',
    spaceStatus: 'LangBot アカウント',
    spaceBound: '連携済み',
    spaceNotBound: '未連携',
    spaceBoundDescription:
      'LangBot アカウントと連携済み、公式モデル API とクラウドサービスが利用可能',
    bindSpace: 'LangBot アカウントを連携',
    bindSpaceDescription: '連携して公式モデル API とクラウドサービスを利用',
    bindSpaceButton: '連携',
    bindSpaceConfirmTitle: '連携を確認',
    bindSpaceConfirmDescription:
      'ローカルインスタンスを LangBot アカウントに連携しようとしています',
    bindSpaceWarning:
      '連携後、ログインメールアドレスは {{localEmail}} から LangBot アカウントのメールアドレスに変更されます。',
    bindSpaceSuccess: 'LangBot アカウントの連携に成功しました',
    bindSpaceFailed: 'LangBot アカウントの連携に失敗しました',
    bindSpaceInvalidState:
      '無効な連携リクエストです。アカウント設定から再度お試しください。',
    setPasswordHint:
      'パスワードを設定するとメールとパスワードでログインできます',
    spaceEmailMismatch:
      'LangBot アカウントのメールアドレスがローカルアカウントのメールアドレスと一致しません',
    space_account_not_registeredTitle: 'アカウントが登録されていません',
    space_account_not_registered:
      'この LangBot アカウントのメールアドレスのローカルアカウントはありません。ワークスペース所有者に招待を依頼してください。',
    space_account_binding_requiredTitle: 'LangBot アカウントの連携が必要です',
    space_account_binding_required:
      'LangBot アカウントログインを使用する前に、アカウント設定でこのローカルアカウントを LangBot アカウントに連携してください。',
  },
  workspace: {
    title: 'ワークスペース',
    description: 'メンバー、ロール、招待リンクを管理します',
    selectTitle: 'ワークスペースを選択',
    selectDescription: 'LangBot で使用するワークスペースを選択してください。',
    selectionLoadFailed:
      'ワークスペースを読み込めませんでした。もう一度お試しください。',
    switchWorkspace: 'ワークスペースを切り替え',
    ossSingletonDescription:
      'このセルフホストインスタンスには1つのワークスペースがあり、複数のユーザーを追加できます。',
    cloudManagedDescription:
      'このワークスペースは LangBot Cloud でホストされています。メンバーはここで管理し、請求は Cloud で開きます。',
    loadFailed: 'ワークスペース情報の読み込みに失敗しました',
    members: 'メンバー',
    you: 'あなた',
    inviteMember: 'メンバーを招待',
    inviteDescription:
      '現在のワークスペースにユーザーを追加する一度限りのリンクを作成します。',
    emailPlaceholder: 'member@example.com',
    createInvitation: '招待を作成',
    invitationCreated: '招待を作成しました',
    delivery: {
      sent: '招待メールを送信しました',
      link_only: '招待リンクを作成しました',
      failed: '招待リンクを作成しましたが、メールを送信できませんでした',
    },
    invitationCreateFailed: '招待の作成に失敗しました',
    oneTimeLinkWarning:
      'このリンクを今すぐコピーしてください。一度だけ表示されます。',
    copyInvitation: '招待リンクをコピー',
    invitationCopied: '招待リンクをコピーしました',
    pendingInvitations: '保留中の招待',
    expiresAt: '{{date}} に期限切れ',
    revokeInvitation: '招待を取り消す',
    invitationRevoked: '招待を取り消しました',
    invitationRevokeFailed: '招待の取り消しに失敗しました',
    acceptInvitation: '招待を承認',
    invitedToWorkspace: '{{workspace}} に招待されました',
    checkingInvitation: '招待を確認しています...',
    invitationMissing: 'この招待リンクには必要な情報がありません。',
    invitationExpired: 'この招待は期限切れです。',
    invitationAlreadyRevoked: 'この招待は取り消されました。',
    invitationAlreadyUsed: 'この招待はすでに使用されています。',
    invitationInvalid: 'この招待は無効か、利用できなくなっています。',
    invitationAccepted: '招待を承認しました',
    invitationAcceptFailed: '招待の承認に失敗しました',
    invitationEmailMismatch: 'この招待は別のメールアドレスに送られたものです。',
    existingAccountLoginRequired:
      'このメールアドレスのアカウントは既に存在します。ログインしてください。',
    acceptAsCurrentAccount: '現在のアカウントで承認',
    authenticatedInvitationNotice:
      '一度ログアウトし、招待されたアカウントでログインしてください。招待は保持されます。',
    logoutAndReturn: 'ログアウトしてこの招待に戻る',
    switchAccount: 'アカウントを切り替える',
    registerAndAccept: 'アカウントを作成して承認',
    alreadyHaveAccount: 'アカウントを持っています',
    confirmPassword: 'パスワードを確認',
    passwordMinimum: 'パスワードは8文字以上にしてください。',
    passwordMismatch: 'パスワードが一致しません。',
    backToLogin: 'ログインに戻る',
    memberUpdated: 'メンバーのロールを更新しました',
    memberUpdateFailed: 'メンバーのロール更新に失敗しました',
    removeMember: 'メンバーを削除',
    removeMemberConfirm: 'このメンバーをワークスペースから削除しますか？',
    memberRemoved: 'メンバーを削除しました',
    memberRemoveFailed: 'メンバーの削除に失敗しました',
    transferOwnership: '所有権を移譲',
    types: {
      personal: '個人',
      team: 'チーム',
    },
    roles: {
      owner: '所有者',
      admin: '管理者',
      developer: '開発者',
      operator: 'オペレーター',
      viewer: '閲覧者',
    },

    settings: 'Workspace Settings',
    currentPlan: 'Current plan',
    planUnavailable: 'Unavailable',
    upgradePlan: 'Change or upgrade plan',
  },
  monitoring: {
    title: 'ダッシュボード',
    description:
      'ボットアクティビティ、LLM呼び出し、システムパフォーマンスを監視',
    overview: '概要',
    totalMessages: '総メッセージ数',
    llmCallsCount: 'LLM呼び出し',
    modelCallsCount: 'モデル呼び出し',
    successRate: '成功率',
    activeSessions: 'アクティブセッション',
    last24Hours: '過去24時間',
    filters: {
      title: 'フィルター',
      bot: 'ボット',
      pipeline: 'パイプライン',
      allBots: 'すべてのボット',
      selectBot: 'ボットを選択',
      allPipelines: 'すべてのパイプライン',
      selectPipeline: 'パイプラインを選択',
      loading: '読み込み中...',
      timeRange: '時間範囲',
      customRange: 'カスタム範囲',
      from: '開始',
      to: '終了',
      apply: '適用',
      reset: 'フィルターをリセット',
      lastHour: '過去1時間',
      last6Hours: '過去6時間',
      last24Hours: '過去24時間',
      last7Days: '過去7日間',
      last30Days: '過去30日間',
    },
    tabs: {
      messages: 'メッセージ記録',
      llmCalls: 'LLM呼び出し',
      embeddingCalls: 'Embedding呼び出し',
      modelCalls: 'モデル呼び出し',
      tokens: 'トークン監視',
      sessions: 'セッション分析',
      feedback: 'ユーザーフィードバック',
      errors: 'エラーログ',
    },
    messageList: {
      timestamp: 'タイムスタンプ',
      bot: 'ボット',
      pipeline: 'パイプライン',
      message: 'メッセージ',
      sessionId: 'セッションID',
      status: 'ステータス',
      actions: 'アクション',
      viewDetails: '詳細を表示',
      copyId: 'IDをコピー',
      noMessages: 'メッセージが見つかりません',
      noMessagesDescription: 'フィルターを調整するか、後で確認してください',
      loading: 'メッセージを読み込んでいます...',
      loadMore: 'もっと読み込む',
      autoRefresh: '自動更新',
      platform: 'プラットフォーム',
      user: 'ユーザー',
      level: 'レベル',
      runner: 'ランナー',
      viewConversation: '会話詳細を表示',
      turns: '{{count}} 会話ターン',
      userMessage: 'ユーザー',
      noUserMessage: 'ユーザー入力は記録されていません',
      assistantMessage: 'アシスタント',
      assistantMessageCount: 'アシスタント +{{count}}',
      noAssistantMessage: 'アシスタントの返信は記録されていません',
      messageCount: 'メッセージ数',
      conversationTrace: '会話トレース',
      noLlmCalls: 'モデル呼び出しは記録されていません',
      roles: {
        user: 'ユーザー',
        assistant: 'アシスタント',
        message: 'メッセージ',
      },
    },
    llmCalls: {
      title: 'LLM呼び出し',
      model: 'モデル',
      tokens: 'トークン数',
      duration: '期間',
      cost: 'コスト',
      noData: 'LLM呼び出し記録が見つかりません',
      inputTokens: '入力トークン',
      outputTokens: '出力トークン',
      totalTokens: '合計トークン数',
      avgDuration: '平均期間',
      calls: '呼び出し',
    },
    toolCalls: {
      title: 'ツール呼び出し',
      totalCalls: '呼び出し',
      duration: 'ツール時間',
      errorCalls: '失敗した呼び出し',
      arguments: '引数',
      result: '結果',
      noToolCalls: 'ツール呼び出しは記録されていません',
    },
    tokens: {
      totalTokens: '総トークン数',
      inputTokens: '入力トークン',
      outputTokens: '出力トークン',
      avgPerCall: '平均 / 呼び出し',
      throughput: 'スループット',
      tokensPerSec: 'トークン/秒',
      errorCalls: '失敗した呼び出し',
      acrossCalls: '{{count}} 回の呼び出し',
      ofTotal: '合計 {{count}} 回',
      usageOverTime: 'トークン使用量の推移',
      byModel: 'モデル別',
      model: 'モデル',
      calls: '呼び出し回数',
      avgLatency: '平均レイテンシ',
      noData: '選択した期間にトークン使用量がありません',
      loadError: 'トークン統計の読み込みに失敗しました: {{error}}',
      zeroTokenWarning:
        '{{count}} 件の成功した呼び出しでトークン使用量が 0 と報告されました。通常これは上流プロバイダーが使用量情報を返さなかったことを意味します。モデルプロバイダーの設定を確認してください。',
      bucket: {
        hour: '時間単位',
        day: '日単位',
      },
    },
    embeddingCalls: {
      title: 'Embedding呼び出し',
      model: 'モデル',
      tokens: 'トークン数',
      duration: '期間',
      noData: 'Embedding呼び出し記録が見つかりません',
      promptTokens: '入力トークン',
      totalTokens: '合計トークン数',
      inputCount: '入力数',
      knowledgeBase: 'ナレッジベース',
      queryText: 'クエリ',
    },
    modelCalls: {
      title: 'モデル呼び出し',
      llmModel: '対話モデル',
      embeddingModel: '埋め込みモデル',
      embeddingCall: '埋め込み呼び出し',
      retrieveCall: '検索呼び出し',
      noData: 'モデル呼び出し記録が見つかりません',
    },
    sessions: {
      sessionId: 'セッションID',
      messageCount: 'メッセージ数',
      duration: '期間',
      lastActivity: '最終アクティビティ',
      noSessions: 'セッションが見つかりません',
      startTime: '開始時刻',
      messageStats: 'メッセージ統計',
      totalMessages: '総メッセージ数',
      successMessages: '成功',
      errorMessages: '失敗',
      llmStats: 'LLM統計',
      noData: 'セッションが見つかりません',
    },
    errors: {
      errorType: 'エラータイプ',
      errorMessage: 'エラーメッセージ',
      occurredAt: '発生時刻',
      noErrors: 'エラーが見つかりません',
      stackTrace: 'スタックトレース',
      title: 'エラー',
    },
    feedback: {
      title: 'ユーザーフィードバック',
      totalFeedback: 'フィードバック合計',
      totalLikes: 'いいね数',
      totalDislikes: 'よくないね数',
      satisfactionRate: '満足度',
      like: 'いいね',
      dislike: 'よくないね',
      noFeedback: 'フィードバックはまだありません',
      noFeedbackDescription: 'ユーザーフィードバックがここに表示されます',
      feedbackList: 'フィードバック一覧',
      feedbackContent: 'フィードバック内容',
      contextInfo: 'コンテキスト情報',
      userId: 'ユーザーID',
      messageId: 'メッセージID',
      streamId: '関連質問ID',
      inaccurateReasons: '不正確な理由',
      platform: 'プラットフォーム',
      exportFeedback: 'フィードバックをエクスポート',
      description:
        '問題点や改善案を教えてください。診断のため、インスタンス UUID、ログインアカウント、ページ情報も送信されます。',
      placeholder: '提案、問題、再現手順を入力してください...',
      attachImage: '画像を追加',
      screenshot: 'スクリーンショット',
      submit: '送信',
      privacyHint: '秘密鍵、パスワード、個人的な会話内容は含めないでください。',
      contentRequired: 'フィードバック内容を入力してください',
      imageOnly: '画像のみ添付できます',
      imageTooLarge: '画像は 1 枚 2MB 未満にしてください',
      tooManyImages: '画像は最大 3 枚まで添付できます',
      screenshotFailed:
        'スクリーンショットに失敗しました。貼り付けまたはアップロードを試してください。',
      submitSuccess: 'フィードバックを送信しました。ありがとうございます！',
      submitFailed: '送信に失敗しました。後でもう一度お試しください。',
      removeImage: '画像を削除',
    },
    messageDetails: {
      noData: 'このクエリにはLLM呼び出しやエラーがありません',
    },
    queries: {
      title: 'クエリ',
    },
    queryVariables: {
      title: 'クエリ変数',
    },
    trafficChart: {
      title: 'トラフィック概要',
      messages: 'メッセージ',
      llmCalls: 'LLM呼び出し',
      noData: 'トラフィックデータがありません',
    },
    viewMonitoring: 'モニタリングを表示',
    refreshData: 'データを更新',
    exportData: 'データをエクスポート',
    export: {
      title: 'データをエクスポート',
      exporting: 'エクスポート中...',
      messages: 'メッセージ',
      llmCalls: 'LLM コール',
      embeddingCalls: 'Embedding コール',
      errors: 'エラーログ',
      sessions: 'セッション',
      feedback: 'ユーザーフィードバック',
    },
    systemStatus: 'システム状態',
    pluginRuntime: 'プラグインランタイム',
    boxRuntime: 'Box ランタイム',
    connected: '接続済み',
    disconnected: '未接続',
    disabled: '無効',
    statusDetail: 'ステータス',
    pluginDisabled: 'プラグインシステムが無効です',
    boxDisabled:
      'Box サンドボックスは設定で無効化されています — サンドボックスツール / スキルの追加・編集 / stdio MCP は利用できません',
    boxUnavailable:
      'Box サンドボックスは利用できません — サンドボックスツール / スキルの追加・編集 / stdio MCP は利用できません',
    boxRequiredHint:
      'この機能には Box ランタイムが必要です。設定で有効化（box.enabled = true）し、ランタイムが正常に接続できることを確認してください。',
    boxBackend: 'バックエンド',
    boxProfile: 'プロファイル',
    boxSandboxes: 'サンドボックス',
    boxSessionCreated: '作成日時',
    boxSessionLastUsed: '最終使用',
  },
  settingsDialog: {
    title: '設定',
    nav: {
      workspace: 'ワークスペース',
      models: 'モデル',
      api: 'API',
      storage: 'ストレージ',
      account: 'アカウント',
    },
  },
  storageAnalysis: {
    title: 'ストレージ分析',
    description: 'ストレージ使用量とクリーンアップ候補を確認します',
    openDialog: '分析を表示',
    dialogTitle: 'ストレージ分析',
    generatedAt: '生成日時 {{time}}',
    loading: '読み込み中...',
    refresh: '更新',
    totalSize: '合計サイズ',
    binaryStorage: 'プラグインバイナリストレージ',
    uploadCleanup: '期限切れアップロード',
    logCleanup: '期限切れログ',
    sections: 'ストレージセクション',
    monitoringTables: '監視テーブル',
    runtimeTasks: '実行タスク',
    cleanupPolicy: 'クリーンアップポリシー',
    uploadRetention: 'アップロード保持期間',
    logRetention: 'ログ保持期間',
    databaseType: 'データベース種別',
    days: '日',
    missing: 'なし',
    expiredUploads: '期限切れアップロード',
    expiredLogs: '期限切れログ',
    noExpiredUploads: '期限切れのアップロードファイルはありません',
    noExpiredLogs: '期限切れのログファイルはありません',
    sectionNames: {
      database: 'データベース',
      logs: 'ログ',
      storage: 'アップロードファイル',
      vector_store: 'ベクターストア',
      plugins: 'プラグイン',
      mcp: 'MCP',
      temp: '一時ファイル',
    },
  },
  limitation: {
    maxBotsReached:
      'ボット数が上限（{{max}}個）に達しました。新しいボットを作成するには、既存のボットを削除してください。',
    maxPipelinesReached:
      'パイプライン数が上限（{{max}}個）に達しました。新しいパイプラインを作成するには、既存のパイプラインを削除してください。',
    maxExtensionsReached:
      '拡張機能数が上限（{{max}}個）に達しました。新しい MCP サーバーやプラグインを追加するには、既存のものを削除してください。',
    quotaLoadingTooltip:
      'ワークスペースの使用状況を読み込んでいます。リソースを作成する前にお待ちください。',
    quotaCheckFailed:
      '現在のワークスペース上限を確認できません。もう一度お試しください。',
    createDisabledTooltip:
      'このワークスペースの{{resource}}数が上限（{{max}}個）に達しました。新しく作成する前に既存の{{resource}}を削除してください。',
  },
  wizard: {
    sidebarDescription: 'ガイド付きステップでボットを作成',
    loading: 'ウィザードを読み込み中...',
    loadError: 'ウィザードデータの読み込みに失敗しました',
    skip: 'スキップ',
    skipConfirmMessage:
      'アカウントメニューからクイックスタートウィザードに再度アクセスするか、手動でボットを作成できます。',
    skipConfirmOk: 'OK',
    prev: '前へ',
    next: '次へ',
    finish: '作成＆デプロイ',
    confirmCreateBot: '確定、ボットを作成',
    createSuccess: 'パイプラインが作成され、ボットにリンクされました！',
    botCreateSuccess: 'ボットが正常に作成されました！',
    botSaveSuccess: 'ボット設定が保存され、有効になりました！',
    createError: 'リソースの作成に失敗しました',
    skipSaveError: 'スキップ状態の保存に失敗しました。もう一度お試しください。',
    completeSaveError: '完了状態の保存に失敗しました。もう一度お試しください。',
    step: {
      platform: 'プラットフォーム',
      botConfig: 'ボット設定',
      aiEngine: 'AIエンジン',
      done: '完了',
    },
    platform: {
      title: 'プラットフォームを選択',
      description:
        'ボットが接続するメッセージングプラットフォームを選択してください。',
    },
    botConfig: {
      title: 'ボットを設定',
      description:
        'ボットをセットアップし、正常に動作することを確認してから続行してください。',
      saveBot: '保存して有効化',
      resaveBot: '設定を再保存',
      botSaved:
        'ボット設定が保存され、有効になりました。ログを確認して接続を検証してください。',
      waitingForMessage:
        'ボットが有効になりました。続行するには IM からメッセージを送信してください。',
      messageReceived:
        'ボットが IM メッセージを受信しました。次のステップに進めます。',
      messageReceivedLocalAccountWarning:
        'ボット側の接続設定は正常で、IM メッセージを受信できています。LangBot Account でログインしていないためモデル呼び出しが失敗する場合がありますが、次のステップで独自のモデルを追加できます。',
      pageBotTestPrompt:
        'ページボットが有効になりました。右下のチャットバブルをクリックしてメッセージを送信し、会話フロー全体を確認してください。',
      pageBotTestNotice:
        'テスト専用です。実際の外部 Web ページにコードを埋め込んでください。',
      webhookTestPrompt:
        'コールバック URL の準備ができました。外部プラットフォームに設定し、ボットへ実際のメッセージを送信してください。',
      httpTestPrompt:
        'HTTP Bot が有効になりました。実際の受信メッセージを送信して接続を確認できます。',
      httpTestDefaultMessage: 'こんにちは。これは接続テストメッセージです。',
      sendHttpTest: 'テストメッセージを送信',
      httpTestAccepted:
        'テストメッセージを受け付けました。まもなくログに表示されます。',
      httpTestMissingSecret:
        '受信署名シークレットを入力し、先に設定を保存してください。',
      httpTestFailed: 'テストメッセージの送信に失敗しました：{{error}}',
      logsTitle: 'ボットログ',
      logsDescription:
        'ボットの活動を監視して、プラットフォーム接続が正常に動作していることを確認します。',
    },
    aiEngine: {
      title: 'AIエンジンを設定',
      description:
        'ボットのインテリジェンスを駆動するAIエンジンを選択してください。',
      optionalDescription:
        'このステップは任意です。現在の Agent をどのように設定するか選択してください。',
      externalTitle: '外部プラットフォームの Agent を接続',
      externalDescription:
        'Dify、n8n、Coze などを接続し、ボットのパイプラインを置き換えます。',
      ownModelTitle: '自分のモデルを使用',
      ownModelDescription:
        'プロバイダーを追加し、モデルをスキャンまたは手動入力して設定を完了します。',
      ownModelSetupTitle: '自分のモデルを追加',
      ownModelSetupDescription:
        'モデルプロバイダーを追加すると自動スキャンされます。モデル ID の手動入力も可能です。',
      addProviderTitle: 'プロバイダーを追加',
      addProviderDescription:
        '接続とモデルスキャンに使用するプロバイダー情報と API キーを入力します。',
      selectModelTitle: 'モデルを選択',
      selectScannedModelTitle: 'モデルを選択',
      selectScannedModelDescription:
        '選択したモデルを新しいパイプラインのメインモデルに設定し、ボットをそのパイプラインへ切り替えます。',
      scanModelMode: 'モデルをスキャン',
      manualModelMode: '手動で追加',
      scanningModels: '利用可能なモデルをスキャン中…',
      noScannedModels:
        '利用可能なチャットモデルが見つかりません。プロバイダー設定を確認してください。',
      scanModelsFailed:
        'モデルのスキャンに失敗しました。URL と API キーを確認して再試行してください。',
      manualFallbackFailed:
        '自動スキャンに失敗しました。プロバイダーが対応するモデル ID を直接入力できます。',
      manualFallbackEmpty:
        'モデルが見つかりませんでした。プロバイダーが対応するモデル ID を直接入力できます。',
      manualModelId: 'モデル ID',
      manualModelIdPlaceholder: '例：gpt-4o',
      manualModelIdDescription:
        'モデルリクエストで実際に使用する model パラメーターを入力します。',
      manualModelOptions: '任意のモデル機能',
      editProvider: 'プロバイダーを編集',
      rescanModels: 'モデルを再スキャン',
      moreFeaturesTitle: 'Agent に機能を追加',
      moreFeaturesDescription:
        'ワークベンチを開き、自動生成されたばかりの Agent にツール、ナレッジベースなどの機能を追加します。',
      runnerDescription: '外部 Agent の Runner を選択し、接続を設定します。',
      backToChoices: '選択肢に戻る',
      createExternal: '作成して関連付ける',
      finishWithModel: '選択したモデルを使用して完了',
      openWorkbench: 'ワークベンチを開く',
    },
    config: {
      botInfo: 'ボット情報',
      botNamePlaceholder: 'ボット名を入力',
      botDescPlaceholder: 'ボットの説明を入力（任意）',
      platformConfig: '{{platform}} 設定',
      aiConfig: '{{engine}} 設定',
    },
    done: {
      title: '完了しました！',
      description:
        'ボットが作成され、AIパイプラインに接続されました。ワークベンチから管理できます。',
      backToWorkbench: 'ワークベンチに戻る',
    },
  },
  addExtension: {
    installTitle: '{{type}}をインストール',
    installConfirm: '{{type}}「{{name}}」をインストールしますか？',
    installInfoType: 'タイプ',
    installInfoId: 'ID',
    installInfoVersion: 'バージョン',
    installSuccess: 'インストールに成功しました',
    installStage: {
      mcpInstalling: 'MCPサーバーを追加して接続しています…',
      skillInstalling: 'スキルをインストールしています…',
      installed: '完了',
    },
    manualAdd: '手動追加',
    uploadExtension: 'ドラッグ＆ドロップまたはクリックしてアップロード',
    uploadHint: '.zip（スキル）と.lbpkg（プラグイン）ファイルに対応',
    orContinueWith: 'または以下の操作を選択',
    addMCPServerHint: 'MCPツールサーバー拡張を接続',
    installFromGithub: 'GitHubからプラグインをインストール',
    installFromGithubHint: 'GitHub Releaseからプラグイン拡張をインストール',
    createSkill: '新しいスキルを作成',
    createSkillHint: '新しいスキル拡張を手動で作成',
    unsupportedFileType:
      'サポートされていないファイルタイプです。.zipと.lbpkgファイルのみサポートされています',
    githubUrlHelp: 'GitHub URL を貼り付けてください',
    githubUrlTooltip:
      'プラグイン: リポジトリ、Release、Tag の URL を貼り付けます。スキル: スキルディレクトリ内の SKILL.md ページ URL を貼り付けます。',
    githubUrlPlaceholder:
      'GitHub リポジトリ、Release、または SKILL.md のリンク',
    githubUrlRequired: 'GitHub URL を入力してください',
    previewSkill: 'スキルをプレビュー',
    noSkillPreviewFound: 'インポート可能なスキルが見つかりません',
  },
  errorPage: {
    unexpectedError: 'エラーが発生しました',
    unexpectedErrorDescription:
      '予期しないエラーが発生しました。しばらくしてからもう一度お試しください。',
    notFound: 'ページが見つかりません',
    notFoundDescription:
      'お探しのページは存在しないか、移動された可能性があります。',
    backendUnavailableStatus: 'バックエンドを利用できません',
    goBack: '戻る',
    backToHome: 'ホームに戻る',
    backToLogin: 'ログインに戻る',
    retrying: '再試行中',
    retryFailed:
      'バックエンドにまだ接続できません。サービスを起動してからもう一度お試しください。',
  },
  feishu: {
    createApp: 'ワンクリックでFeishuアプリ作成',
    scanQRCode: '以下のQRコードをFeishuでスキャンし、アプリを自動作成',
    waitingForScan: 'スキャン待ち',
    createSuccess: 'アプリ作成成功！認証情報が自動入力されました',
    createFailed: '作成失敗',
    connecting: 'Feishuサービスに接続中...',
    expired: 'QRコードの有効期限が切れました。もう一度お試しください',
    denied: 'ユーザーが承認を拒否しました',
    connectionLost: '接続が切断されました。もう一度お試しください',
    reconnecting: '再接続中...',
    retry: '再試行',
  },
  weixin: {
    scanLogin: 'QRコードでWeChatログイン',
    scanQRCode: '以下のQRコードをWeChatでスキャンし、トークンを自動入力',
    loginSuccess: 'ログイン成功！トークンが自動入力されました',
    loginFailed: 'ログイン失敗',
    connecting: 'WeChatサービスに接続中...',
    waitingForScan: 'スキャン待ち',
    retry: '再試行',
  },
  dingtalk: {
    createApp: 'ワンクリックでDingTalkアプリ作成',
    scanQRCode: '以下のQRコードをDingTalkでスキャンし、アプリを自動作成',
    waitingForScan: 'スキャン待ち',
    createSuccess: 'アプリ作成成功！認証情報が自動入力されました',
    createFailed: '作成失敗',
    connecting: 'DingTalkサービスに接続中...',
    retry: '再試行',
    robotCodeNote:
      'ロボットコードは自動取得できません。DingTalk開発者バックエンド > ロボット設定から手動でコピーしてください。画像認識やファイルアップロードなどの機能に必要です。',
  },
  wecombot: {
    createBot: 'ワンクリックでWeComボット作成',
    scanQRCode: '以下のQRコードをWeComでスキャンし、ボットを自動作成',
    waitingForScan: 'スキャン待ち',
    createSuccess: 'ボット作成成功！認証情報が自動入力されました',
    createFailed: '作成失敗',
    connecting: 'WeComサービスに接続中...',
    retry: '再試行',
    robotNameNote: 'ロボット名は自動取得できません。手動で入力してください。',
  },
  qqofficial: {
    createBinding: 'ワンクリックで QQ 公式ボットを QR バインド',
    scanQRCode:
      '以下の QR コードをモバイル QQ でスキャンし、「QQ ボットアシスタント」でバインドを承認してください',
    waitingForScan: 'スキャン待ち',
    bindSuccess: 'バインド成功！AppID と Secret が自動入力されました',
    bindFailed: 'バインド失敗',
    connecting: 'QQ サービスに接続中...',
    retry: '再試行',
    tokenNote:
      'Token フィールドは現行アダプターでは使用しません。空欄のままで構いません。',
    boundBy: 'QQ ユーザー {{openid}} によりバインドされました',
  },
  pluginPages: {
    selectFromSidebar: 'サイドバーからプラグインページを選択してください',
    invalidPage: '無効なプラグインページ',
  },
  skills: {
    title: 'スキル',
    description: '会話中に有効化できるスキルを作成・管理します',
    createSkill: 'スキルを作成',
    createSkillDescription:
      'ローカルディレクトリをインポートするか、情報を入力して作成します',
    editSkill: 'スキルを編集',
    getSkillListError: 'スキル一覧の取得に失敗しました: ',
    skillName: 'スキル名',
    displayName: 'スキル名',
    displayNamePlaceholder: '表示名（任意の言語に対応）',
    skillSlug: 'ディレクトリ名',
    skillSlugPlaceholder: 'english-name-only',
    skillSlugHelp:
      'スキルのディレクトリ名として使用します。英字、数字、ハイフン、アンダースコアのみ使用できます。',
    skillDescription: 'スキルの説明',
    skillInstructions: '指示内容',
    saveSuccess: '保存しました',
    saveError: '保存に失敗しました: ',
    createSuccess: '作成しました',
    createError: '作成に失敗しました: ',
    deleteSuccess: '削除しました',
    deleteError: '削除に失敗しました: ',
    deleteConfirmation: 'このスキルを削除してもよろしいですか？',
    delete: 'スキルを削除',
    skillNameRequired: 'スキル名は必須です',
    skillDescriptionRequired: 'スキルの説明は必須です',
    packageRootRequired: 'パッケージルートパスは必須です',
    scan: 'スキャン',
    scanSuccess: 'ディレクトリをスキャンしました',
    scanError: 'ディレクトリのスキャンに失敗しました: ',
    noSkills: '設定済みのスキルはありません',
    preview: 'プレビュー',
    previewInstructions: 'SKILL.md 内容プレビュー',
    instructionsPlaceholder: 'Markdown 形式でスキルの指示を入力...',
    descriptionPlaceholder: 'このスキルの概要（LLM に表示されます）',
    packageRoot: 'パッケージディレクトリ',
    packageRootHelp:
      '任意。既存のスキルディレクトリをインポートする場合のみ必要です。新規スキルでは空のままにしてください。スキャンは現在のディレクトリと最大 2 階層下まで確認します。',
    importLocalDirectory: 'ローカルスキルディレクトリをインポート',
    chooseSkillDirectory: 'SKILL.md のディレクトリを選択',
    chooseAnotherDirectory: '別のディレクトリを選択',
    importingDirectory: 'プレビュー中...',
    clearDirectoryPreview: '選択したディレクトリをクリア',
    noSkillMdInDirectory: '選択したディレクトリに SKILL.md が見つかりません',
    multipleSkillMdInDirectory:
      '選択したディレクトリに複数の SKILL.md があります。単一のスキルディレクトリを直接選択してください。',
    importDirectoryError: 'ディレクトリのインポートに失敗しました: ',
    advancedSettings: '詳細設定',
    searchSkills: 'スキルを検索...',
    selectSkills: 'スキルを選択',
    addSkill: 'スキルを追加',
    builtin: '組み込み',
    importFromGithub: 'GitHub からスキルをインストール',
    createManually: '手動で作成',
    uploadZip: 'ZIP パッケージをアップロード',
    uploadZipOnly: '.zip スキルパッケージのみ対応しています',
    installSuccess: 'スキルをインストールしました',
    installError: 'スキルのインストールに失敗しました: ',
    enterRepoUrl: 'GitHub リポジトリ URL を入力',
    repoUrlPlaceholder: '例: https://github.com/owner/repo',
    fetchingReleases: 'リリースを取得中...',
    selectRelease: 'リリースを選択',
    noReleasesFound: 'リリースが見つかりません',
    fetchReleasesError: 'リリースの取得に失敗しました: ',
    selectAsset: 'インストールするファイルを選択',
    sourceArchive: 'ソースコード (zip)',
    noAssetsFound: 'このリリースにはインストール可能なファイルがありません',
    fetchAssetsError: 'ファイルの取得に失敗しました: ',
    backToReleases: 'リリースへ戻る',
    backToRepoUrl: 'リポジトリ URL へ戻る',
    backToAssets: 'ファイル一覧へ戻る',
    releaseTag: 'タグ: {{tag}}',
    publishedAt: '公開日時: {{date}}',
    prerelease: 'プレリリース',
    assetSize: 'サイズ: {{size}}',
    confirmInstall: 'インストールを確認',
    installing: 'スキルをインストール中...',
    loading: '読み込み中...',
    previewLoadError: 'プレビューの読み込みに失敗しました',
    selectFromSidebar: 'サイドバーからスキルを選択してください',
    dangerZone: '危険な操作',
    dangerZoneDescription: '元に戻せない破壊的な操作',
    files: 'ファイル',
    noFiles: 'ファイルが見つかりません',
    loadFilesError: 'ファイルの読み込みに失敗しました: ',
    readFileError: 'ファイルの読み取りに失敗しました: ',
    saveFile: 'ファイルを保存',
    saveFileSuccess: 'ファイルを保存しました',
    saveFileError: 'ファイルの保存に失敗しました: ',
  },
};

export default jaJP;
