const ja = {
  menu: {
    modelManagement: 'モデル管理',
    monitoringManagement: '監視管理',
    systemManagement: 'システム管理',
    resourcesAndSupport: 'リソースとサポート',
    launchModel: 'モデル起動',
    runningModels: '実行中のモデル',
    registerModel: 'モデル登録',
    clusterInfo: 'クラスター情報',
    monitorCenter: '監視センター',
    logCenter: 'ログセンター',
    userManagement: 'ユーザー管理',
    apiKeyManagement: 'API Key管理',
    securitySettings: 'セキュリティ設定',
    auditCenter: '監査センター',
    xagent: 'Xagent AI Agent',
    contactUs: 'お問い合わせ',
    documentation: 'ドキュメント',
    website: '公式サイト',
  },
  model: {
    languageModels: '言語モデル',
    embeddingModels: '埋め込みモデル',
    rerankModels: '再ランクモデル',
    imageModels: '画像モデル',
    audioModels: '音声モデル',
    videoModels: '動画モデル',
    customModels: 'カスタムモデル',
    flexibleModels: 'フレキシブルモデル',
  },
  launchModel: {
    modelType: 'モデルタイプ',
    modelAbility: 'モデル機能',
    generate: 'テキスト生成',
    embed: '埋め込み',
    rerank: '並べ替え',
    chat: '会話',
    vision: '視覚',
    reasoning: '推論',
    tools: 'ツール使用',
    audio: '音声処理',
    omni: 'マルチモーダル (Omni)',
    hybrid: 'ハイブリッド機能',
    text2image: 'テキストから画像',
    image2image: '画像から画像',
    inpainting: '画像修復',
    ocr: '光学文字認識 (OCR)',
    audio2text: '音声からテキスト',
    text2audio: 'テキストから音声',
    text2audio_zero_shot: 'テキストから音声(ゼロショット)',
    text2audio_voice_cloning: 'テキストから音声(声のクローン)',
    text2audio_emotion_control: 'テキストから音声(感情制御)',
    text2video: 'テキストから動画',
    image2video: '画像から動画',
    firstlastframe2video: '最初と最後のフレームから動画',
    status: 'ステータス',
    cached: 'キャッシュ済み',
    manageCachedModels: 'キャッシュモデル管理',
    manageVirtualEnvironments: '仮想環境を管理',
    favorite: 'お気に入り',
    unfavorite: 'お気に入り解除',
    search: 'モデル名と説明を検索',
    searchModelType: '{{modelType}}モデル名を検索',
    searchInstruction: '{{hotkey}}で検索',
    clickToLaunchModel: 'マウスクリックでモデルを起動',
    dimensions: '次元',
    maxTokens: '最大トークン数',
    contextLength: 'コンテキスト長',
    chatModel: 'チャットモデル',
    generateModel: '生成モデル',
    otherModel: 'その他モデル',
    confirmDeleteCustomModel:
      'カスタムモデル {{modelName}} を削除しますか？この操作は元に戻せません。',
    modelName: 'モデル名',
    envPath: '環境パス',
    realPath: '実際のパス',
    copyEnvPath: '環境パスをコピー',
    viewPackages: 'パッケージ一覧を表示',
    installedPackages: 'インストール済みパッケージ',
    packageName: 'パッケージ名',
    version: 'バージョン',
    location: '場所',
    packagesCount: 'パッケージ数',
    size: 'サイズ',
    pythonVersion: 'Python バージョン',
    createdAt: '作成日時',
    noVirtualEnvironmentsForNow: '現在、仮想環境はありません！',
    noPackagesInstalled: 'インストールされたパッケージはありません',
    lastConfig: '最終設定',
    configCache: '設定キャッシュ',
    newCache: '新規キャッシュ',
    noConfigCache: '設定キャッシュはありません。',
    loadCache: '使用する',
    deleteCache: 'キャッシュを削除',
    lastUpdated: '最終更新',
    defaultConfig: 'デフォルト設定',
    confirmDeleteConfigCache: 'この設定キャッシュを削除しますか？この操作は元に戻せません。',
    invalidConfigCache: 'この設定キャッシュに必要なモデルエンジンは現在利用できません。',
    commandLineParsing: 'コマンドライン引数解析',
    copyToCommandLine: 'コマンドラインコマンドとしてコピー',
    modelEngine: 'モデルエンジン',
    modelFormat: 'モデルフォーマット',
    modelSize: 'モデルサイズ',
    quantization: '量子化',
    multimodelProjector: 'マルチモデルプロジェクター',
    nGPU: 'レプリカあたりのGPU数',
    nGPUPerWorker: 'ワーカーあたりのGPU数',
    nGPUDevice: 'デバイス',
    gpuCount: 'GPU数: {{count}}',
    nGpuLayers: 'GPUレイヤー数',
    replica: 'レプリカ',
    advancedConfiguration: '高度な設定',
    runtimeEnvironment: '実行環境',
    engineParameters: 'エンジンパラメータ',
    engineQuantizationParameters: '量子化パラメータ',
    engineAdditionalParameters: '追加パラメータ',
    modelUid: 'モデルUID',
    modelUidPlaceholder: 'デフォルトはモデル名',
    requestLimits: 'リクエスト制限',
    requestLimitsPlaceholder: 'このモデルのリクエスト制限数、デフォルトは無制限',
    workerIp: 'ワーカーIP',
    workerIpPlaceholder: '分散環境のワーカーIPを指定。複数選択、または入力してAdd。',
    workerCount: 'ワーカー数',
    workerCountPlaceholder: 'ワーカー数',
    GPUIdx: 'GPUインデックス',
    GPUIdxPlaceholder: 'モデルを配置するGPUインデックスを指定します。例: 0,1,2',
    downloadHub: 'ダウンロードハブ',
    downloadHubPlaceholder: 'ダウンロードハブ',
    modelPath: 'モデルパス',
    modelPathPlaceholder:
      'PyTorchの場合はモデルディレクトリ、GGML/GGUFの場合はモデルファイルパスを指定',
    GGUFQuantization: 'GGUF量子化フォーマット',
    GGUFQuantizationPlaceholder: 'Transformer部分を量子化',
    GGUFModelPath: 'GGUFモデルパス',
    GGUFModelPathPlaceholder: '.ggufで終わるファイルを指定',
    lightningVersions: '軽量化バージョン',
    lightningVersionsPlaceholder: '軽量化バージョン',
    lightningModelPath: '軽量化LoRAモデルパス',
    lightningModelPathPlaceholder: '軽量化LoRAモデルパス',
    enableThinking: '思考を有効化',
    enableMtp: 'MTP を有効化',
    speculativeDecoding: '投機的デコード',
    draftModelQuantization: 'ドラフトモデルの量子化',
    draftModelQuantizationPlaceholder: '既定では最初の利用可能な項目',
    numSpeculativeTokens: '投機トークン数',
    numSpeculativeTokensPlaceholder: 'エンジン既定値',
    numSpeculativeTokensPlaceholderValue: 'エンジン既定 {{value}}',
    enableMtpTip:
      'モデルと並行して小さなドラフトモデルを実行し、1 ラウンドごとに複数トークンを提案してモデルが一括検証します。出力は同一で、デコードが高速化されます。有効化するとドラフトモデルの重みを追加でダウンロードします。',
    draftModelQuantizationTip:
      'ドラフトモデルは小さいため、量子化してもメモリ削減はわずかで受理率が下がります。対象モデルが量子化済みでも、未量子化のドラフトモデルを推奨します。',
    numSpeculativeTokensTip:
      '1 ラウンドあたりにドラフトモデルが提案するトークン数（ボーナストークンを含む）。未設定の場合、MLX はドラフトモデルの学習深度（Gemma 4 は 4）を読み取ります。Gemma 4 の llama.cpp、vLLM、SGLang はモデルサイズ別の同じレシピに従い、E2B は 2、E4B と 26B-A4B は 4、12B と 31B は推奨範囲 4～8 の下限である 4 を使用します。',
    parsingReasoningContent: '推論内容の解析',
    CPUOffload: 'CPUオフロード',
    CPUOffloadTip:
      'モデルをCPUにアンロードします。リソースが限られている場合やGGUFオプションを使用する場合に推奨されます。',
    loraConfig: 'Lora設定',
    loraModelConfig: 'Loraモデル設定',
    virtualEnvConfig: '仮想環境の設定',
    modelVirtualEnv: 'モデルの仮想環境',
    virtualEnvPackage: '仮想環境パッケージ',
    envVariable: '環境変数',
    envVariableConfig: '環境変数の設定',
    additionalQuantizationParametersForInferenceEngine:
      '推論エンジンに渡される追加の量子化パラメータ',
    additionalParametersForInferenceEngine: '推論エンジンに渡される追加のパラメータ',
    enterIntegerGreaterThanZero: '0より大きい整数を入力してください。',
    enterCommaSeparatedNumbers: 'カンマ区切りの数値を入力してください。例: 0,1,2',
    device: 'デバイス',
    loraLoadKwargsForImageModel: '画像モデルのLora読み込み引数',
    loraFuseKwargsForImageModel: '画像モデルのLora融合引数',
    launch: '起動',
    copyJson: 'Jsonをコピー',
    placeholderTip: '入力してください',
    fillCompleteParametersBeforeAdding: '追加前に完全なパラメータを入力してください！',
    model_format: 'モデルフォーマット',
    model_size_in_billions: 'モデルサイズ（億単位）',
    quantizations: '量子化',
    real_path: '実際のパス',
    path: 'パス',
    ipAddress: 'IPアドレス',
    copyRealPath: '実際のパスをコピー',
    copyPath: 'パスをコピー',
    noCacheForNow: '現在キャッシュはありません！',
    confirmDeleteCacheFiles: 'キャッシュファイルを削除しますか？この操作は元に戻せません。',
    confirmDeleteVirtualEnv: '仮想環境を削除しますか？この操作は元に戻せません。',
    commandLineTip: 'モデル名が一致しているか確認してください。',
    featured: 'おすすめとお気に入り',
    all: 'すべて',
    cancelledSuccessfully: '正常にキャンセルされました！',
    mustBeUnique: '{{key}} は一意でなければなりません',
    launchProgress: '起動状況',
    launchCompleted: 'モデルのデプロイが完了しました',
    launchCompletedWithAutostart: 'モデルのデプロイが完了し、自動起動に追加されました',
    saveAutostart: '起動成功後に自動起動へ追加',
    autostartSaveFailed: 'モデルは起動しましたが、自動起動設定の保存に失敗しました',
    launchCanceled: 'デプロイを停止しました',
    initializing: '初期化中...',
    moreDetails: '詳細を見る',
  },
  runningModels: {
    searchPlaceholder: 'モデル名またはモデルUIDを検索...',
    loadingModels: 'モデルを読み込み中...',
    fetchingModelList: '最新の実行中モデル一覧を取得しています。',
    noRunningModels: '実行中モデルなし',
    launchModelFirst: 'モデルを起動するとここに表示されます。',
    noModelsFound: 'モデルが見つかりません',
    tryChangingSearchKeywords: '検索キーワードを変更してみてください。',
    selectModel: 'モデルを選択',
    selectModelDescription: '左側の一覧から項目をクリックすると詳細を表示します。',
    tryApi: 'API を試す',
    refresh: '更新',
    terminateConfirmBody:
      '現在のモデル {{name}} には {{replica}} 個のレプリカがあります。クラスターが混雑している場合やレプリカ数が多い場合、終了処理には数分かかることがあります。所要時間は最も遅い Worker ノードに依存します。終了ボタンを繰り返しクリックしないでください。',
    terminateConfirmOk: '終了',
    baseInfo: '基本情報',
    modelType: 'モデルタイプ',
    modelEngine: 'モデルエンジン',
    modelFormat: 'モデル形式',
    modelSize: 'モデルサイズ',
    quantization: '量子化',
    resources: 'リソース割り当て',
    workerAddress: 'Worker ノード',
    gpuIndexes: 'GPU インデックス',
    gpuMemory: 'GPU メモリ',
    replicaDetail: 'レプリカ詳細',
    removeReplicaConfirm:
      'モデル {{modelUid}} のレプリカ {{replicaId}} を削除してもよろしいですか？',
    autostartEnabled: '自動起動が設定されています',
    removeAutostartSuccess: '{{modelUid}} の自動起動を削除しました',
    removeAutostartFailed: '自動起動の削除に失敗しました',
  },
  registerModel: {
    modelName: 'モデル名',
    modelDescription: 'モデル説明（オプション）',
    contextLength: 'コンテキスト長',
    dimensions: '次元',
    maxTokens: '最大トークン数',
    modelPath: 'モデルパス',
    modelLanguages: 'モデル言語',
    languages: '言語',
    multilingual: '多言語',
    modelAbilities: 'モデル機能',
    modelFamily: 'モデルファミリー',
    chatTemplate: 'チャットテンプレート',
    test: 'テスト',
    testResult: 'テスト結果',
    noTestResults: 'テスト結果がありません...',
    stopTokenIds: '停止トークンID',
    stop: '停止',
    reasoningStartTag: '推論開始タグ',
    reasoningEndTag: '推論終了タグ',
    toolParser: 'ツールパーサー',
    launcher: 'ランチャー',
    launcherArguments: 'ランチャー引数（オプション）',
    registerModel: 'モデル登録',
    messagesExample: 'メッセージ例',
    JSONFormat: 'JSONフォーマット',
    modelSpecs: 'モデル仕様',
    modelSizeBillions: 'モデルサイズ（億単位）',
    quantization: '量子化',
    quantizationOptional: '量子化（オプション）',
    controlnet: 'Controlnet',
    packages: '仮想環境パッケージ',
    more: '詳細',
    modelFormat: 'モデルフォーマット',
    enterNumberGreaterThanZero: '0より大きい数値を入力してください。',
    carefulQuantizationForModelRegistration:
      'GPTQ/AWQ/FP8/MLXモデルの場合、登録するモデルに対応する量子化を慎重に入力してください。',
    quantizationCannotBeEmpty: '量子化は空にできません。',
    enterInteger: '整数を入力してください。',
    enterIntegerGreaterThanZero: '0より大きい整数を入力してください。',
    showJsonView: 'APIで使用するカスタムJSON設定を表示',
    hiddenJsonView: 'APIで使用するカスタムJSON設定を非表示',
    copyAll: 'すべてコピー',
    alphanumericWithHyphensUnderscores:
      'ハイフンとアンダースコアを適切に配置した英数字。組み込みモデル名と一致してはいけません。',
    chooseBuiltInOrCustomModel: '組み込みモデルから選択するか、独自のモデルを入力できます。',
    chooseOnlyBuiltInModel: '組み込みモデルのみから選択できます。',
    provideModelDirectoryPath: 'モデルディレクトリパスを指定してください。',
    provideModelLauncher: 'モデルランチャーを指定してください。',
    jsonArgumentsForLauncher: 'ランチャーに渡される引数を表すJSON形式の辞書。',
    provideModelDirectoryOrFilePath:
      'PyTorchの場合はモデルディレクトリ、GGUFの場合はモデルファイルパスを指定してください。',
    ensureChatTemplatePassesTest:
      '右側のTESTボタンをクリックして、このchat_templateがテストに合格することを確認してください。このテストはすべてのケースをカバーするわけではなく、最も基本的なケースにのみ使用されます。',
    testFailurePreventsChatWorking:
      'テストに合格しないと、チャットが正常に動作しない可能性があることに注意してください。',
    stopControlForChatModels: 'int型、チャットモデルの停止を制御するために使用',
    stopControlStringForChatModels: 'string型、チャットモデルの停止を制御するために使用',
    enterJsonFormattedDictionary: 'JSON形式の辞書を入力してください。',
    autoFill: '自動入力',
    fillInModelPathFirst: 'まずモデルパスを入力してください',
    fillInModelFamilyFirst: 'まずモデルファミリーを選択してください',
  },
  monitorCenter: {
    notConfigured:
      'モニタリングが設定されていません。XINFERENCE_GRAFANA_URL 環境変数を設定してください。',
    tab: {
      overview: '概要',
      modelLoad: 'モデル負荷',
      llmSlo: 'LLM SLO',
      gpu: 'GPU',
      host: 'ホスト',
      security: 'セキュリティ',
    },
    time: {
      '5m': '直近 5 分',
      '15m': '直近 15 分',
      '30m': '直近 30 分',
      '1h': '直近 1 時間',
      '3h': '直近 3 時間',
      '6h': '直近 6 時間',
      '12h': '直近 12 時間',
      '24h': '直近 24 時間',
      '7d': '直近 7 日',
      '2d': '直近 2 日',
    },
    refresh: {
      off: 'オフ',
      '10s': '10 秒',
      '30s': '30 秒',
      '1m': '1 分',
      '5m': '5 分',
    },
    absoluteRange: '絶対時間範囲',
    applyTimeRange: '時間範囲を適用',
    invalidTimeRange: '終了時間は開始時間より後にしてください',
    manualRefresh: 'ダッシュボードを更新',
    config: {
      button: 'モニタ設定',
      title: 'モニタリング設定',
      grafanaUrl: 'Grafana URL',
      datasourceName: 'データソース名',
      alertDatasourceName: 'アラートデータソース名',
      clusterName: 'クラスター名',
      dashboards: 'ダッシュボード UID',
      testConnection: '接続テスト',
      testing: 'テスト中…',
      connectionOk: '接続成功',
      connectionFailed: '接続失敗',
      reset: 'デフォルトに戻す',
      resetConfirm: 'モニタ設定をデフォルトに戻しますか？',
      save: '保存',
      cancel: 'キャンセル',
      saved: '保存しました',
      source: {
        db: 'データベース',
        env: '環境変数',
        default: 'デフォルト',
      },
    },
  },
  logCenter: {
    notConfigured: 'ログが設定されていません。Elasticsearch ログサービスを有効にしてください。',
    allNodes: 'すべてのノード',
    searchPlaceholder: 'ログ内容、フィールド、キーワードを検索',
    refresh: 'ログを更新',
    loading: 'ログを読み込み中...',
    logLevel: 'ログレベル',
    nodeType: 'ノードタイプ',
    clearFilters: 'すべてクリア',
    noLogs: '一致するログがありません',
    totalHits: '合計 {{count}} 件',
    prevPage: '前へ',
    nextPage: '次へ',
    time: '時間',
    level: 'レベル',
    node: 'ノード',
    message: 'メッセージ',
    detail: {
      tableTab: 'テーブル',
      jsonTab: 'JSON',
      action: '操作',
      field: 'フィールド',
      value: '値',
      filterFor: 'この値を含める',
      filterOut: 'この値を除外',
      copyJson: 'JSON をコピー',
      copied: 'コピーしました',
      viewContext: 'コンテキストを表示',
      contextTitle: 'ログコンテキスト',
      contextError: 'このログのコンテキストはありません。',
      contextFetchError: 'コンテキストの読み込みに失敗しました。',
      loadNewer: '新しいログを読み込む',
      loadOlder: '古いログを読み込む',
      newerDocs: '件の新しいログ',
      olderDocs: '件の古いログ',
    },
  },
  clusterInfo: {
    pageDescription:
      'XInference クラスターの現在の状態を確認します。スーパーバイザーノード、ワーカーノード、およびそれらのハードウェアリソースを含みます。',
    supervisor: 'スーパーバイザー',
    workers: 'ワーカー',
    workerDetails: 'ワーカー詳細',
    count: '数',
    cpuInfo: 'CPU情報',
    usage: '使用率: ',
    total: '合計: ',
    cpuMemoryInfo: 'CPUメモリ情報',
    version: 'バージョン',
    release: 'リリース: ',
    commit: 'コミット: ',
    gpuInfo: 'GPU情報',
    gpuMemoryInfo: 'GPUメモリ情報',
    address: 'アドレス',
    item: '項目',
    value: '値',
    nodeType: 'ノードタイプ',
    cpuUsage: 'CPU使用率',
    cpuTotal: 'CPU合計',
    memUsage: 'メモリ使用量',
    memTotal: 'メモリ合計',
    gpuCount: 'GPU数',
    gpuLoad: 'GPU負荷',
    gpuMemUsage: 'GPUメモリ使用量',
    gpuMemTotal: 'GPUメモリ合計',
    worker: 'ワーカー',
  },
  userManagement: {
    pageDescription: 'Xinference クラスターにアクセスできるユーザーを管理します。',
    createUser: 'ユーザーを作成',
    editUser: 'ユーザーを編集',
    editPermissionsTitle: '権限を編集 - {{username}}',
    username: 'ユーザー名',
    usernamePlaceholder: '例: alice',
    usernameRequired: 'ユーザー名は必須です',
    password: 'パスワード',
    passwordPlaceholder: 'パスワードを入力',
    passwordRequired: 'パスワードは必須です',
    confirmPassword: 'パスワードの確認',
    confirmPasswordPlaceholder: 'パスワードを再入力',
    passwordMismatch: 'パスワードが一致しません',
    passwordTooShort: 'パスワードは8文字より長くする必要があります',
    newPassword: '新しいパスワード',
    changePassword: 'パスワードを変更',
    changePasswordTitle: 'パスワードを変更 - {{username}}',
    passwordChanged: 'パスワードを変更しました！',
    permissions: '権限',
    selectAll: 'すべて選択',
    expandPermissions: '権限を展開',
    collapsePermissions: '権限を折りたたむ',
    source: 'ソース',
    createdAt: '作成日時',
    enabled: '有効',
    enabledStatus: '有効',
    disabledStatus: '無効',
    currentUser: '現在のユーザー',
    currentUserToggleHint: '自分自身は無効化できません',
    mustChangePwd: 'パスワード変更が必要',
    noUsers: 'ユーザーが見つかりません。',
    loading: '読み込み中...',
    create: '作成',
    creating: '作成中...',
    saving: '保存中...',
    createSuccess: 'ユーザーを作成しました！',
    updateSuccess: 'ユーザーを更新しました！',
    deleteTitle: 'ユーザーを削除',
    deleteDescription: '{{username}} を削除してもよろしいですか？この操作は元に戻せません。',
    permissionGroups: {
      admin: 'admin',
      models: 'models',
      keys: 'keys',
      users: 'users',
      cache: 'cache',
      virtualenv: 'virtualenv',
      logs: 'logs',
      monitor: 'monitor',
    },
    permissionLabels: {
      admin: '管理者',
      'models:list': 'モデル一覧を表示',
      'models:read': 'モデル情報を読み取り',
      'models:write': 'モデルを起動/停止',
      'models:register': 'モデルを登録/登録解除',
      'keys:create': 'API Key を作成',
      'keys:manage': 'API Key を管理',
      'users:manage': 'ユーザーを管理',
      'cache:list': 'キャッシュを表示',
      'cache:delete': 'キャッシュを削除',
      'virtualenv:list': '仮想環境を表示',
      'virtualenv:delete': '仮想環境を削除',
      'logs:list': 'ログを表示',
      'monitor:view': '監視を表示',
    },
  },
  apiKey: {
    pageDescription: 'Xinference API にアクセスするための API キーを管理します。',
    createKey: 'API キーを作成',
    keyCreated: 'API キーが作成されました',
    saveKeyWarning: 'API キーを今すぐコピーして保存してください。再表示されません。',
    name: '名前',
    namePlaceholder: '例: my-app-key',
    nameRequired: '名前は必須です',
    description: '説明',
    descriptionPlaceholder: '任意の説明',
    key: 'キー',
    createdAt: '作成日時',
    expiresAt: '有効期限',
    expiresAtHint: '空欄の場合は有効期限なし。',
    status: 'ステータス',
    enabled: '有効',
    active: 'アクティブ',
    disabled: '無効',
    expired: '期限切れ',
    revealKey: 'キーを表示',
    hideKey: 'キーを隠す',
    noKeys: 'API キーがありません。作成して始めましょう。',
    loading: '読み込み中...',
    create: '作成',
    creating: '作成中...',
    deleteTitle: 'API キーを削除',
    deleteDescription: 'この API キーを削除してもよろしいですか？この操作は元に戻せません。',
    updateSuccess: 'API キーを更新しました！',
    saving: '保存中...',
    owner: '所有ユーザー',
    ownerPlaceholder: '空欄の場合は現在のユーザー',
    ownerHint: '空欄の場合は現在のユーザーに割り当てられます。',
    permissionType: '権限タイプ',
    permissionAll: 'すべてのモデル',
    permissionByType: 'モデルタイプ別',
    permissionById: 'モデル ID 別',
    permissionMixed: 'タイプ + インスタンス別（混合）',
    modelTypes: 'モデルタイプ',
    modelTypesPlaceholder: 'モデルタイプを選択',
    modelIds: 'モデル ID',
    modelIdsPlaceholder: 'モデル ID を選択',
    modelsLoading: 'モデル一覧を読み込み中...',
    usersLoading: 'ユーザー一覧を読み込み中...',
    modelPermissions: 'モデル権限',
    bannedCount: 'ブロック数',
    bannedList: 'ブロック一覧',
    noBanned: 'ブロック記録はありません',
    view: '表示',
  },
  securitySettings: {
    pageDescription:
      '失敗リクエストの制限を設定し、現在ブロックされている IP と API キーを管理します。',
    rateLimitConfig: 'レート制限ポリシー',
    rateLimitDesc: 'IP 層と API キー層の失敗しきい値、集計ウィンドウ、ブロック時間を設定します。',
    ipLayer: 'IP 層',
    ipLayerDesc: 'クライアント IP ごとに失敗リクエストを集計します。',
    keyLayer: 'API キー層',
    keyLayerDesc: 'IP と API キーの組み合わせごとに失敗リクエストを集計します。',
    max_failures: '最大失敗回数',
    window_seconds: 'ウィンドウ秒数',
    ban_seconds: 'ブロック秒数',
    notConfigured: '未設定',
    failuresAllowed: '失敗しきい値',
    currentBlocks: '現在のブロック',
    bannedIps: 'ブロック中の IP',
    bannedIpsDesc: 'IP 層のしきい値を超えたため一時的にブロックされたクライアントアドレス。',
    bannedKeys: 'ブロック中の API キー',
    bannedKeysDesc:
      'API キー層のしきい値を超えたため一時的にブロックされた IP と API キーの組み合わせ。',
    noBannedIps: 'ブロック中の IP はありません。',
    noBannedKeys: 'ブロック中の API キーはありません。',
    ip: 'IP',
    keyId: 'Key ID',
    remaining: '残り時間',
    refresh: '更新',
    saveConfig: 'ポリシーを保存',
    saveSuccess: 'セキュリティポリシーを更新しました。',
    unban: 'ブロック解除',
    unbanAll: 'すべて解除',
    unbanSuccess: 'ブロックを解除しました。',
    clearTitle: 'すべて解除',
    clearIpsDescription:
      'すべての IP ブロックを解除しますか？これらのクライアントはすぐにアクセスを回復します。',
    clearKeysDescription:
      'すべての API キーブロックを解除しますか？これらの組み合わせはすぐにアクセスを回復します。',
    seconds: '{{count}} 秒',
    minutes: '{{count}} 分',
    hours: '{{count}} 時間',
  },
  auditCenter: {
    pageDescription:
      'ユーザー、API キー、モデル呼び出し、異常アクセスの API アクセス監査記録を検索します。',
    totalEvents: '監査イベント',
    successEvents: '成功イベント',
    riskEvents: 'リスクイベント',
    apiKeyEvents: 'API キーイベント',
    matchingRecords: '一致する記録',
    currentPage: '現在のページ',
    filters: 'フィルター',
    resetFilters: 'フィルターをリセット',
    refresh: '更新',
    loading: '読み込み中...',
    noRecords: '監査記録はありません。',
    totalHits: '{{count}} 件',
    prevPage: '前へ',
    nextPage: '次へ',
    detailTitle: '監査詳細',
    rawJson: 'Raw JSON',
    copyJson: 'JSON をコピー',
    time: '時間',
    category: 'カテゴリ',
    identity: 'ID',
    endpoint: 'エンドポイント',
    apiKeyNameColumn: 'API キー名',
    model: 'モデル',
    modelIdColumn: 'モデル ID',
    status: 'ステータス',
    latency: 'レイテンシ',
    latencyMs: '{{value}} ms',
    user: 'ユーザー',
    userPlaceholder: 'ユーザー名',
    apiKeyName: 'API キー',
    apiKeyNamePlaceholder: 'キー名',
    modelId: 'モデル ID',
    modelIdPlaceholder: 'モデル UID',
    modelName: 'モデル名',
    modelNamePlaceholder: 'モデル名',
    modelType: 'モデルタイプ',
    clientIp: 'クライアント IP',
    clientIpPlaceholder: 'IP アドレス',
    authType: '認証タイプ',
    allStatuses: 'すべてのステータス',
    allCategories: 'すべてのカテゴリ',
    allAuthTypes: 'すべての認証タイプ',
    allModelTypes: 'すべてのモデルタイプ',
    categoryOptions: {
      inference: '推論',
      admin: '管理',
      auth: '認証',
      unknown: '不明',
    },
    authTypeOptions: {
      api_key: 'API キー',
      jwt: 'JWT',
      none: 'なし',
    },
    statusOptions: {
      success: '成功',
      error: 'エラー',
      denied: '拒否',
      login_failed: 'ログイン失敗',
      model_not_found: 'モデルなし',
      ip_banned: 'IP ブロック',
      key_banned: 'キー ブロック',
      key_expired: 'キー期限切れ',
      key_disabled: 'キー無効',
      invalid_key: '無効なキー',
      invalid_token: '無効なトークン',
      insufficient_scope: '権限不足',
      user_disabled: 'ユーザー無効',
      no_credentials: '認証情報なし',
      unknown: '不明',
    },
    modelTypeOptions: {
      LLM: '言語モデル',
      embedding: '埋め込み',
      rerank: '再ランク',
      image: '画像',
      video: '動画',
      audio: '音声',
    },
  },
  login: {
    welcome: 'おかえりなさい',
    welcomeDesc: 'LLM、埋め込み、画像、マルチモーダルモデルを一元管理してデプロイします。',
    login: 'ログイン',
    loginDesc: '続行するにはアカウント情報を入力してください',
    username: 'ユーザー名',
    password: 'パスワード',
    mustChangePasswordDesc: '初回ログイン時は、続行する前にパスワードを変更してください。',
    changePasswordUserMissing: '現在のユーザーを識別できません。もう一度ログインしてください。',
    or: 'または',
    ssoLogin: 'SSO でログイン',
  },
  setup: {
    welcome: 'Xinference へようこそ',
    welcomeDesc:
      'このインスタンスにはまだアカウントがありません。最初の管理者アカウントを作成してセットアップを完了してください。',
    title: '管理者アカウントを設定',
    description: '続行するには最初の管理者アカウントを作成してください。',
    passwordTooShort: 'パスワードは{{min}}文字以上にしてください',
    submit: '管理者アカウントを作成',
    createSuccess: '管理者アカウントが作成されました。新しい認証情報でサインインしてください。',
    createFailed: '作成に失敗しました。もう一度お試しください。',
    adminAccessNote: 'このアカウントには完全な管理者権限が付与されます。',
    featureServingTitle: '簡単なモデル配信',
    featureServingDesc:
      '最先端の LLM、埋め込み、マルチモーダルモデルをワンコマンドで起動できます。',
    featureApiTitle: 'OpenAI 互換 API',
    featureApiDesc:
      'RESTful API、RPC、CLI、Web UI にすぐ対応 -- 既存のツールチェーンをそのまま利用できます。',
    featureDistributedTitle: '分散対応設計',
    featureDistributedDesc:
      '単一マシンでもクラスタでも、GPU と CPU をまたいで推論をスケールできます。',
  },
  common: {
    accessDenied: 'アクセス拒否',
    accessDeniedDescription: 'このページにアクセスするために必要な権限 ({{scope}}) がありません。',
    valueEmpty: '空にできません',
    patternError: '形式が正しくありません。確認してください',
    loginSuccess: 'ログインに成功しました',
    loginOut: 'ログアウト',
    loginOutSuccess: 'ログアウトしました',
    copySuccess: 'コピーしました!',
    deleteSuccess: '削除しました!',
    lastUpdateTime: '最終更新時間',
    noOptions: 'データがありません',
    goBack: '戻る',
    add: '追加',
    delete: '削除',
    edit: '編集',
    modify: '変更',
    from: '開始',
    to: '終了',
    clear: 'クリア',
    today: '今日',
    weekDays: {
      sun: '日',
      mon: '月',
      tue: '火',
      wed: '水',
      thu: '木',
      fri: '金',
      sat: '土',
    },
    cancel: 'キャンセル',
    confirm: '確認',
    update: '更新',
    deploy: '配備',
    stop: '停止',
    packUp: '折りたたむ',
    unfold: '展開',
    operation: '操作',
    notice: '通知',
    itemsCount: '{{count}} 件',
    autoCompleteOptionsTips:
      'よく使われるパラメータを表示しています。カスタムパラメータも入力できます。',
  },
} as const;
export default ja;
