mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-24 12:44:18 +08:00
3553d05bf0
* feat(provider): support additive provider key lifecycle management
Add `addToLive` parameter to add_provider so callers can opt out of
writing to the live config (e.g. when duplicating an inactive provider).
Add `originalId` parameter to update_provider to support provider key
renames — the old key is removed from live config before the new one
is written.
Frontend: ProviderForm now exposes provider-key input for openclaw app
type, and EditProviderDialog forwards originalId on save. Deep-link
import passes addToLive=true to preserve existing behavior.
* test(provider): add integration tests for additive provider key flows
Cover openclaw provider duplication scenario to verify that a generated
provider key is assigned automatically. Add MSW handlers for
get_openclaw_live_provider_ids, get_openclaw_default_model,
scan_openclaw_config_health, and check_env_conflicts endpoints.
Update EditProviderDialog mock to pass originalId alongside provider.
* fix(openclaw): replace json-five serializer to prevent panic on empty collections
json-five 0.3.1 panics when pretty-printing nested empty maps/arrays.
Switch value_to_rt_value() to serde_json::to_string_pretty() which
produces valid JSON5 output without the panic. Add regression test for
removing the last provider (empty providers map).
* style: apply rustfmt formatting to proxy and provider modules
Reformat chained .header() calls in ClaudeAdapter and StreamCheckService
for consistent alignment. Reorder imports alphabetically in stream_check.
Fix trailing whitespace in transform.rs and merge import lines in
provider/mod.rs.
* style: fix clippy warnings in live.rs and tray.rs
* refactor(provider): simplify live_config_managed and deduplicate tolerant live config checks
- Change live_config_managed from Option<bool> to bool with #[serde(default)]
- Extract repeated tolerant live config query into check_live_config_exists helper
- Fix duplicate key generation to also check live-only provider IDs
- Fix updateProvider test to match new { provider, originalId } call signature
- Add streaming_responses test type annotation for compiler inference
* fix(provider): distinguish legacy providers from db-only when tolerating live config errors
Change `ProviderMeta.live_config_managed` from `bool` to `Option<bool>`
to introduce a three-state semantic:
- `Some(true)`: provider has been written to live config
- `Some(false)`: explicitly db-only, never written to live config
- `None`: legacy data or unknown state (pre-existing providers)
Previously, legacy providers defaulted to `live_config_managed = false`
via `#[serde(default)]`, which silently swallowed live config parse
errors. This could mask genuine configuration issues for providers that
had actually been synced to live config before the field was introduced.
Now, only providers with an explicit `Some(false)` marker tolerate parse
errors; legacy `None` providers surface errors as before, preserving
safety for already-managed configurations.
Also wrap the `ensureQueryData` call for live provider IDs during
duplication in a try/catch so that a malformed config file shows a
user-facing toast instead of silently failing.
Add tests for both the legacy error propagation path and the frontend
duplication failure scenario.
* refactor(provider): unify OMO variant updates with atomic file-then-db writes and rollback
Consolidate the duplicated omo/omo-slim update branches into a single
match on the variant. Write the OMO config file from the in-memory
provider state *before* persisting to the database, so a file-write or
plugin-sync failure leaves the database unchanged. If `add_plugin`
fails after the config file is already written, roll back to the
previous on-disk contents via snapshot/restore.
Also:
- `sync_all_providers_to_live` now skips db-only providers
(`live_config_managed == Some(false)`) instead of attempting to write
them to live config.
- `import_{opencode,openclaw}_providers_from_live` mark imported
providers as `live_config_managed: Some(true)` so they are correctly
recognized during subsequent syncs.
- Extract OmoService helpers: `profile_data_from_provider`,
`snapshot_config_file`, `restore_config_file`, `write_profile_config`,
and the new public `write_provider_config_to_file`.
- Add 9 new tests covering sync skip, legacy restore, import marking,
OMO persistence, file-write failure, and plugin-sync rollback.
* fix(provider): fix additive provider delete/switch regressions and redundancy
- fix(delete): replace stale live_config_managed flag check with
check_live_config_exists so providers written to live before the
flag-flip logic was introduced are still cleaned up on delete
- fix(switch): make write_live_with_common_config return Err instead of
silently returning Ok when config structure is invalid, preventing
live_config_managed from being incorrectly flipped to true
- fix(update): block provider key rename for OMO/OMO Slim categories to
prevent orphaned current-state markers breaking OMO file syncs
- fix(switch): flip live_config_managed to true after successful live
write for DB-only additive providers so sync_all_providers_to_live
includes them on future syncs; roll back live write if DB update fails
- refactor(delete): merge symmetric OMO/OMO-Slim blocks into single
match-on-variant path; hoist DB read to top of additive branch
- refactor(remove_from_live_config): merge OMO/OMO-Slim if/else-if
into single match-on-variant path
- refactor(switch_normal): merge two OMO/OMO-Slim if blocks into one
OpenCode guard with (enable, disable) variant pair
- fix(update): remove redundant duplicate return Ok(true) after OMO
current-state write
* fix(test): use preferred_filename after OMO field rename
The merge from main brought in #1746 which renamed
OmoVariant.filename → preferred_filename, but the test helper
omo_config_path() was not updated, breaking compilation of all
new provider tests.
---------
Co-authored-by: Jason <farion1231@gmail.com>
2270 lines
134 KiB
JSON
2270 lines
134 KiB
JSON
{
|
||
"app": {
|
||
"title": "CC Switch",
|
||
"description": "Claude Code・Codex・Gemini CLI のためのオールインワンアシスタント"
|
||
},
|
||
"common": {
|
||
"add": "追加",
|
||
"edit": "編集",
|
||
"delete": "削除",
|
||
"save": "保存",
|
||
"saving": "保存中...",
|
||
"cancel": "キャンセル",
|
||
"confirm": "確認",
|
||
"close": "閉じる",
|
||
"done": "完了",
|
||
"settings": "設定",
|
||
"about": "バージョン情報",
|
||
"version": "バージョン",
|
||
"loading": "読み込み中...",
|
||
"notInstalled": "未インストール",
|
||
"success": "成功",
|
||
"error": "エラー",
|
||
"unknown": "不明",
|
||
"enterValidValue": "有効な値を入力してください",
|
||
"clear": "クリア",
|
||
"toggleTheme": "テーマを切り替え",
|
||
"format": "フォーマット",
|
||
"formatSuccess": "整形しました",
|
||
"formatError": "整形に失敗しました: {{error}}",
|
||
"copy": "コピー",
|
||
"view": "表示",
|
||
"back": "戻る",
|
||
"refresh": "更新",
|
||
"refreshing": "更新中...",
|
||
"import": "インポート",
|
||
"all": "すべて",
|
||
"search": "検索",
|
||
"reset": "リセット",
|
||
"actions": "操作",
|
||
"deleting": "削除中...",
|
||
"auto": "自動",
|
||
"enabled": "有効",
|
||
"notSet": "未設定"
|
||
},
|
||
"apiKeyInput": {
|
||
"placeholder": "API Key を入力",
|
||
"show": "API Key を表示",
|
||
"hide": "API Key を隠す"
|
||
},
|
||
"jsonEditor": {
|
||
"mustBeObject": "設定はオブジェクト形式の JSON で入力してください(配列や他の型は不可)",
|
||
"invalidJson": "JSON 形式が正しくありません"
|
||
},
|
||
"claudeConfig": {
|
||
"configLabel": "Claude Code settings.json (JSON) *",
|
||
"writeCommonConfig": "共通設定を書き込む",
|
||
"editCommonConfig": "共通設定を編集",
|
||
"editCommonConfigTitle": "共通設定スニペットを編集",
|
||
"commonConfigHint": "「共通設定を書き込む」がオンのとき settings.json にマージされます",
|
||
"fullSettingsHint": "Claude Code の settings.json 全文",
|
||
"extractFromCurrent": "編集内容から抽出",
|
||
"extractNoCommonConfig": "編集内容から抽出できる共通設定がありません",
|
||
"extractFailed": "抽出に失敗しました: {{error}}",
|
||
"saveFailed": "保存に失敗しました: {{error}}",
|
||
"hideAttribution": "AI署名を非表示",
|
||
"enableTeammates": "Teammates モード",
|
||
"enableToolSearch": "Tool Search を有効化",
|
||
"effortHigh": "高強度思考",
|
||
"disableAutoUpgrade": "自動アップグレードを無効化"
|
||
},
|
||
"header": {
|
||
"viewOnGithub": "GitHub で見る",
|
||
"toggleDarkMode": "ダークモードに切り替え",
|
||
"toggleLightMode": "ライトモードに切り替え",
|
||
"addProvider": "プロバイダーを追加",
|
||
"switchToChinese": "中国語に切り替え",
|
||
"switchToEnglish": "英語に切り替え",
|
||
"enterEditMode": "編集モードに入る",
|
||
"exitEditMode": "編集モードを終了"
|
||
},
|
||
"provider": {
|
||
"tabProvider": "プロバイダー",
|
||
"tabUniversal": "統一プロバイダー",
|
||
"noProviders": "まだプロバイダーがありません",
|
||
"noProvidersDescription": "既存の設定がある場合は「現在の設定をインポート」をクリックしてください。すべてのデータが default プロバイダーに安全に保存されます",
|
||
"noProvidersDescriptionSnippet": "API キーとリクエスト URL 以外のデータ(プラグインなど)は共通設定スニペットに保存され、プロバイダー間で共有できます",
|
||
"importCurrent": "現在の設定をインポート",
|
||
"importCurrentDescription": "現在使用中の設定をデフォルトプロバイダーとしてインポート",
|
||
"currentlyUsing": "現在使用中",
|
||
"enable": "有効化",
|
||
"inUse": "使用中",
|
||
"editProvider": "プロバイダーを編集",
|
||
"editProviderHint": "保存すると現在のプロバイダーにすぐ反映されます。",
|
||
"deleteProvider": "プロバイダーを削除",
|
||
"addNewProvider": "新しいプロバイダーを追加",
|
||
"addClaudeProvider": "Claude Code プロバイダーを追加",
|
||
"addCodexProvider": "Codex プロバイダーを追加",
|
||
"addGeminiProvider": "Gemini プロバイダーを追加",
|
||
"addOpenCodeProvider": "OpenCode プロバイダーを追加",
|
||
"addToConfig": "追加",
|
||
"removeFromConfig": "削除",
|
||
"setAsDefault": "デフォルトに設定",
|
||
"isDefault": "現在のデフォルト",
|
||
"inConfig": "追加済み",
|
||
"addProviderHint": "一覧にすばやく切り替えられるよう、ここに情報を入力してください。",
|
||
"editClaudeProvider": "Claude Code プロバイダーを編集",
|
||
"editCodexProvider": "Codex プロバイダーを編集",
|
||
"configError": "設定エラー",
|
||
"notConfigured": "公式サイト用に未設定",
|
||
"applyToClaudePlugin": "Claude プラグインに適用",
|
||
"removeFromClaudePlugin": "Claude プラグインから解除",
|
||
"dragToReorder": "ドラッグで並べ替え",
|
||
"dragHandle": "ドラッグで並べ替え",
|
||
"searchPlaceholder": "名前・メモ・URLで検索...",
|
||
"searchAriaLabel": "プロバイダーを検索",
|
||
"searchScopeHint": "名前・メモ・URL を対象に検索します。",
|
||
"searchCloseHint": "Esc で閉じる",
|
||
"searchCloseAriaLabel": "検索を閉じる",
|
||
"noSearchResults": "一致するプロバイダーがありません。",
|
||
"duplicate": "複製",
|
||
"sortUpdateFailed": "並び順の更新に失敗しました",
|
||
"configureUsage": "利用状況を設定",
|
||
"officialPartner": "公式パートナー",
|
||
"openTerminal": "ターミナルを開く",
|
||
"terminalOpened": "ターミナルを開きました",
|
||
"terminalOpenFailed": "ターミナルを開けませんでした",
|
||
"name": "プロバイダー名",
|
||
"namePlaceholder": "例: Claude Official",
|
||
"websiteUrl": "Web サイト URL",
|
||
"notes": "メモ",
|
||
"notesPlaceholder": "例: 会社用アカウント",
|
||
"configJson": "Config JSON",
|
||
"writeCommonConfig": "共通設定を書き込む",
|
||
"editCommonConfigButton": "共通設定を編集",
|
||
"configJsonHint": "Claude Code の設定をすべて入力してください",
|
||
"editCommonConfigTitle": "共通設定スニペットを編集",
|
||
"editCommonConfigHint": "共通設定スニペットは、この機能をオンにしたすべてのプロバイダーへマージされます",
|
||
"addProvider": "プロバイダーを追加",
|
||
"sortUpdated": "並び順を更新しました",
|
||
"usageSaved": "利用状況の設定を保存しました",
|
||
"usageSaveFailed": "利用状況設定の保存に失敗しました",
|
||
"geminiConfig": "Gemini 設定",
|
||
"geminiConfigHint": ".env 形式で Gemini を設定してください",
|
||
"form": {
|
||
"gemini": {
|
||
"model": "モデル",
|
||
"oauthTitle": "OAuth 認証モード",
|
||
"oauthHint": "Google 公式は OAuth 個人認証を使用するため API Key は不要です。初回利用時にブラウザが開きます。",
|
||
"apiKeyPlaceholder": "Gemini API Key を入力"
|
||
}
|
||
}
|
||
},
|
||
"notifications": {
|
||
"providerAdded": "プロバイダーを追加しました",
|
||
"providerSaved": "プロバイダー設定を保存しました",
|
||
"providerDeleted": "プロバイダーを削除しました",
|
||
"switchSuccess": "切り替え成功!",
|
||
"addToConfigSuccess": "設定に追加しました",
|
||
"removeFromConfigSuccess": "設定から削除しました",
|
||
"switchFailedTitle": "切り替えに失敗しました",
|
||
"switchFailed": "切り替えに失敗しました: {{error}}",
|
||
"autoImported": "既存設定からデフォルトプロバイダーを自動作成しました",
|
||
"addFailed": "プロバイダーの追加に失敗しました: {{error}}",
|
||
"saveFailed": "保存に失敗しました: {{error}}",
|
||
"saveFailedGeneric": "保存に失敗しました。もう一度お試しください",
|
||
"appliedToClaudePlugin": "Claude プラグインに適用しました",
|
||
"removedFromClaudePlugin": "Claude プラグインから削除しました",
|
||
"syncClaudePluginFailed": "Claude プラグインとの同期に失敗しました",
|
||
"skipClaudeOnboardingFailed": "Claude Code の初回確認スキップに失敗しました",
|
||
"clearClaudeOnboardingSkipFailed": "Claude Code の初回確認の復元に失敗しました",
|
||
"updateSuccess": "プロバイダーを更新しました",
|
||
"updateFailed": "プロバイダーの更新に失敗しました: {{error}}",
|
||
"deleteSuccess": "プロバイダーを削除しました",
|
||
"deleteFailed": "プロバイダーの削除に失敗しました: {{error}}",
|
||
"settingsSaved": "設定を保存しました",
|
||
"settingsSaveFailed": "設定の保存に失敗しました: {{error}}",
|
||
"proxyRequiredForSwitch": "このプロバイダーは{{reason}}、プロキシサービスが必要です。先にプロキシを起動してください",
|
||
"proxyReasonCopilot": "GitHub Copilot を Claude プロバイダーとして使用しており",
|
||
"proxyReasonOpenAIChat": "OpenAI Chat API フォーマットを使用しており",
|
||
"proxyReasonOpenAIResponses": "OpenAI Responses API フォーマットを使用しており",
|
||
"proxyReasonFullUrl": "完全 URL 接続モードが有効になっており",
|
||
"openAIFormatHint": "このプロバイダーは OpenAI 互換フォーマットを使用しており、プロキシサービスの有効化が必要です",
|
||
"copilotProxyHint": "GitHub Copilot を Claude プロバイダーとして使用する場合、ローカルプロキシが常に必要です。プロキシは現在のモデルに応じて Chat Completions または Responses を自動的に選択します。",
|
||
"openLinkFailed": "リンクを開けませんでした",
|
||
"openclawModelsRegistered": "モデルが /model リストに登録されました",
|
||
"openclawDefaultModelSet": "デフォルトモデルに設定しました",
|
||
"openclawDefaultModelSetFailed": "デフォルトモデルの設定に失敗しました",
|
||
"openclawNoModels": "モデルが設定されていません",
|
||
"backfillWarning": "切り替え成功しましたが、前のプロバイダーへの設定保存に失敗しました"
|
||
},
|
||
"confirm": {
|
||
"deleteProvider": "プロバイダーを削除",
|
||
"deleteProviderMessage": "プロバイダー「{{name}}」を削除してもよろしいですか?この操作は元に戻せません。",
|
||
"removeProvider": "プロバイダーを解除",
|
||
"removeProviderMessage": "プロバイダー「{{name}}」を設定から解除してもよろしいですか?\n\n解除後、このプロバイダーは無効になりますが、設定データは CC Switch に保持されます。いつでも再追加できます。",
|
||
"proxy": {
|
||
"title": "ローカルプロキシの有効化",
|
||
"message": "ローカルプロキシは上級機能です。有効にする前に、その仕組みを理解していることをご確認ください。\n\n適切な設定方法については、関連ドキュメントまたはプロバイダーにご相談ください。",
|
||
"confirm": "理解しました、有効にする"
|
||
},
|
||
"failover": {
|
||
"title": "フェイルオーバーの有効化",
|
||
"message": "フェイルオーバーは上級機能です。有効にする前に、その仕組みを理解していることをご確認ください。\n\nフェイルオーバーキューでプロバイダーの優先順位を先に設定することをお勧めします。",
|
||
"confirm": "理解しました、有効にする"
|
||
},
|
||
"usage": {
|
||
"title": "使用量クエリの設定",
|
||
"message": "使用量クエリにはカスタムスクリプトまたは API パラメータが必要です。プロバイダーから必要な情報を取得していることをご確認ください。\n\n設定方法が不明な場合は、プロバイダーのドキュメントを先にご確認ください。",
|
||
"confirm": "理解しました、設定する"
|
||
},
|
||
"streamCheck": {
|
||
"title": "モデルヘルスチェック",
|
||
"message": "ヘルスチェックは API リクエストを直接送信してプロバイダーの接続性をテストします。以下の場合、チェックが失敗する可能性があります:\n\n• 公式プロバイダー(OAuth ログイン使用、独立した API キーなし)\n• 一部の中継サービス(リクエストが Claude Code CLI からのものか検証)\n• AWS Bedrock(IAM 署名認証を使用)\n\nチェック失敗はプロバイダーが使用不能であることを意味しません。独立したリクエストでの検証ができないことを示すだけです。アプリ内の実際の動作を基準にしてください。",
|
||
"confirm": "理解しました、続行する"
|
||
},
|
||
"autoSync": {
|
||
"title": "自動同期を有効にする",
|
||
"message": "自動同期を有効にすると、データベースの変更ごとに WebDAV サーバーへ自動アップロードされます。\n\nネットワークトラフィックが大幅に増加する可能性があります。ネットワーク環境と WebDAV サービスが頻繁なデータ転送に対応できることをご確認ください。",
|
||
"confirm": "理解しました、有効にする"
|
||
}
|
||
},
|
||
"settings": {
|
||
"title": "設定",
|
||
"general": "一般",
|
||
"tabGeneral": "一般",
|
||
"tabAdvanced": "詳細",
|
||
"tabProxy": "プロキシ",
|
||
"advanced": {
|
||
"configDir": {
|
||
"title": "設定ディレクトリ",
|
||
"description": "Claude、Codex、Gemini の設定保存パスを管理"
|
||
},
|
||
"proxy": {
|
||
"title": "ローカルプロキシ",
|
||
"description": "プロキシサービスの切り替え、ステータスとポート情報を表示",
|
||
"enableFeature": "メインページにプロキシ切り替えを表示",
|
||
"enableFeatureDescription": "有効にすると、メインページ上部にプロキシとフェイルオーバーの切り替えが表示されます",
|
||
"enableFailoverToggle": "メインページにフェイルオーバー切り替えを表示",
|
||
"enableFailoverToggleDescription": "有効にすると、メインページ上部にフェイルオーバー切り替えが独立して表示されます",
|
||
"running": "実行中",
|
||
"stopped": "停止中"
|
||
},
|
||
"modelTest": {
|
||
"title": "モデルテスト設定",
|
||
"description": "モデルテストで使用するデフォルトモデルとプロンプトを設定"
|
||
},
|
||
"failover": {
|
||
"title": "自動フェイルオーバー",
|
||
"description": "フェイルオーバーキューとサーキットブレーカー戦略を設定"
|
||
},
|
||
"pricing": {
|
||
"title": "コスト計算",
|
||
"description": "各モデルのトークン料金ルールを管理"
|
||
},
|
||
"globalProxy": {
|
||
"title": "グローバル送信プロキシ",
|
||
"description": "CC Switch が外部 API にアクセスする際のプロキシを設定"
|
||
},
|
||
"data": {
|
||
"title": "データ管理",
|
||
"description": "ローカル設定データのインポートとエクスポート"
|
||
},
|
||
"backup": {
|
||
"title": "バックアップと復元",
|
||
"description": "自動バックアップの管理、データベーススナップショットの表示と復元"
|
||
},
|
||
"cloudSync": {
|
||
"title": "クラウド同期",
|
||
"description": "WebDAV でデバイス間のデータを同期"
|
||
},
|
||
"rectifier": {
|
||
"title": "整流器",
|
||
"description": "API リクエストの互換性問題を自動修正",
|
||
"enabled": "整流器を有効化",
|
||
"enabledDescription": "マスタースイッチ、オフにするとすべての整流機能が無効になります",
|
||
"requestGroup": "リクエスト整流",
|
||
"responseGroup": "レスポンス整流",
|
||
"thinkingSignature": "Thinking 署名整流",
|
||
"thinkingSignatureDescription": "Anthropic タイプのプロバイダーが thinking 署名の非互換性や不正なリクエストエラーを返した場合、互換性のない thinking 関連ブロックを自動削除し、同じプロバイダーで 1 回リトライします",
|
||
"thinkingBudget": "Thinking Budget 整流",
|
||
"thinkingBudgetDescription": "Anthropic タイプのプロバイダーが budget_tokens 制約エラー(例: 1024 以上)を返した場合、thinking を enabled に正規化し、thinking 予算を 32000 に設定し、必要に応じて max_tokens を 64000 に引き上げて 1 回リトライします"
|
||
},
|
||
"optimizer": {
|
||
"title": "Bedrock リクエストオプティマイザー",
|
||
"description": "リクエスト送信前に Thinking と Cache の設定を自動最適化(Bedrock プロバイダーのみ有効)",
|
||
"enabled": "オプティマイザーを有効化",
|
||
"thinkingOptimizer": "Thinking 最適化",
|
||
"thinkingOptimizerDescription": "Opus/Sonnet に Adaptive Thinking を自動的に有効化し、レガシーモデルに Extended Thinking を注入",
|
||
"cacheInjection": "Cache 注入",
|
||
"cacheInjectionDescription": "リクエストの重要な位置に Cache ブレークポイントを自動注入し、重複トークンの課金を削減",
|
||
"cacheTtl": "Cache TTL",
|
||
"cacheTtl5m": "5 分",
|
||
"cacheTtl1h": "1 時間"
|
||
},
|
||
"logConfig": {
|
||
"title": "ログ管理",
|
||
"description": "ログ出力レベルを制御",
|
||
"enabled": "ログを有効化",
|
||
"enabledDescription": "マスタースイッチ、オフにするとすべてのログが無効になります",
|
||
"level": "ログレベル",
|
||
"levelDescription": "出力する最小ログレベルを設定",
|
||
"levels": {
|
||
"error": "エラー",
|
||
"warn": "警告",
|
||
"info": "情報",
|
||
"debug": "デバッグ",
|
||
"trace": "トレース"
|
||
},
|
||
"levelHint": "ログレベルの説明:",
|
||
"levelDesc": {
|
||
"error": "重大なエラーのみ",
|
||
"warn": "エラー + 警告",
|
||
"info": "一般的な操作情報(デフォルト)",
|
||
"debug": "SSE ストリームとリクエスト/レスポンスを含む詳細情報",
|
||
"trace": "すべてのログ、最も詳細"
|
||
}
|
||
}
|
||
},
|
||
"language": "言語",
|
||
"languageHint": "切り替えるとすぐにプレビューされ、保存後に永続化されます。",
|
||
"theme": "テーマ",
|
||
"themeHint": "アプリのテーマを選択します。すぐに反映されます。",
|
||
"themeLight": "ライト",
|
||
"themeDark": "ダーク",
|
||
"themeSystem": "システム",
|
||
"importExport": "SQL インポート/エクスポート",
|
||
"importExportHint": "移行や復元用にデータベースの SQL バックアップをインポート/エクスポートします(インポートは CC Switch がエクスポートしたバックアップのみ対応)。",
|
||
"exportConfig": "SQL バックアップをエクスポート",
|
||
"selectConfigFile": "SQL ファイルを選択",
|
||
"noFileSelected": "ファイルが選択されていません。",
|
||
"import": "インポート",
|
||
"importing": "インポート中...",
|
||
"importSuccess": "インポート成功!",
|
||
"importFailed": "インポート失敗",
|
||
"syncLiveFailed": "インポートしましたが、現在のプロバイダーへの同期に失敗しました。手動で再選択してください。",
|
||
"importPartialSuccess": "設定はインポートされましたが、現在のプロバイダーへの同期に失敗しました。",
|
||
"importPartialHint": "ライブ設定を更新するため、もう一度プロバイダーを選択してください。",
|
||
"configExported": "設定をエクスポートしました:",
|
||
"exportFailed": "エクスポートに失敗しました",
|
||
"selectFileFailed": "有効な SQL バックアップファイルを選択してください",
|
||
"configCorrupted": "SQL ファイルが壊れているか形式が無効な可能性があります",
|
||
"backupId": "バックアップ ID",
|
||
"backupManager": {
|
||
"title": "データベースバックアップ",
|
||
"description": "以前の状態に復元するための自動データベーススナップショット",
|
||
"empty": "バックアップはまだありません",
|
||
"restore": "復元",
|
||
"restoring": "復元中...",
|
||
"confirmTitle": "バックアップの復元を確認",
|
||
"confirmMessage": "このバックアップを復元すると現在のデータベースが上書きされます。安全バックアップが先に作成されます。",
|
||
"restoreSuccess": "復元成功!安全バックアップが作成されました",
|
||
"restoreFailed": "復元に失敗しました",
|
||
"safetyBackupId": "安全バックアップID",
|
||
"intervalLabel": "自動バックアップ間隔",
|
||
"retainLabel": "バックアップ保持数",
|
||
"intervalDisabled": "無効",
|
||
"intervalHours": "{{hours}} 時間",
|
||
"intervalDays": "{{days}} 日",
|
||
"rename": "名前変更",
|
||
"renameSuccess": "バックアップの名前を変更しました",
|
||
"renameFailed": "名前変更に失敗しました",
|
||
"namePlaceholder": "新しい名前を入力",
|
||
"createBackup": "今すぐバックアップ",
|
||
"creating": "バックアップ中...",
|
||
"createSuccess": "バックアップが作成されました",
|
||
"createFailed": "バックアップに失敗しました",
|
||
"delete": "削除",
|
||
"deleting": "削除中...",
|
||
"deleteSuccess": "バックアップを削除しました",
|
||
"deleteFailed": "削除に失敗しました",
|
||
"deleteConfirmTitle": "バックアップの削除を確認",
|
||
"deleteConfirmMessage": "このバックアップは完全に削除されます。この操作は取り消せません。"
|
||
},
|
||
"webdavSync": {
|
||
"title": "WebDAV クラウド同期",
|
||
"description": "WebDAV を使ってデバイス間でデータベースとスキル設定を同期します。",
|
||
"baseUrl": "WebDAV サーバー URL",
|
||
"baseUrlPlaceholder": "https://example.com/remote.php/dav/files/user",
|
||
"username": "ユーザー名",
|
||
"usernamePlaceholder": "メールアドレスまたはユーザー名",
|
||
"password": "パスワード",
|
||
"passwordPlaceholder": "アプリパスワード",
|
||
"remoteRoot": "リモートルートディレクトリ",
|
||
"profile": "同期プロファイル名",
|
||
"autoSync": "自動同期",
|
||
"autoSyncHint": "有効にすると、データベース変更のたびに WebDAV へ自動アップロードします。",
|
||
"test": "接続テスト",
|
||
"testing": "テスト中...",
|
||
"testSuccess": "接続成功",
|
||
"testFailed": "接続失敗:{{error}}",
|
||
"save": "設定を保存",
|
||
"saving": "保存中...",
|
||
"saveFailed": "設定の保存に失敗しました:{{error}}",
|
||
"upload": "クラウドにアップロード",
|
||
"uploading": "アップロード中...",
|
||
"uploadSuccess": "WebDAV にアップロードしました",
|
||
"uploadFailed": "アップロードに失敗しました:{{error}}",
|
||
"autoSyncFailedToast": "自動同期に失敗しました:{{error}}",
|
||
"download": "クラウドからダウンロード",
|
||
"downloading": "ダウンロード中...",
|
||
"downloadSuccess": "WebDAV からダウンロード・復元しました",
|
||
"downloadFailed": "ダウンロードに失敗しました:{{error}}",
|
||
"lastSync": "前回の同期:{{time}}",
|
||
"autoSyncLastErrorTitle": "前回の自動同期に失敗しました",
|
||
"autoSyncLastErrorHint": "ネットワークまたは WebDAV 設定を確認してください。次回の変更時に自動再試行されます。",
|
||
"missingUrl": "WebDAV サーバー URL を入力してください",
|
||
"presets": {
|
||
"label": "サービス",
|
||
"jianguoyun": "坚果云",
|
||
"jianguoyunHint": "坚果云の「セキュリティ設定」で「サードパーティアプリパスワード」を生成してください。ログインパスワードは使用しないでください。",
|
||
"nextcloud": "Nextcloud",
|
||
"nextcloudHint": "your-server を Nextcloud サーバーのアドレスに、USERNAME をユーザー名に置き換えてください。",
|
||
"synology": "Synology NAS",
|
||
"synologyHint": "Synology の「パッケージセンター」で WebDAV Server パッケージをインストール・有効化してください。",
|
||
"custom": "カスタム"
|
||
},
|
||
"remoteRootDefault": "デフォルト: cc-switch-sync",
|
||
"profileDefault": "デフォルト: default",
|
||
"saveAndTestSuccess": "設定を保存しました。接続正常です",
|
||
"saveAndTestFailed": "設定を保存しましたが、接続テストに失敗しました:{{error}}",
|
||
"noRemoteData": "クラウドに同期データが見つかりません",
|
||
"incompatibleVersion": "リモートデータに互換性がありません(プロトコル v{{protocolVersion}}、データベース {{dbCompatVersion}})。このクライアントは protocol v2 / db-v6 をサポートしています。",
|
||
"unsaved": "未保存",
|
||
"saved": "保存済み",
|
||
"unsavedChanges": "先に設定を保存してください",
|
||
"saveBeforeSync": "アップロード/ダウンロードを有効にするには、先に設定を保存してください。",
|
||
"fetchingRemote": "リモート情報を取得中...",
|
||
"fetchRemoteFailed": "リモート情報の取得に失敗しました。設定とネットワークを確認してください。",
|
||
"confirmDownload": {
|
||
"title": "クラウドから復元",
|
||
"deviceName": "アップロード元",
|
||
"createdAt": "アップロード日時",
|
||
"path": "リモートパス",
|
||
"dbCompat": "DB 互換レイヤー",
|
||
"artifacts": "内容",
|
||
"legacyNotice": "旧レイアウトのリモートパスを検出しました。復元後、次回のアップロードは新しい v2/db-v6 パスに書き込まれます。",
|
||
"warning": "ローカルのすべてのデータとスキル設定が上書きされます",
|
||
"confirm": "復元を実行"
|
||
},
|
||
"confirmUpload": {
|
||
"title": "クラウドにアップロード",
|
||
"content": "以下の内容を WebDAV サーバーに同期します:",
|
||
"dbItem": "データベース(すべてのプロバイダー設定とデータ)",
|
||
"skillsItem": "スキル(すべてのカスタムスキル)",
|
||
"targetPath": "保存先パス",
|
||
"existingData": "クラウドの既存データ",
|
||
"deviceName": "アップロード元",
|
||
"createdAt": "アップロード日時",
|
||
"path": "リモートパス",
|
||
"dbCompat": "DB 互換レイヤー",
|
||
"warning": "リモートの既存同期データが上書きされます",
|
||
"legacyNotice": "旧レイアウトのリモートデータを検出しました。今回のアップロードは新しい v2/db-v6 パスに書き込み、旧パスは上書きしません。",
|
||
"confirm": "アップロードを実行"
|
||
}
|
||
},
|
||
"autoReload": "データを更新しました",
|
||
"languageOptionChinese": "中文",
|
||
"languageOptionEnglish": "English",
|
||
"languageOptionJapanese": "日本語",
|
||
"windowBehavior": "ウィンドウ動作",
|
||
"windowBehaviorHint": "最小化動作や Claude プラグイン連携を設定します。",
|
||
"launchOnStartup": "起動時に自動実行",
|
||
"launchOnStartupDescription": "システム起動時に CC Switch を自動起動します",
|
||
"silentStartup": "サイレント起動",
|
||
"silentStartupDescription": "起動時にメインウィンドウを表示せず、トレイのみで起動",
|
||
"autoLaunchFailed": "自動起動の設定に失敗しました",
|
||
"minimizeToTray": "閉じるときトレイへ最小化",
|
||
"minimizeToTrayDescription": "チェックすると閉じるボタンでトレイに隠し、オフならアプリを終了します。",
|
||
"enableClaudePluginIntegration": "Claude Code 拡張に適用",
|
||
"enableClaudePluginIntegrationDescription": "オンにすると VS Code の Claude Code 拡張のプロバイダーも同期します",
|
||
"skipClaudeOnboarding": "Claude Code の初回確認をスキップ",
|
||
"skipClaudeOnboardingDescription": "オンにすると Claude Code の初回インストール確認をスキップします",
|
||
"appVisibility": {
|
||
"title": "ホームページ表示",
|
||
"description": "ホームページに表示するアプリを選択",
|
||
"claudeDesc": "Anthropic Claude Code CLI",
|
||
"codexDesc": "OpenAI Codex CLI",
|
||
"geminiDesc": "Google Gemini CLI",
|
||
"opencodeDesc": "OpenCode CLI"
|
||
},
|
||
"skillSync": {
|
||
"title": "スキル同期方式",
|
||
"description": "スキルファイルの同期方法を選択",
|
||
"symlink": "シンボリックリンク",
|
||
"copy": "ファイルコピー",
|
||
"symlinkHint": "シンボリックリンクはディスク容量を節約し、リアルタイム同期を有効にします。注意:Windowsでは管理者権限または開発者モードが必要な場合があります"
|
||
},
|
||
"terminal": {
|
||
"title": "優先ターミナル",
|
||
"description": "ターミナルボタンをクリックした時に使用するターミナルアプリを選択",
|
||
"fallbackHint": "選択したターミナルが利用できない場合、システムのデフォルトが使用されます",
|
||
"options": {
|
||
"macos": {
|
||
"terminal": "Terminal.app",
|
||
"iterm2": "iTerm2",
|
||
"alacritty": "Alacritty",
|
||
"kitty": "Kitty",
|
||
"ghostty": "Ghostty",
|
||
"wezterm": "WezTerm"
|
||
},
|
||
"windows": {
|
||
"cmd": "コマンドプロンプト",
|
||
"powershell": "PowerShell",
|
||
"wt": "Windows Terminal"
|
||
},
|
||
"linux": {
|
||
"gnomeTerminal": "GNOME Terminal",
|
||
"konsole": "Konsole",
|
||
"xfce4Terminal": "Xfce4 Terminal",
|
||
"alacritty": "Alacritty",
|
||
"kitty": "Kitty",
|
||
"ghostty": "Ghostty"
|
||
}
|
||
}
|
||
},
|
||
"configDirectoryOverride": "設定ディレクトリの上書き(詳細)",
|
||
"configDirectoryDescription": "WSL などで Claude Code や Codex を使う場合、ここで設定ディレクトリを WSL 側に合わせるとデータを揃えられます。",
|
||
"appConfigDir": "CC Switch 設定ディレクトリ",
|
||
"appConfigDirDescription": "CC Switch の保存場所をカスタマイズします(クラウド同期フォルダを指定すると設定を同期できます)",
|
||
"browsePlaceholderApp": "例: C:\\\\Users\\\\Administrator\\\\.cc-switch",
|
||
"claudeConfigDir": "Claude Code 設定ディレクトリ",
|
||
"claudeConfigDirDescription": "Claude の設定ディレクトリ(settings.json)を上書きし、claude.json(MCP)も同じ場所に置きます。",
|
||
"codexConfigDir": "Codex 設定ディレクトリ",
|
||
"codexConfigDirDescription": "Codex の設定ディレクトリを上書きします。",
|
||
"geminiConfigDir": "Gemini 設定ディレクトリ",
|
||
"geminiConfigDirDescription": "Gemini の設定ディレクトリ(.env)を上書きします。",
|
||
"opencodeConfigDir": "OpenCode 設定ディレクトリ",
|
||
"opencodeConfigDirDescription": "OpenCode の設定ディレクトリ(opencode.json)を上書きします。",
|
||
"browsePlaceholderClaude": "例: /home/<your-username>/.claude",
|
||
"browsePlaceholderCodex": "例: /home/<your-username>/.codex",
|
||
"browsePlaceholderGemini": "例: /home/<your-username>/.gemini",
|
||
"browsePlaceholderOpencode": "例: /home/<your-username>/.config/opencode",
|
||
"browseDirectory": "ディレクトリを選択",
|
||
"resetDefault": "デフォルトに戻す(保存後に反映)",
|
||
"checkForUpdates": "アップデートを確認",
|
||
"updateTo": "v{{version}} に更新",
|
||
"updating": "更新中...",
|
||
"checking": "確認中...",
|
||
"upToDate": "最新バージョンです",
|
||
"aboutHint": "バージョン情報と更新状況を表示します。",
|
||
"portableMode": "ポータブルモード: 更新は手動ダウンロードが必要です。",
|
||
"updateAvailable": "新しいバージョンがあります: {{version}}",
|
||
"updateBadge": "更新あり",
|
||
"updateFailed": "更新のインストールに失敗しました。ダウンロードページを開こうとしました。",
|
||
"checkUpdateFailed": "更新の確認に失敗しました。時間をおいて再試行してください。",
|
||
"openReleaseNotesFailed": "リリースノートの表示に失敗しました",
|
||
"releaseNotes": "リリースノート",
|
||
"viewReleaseNotes": "このバージョンのリリースノートを見る",
|
||
"viewCurrentReleaseNotes": "現在のバージョンのリリースノートを見る",
|
||
"oneClickInstall": "ワンクリックインストール",
|
||
"oneClickInstallHint": "Claude Code / Codex / Gemini CLI / OpenCode をインストール",
|
||
"localEnvCheck": "ローカル環境チェック",
|
||
"envBadge": {
|
||
"wsl": "WSL",
|
||
"windows": "Win",
|
||
"macos": "macOS",
|
||
"linux": "Linux"
|
||
},
|
||
"wslShell": "Shell",
|
||
"wslShellFlag": "フラグ",
|
||
"installCommandsCopied": "インストールコマンドをコピーしました",
|
||
"installCommandsCopyFailed": "コピーに失敗しました。手動でコピーしてください。",
|
||
"importFailedError": "設定のインポートに失敗しました: {{message}}",
|
||
"exportFailedError": "設定のエクスポートに失敗しました:",
|
||
"restartRequired": "再起動が必要です",
|
||
"restartRequiredMessage": "CC Switch の設定ディレクトリを変更すると再起動が必要です。今すぐ再起動しますか?",
|
||
"restartNow": "今すぐ再起動",
|
||
"restartLater": "後で再起動",
|
||
"restartFailed": "アプリの再起動に失敗しました。手動で閉じて再度開いてください。",
|
||
"devModeRestartHint": "開発モードでは自動再起動をサポートしていません。手動で再起動してください。",
|
||
"saving": "保存中...",
|
||
"globalProxy": {
|
||
"label": "グローバルプロキシ",
|
||
"hint": "すべてのリクエスト(API、Skills ダウンロードなど)をプロキシ経由で送信します。空欄で直接接続。",
|
||
"username": "ユーザー名(任意)",
|
||
"password": "パスワード(任意)",
|
||
"test": "接続テスト",
|
||
"scan": "ローカルプロキシをスキャン",
|
||
"clear": "クリア",
|
||
"scanFailed": "スキャンに失敗しました: {{error}}",
|
||
"saved": "プロキシ設定を保存しました",
|
||
"saveFailed": "保存に失敗しました: {{error}}",
|
||
"testSuccess": "接続成功!遅延 {{latency}}ms",
|
||
"testFailed": "接続に失敗しました: {{error}}",
|
||
"pricingDefaultsTitle": "課金のデフォルト設定",
|
||
"pricingDefaultsDescription": "アプリごとのデフォルト倍率と課金モードを設定します。",
|
||
"pricingAppLabel": "アプリ",
|
||
"defaultCostMultiplierLabel": "デフォルト倍率",
|
||
"defaultCostMultiplierHint": "コスト計算用の倍率(小数対応)。",
|
||
"pricingModelSourceLabel": "課金モード",
|
||
"pricingModelSourceRequest": "リクエストモデル",
|
||
"pricingModelSourceResponse": "レスポンスモデル",
|
||
"pricingSave": "課金設定を保存",
|
||
"pricingSaved": "課金設定を保存しました",
|
||
"pricingSaveFailed": "課金設定の保存に失敗しました: {{error}}",
|
||
"pricingLoadFailed": "課金設定の読み込みに失敗しました: {{error}}",
|
||
"defaultCostMultiplierRequired": "デフォルト倍率は必須です",
|
||
"defaultCostMultiplierInvalid": "デフォルト倍率の形式が正しくありません"
|
||
},
|
||
"saveFailedGeneric": "保存に失敗しました。もう一度お試しください"
|
||
},
|
||
"apps": {
|
||
"claude": "Claude",
|
||
"codex": "Codex",
|
||
"gemini": "Gemini",
|
||
"opencode": "OpenCode",
|
||
"openclaw": "OpenClaw"
|
||
},
|
||
"sessionManager": {
|
||
"title": "セッション管理",
|
||
"subtitle": "Claude Code / Codex / OpenCode / OpenClaw / Gemini CLI のセッションを管理",
|
||
"searchPlaceholder": "内容・ディレクトリ・ID で検索",
|
||
"searchSessions": "セッションを検索",
|
||
"providerFilterAll": "すべて",
|
||
"sessionList": "セッション一覧",
|
||
"manageBatchTooltip": "一括管理に入る",
|
||
"exitBatchModeTooltip": "一括管理を終了",
|
||
"batchModeHint": "削除するセッションを選択",
|
||
"selectForBatch": "セッションを選択",
|
||
"selectedCount": "{{count}} 件を選択中",
|
||
"selectAllFiltered": "一覧を全選択",
|
||
"clearFilteredSelection": "全選択を解除",
|
||
"clearSelection": "クリア",
|
||
"deleteSelected": "削除",
|
||
"batchDeleting": "削除中...",
|
||
"loadingSessions": "セッションを読み込み中...",
|
||
"noSessions": "セッションが見つかりません",
|
||
"selectSession": "セッションを選択してください",
|
||
"noSummary": "概要なし",
|
||
"lastActive": "最終アクティブ",
|
||
"projectDir": "プロジェクトディレクトリ",
|
||
"sourcePath": "元ファイル",
|
||
"copyResumeCommand": "再開コマンドをコピー",
|
||
"resumeCommandCopied": "再開コマンドをコピーしました",
|
||
"openInTerminal": "ターミナルで再開",
|
||
"terminalTargetTerminal": "Terminal",
|
||
"terminalTargetKitty": "kitty",
|
||
"terminalTargetCopy": "コピーのみ",
|
||
"terminalLaunched": "ターミナルを起動しました",
|
||
"openFailed": "ターミナルの起動に失敗しました",
|
||
"resumeFallbackCopied": "再開コマンドをコピーしました(手動で実行してください)",
|
||
"copyProjectDir": "ディレクトリをコピー",
|
||
"projectDirCopied": "ディレクトリをコピーしました",
|
||
"copySourcePath": "元ファイルをコピー",
|
||
"sourcePathCopied": "元ファイルをコピーしました",
|
||
"delete": "セッションを削除",
|
||
"deleting": "削除中...",
|
||
"deleteTooltip": "このローカルセッション記録を完全に削除します",
|
||
"deleteConfirmTitle": "セッションを削除",
|
||
"deleteConfirmMessage": "ローカルセッション「{{title}}」を完全に削除します\nSession ID: {{sessionId}}\n\nこの操作は元に戻せません。",
|
||
"deleteConfirmAction": "セッションを削除",
|
||
"sessionDeleted": "セッションを削除しました",
|
||
"deleteFailed": "セッションの削除に失敗しました: {{error}}",
|
||
"batchDeleteConfirmTitle": "選択したセッションを削除",
|
||
"batchDeleteConfirmMessage": "選択した {{count}} 件のローカルセッションを完全に削除します。\n\nこの操作は元に戻せません。",
|
||
"batchDeleteConfirmAction": "選択した項目を削除",
|
||
"batchDeleteSuccess": "{{count}} 件のセッションを削除しました",
|
||
"batchDeleteFailed": "{{failed}} 件のセッションを削除できませんでした",
|
||
"batchDeleteRequestFailed": "一括削除に失敗しました。しばらくしてから再試行してください。",
|
||
"loadingMessages": "内容を読み込み中...",
|
||
"emptySession": "表示できる内容がありません",
|
||
"clickToCopyPath": "クリックしてパスをコピー",
|
||
"tocTitle": "目次",
|
||
"justNow": "たった今",
|
||
"minutesAgo": "{{count}}分前",
|
||
"hoursAgo": "{{count}}時間前",
|
||
"daysAgo": "{{count}}日前",
|
||
"roleUser": "ユーザー",
|
||
"roleSystem": "システム",
|
||
"roleTool": "ツール",
|
||
"resume": "セッションを再開",
|
||
"resumeTooltip": "ターミナルでこのセッションを再開",
|
||
"noResumeCommand": "このセッションは再開できません",
|
||
"copyCommand": "コマンドをコピー",
|
||
"copyMessage": "メッセージをコピー",
|
||
"messageCopied": "メッセージがコピーされました",
|
||
"conversationHistory": "会話履歴"
|
||
},
|
||
"console": {
|
||
"providerSwitchReceived": "プロバイダー切り替えイベントを受信:",
|
||
"setupListenerFailed": "プロバイダー切り替えリスナーの設定に失敗:",
|
||
"updateProviderFailed": "プロバイダー更新に失敗:",
|
||
"autoImportFailed": "デフォルト設定の自動インポートに失敗:",
|
||
"openLinkFailed": "リンクを開けませんでした:",
|
||
"getVersionFailed": "バージョン情報の取得に失敗:",
|
||
"loadSettingsFailed": "設定の読み込みに失敗:",
|
||
"getConfigPathFailed": "設定パスの取得に失敗:",
|
||
"getConfigDirFailed": "設定ディレクトリの取得に失敗:",
|
||
"detectPortableFailed": "ポータブルモードの検出に失敗:",
|
||
"saveSettingsFailed": "設定の保存に失敗:",
|
||
"updateFailed": "更新に失敗:",
|
||
"checkUpdateFailed": "更新確認に失敗:",
|
||
"openConfigFolderFailed": "設定フォルダを開けませんでした:",
|
||
"selectConfigDirFailed": "設定ディレクトリの選択に失敗:",
|
||
"getDefaultConfigDirFailed": "デフォルト設定ディレクトリの取得に失敗:",
|
||
"openReleaseNotesFailed": "リリースノートを開けませんでした:"
|
||
},
|
||
"providerForm": {
|
||
"supplierName": "プロバイダー名",
|
||
"supplierNameRequired": "プロバイダー名 *",
|
||
"supplierNamePlaceholder": "例: Anthropic Official",
|
||
"websiteUrl": "Web サイト URL",
|
||
"websiteUrlPlaceholder": "https://example.com(任意)",
|
||
"apiEndpoint": "API エンドポイント",
|
||
"apiEndpointPlaceholder": "https://your-api-endpoint.com",
|
||
"codexApiEndpointPlaceholder": "https://your-api-endpoint.com/v1",
|
||
"manageAndTest": "管理・テスト",
|
||
"configContent": "設定内容",
|
||
"officialNoApiKey": "公式ログインは API Key 不要です。そのまま保存できます",
|
||
"codexOfficialNoApiKey": "公式は API Key 不要です。そのまま保存してください",
|
||
"codexApiKeyAutoFill": "ここに入力すれば auth.json も自動で埋まります",
|
||
"apiKeyAutoFill": "ここに入力すれば下の設定も自動で埋まります",
|
||
"cnOfficialApiKeyHint": "💡 API Key のみ入力すれば OK。エンドポイントはプリセット済みです",
|
||
"aggregatorApiKeyHint": "💡 API Key のみ入力すれば OK。エンドポイントはプリセット済みです",
|
||
"thirdPartyApiKeyHint": "💡 API Key のみ入力すれば OK。エンドポイントはプリセット済みです",
|
||
"customApiKeyHint": "💡 カスタム設定では必要な項目をすべて手動で入力してください",
|
||
"omoHint": "💡 OMO 設定は Agent のモデル割り当てを管理し、oh-my-openagent.jsonc / oh-my-opencode.jsonc の両方に対応します",
|
||
"officialHint": "💡 公式プロバイダーはブラウザログインで、API Key は不要です",
|
||
"getApiKey": "API Key を取得",
|
||
"partnerPromotion": {
|
||
"packycode": "PackyCode は CC Switch の公式パートナーです。登録後チャージ時に \"cc-switch\" を入力すると 10% オフ",
|
||
"minimax_cn": "MiniMax Coding Plan 特別価格、Starter ¥9.9 から",
|
||
"minimax_en": "MiniMax Coding Plan Black Friday、Starter が月額 $2(80% OFF)",
|
||
"dmxapi": "Claude Code 専用モデル 66% OFF 実施中!",
|
||
"cubence": "Cubence は CC Switch の公式パートナーです。登録後チャージ時に \"CCSWITCH\" を入力すると、毎回 10% オフ",
|
||
"aigocode": "AIGoCode は CC Switch の公式パートナーです。このリンクから登録すると、初回チャージ時に 10% のボーナスクレジットがもらえます!",
|
||
"rightcode": "RightCode は CC Switch の公式パートナーです。このリンクから登録すると、毎回のチャージに 5% のボーナスクレジットがもらえます!",
|
||
"aicodemirror": "AICodeMirror は CC Switch の公式パートナーです。このリンクから登録すると20%オフ!",
|
||
"aicoding": "AI Coding は CC Switch ユーザー向けに特別割引を提供しています。初回チャージが 10% オフ!",
|
||
"crazyrouter": "CrazyRouter は CC Switch ユーザー向けに特別ボーナスを提供しています。初回チャージで 30% の追加クレジットがもらえます!",
|
||
"sssaicode": "SSAI Code は CC Switch ユーザー向けに特別ボーナスを提供しています。チャージごとに $10 の追加クレジットがもらえます!",
|
||
"siliconflow": "SiliconFlow は CC Switch の公式パートナーです",
|
||
"ucloud": "Compshare は CC Switch ユーザー向けに特別ボーナスを提供しています。このリンクから登録すると、5元のプラットフォーム体験クレジットがもらえます!",
|
||
"micu": "Micu は CC Switch の公式パートナーです",
|
||
"x-code": "XCodeAPI は CC Switch ユーザー向けに特別ボーナスを提供しています。このリンクから登録すると、初回注文で 10% の追加クレジットがもらえます(管理者に連絡して受け取り)",
|
||
"ctok": "公式サイトで CTok コミュニティに参加し、プランを購読してください。"
|
||
},
|
||
"presets": {
|
||
"ucloud": "Compshare"
|
||
},
|
||
"parameterConfig": "パラメーター設定 - {{name}} *",
|
||
"mainModel": "メインモデル(任意)",
|
||
"mainModelPlaceholder": "例: GLM-4.6",
|
||
"fastModel": "高速モデル(任意)",
|
||
"fastModelPlaceholder": "例: GLM-4.5-Air",
|
||
"modelHint": "💡 空欄ならプロバイダーのデフォルトモデルを使用します",
|
||
"apiHint": "💡 Claude API 互換サービスのエンドポイントを入力してください。末尾にスラッシュを付けないでください",
|
||
"apiHintOAI": "💡 OpenAI Chat Completions 互換サービスのエンドポイントを入力してください。末尾にスラッシュを付けないでください",
|
||
"codexApiHint": "💡 OpenAI Response 互換のサービスエンドポイントを入力してください",
|
||
"fillSupplierName": "プロバイダー名を入力してください",
|
||
"fillConfigContent": "設定内容を入力してください",
|
||
"fillParameter": "{{label}} を入力してください",
|
||
"fillTemplateValue": "{{label}} を入力してください",
|
||
"endpointRequired": "公式以外は API エンドポイントが必須です",
|
||
"apiKeyRequired": "公式以外は API Key が必須です",
|
||
"configJsonError": "Config JSON の形式が正しくありません。構文を確認してください",
|
||
"authJsonRequired": "auth.json は JSON オブジェクトで入力してください",
|
||
"authJsonError": "auth.json の形式が正しくありません。JSON を確認してください",
|
||
"fillAuthJson": "auth.json の設定を入力してください",
|
||
"fillApiKey": "OPENAI_API_KEY を入力してください",
|
||
"visitWebsite": "{{url}} を開く",
|
||
"anthropicModel": "メインモデル",
|
||
"anthropicSmallFastModel": "高速モデル",
|
||
"anthropicReasoningModel": "推論モデル(Thinking)",
|
||
"apiFormat": "API フォーマット",
|
||
"apiFormatHint": "プロバイダー API の入力フォーマットを選択",
|
||
"fullUrlLabel": "フル URL",
|
||
"fullUrlEnabled": "フル URL モード",
|
||
"fullUrlDisabled": "フル URL として設定",
|
||
"fullUrlHint": "💡 完全なリクエスト URL を入力してください。このモードはプロキシを有効にして使用する必要があり、プロキシはこの URL をそのまま使用し、パスを追加しません",
|
||
"apiFormatAnthropic": "Anthropic Messages(ネイティブ)",
|
||
"apiFormatOpenAIChat": "OpenAI Chat Completions(プロキシが必要)",
|
||
"apiFormatOpenAIResponses": "OpenAI Responses API(プロキシが必要)",
|
||
"authField": "認証フィールド",
|
||
"authFieldAuthToken": "ANTHROPIC_AUTH_TOKEN(デフォルト)",
|
||
"authFieldApiKey": "ANTHROPIC_API_KEY",
|
||
"authFieldHint": "設定に書き込む認証環境変数名を選択",
|
||
"apiHintResponses": "💡 OpenAI Responses API 互換サービスのエンドポイントを入力してください。末尾にスラッシュを付けないでください",
|
||
"anthropicDefaultHaikuModel": "既定 Haiku モデル",
|
||
"anthropicDefaultSonnetModel": "既定 Sonnet モデル",
|
||
"anthropicDefaultOpusModel": "既定 Opus モデル",
|
||
"modelPlaceholder": "",
|
||
"smallModelPlaceholder": "",
|
||
"haikuModelPlaceholder": "",
|
||
"modelHelper": "任意: 既定で使いたい Claude モデルを指定。空欄ならシステム既定を使用します。",
|
||
"modelMappingLabel": "モデルマッピング",
|
||
"modelMappingHint": "プロバイダーが Claude モデルをネイティブ提供している場合、通常は設定不要です。リクエストを別のモデル名にマッピングする場合のみ設定してください。",
|
||
"advancedOptionsToggle": "高級オプション",
|
||
"advancedOptionsHint": "API フォーマット、認証フィールド、モデルマッピングの設定を含みます。通常はデフォルトのままで問題ありません。",
|
||
"categoryOfficial": "公式",
|
||
"categoryCnOfficial": "オープンソース公式",
|
||
"categoryAggregation": "アグリゲーター",
|
||
"categoryThirdParty": "サードパーティ"
|
||
},
|
||
"copilot": {
|
||
"authSection": "GitHub Copilot 認証",
|
||
"authStatus": "認証状態",
|
||
"authenticated": "認証済み: {{username}}",
|
||
"notAuthenticated": "未認証",
|
||
"loginWithGitHub": "GitHub でログイン",
|
||
"loginRequired": "先に GitHub Copilot にログインしてください",
|
||
"waitingForAuth": "認証を待っています...",
|
||
"enterCode": "ブラウザで以下のコードを入力してください:",
|
||
"logout": "ログアウト",
|
||
"authSuccess": "GitHub Copilot 認証に成功しました",
|
||
"authFailed": "認証に失敗しました: {{error}}",
|
||
"authTimeout": "認証がタイムアウトしました。もう一度お試しください",
|
||
"tokenExpired": "トークンの有効期限が切れました。再認証してください",
|
||
"accountCount": "{{count}} アカウント",
|
||
"selectAccount": "アカウントを選択",
|
||
"selectAccountPlaceholder": "GitHub アカウントを選択",
|
||
"useDefaultAccount": "デフォルトアカウントを使用",
|
||
"loggedInAccounts": "ログイン済みアカウント",
|
||
"defaultAccount": "デフォルト",
|
||
"selected": "選択中",
|
||
"removeAccount": "アカウントを削除",
|
||
"setAsDefault": "デフォルトに設定",
|
||
"addAnotherAccount": "別のアカウントを追加",
|
||
"logoutAll": "すべてのアカウントをログアウト",
|
||
"retry": "再試行",
|
||
"copyCode": "コードをコピー",
|
||
"migrationFailed": "旧認証データの移行に失敗しました: {{error}}",
|
||
"loadModelsFailed": "Copilot モデル一覧の読み込みに失敗しました"
|
||
},
|
||
"endpointTest": {
|
||
"title": "API エンドポイント管理",
|
||
"endpoints": "エンドポイント",
|
||
"autoSelect": "自動選択",
|
||
"testSpeed": "テスト",
|
||
"testing": "テスト中",
|
||
"addEndpointPlaceholder": "https://api.example.com",
|
||
"done": "完了",
|
||
"noEndpoints": "エンドポイントがありません",
|
||
"failed": "失敗",
|
||
"enterValidUrl": "有効な URL を入力してください",
|
||
"invalidUrlFormat": "URL 形式が正しくありません",
|
||
"onlyHttps": "HTTP/HTTPS のみサポートします",
|
||
"urlExists": "この URL はすでに存在します",
|
||
"saveFailed": "保存に失敗しました。もう一度お試しください",
|
||
"loadEndpointsFailed": "カスタムエンドポイントの読み込みに失敗:",
|
||
"addEndpointFailed": "カスタムエンドポイントの追加に失敗:",
|
||
"removeEndpointFailed": "カスタムエンドポイントの削除に失敗:",
|
||
"removeFailed": "削除に失敗しました: {{error}}",
|
||
"updateLastUsedFailed": "エンドポイントの最終使用時間の更新に失敗しました",
|
||
"pleaseAddEndpoint": "まずエンドポイントを追加してください",
|
||
"testUnavailable": "速度テストを実行できません",
|
||
"noResult": "結果がありません",
|
||
"testFailed": "速度テストに失敗しました: {{error}}",
|
||
"empty": "エンドポイントがありません"
|
||
},
|
||
"providerAdvanced": {
|
||
"testConfig": "モデルテスト設定",
|
||
"useCustomConfig": "個別設定を使用",
|
||
"testConfigDesc": "このプロバイダーに個別のモデルテストパラメータを設定します。無効の場合はグローバル設定を使用します。",
|
||
"testModel": "テストモデル",
|
||
"testModelPlaceholder": "空白の場合はグローバル設定を使用",
|
||
"timeoutSecs": "タイムアウト(秒)",
|
||
"testPrompt": "テストプロンプト",
|
||
"degradedThreshold": "低下閾値(ミリ秒)",
|
||
"maxRetries": "最大リトライ回数",
|
||
"proxyConfig": "プロキシ設定",
|
||
"useCustomProxy": "個別プロキシを使用",
|
||
"proxyConfigDesc": "このプロバイダーに個別のネットワークプロキシを設定します。無効の場合はシステムプロキシまたはグローバル設定を使用します。",
|
||
"proxyUsername": "ユーザー名(任意)",
|
||
"proxyPassword": "パスワード(任意)",
|
||
"pricingConfig": "課金設定",
|
||
"useCustomPricing": "個別設定を使用",
|
||
"pricingConfigDesc": "このプロバイダーに個別の課金パラメータを設定します。無効の場合はグローバル設定を使用します。",
|
||
"costMultiplier": "コスト倍率",
|
||
"costMultiplierPlaceholder": "空白の場合はグローバル設定を使用(1)",
|
||
"costMultiplierHint": "実際のコスト = 基本コスト × 倍率、1.5 などの小数をサポート",
|
||
"pricingModelSourceLabel": "課金モード",
|
||
"pricingModelSourceInherit": "グローバル設定を継承",
|
||
"pricingModelSourceRequest": "リクエストモデル",
|
||
"pricingModelSourceResponse": "レスポンスモデル",
|
||
"pricingModelSourceHint": "リクエストモデルまたはレスポンスモデルで価格を照合するかを選択"
|
||
},
|
||
"codexConfig": {
|
||
"authJson": "auth.json (JSON) *",
|
||
"authJsonPlaceholder": "{\n \"OPENAI_API_KEY\": \"sk-your-api-key-here\"\n}",
|
||
"authJsonHint": "Codex の auth.json 設定内容",
|
||
"configToml": "config.toml (TOML)",
|
||
"configTomlHint": "Codex の config.toml 設定内容",
|
||
"writeCommonConfig": "共通設定を書き込む",
|
||
"editCommonConfig": "共通設定を編集",
|
||
"editCommonConfigTitle": "Codex 共通設定スニペットを編集",
|
||
"commonConfigHint": "「共通設定を書き込む」がオンの場合、config.toml の末尾に追記されます",
|
||
"apiUrlLabel": "API リクエスト URL",
|
||
"extractFromCurrent": "編集内容から抽出",
|
||
"extractNoCommonConfig": "編集内容から抽出できる共通設定がありません",
|
||
"extractFailed": "抽出に失敗しました: {{error}}",
|
||
"saveFailed": "保存に失敗しました: {{error}}",
|
||
"modelNameHint": "使用するモデルを指定します。config.toml に自動更新されます",
|
||
"modelName": "モデル名",
|
||
"modelNamePlaceholder": "例: gpt-5-codex",
|
||
"contextWindow1M": "1M コンテキストウィンドウ",
|
||
"autoCompactLimit": "自動圧縮しきい値",
|
||
"autoCompactLimitHint": "コンテキストトークン数がこのしきい値に達すると履歴を自動圧縮"
|
||
},
|
||
"geminiConfig": {
|
||
"envFile": "環境変数 (.env)",
|
||
"envFileHint": ".env 形式で Gemini の環境変数を設定",
|
||
"configJson": "設定ファイル (config.json)",
|
||
"configJsonHint": "Gemini 拡張パラメーターを JSON 形式で設定(任意)",
|
||
"writeCommonConfig": "共通設定を書き込む",
|
||
"editCommonConfig": "共通設定を編集",
|
||
"editCommonConfigTitle": "Gemini 共通設定スニペットを編集",
|
||
"commonConfigHint": "このスニペットは Gemini の .env に書き込みます(GOOGLE_GEMINI_BASE_URL、GEMINI_API_KEY は使用できません)",
|
||
"extractFromCurrent": "編集内容から抽出",
|
||
"extractNoCommonConfig": "編集内容から抽出できる共通設定がありません",
|
||
"extractFailed": "抽出に失敗しました: {{error}}",
|
||
"saveFailed": "保存に失敗しました: {{error}}",
|
||
"extractedConfigInvalid": "抽出した設定のフォーマットが不正です",
|
||
"invalidJsonFormat": "共通設定スニペットの形式が不正です(有効な JSON でなければなりません)",
|
||
"commonConfigInvalidKeys": "共通設定スニペットに GOOGLE_GEMINI_BASE_URL または GEMINI_API_KEY を含めることはできません(検出: {{keys}})",
|
||
"commonConfigInvalidValues": "共通設定スニペットの値は文字列である必要があります",
|
||
"noCommonConfigToApply": "共通設定スニペットが空、または適用できる項目がありません",
|
||
"configMergeFailed": "設定のマージに失敗しました: {{error}}",
|
||
"configReplaceFailed": "設定の置換に失敗しました: {{error}}"
|
||
},
|
||
"opencode": {
|
||
"npmPackage": "API フォーマット",
|
||
"selectPackage": "API フォーマットを選択",
|
||
"npmPackageHint": "AI サービスの API フォーマットを選択",
|
||
"baseUrl": "Base URL",
|
||
"baseUrlHint": "カスタム API エンドポイント URL",
|
||
"models": "モデル設定",
|
||
"modelsHint": "利用可能なモデルとその表示名を設定",
|
||
"addModel": "モデルを追加",
|
||
"modelId": "モデル ID",
|
||
"modelName": "表示名",
|
||
"noModels": "モデルが設定されていません",
|
||
"modelsRequired": "モデルを少なくとも1つ追加してください",
|
||
"providerKey": "プロバイダーキー",
|
||
"providerKeyPlaceholder": "my-provider",
|
||
"providerKeyHint": "設定ファイルの一意の識別子です。小文字、数字、ハイフンのみ使用できます。",
|
||
"providerKeyLockedHint": "このプロバイダーは既にアプリ設定へ追加されているため、キーは変更できません。",
|
||
"providerKeyRequired": "プロバイダーキーを入力してください",
|
||
"providerKeyDuplicate": "このキーは既に使用されています",
|
||
"providerKeyInvalid": "無効な形式です。小文字、数字、ハイフンのみ使用できます。",
|
||
"extraOptions": "追加オプション",
|
||
"extraOptionsHint": "timeout、setCacheKey などの SDK オプションを設定。値は自動的に適切な型(数値、真偽値など)に変換されます。",
|
||
"addExtraOption": "追加",
|
||
"extraOptionKey": "キー名",
|
||
"extraOptionValue": "値",
|
||
"extraOptionKeyPlaceholder": "timeout",
|
||
"extraOptionValuePlaceholder": "600000",
|
||
"noExtraOptions": "追加オプションはありません",
|
||
"noModelOptions": "モデルオプション、+ をクリックして追加",
|
||
"modelExtraFields": "モデルプロパティ",
|
||
"noModelExtraFields": "モデルプロパティ(variants、cost など)、+ をクリックして追加",
|
||
"modelExtraFieldKeyPlaceholder": "variants",
|
||
"sdkOptions": "SDK オプション",
|
||
"modelOptionKeyPlaceholder": "provider",
|
||
"modelOptionValuePlaceholder": "{\"order\": [\"baseten\"]}"
|
||
},
|
||
"providerPreset": {
|
||
"label": "プロバイダータイプ",
|
||
"custom": "カスタム設定",
|
||
"other": "その他",
|
||
"hint": "プリセットを選んだ後でも、下のフィールドで調整できます。"
|
||
},
|
||
"usage": {
|
||
"title": "利用統計",
|
||
"subtitle": "AI モデルの利用状況とコスト統計を表示",
|
||
"today": "24時間",
|
||
"last7days": "7日間",
|
||
"last30days": "30日間",
|
||
"totalRequests": "総リクエスト数",
|
||
"totalCost": "総コスト",
|
||
"cost": "コスト",
|
||
"perMillion": "(100万あたり)",
|
||
"trends": "利用トレンド",
|
||
"rangeToday": "直近24時間 (時間別)",
|
||
"rangeLast7Days": "過去7日間",
|
||
"rangeLast30Days": "過去30日間",
|
||
"totalTokens": "総トークン数",
|
||
"cacheTokens": "キャッシュトークン",
|
||
"requestLogs": "リクエストログ",
|
||
"providerStats": "プロバイダー統計",
|
||
"modelStats": "モデル統計",
|
||
"time": "時間",
|
||
"provider": "プロバイダー",
|
||
"billingModel": "課金モデル",
|
||
"inputTokens": "入力",
|
||
"outputTokens": "出力",
|
||
"cacheReadTokens": "キャッシュヒット",
|
||
"cacheCreationTokens": "キャッシュ作成",
|
||
"timingInfo": "応答時間/TTFT",
|
||
"status": "ステータス",
|
||
"multiplier": "倍率",
|
||
"requestModel": "リクエストモデル",
|
||
"responseModel": "レスポンスモデル",
|
||
"noData": "データなし",
|
||
"unknownProvider": "不明なプロバイダー",
|
||
"stream": "ストリーム",
|
||
"nonStream": "非ストリーム",
|
||
"totalRecords": "全 {{total}} 件",
|
||
"modelPricing": "モデル料金",
|
||
"loadPricingError": "料金データの読み込みに失敗しました",
|
||
"modelPricingDesc": "各モデルのトークンコストを設定",
|
||
"noPricingData": "料金データがありません。「追加」をクリックしてモデル料金を設定してください。",
|
||
"model": "モデル",
|
||
"displayName": "表示名",
|
||
"inputCost": "入力コスト",
|
||
"outputCost": "出力コスト",
|
||
"cacheReadCost": "キャッシュヒット",
|
||
"cacheWriteCost": "キャッシュ作成",
|
||
"deleteConfirmTitle": "削除の確認",
|
||
"deleteConfirmDesc": "このモデル料金を削除しますか?この操作は元に戻せません。",
|
||
"queryFailed": "照会に失敗しました",
|
||
"refreshUsage": "利用状況を更新",
|
||
"planUsage": "プラン利用状況",
|
||
"invalid": "期限切れ",
|
||
"total": "合計:",
|
||
"used": "使用:",
|
||
"remaining": "残り:",
|
||
"justNow": "たった今",
|
||
"minutesAgo": "{{count}} 分前",
|
||
"hoursAgo": "{{count}} 時間前",
|
||
"daysAgo": "{{count}} 日前",
|
||
"multiplePlans": "{{count}} プラン",
|
||
"expand": "展開",
|
||
"collapse": "折りたたむ",
|
||
"modelIdPlaceholder": "例: claude-3-5-sonnet-20241022",
|
||
"displayNamePlaceholder": "例: Claude 3.5 Sonnet",
|
||
"appType": "アプリ種別",
|
||
"allApps": "すべてのアプリ",
|
||
"statusCode": "ステータスコード",
|
||
"searchProviderPlaceholder": "プロバイダーを検索...",
|
||
"searchModelPlaceholder": "モデルを検索...",
|
||
"timeRange": "期間",
|
||
"input": "Input",
|
||
"output": "Output",
|
||
"cacheWrite": "作成",
|
||
"cacheRead": "ヒット",
|
||
"baseCost": "基本",
|
||
"costMultiplier": "コスト倍率",
|
||
"withMultiplier": "倍率込み",
|
||
"requestDetail": "リクエスト詳細",
|
||
"requestNotFound": "リクエストが見つかりません",
|
||
"basicInfo": "基本情報",
|
||
"tokenUsage": "Token 使用量",
|
||
"cacheCreationCost": "キャッシュ作成コスト",
|
||
"costBreakdown": "コスト明細",
|
||
"performance": "パフォーマンス",
|
||
"latency": "レイテンシー",
|
||
"errorMessage": "エラーメッセージ",
|
||
"requests": "リクエスト数",
|
||
"tokens": "トークン",
|
||
"avgCost": "平均コスト",
|
||
"avgLatency": "平均レイテンシ",
|
||
"successRate": "成功率",
|
||
"requestId": "リクエスト ID",
|
||
"never": "なし",
|
||
"modelId": "モデル ID",
|
||
"modelIdRequired": "モデル ID は必須です",
|
||
"inputCostPerMillion": "入力コスト(100万トークンあたり、USD)",
|
||
"outputCostPerMillion": "出力コスト(100万トークンあたり、USD)",
|
||
"invalidPrice": "価格は負でない数値である必要があります",
|
||
"invalidTimeRange": "開始/終了時刻を完全に選択してください",
|
||
"invalidTimeRangeOrder": "開始時刻は終了時刻より前である必要があります",
|
||
"timeRangeTooLarge": "時間範囲が大きすぎます。範囲を縮小してください",
|
||
"addPricing": "価格設定を追加",
|
||
"editPricing": "価格設定を編集",
|
||
"pricingAdded": "価格設定が追加されました",
|
||
"pricingUpdated": "価格設定が更新されました",
|
||
"cacheReadCostPerMillion": "キャッシュ読み取りコスト(100万トークンあたり、USD)",
|
||
"cacheCreationCostPerMillion": "キャッシュ書き込みコスト(100万トークンあたり、USD)"
|
||
},
|
||
"usageScript": {
|
||
"title": "利用状況を設定",
|
||
"enableUsageQuery": "利用状況照会を有効にする",
|
||
"presetTemplate": "プリセットテンプレート",
|
||
"requestUrl": "リクエスト URL",
|
||
"requestUrlPlaceholder": "例: https://api.example.com",
|
||
"method": "HTTP メソッド",
|
||
"templateCustom": "カスタム",
|
||
"templateGeneral": "General",
|
||
"templateNewAPI": "NewAPI",
|
||
"templateCopilot": "GitHub Copilot",
|
||
"copilotAutoAuth": "OAuth 認証を自動使用、手動設定不要",
|
||
"resetDate": "リセット日",
|
||
"premiumRequests": "Premium リクエスト",
|
||
"credentialsConfig": "認証情報",
|
||
"credentialsHint": "空欄の場合はプロバイダー設定を使用",
|
||
"optional": "オプション",
|
||
"apiKeyPlaceholder": "空欄の場合はプロバイダーの API Key を使用",
|
||
"baseUrlPlaceholder": "空欄の場合はプロバイダーの Base URL を使用",
|
||
"baseUrl": "Base URL",
|
||
"accessToken": "Access Token",
|
||
"accessTokenPlaceholder": "「Security Settings」で生成",
|
||
"userId": "ユーザー ID",
|
||
"userIdPlaceholder": "例: 114514",
|
||
"defaultPlan": "デフォルトプラン",
|
||
"queryFailedMessage": "照会に失敗しました",
|
||
"queryScript": "照会スクリプト (JavaScript)",
|
||
"timeoutSeconds": "タイムアウト(秒)",
|
||
"headers": "ヘッダー",
|
||
"body": "ボディ",
|
||
"timeoutHint": "範囲: 2〜30 秒",
|
||
"timeoutMustBeInteger": "タイムアウトは整数で入力してください(小数は切り捨て)",
|
||
"timeoutCannotBeNegative": "タイムアウトは負の値にできません",
|
||
"autoIntervalMinutes": "自動照会間隔(分、0 で無効)",
|
||
"autoQueryInterval": "自動照会間隔(分)",
|
||
"autoQueryIntervalHint": "0 で無効。推奨 5〜60 分",
|
||
"intervalMustBeInteger": "間隔は整数で入力してください(小数は切り捨て)",
|
||
"intervalCannotBeNegative": "間隔は負の値にできません",
|
||
"intervalAdjusted": "間隔を {{value}} 分に調整しました",
|
||
"scriptHelp": "スクリプトの書き方:",
|
||
"configFormat": "設定の形式:",
|
||
"commentOptional": "任意",
|
||
"commentResponseIsJson": "response は API から返る JSON データです",
|
||
"extractorFormat": "抽出関数の返却形式(すべて任意):",
|
||
"tips": "💡 ヒント:",
|
||
"testing": "テスト中...",
|
||
"testScript": "スクリプトをテスト",
|
||
"format": "整形",
|
||
"saveConfig": "設定を保存",
|
||
"scriptEmpty": "スクリプト設定は空にできません",
|
||
"mustHaveReturn": "スクリプトには return 文が必要です",
|
||
"testSuccess": "テスト成功!",
|
||
"testFailed": "テストに失敗しました",
|
||
"formatSuccess": "整形に成功しました",
|
||
"formatFailed": "整形に失敗しました",
|
||
"supportedVariables": "使用可能な変数",
|
||
"variablesHint": "使用可能な変数: {{apiKey}}, {{baseUrl}} | extractor 関数には API 応答の JSON オブジェクトが渡されます",
|
||
"scriptConfig": "リクエスト設定",
|
||
"extractorCode": "抽出コード",
|
||
"extractorHint": "戻り値のオブジェクトに残り枠の項目を含めてください",
|
||
"fieldIsValid": "• isValid: Boolean。プランが有効かどうか",
|
||
"fieldInvalidMessage": "• invalidMessage: String。無効時の理由(isValid が false のとき表示)",
|
||
"fieldRemaining": "• remaining: Number。残り枠",
|
||
"fieldUnit": "• unit: String。単位(例: \"USD\")",
|
||
"fieldPlanName": "• planName: String。プラン名",
|
||
"fieldTotal": "• total: Number。総枠",
|
||
"fieldUsed": "• used: Number。使用量",
|
||
"fieldExtra": "• extra: String。自由記述の追加テキスト",
|
||
"tip1": "• 変数 {{apiKey}} と {{baseUrl}} は自動で置換されます",
|
||
"tip2": "• 抽出関数はサンドボックスで実行され、ES2020+ の構文を使えます",
|
||
"tip3": "• 全体を () で囲み、オブジェクトリテラル式にしてください"
|
||
},
|
||
"errors": {
|
||
"usage_query_failed": "利用状況の取得に失敗しました",
|
||
"configLoadFailedTitle": "設定の読み込みに失敗しました",
|
||
"configLoadFailedMessage": "設定ファイルを読み込めません:\n{{path}}\n\nエラー詳細:\n{{detail}}\n\nJSON が正しいか確認するか、同じディレクトリのバックアップファイル(config.json.bak など)から復元してください。\n\nアプリを終了して修正してください。"
|
||
},
|
||
"presetSelector": {
|
||
"title": "設定タイプを選択",
|
||
"custom": "カスタム",
|
||
"customDescription": "手動で設定。完全な構成が必要",
|
||
"officialDescription": "公式ログイン。API Key 不要",
|
||
"presetDescription": "プリセットを使用。API Key だけ入力すれば OK"
|
||
},
|
||
"mcp": {
|
||
"title": "MCP 管理",
|
||
"import": "インポート",
|
||
"importExisting": "既存をインポート",
|
||
"addMcp": "MCPを追加",
|
||
"claudeTitle": "Claude Code MCP 管理",
|
||
"codexTitle": "Codex MCP 管理",
|
||
"geminiTitle": "Gemini MCP 管理",
|
||
"unifiedPanel": {
|
||
"title": "MCP サーバー管理",
|
||
"addServer": "サーバーを追加",
|
||
"editServer": "サーバーを編集",
|
||
"deleteServer": "サーバーを削除",
|
||
"deleteConfirm": "サーバー「{{id}}」を削除しますか?この操作は元に戻せません。",
|
||
"noServers": "まだサーバーがありません",
|
||
"enabledApps": "有効なアプリ",
|
||
"noImportFound": "インポートする MCP サーバーが見つかりませんでした。すべてのサーバーは CC Switch で管理されています。",
|
||
"importSuccess": "{{count}} 個の MCP サーバーをインポートしました",
|
||
"apps": {
|
||
"claude": "Claude",
|
||
"codex": "Codex",
|
||
"gemini": "Gemini",
|
||
"opencode": "OpenCode",
|
||
"openclaw": "OpenClaw"
|
||
}
|
||
},
|
||
"userLevelPath": "ユーザーレベルの MCP パス",
|
||
"serverList": "サーバー一覧",
|
||
"loading": "読み込み中...",
|
||
"empty": "MCP サーバーがありません",
|
||
"emptyDescription": "右上のボタンから最初の MCP サーバーを追加してください",
|
||
"add": "MCP を追加",
|
||
"addServer": "MCP を追加",
|
||
"editServer": "MCP を編集",
|
||
"addClaudeServer": "Claude Code MCP を追加",
|
||
"editClaudeServer": "Claude Code MCP を編集",
|
||
"addCodexServer": "Codex MCP を追加",
|
||
"editCodexServer": "Codex MCP を編集",
|
||
"configPath": "設定パス",
|
||
"serverCount": "MCP サーバー: {{count}} 件",
|
||
"enabledCount": "{{count}} 件が有効",
|
||
"template": {
|
||
"fetch": "クイックテンプレート: mcp-fetch"
|
||
},
|
||
"form": {
|
||
"title": "MCP ID(ユニーク)",
|
||
"titlePlaceholder": "my-mcp-server",
|
||
"name": "表示名",
|
||
"namePlaceholder": "例: @modelcontextprotocol/server-time",
|
||
"enabledApps": "適用するアプリ",
|
||
"noAppsWarning": "少なくとも 1 つ選択してください",
|
||
"description": "説明",
|
||
"descriptionPlaceholder": "任意の説明",
|
||
"tags": "タグ(カンマ区切り)",
|
||
"tagsPlaceholder": "stdio, time, utility",
|
||
"homepage": "ホームページ",
|
||
"homepagePlaceholder": "https://example.com",
|
||
"docs": "ドキュメント",
|
||
"docsPlaceholder": "https://example.com/docs",
|
||
"additionalInfo": "追加情報",
|
||
"jsonConfig": "JSON 全設定",
|
||
"jsonConfigOrPrefix": "JSON 全設定、または",
|
||
"tomlConfigOrPrefix": "TOML 全設定、または",
|
||
"jsonPlaceholder": "{\n \"type\": \"stdio\",\n \"command\": \"uvx\",\n \"args\": [\"mcp-server-fetch\"]\n}",
|
||
"tomlConfig": "TOML 全設定",
|
||
"tomlPlaceholder": "type = \"stdio\"\ncommand = \"uvx\"\nargs = [\"mcp-server-fetch\"]",
|
||
"useWizard": "設定ウィザード",
|
||
"syncOtherSide": "{{target}} にも反映",
|
||
"syncOtherSideHint": "{{target}} に同じ設定を書き込みます。既存の同一 ID は上書きされます。",
|
||
"willOverwriteWarning": "{{target}} の既存設定を上書きします"
|
||
},
|
||
"wizard": {
|
||
"title": "MCP 設定ウィザード",
|
||
"hint": "MCP サーバーを素早く設定し JSON を自動生成します",
|
||
"type": "タイプ",
|
||
"typeStdio": "stdio",
|
||
"typeHttp": "http",
|
||
"typeSse": "sse",
|
||
"command": "コマンド",
|
||
"commandPlaceholder": "npx または uvx",
|
||
"args": "引数",
|
||
"argsPlaceholder": "arg1\narg2",
|
||
"env": "環境変数",
|
||
"envPlaceholder": "KEY1=value1\nKEY2=value2",
|
||
"url": "URL",
|
||
"urlPlaceholder": "https://api.example.com/mcp",
|
||
"urlRequired": "URL を入力してください",
|
||
"headers": "ヘッダー(任意)",
|
||
"headersPlaceholder": "Authorization: Bearer your_token_here\nContent-Type: application/json",
|
||
"preview": "設定プレビュー",
|
||
"apply": "設定を反映"
|
||
},
|
||
"id": "識別子(ユニーク)",
|
||
"type": "タイプ",
|
||
"command": "コマンド",
|
||
"validateCommand": "コマンドを検証",
|
||
"args": "引数",
|
||
"argsPlaceholder": "例: mcp-server-fetch --help",
|
||
"env": "環境変数(1 行に 1 件、KEY=VALUE)",
|
||
"envPlaceholder": "FOO=bar\nHELLO=world",
|
||
"reset": "リセット",
|
||
"msg": {
|
||
"saved": "保存しました",
|
||
"deleted": "削除しました",
|
||
"enabled": "有効化しました",
|
||
"disabled": "無効化しました",
|
||
"templateAdded": "テンプレートを追加しました"
|
||
},
|
||
"error": {
|
||
"idRequired": "識別子を入力してください",
|
||
"idExists": "この識別子は既に存在します。別のものを選んでください。",
|
||
"jsonInvalid": "JSON 形式が無効です",
|
||
"tomlInvalid": "TOML 形式が無効です",
|
||
"commandRequired": "コマンドを入力してください",
|
||
"singleServerObjectRequired": "単一の MCP サーバーオブジェクトを貼り付けてください(トップレベルの mcpServers は不要)",
|
||
"saveFailed": "保存に失敗しました",
|
||
"deleteFailed": "削除に失敗しました"
|
||
},
|
||
"validation": {
|
||
"ok": "コマンドが見つかりました",
|
||
"fail": "コマンドが見つかりません"
|
||
},
|
||
"confirm": {
|
||
"deleteTitle": "MCP サーバーを削除",
|
||
"deleteMessage": "MCP サーバー「{{id}}」を削除してもよろしいですか?この操作は元に戻せません。"
|
||
},
|
||
"presets": {
|
||
"title": "MCP タイプを選択",
|
||
"enable": "有効化",
|
||
"enabled": "有効",
|
||
"installed": "インストール済み",
|
||
"docs": "ドキュメント",
|
||
"requiresEnv": "環境変数が必要",
|
||
"fetch": {
|
||
"name": "mcp-server-fetch",
|
||
"description": "汎用 HTTP リクエストツール。GET/POST などに対応し、API テストや Web データ取得に最適です"
|
||
},
|
||
"time": {
|
||
"name": "@modelcontextprotocol/server-time",
|
||
"description": "現在時刻、タイムゾーン変換、日付計算を提供する時間クエリツール"
|
||
},
|
||
"memory": {
|
||
"name": "@modelcontextprotocol/server-memory",
|
||
"description": "エンティティ・関係・観測を扱うナレッジグラフ型メモリ。会話の重要情報を AI に記憶させます"
|
||
},
|
||
"sequential-thinking": {
|
||
"name": "@modelcontextprotocol/server-sequential-thinking",
|
||
"description": "複雑な問題をステップに分解して深く考えるためのシーケンシャル思考ツール"
|
||
},
|
||
"context7": {
|
||
"name": "@upstash/context7-mcp",
|
||
"description": "最新のライブラリドキュメントとコード例を提供する Context7 ドキュメント検索ツール。キー設定で上限が拡張されます"
|
||
}
|
||
}
|
||
},
|
||
"prompts": {
|
||
"manage": "プロンプト",
|
||
"title": "{{appName}} プロンプト管理",
|
||
"claudeTitle": "Claude プロンプト管理",
|
||
"codexTitle": "Codex プロンプト管理",
|
||
"add": "プロンプトを追加",
|
||
"edit": "プロンプトを編集",
|
||
"addTitle": "{{appName}} プロンプトを追加",
|
||
"editTitle": "{{appName}} プロンプトを編集",
|
||
"import": "既存をインポート",
|
||
"count": "{{count}} 件のプロンプト",
|
||
"enabled": "有効",
|
||
"enable": "有効化",
|
||
"enabledName": "有効: {{name}}",
|
||
"noneEnabled": "有効なプロンプトがありません",
|
||
"currentFile": "現在の {{filename}} の内容",
|
||
"empty": "まだプロンプトがありません",
|
||
"emptyDescription": "上のボタンからプロンプトを追加またはインポートしてください",
|
||
"loading": "読み込み中...",
|
||
"name": "名前",
|
||
"namePlaceholder": "例: デフォルトプロジェクトプロンプト",
|
||
"description": "説明",
|
||
"descriptionPlaceholder": "任意の説明",
|
||
"content": "内容",
|
||
"contentPlaceholder": "# {{filename}}\n\nここにプロンプト内容を入力...",
|
||
"loadFailed": "プロンプトの読み込みに失敗しました",
|
||
"saveSuccess": "保存しました",
|
||
"saveFailed": "保存に失敗しました",
|
||
"deleteSuccess": "削除しました",
|
||
"deleteFailed": "削除に失敗しました",
|
||
"enableSuccess": "有効化しました",
|
||
"enableFailed": "有効化に失敗しました",
|
||
"disableSuccess": "無効化しました",
|
||
"disableFailed": "無効化に失敗しました",
|
||
"importSuccess": "インポートしました",
|
||
"importFailed": "インポートに失敗しました",
|
||
"confirm": {
|
||
"deleteTitle": "削除の確認",
|
||
"deleteMessage": "プロンプト「{{name}}」を削除してもよろしいですか?"
|
||
}
|
||
},
|
||
"workspace": {
|
||
"title": "ワークスペースファイル",
|
||
"manage": "ワークスペース",
|
||
"files": {
|
||
"agents": "エージェントの操作指示とルール",
|
||
"soul": "エージェントの人格とコミュニケーションスタイル",
|
||
"user": "ユーザープロファイルと設定",
|
||
"identity": "エージェントの名前とアバター",
|
||
"tools": "ローカルツールドキュメント",
|
||
"memory": "長期記憶と意思決定記録",
|
||
"heartbeat": "ハートビート実行チェックリスト",
|
||
"bootstrap": "初回実行ブートストラップ",
|
||
"boot": "ゲートウェイ再起動チェックリスト"
|
||
},
|
||
"editing": "{{filename}} を編集",
|
||
"saveSuccess": "保存しました",
|
||
"saveFailed": "保存に失敗しました",
|
||
"loadFailed": "読み込みに失敗しました",
|
||
"openDirectory": "ファイルマネージャーで開く",
|
||
"dailyMemory": {
|
||
"title": "デイリーメモリー",
|
||
"sectionTitle": "デイリーメモリー",
|
||
"cardTitle": "デイリーメモリーファイル",
|
||
"cardDescription": "デイリーメモリーの閲覧・管理",
|
||
"createToday": "メモリーを追加",
|
||
"empty": "デイリーメモリーファイルはまだありません",
|
||
"loadFailed": "デイリーメモリーファイルの読み込みに失敗しました",
|
||
"createFailed": "デイリーメモリーファイルの作成に失敗しました",
|
||
"deleteSuccess": "デイリーメモリーファイルを削除しました",
|
||
"deleteFailed": "デイリーメモリーファイルの削除に失敗しました",
|
||
"confirmDeleteTitle": "デイリーメモリーを削除",
|
||
"confirmDeleteMessage": "{{date}} のデイリーメモリーを削除しますか?この操作は取り消せません。",
|
||
"searchPlaceholder": "全文検索...",
|
||
"searchScopeHint": "すべてのデイリーメモリーを全文検索 ⌘F",
|
||
"searchCloseHint": "Escで閉じる",
|
||
"noSearchResults": "検索に一致するデイリーメモリーはありません。",
|
||
"searching": "検索中...",
|
||
"searchFailed": "検索に失敗しました",
|
||
"matchCount": "{{count}}件一致"
|
||
}
|
||
},
|
||
"openclaw": {
|
||
"backupCreated": "バックアップを作成しました: {{path}}",
|
||
"providerKey": "プロバイダーキー",
|
||
"providerKeyPlaceholder": "my-provider",
|
||
"providerKeyHint": "設定ファイル内のユニーク識別子。小文字、数字、ハイフンのみ使用可能。",
|
||
"providerKeyLockedHint": "このプロバイダーは既にアプリ設定へ追加されているため、キーは変更できません。",
|
||
"providerKeyRequired": "プロバイダーキーを入力してください",
|
||
"providerKeyDuplicate": "このキーは既に使用されています",
|
||
"providerKeyInvalid": "無効な形式です。小文字、数字、ハイフンのみ使用可能。",
|
||
"apiProtocol": "API プロトコル",
|
||
"selectProtocol": "API プロトコルを選択",
|
||
"apiProtocolHint": "プロバイダーの API と互換性のあるプロトコルタイプを選択してください。ほとんどのプロバイダーは OpenAI Completions 形式を使用します。",
|
||
"baseUrl": "API エンドポイント",
|
||
"baseUrlHint": "プロバイダーの API エンドポイントアドレス。",
|
||
"models": "モデル一覧",
|
||
"addModel": "モデルを追加",
|
||
"noModels": "モデルが設定されていません。「モデルを追加」をクリックして利用可能なモデルを設定してください。",
|
||
"modelId": "モデル ID",
|
||
"modelIdPlaceholder": "claude-3-sonnet",
|
||
"modelName": "表示名",
|
||
"modelNamePlaceholder": "Claude 3 Sonnet",
|
||
"contextWindow": "コンテキストウィンドウ",
|
||
"maxTokens": "最大出力トークン数",
|
||
"reasoning": "推論モード",
|
||
"reasoningOn": "有効",
|
||
"reasoningOff": "無効",
|
||
"inputTypes": "入力タイプ",
|
||
"inputCost": "入力コスト ($/M トークン)",
|
||
"outputCost": "出力コスト ($/M トークン)",
|
||
"advancedOptions": "詳細オプション",
|
||
"cacheReadCost": "キャッシュ読取コスト ($/M トークン)",
|
||
"cacheWriteCost": "キャッシュ書込コスト ($/M トークン)",
|
||
"cacheCostHint": "キャッシュコストは Prompt Caching のコスト計算に使用されます。キャッシュを使用しない場合は空欄のままにしてください。",
|
||
"modelsHint": "このプロバイダーがサポートするモデルを設定します。モデル ID は API 呼び出しに、表示名はインターフェースに使用されます。",
|
||
"userAgent": "User-Agent を送信",
|
||
"userAgentHint": "一部のプロバイダーはブラウザの User-Agent ヘッダーが必要です。",
|
||
"env": {
|
||
"title": "環境変数",
|
||
"description": "openclaw.json の環境変数設定を管理(APIキー、カスタム変数など)",
|
||
"editorHint": "env セクション全体を JSON として編集します。env.vars や env.shellEnv などのネストしたオブジェクトにも対応しています。",
|
||
"objectRequired": "OpenClaw の env は JSON オブジェクトである必要があります。",
|
||
"invalidJson": "OpenClaw の env は有効な JSON である必要があります。",
|
||
"empty": "OpenClaw の env は空にできません。空オブジェクトの場合は {} を使用してください。",
|
||
"keyPlaceholder": "変数名",
|
||
"valuePlaceholder": "値",
|
||
"add": "変数を追加",
|
||
"saveSuccess": "環境変数を保存しました",
|
||
"saveFailed": "環境変数の保存に失敗しました",
|
||
"loadFailed": "環境変数の読み込みに失敗しました",
|
||
"duplicateKey": "重複する変数名が検出されました: {{key}}"
|
||
},
|
||
"tools": {
|
||
"title": "ツール権限",
|
||
"description": "openclaw.json のツール権限設定を管理(許可/拒否リスト)",
|
||
"profile": "権限プロファイル",
|
||
"profileMinimal": "最小",
|
||
"profileCoding": "コーディング",
|
||
"profileMessaging": "メッセージ",
|
||
"profileFull": "フルアクセス",
|
||
"profileUnset": "未設定",
|
||
"unsupportedProfileTitle": "未対応のツールプロファイルを検出しました",
|
||
"unsupportedProfileDescription": "現在の tools.profile の値 '{{value}}' は OpenClaw の対応リストにありません。新しい値を選択するまでこの値を保持します。",
|
||
"unsupportedProfileLabel": "未対応",
|
||
"allowList": "許可リスト",
|
||
"denyList": "拒否リスト",
|
||
"patternPlaceholder": "ツール名またはパターン",
|
||
"addAllow": "許可を追加",
|
||
"addDeny": "拒否を追加",
|
||
"saveSuccess": "ツール権限を保存しました",
|
||
"saveFailed": "ツール権限の保存に失敗しました",
|
||
"loadFailed": "ツール権限の読み込みに失敗しました"
|
||
},
|
||
"agents": {
|
||
"title": "Agents 設定",
|
||
"description": "openclaw.json の agents.defaults 設定を管理(デフォルトモデル、ランタイムパラメータなど)",
|
||
"modelSection": "モデル設定",
|
||
"primaryModel": "デフォルトモデル",
|
||
"primaryModelHint": "設定済みプロバイダのモデルから選択してください",
|
||
"notSet": "未設定",
|
||
"fallbackModels": "フォールバックモデル",
|
||
"fallbackModelsHint": "プライマリモデルが利用不可の場合、優先度順にフォールバックが試行されます",
|
||
"addFallback": "フォールバックモデルを追加",
|
||
"noModels": "設定済みのプロバイダモデルがありません。先に OpenClaw プロバイダを追加してください。",
|
||
"notInList": "{{value}} (未設定)",
|
||
"runtimeSection": "ランタイムパラメータ",
|
||
"workspace": "ワークスペースパス",
|
||
"timeout": "タイムアウト(秒)",
|
||
"contextTokens": "コンテキストトークン数",
|
||
"maxConcurrent": "最大同時実行数",
|
||
"legacyTimeoutTitle": "旧タイムアウト設定を検出しました",
|
||
"legacyTimeoutDescription": "この設定ではまだ agents.defaults.timeout を使用しています。ここで保存すると timeoutSeconds に移行されます。",
|
||
"saveSuccess": "Agents 設定を保存しました",
|
||
"saveFailed": "Agents 設定の保存に失敗しました",
|
||
"loadFailed": "Agents 設定の読み込みに失敗しました"
|
||
},
|
||
"health": {
|
||
"title": "OpenClaw 設定の警告を検出しました",
|
||
"invalidToolsProfile": "tools.profile に未対応の値が設定されています。OpenClaw が現在サポートしているのは minimal、coding、messaging、full です。",
|
||
"legacyTimeout": "agents.defaults.timeout は非推奨です。Agents パネルを保存すると timeoutSeconds に移行されます。",
|
||
"stringifiedEnvVars": "env.vars はオブジェクトである必要がありますが、現在の値は文字列化または破損しているようです。",
|
||
"stringifiedShellEnv": "env.shellEnv はオブジェクトである必要がありますが、現在の値は文字列化または破損しているようです。",
|
||
"parseFailed": "openclaw.json を有効な JSON5 として解析できませんでした。ここで編集する前にファイルを修正してください。"
|
||
},
|
||
"primaryModel": "プライマリモデル",
|
||
"fallbackModel": "フォールバックモデル"
|
||
},
|
||
"env": {
|
||
"warning": {
|
||
"title": "競合する環境変数を検出しました",
|
||
"description": "設定を上書きする可能性のある環境変数を {{count}} 件見つけました"
|
||
},
|
||
"actions": {
|
||
"expand": "詳細を表示",
|
||
"collapse": "折りたたむ",
|
||
"selectAll": "すべて選択",
|
||
"clearSelection": "選択を解除",
|
||
"deleteSelected": "選択 {{count}} 件を削除",
|
||
"deleting": "削除中..."
|
||
},
|
||
"field": {
|
||
"value": "値",
|
||
"source": "ソース"
|
||
},
|
||
"source": {
|
||
"userRegistry": "ユーザー環境変数(レジストリ)",
|
||
"systemRegistry": "システム環境変数(レジストリ)",
|
||
"systemEnv": "システム環境変数"
|
||
},
|
||
"delete": {
|
||
"success": "環境変数を削除しました",
|
||
"error": "環境変数の削除に失敗しました"
|
||
},
|
||
"backup": {
|
||
"location": "バックアップ場所: {{path}}"
|
||
},
|
||
"confirm": {
|
||
"title": "環境変数を削除しますか?",
|
||
"message": "{{count}} 件の環境変数を削除してもよろしいですか?",
|
||
"backupNotice": "削除前に自動バックアップを作成します。後で復元できます。再起動またはターミナル再起動後に反映されます。",
|
||
"confirm": "削除を確認"
|
||
},
|
||
"error": {
|
||
"noSelection": "削除する環境変数を選択してください"
|
||
}
|
||
},
|
||
"skills": {
|
||
"manage": "Skills",
|
||
"title": "Skills 管理",
|
||
"description": "人気リポジトリからスキルを探してインストールし、Claude Code/Codex/Gemini を拡張",
|
||
"refresh": "更新",
|
||
"refreshing": "更新中...",
|
||
"repoManager": "リポジトリ管理",
|
||
"count": "{{count}} 個のスキル",
|
||
"empty": "スキルがありません",
|
||
"emptyDescription": "スキルリポジトリを追加して探索してください",
|
||
"addRepo": "スキルリポジトリを追加",
|
||
"loading": "読み込み中...",
|
||
"installed": "インストール済み",
|
||
"install": "インストール",
|
||
"installing": "インストール中...",
|
||
"uninstall": "アンインストール",
|
||
"uninstalling": "アンインストール中...",
|
||
"view": "表示",
|
||
"noDescription": "説明なし",
|
||
"loadFailed": "読み込みに失敗しました",
|
||
"installSuccess": "スキル {{name}} をインストールしました",
|
||
"installFailed": "インストールに失敗しました",
|
||
"uninstallSuccess": "スキル {{name}} をアンインストールしました",
|
||
"uninstallFailed": "アンインストールに失敗しました",
|
||
"error": {
|
||
"skillNotFound": "スキルが見つかりません: {{directory}}",
|
||
"missingRepoInfo": "リポジトリ情報(owner または name)が不足しています",
|
||
"downloadTimeout": "リポジトリ {{owner}}/{{name}} のダウンロードがタイムアウトしました({{timeout}} 秒)",
|
||
"downloadTimeoutHint": "ネットワークを確認するか、時間をおいて再試行してください",
|
||
"skillPathNotFound": "リポジトリ {{owner}}/{{name}} にスキルパス '{{path}}' がありません",
|
||
"skillDirNotFound": "スキルディレクトリが見つかりません: {{path}}",
|
||
"directoryConflict": "スキルディレクトリ '{{directory}}' は既に {{existing_repo}} で使用されています。{{new_repo}} からインストールできません",
|
||
"emptyArchive": "ダウンロードしたアーカイブが空です",
|
||
"downloadFailed": "ダウンロードに失敗しました: HTTP {{status}}",
|
||
"allBranchesFailed": "すべてのブランチで失敗しました。試行: {{branches}}",
|
||
"httpError": "HTTP エラー {{status}}",
|
||
"http403": "GitHub へのアクセスが制限されています(レート制限の可能性)",
|
||
"http404": "リポジトリまたはブランチが見つかりません。URL を確認してください",
|
||
"http429": "リクエストが多すぎます。時間をおいて再試行してください",
|
||
"parseMetadataFailed": "スキルメタデータの解析に失敗しました",
|
||
"getHomeDirFailed": "ユーザーのホームディレクトリを取得できません",
|
||
"noSkillsInZip": "ZIP ファイルにスキルが見つかりません(SKILL.md ファイルが必要です)",
|
||
"networkError": "ネットワークエラー",
|
||
"fsError": "ファイルシステムエラー",
|
||
"unknownError": "不明なエラー",
|
||
"suggestion": {
|
||
"checkNetwork": "ネットワーク接続を確認してください",
|
||
"checkProxy": "HTTP プロキシの設定を検討してください",
|
||
"retryLater": "時間をおいて再試行してください",
|
||
"checkRepoUrl": "リポジトリ URL とブランチ名を確認してください",
|
||
"checkDiskSpace": "ディスク容量を確認してください",
|
||
"checkPermission": "ディレクトリの権限を確認してください",
|
||
"uninstallFirst": "同名のスキルを先にアンインストールしてください",
|
||
"checkZipContent": "ZIP ファイルに有効なスキルディレクトリ(SKILL.md を含む)が含まれていることを確認してください"
|
||
}
|
||
},
|
||
"repo": {
|
||
"title": "スキルリポジトリを管理",
|
||
"description": "GitHub のスキルリポジトリソースを追加または削除します",
|
||
"url": "リポジトリ URL",
|
||
"urlPlaceholder": "owner/name または https://github.com/owner/name",
|
||
"branch": "ブランチ",
|
||
"branchPlaceholder": "main",
|
||
"path": "スキルパス",
|
||
"pathPlaceholder": "skills(任意。空欄はルート)",
|
||
"add": "リポジトリを追加",
|
||
"list": "追加済みリポジトリ",
|
||
"empty": "リポジトリがありません",
|
||
"invalidUrl": "リポジトリ URL の形式が無効です",
|
||
"addSuccess": "リポジトリ {{owner}}/{{name}} を追加しました。検出スキル: {{count}} 件",
|
||
"addFailed": "追加に失敗しました",
|
||
"removeSuccess": "リポジトリ {{owner}}/{{name}} を削除しました",
|
||
"removeFailed": "削除に失敗しました",
|
||
"skillCount": "{{count}} 件のスキルを検出"
|
||
},
|
||
"search": "スキルを検索",
|
||
"searchPlaceholder": "スキル名またはリポジトリで検索...",
|
||
"filter": {
|
||
"placeholder": "状態で絞り込み",
|
||
"all": "すべて",
|
||
"installed": "インストール済み",
|
||
"uninstalled": "未インストール",
|
||
"repo": "リポジトリで絞り込み",
|
||
"allRepos": "すべてのリポジトリ"
|
||
},
|
||
"noResults": "一致するスキルが見つかりませんでした",
|
||
"noInstalled": "インストールされたスキルがありません",
|
||
"noInstalledDescription": "リポジトリからスキルを発見してインストールするか、既存のスキルをインポートしてください",
|
||
"discover": "スキルを発見",
|
||
"import": "既存をインポート",
|
||
"importDescription": "CC Switch 統合管理にインポートするスキルを選択してください",
|
||
"importSuccess": "{{count}} 件のスキルをインポートしました",
|
||
"importSelected": "選択をインポート ({{count}})",
|
||
"noUnmanagedFound": "インポートするスキルが見つかりませんでした。すべてのスキルは CC Switch で管理されています。",
|
||
"foundIn": "発見場所",
|
||
"local": "ローカル",
|
||
"uninstallConfirm": "「{{name}}」をアンインストールしますか?すべてのアプリからこのスキルが削除され、削除前にローカルバックアップが自動作成されます。",
|
||
"uninstallInMainPanel": "メインパネルからスキルをアンインストールしてください",
|
||
"notFound": "スキルが見つかりません",
|
||
"backup": {
|
||
"location": "バックアップ場所: {{path}}"
|
||
},
|
||
"restoreFromBackup": {
|
||
"button": "バックアップから復元",
|
||
"title": "バックアップから復元",
|
||
"description": "Skills バックアップを選択して、ローカルにファイルを復元し、現在の一覧へ戻します。",
|
||
"empty": "復元できる Skills バックアップはありません",
|
||
"createdAt": "バックアップ日時",
|
||
"path": "バックアップパス",
|
||
"restore": "復元",
|
||
"restoring": "復元中...",
|
||
"delete": "削除",
|
||
"deleting": "削除中...",
|
||
"deleteSuccess": "スキルバックアップ {{name}} を削除しました",
|
||
"deleteFailed": "スキルバックアップの削除に失敗しました",
|
||
"deleteConfirmTitle": "バックアップを削除",
|
||
"deleteConfirmMessage": "スキルバックアップ「{{name}}」を削除しますか?この操作は元に戻せません。",
|
||
"success": "スキル {{name}} をバックアップから復元しました",
|
||
"failed": "バックアップからの復元に失敗しました"
|
||
},
|
||
"apps": {
|
||
"claude": "Claude",
|
||
"codex": "Codex",
|
||
"gemini": "Gemini",
|
||
"opencode": "OpenCode",
|
||
"openclaw": "OpenClaw"
|
||
},
|
||
"installFromZip": {
|
||
"button": "ZIP からインストール",
|
||
"installing": "インストール中...",
|
||
"successSingle": "スキル {{name}} をインストールしました",
|
||
"successMultiple": "{{count}} 件のスキルをインストールしました",
|
||
"noSkillsFound": "ZIP ファイルにスキルが見つかりません(SKILL.md が必要です)"
|
||
}
|
||
},
|
||
"deeplink": {
|
||
"confirmImport": "プロバイダーのインポートを確認",
|
||
"confirmImportDescription": "次の設定をディープリンクから CC Switch へインポートします",
|
||
"importPrompt": "プロンプトをインポート",
|
||
"importPromptDescription": "このシステムプロンプトをインポートするか確認してください",
|
||
"importMcp": "MCP サーバーをインポート",
|
||
"importMcpDescription": "これらの MCP サーバーをインポートするか確認してください",
|
||
"importSkill": "スキルリポジトリを追加",
|
||
"importSkillDescription": "このスキルリポジトリを追加するか確認してください",
|
||
"promptImportSuccess": "プロンプトをインポートしました",
|
||
"promptImportSuccessDescription": "インポートされたプロンプト: {{name}}",
|
||
"mcpImportSuccess": "MCP サーバーをインポートしました",
|
||
"mcpImportSuccessDescription": "{{count}} 件のサーバーをインポートしました",
|
||
"mcpPartialSuccess": "一部のみインポート成功",
|
||
"mcpPartialSuccessDescription": "成功: {{success}}、失敗: {{failed}}",
|
||
"skillImportSuccess": "スキルリポジトリを追加しました",
|
||
"skillImportSuccessDescription": "追加したリポジトリ: {{repo}}",
|
||
"app": "アプリ種別",
|
||
"providerName": "プロバイダー名",
|
||
"homepage": "ホームページ",
|
||
"endpoint": "API エンドポイント",
|
||
"apiKey": "API Key",
|
||
"icon": "アイコン",
|
||
"model": "モデル",
|
||
"haikuModel": "Haiku モデル",
|
||
"sonnetModel": "Sonnet モデル",
|
||
"opusModel": "Opus モデル",
|
||
"multiModel": "マルチモーダルモデル",
|
||
"notes": "メモ",
|
||
"import": "インポート",
|
||
"importing": "インポート中...",
|
||
"warning": "インポート前に内容を確認してください。後から一覧で編集・削除できます。",
|
||
"parseError": "ディープリンクの解析に失敗しました",
|
||
"importSuccess": "インポート成功",
|
||
"importSuccessDescription": "プロバイダー「{{name}}」をインポートしました",
|
||
"importError": "インポートに失敗しました",
|
||
"configSource": "設定ソース",
|
||
"configEmbedded": "埋め込み設定",
|
||
"configRemote": "リモート設定",
|
||
"configDetails": "設定の詳細",
|
||
"configUrl": "設定ファイル URL",
|
||
"configMergeError": "設定ファイルのマージに失敗しました",
|
||
"primaryEndpoint": "メイン",
|
||
"mcp": {
|
||
"title": "MCP サーバーを一括インポート",
|
||
"targetApps": "ターゲットアプリ",
|
||
"serverCount": "MCP サーバー({{count}} 件)",
|
||
"enabledWarning": "インポート後、指定したすべてのアプリに即座に書き込まれます"
|
||
},
|
||
"prompt": {
|
||
"title": "システムプロンプトをインポート",
|
||
"app": "アプリ",
|
||
"name": "名前",
|
||
"description": "説明",
|
||
"contentPreview": "内容プレビュー",
|
||
"enabledWarning": "インポート後すぐにこのプロンプトが有効になり、他は無効になります"
|
||
},
|
||
"skill": {
|
||
"title": "Claude スキルリポジトリを追加",
|
||
"repo": "GitHub リポジトリ",
|
||
"directory": "対象ディレクトリ",
|
||
"branch": "ブランチ",
|
||
"skillsPath": "スキルパス",
|
||
"hint": "この操作でスキルリポジトリが一覧に追加されます。",
|
||
"hintDetail": "追加後、スキル管理ページから個別のスキルをインストールできます。"
|
||
},
|
||
"usageScript": "使用量クエリ",
|
||
"usageScriptEnabled": "有効",
|
||
"usageScriptDisabled": "無効",
|
||
"usageApiKey": "使用量 API キー",
|
||
"usageBaseUrl": "使用量クエリ URL",
|
||
"usageAutoInterval": "自動クエリ",
|
||
"usageAutoIntervalValue": "{{minutes}} 分ごと"
|
||
},
|
||
"iconPicker": {
|
||
"search": "アイコンを検索",
|
||
"searchPlaceholder": "アイコン名を入力...",
|
||
"noResults": "一致するアイコンが見つかりません",
|
||
"category": {
|
||
"aiProvider": "AI プロバイダー",
|
||
"cloud": "クラウドプラットフォーム",
|
||
"tool": "開発ツール",
|
||
"other": "その他"
|
||
}
|
||
},
|
||
"providerIcon": {
|
||
"label": "アイコン",
|
||
"colorLabel": "アイコンカラー",
|
||
"selectIcon": "アイコンを選択",
|
||
"preview": "プレビュー",
|
||
"clickToChange": "クリックでアイコンを変更",
|
||
"clickToSelect": "クリックでアイコンを選択",
|
||
"color": "アイコンカラー"
|
||
},
|
||
"migration": {
|
||
"success": "設定の移行が完了しました",
|
||
"skillsSuccess": "スキルを {{count}} 件、自動的に統合管理へインポートしました",
|
||
"skillsFailed": "スキルの自動インポートに失敗しました",
|
||
"skillsFailedDescription": "Skills 画面で「既存をインポート」をクリックして手動でインポートしてください(または再起動して再試行)。"
|
||
},
|
||
"agents": {
|
||
"title": "エージェント"
|
||
},
|
||
"modelTest": {
|
||
"testProvider": "モデルテスト"
|
||
},
|
||
"health": {
|
||
"operational": "正常",
|
||
"degraded": "低下",
|
||
"failed": "失敗",
|
||
"circuitOpen": "サーキットオープン",
|
||
"consecutiveFailures": "{{count}} 回連続失敗"
|
||
},
|
||
"failover": {
|
||
"enabled": "{{app}} フェイルオーバーが有効になりました",
|
||
"disabled": "{{app}} フェイルオーバーが無効になりました",
|
||
"toggleFailed": "操作に失敗しました: {{detail}}",
|
||
"inQueue": "キュー内",
|
||
"addQueue": "追加",
|
||
"priority": {
|
||
"tooltip": "フェイルオーバー優先度 {{priority}}"
|
||
},
|
||
"tooltip": {
|
||
"enabled": "{{app}} フェイルオーバーが有効\nキューの優先度(P1→P2→...)で使用します",
|
||
"disabled": "{{app}} フェイルオーバーを有効にする\nキューの P1 に即時切替し、失敗時は次を順に試行します"
|
||
}
|
||
},
|
||
"proxy": {
|
||
"panel": {
|
||
"serviceAddress": "サービスアドレス",
|
||
"addressCopied": "アドレスをコピーしました",
|
||
"currentProvider": "現在のプロバイダー:",
|
||
"waitingFirstRequest": "現在のプロバイダー: 最初のリクエスト待ち...",
|
||
"stoppedTitle": "プロキシサービス停止中",
|
||
"stoppedDescription": "上のトグルでサービスを開始できます",
|
||
"openSettings": "プロキシサービスを設定",
|
||
"stats": {
|
||
"activeConnections": "アクティブ接続",
|
||
"totalRequests": "総リクエスト数",
|
||
"successRate": "成功率",
|
||
"uptime": "稼働時間"
|
||
}
|
||
},
|
||
"settings": {
|
||
"title": "プロキシサービス設定",
|
||
"description": "ローカルプロキシサーバーのリッスンアドレス、ポート、実行パラメータを設定します。保存後すぐに反映されます。",
|
||
"alert": {
|
||
"autoApply": "変更は実行中のプロキシサービスに自動的に同期され、手動での再起動は不要です。"
|
||
},
|
||
"basic": {
|
||
"title": "基本設定",
|
||
"description": "プロキシサービスのリッスンアドレスとポートを設定します。"
|
||
},
|
||
"advanced": {
|
||
"title": "詳細パラメータ",
|
||
"description": "リクエストの安定性とログ記録を制御します。"
|
||
},
|
||
"timeout": {
|
||
"title": "タイムアウト設定",
|
||
"description": "ストリーミングと非ストリーミングリクエストのタイムアウトを設定します。"
|
||
},
|
||
"fields": {
|
||
"listenAddress": {
|
||
"label": "リッスンアドレス",
|
||
"placeholder": "127.0.0.1",
|
||
"description": "プロキシサーバーがリッスンするIPアドレス(推奨: 127.0.0.1)"
|
||
},
|
||
"listenPort": {
|
||
"label": "リッスンポート",
|
||
"placeholder": "15721",
|
||
"description": "プロキシサーバーがリッスンするポート番号(1024 ~ 65535)"
|
||
},
|
||
"maxRetries": {
|
||
"label": "最大リトライ回数",
|
||
"placeholder": "3",
|
||
"description": "リクエスト失敗時のリトライ回数(0 ~ 10)"
|
||
},
|
||
"requestTimeout": {
|
||
"label": "リクエストタイムアウト(秒)",
|
||
"placeholder": "0(無制限)または 300",
|
||
"description": "単一リクエストの最大待機時間(0 = 無制限、または 10 ~ 600 秒)"
|
||
},
|
||
"enableLogging": {
|
||
"label": "ログ記録を有効化",
|
||
"description": "トラブルシューティングのためにすべてのプロキシリクエストを記録"
|
||
},
|
||
"streamingFirstByteTimeout": {
|
||
"label": "ストリーミング初回バイトタイムアウト(秒)",
|
||
"description": "最初のデータチャンクを待つ最大時間"
|
||
},
|
||
"streamingIdleTimeout": {
|
||
"label": "ストリーミングアイドルタイムアウト(秒)",
|
||
"description": "データチャンク間の最大間隔"
|
||
},
|
||
"nonStreamingTimeout": {
|
||
"label": "非ストリーミングタイムアウト(秒)",
|
||
"description": "非ストリーミングリクエストの総タイムアウト"
|
||
}
|
||
},
|
||
"validation": {
|
||
"addressInvalid": "有効なIPアドレスを入力してください",
|
||
"portMin": "ポートは1024より大きい必要があります",
|
||
"portMax": "ポートは65535より小さい必要があります",
|
||
"retryMin": "リトライ回数は負の値にできません",
|
||
"retryMax": "リトライ回数は10を超えることはできません",
|
||
"timeoutNonNegative": "タイムアウトは負の値にできません",
|
||
"timeoutMax": "タイムアウトは600秒を超えることはできません",
|
||
"timeoutRange": "0または10-600の間の値を入力してください",
|
||
"streamingTimeoutMin": "タイムアウトは少なくとも5秒必要です",
|
||
"streamingTimeoutMax": "タイムアウトは300秒を超えることはできません"
|
||
},
|
||
"actions": {
|
||
"save": "設定を保存"
|
||
},
|
||
"toast": {
|
||
"saved": "プロキシ設定を保存しました",
|
||
"saveFailed": "保存に失敗しました: {{error}}"
|
||
},
|
||
"invalidPort": "無効なポートです。1024〜65535 の数値を入力してください",
|
||
"invalidAddress": "無効なアドレスです。有効な IP アドレス(例: 127.0.0.1)または localhost を入力してください",
|
||
"configSaved": "プロキシ設定を保存しました",
|
||
"configSaveFailed": "設定の保存に失敗しました",
|
||
"restartRequired": "アドレスまたはポートの変更を反映するにはプロキシサービスの再起動が必要です"
|
||
},
|
||
"switchFailed": "切り替えに失敗しました: {{error}}",
|
||
"takeover": {
|
||
"hint": "テイクオーバーするアプリを選択します。有効にすると、そのアプリのリクエストはローカルプロキシ経由で転送されます",
|
||
"enabled": "{{app}} テイクオーバー有効",
|
||
"disabled": "{{app}} テイクオーバー無効",
|
||
"failed": "テイクオーバーの切り替えに失敗しました",
|
||
"tooltip": {
|
||
"active": "{{appLabel}} がインターセプト中 - {{address}}:{{port}}\nホットスイッチングのためプロバイダを切り替え",
|
||
"broken": "{{appLabel}} がインターセプト中ですが、プロキシサービスが実行されていません",
|
||
"inactive": "{{appLabel}} のライブ設定をインターセプトしてリクエストをローカルプロキシ経由でルーティング"
|
||
}
|
||
},
|
||
"failover": {
|
||
"proxyRequired": "フェイルオーバーを設定するには、プロキシサービスを先に起動する必要があります",
|
||
"autoSwitch": "自動フェイルオーバー",
|
||
"autoSwitchDescription": "有効にするとキューの P1 に即時切り替え、リクエスト失敗時はキュー内の次のプロバイダーを自動で試行します"
|
||
},
|
||
"failoverQueue": {
|
||
"title": "フェイルオーバーキュー",
|
||
"description": "各アプリのプロバイダーのフェイルオーバー順序を管理します",
|
||
"info": "自動フェイルオーバーを有効にすると、キューの優先度順(P1 優先)でプロバイダーを使用します。失敗時はキュー内の次のプロバイダーを順に試行します。",
|
||
"selectProvider": "キューに追加するプロバイダーを選択",
|
||
"noAvailableProviders": "追加できるプロバイダーがありません",
|
||
"empty": "フェイルオーバーキューが空です。自動フェイルオーバーを有効にするにはプロバイダーを追加してください。",
|
||
"orderHint": "キューの順序はホームのプロバイダー一覧の順序と一致します。ホームでドラッグして順序を変更できます。",
|
||
"dragHint": "ドラッグでフェイルオーバー順序を調整します。番号が小さいほど優先度が高くなります。",
|
||
"toggleEnabled": "有効/無効",
|
||
"addSuccess": "フェイルオーバーキューに追加しました",
|
||
"addFailed": "追加に失敗しました",
|
||
"removeSuccess": "フェイルオーバーキューから削除しました",
|
||
"removeFailed": "削除に失敗しました",
|
||
"reorderSuccess": "キュー順序を更新しました",
|
||
"reorderFailed": "順序の更新に失敗しました",
|
||
"toggleFailed": "状態の更新に失敗しました"
|
||
},
|
||
"autoFailover": {
|
||
"info": "フェイルオーバーキューに複数のプロバイダーが設定されている場合、リクエストが失敗すると優先度順に試行します。プロバイダーが連続失敗のしきい値に達すると、サーキットブレーカーが開き、一時的にスキップされます。",
|
||
"configSaved": "自動フェイルオーバー設定を保存しました",
|
||
"configSaveFailed": "保存に失敗しました",
|
||
"validationFailed": "以下のフィールドが有効範囲外です: {{fields}}",
|
||
"retrySettings": "リトライとタイムアウト設定",
|
||
"failureThreshold": "失敗しきい値",
|
||
"failureThresholdHint": "この回数連続で失敗するとサーキットブレーカーが開きます(推奨: 3-10)",
|
||
"timeout": "回復待ち時間(秒)",
|
||
"timeoutHint": "サーキットが開いた後、回復を試みるまでの待ち時間(推奨: 30-120)",
|
||
"circuitBreakerSettings": "サーキットブレーカー設定",
|
||
"successThreshold": "回復成功しきい値",
|
||
"successThresholdHint": "半開状態でこの回数成功するとサーキットブレーカーが閉じます",
|
||
"errorRate": "エラー率しきい値 (%)",
|
||
"errorRateHint": "この値を超えるとサーキットブレーカーが開きます",
|
||
"minRequests": "最小リクエスト数",
|
||
"minRequestsHint": "エラー率を計算する前の最小リクエスト数",
|
||
"explanationTitle": "仕組み",
|
||
"failureThresholdLabel": "失敗しきい値",
|
||
"failureThresholdExplain": "この回数連続で失敗すると、サーキットブレーカーが開き、プロバイダーは一時的に利用不可になります",
|
||
"timeoutLabel": "回復待ち時間",
|
||
"timeoutExplain": "サーキットが開いた後、半開状態を試みるまでの待ち時間",
|
||
"successThresholdLabel": "回復成功しきい値",
|
||
"successThresholdExplain": "半開状態でこの回数成功するとサーキットブレーカーが閉じ、プロバイダーが再び利用可能になります",
|
||
"errorRateLabel": "エラー率しきい値",
|
||
"errorRateExplain": "失敗しきい値に達していなくても、エラー率がこの値を超えるとサーキットブレーカーが開きます",
|
||
"maxRetries": "最大リトライ回数",
|
||
"timeoutSettings": "タイムアウト設定",
|
||
"streamingFirstByte": "ストリーミング最初のバイトタイムアウト",
|
||
"streamingIdle": "ストリーミングアイドルタイムアウト",
|
||
"nonStreaming": "非ストリーミングタイムアウト",
|
||
"maxRetriesHint": "リクエスト失敗時のリトライ回数(0-10)",
|
||
"streamingFirstByteHint": "最初のデータチャンクを待つ最大時間、範囲 1-120 秒、デフォルト 60 秒",
|
||
"streamingIdleHint": "データチャンク間の最大間隔、範囲 60-600 秒、0 で無効化(途中停止を防止)",
|
||
"nonStreamingHint": "非ストリーミングリクエストの合計タイムアウト、範囲 60-1200 秒、デフォルト 600 秒(10 分)"
|
||
},
|
||
"logging": {
|
||
"enabled": "ログ記録が有効になりました",
|
||
"disabled": "ログ記録が無効になりました",
|
||
"failed": "ログ状態の切り替えに失敗しました"
|
||
},
|
||
"server": {
|
||
"started": "プロキシサービスが開始されました - {{address}}:{{port}}",
|
||
"startFailed": "プロキシサービスの開始に失敗しました: {{detail}}"
|
||
},
|
||
"stoppedWithRestore": "プロキシサービスが停止し、すべてのテイクオーバー設定が復元されました",
|
||
"stopWithRestoreFailed": "停止に失敗しました: {{detail}}"
|
||
},
|
||
"streamCheck": {
|
||
"configSaved": "ヘルスチェック設定を保存しました",
|
||
"configSaveFailed": "保存に失敗しました",
|
||
"testModels": "テストモデル",
|
||
"claudeModel": "Claude モデル",
|
||
"codexModel": "Codex モデル",
|
||
"geminiModel": "Gemini モデル",
|
||
"checkParams": "チェックパラメーター",
|
||
"timeout": "タイムアウト(秒)",
|
||
"maxRetries": "最大リトライ回数",
|
||
"degradedThreshold": "劣化しきい値(ミリ秒)",
|
||
"testPrompt": "テストプロンプト",
|
||
"operational": "{{providerName}} は正常に動作しています ({{responseTimeMs}}ms)",
|
||
"degraded": "{{providerName}} の応答が遅いです ({{responseTimeMs}}ms)",
|
||
"failed": "{{providerName}} のチェックに失敗しました: {{message}}",
|
||
"error": "{{providerName}} のチェックでエラーが発生しました: {{error}}"
|
||
},
|
||
"proxyConfig": {
|
||
"proxyEnabled": "プロキシ有効",
|
||
"appTakeover": "プロキシ有効",
|
||
"perAppConfig": "アプリ別設定",
|
||
"circuitBreaker": "サーキットブレーカー",
|
||
"circuitBreakerSettings": "サーキットブレーカー設定",
|
||
"failureThreshold": "失敗閾値",
|
||
"successThreshold": "回復閾値",
|
||
"recoveryTimeout": "回復待機時間",
|
||
"errorRateThreshold": "エラー率閾値",
|
||
"minRequests": "最小リクエスト数",
|
||
"timeoutConfig": "タイムアウト設定",
|
||
"streamingFirstByte": "ストリーミング初回バイトタイムアウト",
|
||
"streamingIdle": "ストリーミングアイドルタイムアウト",
|
||
"nonStreaming": "非ストリーミングタイムアウト"
|
||
},
|
||
"circuitBreaker": {
|
||
"failureThreshold": "失敗閾値",
|
||
"successThreshold": "成功閾値",
|
||
"timeoutSeconds": "タイムアウト(秒)",
|
||
"errorRateThreshold": "エラー率閾値 (%)",
|
||
"minRequests": "最小リクエスト数",
|
||
"validationFailed": "以下のフィールドが有効範囲外です: {{fields}}",
|
||
"configSaved": "サーキットブレーカー設定が保存されました",
|
||
"saveFailed": "保存に失敗しました",
|
||
"loading": "読み込み中...",
|
||
"title": "サーキットブレーカー設定",
|
||
"description": "サーキットブレーカーパラメータを調整して、障害検出と復旧動作を制御します",
|
||
"failureThresholdHint": "連続失敗後にサーキットブレーカーを開く回数",
|
||
"timeoutSecondsHint": "サーキットブレーカーを開いた後、復旧を試みるまでの時間(半開状態)",
|
||
"successThresholdHint": "半開状態で成功してサーキットブレーカーを閉じる回数",
|
||
"errorRateThresholdHint": "エラー率がこの値を超えるとサーキットブレーカーを開く",
|
||
"minRequestsHint": "エラー率を計算する前の最小リクエスト数",
|
||
"saveConfig": "設定を保存",
|
||
"instructionsTitle": "設定説明",
|
||
"instructions": {
|
||
"failureThreshold": "連続失敗がこの回数に達するとサーキットブレーカーが開く",
|
||
"timeout": "サーキットブレーカーを開いた後、この時間待機してから半開を試みる",
|
||
"successThreshold": "半開状態で成功がこの回数に達するとサーキットブレーカーを閉じる",
|
||
"errorRate": "エラー率がこの値を超えるとサーキットブレーカーが開く",
|
||
"minRequests": "リクエスト数がこの値に達した後にのみエラー率が計算される"
|
||
}
|
||
},
|
||
"universalProvider": {
|
||
"title": "統合プロバイダー",
|
||
"description": "統合プロバイダーは Claude、Codex、Gemini の設定を同時に管理します。変更は有効なすべてのアプリに自動的に同期されます。",
|
||
"add": "統合プロバイダーを追加",
|
||
"edit": "統合プロバイダーを編集",
|
||
"empty": "統合プロバイダーがありません",
|
||
"emptyHint": "下の「統合プロバイダーを追加」ボタンをクリックして作成してください",
|
||
"selectPreset": "プリセットタイプを選択",
|
||
"name": "名前",
|
||
"namePlaceholder": "例:私の NewAPI",
|
||
"baseUrl": "API URL",
|
||
"apiKey": "API キー",
|
||
"websiteUrl": "ウェブサイト URL",
|
||
"websiteUrlPlaceholder": "https://example.com(オプション、リストに表示されます)",
|
||
"notes": "メモ",
|
||
"notesPlaceholder": "オプション:メモを追加",
|
||
"enabledApps": "有効なアプリ",
|
||
"modelConfig": "モデル設定",
|
||
"model": "モデル",
|
||
"sync": "アプリに同期",
|
||
"synced": "すべてのアプリに同期しました",
|
||
"syncError": "同期に失敗しました",
|
||
"noAppsEnabled": "有効なアプリがありません",
|
||
"added": "統合プロバイダーを追加しました",
|
||
"addedAndSynced": "統合プロバイダーを追加して同期しました",
|
||
"updated": "統合プロバイダーを更新しました",
|
||
"deleted": "統合プロバイダーを削除しました",
|
||
"addSuccess": "統合プロバイダーを追加しました",
|
||
"addFailed": "統合プロバイダーの追加に失敗しました",
|
||
"hint": "クロスアプリ統合設定。Claude/Codex/Gemini に自動同期します",
|
||
"manage": "管理",
|
||
"loadError": "統合プロバイダーの読み込みに失敗しました",
|
||
"saveError": "統合プロバイダーの保存に失敗しました",
|
||
"deleteError": "統合プロバイダーの削除に失敗しました",
|
||
"deleteConfirmTitle": "統合プロバイダーを削除",
|
||
"deleteConfirmDescription": "「{{name}}」を削除してもよろしいですか?各アプリで生成されたプロバイダー設定も削除されます。",
|
||
"syncConfirmTitle": "統合プロバイダーを同期",
|
||
"syncConfirmDescription": "「{{name}}」を同期すると、Claude、Codex、Gemini の関連プロバイダー設定が上書きされます。続行しますか?",
|
||
"syncConfirm": "同期",
|
||
"saveAndSync": "保存して同期",
|
||
"savedAndSynced": "すべてのアプリに保存・同期されました",
|
||
"saveAndSyncError": "保存と同期に失敗しました",
|
||
"configJsonPreview": "設定 JSON プレビュー",
|
||
"configJsonPreviewHint": "以下は各アプリに同期される設定内容です(表示されているフィールドのみ上書きされ、他のカスタム設定は保持されます)"
|
||
},
|
||
"omo": {
|
||
"editProfile": "OMO 設定を編集",
|
||
"newProfile": "新規 OMO 設定",
|
||
"profileName": "名前",
|
||
"mainAgents": "メインエージェント",
|
||
"subAgents": "サブエージェント",
|
||
"categories": "カテゴリ",
|
||
"customAgents": "カスタムエージェント",
|
||
"noCustomAgents": "カスタムエージェントなし",
|
||
"otherFields": "その他の設定",
|
||
"globalConfig": "OMO グローバル設定",
|
||
"globalConfigShort": "OMO 設定",
|
||
"globalConfigSaved": "グローバル設定を保存しました",
|
||
"addProfile": "OMO プロバイダーを追加",
|
||
"disabledItems": "無効項目設定",
|
||
"advanced": "詳細設定",
|
||
"profileCreated": "OMO 設定を作成しました",
|
||
"profileUpdated": "OMO 設定を更新しました",
|
||
"invalidJson": "その他のフィールドに無効なJSONが含まれています",
|
||
"confirmDelete": "設定を削除",
|
||
"confirmDeleteMsg": "「{{name}}」を削除しますか?",
|
||
"profileDeleted": "設定を削除しました",
|
||
"imported": "「{{name}}」としてインポートしました",
|
||
"import": "インポート",
|
||
"global": "グローバル",
|
||
"empty": "OMO 設定がありません。+ 追加またはローカルからインポートしてください。",
|
||
"applied": "適用済み",
|
||
"apply": "適用",
|
||
"enable": "有効化",
|
||
"enabled": "有効中",
|
||
"disabled": "OMO を無効化しました",
|
||
"disableFailed": "OMO の無効化に失敗しました: {{error}}",
|
||
"selectPlaceholder": "選択してください...",
|
||
"clear": "クリア",
|
||
"clearWrapped": "(クリア)",
|
||
"defaultWrapped": "(デフォルト)",
|
||
"variantPlaceholder": "variant",
|
||
"selectEnabledModel": "設定済みモデルを選択",
|
||
"selectModel": "設定済みモデルを選択",
|
||
"recommendedHint": "推奨: {{model}}",
|
||
"searchModel": "モデルを検索...",
|
||
"selectModelFirst": "先にモデルを選択",
|
||
"noEnabledModels": "設定済みモデルがありません",
|
||
"noVariantsForModel": "このモデルには思考レベルがありません",
|
||
"currentValueNotEnabled": "{{value}} (現在値・未設定)",
|
||
"currentValueUnavailable": "{{value}} (現在値・利用不可)",
|
||
"advancedLabel": "詳細",
|
||
"advancedJsonInvalid": "詳細 JSON が不正です",
|
||
"advancedJsonHint": "temperature, top_p, budgetTokens, prompt_append, permission など。空欄でデフォルトを使用します",
|
||
"noEnabledModelsWarning": "利用可能な設定済みモデルがありません。先に OpenCode モデルを設定してください。",
|
||
"modelSourcePartialWarning": "一部プロバイダーのモデル設定が不正なため、候補から除外しました。",
|
||
"modelSourceFallbackWarning": "live プロバイダー状態の取得に失敗したため、設定済みプロバイダーへフォールバックしました。",
|
||
"importLocalReplaceSuccess": "ローカルファイルから読み込み、Agents/Categories/Other Fields を置き換えました",
|
||
"importLocalFailed": "ローカルファイルの読み込みに失敗しました: {{error}}",
|
||
"agentKeyPlaceholder": "agent キー",
|
||
"categoryKeyPlaceholder": "カテゴリキー",
|
||
"modelNamePlaceholder": "model-name",
|
||
"custom": "カスタム",
|
||
"customCategories": "カスタムカテゴリ",
|
||
"modelConfiguration": "モデル設定",
|
||
"fillRecommended": "推奨を入力",
|
||
"fillRecommendedSuccess": "推奨モデル {{count}} 件を設定しました",
|
||
"fillRecommendedPartial": "推奨モデル {{filled}} 件を設定、{{unmatched}} 件は未一致",
|
||
"fillRecommendedAllSet": "すべてのスロットにモデルが設定済みです",
|
||
"fillRecommendedNoMatch": "推奨モデルが設定済みプロバイダーに見つかりませんでした",
|
||
"configSummary": "{{agents}} 個の Agent、{{categories}} 個の Category を設定済み · ⚙ で詳細を展開",
|
||
"enabledModelsCount": "設定済みモデル {{count}} 件",
|
||
"source": "出典:",
|
||
"otherFieldsJson": "その他のフィールド (JSON)",
|
||
"searchOrType": "検索またはカスタム値を入力...",
|
||
"noMatches": "一致する項目がありません",
|
||
"jsonMustBeObject": "{{field}} は JSON オブジェクトである必要があります",
|
||
"jsonInvalid": "{{field}} に無効な JSON が含まれています",
|
||
"importGlobalSuccess": "ローカルファイルからグローバル設定を読み込みました(未保存)",
|
||
"importGlobalFailed": "ローカルファイルの読み込みに失敗しました: {{error}}",
|
||
"importLocal": "ローカルからインポート",
|
||
"saveGlobalConfig": "グローバル設定を保存",
|
||
"schemaUrl": "$schema",
|
||
"resetDefault": "デフォルトに戻す",
|
||
"sisyphusAgentConfig": "Sisyphus Agent 設定",
|
||
"disabledAgents": "Agents",
|
||
"disabledAgentsPlaceholder": "無効化する Agents",
|
||
"disabledMcps": "MCPs",
|
||
"disabledMcpsPlaceholder": "無効化する MCPs",
|
||
"disabledHooks": "Hooks",
|
||
"disabledHooksPlaceholder": "無効化する Hooks",
|
||
"disabledSkills": "Skills",
|
||
"disabledSkillsPlaceholder": "無効化する Skills",
|
||
"advancedLsp": "LSP 設定",
|
||
"advancedExperimental": "実験的機能",
|
||
"advancedBackgroundTask": "バックグラウンドタスク",
|
||
"advancedBrowserAutomation": "ブラウザ自動化",
|
||
"advancedClaudeCode": "Claude Code",
|
||
"agentDesc": {
|
||
"sisyphus": "メインオーケストレーター",
|
||
"hephaestus": "自律型ディープワーカー",
|
||
"prometheus": "戦略プランナー",
|
||
"atlas": "タスクマネージャー",
|
||
"oracle": "戦略アドバイザー",
|
||
"librarian": "マルチリポジトリ研究員",
|
||
"explore": "高速コード検索",
|
||
"multimodalLooker": "メディアアナライザー",
|
||
"metis": "計画前分析アドバイザー",
|
||
"momus": "プランレビュアー",
|
||
"sisyphusJunior": "委任タスクエグゼキューター"
|
||
},
|
||
"agentTooltip": {
|
||
"sisyphus": "メインオーケストレーター。タスクの計画、委任、並列実行を担当。拡張思考(32k バジェット)を使用し、TODO リストでワークフローを駆動してタスク完了を確保します。",
|
||
"atlas": "メインオーケストレーター(TODO リスト保持)。実行フェーズでのタスク配分と調整を担当。すべての作業を直接行うのではなく、専門エージェントに委任します。",
|
||
"prometheus": "戦略プランナー。インタビューモードで要件を収集し、詳細な作業計画を策定。.sisyphus/ ディレクトリ内の Markdown ファイルの読み書きのみ可能で、直接コードを書くことはありません。",
|
||
"hephaestus": "自律型ディープワーカー(「正当な職人」)。AmpCode ディープモードに着想を得た目標指向の実行を行い、行動前に 2-5 個の探索/ライブラリアンエージェントを並列起動して調査します。",
|
||
"oracle": "アーキテクチャ決定とデバッグのアドバイザー。読み取り専用のコンサルティングエージェントで、優れた論理的推論と深い分析を提供。ファイルの書き込みやタスクの委任はできません。",
|
||
"librarian": "マルチリポジトリ分析とドキュメント検索の専門家。コードベースを深く理解し、エビデンスに基づく回答を提供。公式ドキュメントやオープンソース実装例の検索に長けています。",
|
||
"explore": "高速コードベース探索とコンテキスト grep の専門家。軽量モデルを使用した高速検索で、コード構造を理解するための先鋒です。",
|
||
"multimodalLooker": "ビジュアルコンテンツの専門家。PDF、画像、グラフなどの非テキストメディアを分析し、情報とインサイトを抽出します。",
|
||
"metis": "プランコンサルタント。計画前に事前分析を行い、隠れた意図、曖昧な点、AI の失敗ポイントを特定して、過剰エンジニアリングを防止します。",
|
||
"momus": "プランレビュアー。計画の明確さ、検証可能性、完全性を高精度で検証。計画が完璧になるまで却下と修正を要求します。",
|
||
"sisyphusJunior": "カテゴリ生成のエグゼキューター。category パラメータにより自動生成され、割り当てられたタスクの実行に専念し、再委任はできません。無限委任ループを防止します。"
|
||
},
|
||
"categoryDesc": {
|
||
"visualEngineering": "ビジュアル/フロントエンド工学",
|
||
"ultrabrain": "超深度思考",
|
||
"deep": "ディープワーク",
|
||
"artistry": "クリエイティブ/芸術",
|
||
"quick": "クイックレスポンス",
|
||
"unspecifiedLow": "汎用ロースペック",
|
||
"unspecifiedHigh": "汎用ハイスペック",
|
||
"writing": "ライティング"
|
||
},
|
||
"categoryTooltip": {
|
||
"visualEngineering": "フロントエンドとビジュアルエンジニアリングカテゴリ。UI/UX デザイン、スタイリング、アニメーション、インターフェース実装に特化。デフォルトで Gemini 3 Pro モデルを使用。",
|
||
"ultrabrain": "ディープロジック推論カテゴリ。広範な分析が必要な複雑なアーキテクチャ決定に使用。デフォルトで GPT-5.3 Codex の超高推論バリアントを使用。",
|
||
"deep": "ディープ自律問題解決カテゴリ。目標指向の実行で、行動前に徹底的な調査を実施。深い理解が必要な難問に適しています。",
|
||
"artistry": "高度にクリエイティブで芸術的なタスクカテゴリ。斬新なアイデアとクリエイティブなソリューションを促進。デフォルトで Gemini 3 Pro の max バリアントを使用。",
|
||
"quick": "軽量タスクカテゴリ。単一ファイルの修正、タイポ修正、簡単な調整などの些細な作業に使用。デフォルトで Claude Haiku 4.5 高速モデルを使用。",
|
||
"unspecifiedLow": "未分類の低作業量タスクカテゴリ。他のカテゴリに該当せず作業量が小さいタスクに適用。デフォルトで Claude Sonnet 4.5 を使用。",
|
||
"unspecifiedHigh": "未分類の高作業量タスクカテゴリ。他のカテゴリに該当せず作業量が大きいタスクに適用。デフォルトで Claude Opus 4.6 の max バリアントを使用。",
|
||
"writing": "ライティングカテゴリ。ドキュメント、散文、技術文書に特化。デフォルトで Gemini 3 Flash 高速生成モデルを使用。"
|
||
},
|
||
"slimAgentDesc": {
|
||
"orchestrator": "オーケストレーター",
|
||
"oracle": "オラクル",
|
||
"librarian": "ライブラリアン",
|
||
"explorer": "エクスプローラー",
|
||
"designer": "デザイナー",
|
||
"fixer": "フィクサー"
|
||
},
|
||
"slimAgentTooltip": {
|
||
"orchestrator": "実行コードの作成、マルチエージェントワークフローの調整、エキスパートの召喚",
|
||
"oracle": "根本原因分析、アーキテクチャレビュー、デバッグガイダンス(読み取り専用)",
|
||
"librarian": "ドキュメント検索、GitHubコード検索(読み取り専用)",
|
||
"explorer": "正規表現検索、ASTパターンマッチング、ファイル検出(読み取り専用)",
|
||
"designer": "モダンなレスポンシブデザイン、CSS/Tailwindの専門知識",
|
||
"fixer": "コード実装、リファクタリング、テスト、検証"
|
||
}
|
||
},
|
||
"openclawConfig": {
|
||
"defaultModel": {
|
||
"title": "デフォルトモデル",
|
||
"description": "OpenClaw のデフォルトのプライマリモデルとフォールバックモデルを設定します",
|
||
"primary": "プライマリモデル",
|
||
"primaryPlaceholder": "例: deepseek/deepseek-chat",
|
||
"fallbacks": "フォールバックモデル",
|
||
"fallbacksPlaceholder": "例: openrouter/anthropic/claude-sonnet-4.5",
|
||
"addFallback": "フォールバックモデルを追加",
|
||
"saved": "デフォルトモデル設定を保存しました",
|
||
"saveFailed": "デフォルトモデルの保存に失敗しました"
|
||
},
|
||
"modelCatalog": {
|
||
"title": "モデルカタログ",
|
||
"description": "モデルのエイリアスと許可リストを設定します",
|
||
"modelId": "モデル ID",
|
||
"modelIdPlaceholder": "例: deepseek/deepseek-chat",
|
||
"alias": "エイリアス",
|
||
"aliasPlaceholder": "例: DeepSeek",
|
||
"addEntry": "モデルを追加",
|
||
"removeEntry": "削除",
|
||
"saved": "モデルカタログを保存しました",
|
||
"saveFailed": "モデルカタログの保存に失敗しました",
|
||
"empty": "モデルカタログエントリがありません",
|
||
"emptyHint": "エイリアスを設定するにはカタログにモデルを追加してください"
|
||
},
|
||
"suggestedDefaults": "推奨デフォルト設定を適用",
|
||
"suggestedDefaultsHint": "このプリセットの推奨デフォルトモデル設定を使用します"
|
||
}
|
||
}
|