/* eslint-disable prettier/prettier */
export default {
  setup: {
    connect: {
      title: 'Blocklet サーバーを設定する',
      scan: '以下の方法を使用して、このサーバーの所有者になりましょう',
      confirm: 'あなたのDIDウォレットでこの操作を確認してください',
      success: 'あなたのアカウントはこのサーバーに接続されています'
    },
    keyPair: {
      title: 'KeyPair を導出',
      scan: 'このアプリケーションにキーペアを作成するために、DIDウォレットを接続してください',
      confirm: 'DID ウォレットでこの操作を確認してください',
      success: 'お使いの鍵ペアは安全に保管されています'
    },
    verify: {
      title: '所有権の証明が必要です',
      scan: '所有権の証明書を提供するために、DIDウォレットを接続してください',
      confirm: 'DIDウォレットでこの操作を確認してください',
      success: 'あなたのアカウントはこのサーバーに接続されています'
    },
    accept: {
      title: 'サーバー所有権証明書の要求を受け入れています',
      scan: '所有権の証明書を提供するために、DIDウォレットを接続してください',
      confirm: 'DIDウォレットでこの操作を確認してください',
      success: 'あなたのアカウントはこのサーバーに接続されています'
    },
    title: 'Blocklet サーバーの設定',
    steps: {
      eula: 'エンドユーザーライセンス契約',
      eulaFooter: 'EULA の利用規約に同意しました',
      connect: '所有者のDIDウォレットに接続',
      verify: '所有権を確認する',
      basicSettings: '基本設定',
      launchApp: 'アプリを起動する',
      complete: '完成'
    },
    congratulation: 'おめでとうございます！あなたのBlockletサーバーは安全で使用する準備ができています。',
    redirectButton: 'ダッシュボードに連れて行って！'
  },
  login: {
    loginTo: '接続する',
    description: 'サーバーのオーナーおよび承認されたメンバーのみがダッシュボードにアクセスできます',
    switchDid: {
      title: 'アカウントを切り替える',
      scan: '以下の方法でアカウントを追加してください',
      confirm: 'DIDウォレットでの切り替えを確認してください',
      success: '切り替えに成功しました'
    },
    switchSpecifiedDid: {
      title: 'アカウントを切り替える',
      scan: '以下のアクションを完了するために、DID を {did} に切り替える必要があります',
      confirm: 'DIDウォレットでのスイッチの確認',
      success: '正常に切り替えられました'
    },
    connect: {
      title: '接続',
      scan: 'サーバー所有者と承認されたメンバーのみがダッシュボードにアクセスできます',
      confirm: 'アカウントで確認してください',
      success: '接続に成功しました'
    },
    verify: {
      title: 'アクセスを確認',
      scan: '所有者または管理者パスポートを提示するためにあなたの DID ウォレットを接続してください',
      confirm: 'あなたの アカウント で確認',
      success: 'アクセスが確認されました',
      abort: 'アクセス検証が中止されました',
      description: '{roles} パスポートを提供する必要があります。操作を実行するため、1 時間の非アクティビティの後に再度確認を求められます。',
      descriptionForDestroy: '{roles} のパスポートを提供して、この危険な操作を安全に行う必要があります。'
    },
    login: '接続',
    termsOfUse: '利用規約',
    agreeTermsOfUse: '適用する内容を読み、同意します'
  },
  acceptServer: {
    title: '所有権NFTを使用してサーバーを請求する',
    tooltip: 'もしサーバー所有権のNFTを受け取った場合、このリンクでオーナーパスポートを請求することができます。'
  },
  exchangePassport: {
    title: 'NFTとパスポートを交換する',
    success: 'パスポートを正常に交換し、パスポートでログインしました。',
    login: 'ログイン',
    dialog: {
      title: 'NFTでパスポートを取得する',
      scan: 'あなたのDIDウォレットを接続して、NFTを提示してパスポートを取得してください',
      confirm: 'DIDウォレットでNFTを選択してください',
      success: 'パスポートは正常に交換されました'
    },
    tooltip1: 'もしあなたがコレクションからNFTを所有しているなら、',
    tooltip2: 'このリンクでパスポートを交換できます。'
  },
  payablePassport: {
    title: '支払いでパスポートを購入する',
    tooltip: 'パスポートをお持ちでない場合、このリンクからパスポートを購入できます。'
  },
  sidebar: {
    dashboard: 'ダッシュボード',
    blocklets: 'Blocklets',
    console: 'コンソール',
    settings: '設定'
  },
  system: {
    total: '合計',
    used: '使用済み',
    free: '自由',
    cores: 'コア数',
    instances: 'インスタンスの数'
  },
  common: {
    invalid: '無効です',
    about: 'について',
    access: 'アクセス',
    accessKey: 'アクセスキー',
    action: 'アクション',
    actions: 'アクション',
    add: '追加する',
    address: '住所',
    afterTime: '{time}後',
    allow: '許可する',
    alreadyExist: '既に存在します',
    approve: '承認',
    approved: '承認',
    appUrl: 'APPのURL',
    auditLogs: '監査トレイル',
    author: '著者',
    avatar: 'アバター',
    back: '戻る',
    basic: '基本',
    basicInfo: '基本情報',
    profile: 'プロフィール',
    bind: 'バインドする',
    blocklet: 'ブロックレット',
    blocklets: 'Blocklets',
    blockletsStorage: 'ブロックレットストレージ',
    cacheStorage: 'キャッシュストレージ',
    cancel: 'キャンセル',
    certificate: '証明書',
    category: 'ログトピック',
    click: 'コピーするをクリックする',
    close: '閉じる',
    selectAll: 'すべて選択',
    unselectAll: 'すべて選択解除',
    collapseAll: 'すべて折りたたむ',
    community: 'コミュニティ URL',
    complete: '完了',
    componentBasicInfo: 'コンポーネントの基本情報',
    components: 'Blocklets',
    config: '設定する',
    configuration: '設定',
    appearance: '外観',
    configNavigation: 'ナビゲーション',
    configSuccess: '設定が成功しました',
    confirm: '確認する',
    connect: '接続する',
    console: 'コンソール',
    continue: '続ける',
    continueWith: '続ける',
    copiedTip: 'コピーしました',
    copyAndClose: 'コピーして閉じる',
    copyTip: 'クリックしてコピー',
    coreStorage: 'コアストレージ',
    cpu: 'CPU',
    create: '作成する',
    createSuccess: 'アクセスキーを作成する',
    created: '作成日',
    createdAt: '作成日時',
    createdBy: '作成者',
    dAddress: '分散型識別子 (DID)',
    dataStorage: 'ローカルディスク上のストレージ',
    delConfirm: '削除',
    delConfirmDescription: '{data} を削除しますか？',
    delete: '削除',
    dependents: '扶養家族',
    description: '説明',
    detail: '詳細',
    did: 'DID',
    disk: 'ディスク',
    diskInfo: 'ディスク情報',
    docker: 'Dockerです',
    documentation: 'ドキュメンテーション',
    domain: 'ドメイン',
    downgradeTo: 'ダウングレードする',
    download: 'ダウンロードする',
    downloading: 'ダウンロード中',
    edit: '編集',
    email: 'メール',
    phone: '電話',
    empty: '空の',
    emptyData: '結果が見つかりませんでした',
    enable: '有効にする',
    engine: 'エンジン',
    env: '環境',
    environment: '環境',
    expandAll: 'すべて展開',
    expired: '期限切れ',
    expires: '有効期限',
    export: 'エクスポート',
    externalIp: '外部IP',
    failed: '失敗',
    filter: 'ログフィルター',
    fingerprint: '指紋',
    finish: '終了',
    forbid: '禁止',
    free: '自由',
    general: '将軍',
    gitpod: 'Gitpodは',
    goEULA: '「エンドユーザーライセンス契約」を表示するにはクリックしてください',
    group: 'グループ',
    image: 'ISの画像',
    install: 'インストール',
    installed: 'インストール済み',
    installedAt: 'インストール日時',
    installSuccess: 'インストールが正常に完了しました',
    installing: 'インストール中',
    internalIp: '内部IP',
    introduction: '紹介',
    invite: '招待する',
    inviting: '招待',
    ip: 'IP',
    isPublic: 'パブリック',
    issue: '問題',
    issuer: '発行者',
    item: 'アイテム',
    joined: '参加した',
    key: 'キー',
    lastPublishedAt: '公開日',
    launcher: 'ランチャー情報',
    leavePageTip: 'ページを離れてもよろしいですか？',
    link: 'リンク',
    loading: '読み込み中',
    log: 'ログを表示する',
    logStorage: 'ログストレージ',
    login: 'ログイン',
    logo: 'ロゴ',
    logout: 'ログアウト',
    logs: 'ログ',
    manageTeam: 'チームを管理する',
    marketplace: 'マーケットプレイス',
    member: 'メンバー',
    members: 'メンバー',
    memory: '記憶',
    meta: 'メタデータ',
    analytics: '分析',
    runtime: '実行時間',
    traffic: '交通',
    more: 'もっと',
    mountPoint: 'マウントポイント',
    name: '名前',
    next: '次へ',
    no: 'いいえ',
    noData: '表示するレコードはありません',
    notice: 'これを読まなければ、予期せぬ悪いことが起こるでしょう！',
    noticeTitle: 'お知らせ',
    notification: '通知',
    open: 'オープン',
    management: '管理',
    os: 'オペレーティングシステム',
    overview: '概要',
    owner: 'オーナー',
    page404: '404ページ',
    passport: 'パスポート',
    permission: '許可',
    port: 'ポート',
    pre: '前の',
    preferences: '好み',
    preview: 'プレビュー',
    protected: '保護された',
    protocol: 'プロトコル',
    purchase: '購入',
    readMore: 'もっと',
    redirect: 'リダイレクト',
    redirectCode: 'リダイレクトコード',
    redirectPermanently: '永久リダイレクト',
    redirectTemporary: '一時的なリダイレクト',
    redirectUrl: 'リダイレクト URL',
    rewrite: '書き直す',
    release: 'リリース',
    rewriteUrl: 'URLを書き直してください',
    reject: '拒否する',
    reload: 'リロード',
    remark: '備考',
    remove: '削除する',
    removeSuccess: '正常に削除されました',
    renew: '更新する',
    reportIssue: '問題を報告する',
    required: '必要',
    requiredErrorText: '{name} が必要です',
    resource: 'リソース',
    restart: '再起動',
    restore: 'リストア',
    retry: '再試行',
    revoke: '取り消す',
    role: '役割',
    running: 'ランニング',
    runtimeInfo: 'ランタイム情報',
    save: '保存',
    saveChanges: '変更を保存する',
    saveSuccess: '保存されました',
    scheduleFailed: 'スケジュールが失敗しました',
    scheduleSuccess: '予定が成功しました',
    scope: '範囲',
    screenshot: 'スクリーンショット',
    search: '検索',
    security: 'セキュリティ',
    serverDid: 'サーバー DID',
    serverVersion: 'サーバーバージョン',
    setting: '設定',
    start: 'スタート',
    status: 'ステータス',
    stop: 'ストップ',
    storage: 'ストレージ',
    backup: 'バックアップ',
    store: '店舗',
    succeeded: '成功しました',
    subscription: '購読',
    support: 'サポート URL またはメールアドレス',
    switch: 'スイッチ',
    team: 'チーム',
    the: 'この',
    timeAgo: '{time}前',
    title: 'タイトル',
    type: 'タイプ',
    unavailable: '利用できません',
    update: 'アップデート',
    updateAvailable: '新しいバージョン {version} が利用可能です',
    updatedAt: '{time} 更新',
    updatedBy: '更新者',
    upgrade: 'アップグレード',
    upgradeTo: 'アップグレードしてください',
    upgrading: 'アップグレード',
    uptime: '稼働時間',
    url: 'URL',
    valid: '有効',
    value: 'バリュー',
    version: 'バージョン',
    visit: '訪問',
    waiting: '待っています',
    webhook: '統合',
    yes: 'はい',
    invalidParam: '無効なパラメータ',
    launch: '打ち上げ',
    price: '価格',
    redirecting: 'リダイレクト中',
    error: 'エラー',
    reminder: 'リマインダー',
    normal: '通常',
    gateway: 'ゲートウェイ',
    verifyNFT: 'NFTの検証',
    errorMessage: 'エラーメッセージ：',
    slugifyHint: '実際のマウントポイントは{value}になります',
    strategy: '戦略',
    auto: '自動車',
    manual: 'マニュアル',
    progress: '進行中',
    startTime: '開始時間',
    endTime: '終了時間',
    timeoutError: 'タイムアウトエラー',
    tags: 'タグ',
    connectToStore: 'ストアに接続する',
    uploaded: 'アップロードされました',
    upload: 'アップロード',
    blockletStudio: 'スタジオ',
    visitStore: '店を訪れる',
    reconnect: '再接続する',
    change: '変更',
    disconnect: '接続を切る',
    sourceApp: 'このアプリに所属',
    visitTarget: '訪問{name}',
    upgradeServer: 'サーバーのアップグレード',
    display: '表示',
    requiredInputPlaceholder: '请输入 {name}',
    refresh: '更新',
    moveUp: '上へ移動',
    moveDown: '下に移動',
    enabled: '有効',
    disabled: '無効',
    homepage: 'ホームページ',
    buy: '購入',
    view: '表示',
    homepageTip: 'ホームページまたはライブデモの URL',
    repository: 'リポジトリ',
    expand: '展開',
    collapse: '折りたたむ',
    all: '全て',
    notificationRecords: '通知',
    unrecordedUser: '未記録の名前',
    unrecordedRole: '未記録の役割',
    auditLogsSearch: 'アクションまたはコンテンツで検索',
    optional: '任意',
    bugOrConnectDomain: '既存のドメインを購入または接続する',
    bugOrConnectDomainTip: 'ドメイン名は、あなたのウェブサイトのインターネット上の固有アドレスです。DID Namesまたは任意のドメインレジストラから新しいドメインを購入するか、既に所有している既存のドメインを構成できます。',
    connectExistingDomain: '既存ドメインを接続',
    domains: 'ドメイン',
    didDomains: 'DID ドメイン',
    manualDomains: '私のドメイン',
    didDomainsDescription: '以下のドメインはDID:Namesサービスによって自動的に管理されます。',
    systemDomains: 'システム割り当て',
    systemDomainsDescription: '以下のドメインはデフォルトで自動的に割り当てられます。アクセス可能ですが、本番環境での使用は意図されておらず、顧客と共有しないでください。これらのドメインは主に開発目的のためです。',
    manualDomainsDescription: '以下のドメインは、あなたのドメインプロバイダーによって管理されており、ここに手動で設定されています。',
    fileCount: 'ファイル数',
    fileSize: 'ファイルサイズ',
    time: '時間',
    less: '少ない',
    timeInfo: '時間',
    operator: 'オペレーター',
    inviter: '招待者',
    clear: 'クリア',
    ok: 'OK',
    minutes: '分',
    hours: '時間',
    hour: '時間',
    days: '日',
    day: '日',
    weeks: '週間',
    months: '月',
    custom: 'カスタム',
    environments: '環境',
    sites: 'サイト',
    active: 'アクティブ',
    backupTime: 'バックアップ時間',
    lastUsedAt: '最終使用日時',
    expiredAt: '有効期限',
    createdVia: '経由で',
    neverExpired: '決して',
    baseInfo: '基本情報',
    otherInfo: 'その他の情報',
    lightMode: 'ライトモード',
    darkMode: 'ダークモード',
    advancedConfig: '高度',
    document: 'ドキュメント',
    mcpServers: 'MCP サーバー',
    generate: '生成',
    copy: 'コピー',
    copied: 'コピー済み',
    orgs: '組織',
    userSessions: 'ユーザーセッション'
  },
  blocklet: {
    external: '外部',
    notFound: 'このサーバー上でブロックが見つかりませんでした。おそらく削除されている可能性があります',
    installFromMarket: '新しいBlockletsをインストールする',
    installFromUrl: 'URLからインストール',
    installFromCreate: 'ブロックレットを作成する',
    installFromDiskBackup: 'このサーバーから復元',
    installedAt: 'インストールされた',
    internal: '内部',
    startedAt: '開始されました',
    stoppedAt: '停止中',
    urlEmptyTip: 'アクセスできないURL',
    goToAddRule: '追加に移動する',
    services: '公開されたサービス',
    upstreamPort: '上流ポート',
    noService: 'サービスなし',
    appId: 'App DID',
    appPid: '永久DN',
    alsoKnownAs: '別名',
    skSource: 'オーナーウォレット',
    reloadSuccess: 'Blockletが正常に再読み込みされました',
    statusTip: 'Blocklet は {status} です',
    initialUptime: '1メートル未満',
    dashboard: 'ブロックレットダッシュボード',
    noComponent: 'アプリケーションにはコンポーネントがなく、開始できません',
    fromUrl: {
      title: 'Blockletをインストールする',
      label: 'ブロックレットメタURL',
      description: 'URLはBlockletのメタファイルを指すべきです。ローカルファイルを参照する必要がある場合は、file://接頭辞を追加してください。例：file:///Users/foo/blocklet.json。',
      confirm: 'インストール',
      step0: '入力URL',
      step1: 'メタ情報を確認する',
      existTipPrefix: '同じDIDを持つBlockletはすでに存在しています。バージョンは{version}です',
      existTipSuffix: 'より高いバージョンをインストールしてください。'
    },
    action: {
      stopDescription: 'ブロックレットの停止は、そのパブリックインターフェースを利用できなくし、エンドユーザーの障害の原因となる可能性があります',
      stopComponentDescription: 'コンポーネントの停止により、その公開インターフェースは使用できなくなり、エンドユーザーの失敗が発生する可能性があります',
      confirmStop: 'はい、やめてください',
      cancelDownloadDescription: '{name} のダウンロードをキャンセルしますか？',
      removeApplicationDescription: 'このアプリケーションを削除すると、このアプリケーションによって生成されたコードとデータが消去され、バックアップがない場合は復元できません',
      removeApplicationAfterBackup: 'アプリケーションをバックアップして削除してください。必要な場合は、このサーバーからアプリケーションを復元できます',
      removeApplicationComplete: 'このアプリケーションのコードとデータを削除してください',
      removeComponentDescription: 'このコンポーネントを削除すると、このコンポーネントによって生成されたコードとデータが消去され、バックアップがない場合は回復できません',
      removeComponentKeepData: 'このコンポーネントのデータは保持し、コードのみ削除してください',
      removeComponentComplete: 'このコンポーネントのコードとデータを削除してください',
      confirmRemove: 'はい、削除します',
      confirmComponentRemove: 'はい、削除します',
      upgradeDescription: 'ブロックをアップグレードすると一時的に利用できなくなります。続けてもよろしいですか？',
      confirmUpgrade: 'はい、それをアップグレードしてください',
      confirmRestart: 'はい、再起動します',
      restartDescription: 'ブロックの再起動は一時的に中断され、構成の変更により起動しない場合があります'
    },
    dev: {
      modeTip: 'Blockletサーバーをデバッグモードに切り替えてください'
    },
    index: {
      tableTitle: 'Blockletsの管理',
      noBlocklet: 'このブロックレットサーバーにはブロックレットが見つかりません。ブロックレットをマーケットプレイスからインストールして開始してください。'
    },
    config: {
      name: 'アプリ名',
      description: 'アプリの説明',
      logoSquare: 'アプリのロゴ',
      logoRect: 'ウェブサイト ロゴ',
      logoRectDesc: '使用場所: ウェブサイトのヘッダーとフッター。設定されていない場合はアプリロゴにフォールバックします',
      logoFavicon: 'Favicon',
      logoFaviconDesc: '使用場所：ブラウザのアドレスバーとタブ。設定されていない場合はアプリロゴに戻ります',
      clusterSize: 'このブロックレットをクラスターモードで実行するときのインスタンス数',
      copyrightOwner: '著作権者',
      copyrightYear: '著作権 年',
      deletable: {
        name: '削除保護',
        enable: '現在、この blocklet は削除できません',
        disable: 'このブロックは現在削除できます'
      },
      walletType: {
        name: 'ウォレットタイプ',
        description: 'Blockletインスタンスウォレットタイプ、派生されたDIDが変更されます'
      },
      languages: '対応言語',
      selectLanguagesTip: '削除して再追加することで順序を調整してください',
      languagesSearch: '国の現地名、英語名、またはISOコードで検索...',
      passportColor: 'パスポートの色',
      appUrl: 'アプリのURL',
      access: {
        title: '誰がアクセスできますか？',
        description: 'アプリケーションへのアクセス制御方法を選択してください。',
        useDefault: 'デフォルトを使用',
        defaultDescription: 'アプリケーションのデフォルト設定を使用してください',
        whoCanAccess: {
          all: {
            title: 'すべての人に公開',
            description: 'パスポートなしで誰でもアクセスできるように世界に開放されています'
          },
          owner: {
            title: '所有者のみアクセス',
            description: 'このアプリケーションにアクセスするためには、オーナーパスポートの提出が必要です'
          },
          invited: {
            title: '招待者のみアクセス',
            description: '招待されたメンバーのみアクセスできます。'
          }
        },
        publicToStore: '店内での公開',
        publicInstanceTip: 'このブロックレットのアクセスアドレスはストアに表示されます（寄付を受け付けるためのDIDと共に）',
        updatedTip: 'アクセス制御が変更されました'
      },
      changedTip: '設定が更新されましたので、Blockletを再起動してください',
      missingRequired: 'ブロックレットを開始するための必要な設定が不足しています',
      gotoFix: '修理に行く',
      environment: {
        key: '設定キー',
        value: '設定値',
        keyValueRequired: '設定キーと値を指定する必要があります',
        invalidKey: '設定キーはBLOCKLET_またはCOMPONENT_で始めることはできません',
        deleteForbidden: 'この設定は必要であり、削除してはいけません',
        tip: 'BWA_ で始まる設定には機密情報を含めないでください。なぜなら、それらはブラウザに送信されるためです'
      },
      dangerZone: '危険地帯',
      sharedToAllComponents: 'すべてのコンポーネントで共有されます',
      session: {
        ttl: 'ユーザーがこのサイトで {day} 日間活動がない場合、再ログインを求められます',
        day: '{day}日',
        days: '{day} 日間',
        period: 'セッション有効期間',
        profile: 'ユーザープロフィール要件',
        cacheTtl: 'ユーザーセッションデータのキャッシュ期間（秒単位）',
        fullNameEnabled: 'ログイン時にユーザー名をリクエストする（デフォルトで有効）',
        avatarEnabled: 'ログイン時にユーザーのアバターを要求します（デフォルトで有効）',
        emailEnabled: 'ログイン時にユーザーの電子メールをリクエストする',
        emailRequireVerified: 'ログイン前にユーザーの電子メールを確認する必要があります',
        emailRequireUnique: 'すべてのユーザー全体でユーザーの電子メールが一意であることを要求する',
        phoneEnabled: 'ログイン時にユーザーの電話番号をリクエストする（まだサポートされていません）',
        phoneRequireVerified: 'ログイン前にユーザーの電話番号を確認する必要があります',
        phoneRequireUnique: 'すべてのユーザー全体でユーザーの電話番号が一意であることを要求する',
        emailTrustOauthProviders: 'メール確認ステータスのOAuthプロバイダーを信頼する',
        enableDomainBlackList: 'メールドメインのブラックリストを有効にする（リストされたメールドメインを拒否する）',
        enableDomainWhiteList: 'メールドメインホワイトリストを有効にする（リストされたメールドメインのみログインを許可）',
        addDomain: 'リストを取得するためのソースを追加します（プレーンテキスト形式、1行ごとに1つのドメイン）',
        enableBlacklist: 'ログイントークン と リフレッシュトークン の取り消しを有効にする',
        experimentalSettings: '実験設定'
      },
      clearCache: {
        name: 'キャッシュ管理',
        purpose: 'ルーターとブロックレットサービスにキャッシュされたファイルを管理する',
        title: 'キャッシュのクリアを確認しますか？',
        action: 'キャッシュをクリア',
        success: '{count}つのキャッシュエントリーを正常にクリアしました',
        description: 'ルーターとブロックレットサービスのキャッシュファイルを削除してもよろしいですか？この操作により、短期間の間に少しパフォーマンスが低下する可能性があります。'
      },
      tenantMode: {
        name: 'マルチテナントモード',
        multiple: 'このブロックレットは複数のテナントモードで実行され、各テナントごとにデータが分離される必要があります',
        single: 'このブロックレットはシングルテナントモードで実行され、すべてのデータが共有されています'
      },
      splashPortrait: 'スプラッシュイメージ',
      splashLandscape: 'スプラッシュランドスケープ',
      splashPortraitDesc: 'Blocklet 起動時に表示されます。PNG または JPG 形式を推奨、縦向きは 9:16、横向きは 16:9 のアスペクト比 (最大 5MB)',
      rotateSessionKey: {
        name: 'セッション ソルトのローテーション',
        purpose: 'セッションソルトは、セッショントークンのセキュリティを強化するために使用されるランダムな値です。ボタンをクリックしてセッションソルトを手動でローテーションすると、ログイントークンが侵害されるリスクを軽減するのに役立ちます。',
        title: 'セッションのソルト回転を確認しますか?',
        action: '塩を回転',
        success: 'セッション塩が正常に回転しました',
        description: 'セッションソルトを回転させますか？この操作は、既存のすべてのログイントークンを無効にし、ユーザーにログインを強制します（あなたのログイントークンも含みます）。'
      },
      ogImage: 'Open Graph 背景',
      ogImageDesc: '使用場所：ソーシャルメディア共有背景',
      migrate: {
        button: 'DID Wallet で移行',
        title: 'DID変更を確認',
        description: 'サーバー管理のウォレットで起動する場合、アプリケーション DID を自分のウォレットに変更できます。',
        confirm: 'アプリケーションの DID を変更してもよろしいですか？この操作により、既存のセッションは無効になり、ユーザーは自分のセッションを含め、再度ログインする必要があります。'
      },
      vault: {
        name: 'Vault DID',
        title: 'Vault を設定',
        desc: 'この Blocklet が管理する資金に追加のセキュリティ層を追加するために vault を使用してください。',
        tip: '続行するには vault アドレスを入力してください。使用できるようにするには、vault アドレスの所有権を証明する必要があります。',
        address: 'Vault アドレス',
        verified: 'Vault は確認されました',
        current: '現在の Vault',
        error: {
          invalid: 'Vault アドレスは有効な DID である必要があります',
          holder: 'Vaultアドレスはブロックチェーン上の有効なトークン保有者である必要があります。トークン/アセット/ファクトリー/ステークアドレスはサポートされていません。',
          duplicate: 'この vault アドレスは既に使用されています。別のアドレスを使用してください',
          appDid: 'アプリケーション DID を vault アドレスとして使用できません。別のアドレスを使用してください'
        },
        role: 'ロールタイプ',
        firstSeen: '初めて見た',
        lastSeen: '最終確認',
        migratedFrom: 'から移行',
        migratedTo: '移行しました',
        commit: {
          title: 'Vault の所有権確認',
          scan: '以下の方法を使用して、保管庫の所有権を確認してください',
          confirm: 'DID Wallet を使用して確認',
          success: 'Vault の設定が成功しました'
        },
        approve: {
          title: 'Vault 変更を承認',
          byOwner: '変更を承認するためにBlocklet所有者と署名する',
          byLast: '変更を承認するために、最後のVaultで署名する',
          confirm: 'DID Wallet を使用して確認',
          success: 'Vaultの変更が承認されました'
        }
      },
      changeImageTip: 'ヒント：画像を変更したい場合は、プレビュー画像をクリックして変更してください。',
      baseInfo: '基本情報',
      baseInfoDesc: 'ここでウェブサイトの基本情報を設定できます。',
      logoSettings: '視覚情報',
      logoSettingsDesc: '独自のブランドイメージを形成し、様々なシナリオにおけるウェブサイトの認知度と視覚的な魅力を高めます。',
      languagesDesc: '使用場所：訪問者の言語選択',
      nameDesc: '使用場所：DID Connect ヘッダー、ブラウザタブ、ウェブサイトフッター、SEOメタデータ、OpenGraphメタデータ',
      descriptionDesc: '使用場所: SEOメタデータとOpenGraphメタデータ',
      logoSquareDesc: '使用場所：ユーザー認証ダイアログのフッターと<b>DID Wallet</b>アプリ一覧',
      logoDesc: '推奨サイズ：{width} × {height} ピクセル',
      splashDesc: 'ArcSphere アプリ起動画面（設定済みの場合、<b>ArcSphere</b>に表示されます）\n\n縦向きモード：\n比率：9:16\n\n横向きモード：\n比率：16:9',
      copyrightDesc: '使用場所：ウェブサイト フッター',
      appUrlDesc: '使用場所: サイトマップとソーシャルシェアリング',
      advanced: '高度な設定'
    },
    overview: {
      source: 'ソース',
      deployedFrom: 'デプロイされました',
      accessControl: 'アクセス制御',
      viewInStore: '店舗で見る'
    },
    diskInfo: {
      empty: 'ディスク情報は現在使用できません！',
      appDir: 'アプリディレクトリ',
      dataDir: 'データディレクトリ',
      logDir: 'ログディレクトリ',
      cacheDir: 'キャッシュディレクトリ'
    },
    runtimeInfo: {
      noRunning: 'ブロックレットが実行されている間、ランタイム情報が利用可能です！',
      memoryUsage: 'メモリ使用量',
      cpuUsage: 'CPU 使用率',
      uptime: '稼働時間',
      port: 'ポート',
      processId: 'プロセス ID'
    },
    dist: {
      downloadLink: 'ダウンロードリンク',
      verify: '検証する'
    },
    status: {
      added: '追加されました',
      waiting: '待っている',
      downloading: 'ダウンロード中',
      extracting: '抽出中',
      installing: 'インストール中',
      upgrading: 'アップグレード',
      installed: 'インストール済み',
      created: '作成された',
      starting: 'スターティング',
      running: 'ランニング',
      stopping: '中止する',
      stopped: '停止しました',
      error: 'エラー',
      deleting: '削除中',
      corrupted: '破損した',
      purchasing: '購入を待っています',
      purchased: '購入されました',
      verifying: '購入を確認する',
      resource: 'リソース'
    },
    list: {
      download: 'ダウンロード',
      star: '星',
      searchPlaceholder: 'ブロックレット名またはDIDで検索'
    },
    component: {
      container: 'グローバル設定',
      showContainer: 'グローバル設定を表示する',
      didSpaceConfig: 'DID スペースの設定',
      didSpaceConfigTip: 'DID Spacesにアプリケーションデータを保存するため、以下の認証プロセスを完了してください',
      didSpaceConnected: 'ストレージへの認可が行われました: {endpoint}',
      checkUpdateTitle: '更新を確認する',
      updateTitle: 'コンポーネントの更新',
      noUpdate: '更新するコンポーネントはありません',
      add: 'コンポーネントを追加する',
      selectComponent: 'ブロックレットを選択',
      selectRegistry: 'Blocklet ストアを選択してください',
      selectRegistryTip: 'コンポーネントをもっと見るために、Blocklet ストアを切り替えることができます',
      selectInstance: 'インスタンスを選択する',
      selectInstanceTip: '既存のインスタンスを選択するか、新しいインスタンスを作成することができます。既存のインスタンスでは以前に保存された構成とデータが使用されます',
      newInstance: '新しいインスタンスを作成',
      noComponent: 'コンポーネントがありません',
      mountPoint: 'マウントポイントは何ですか？',
      mountPointTip: "'/my-prefix' にマウントポイントを設定する場合、そのマウントポイントで始まるすべてのリクエストが選択されたコンポーネントにルーティングされます。",
      delete: 'コンポーネントの削除',
      deleteDescription: 'このコンポーネントは削除後アクセスできなくなります。削除しますか？',
      purchase: '支払いが必要です',
      tip: {
        stopBlocklet: '最初にBlockletの実行を停止してください',
        requiredBy: 'コンポーネントは{name}によって必要です'
      },
      choose: '選ぶ',
      addWithName: '{name} にブロックレットを追加する',
      installingCanCloseWindowTip: 'バックグラウンドでコンポーネントをインストールしています。このウィンドウを安全に閉じることができます',
      installSuccessTip: 'おめでとうございます、コンポーネントが正常にインストールされました！',
      missDownloadTokenTip: '有効なダウンロードトークンがないため、有料コンポーネントを追加できません',
      purchaseComponentSecondCheckTip: '継続するために、ブロックチェーンの購入NFTをご提示ください',
      installComponentError: 'コンポーネントのインストール中にエラーが発生しました。もう一度やり直してください',
      downloadComponentError: 'コンポーネントのダウンロード中にエラーが発生しました。もう一度やり直してください',
      addComponentTip: {
        introduction: 'コンポーネントウィザードへようこそ',
        isPurchase: 'コンポーネントとして<b>{name}</b>を使用する前に、NFTを検証する必要があります',
        belowInformation: '以下はコンポーネントの情報です:',
        verifyNFT: 'NFTの検証方法を選択してください',
        config: 'コンポーネントの設定を入力してください',
        environment: 'コンポーネントの環境を入力してください',
        fromUrl: 'URLからBlockletを追加',
        fromUpload: 'アップロードから Blocklet を追加',
        uploadFailed: 'アップロード失敗',
        allowedFileTypes: 'アップロード可能なファイルの種類：{types}'
      },
      addNext: '{name}を追加',
      upgradeNext: '{name} をアップグレード',
      setting: '設定',
      noDependencies: '{name}には依存関係はありません',
      relatedComponents: '関連するブロック',
      required: '必要',
      installed: 'インストール',
      installingTip: 'コンポーネントをインストールしています、お待ちください...',
      upgrade: 'アップグレード',
      upgradeAvailable: 'アップデートがあります',
      needBuy: '購入する必要があります',
      isOfficial: '公式認定'
    },
    router: {
      urlPath: 'URLパス',
      noRunning: 'ブロックレットは現在起動していません。次のアドレスにアクセスできません！',
      securitySetting: 'セキュリティ設定',
      checkUrlAccessible: 'アドレスのアクセシビリティを確認してください',
      urlInaccessible: 'ネットワークの問題により、アドレスは一時的にアクセスできません',
      noAccessibleUrl: 'アクセスできるURLはありません',
      domainLockTooltip: 'システムが生成したドメインは編集できません。',
      urlLockTooltip: 'システムが生成したURLパスは編集できません。',
      showAllDomains: 'すべてのドメインを表示する',
      showAllDIDs: 'すべてのDIDを表示する',
      currentDomainTip: 'このドメインを介して現在のページにアクセスしています'
    },
    export: {
      title: 'Blockletのエクスポート',
      name: 'バンドル名',
      nameTip: '私の-blocklet-name',
      result: '次は何ですか？',
      exportSource: 'ソースのエクスポート',
      success: 'ブロックレットが正常にエクスポートされました',
      resultTipStart: 'と',
      resultTipEnd: 'このブロックレットを数分でビルドして公開することができます',
      uploadedComponentTip: '直接アップロードされたコンポーネントはエクスポートできません'
    },
    migrate: {
      title: 'アプリケーションの移行',
      scan: 'このアプリケーションのキーペアを生成するためにDIDウォレットを接続してください',
      confirm: 'あなたのDIDウォレットでこの操作を確認してください',
      success: 'アプリケーションは正常に移行されました。{sec}秒後にページがリフレッシュされます',
      intro: {
        l1: 'ここをクリックしてください',
        l2: 'アプリケーションを新バージョンに移行するための準備（移行が完了するまで変更は無効化されます）',
        l3: 'アプリケーションDIDは完全にDIDウォレットから制御されます。',
        l4: '2. アプリケーションデータは移行され、追加の変更は必要ありません。',
        l5: '3. 新しいアプリケーション構造は、コンポーネントを変更する際により柔軟性を提供します。',
        l6: '4. コンポーネントの新バージョンがリリースされるまで、コンポーネントのマウントポイントを変更しないでください。'
      },
      tip: {
        duplicate: '重複したコンポーネント{name}を検索して、不要なコンポーネントを削除して再度移行してください',
        running: '移行前にブロックレットを停止してください'
      }
    },
    error: {
      isRunning: 'Blockletが実行中ですので、まず停止してください',
      isInProgress: 'Blockletが進行中ですので、完了までお待ちください'
    },
    publish: {
      createResource: 'リソースを作成する',
      addResource: 'リリースの追加',
      productTitle: '製品',
      versionTitle: 'バージョン管理',
      imgTitle: '画像',
      resourceTitle: 'コンテンツ',
      blockletEmptyTip: 'ここに Blocklets はありません',
      createBlockletTip: 'このアプリケーションでは、既存のリソース、コンポーネント、および設定を使用して新しいブロックレットを作成することができます',
      createBlocklet: '新しいブロックレット',
      componentNotRunning: 'Blocklet {name} は実行されていません、まず起動してください',
      releaseEmptyTip: 'ここにはリリースがありません',
      createReleaseTip: '他の人が使用できるように、リリースノートやリソースと共にブロックをリリースすることができます',
      createRelease: 'リリースを作成',
      deleteReleaseTip: '削除後、リリースは復元できません',
      createBlockletDid: 'DIDウォレットから作成',
      createReleaseSuccess: 'リリースが正常に作成されました',
      saveDraftSuccess: '下書きが正常に保存されました',
      connect: {
        title: 'Blocklet DIDを作成する',
        scan: '以下の方法を使用して Blocklet DID を生成します',
        confirm: 'DIDウォレットを使用して確認してください',
        success: 'Blocklet DIDが生成されましたので、引き続き操作を行ってください'
      },
      saveDraft: '下書き保存',
      releaseNote: 'リリースノート',
      errorTip: {
        noDid: 'Blocklet DIDが必要です',
        noTitle: 'Blockletのタイトルは必須です',
        noVersion: 'Blockletバージョンが必要です',
        noDescription: 'Blockletの説明が必要です',
        noNote: 'リリースノートが必要です',
        inValidVersion: '無効な Blocklet バージョン',
        noResource: 'ブロックレットに含めるアップロードリソースを選択してください',
        noFirstDid: '最初にBlocklet DIDを作成してください',
        invalidUrl: '有効なURLを入力してください',
        invalidUrlOrEmail: '有効なURLまたはメールアドレスを入力してください'
      },
      packTip: '現在、Blockletとしてブロックを直接アプリケーションとしてインストールすることができます。コンポーネントとアプリケーションの設定は自動的にBlockletに含まれます',
      resourceChangedWarning: 'リソースを変更しましたので、時間内に保存してください',
      installResourceTip: 'インストールURL:',
      installResourceTip2: 'さらなるヒントを見たい場合は、{name} をご覧ください',
      installResourceHelp: 'ヘルプドキュメント',
      componentIncluded: '含まれています',
      componentForceRequired: '必要です',
      download: 'ダウンロード {name}',
      delete: '削除 {name}',
      copyInstallUrl: 'インストールURLをコピーする',
      install: '{name}をインストールする',
      publishToStoreSuccess: 'Blockletがストアに正常に公開されました',
      connectStoreSuccess: 'Blockletストアが正常に接続されました',
      uploadToStoreSuccess: 'ブロックレットがストアに正常にアップロードされました。ストアで公開する必要があります',
      viewLastRelease: '最新リリースを表示する',
      reconnectStoreTip: '再接続後、新しい開発者がバインドされます。再接続しますか？',
      deleteProject: {
        title: '{name}を削除する',
        scan: '以下の方法で {name} を削除してください',
        confirm: 'DIDウォレットを使用して確認',
        success: 'Blocklet プロジェクトが削除されました。操作を続行してください',
        tip1: '削除後、Blockletプロジェクトは回復できません',
        tip2: '削除されたBlockletに新しいバージョンを公開することはできなくなりますので、Blockletはもはやストアで更新されません。',
        tip3: 'ブロックを削除しても、ストアで現在公開されているバージョンには影響しません。',
        description: 'ブロックレットを削除すると、次の問題が発生します。本当に削除しますか？'
      },
      resourceTip: '現在、リソースブロックレットとしては、ストアから直接インストールすることはできません。',
      whyCantSeeInStore: '現在の Blocklet をストアに公開できます。世界中で使用できます',
      whyCantSeeResourceBlockletInStore: '現在の Blocklet をストアに公開できます。そして、世界中で使用できます。Blocklets はデフォルトでストアのリストページに非表示になります',
      tenantScope: 'テナント',
      blockletStudio: 'Blocklet Studio',
      allComponentsNotRunning: 'Blockletsは動作していません、まず起動してください',
      resourceEmptyTip: '利用可能なリソースはありません',
      steps: {
        resources: '現在の Blocklet と関連付ける必要があるリソースを選択してください。これらのリソースは、Blocklet と共にインストールされます。',
        blocklets: '関連付けるブロックレットを選択してください。',
        version: 'リリースバージョンと変更履歴を設定してください。',
        introduction: '明確な紹介はあなたのBlockletを効果的に強調することができます。Markdownの構文を使用して書き、プレビューすることができます。',
        branding: 'ブロックレットの基本情報を説明してください。この情報はストアのユーザーに表示されます。'
      },
      branding: 'ブランディング',
      brandingHelp: 'ストアにブロックレットの詳細情報が表示されます',
      resourceSelect: 'ブロックレットからリソースを選択する',
      resourceUpload: 'ディスクからリソースをアップロードします（アーカイブにindex.htmlが必要です）',
      deleteStoreTip: '{name}を接続ストアリストから削除してもよろしいですか？',
      disconnectStoreTip: 'ブロックレットの接続を解除すると、ブロックレットはストアから削除されます。接続を解除してもよろしいですか？',
      connectOrUpload: '接続またはアップロード',
      developerInfo: '開発者情報',
      autoUploadTip: 'リリース後、Blockletを自動的にストアにアップロードします',
      possibleSameStoreTip: '可能な限り、アップロード前に依存ブロックレットを同じ Blocklet ストアに解決してみてください',
      needProjectId: '最初にプロジェクトを作成してください',
      projectSettings: 'プロジェクトの設定',
      noStoreSelected: '続行するために、既存の店舗の1つを選択するか、新しい店舗を追加してください',
      installToThisServer: 'このサーバーにインストール',
      forceResourceBlocklet: 'リソースベースのブロックレットとして定義される力',
      resourceDocker: 'Docker から Blocklet を構築',
      resourceSelectTitle: 'リソース',
      resourceUploadTitle: 'アップロード',
      resourceDockerTitle: 'Docker',
      resourceDockerInputTip: 'docker run コマンドを入力してください',
      docker: {
        pleaseInputDockerCommand: 'docker run コマンドを入力してください',
        volumeTip: 'ボリュームは $BLOCKLET_DATA_DIR または $BLOCKLET_APP_DIR で始まる必要があります',
        volumeTip2: 'ボリュームに ".." を含めることはできません',
        noAllowTheArg: 'docker run コマンドでその引数は使用できません',
        needCustomInput: 'Blocklet をインストールする時に値を設定する',
        dockerParams: 'Docker パラメータ',
        dockerCommand: 'Docker コマンド',
        dockerImageName: 'Docker イメージ名',
        addItem: 'Docker 実行パラメータを追加',
        envKey: '環境変数キー',
        publishTips: '最終外部ポートは blocklet によって自動的に割り当てられます',
        volumeTips: 'ボリュームは $BLOCKLET_DATA_DIR または $BLOCKLET_APP_DIR で始める必要があります',
        modifyParam: 'Docker 実行パラメータを変更',
        modifyEnv: '環境変数を変更',
        paramDetail: 'パラメータの詳細',
        description: '説明',
        secure: '安全',
        shared: '共有',
        required: '必須',
        prefix: 'プレフィックス',
        path: 'パス',
        name: '名前',
        portType: 'ポートタイプ',
        dockerImageNameError: 'Docker イメージ名にはスペースを含めることはできません',
        autoGenerated: '自動生成',
        dockerCMDError: 'Docker CMD は単純な文字しかサポートしません',
        proxyBehavior: 'プロキシの動作',
        serviceProxy: 'サービス',
        directProxy: '直接',
        nextTab: 'コマンドを解析'
      },
      storeRule: {
        maxImageCount: 'ストアでは最大 {max} 枚のスクリーンショットが許可されています。',
        minImageCount: 'ストアでは少なくとも {min} {unit} が必要です。',
        minImageSize: ' {name} のスクリーンショット画像サイズは、少なくとも {width}x{height} でなければなりません。',
        logoFormat: 'ロゴ画像フォーマットは [{format}] のみをサポートしています',
        warning: '警告',
        screenshot: 'スクリーンショット',
        screenshots: 'スクリーンショット',
        first: '1番目',
        second: '2番目',
        third: '3番目'
      },
      store: 'Blocklet ストア',
      endpoint: {
        tab: 'リモート Blocklet',
        uploadToEndpoint: '現在の Blocklet を指定された Blocklet にアップロードできます。',
        addEndpoint: 'Blocklet エンドポイントを追加',
        urlEmpty: 'エンドポイント URL は空にできません',
        addFailed: 'Blocklet エンドポイントの追加に失敗しました：',
        deleteEndpoint: 'Blocklet エンドポイントを削除',
        deleteDesc: 'Blocklet エンドポイント {name} の削除を確認しますか？<br/><span style="color: {color}">*この Blocklet エンドポイントを削除した後、この Blocklet エンドポイントからインストールされたアプリは、再度追加しない限り更新できません。</span>',
        confirmDesc: '削除するには {name} を入力してください',
        visitEndpoint: 'Blocklet を訪問',
        disconnectEndpointTip: ' {url}との接続を切断してもよろしいですか？接続を切断すると、Blockletはこのエンドポイントにアップロードされません。',
        deleteFailed: 'Blocklet エンドポイントの削除に失敗しました',
        publishToEndpointSuccess: 'Blocklet が Endpoint に正常に公開されました',
        uploadToEndpointSuccess: 'Blocklet が Endpoint に正常にアップロードされました'
      },
      autoPublishErrorTip: '自動公開が {storeName} に失敗しました：{error}',
      singleton: '単一のインスタンスのみ',
      singletonTip: 'シングルトンモードが有効な場合、アプリケーションは同時に複数のインスタンスを実行できません。アプリがシングルトンモードを使用しているため、更新や再起動にはブルーグリーンデプロイメントを使用できません。'
    },
    titleValidationError: 'タイトルの長さは 3 から 20 文字の間でなければなりません',
    descriptionValidationError: '説明の長さは3〜80文字の間でなければなりません',
    whyNeedAppPid: 'アプリケーションが移行されている場合、永続的な DID はこの Blocklet が最初にインストールされたときに生成された DID です。',
    usingDocker: 'このBlockletはdockerを使用して実行されます',
    gotoVisitError: 'Blocklet URL にアクセスできません、後で再度お試しください',
    usingIsolation: 'この Blocklet はネットワーク分離を使用して実行されます',
    dockerImage: 'Docker をサポート',
    mountPoint: {
      description1: 'この変更により、古いマウントポイントを含むURLが壊れる可能性があり、さらに以下につながる可能性があります：',
      case1: 'このアプリ内の Blocklets 間でリソース参照が壊れています',
      case2: 'URLが無効です。公開共有している場合',
      description2: '古いマウントポイントから新しいマウントポイントへのリダイレクトを設定して、破壊的な変更を最小限に抑えることができます。'
    },
    skSourceMigratedTip: 'このアプリはサーバー管理のウォレットで開始され、より安全な DID Wallet に移行しました。',
    skSourceManagedTip: 'このアプリはサーバー管理のウォレットで実行されています。より安全にするため、できるだけ早くDID Walletに移行してください。',
    zeroDowntime: 'ゼロダウンタイム'
  },
  dashboard: {
    nodeDid: 'ノード',
    ownerDid: 'オーナー',
    routingEngine: 'ルーティングエンジン',
    ownerNftURL: 'NFTの所有者',
    expirationLeft: '有効期限リマインド',
    startFromCrashTip: '前回、Blocklet サーバーは正常に終了しなかったため、実行する必要があるブロックレットを手動で起動してください。',
    runtimeConfig: {
      blockletMaxMemoryLimit: 'Blockletの最大メモリ制限',
      daemonMaxMemoryLimit: 'サーバーの最大メモリ制限'
    },
    document: 'ドキュメントで詳細をご覧ください',
    database: 'データベース'
  },
  store: {
    nameSort: '名前',
    popularSort: '人気',
    headerDescription: 'Blocklets を検索してインストールしてください',
    detail: {
      purchase: '{name} を購入してください',
      open: '{name}を開く',
      install: '{name} をインストールする',
      upgrade: '{name}をアップグレード',
      empty: '紹介なし'
    },
    blockletRegistry: {
      changeFailed: 'Blockletストアの変更に失敗しました',
      addFailed: 'Blocklet Storeの追加に失敗しました',
      editFailed: 'Blockletストアの編集に失敗しました',
      switchRegistry: 'スイッチブロックレットストア',
      addRegistry: 'Blocklet Store の追加',
      editRegistry: 'ブロックストアの編集',
      deleteRegistry: 'Blocklet Store を削除する',
      haveSameRegistry: '同じのブロックレットストアが存在します',
      registryName: 'ブロックレットストアの名前',
      registryUrl: 'Blocklet Store の URL',
      registryNameEmpty: 'Blocklet ストア名は空にできません',
      registryUrlEmpty: 'BlockletストアのURLは空にできません',
      deleteDesc: 'ブロックレットストア {name} を削除しますか？<br/><span style="color: {color}">*このブロックレットストアを削除すると、再度追加しない限り、このブロックレットストアからインストールされたアプリを更新することはできません。</span>',
      confirmDesc: '{name}を削除するには、入力してください'
    },
    purchase: {
      title: '{name} を購入',
      confirmed: 'あなたのブロックレットの NFT 購入が確認されました',
      declined: '有効なブロックレット NFT の購入が提供されていません',
      waiting: '購入が完了するのを待っています...',
      purchase: {
        title: 'NFTを購入する',
        description: 'このブロックレットをインストールする前に、トークンを支払ってください。もしブロックレットをまだ購入していない場合'
      },
      verify: {
        title: 'NFTの検証',
        description: 'このブロックレットをインストールする前に、購入したNFTを所有しているかを確認するために、あなたのNFTが検証されます',
        auth: {
          title: '購入資格が必要です',
          scan: 'ブロックレットのNFT購入を提供するために、DIDウォレットを接続してください',
          confirm: 'あなたのDIDウォレットでこの操作を確認してください',
          success: 'NFTの購入が確認され、インストールが開始されました'
        }
      },
      auth: {
        title: '{name}を購入する',
        scan: '以下のQRコードをあなたのDIDウォレットでスキャンしてください',
        confirm: 'アカウントで 確認',
        success: 'NFTの購入がDIDウォレットに送信されました'
      },
      launch: '{name}を起動',
      autoLaunch: '{name} は購入が完了しました。起動ページにリダイレクトしています...'
    },
    tooltip: {
      upgradeServer: 'BlockletはBlocklet Serverバージョン{version}が必要で、現在のBlocklet Serverバージョンは{serverVersion}です。'
    }
  },
  setting: {
    saveSuccess: '設定が正常に保存されました',
    unSavedTip: '保存されていない変更があります。保存するには「変更を保存」をクリックしてください。',
    unSavedLeaveTip: '保存されていない変更があります。ページを離れてもよろしいですか？',
    form: {
      name: 'サーバーの名前',
      nameRequired: 'サーバの説明が必要です',
      namePlaceholder: 'サーバー名',
      description: 'サーバーを説明してください',
      descriptionHolder: 'サーバーの説明',
      descriptionRequired: 'サーバーの説明が必要です',
      domain: 'サーバードメイン名',
      domainPlaceholder: 'サーバードメイン名',
      domainRequired: 'サーバードメインが必要です',
      ipPlaceholder: 'IP',
      ipRequired: 'IPが必要です',
      registry: 'Blocklet Store',
      registryPlaceholder: 'ブロックレットストアでブロックレットを取得する',
      registryRequired: 'Blockletストアが必要です',
      registerUrl: 'Blocklet LauncherのURL',
      registerUrlPlaceholder: 'お好みのBlockletランチャーのURLを入力してください。公式のものを安全に使用できます',
      webWalletUrl: 'DID ウォレットのURL',
      webWalletUrlPlaceholder: 'ホストされた「DIDウォレット」のURLを入力してください。公式のものを安全に使用できます',
      nftDomainUrl: 'NFTドメインURL',
      nftDomainUrlPlaceholder: 'ホストされている「NFTドメイン」のURLを入力してください。公式のものを安全に使用することができます',
      enableWelcomePage: '歓迎ページを有効にする',
      welcome: {
        switchLabel: 'ようこそページ'
      },
      upgrade: {
        title: 'Blocklet サーバーを {version} にアップグレードしてください',
        description: 'アップグレード中に、Blocklet サーバーはアップデートが完了するまで数分間メンテナンスモードになります。',
        dialog: '"確認"をクリックしてアップデートをインストールしてください。アップデートが完了するまで、Blockletサーバーはメンテナンスモードに入り、自動的に製品モードに復帰します。',
        confirm: 'アップグレード',
        switchLabel: '自動更新の確認',
        enableBetaRelease: 'ベータリリースを有効にする',
        setup: 'アップグレードの準備中',
        installing: 'Blockletサーバーv{version}をインストール中',
        restarting: 'Blockletサーバーを再起動しています',
        cleanup: 'Blocklet サーバーデータの移行中',
        verifying: 'Blockletサーバーv{version}を確認中',
        rollback: 'ロールバックBlockletサーバー',
        complete: 'アップグレード完了！',
        progress: '{name} をアップグレード',
        check: 'アップデートの確認',
        latest: '最新バージョンを実行しています。'
      },
      restart: {
        title: 'Blocklet サーバーを再起動する',
        description: '再起動中は、再起動が完了するまでに、Blocklet サーバーがメンテナンスモードに入ります。',
        dialog: '"確認"をクリックして再起動してください。Blocklet Serverは再起動が完了し、自動的に本番モードに復元するまで、メンテナンスモードに入ります。',
        confirm: '再起動',
        setup: '再起動の準備中',
        verifying: 'Blocklet サーバーの検証',
        restarting: 'Blocklet サーバーを再起動しています',
        cleanup: 'すべてが問題ないことを確認してください',
        rollback: '汚れた状態をきれいにする',
        complete: 'メンテナンス完了！',
        progress: '{name} を再起動しています'
      },
      register: {
        title: 'Blocklet Launcher に登録する',
        description: '追加後、{url}からこのblockletサーバーに対してblockletを起動することができます',
        button: '登録'
      },
      monitor: {
        diskThreshold: 'ディスク使用率が (%) を超えた場合にアラートを送信する',
        diskThresholdPlaceholder: 'ディスク使用量のアラート閾値を設定してください'
      },
      security: {
        switchLabel: 'ファイルシステムの分離',
        switchTips: 'このオプションを無効にした後、Blockletのファイルシステムはもはや隔離されず、悪意のあるソフトウェアによってファイルシステムが損傷される可能性があります。',
        warningTips: 'ファイルシステムの分離機能が有効になりません。node.js バージョン（現在のバージョンは {version}）を v21.6.0 以降にアップグレードしてください。'
      },
      docker: {
        switchLabel: 'コンテナ内でブロックレットを実行する',
        switchTips: 'このオプションを有効にすると、ブロックレットがコンテナを使用して実行されるため、サーバーの全体的なセキュリティが向上します。',
        notInstalled: 'Dockerがインストールされていないか、必要な権限がないため、コンテナランをアクティブ化できません',
        needCloseFileSystemIsolation: 'ファイルシステムの分離とDockerコンテナモードの実行は同時に有効にすることはできません'
      },
      dockerNetwork: {
        switchLabel: 'コンテナネットワーク分離',
        switchTips: 'このオプションを有効にすると、ブロックレットはより安全な方法で動作します。ブロックレットは、アプリケーション間で他のブロックレットまたはブロックレットサーバーにアクセスすることはできません。',
        needEnableDocker: 'コンテナモードを有効にするには、ネットワーク分離を有効にする必要があります'
      },
      restartAllContainers: {
        title: 'すべてのコンテナを再起動',
        description: 'すべてのコンテナを再起動し、Blocklets を実行し続ける。',
        dialog: '「確認」をクリックして、すべてのコンテナ Blocklets を再起動し、Blocklets の状態を実行中に保ちます。',
        confirm: '再起動',
        setup: '再起動の準備中',
        verifying: 'Blocklet Server を検証中',
        restarting: 'バックグラウンドで全てのコンテナを再起動中',
        cleanup: 'すべてが大丈夫であることを確認してください',
        rollback: '汚れた状態をクリーンアップ',
        complete: '完全に維持！',
        progress: 'バックグラウンドで全てのコンテナを再起動'
      },
      restartAllBlocklet: {
        title: 'すべての Blocklets を再起動',
        description: 'このサーバーで実行中またはエラーが発生しているすべての Blocklets を再起動します。',
        dialog: '「確認」をクリックして、すべての Blocklets をバックグラウンドで再起動してください。',
        confirm: '再起動',
        setup: '再起動の準備中',
        verifying: 'Blocklet Server を確認中',
        restarting: 'バックグラウンドで実行中またはエラーの Blocklets をすべて再起動しています',
        cleanup: 'すべてが大丈夫か確認してください',
        rollback: '汚れた状態をクリーンアップ',
        complete: 'メンテナンス完了！',
        progress: 'バックグラウンドで実行中またはエラーの Blocklets を再起動しています'
      },
      enableSessionHardening: {
        switchLabel: 'セッション ハードニングを有効にする',
        switchTips: 'このオプションを有効にすると、変更操作には厳格な検証が必要になり、サーバーの全体的なセキュリティが向上します。'
      }
    },
    accessKey: {
      accessKeyId: 'アクセスキーID',
      lastUsed: '最後に使用された日時',
      tip: 'このアクセスキーの名前を入力してください',
      saveSecretTip: 'これは、Access Secretキーを表示でき、回復することができない唯一の時間です。ただし、いつでも新しいアクセスキーを作成することができます',
      iKnow: 'Access Secretをコピーして保存しました',
      showSecret: 'シークレットアクセスキーを表示する',
      hideSecret: '秘密を隠す',
      title: 'アクセスキーを削除する',
      descriptionNoTime: 'これにより、以前に使用されたことのない名前が {name} でアクセスキー {key} が永久に削除されます',
      description: 'これにより、アクセスキー {key}（名前：{name}）が永久に削除されます（最終使用日時：{time}、{timeAge}前）',
      confirm_desc: '{name}を入力して削除してください',
      remark: 'アクセスキー名',
      remarkInvalid: 'アクセスキーの名前が必要です',
      passport: 'アクセスキーの権限を付与または制限するために、パスポートを選択してください',
      expireTime: 'セキュリティ強化のため、アクセスキーの有効期限を設定してください',
      authType: '認証タイプ',
      resourceType: 'リソースの種類',
      resourceId: 'リソース ID',
      component: 'コンポーネント',
      expired: '{time} 期限切れ',
      accessKeySecret: 'アクセスキーシークレット',
      simple: 'シンプル',
      signature: '署名',
      signatureDesc: 'エンタープライズグレードのセキュリティ標準、暗号化を使用。SDK (@blocklet/server-js) とのコード統合が必要です。セキュリティ要件が高く、重要なデータ伝送が必要なシナリオに最適です',
      simpleDesc: '軽量なベアラートークンメカニズムは、OpenAPI Keyと同様で、RESTful API呼び出しとサードパーティサービスの統合をサポートします。コーディングは不要で、HTTPヘッダー経由で迅速に統合でき、迅速な開発に最適です',
      viewSecret: 'アクセスキーの詳細ページで後ほど秘密鍵にアクセスできます',
      usage: '使用',
      listTitle: 'アクセスキーで安全なAPIアクセスを管理する',
      tooltipTitle: '信頼できるシステムがプログラムによってあなたのアプリと対話できるように、資格情報を生成および管理します。アクセスキーは、安全な自動化とツールやサービス間のシームレスな統合を可能にします。'
    },
    webhook: {
      add: '統合の追加',
      delTitle: '統合を削除する',
      requiredError: '{type}を入力してください',
      confirm_desc: '{name} を削除するために入力してください',
      test: 'テスト',
      description: 'ID {id} との統合を永久に削除します',
      columns: {
        description: 'ID',
        params: 'パラメーター',
        createdAt: '作成日は'
      },
      testSuccess: 'テストメッセージが正常に送信されました'
    },
    dns: {
      step1Title: 'あなたのドメインレジストラにログインしてください',
      step1Desc1: 'あなたのドメインレジストラにログインし、ドメイン管理ページを見つけて、ネームサーバー設定ページを探してください。 ドメインレジストラは',
      step2Title: '2. {url} の DNS 設定を見つけます',
      step2Desc: 'これは「DNS管理」、「詳細設定」、または同様の名前で呼ばれる場合があります。',
      step3Title: '3. 次の DNS レコードを追加してください',
      step3Desc: '名前は "host"、"hostname"、または "alias" と呼ぶことができます'
    },
    domain: {
      addingDomain: 'ドメインを追加しています...',
      checkingResolvable: 'ドメインの状態を確認しています...',
      cannotResolve: '{domain} は解決できません。DNS設定を確認してください',
      resolvedAddressError: '{domain} は {curDomain} を指す CNAME レコードで正しく設定されていません',
      invalidDNSReminder: '{error}。しかし、ドメインを追加し続けることはできますが、自動証明書生成は利用できません。',
      continueAdd: '追加を続ける',
      conflictTitle: '{domain} は既に使用されています',
      conflictDescription: '{domain} は既に "{title}" によって使用されています。確認をクリックすると、ドメインは "{from}" から削除され、"{to}" に追加されます。'
    },
    aigne: {
      modelAdapter: 'モデル プロバイダー',
      modelName: 'モデル名',
      desc: {
        modelAdapter: 'AI モデルサービスを提供するプラットフォーム',
        modelName: '特定のモデルバージョンまたはモデル名',
        key: '認証に使われる {provider} API キー',
        baseUrl: 'お使いの AIGNE Hub インスタンスの URL を入力してください（例：https://hub.aigne.io）。セルフホスティングの場合はご自身のものを使用してください。',
        accessKeyId: 'モデルにアクセスするための一意のキー ID',
        secretAccessKey: 'アクセスキー ID とペアになっている秘密鍵',
        docLink: '詳細と API リファレンスは公式ドキュメントを表示'
      },
      configDesc: 'Blocklet を AIGNE Hub と統合して、大規模言語モデル (LLMs) への安全なルーティングアクセスを有効にします。 接続されると、Blocklet とそのコンポーネントはインテリジェントなリクエストを送信し、すぐにスマートになります。 独自のセルフホスト <a href="{url}" target="_blank">AIGNE Hub</a> またはデフォルトのパブリックインスタンスを使用できます。',
      failed: 'AIGNE の設定保存に失敗しました',
      authorizeAigneHub: '{name} に接続',
      baseUrl: 'AIGNE Hub のURL',
      disconnect: '切断',
      disconnectConfirm: 'AIGNE Hub から切断してもよろしいですか？これにより現在の AI 設定が削除されます。',
      disconnectSuccess: 'AIGNE Hub から正常に切断されました',
      disconnectFailed: 'AIGNE Hub からの切断に失敗しました',
      testConnection: '{provider} 接続をテスト',
      invalidUrl: '{provider} URL が無効です',
      description: '現在の設定は {name} の実行時に有効になります。有効にするには、Blocklet を保存して再起動する必要があります。',
      revokeUrlAuthTitle: '{url} を変更してもよろしいですか？',
      revokeUrlAuth: '{url} を変更してもよろしいですか？変更後、あなたの認証は無効となり、再認証が必要です！',
      testSuccess: 'AIGNE Hub に正常に接続されました',
      check: 'チェック',
      apiKeyNotAuthorized: 'API キーは認証されていません。 AIGNE Hub に接続するボタンをクリックして認証してください',
      switchUser: 'ユーザー を切り替え',
      connectTimeOut: '{provider} への接続がタイムアウトしました。後で再試行してください',
      restart: {
        title: 'Blocklet を再起動',
        connectedContent: 'あなたの Blocklet は現在 {provider} に接続されています。設定は再起動後に有効になります。今すぐ再起動しますか？',
        notConnectedContent: 'あなたの Blocklet は現在 {provider} から切断されています。設定は再起動後に有効になります。今すぐ再起動しますか？',
        confirm: '今すぐ 再起動',
        cancel: '後で 再起動'
      },
      testFailed: 'AIGNE Hub に接続できません。URL またはネットワークを確認してください。',
      addCredits: 'Creditsを購入',
      transaction: 'トランザクション',
      connected: '正常に接続されました',
      account: 'アカウント情報',
      pendingCredit: '未払い料金',
      infinite: '無制限',
      config: 'AIGNE Hub を構成'
    }
  },
  notification: {
    title: '通知',
    empty: 'まだ活動はありません',
    viewAll: 'すべて表示',
    showRead: '表示読む',
    markAllAsRead: 'すべて既読にする',
    markAsRead: '既読にする',
    proceed: '進む',
    checkingForUpdates: '更新を確認中です...',
    email: {
      enable: '通知を有効にする',
      from: 'メール送信者',
      host: 'SMTP サーバー ホスト',
      port: 'SMTPサーバーポート',
      user: 'SMTP ユーザー名',
      secure: '安全な接続',
      password: 'SMTP パスワード',
      fromRequired: '電子メールの送信者は必須です',
      fromInvalid: '電子メールの送信者が無効です',
      receiverRequired: 'メールの受信者は必須です',
      receiverInvalid: 'メールの受信者が無効です',
      hostRequired: 'SMTPサーバーホストが必要です',
      hostInvalid: 'SMTPサーバーホストが無効です',
      portRequired: 'SMTPサーバーポートは必須です',
      portInvalid: 'SMTPサーバーポートが無効です。ポートは1から65535の間である必要があります',
      userRequired: 'SMTPサーバーユーザー名が必要です',
      passwordRequired: 'SMTPサーバーユーザーパスワードが必要です。',
      testSuccess: 'テストメールは正常に送信されました',
      testFailed: 'テストメールの送信に失敗しました',
      testReceiver: 'メール受信者',
      testSendEmail: 'メール送信のテスト',
      inputTestReceiver: 'テスト受信者のメールアドレスを入力してください',
      disable: 'メール通知の取消',
      disableDescription: '購読を解除すると、もうメール通知を受け取ることはありません。メール通知を受け取るには、このページで再度購読できます。',
      unsubscribe: 'メール通知の購読解除',
      unsubscribeDescription: '解除登録すると、もうメール通知は受け取れません。',
      subscribe: '購読する',
      subscribeDescription: '電子メールの通知を受け取るには、設定ページで再度購読できます。',
      companyName: '会社名',
      companyLink: '会社リンク',
      companyAddress: '会社住所',
      supportEmail: 'サポートメール',
      emailInvalid: 'メールアドレスが無効です',
      linkInvalid: 'リンクが無効です。httpまたはhttpsで始まる必要があります',
      signature: '署名',
      signatureTooltip: 'メール署名は、下部に表示され、受信者に送信者に関する重要な情報を提供します。'
    },
    comingSoon: 'さらに通知チャンネルが建設中です',
    unsubscribe: '購読解除',
    unsubscribeSucceed: '解約が成功しました',
    unsubscribeFailed: '購読の解除に失敗しました',
    unsubscribeTokenRequired: '退会トークンが必要です',
    unsubscribeTokenExpired: '退会トークンの有効期限が切れています',
    unsubscribeTokenInvalid: '購読解除トークンが無効です',
    installComponentError: '未発見またはアンインストールされたコンポーネント {name} は見つかりません',
    installingComponent: 'コンポーネント {name} のインストール中',
    pushKit: {
      enable: '通知を有効にする',
      endpoint: 'PushKit エンドポイント',
      endpointInvalid: 'PushKit エンドポイントは有効な URL ではありません',
      testSuccess: 'PushKit のテストが正常に送信されました',
      testFailed: 'テスト PushKit 送信に失敗',
      testReceiver: 'PushKit レシーバー',
      testSend: 'プッシュキットの送信をテストする',
      inputTestReceiver: 'テストレシーバーdidを入力してください',
      receiverRequired: 'PushKit レシーバーが必要です',
      pushPath: 'プッシュキットの API パス（デフォルト /api/push）',
      did: 'PushKit Blocklet DID',
      customOptions: 'カスタムオプション'
    },
    notificationDetails: '通知詳細',
    receiver: '受信者',
    sendStatus: {
      success: '送信済み',
      failed: '失敗',
      sentTime: '送信時間：{date}',
      pending: '保留中',
      reason: {
        enabled: 'ユーザーは {channel} 通知を有効にしました',
        disabled: 'ユーザーは {channel} 通知を有効にしていません',
        unavailable: '現在の Blocklet は {channel} 通知を設定していません',
        available: '現在の Blocklet は {channel} 通知を設定しました',
        notSent: '現在のメッセージは {channel} に送信されていません',
        offline: 'ユーザーはオフラインです'
      },
      count: '{count}',
      total: '合計'
    },
    filter: 'フィルタ',
    notificationPreview: '通知プレビュー',
    resend: '再送信',
    resendLimit: '1 日に最大 3 回通知を再送信できます。',
    from: 'から',
    to: 'に',
    body: '体',
    notificationTitle: 'タイトル',
    createdAt: '作成日',
    status: 'ステータス',
    system: 'システム',
    severity: '重大性',
    config: '設定',
    selectChannels: 'チャンネルを選択',
    selectChannelsTip: '再送するチャンネルを選択してください',
    resendFailedOnly: '失敗した Channels にのみ再送',
    statistics: '統計',
    allSender: 'すべての送信者',
    allSeverity: 'すべての重大度',
    severityType: {
      info: '情報',
      success: '成功',
      warning: '警告',
      error: 'エラー'
    },
    clear: 'クリア',
    allDone: '完了です',
    filterType: {
      all: '全て',
      unread: '未読'
    },
    viewMore: 'もっと見る'
  },
  router: {
    routerSetting: 'ドメインとURL',
    certSetting: 'SSL証明書',
    defaultSite: 'デフォルト',
    urlHelperText: 'HTTP/HTTPSで始まらないURLは相対パスと見なされます',
    empty: 'アクションをクリックしてURLマッピングを設定してください',
    healthy: {
      ok: 'ブロックレットまたはサービスが実行中です',
      error: 'Blockletまたはサービスが実行されていないか、インストールされていない'
    },
    service: {
      select: 'ブロックレットサービスの選択（任意）',
      what: 'Blockletサービスは、上流のブロックレットにリダイレクトする前に実行されるパイプラインです'
    },
    nonProvider: {
      title: 'エンジン変更の警告',
      description: 'エンジンを「なし」に変更すると、以前のエンジンが停止されるため、現在のページが正常に動作しない可能性があります。続けますか？',
      confirm: '理解しました、続けてください'
    },
    validation: {
      urlRequired: 'URLが必要です',
      redirectCodeRequired: 'リダイレクトコードが必要です',
      didRequired: 'Blockletが必要です',
      pathPrefixTooLong: 'URLプレフィックスは{length}文字を超えることはできません',
      pathPrefixCannotBeEmpty: 'URLの接頭辞は空にできません',
      domainRequired: 'サーバードメインが必要です',
      invalidUrl: '有効なURLを提供してください',
      pathPrefixRequired: 'URLの接頭辞が必要です',
      redirectUrlRequired: 'リダイレクトURLが必要です',
      rewriteUrlRequired: 'URLの書き換えが必要です'
    },
    domain: {
      addSite: 'サイトを追加する',
      validate: {
        emptyTip: 'サイトのドメインは空にできません',
        suffixTip: 'サイトのドメインには{suffix}を含めることはできません'
      },
      add: {
        title: 'ドメイン名を追加する',
        description: '有効なドメイン名を提供してください',
        confirm: '追加',
        cancel: 'キャンセル',
        blocklet: 'Blockletを選択してください',
        redirect: 'トラフィックをどこにリダイレクトしますか？',
        port: 'リクエストハンドラはどのポートをリッスンする必要がありますか？',
        portTip: 'これは、リクエストハンドラのメインポートにデフォルトで設定されています。これをカスタマイズすることができます',
        type: '交通ハンドラー',
        component: 'コンポーネントを選択',
        pageGroup: 'ページグループ',
        pageGroupTip: 'このコンポーネントは上記にリストされているページの任意のグループをレンダリングすることができます。すべてのページをレンダリングするには空白のままにしてください'
      },
      update: {
        title: 'サイトドメインの更新',
        label: 'サイトドメイン',
        description: '有効なサイトドメインを入力してください'
      },
      setup: {
        tipStart: 'ドメインのDNSレコードを追加してください',
        tipEnd: '以下のガイドラインに従って',
        recordType: 'レコードタイプ',
        recordValue: '記録値'
      },
      verify: {
        ok: 'ドメイン解決は正常です',
        notResolved: 'このドメインは解決できず、アクセスもできません。DNS の設定を確認してください'
      },
      https: {
        ok: 'このドメインはhttpsが有効になっています',
        bad: 'このドメインはhttpsが有効にされていません'
      },
      delete: {
        title: 'サイトを削除する',
        description: '確認すると、既存の"{name}"サイトが削除されます。変更を完了するには、以下に"{name}"を入力し、削除を選択してください。サイトを維持する場合は、キャンセルを選択してください。',
        confirm_desc: '{name}を入力して確認してください'
      }
    },
    domainAlias: {
      nftDomain: 'DID名による自動設定',
      showTipHint: 'ドメイン名の解決方法を設定するにはどうすればよいですか？',
      add: {
        title: '追加ドメイン',
        domainDescription: '有効なドメイン名を提供してください',
        forceTip: 'ドメイン名が既に存在する場合は強制的に追加する',
        helperText: 'HTTPまたはHTTPSのURLが入力された場合、自動的にドメイン名に変換されます。',
        isDidDomainError: 'このドメインはDIDドメインです。自動ドメイン構成の方法を使用して追加してください。',
        tips: 'DID Names またはその他のドメインで購入したドメイン名を入力できます。DID ドメインの場合は、DID ドメイン NFT を提示して続行する必要があります。'
      },
      addCustomDomain: {
        name: 'カスタムドメイン'
      },
      addDomainNFT: {
        showNFT: 'ドメインを自動的に設定する',
        tips: 'DID Namesで購入したドメインを入力できます。DIDドメインが検出された場合、DIDドメインNFTを提示して続行する必要があります。',
        connect: {
          scan: '以下のいずれかの方法で {domain} を {appName} に接続してください',
          confirm: 'アカウントで 確認',
          success: '認証成功',
          title: 'DID 名を {appName} に接続する'
        },
        buyTip: 'DID名は自動的にドメイン名解決を実行するため、手動で設定する必要はありません。 Blocklet は必要に応じてドメイン名の解決レコードを自動的に更新します。まだ DID Domain NFT をお持ちでない場合は、',
        buy: 'DIDドメインを購入',
        topLevelDidDomainHint: 'DIDドメインの場合、最上位ドメイン（例：example.com）を入力すると、自動的にwww.example.comとして設定されます',
        authorizeFailed: 'ドメインNFT情報の取得に失敗しました。再試行してください！'
      },
      delete: {
        title: '削除する',
        description: '「{domain}」を削除した後、そのエイリアスへのアクセスが正しく処理されない場合があります。',
        confirmPlaceholder: '削除するには "{domain}" を入力してください'
      },
      custom: 'カスタムドメイン',
      noCustom: 'カスタムドメインなし',
      noCustomTip: 'ウェブサイトにカスタムドメインが設定されていません。セキュリティ強化とユーザーエクスペリエンス向上のため、独自のカスタムドメインの設定をお勧めします。下記をクリックして開始してください。'
    },
    domainSecurity: {
      title: 'ドメインセキュリティ',
      cors: {
        title: '許可されたCORSドメイン',
        description: '{name}にクロスオリジンリクエストを送信できるドメインリスト、コンマで区切って、「*」を使用して誰でも許可することができますが、推奨されません',
        domainInvalid: '有効なドメイン名のリストを入力してください'
      }
    },
    rule: {
      add: {
        title: 'URLマッピングを追加する',
        confirm: '追加',
        pathPrefix: 'URL のプレフィックスは何ですか？',
        pathPrefixTip: "'/my-prefix' をプレフィックスに設定すると、そのプレフィックスで始まるすべてのリクエストが設定されたブロックにルーティングされます",
        blocklet: 'どのBlockletがそれらのリクエストを処理しますか？',
        port: 'ブロックレットのどのポートがリクエストを処理しますか？',
        portTip: 'これは、Blockletのメインポートにデフォルトで設定されます。Blockletが複数のポートでリッスンする場合は、これをカスタマイズできます',
        responseType: 'レスポンスタイプ',
        responseBody: '応答内容',
        responseBodyTip: '以下に回答内容を貼り付けてください。4096文字を超えてはいけません。',
        responseBodyRequired: 'レスポンスの内容は空にできません'
      },
      delete: {
        title: 'URLマッピングを削除する',
        description: '確認することで、既存の「{name}」URLマッピングが削除されます。変更を完了するには、以下に「{name}」を入力し、削除を選択します。URLマッピングを保持する場合は、キャンセルを選択してください。',
        confirm_desc: '{name} を削除するために入力してください',
        cancel: 'キャンセル'
      },
      update: {
        title: 'URL マッピングの更新',
        confirm: 'はい、アップデート',
        cancel: 'キャンセル'
      }
    },
    cert: {
      name: '証明書名',
      domain: 'ドメイン名',
      action: 'アクション',
      commonName: '一般名',
      boundDomains: 'ドメイン',
      source: 'ソース',
      expired: '期限切れ',
      leftDays: '残り日数',
      issuedOn: '発行日',
      expiryOn: '有効期限',
      fingerprintAlg: '指紋アルゴリズム',
      validityPeriod: '有効期間',
      matchedSites: '一致するサイト',
      upload: 'マニュアルアップロード',
      publicCertHelperText: '公開証明書はダウンロードできます',
      nonPublicCertHelperText: '非公開証明書はダウンロードできません',
      protectedCertHelperText: '保護された証明書は編集できません',
      unprotectedCertHelperText: '保護されていない証明書は編集可能です',
      issuing: '証明書が生成されています',
      sourceTypes: {
        upload: 'マニュアルアップロード',
        lets_encrypt: 'エンコードしましょう'
      },
      table: {
        nodata: 'データなし'
      },
      delete: {
        title: '証明書の削除',
        description: 'ドメイン {domain} の証明書を削除することを確認しますか？削除すると関連サービスに影響が出る可能性があります。削除を続行する前に、安全であることを確認してください。',
        confirm: '確認する'
      },
      nginx: {
        title: '証明書の更新',
        titleAdd: '証明書を追加する',
        pem: 'SSL証明書ファイル',
        pemTip: 'サーバー証明書ファイルをここにドロップしてください。ファイルは".pem"または".crt"で終わる必要があります',
        key: 'プライベートキーファイル',
        keyTip: 'ここにサーバーの秘密鍵ファイルを置いてください。拡張子は".pem"または".key"で終わるはずです',
        confirm: '保存',
        cancel: 'キャンセル',
        invalidFile: '無効なファイルを選択しました',
        empty: 'まだファイルが選択されていません',
        source: 'ソース',
        sourceTypes: {
          upload: 'マニュアルアップロード',
          lets_encrypt: '暗号化しましょう'
        }
      },
      detail: {
        title: '証明書の詳細'
      },
      genLetsEncryptCert: {
        title: "Let's Encryptの証明書を生成する",
        dnsTip: 'ドメイン名が現在のBlockletサーバーにポイントしていることを確認してください。',
        description: '証明書を追加すると、サービスはより安全になり、Blocklet Server は証明書が切れる前に自動で証明書を更新します。'
      }
    },
    gateway: {
      reqLimit: {
        switchLabel: '信頼性の高いパフォーマンスのために、同時リクエストの制限を有効にする',
        rate: 'IPごとの同時リクエスト数を秒間 {rate} に制限 (IP別制限)',
        title: 'リクエスト制限',
        global: 'ゲートウェイで処理される同時リクエスト数を毎秒 {global} 件に制限する（グローバル制限）',
        burstFactor: 'レート制限のバーストファクター。グローバルとIPごとの制限に適用されます (global: {global}, per-IP: {rate})',
        methods: '以下のメソッドに対するIPの同時リクエスト数を制限する',
        burstDelay: 'リクエストのバーストがIPごとの制限を超えた場合の遅延 ({delay} 秒)'
      },
      cacheEnabled: {
        switchLabel: 'ゲートウェイキャッシュを有効にして性能を向上',
        title: 'ゲートウェイ キャッシュ'
      },
      blockPolicy: {
        switchLabel: 'リクエストブロッキング',
        addItem: 'アイテムを追加する',
        blacklistDesc: 'これらのIPからのリクエストは、このサーバーとすべてのブロックレットへのアクセスがブロックされます',
        inputPlaceholder: 'IPアドレス、CIDR範囲、またはURLを入力してください',
        invalidItem: '無効なIPアドレス、CIDR範囲、またはURL',
        title: 'リクエスト ブロック',
        autoBlocking: {
          switchLabel: 'リアルタイム検出で不正リクエストをブロック',
          windowSize: 'リクエストを数える時間ウィンドウのサイズ（秒）',
          windowQuota: 'ウィンドウ内で許可される最大リクエスト数（IPごと）',
          blockDuration: 'ウィンドウ内でクォータを超えた場合、IP でユーザーをブロックする期間（秒）',
          statusCodes: '確認するステータスコード'
        }
      },
      proxyPolicy: {
        switchLabel: 'プロキシの背後で実行中',
        trustRecursive: '代理を再帰的に信頼する',
        trustRecursiveDesc: 'X-Forwarded-For チェーンの最左の IP を使用',
        trustedProxies: '信頼できるプロキシ',
        trustedProxiesDesc: 'これらのIPからのリクエストは、実際のクライアントIPを取得するために信頼されます',
        realIpHeaderLabel: 'クライアント IP ヘッダー',
        realIpHeaderDesc: 'BlockletサーバーがCloudFrontなどのプロキシの背後で実行されている場合、ここでクライアントの実際のIPのヘッダーを設定できます。',
        addItem: 'アイテムを追加する',
        inputPlaceholder: 'IPアドレス、CIDR範囲を入力してください',
        invalidItem: '無効なIPアドレス、CIDR範囲',
        title: 'プロキシポリシー'
      },
      wafPolicy: {
        switchLabel: 'ModSecurity で悪意のあるリクエストを検出してブロック',
        modeDesc: 'Modsecurity のモード（modsecurity モジュールが必要）',
        mode: {
          detectOnly: '検出のみ（リクエストはブロックしません）',
          on: 'オン（リクエストをブロックします）'
        },
        logLevelDesc: 'ModSecurity のログレベル（0-9）、0 は監査ログを無効にすることを意味します',
        inboundAnomalyScoreThresholdDesc: 'インバウンド異常スコアの閾値 (1-100)、値が低いほど厳しい',
        outboundAnomalyScoreThresholdDesc: 'アウトバウンド異常スコアのしきい値 (1-100)、低い値はより厳しいことを意味します',
        docDesc: 'ドキュメントを確認して modsecurity の設定方法を確認してください',
        title: 'ウェブアプリケーションファイアウォール'
      }
    }
  },
  noMatch: {
    desc: 'お探しのページが見つかりません'
  },
  health: {
    connectionErrorTip: 'Blockletサーバーはネットワークに接続できません。Blockletサーバーが停止されているか、ネットワークの問題がないかを確認してください。',
    connectionRecoveryTip: 'ブロックレットサーバの接続が復旧しました',
    connectionStoppedTip: 'Blockletサーバーが停止しました',
    wrongAccessUrlTip: 'Blocklet サーバーのアクセスアドレスが間違っています。正しいアクセスアドレスを使用してください'
  },
  debug: {
    title: 'Blocklet サーバーが稼働しています！'
  },
  team: {
    invite: {
      action: '新規招待',
      setting: '招待設定',
      enabled: 'この設定を無効にすると、新規ユーザーの招待は所有者/管理者のみに制限されます',
      disabled: 'この設定を有効にすると、他のユーザーを招待できるようになります',
      inviter: '招待された者'
    },
    add: '新規追加',
    member: {
      name: '名前',
      passport: 'パスポート',
      passports: 'パスポート',
      lastLogin: '最後のログイン',
      lastLoginIp: '最後のログインIP',
      source: 'ソースを登録',
      source_derived: 'oauthに由来する',
      source_wallet: 'DIDウォレット',
      filter: 'フィルターで絞り込む',
      blockAccess: 'ログイン禁止',
      blockAccessDescription: 'ユーザーはこのアプリケーションに接続できません',
      allowAccess: 'ログインを許可する',
      allowAccessDescription: 'ユーザーはこのアプリケーションに接続できます',
      updateRole: '役割の更新',
      removeUser: 'ユーザーを削除する',
      removeUserDescription: 'ユーザー"{name}"を削除してもよろしいですか？',
      revokePassport: 'パスポートの取り消し',
      revokePassportDescription: 'パスポートが剥奪されると、パスポート所有者はもうそれを使用してログインできません。続行しますか？',
      enablePassport: 'パスポートを有効にする',
      enablePassportDescription: '失効されたパスポートが再度有効になると、パスポートの所有者は再びそれを使用してログインできます。続行しますか？',
      passportPermissionTitle: 'パスポートには以下の権限があります：',
      search: 'メンバー検索',
      onlyApprovedMember: '承認のみ表示',
      inviteDialog: {
        createInviteLink: '招待リンクを生成する',
        createSuccessTip: '招待リンクが正常に作成されました。クリックしてリンクをコピーし、招待されたメンバーに送信してください。この招待リンクは再利用できず、{expireDate} に期限切れとなりますので、ご注意ください。'
      },
      error: {
        passportEmpty: 'パスポートは空にしてはいけません'
      },
      connectedAccounts: '接続されたアカウント',
      connections: '接続',
      federated: '連邦の',
      switch: {
        did: 'DID切り替え',
        profile: 'プロファイル切替',
        passport: 'パスポートを切り替える'
      },
      settings: {
        notification: '通知',
        email: '何かイベントが発生した場合は、私にメールを送ってください',
        wallet: 'いくつかのイベントが発生した場合、私のウォレットに通知を送信してください',
        phone: 'いくつかのイベントが発生した場合は、私にテキストメッセージを送ってください',
        webhook: 'Webhooks',
        add: '新しいウェブフックを追加',
        url: 'カスタムURL',
        slack: 'Slack Webhook',
        tested: 'テストメッセージを送信しました'
      },
      activeUserSessions: 'アクティブユーザーセッション',
      forceLogout: '強制ログアウト',
      forceLogoutDescription: 'このユーザーを強制的にログアウトしますか？',
      openProfile: 'プロフィールを表示',
      removeUserSuccess: 'ユーザーが正常に削除されました',
      forceLogoutRemoveDescription: 'このユーザーを強制ログアウトしますか (すべてのユーザーセッションも削除しますか)？'
    },
    transferNode: {
      name: '権限の移譲',
      inviteDialog: {
        title: 'Transfer Blocklet サーバー',
        tips: {
          progress: 'サーバーの移行操作を完了するためには、受信者が移行要求を承認する必要があります。受け入れられると、現在のパスポートでサーバーに再度ログインすることはできません。',
          newOwnerPermissions: '新しいオーナーは、メンバーやパスポート、ブロックレットなどのすべての操作を管理する権利を持ちます。',
          revoke: '転送の招待状を取り消す場合は、チームの「メンバー-> 招待中」ページで招待リンクを削除できます。'
        },
        createInviteLink: '招待リンクを生成する',
        createSuccessTip: '招待リンクが正常に作成されました。クリックしてリンクをコピーし、招待されたメンバーにリンクを送信してください。この招待リンクは再利用できず、{expireDate} に期限切れになります'
      },
      delegateDialog: {
        title: '認証が必要です',
        scan: 'サーバーの所有権 NFT を転送するために、以下の方法を使用してください。',
        confirm: 'アカウントで確認',
        success: '認証成功'
      }
    },
    transferApp: {
      name: '所有権の移転',
      transferDialog: {
        title: '転送申請',
        tips: {
          progress: 'アプリケーションの転送は、受信者による受け入れが必要です。転送操作を完了するために、受信者がそれを受け入れると、現在のパスポートではもうアプリケーションにログインできません。',
          newOwnerPermissions: '新しいオーナーは、メンバー、パスポート、設定などのすべての操作を管理する権利を持ちます。'
        },
        createTransferLink: '転送リンクを生成する',
        createSuccessTip1: '転送リンクは正常に作成されました。招待された人は<a style="color: rgb(29, 193, 199)" target="_blank" href="https://www.didwallet.io/">DIDウォレット</a>を使用してアプリの所有権を受け取る必要があります',
        createSuccessTip2: '招待メンバーにリンクをコピーして送信してください。この転送リンクは再利用できず、{expireDate} で期限切れになりますのでご注意ください。このダイアログを閉じると転送リンクは一度しか表示されず、再度閲覧することはできません。',
        createSuccessTip3: '振込が成功した後、アプリケーションは自動的に再起動されて変更が有効になります',
        link: '転送リンク',
        iKnow: 'リンクをコピーして保存しました'
      },
      connectDialog: {
        title: '承認が必要です',
        scan: '以下の方法を使用して、アプリケーションによる所有権の譲渡を承認してください。',
        confirm: 'アカウントで 確認',
        success: '認証成功'
      },
      receiveDialog: {
        title: '応募所有権を受け取る',
        scan: '以下の方法を使用してアプリケーションの所有権を受け取ってください。',
        confirm: 'アカウント で 確認',
        success: '所有権の受け取りが成功しました'
      },
      successTitle: 'あなたはこのアプリケーションの新しいオーナーになりました',
      visitDashboard: 'アプリケーションダッシュボードを訪れる',
      description: 'あなたはあなたのアプリケーションの所有権を別のウォレットまたは別の人に譲渡できます。'
    },
    permission: {
      create: {
        title: '権限を作成する',
        description: "フォーマット：<action>_<resource> 例：'ユーザーのクエリ'、'ユーザーの変更'"
      },
      delete: {
        title: '権限の削除',
        description: '{name}を削除しますか？'
      },
      error: {
        actionEmpty: 'アクションは空にできません',
        resourceEmpty: 'リソースは空にできません',
        permissionTooLong: '権限は{length}文字を超えることはできません',
        descriptionTooLong: '{length}文字を超える説明はできません'
      }
    },
    passport: {
      create: {
        title: 'パスポートを作成する',
        titleTip: 'タイトルは作成後に変更できません。14文字以内で推奨されています'
      },
      bind: {
        title: 'バインド許可',
        roleTip: 'バインド後、選択されたパスポートのすべての権限を取得します。',
        permissionTip: 'バインド後、選択された許可が取得されます',
        transferLeftTitle: 'すべての許可',
        transferRightTitle: '許可された権限'
      },
      delete: {
        title: 'パスポートを削除する',
        description: 'ユーザーが保持するパスポートは削除後にすべての権限が失われます。続行しますか？'
      },
      error: {
        titleEmpty: 'タイトルは空にできません',
        titleTooLong: 'タイトルは{length}文字を超えることはできません',
        descriptionEmpty: '説明は空にできません'
      },
      issuance: {
        pending: '保留中',
        create: {
          title: 'リンクを生成する'
        },
        delete: {
          title: 'リンクを受け取るのを削除する',
          description: '削除を確認しますか {link}？'
        }
      },
      issue: 'パスポートの発行',
      disableIssuance: 'パスポートの発行を無効にする',
      enableIssuance: 'パスポート発行を許可する',
      disableIssuanceTip: '「Issue Passport」「Invite Member」およびその他の操作は無効になります。',
      enableIssuanceTip: '"Issue Passport"、"Invite Member"などの操作が有効になります',
      trustedPassportIssuers: '信頼できるパスポート発行機関',
      trustedIssuers: '信頼できる発行者',
      trustedFactories: '信頼できるNFTコレクション',
      trustedFactoriesTip: 'パスポートと交換するために使用できる信頼されたNFTコレクションを管理する',
      searchFactoryAddress: 'コレクション DIDの検索',
      configFactories: '信頼できるNFTコレクションの設定',
      configFactoriesTip: 'ユーザーによるパスポートとのNFTの交換を許可する',
      factoryAddress: 'NFT コレクションのアドレス',
      factory404: 'NFTコレクションが見つかりません',
      factoryAddressTip: 'NFTコレクションのアドレスはArcBlockメインチェーン上に存在している必要があります',
      role: 'パスポートの種類',
      ttl: 'パスポート有効期限のポリシー',
      ttlNever: '期限切れしない',
      ttlMint: 'NFTの購入以来',
      ttlExchange: 'パスポートの交換により',
      ttlNeverTip: 'パスポートは取り消されるまで有効です',
      ttlMintTip: 'パスポートは、NFTが購入された後、指定されたttlまたは取り消しまで有効です',
      ttlExchangeTip: 'パスポートは、ユーザーが正常に交換した瞬間からttlまたは取り消しを指定するまで有効です',
      ttlTip: '365d は365日を意味し、30日や24h も使用することができます',
      validUntil: '有効期限：{date}',
      externalPassport: '外部パスポート',
      notTrustedIssuerTip: '発行元が信頼された発行元のリストに含まれていないため、パスポートを使用することはできません',
      issuerDid: '発行者のDID',
      addNodeToTrustedIssuers: '現在のサーバーを信頼できるパスポート発行者として追加します',
      revoked: '取り消された',
      noPermission: 'この操作を実行する許可がありません',
      shouldNotDeleteCurrent: '現在使用中のパスポートを取り消すことはできません',
      mappingRule: 'マッピングルール',
      defaultRule: 'デフォルトルール',
      search: 'パスポートを検索',
      searchIssuerDid: '発行者のDIDを検索する',
      issueBy: '{name}の問題',
      configColor: 'パスポートの色を設定する',
      configColorTip: 'パスポートの色をカスタマイズする',
      color: 'パスポートの色',
      description: '{teamName} の {title} としてこのパスポートを使用してください',
      displayBuiltin: '組み込み',
      displayCustom: 'カスタム',
      typesTip: 'パスポートの種類をカスタマイズします。コンマで区切ります',
      issuanceDate: '発行日: {date}',
      sourceMaps: {
        recover: '復旧',
        issue: '発行済み',
        invite: '招待',
        trusted: '信頼できる'
      },
      related: '関連パスポート',
      operationLogs: '操作ログ',
      owner: '所有者',
      status: '状態',
      statusMap: {
        valid: '有効',
        revoked: '取り消し',
        expired: '期限切れ'
      },
      view: 'パスポートを管理',
      trustedPassportIssuersTip: 'パスポートを発行できる信頼できるパスポート発行機関を管理する',
      issuanceTime: '発行時間',
      relatedDescription: '現在の旅券は次の旅券から派生しています',
      passportExpireTime: 'Passport の有効期限を設定',
      customExpireTime: 'カスタム有効期限',
      customExpireTimeIsInvalid: 'カスタム有効期限が無効です'
    },
    inviting: {
      link: '招待リンク',
      inviter: '招待人',
      delete: {
        title: '招待リンクを削除',
        description: '{link}を削除しますか？'
      },
      disabledTip: '招待は有効ではありません'
    },
    whoCanAccess: {
      all: {
        title: 'すべての人にアクセス可能'
      },
      owner: {
        title: '所有者のみ'
      },
      invited: {
        title: '招待ユーザーのみ'
      }
    },
    userFollowers: {
      follow: 'フォロー',
      unfollow: 'フォロー解除',
      followersOnly: 'フォロワーのみに表示',
      followers: 'フォロワー',
      following: 'フォロー中',
      emptyFollowing: 'まだフォローしているユーザーはいません。',
      emptyFollowers: 'まだフォロワーがいません。',
      title: 'フォロー中 & フォロワー',
      invitees: '招待客',
      emptyInvitees: 'まだ誰も招待していません。'
    },
    orgs: {
      explain: 'ユーザーが組織を作成・参加し、役割を割り当ててリソースを管理できます。',
      description: '説明',
      deleteConfirm: '{name} を削除してもよろしいですか？',
      members: 'メンバー',
      myCreated: '私が作成した',
      myJoined: '参加済み',
      myCreatedEmpty: 'まだ組織を作成していません。',
      myJoinedEmpty: 'まだどの組織にも参加していません。',
      deleteConfirmDescription: 'この組織を削除すると、それに関連付けられたすべての役割とリソースが削除されます。ユーザーはシステムに残りますが、この組織での役割を失います。この操作は元に戻せません。',
      active: 'アクティブ',
      deleteOrg: '現在の組織を削除',
      invitedAt: '招待日時: {time}',
      joinedAt: '参加日時: {time}',
      createNew: '新しい組織を作成',
      viewAll: 'すべての組織を表示',
      validate: {
        nameEmpty: '名前は空にできません',
        nameTooLong: '名前は {length} 文字を超えてはなりません',
        descriptionTooLong: '説明は {length} 文字を超えられません'
      },
      mutate: {
        title: '{mode} 組織',
        name: '組織名',
        createSuccess: '組織が正常に作成されました',
        updateSuccess: '組織が正常に更新されました',
        orgNotEnabled: '組織は有効になっていません',
        maxMemberPerOrg: '組織は最大{maxMemberPerOrg}人のメンバーを招待できます',
        maxOrgPerUser: '{maxOrgPerUser} つまで組織を作成できます'
      },
      invite: {
        chooseUsersToInvite: '招待する ユーザー を選択',
        success: 'ユーザーに招待を送信しました',
        pleaseSelectUsers: 'ユーザーを選択してください',
        pleaseSelectRole: '役割を選択してください',
        inviteExternalUsers: '外部ユーザーを招待',
        failed: '{count} ユーザーの招待に失敗しました。後でもう一度お試しください',
        remove: 'ユーザーを削除',
        removeSuccess: 'ユーザー が 正常に 削除されました',
        limit: '制限',
        limitTip: 'ユーザーごとの org メンバーと org 数を制限する',
        maxMembers: '組織ごとの最大メンバー数',
        maxOrgs: 'ユーザーあたりの最大組織数',
        maxMembersTip: 'この組織に招待できる最大ユーザー数',
        inviteLinkSendToEmail: '招待リンクをメール ({email}) に送信しました。ご確認ください',
        enterEmailAddress: 'メールアドレスを入力してください',
        inviteTitle: '{orgName} にユーザーを招待する'
      },
      member: {
        removeMemberConfirm: '{name} を削除してもよろしいですか？',
        removeMemberConfirmDescription: '削除後、ユーザーは組織内の役割と権限を失います。この操作は元に戻せません。',
        removeInvitingMember: '{name} の招待をキャンセルしますか？',
        removeInvitingMemberDescription: '削除後、ユーザーは組織に参加できず、再招待が必要です。この操作は元に戻せません。'
      }
    }
  },
  launcher: {
    provider: 'プロバイダー',
    adminUrl: 'URL'
  },
  session: {
    blockAccess: 'このサーバへのアクセスがブロックされています'
  },
  launchBlocklet: {
    appInfo: 'アプリケーション情報',
    appInfoDesc: '申請情報を確認してください',
    author: 'アプリケーションの作者：{author}',
    setup: 'Blockletのセットアップ',
    redirect: 'リダイレクト',
    alreadyRunning: '{name} アプリケーションはすでにこのブロックレットサーバーで実行されています',
    alreadyInstalled: 'アプリケーション {name} はすでにこのBlockletサーバーにインストールされています',
    alreadyExists: 'このアプリケーションはすでに存在しています、リダイレクトしています...',
    purchased: '購入済み',
    purchase: '購入',
    nextStep: '次のステップ',
    agreement: 'ライセンス契約',
    agreeAll: '同意して続ける',
    installing: '{serverName}に{appName}をインストール中です。完了まで数分かかる場合がありますのでお待ちください...',
    redirecting: '{appName} のインストールが成功しました。起動中です...',
    start: 'ローンチ',
    launch: 'Blockletをサーバーにインストールする',
    launchSuccess: '{appName}が無事にローンチされました!',
    installSuccess: 'Blockletが{serverName}に正常にインストールおよび起動されました',
    openInRegistry: 'Blocklet Storeで表示する',
    subTitle: '{serverName}にBlocklet {appName}をインストールする準備ができました',
    installingSubTitle: '{appName} インストール中',
    access: 'アプリを開く',
    viewApplication: 'アプリケーションを表示',
    newVersion: '新しいバージョン',
    newVersionDesc: 'アプリケーションは既に存在していますが、現在のバージョンはアップグレードできます',
    upgradeNow: '今すぐアップグレード',
    later: '後で',
    introduction: '紹介',
    welcome: 'Blocklet ローンチウィザードへようこそ',
    accept: '私はBlockletのEULAに同意します',
    license: 'アプリケーションライセンス',
    next: 'EULAに同意し、続行する',
    purchaseApp: 'Blocklet の購入',
    setupAppDesc: 'Blockletを初期化してください',
    launched: '完了',
    confirmInstall: 'インストールを確認',
    dialog: {
      title: 'アプリの所有者になる',
      nftFreeDescription: '引き続き、アプリスペースNFTを提示し、アプリアカウントを作成してください',
      nftPaidDescription: '続行するために、アプリスペース NFT およびアプリ購入 NFT を表示してください',
      freeDescription: '続行するにはアプリアカウントを作成してください',
      paidDescription: 'アプリの購入NFTを提示し、アプリのアカウントを作成して続行してください',
      confirm: 'アカウントで確認',
      success: '認証成功',
      authorizationTimeout: '認証タイムアウト'
    },
    waiting: {
      verifying: 'アプリのメタデータを確認中...',
      downloading: 'アプリバンドルのダウンロード中...',
      downloadingComponent: '{name}のダウンロード中',
      extractingComponent: '{name} を抽出しています',
      extracting: 'アプリのバンドルを抽出しています...',
      installing: 'アプリコンポーネントのインストール中...',
      installed: 'インストール済み',
      starting: 'アプリを開始します...',
      done: 'あなたのアプリが起動しています...',
      parsing: 'アプリのメタデータ を解析中...',
      initializing: 'アプリの設定を初期化しています...',
      initializingOwner: 'アプリ所有者の初期化中...',
      creatingSecurityRules: 'デフォルトのセキュリティルールを作成しています...',
      assigningDomain: 'デフォルトドメインを割り当て中...',
      waitingForDomain: 'デフォルトドメインが有効になるのを待っています...'
    },
    error: {
      loadMetaFailed: 'アプリ情報の読み込みに失敗しました',
      appMetaNotFound: 'このアプリケーションに関する情報が見つかりません',
      downloadFailed: 'アプリのダウンロードに失敗しました。もう一度お試しください',
      installFailed: 'アプリのインストールに失敗しました。もう一度お試しください',
      startFailed: 'アプリの起動に失敗しました。もう一度お試しください',
      launchFailed: 'アプリケーションの起動に失敗しました。もう一度お試しください',
      installedButStopped: 'アプリは正常にインストールされましたが、起動できません。ブロッキングの問題を解決した後、手動で起動できます',
      installedButError: 'アプリが正常にインストールされましたが、起動できませんでした',
      restoreFailed: 'アプリの復元に失敗しました。もう一度お試しください',
      resourceBlocklet: 'この Blocklet は直接起動することはできません。既存のアプリケーションに追加することはできます。'
    },
    steps: {
      introduction: '紹介',
      installApp: 'アプリケーションをインストールしてください',
      purchaseSpace: 'スペース購入',
      prepareSpace: 'スペースの準備'
    },
    installRelatedComponents: '関連するブロックレットをインストールする',
    canNotInstall: 'インストールできません',
    dockerBlockletCantInstall: 'Blocklet をインストールできません。Blocklet Server が Docker または Docker Network を有効にしていないためです',
    nav: {
      myApps: '私の Apps',
      viewMyApps: '私のアプリを見る'
    },
    withoutWallet: 'DID Wallet接続をスキップ',
    nwFailed: 'ワークフローの取得に失敗しました。',
    alreadyConsumed: '起動セッションが消費されました',
    redirectToLauncherBlocklet: 'Launcher Blocklet にリダイレクトしています'
  },
  issuePassport: {
    title: 'パスポートを受け取る',
    description: '以下の方法で {name} が発行したパスポートを受け取ってください',
    dialog: {
      scan: '以下の方法でパスポートを請求してください',
      confirm: 'アカウントで確認',
      success: 'パスポートがウォレットに正常に追加されました',
      loginWithPassport: 'このパスポートで接続してください',
      autoClose: '{seconds}秒後にページが自動的に閉じます',
      autoJump: '{seconds}s 後にページが自動的にジャンプします'
    }
  },
  lostPassport: {
    title: 'パスポート紛失',
    description: '{name} の所有者は、以下の方法でパスポートを取得できます。メンバーの方は、パスポートの再発行のために所有者にお問い合わせください。',
    return: '検索操作をキャンセルし、ホームページに戻ります',
    receivePassport: 'パスポートを受け取る',
    recoverDialog: {
      title: 'パスポートを復旧',
      scan: '以下の方法でパスポートを取得してください',
      confirm: 'あなたの DID wallet で確認してください',
      success: '正常に取得しました'
    },
    receiveDialog: {
      title: 'パスポートを受領する',
      scan: '以下の方法でパスポートを受け取ってください',
      confirm: 'あなたの DID wallet で確認してください',
      success: '正常に受信しました'
    },
    recoverPassport: 'パスポートを回復する'
  },
  invite: {
    message: '{name}はあなたを{dapp}の{role}に招待します',
    success: 'あなたは {dapp} に参加しました',
    receive: '受け取り',
    validUntil: '有効期限:',
    viewPermission: '表示許可',
    emptyPermission: '空の許可',
    open: '開ける',
    description: {
      step1: '{wallet}をダウンロードして設定してください',
      step2: 'パスポートを受け取るために上記のボタンをクリックしてください',
      step3: '{dapp}で受け取ったパスポートでログインしてください'
    },
    transferNFTDialog: {
      title: 'Blockletサーバー{name}を受け入れる',
      scan: 'ランチャーを接続して、ブロックレットサーバーの受信を完了します。',
      confirm: 'あなたのDIDウォレットでこの操作を確認してください',
      success: '接続成功、サーバーの受信確認待ちです'
    }
  },
  receive: {
    dialog: {
      title: 'パスポートを受領',
      scan: 'パスポートを受け取ったら、それを使ってアプリケーションにログインできます',
      confirm: 'アカウントで確認',
      success: '正常に接続されました',
      scanWithDid: '{did} アカウントを使用してこのパスポートを受け取ってください。パスポートを受け取った後、そのパスポートを使用してアプリケーションにログインできます。'
    }
  },
  navigation: {
    navigation: 'ナビゲーション',
    actionFailed: 'アクションが失敗しました',
    form: {
      themeConfig: 'テーマ設定',
      contentConfig: 'コンテンツ設定',
      title: 'タイトル',
      titlePlaceholder: 'ナビゲーションタイトルを入力してください',
      titleTooLong: 'タイトルの長さは{len}以下である必要があります',
      description: '説明',
      descriptionPlaceholder: 'ナビゲーションの説明を入力してください',
      descriptionTooLong: '説明の長さは{len}以下である必要があります',
      icon: 'デフォルトアイコン',
      iconPlaceholder: 'アイコンを選択してください',
      invalidIcon: 'アイコンは無効です',
      findMoreIcon: '他のアイコンを探す',
      link: 'リンク',
      linkPlaceholder: 'ナビゲーションリンクを入力してください',
      invalidLink: 'リンクが無効です',
      component: 'コンポーネント',
      componentPlaceholder: 'ナビゲーションコンポーネントを選択してください',
      role: '役割',
      rolePlaceholder: 'ナビゲーションの役割を選択してください',
      locale: 'ロケール',
      localePlaceholder: '追加する場所のロケールを入力してください',
      localeExists: '{value} は既に存在しています',
      activeIcon: 'アクティブ アイコン',
      activeColor: 'アクティブカラー',
      color: 'デフォルトカラー',
      colorPlaceholder: '例: #FF0000',
      invalidColor: '色が無効です',
      searchIcons: 'アイコンを検索',
      searchIconsPlaceholder: '例: mdi:home'
    },
    action: {
      add: 'ナビゲーションを追加',
      addSub: 'サブナビゲーションを追加',
      edit: 'ナビゲーションの編集',
      hide: 'ナビゲーションを非表示にする',
      show: 'ナビゲーションを表示する',
      del: 'ナビゲーションを削除',
      new: '新しい',
      noAddSub: 'アンインストールされたコンポーネントはサブナビゲーションを追加できません',
      noEdit: 'アンインストールされたコンポーネントは編集できません',
      noDel: '組み込みのナビゲーションを削除することは許可されていません',
      reset: 'リセット',
      restConfirmTitle: '{section} のナビゲーションをデフォルトにリセットしますか？',
      restConfirmDesc: 'カスタムナビゲーションがクリアされ、デフォルトの項目に戻ります。',
      resetSuccessful: 'リセット成功',
      delTabBarTitle: 'このタブを削除しますか？',
      delTabBarDesc: '削除後、タブはナビゲーションリストから削除されます'
    },
    access: 'アクセス',
    members: 'メンバー',
    passport: 'パスポート',
    analytics: 'アナリティクス',
    dashboard: 'ダッシュボード',
    studio: 'スタジオ',
    blockletService: 'Blockletサービス',
    didConnect: 'DID 接続',
    didSpaces: 'DID Spaces',
    website: 'ウェブサイト',
    operations: '操作',
    integration: '統合',
    developer: '開発者'
  },
  storage: {
    spaces: {
      title: 'DID Spaces',
      tips: 'チップ',
      label: 'DIDスペースゲートウェイを入力してください',
      connected: {
        title: '接続されたDIDスペース',
        tag: '接続されました'
      },
      connectedWithName: 'あなたは{name}に正常に接続しました',
      addedWithName: '「{name}」を正常に追加しました',
      connects: '接続する',
      reconnect: '再接続',
      addressCannotEmpty: 'アドレスは空にできません',
      addressNotValid: '{url} は無効なアドレスではありません',
      authorize: {
        title: '{appName}をDIDスペースに接続してください',
        scan: '以下の方法を使用して、アプリ {appName} が DID Spaces に接続できるようにします',
        success: '接続に成功しました'
      },
      provideNFT: {
        title: '{appName} のDID Spaces NFTを表示してください',
        scan: '以下の方法を使用して、アプリ {appName} で DID Space NFT を表示できるようにします',
        success: '接続に成功しました'
      },
      backup: {
        title: 'バックアップ',
        records: 'バックアップ記録',
        without: 'バックアップなし',
        succeeded: 'バックアップ成功',
        failed: 'バックアップ失敗',
        lastBackup: '最後のバックアップ時間',
        lastBackupTip: '前回のバックアップ成功から {time} 経過しています。 「DID Spaces」タブでバックアップ設定を確認してください',
        noBackup: 'バックアップなし',
        noBackupTip: 'まだバックアップが作成されていません。データと設定を保護するために、定期的なバックアップの設定をお勧めします'
      },
      autoBackup: {
        title: '自動バックアップ',
        enabled: '自動バックアップがオンになっています',
        disabled: '自動バックアップはオフです'
      },
      autoCheckUpdate: {
        title: '新しいバージョンの通知を自動的に確認する',
        enabled: '新しいバージョンの自動チェックがオンになっています。',
        disabled: '自動で新しいバージョンのチェックはオフになっています'
      },
      backupSuccessfully: 'バックアップが成功しました',
      restore: '復元',
      restoreSuccessfully: '正常に復元されました',
      gateway: {
        title: 'ゲートウェイ',
        select: 'DIDスペースを選択してください',
        add: {
          title: 'DIDスペースを追加する',
          label: 'DID SpacesのURLを入力してください',
          failed: 'DIDスペースの追加に失敗しました',
          invalidUrl: '無効なDIDスペースゲートウェイのURL',
          duplicate: '{name} は既にこのBlockletに接続されています'
        },
        delete: {
          title: '切断',
          succeeded: 'DID Space {name}を正常に切断しました',
          failed: '切断に失敗しました',
          failedForSelected: '選択したDID Spaceを切断できません',
          descForBackup: '切断後、このBlockletからDID Spaceへのバックアップはできなくなります。切断してもよろしいですか？\n切断後、{name}に再接続することでバックアップ操作を復元できます。',
          descForStorage: '切断後、このBlockletからDID Spaceへのデータ保存はできなくなります。切断してもよろしいですか？\n切断後、{name}に再接続することでデータ保存操作を復元できます。'
        },
        connect: {
          title: 'DIDスペースを接続する',
          add: '今すぐDID Spacesに接続してください',
          addTips: 'まだどの DID スペースにも接続されていません',
          switch: 'DIDスペースを切り替える',
          switchTips: '{name} に接続されています',
          connected: '接続済み'
        },
        switch: {
          failedForMismatchSpace: '正しい DID スペース {name} に接続してください'
        },
        connectTo: 'DIDスペースに接続する'
      },
      strategy: {
        title: 'バックアップ戦略',
        autoBackup: '自動バックアップ',
        backupNow: '今すぐバックアップ',
        viewBackupFiles: 'バックアップファイルを表示する'
      },
      progress: {
        title: 'バックアップの進捗'
      },
      record: {
        title: 'バックアップレコード',
        emptyData: 'レコードがありません'
      },
      notYet: 'まだバックアップは進行していません...',
      connect: {
        now: '今すぐ接続',
        title: 'DID Space に接続',
        provider: 'バックアップを開始するには DID Space を提供してください',
        providerForStorage: 'データストレージのための DID Space を提供する',
        useWallet: 'DID ウォレットで接続',
        useWalletReconnect: 'DID ウォレットで再接続',
        useSpaceGateway: 'DID Spaces ゲートウェイで接続',
        useSpaceGatewayReconnect: 'DID Spaces ゲートウェイで再接続',
        switchToSpace: 'DID Space に切り替え',
        switchToSpaceSucceeded: 'DID スペース {name} に切り替えました',
        succeeded: 'DID Space に正常に接続しました',
        disconnect: '切断',
        abortBlockletBackup: 'バックアップを中止'
      },
      disconnected: {
        tag: '切断されました',
        reconnectNow: '再接続する'
      }
    },
    appLevel: {
      title: 'アプリレベルのストレージ',
      description: 'アプリで生成されたすべてのデータはこのDID Spaceに保存されます'
    }
  },
  log: {
    lastDays: {
      1: '最新の1日間',
      7: '最後1週間'
    }
  },
  oauth: {
    commonSettings: '共通設定',
    save: '保存',
    saveSuccess: '保存しました',
    saveFailed: '保存に失敗しました',
    issued: '発行済み',
    thirdPartyLogin: 'サードパーティーのログイン',
    alreadyBindOAuth: '既にサードパーティのログインがバインドされています',
    alreadyBindWallet: '既にDIDウォレットにバインドされています',
    auth0: {
      enable: 'Auth0ログインを有効にする',
      domain: 'ドメイン',
      domainDescription: 'Auth0のドメインが必要です',
      clientId: 'クライアントID',
      clientIdDescription: 'Auth0 のクライアントIDが必要です',
      clientSecret: 'クライアントシークレット',
      clientSecretDescription: 'Auth0 OAuth アプリケーションのクライアントシークレットが必要です'
    },
    comingSoon: '他のログイン方法が準備中です',
    moreLogin: 'ログイン',
    federated: 'フェデレーテッドログイン',
    runTest: 'テスト',
    github: {
      enable: 'Github ログインを有効にする',
      clientId: 'クライアント ID',
      clientIdDescription: 'Github OAuth アプリケーションのクライアント ID が必要です',
      clientSecret: 'クライアントシークレット',
      clientSecretDescription: 'Github OAuth アプリケーションの clientSecret 情報は必須です'
    },
    google: {
      enable: 'Googleログインを有効にする',
      clientId: 'クライアントID',
      clientIdDescription: 'Google OAuthアプリケーションのクライアントIDが必要です',
      clientSecret: 'クライアントシークレット',
      clientSecretDescription: 'Google OAuth アプリケーションの clientSecret が必要です'
    },
    apple: {
      enable: 'Appleログインを有効にする',
      teamId: 'チーム ID',
      teamIdDescription: 'Apple OAuth アプリケーションのチーム ID が必要です',
      serviceId: 'サービスID',
      serviceIdDescription: 'Apple OAuth アプリケーションサービス ID が必要です',
      keyId: 'キー ID',
      keyIdDescription: 'Apple OAuth アプリケーションのキー ID が必要です',
      authKey: '認証キー',
      authKeyDescription: 'Apple OAuthアプリケーションの認証キーが必要です',
      bundleId: 'バンドル ID',
      bundleIdDescription: 'Apple OAuth アプリケーションバンドル ID は必須です'
    },
    oauth: '第三者ログイン',
    authorize: 'OAuth 認証',
    client: {
      tab: 'OAuth アプリ',
      name: 'アプリ名',
      clientId: 'クライアント ID',
      clientSecret: 'クライアントシークレット',
      scope: '範囲',
      redirectUris: 'リダイレクト URI',
      grantTypes: 'グラントタイプ',
      responseTypes: 'レスポンスタイプ',
      tokenEndpointAuthMethod: 'トークンエンドポイント認証方法',
      actions: 'アクション',
      grantResponse: '許可と応答',
      metaContact: 'Meta & コンタクト',
      clientUri: 'クライアント URI',
      logoUri: 'ロゴ URI',
      contacts: '連絡先',
      tosUri: '利用規約 URL',
      policyUri: 'ポリシー URI',
      jwksSoftware: 'JWKS & Software',
      jwksUri: 'JWKS URI',
      jwks: 'JWKS',
      softwareId: 'ソフトウェア ID',
      softwareVersion: 'ソフトウェア バージョン',
      clientSecretExpiresAt: 'クライアントシークレットの有効期限',
      clientIdIssuedAt: 'クライアント ID 発行日時',
      oauthAppDetails: 'OAuth アプリの詳細',
      oauthEndpoints: 'OAuth エンドポイント',
      authorizationEndpoint: '承認エンドポイント',
      tokenEndpoint: 'トークンエンドポイント',
      userinfoEndpoint: 'ユーザー情報エンドポイント',
      registrationEndpoint: '登録エンドポイント',
      endSessionEndpoint: 'セッション終了 Endpoint',
      validate: {
        clientName: 'アプリ名は必須です',
        clientNameMinLength: 'アプリ名は3文字以上である必要があります',
        clientUri: 'ホームページのURLが必要です',
        clientUriInvalid: 'http:// または https:// から始まる有効な URL を入力してください',
        redirectUris: '承認コールバックURLが必要です',
        redirectUrisInvalid: 'http:// または https:// から始まる有効なURLを入力してください',
        contacts: 'コンマで区切られた有効なメールアドレスを入力してください',
        tosUri: '利用規約のURLが必要です',
        tosUriInvalid: '有効なURLを入力してください',
        policyUri: 'ポリシーURLが必要です',
        policyUriInvalid: '有効なURLを入力してください',
        jwksUri: 'JWKS URIが必要です',
        jwksUriInvalid: '有効なURLを入力してください',
        jwks: 'JWKSが必要です',
        jwksInvalid: '有効な JWKS を入力してください'
      },
      input: {
        clientName: 'アプリ名',
        clientNamePlaceholder: 'ユーザーが認識し信頼できるもの',
        clientUri: 'ホームページ URL',
        clientUriPlaceholder: 'https://your-app.com',
        redirectUris: '承認コールバック URL',
        redirectUrisPlaceholder: 'https://your-app.com/callback',
        contacts: '連絡メール',
        contactsPlaceholder: 'admin@your-app.com, support@your-app.com',
        permissions: '必要な権限を選択してください',
        tosUri: '利用規約 URL',
        tosUriPlaceholder: 'https://your-app.com/terms',
        policyUri: 'ポリシー URL',
        policyUriPlaceholder: 'https://your-app.com/policy',
        jwksUri: 'JWKS URI',
        jwksUriPlaceholder: 'https://your-app.com/jwks',
        jwks: 'JWKS',
        jwksPlaceholder: 'JSON Web Key Set',
        expireTime: 'セキュリティ強化のため、クライアントシークレットの有効期限を設定してください'
      },
      helperText: {
        clientName: 'ユーザーが認識し信頼できるもの',
        clientUri: 'あなたのアプリケーションのホームページへの完全なURL',
        redirectUris: 'あなたのアプリケーションのコールバック URL',
        contacts: 'アプリケーションの責任者のメールアドレス',
        tosUri: 'あなたのアプリケーションの利用規約のURL。',
        policyUri: 'あなたのアプリケーションのプライバシーポリシーのURL。',
        read: '読んでください  私たちの',
        document: 'OAuth ドキュメント',
        more: '詳細はこちら。'
      },
      delete: {
        title: 'OAuth クライアントを削除',
        description: 'この {clientName} OAuth クライアントを削除してもよろしいですか？'
      },
      register: '新しいOAuthアプリを作成',
      requiredInformation: '必須情報',
      optionalInformation: '任意情報',
      registerButton: '作成',
      logo: 'Logo',
      openRegistration: '登録開始',
      openidConfiguration: 'OpenID 設定',
      createUser: '作成者',
      update: 'OAuth アプリを更新',
      listTitle: 'OAuth アプリによる安全なサードパーティアクセスを有効にする',
      tooltipTitle: 'アプリの組み込みOAuthサーバーを使用して、業界標準プロトコルで外部アプリケーションを承認します。安全でシームレスな認証と委任されたアクセス制御によってユーザーを強化します。',
      empty: 'データを追加していません'
    },
    viewDocument: 'ドキュメント を見る',
    twitter: {
      enable: 'Xログインを有効にする',
      clientId: 'クライアント ID',
      clientIdDescription: 'X OAuth application のクライアント ID が必要です',
      clientSecret: 'クライアントシークレット',
      clientSecretDescription: 'X OAuth アプリの Client Secret が必要です'
    }
  },
  expiration: {
    mobile: {
      tips: {
        success: 'こんにちは, {validity}',
        warning: '{validity}',
        error: '期限切れ'
      },
      loadFailed: '再試行！'
    },
    desktop: {
      tips: {
        success: '購読期限は {validity} 後に切れます',
        warning: '{validity}後にサブスクリプションが期限切れになります',
        error: '定期購読が期限切れです'
      },
      loading: 'サブスクリプションをロード中...',
      loadFailed: '購読情報の読み込みに失敗しました。もう一度やり直してください！',
      nextInvoice: '次の請求書: {date}'
    }
  },
  analytics: {
    trend: 'トレンド',
    detail: 'ブレイクダウン',
    traffic: {
      totalRequests: '総リクエスト数',
      validRequests: '成功したリクエスト',
      failedRequests: '失敗したリクエスト',
      uniqueVisitors: 'ユニークビジター',
      uniqueFiles: 'ユニークなURL',
      uniqueReferrers: 'ユニークなリファラー',
      uniqueNotFound: 'ユニークな404',
      uniqueStaticFiles: 'ユニークな静的ファイル',
      logSize: 'ログサイズ',
      bandwidth: '帯域幅度'
    },
    runtime: '実行時'
  },
  federated: {
    inviteJoinFederatedLogin: '連合ログインへの参加を招待する',
    inviteJoinFederatedLoginDescription: '以下のアドレスをコピーし、フェデレーテッドログインの申請が必要なアプリケーションに入力してください。',
    federatedLogin: '連携ログイン',
    joinFederatedLogin: 'フェデレーテッドログインに参加する',
    joinFederatedLoginDescription: 'マスターブロックレットが提供する連合ログインアドレスを入力して、連合ログインに参加してください',
    quitFederatedLogin: '連邦ログインを終了する',
    quitFederatedLoginDescription: '連携ログインを終了した後、通常のログインは常に利用できます',
    federatedJoinAppUrl: 'appUrlでのフェデレーテッドログイン参加',
    federatedJoinAppUrlRequired: 'フェデレーテッドログイン参加アプリURLを入力してください',
    failedToGetFederatedLoginAppUrl: 'フェデレーテッドログインのアプリURLの取得に失敗しました',
    federatedJoinAppUrlInvalid: 'フェデレーテッドログインのappUrlが無効です',
    siteDetail: 'サイトの詳細',
    approveToJoinLogin: 'フェデレーテッドログインへの参加を承認する',
    approve: 'ログインを有効にする',
    revoke: 'ログインを無効にする',
    enableFederatedLogin: '連携ログインの有効化',
    disableFederatedLogin: 'フェデレーションログインを無効にする',
    enableFederatedLoginDescription: 'フェデレーテッドログインを有効にすると、このサイトは自動でログインされます',
    disableFederatedLoginDescription: 'フェデレーションログインを無効にした後、このサイトは自動ログインされません',
    enableFederatedAutoLogin: '自動ログインを有効にする',
    enableFederatedAutoLoginDescription: '自動ログインを有効にした後、現在統合ログイン状態がある場合、サイトは自動的に統合ログインの身分でログインします。',
    disableFederatedAutoLogin: '自動ログインを無効にする',
    disableFederatedAutoLoginDescription: '自動ログインがオフになった場合、サイトは統一されたログイン情報で自動的にログインしなくなります。そのため、連携ログインの身分で手動でクリックしてログインすることもできます。',
    info: {
      appId: 'APPが行いました',
      appPid: '永久ID',
      migratedFrom: '別名',
      appName: 'Blocklet 名',
      appDescription: 'ブロックの説明',
      appUrl: 'Blocklet の URL',
      appLogo: 'Blocklet ロゴ',
      did: 'ブロック DID',
      serverId: 'BlockletサーバーID',
      serverVersion: 'Blocklet サーバーバージョン',
      version: 'Blockletのバージョン',
      appliedAt: '応募する',
      status: 'ステータス'
    },
    status: {
      pending: '保留中',
      approved: '承認されました',
      rejected: '却下されました',
      revoked: '無効とされた'
    },
    disbandFederatedLogin: '連携ログインの解除',
    disbandFederatedLoginDescription: '連携ログインを解散した後、すべてのメンバーサイトは自動的に連携ログインを終了します。',
    syncConfig: '連携サイト設定を同期',
    quitMember: '削除',
    quitMemberDescription: 'サイト グループから指定されたメンバーを削除',
    removeFederatedLogin: 'メンバーを削除',
    removeFederatedLoginDescription: 'サイトグループから指定されたメンバーを削除した後、メンバーは通常のログインしか使用できません。',
    title: 'フェデレーテッドログインとは何ですか？',
    description: 'フェデレーテッドログインは、複数のシステム間でシングルサインオンを使用して実現できます。他のチームをフェデレーテッドログインに招待したり、他の組織のフェデレーテッドログインプラットフォームに積極的に参加したりできます。',
    link: 'ドキュメントを見る'
  },
  optionsOrder: {
    1: 'オプション1',
    2: 'オプション二'
  },
  securityRule: {
    title: 'セキュリティルール',
    sortByDescription: '一致する優先順位で並べ替え',
    add: 'セキュリティルールの追加',
    edit: 'セキュリティルールの編集',
    view: 'セキュリティルールを表示',
    form: {
      precede: '前に置く',
      pathPattern: 'パスパターン',
      pathPatternPlaceholder: 'パスパターンを入力してください',
      pathPatternErrorText: 'パスのパターンが無効です',
      accessPolicyOrResponseHeaderPolicyRequired: 'アクセス ポリシーまたはレスポンス ヘッダー ポリシーが必要です',
      accessPolicy: 'アクセス ポリシー',
      accessPolicyPlaceholder: 'アクセス ポリシーを選択',
      accessPolicyHelperText: 'アクセス ポリシーを選択してください',
      responseHeaderPolicy: 'レスポンスヘッダポリシー',
      responseHeaderPolicyPlaceholder: 'レスポンスヘッダーポリシーを選択してください',
      responseHeaderPolicyHelperText: 'レスポンスヘッダーポリシーを選択してください',
      remark: '備考',
      remarkPlaceholder: 'コメントを入力してください',
      component: 'コンポーネント',
      componentPlaceholder: 'コンポーネントを選択してください'
    },
    delete: {
      title: 'セキュリティ ルールを削除しますか？',
      description: 'セキュリティルールを削除した後、ルールはもはや有効になりません'
    },
    useless: '無意味なセキュリティルール'
  },
  responseHeaderPolicy: {
    title: 'レスポンスヘッダーポリシー',
    add: 'レスポンスヘッダーポリシーの追加',
    edit: '応答ヘッダーポリシーを編集',
    view: '応答ヘッダーポリシーを表示',
    form: {
      name: '名前',
      namePlaceholder: '名前を入力してください',
      description: '説明',
      descriptionPlaceholder: '説明文を入力してください',
      cors: {
        origin: 'Origin',
        originPlaceholder: '次のドメイン形式をサポートしています: http://www.example.com, http://*.example.com, http://www.example.com:8080, *(ワイルドカードの使用はお勧めしません)',
        originHelperText: 'ドメイン名は http:// または https:// で始まり、1 行に 1 つ、1 行に 1 つのワイルドカード (*)',
        methods: '方法',
        allowedHeaders: '許可されるヘッダー',
        allowedHeadersPlaceholder: '＊の記入が推奨されています。複数行の入力に対応しています。',
        allowedHeadersHelperText: 'サーバーに OPTIONS リクエストを送信するときに、次のリクエストでどのカスタム HTTP リクエスト ヘッダーを使用できるかを通知します。例: x-blocklet-version',
        exposedHeaders: '公開ヘッダー',
        exposedHeadersPlaceholder: '複数行の入力をサポート',
        exposedHeadersHelperText: '例: X-Content-Range, Expose-Headers を構成する',
        maxAge: 'Max-Age (秒)',
        maxAgeHelperText: 'OPTIONSリクエストによって取得した結果の有効期間は、正の整数にする必要があります',
        optionsSuccessStatus: 'オプション 成功 ステータス',
        preflightContinue: '予備検査を続行',
        credentials: '資格情報',
        smartModeHelperText: '現在のアプリケーションのすべてのドメイン名、および、フェデレーションログインサイトグループのすべてのドメイン名を自動的に追加します',
        smartMode: 'スマートモード'
      },
      originOverride: 'オリジンオーバーライド',
      originOverrideHelperText: 'アプリケーション内のロジックがこのレスポンスヘッダーをオーバーライドすることを許可するか?'
    },
    delete: {
      title: '応答ヘッダーポリシーを削除しますか？',
      description: 'レスポンスヘッダポリシーを削除すると、ポリシーは有効にならなくなります'
    }
  },
  accessPolicy: {
    title: 'アクセス ポリシー',
    add: 'アクセス ポリシーを追加',
    edit: 'アクセス権限ポリシーを編集',
    view: 'アクセスポリシーを確認',
    form: {
      name: '名前',
      namePlaceholder: '名前を入力してください',
      description: '説明',
      descriptionPlaceholder: '説明を入力してください',
      roles: 'アクセスロール',
      accessType: 'アクセスタイプ'
    },
    delete: {
      title: 'アクセス ポリシーを削除しますか？',
      description: 'アクセス ポリシーを削除すると、そのポリシーは適用されなくなります。'
    }
  },
  didConnect: {
    genKeyPair: {
      title: 'Blocklet DID を生成',
      scan: '以下の方法を使用して Blocklet DID を生成してください',
      success: 'Blocklet DID が正常に生成されました',
      successDesc: 'Blocklet DID が正常に生成されました (以降の公開には、DID を生成したウォレットを使用する必要があります)'
    },
    common: {
      invalidSession: '無効なセッション',
      invalidSessionDesc: 'セッションが存在しないか期限切れです',
      connectionError: '接続失敗'
    }
  },
  pagination: {
    next: '次ページ',
    previous: '前のページ',
    rowsPerPage: 'ページごとに:',
    displayRows: 'の',
    jumpToPage: 'ページにジャンプ:'
  },
  webhookEndpoint: {
    createWebhook: 'Webhook を作成',
    createWebhookTitle: 'Webhook を作成',
    selectAllEvents: 'すべてのイベントを選択',
    selectAllEventsTooltip: '利用可能なイベントをすべて選択',
    selectedEventsCount: '{count} 件のイベントを選択済み',
    selectedCount: '{count} 個選択済み',
    eventsCount: '{count} 件のイベント',
    saveWebhook: 'Webhook を作成',
    noAvailableEvents: '利用可能なイベントがありません',
    loadingEvents: 'イベントを読み込んでいます...',
    loadingError: 'イベントの読み込みに失敗しました：{message}',
    title: 'Webhooks',
    noWebhooksAdded: 'Webhookが追加されていません',
    validation: {
      urlRequired: 'URLが必要です',
      urlInvalid: '有効なURLを入力してください',
      descriptionRequired: '説明が必要です',
      eventRequired: '少なくとも1つのイベントを選択してください'
    },
    hosted: 'ホストされたエンドポイント',
    add: 'Webhook を作成',
    addTip: 'ライブイベントを受信するための webhook エンドポイントを設定します',
    listen: '聞き取る',
    version: 'API バージョン',
    attempts: 'Webhook 試行',
    url: {
      label: 'URL',
      description: 'Webhook エンドポイント URL'
    },
    description: {
      label: '説明',
      description: 'このエンドポイントの用途に関する任意の説明'
    },
    events: {
      label: 'イベントを選択して聞く',
      description: 'こんにちは, {name}.'
    },
    disabled: '無効',
    enabled: '有効',
    disable: '無効にする',
    enable: '有効にする',
    editWebhookTitle: 'Webhookを更新',
    updateWebhook: 'Webhook を更新',
    waitingForEvents: 'イベントを待機中...',
    loadingMore: '読み込み中...',
    loadMore: 'もっと読み込む',
    response: '返信',
    request: 'リクエスト',
    eventData: 'イベントデータ',
    deleteWebhook: {
      title: 'Webhook を削除しますか？',
      description: 'Webhookを削除後、Webhookはイベントを受信しなくなります'
    },
    success: '成功',
    listTitle: 'Webhooks でリアルタイムイベントデータを送信',
    tooltipTitle: 'リアルタイムイベント通知を送信することで、アプリを外部システムにシームレスに接続します。Webhooks は、ツールやサービス全体で強力な統合と自動化されたワークフローを実現します。',
    triggeredFrom: 'このWebhookは試行からトリガーされました'
  },
  description: {
    environment: '現在の変数は {name} が実行されているときに有効になります。有効にするにはアプリケーションを再起動する必要があります。',
    preferences: '現在の変数は {name} が実行されている時に有効になります。変更は保存後に適用され、アプリケーションの再起動は必要ありません。'
  },
  preferencesFor: '設定 for {name}',
  environmentFor: '環境 for {name}',
  accessKey: 'アクセスキー',
  embed: {
    iconTip: 'クリックしてサブスクリプションの詳細を表示'
  },
  command: 'コマンド',
  mcp: {
    listTitle: 'MCP クライアントからあなたの Blocklet にアクセス',
    tooltipTitle: 'このBlockletでサポートされているMCPサーバーのリストを探索し、サーバーを選択して、クライアントから参加するために必要な接続コマンドをすぐに表示します。',
    endpoint: 'MCP エンドポイント',
    available: '利用可能な MCP サーバー',
    noServer: 'MCPサーバーがありません'
  },
  installCommand: 'インストールコマンド',
  label: {
    add: '追加',
    apply: 'ラベルを適用',
    manage: 'ラベルを管理',
    title: 'ラベル',
    description: '説明',
    systemLabel: 'システムラベル',
    create: 'ラベルを作成',
    edit: 'ラベル を 編集',
    name: '名前',
    slug: 'Slug',
    parentLabel: '親ラベル',
    color: '色',
    search: 'ラベルを検索',
    saveSuccess: 'ラベルが正常に保存されました',
    delete: '削除',
    deleteTip: '「{name}」を削除しますか？',
    deleteSuccess: 'ラベル が 削除 されました',
    reassignTip: 'このラベルが使用中の場合、そのアイテムを別のラベルに再割り当てしてください。',
    reassignTo: '新しいラベルを選択',
    recently: '最近',
    noMatching: 'ラベルが見つかりません',
    noLabels: 'まだラベルが作成されていません',
    filter: 'ラベルをフィルタ',
    createNewLabel: '新しいラベル "{name}" を作成',
    actionLabel: 'ラベルを一括で割り当てる',
    selectLabels: 'ラベルを選択',
    deleteDesc: 'ラベルを削除した後、ラベルはもう使用されません。{name}を削除してもよろしいですか？',
    nameRequired: 'タイトルは必須です',
    nameMinLength: 'タイトルは少なくとも1文字です。',
    nameMaxLength: 'タイトルは64文字未満です。',
    slugRequired: 'Slug は必須です。',
    slugMinLength: 'Slug は少なくとも 1 文字でなければなりません',
    slugMaxLength: 'Slug は 128文字未満である必要があります。',
    descriptionMaxLength: '説明は255文字未満である必要があります。',
    colorRequired: 'カラーは必須です',
    colorInvalid: '色は無効です'
  },
  environmentTips: {
    delete: 'この行を削除してもよろしいですか？',
    deleteForbidden: 'カスタム環境のキーのみ変更可能です。'
  }
};