omniroute 1.7.2 → 1.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ar.md +4 -0
- package/README.bg.md +4 -0
- package/README.da.md +4 -0
- package/README.de.md +13 -9
- package/README.es.md +13 -9
- package/README.fi.md +4 -0
- package/README.fr.md +13 -9
- package/README.he.md +29 -25
- package/README.hu.md +4 -0
- package/README.id.md +4 -0
- package/README.in.md +4 -0
- package/README.it.md +13 -9
- package/README.ja.md +4 -0
- package/README.ko.md +29 -25
- package/README.md +45 -0
- package/README.ms.md +4 -0
- package/README.nl.md +4 -0
- package/README.no.md +4 -0
- package/README.phi.md +4 -0
- package/README.pl.md +4 -0
- package/README.pt-BR.md +29 -25
- package/README.pt.md +4 -0
- package/README.ro.md +4 -0
- package/README.ru.md +13 -9
- package/README.sk.md +4 -0
- package/README.sv.md +4 -0
- package/README.th.md +16 -12
- package/README.uk-UA.md +4 -0
- package/README.vi.md +4 -0
- package/README.zh-CN.md +26 -22
- package/app/.env +122 -0
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +30 -28
- package/app/.next/build-manifest.json +3 -3
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/required-server-files.json +1 -1
- package/app/.next/routes-manifest.json +12 -0
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/media/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
- package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page.js +3 -3
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +2 -2
- package/app/.next/server/app/_global-error.rsc +4 -4
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +4 -4
- package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page.js +2 -2
- package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/login/route.js +1 -1
- package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/logout/route.js +1 -1
- package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/status/route.js +1 -1
- package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cache/route.js +1 -1
- package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cache/stats/route.js +1 -1
- package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/backups/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/status/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/metrics/route.js +1 -1
- package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/route.js +1 -1
- package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/test/route.js +1 -1
- package/app/.next/server/app/api/combos/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/compliance/audit-log/route.js +1 -1
- package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/export/route.js +1 -1
- package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/exportAll/route.js +1 -1
- package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/import/route.js +1 -1
- package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/route.js +1 -1
- package/app/.next/server/app/api/db-backups/route.js.nft.json +1 -1
- package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/evals/[suiteId]/route.js +1 -1
- package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/evals/route.js +1 -1
- package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/fallback/chains/route.js +2 -2
- package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/init/route.js +1 -1
- package/app/.next/server/app/api/init/route.js.nft.json +1 -1
- package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/route.js +1 -1
- package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
- package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/logs/console/route.js +1 -1
- package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js +1 -1
- package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/availability/route.js +1 -1
- package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/catalog/route.js +2 -2
- package/app/.next/server/app/api/models/catalog/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/route.js +2 -2
- package/app/.next/server/app/api/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/monitoring/health/route.js +2 -2
- package/app/.next/server/app/api/monitoring/health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +2 -2
- package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/policies/route.js +2 -2
- package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/defaults/route.js +1 -1
- package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/models/route.js +1 -1
- package/app/.next/server/app/api/pricing/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/route.js +1 -1
- package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
- package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-metrics/route.js +2 -2
- package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-models/route.js +1 -1
- package/app/.next/server/app/api/provider-models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/route.js +2 -2
- package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
- package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route.js +2 -2
- package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/client/route.js +1 -1
- package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/route.js +2 -2
- package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/validate/route.js +1 -1
- package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/rate-limit/route.js +1 -1
- package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/rate-limits/route.js +1 -1
- package/app/.next/server/app/api/rate-limits/route.js.nft.json +1 -1
- package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/resilience/reset/route.js +1 -1
- package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/resilience/route.js +1 -1
- package/app/.next/server/app/api/resilience/route.js.nft.json +1 -1
- package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/restart/route.js +1 -1
- package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sessions/route.js +1 -1
- package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/background-degradation/route.js +1 -0
- package/app/.next/server/app/api/settings/background-degradation/route.js.nft.json +1 -0
- package/app/.next/server/app/api/settings/background-degradation/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/settings/combo-defaults/route.js +1 -1
- package/app/.next/server/app/api/settings/combo-defaults/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/ip-filter/route.js +1 -1
- package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/model-aliases/route.js +1 -0
- package/app/.next/server/app/api/settings/model-aliases/route.js.nft.json +1 -0
- package/app/.next/server/app/api/settings/model-aliases/route_client-reference-manifest.js +1 -0
- package/app/.next/server/app/api/settings/proxy/route.js +1 -1
- package/app/.next/server/app/api/settings/proxy/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/proxy/test/route.js +1 -1
- package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/route.js +1 -1
- package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route.js +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/thinking-budget/route.js +1 -1
- package/app/.next/server/app/api/settings/thinking-budget/route.js.nft.json +1 -1
- package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/shutdown/route.js +1 -1
- package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/storage/health/route.js +1 -1
- package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sync/cloud/route.js +1 -1
- package/app/.next/server/app/api/sync/cloud/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sync/initialize/route.js +1 -1
- package/app/.next/server/app/api/sync/initialize/route.js.nft.json +1 -1
- package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tags/route.js +1 -1
- package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/telemetry/summary/route.js +1 -1
- package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/token-health/route.js +1 -1
- package/app/.next/server/app/api/token-health/route.js.nft.json +1 -1
- package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/detect/route.js +1 -1
- package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/history/route.js +1 -1
- package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/load/route.js +1 -1
- package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/save/route.js +1 -1
- package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/send/route.js +1 -1
- package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/translate/route.js +1 -1
- package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
- package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/analytics/route.js +1 -1
- package/app/.next/server/app/api/usage/analytics/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/budget/route.js +2 -2
- package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/[id]/route.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/[id]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/route.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/history/route.js +1 -1
- package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/logs/route.js +1 -1
- package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/proxy-logs/route.js +1 -1
- package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
- package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
- package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/images/generations/route.js +1 -1
- package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js +1 -1
- package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/models/route.js +2 -2
- package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/moderations/route.js +1 -1
- package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/music/generations/route.js +1 -1
- package/app/.next/server/app/api/v1/music/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/music/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/rerank/route.js +1 -1
- package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/responses/route.js +1 -1
- package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/route.js +1 -1
- package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/videos/generations/route.js +1 -1
- package/app/.next/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1/videos/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/route.js +2 -2
- package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback/page.js +2 -2
- package/app/.next/server/app/callback/page.js.nft.json +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs/page.js +3 -3
- package/app/.next/server/app/docs/page.js.nft.json +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden/page.js +2 -2
- package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password/page.js +2 -2
- package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing/page.js +2 -2
- package/app/.next/server/app/landing/page.js.nft.json +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login/page.js +2 -2
- package/app/.next/server/app/login/page.js.nft.json +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page.js +2 -2
- package/app/.next/server/app/page.js.nft.json +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page.js +2 -2
- package/app/.next/server/app/privacy/page.js.nft.json +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms/page.js +2 -2
- package/app/.next/server/app/terms/page.js.nft.json +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +30 -28
- package/app/.next/server/chunks/1248.js +1 -1
- package/app/.next/server/chunks/1308.js +1 -1
- package/app/.next/server/chunks/1526.js +1 -1
- package/app/.next/server/chunks/1584.js +1 -1
- package/app/.next/server/chunks/1623.js +1 -1
- package/app/.next/server/chunks/1880.js +1 -1
- package/app/.next/server/chunks/1960.js +1 -1
- package/app/.next/server/chunks/1990.js +1 -1
- package/app/.next/server/chunks/2180.js +1 -1
- package/app/.next/server/chunks/2214.js +1 -1
- package/app/.next/server/chunks/2372.js +1 -1
- package/app/.next/server/chunks/2594.js +1 -1
- package/app/.next/server/chunks/2767.js +1 -1
- package/app/.next/server/chunks/2901.js +2 -2
- package/app/.next/server/chunks/2910.js +1 -1
- package/app/.next/server/chunks/3371.js +1 -1
- package/app/.next/server/chunks/3447.js +1 -1
- package/app/.next/server/chunks/3498.js +1 -1
- package/app/.next/server/chunks/3596.js +1 -1
- package/app/.next/server/chunks/3801.js +2 -0
- package/app/.next/server/chunks/3911.js +1 -1
- package/app/.next/server/chunks/4488.js +1 -1
- package/app/.next/server/chunks/4568.js +1 -1
- package/app/.next/server/chunks/496.js +1 -1
- package/app/.next/server/chunks/5047.js +1 -1
- package/app/.next/server/chunks/5094.js +1 -1
- package/app/.next/server/chunks/5097.js +1 -1
- package/app/.next/server/chunks/5521.js +1 -1
- package/app/.next/server/chunks/5945.js +1 -1
- package/app/.next/server/chunks/6118.js +1 -1
- package/app/.next/server/chunks/6930.js +1 -1
- package/app/.next/server/chunks/7011.js +1 -1
- package/app/.next/server/chunks/708.js +1 -1
- package/app/.next/server/chunks/7109.js +1 -1
- package/app/.next/server/chunks/7230.js +2 -2
- package/app/.next/server/chunks/7650.js +1 -1
- package/app/.next/server/chunks/8020.js +3 -3
- package/app/.next/server/chunks/8220.js +1 -1
- package/app/.next/server/chunks/8464.js +1 -1
- package/app/.next/server/chunks/8706.js +1 -1
- package/app/.next/server/chunks/8976.js +1 -1
- package/app/.next/server/chunks/9119.js +1 -1
- package/app/.next/server/chunks/944.js +1 -1
- package/app/.next/server/chunks/9548.js +1 -0
- package/app/.next/server/chunks/9679.js +1 -0
- package/app/.next/server/chunks/9824.js +2 -2
- package/app/.next/server/chunks/9837.js +1 -1
- package/app/.next/server/middleware-build-manifest.js +1 -1
- package/app/.next/server/middleware.js +3 -3
- package/app/.next/server/next-font-manifest.js +1 -1
- package/app/.next/server/next-font-manifest.json +1 -1
- package/app/.next/server/pages/500.html +2 -2
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/a624rqqXG_QtNPqv8ZMWa/_buildManifest.js +1 -0
- package/app/.next/static/chunks/5846-1dad4fadf761e0d8.js +2 -0
- package/app/.next/static/chunks/{993-035473765d7d1871.js → 993-9f36b0b069ca090e.js} +2 -2
- package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/loading-ce5214cdf489c9df.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/{page-52f76c7c91444ec2.js → page-20786f2c7fdbab57.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-12d772841a253032.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-c9b98846b8479f3f.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-5e34630a5dc32825.js +15 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-3dce7fccfcf177dd.js → page-85a3e6a423aceded.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/{page-3ed2a7685adf9b91.js → page-cdb8071441476da9.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-588b8bc3c4e631e0.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/health/{page-9a6519bf1468f16e.js → page-b480b3cb318782d7.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-0ae1d6cc5fc4671f.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/{page-833d24f322a20f5a.js → page-ffdc1dcf074c7528.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media/page-72b768421394b42c.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/{page-d424641c7e428be9.js → page-5378e9473a20cd6a.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/page-5c87e49261a22fd5.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-b38f2d03bae8166a.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{error-2f0177a2197dd556.js → error-f0730d6d62d02e82.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{loading-99ab4d478260d53b.js → loading-59cbccd6d5185ca9.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-a7fb36872be60fe0.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{page-1f022385b812b987.js → page-40dc5ac82df708e9.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{error-e844916e39172c8b.js → error-cc85c3ff1f63aea6.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{loading-bb068659ee679ff4.js → loading-19fc771a287bcb4c.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-1550a2460948273c.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/pricing/{page-f10a8d4bb8236913.js → page-cbe9b21b62bbc2bd.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/{page-83b07523f81d6282.js → page-534e13a69cb60a4f.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/{page-9cc99ab874fc36e7.js → page-86a076d820931a30.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/{layout-00d5d56af65098a9.js → layout-16302e54f9ef3d0e.js} +1 -1
- package/app/.next/static/chunks/app/_global-error/page-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/_not-found/page-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/auth/login/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/auth/logout/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/auth/status/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cache/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cache/stats/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/backups/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cli-tools/status/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/auth/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/combos/[id]/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/combos/metrics/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/combos/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/combos/test/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/compliance/audit-log/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/export/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/exportAll/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/import/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/db-backups/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/evals/[suiteId]/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/evals/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/fallback/chains/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/init/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/keys/[id]/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/keys/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/logs/console/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/models/alias/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/models/availability/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/models/catalog/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/models/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/monitoring/health/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/policies/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/defaults/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/models/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/pricing/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/provider-metrics/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/provider-models/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/providers/client/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/providers/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/providers/test-batch/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/providers/validate/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/rate-limit/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/rate-limits/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/resilience/reset/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/resilience/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/restart/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/sessions/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/settings/background-degradation/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/settings/combo-defaults/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/settings/ip-filter/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/settings/model-aliases/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/settings/proxy/test/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/settings/require-login/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/settings/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/settings/system-prompt/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/settings/thinking-budget/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/shutdown/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/storage/health/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/sync/cloud/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/sync/initialize/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/tags/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/telemetry/summary/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/token-health/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/translator/detect/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/translator/history/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/translator/load/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/translator/save/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/translator/send/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/translator/translate/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/analytics/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/budget/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/call-logs/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/history/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/logs/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/proxy-logs/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/usage/request-logs/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/api/chat/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/embeddings/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/images/generations/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/messages/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/models/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/moderations/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/music/generations/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/rerank/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/responses/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1/videos/generations/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/api/v1beta/models/route-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/callback/{page-585a53f7dc6a30f1.js → page-0f0ebc0820dd18a5.js} +1 -1
- package/app/.next/static/chunks/app/docs/{page-2fe9dcbeb3f738c0.js → page-3658b3f15df3a19e.js} +1 -1
- package/app/.next/static/chunks/app/{error-0d59fc4efafbc38c.js → error-f918d9961a2368d3.js} +1 -1
- package/app/.next/static/chunks/app/forbidden/page-77657dfa95e61cd8.js +1 -0
- package/app/.next/static/chunks/app/forgot-password/page-be3bacc125c30a6b.js +1 -0
- package/app/.next/static/chunks/app/global-error-504ff9093e2a997d.js +1 -0
- package/app/.next/static/chunks/app/landing/page-75b0c988db383cfc.js +1 -0
- package/app/.next/static/chunks/app/{layout-108592eafb959363.js → layout-070972eb026af319.js} +1 -1
- package/app/.next/static/chunks/app/login/{page-121c612ee459e7c2.js → page-6c769465e407368f.js} +1 -1
- package/app/.next/static/chunks/app/not-found-11b712c853d93172.js +1 -0
- package/app/.next/static/chunks/app/page-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/app/privacy/{page-2fe9dcbeb3f738c0.js → page-3658b3f15df3a19e.js} +1 -1
- package/app/.next/static/chunks/app/terms/{page-2fe9dcbeb3f738c0.js → page-3658b3f15df3a19e.js} +1 -1
- package/app/.next/static/chunks/{main-app-c9da11a8061df107.js → main-app-ae230f6bf51a5edb.js} +1 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-6301a4ed902b878a.js +1 -0
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-6301a4ed902b878a.js +1 -0
- package/app/.next/static/css/bcd1741aee9d39ab.css +1 -0
- package/app/package.json +1 -1
- package/app/server.js +1 -1
- package/package.json +1 -1
- package/app/.next/server/chunks/5248.js +0 -1
- package/app/.next/server/chunks/5393.js +0 -2
- package/app/.next/static/chunks/5846-9e0f1f3afcbfb08c.js +0 -2
- package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/loading-6f1750506292c630.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-1dd4d0c348a7b0a6.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-e5bf8955e7b9a4f5.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-77ab26722f5c56c7.js +0 -15
- package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-1420c3ca376f1585.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-f4a2d6d07df5ddc4.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/media/page-1d0ca9b5d3eaf7cd.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/page-388840686801f3f5.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-9c8ffb212f855704.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-31cdb6e15134d8c2.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-1393d4935fc087cf.js +0 -1
- package/app/.next/static/chunks/app/_global-error/page-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/_not-found/page-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/auth/login/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/auth/logout/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/auth/status/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cache/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cache/stats/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/backups/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cli-tools/status/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/auth/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/credentials/update/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/model/resolve/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/cloud/models/alias/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/combos/[id]/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/combos/metrics/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/combos/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/combos/test/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/compliance/audit-log/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/db-backups/export/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/db-backups/exportAll/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/db-backups/import/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/db-backups/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/evals/[suiteId]/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/evals/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/fallback/chains/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/init/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/keys/[id]/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/keys/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/logs/console/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/models/alias/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/models/availability/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/models/catalog/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/models/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/monitoring/health/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/cursor/import/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/import/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/policies/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/defaults/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/models/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/pricing/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/provider-metrics/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/provider-models/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/provider-nodes/validate/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/models/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/providers/[id]/test/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/providers/client/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/providers/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/providers/test-batch/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/providers/validate/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/rate-limit/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/rate-limits/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/resilience/reset/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/resilience/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/restart/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/sessions/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/settings/combo-defaults/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/settings/ip-filter/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/settings/proxy/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/settings/proxy/test/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/settings/require-login/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/settings/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/settings/system-prompt/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/settings/thinking-budget/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/shutdown/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/storage/health/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/sync/cloud/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/sync/initialize/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/tags/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/telemetry/summary/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/token-health/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/translator/detect/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/translator/history/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/translator/load/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/translator/save/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/translator/send/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/translator/translate/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/usage/[connectionId]/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/usage/analytics/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/usage/budget/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/usage/call-logs/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/usage/history/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/usage/logs/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/usage/proxy-logs/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/usage/request-logs/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/api/chat/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/speech/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/chat/completions/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/embeddings/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/images/generations/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/messages/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/models/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/moderations/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/music/generations/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/rerank/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/responses/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1/videos/generations/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/api/v1beta/models/route-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/app/forbidden/page-df886dfa2d5bd9fa.js +0 -1
- package/app/.next/static/chunks/app/forgot-password/page-2a495f0b0c653ab4.js +0 -1
- package/app/.next/static/chunks/app/global-error-41eef2a698918fc1.js +0 -1
- package/app/.next/static/chunks/app/landing/page-9d540ab1716f8e3e.js +0 -1
- package/app/.next/static/chunks/app/not-found-1dbd8c3e506fe00f.js +0 -1
- package/app/.next/static/chunks/app/page-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-cab2fb7f592d3c36.js +0 -1
- package/app/.next/static/css/b77490a14619ffbb.css +0 -1
- package/app/.next/static/ozfkuTtQLl3_rnlOdkSZi/_buildManifest.js +0 -1
- /package/app/.next/static/{ozfkuTtQLl3_rnlOdkSZi → a624rqqXG_QtNPqv8ZMWa}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=9837,exports.ids=[9837],exports.modules={79837:a=>{a.exports=JSON.parse('{"common":{"save":"저장","cancel":"취소","delete":"삭제","loading":"로드 중...","error":"오류가 발생했습니다","success":"성공","confirm":"확실합니까?","refresh":"새로고침","close":"닫기","add":"추가","edit":"편집","search":"검색","back":"뒤로","next":"다음","submit":"제출","reset":"재설정","copy":"복사","copied":"복사되었습니다!","enabled":"활성화됨","disabled":"장애인","active":"활성","inactive":"비활성","noData":"사용 가능한 데이터가 없습니다.","configure":"구성","manage":"관리하다","name":"이름","actions":"작업","status":"상태","type":"유형","model":"모델","models":"모델","provider":"공급자","account":"계정","time":"시간","details":"세부정보","created":"생성됨","lastUsed":"마지막으로 사용됨","loadMore":"더 로드하기","noResults":"검색결과가 없습니다","reloadPage":"페이지 새로고침","connected":"연결됨","disconnected":"연결이 끊김","notConfigured":"구성되지 않음","testConnection":"연결 테스트","enable":"활성화","disable":"비활성화","columns":"열","newest":"최신","oldest":"가장 오래된","all":"모두","none":"없음","yes":"예","no":"아니요","warning":"경고","note":"참고","free":"무료","skipToContent":"콘텐츠로 건너뛰기"},"sidebar":{"home":"홈","dashboard":"대시보드","providers":"공급자","combos":"콤보","usage":"사용법","analytics":"분석","costs":"비용","health":"건강","limits":"한도 및 할당량","cliTools":"CLI 도구","settings":"설정","translator":"번역기","docs":"문서","issues":"문제","endpoint":"엔드포인트","apiManager":"API 관리자","logs":"로그","auditLog":"감사 로그","shutdown":"종료","restart":"다시 시작","shutdownConfirm":"OmniRoute를 종료하시겠습니까?","restartConfirm":"OmniRoute를 다시 시작하시겠습니까?","version":"v{version}","debug":"디버그","system":"시스템","help":"도움말","serverDisconnected":"서버 연결 끊김","serverDisconnectedMsg":"프록시 서버가 중지되었거나 다시 시작되는 중입니다.","expandSidebar":"사이드바 확장","collapseSidebar":"사이드바 접기"},"header":{"logout":"로그아웃","language":"언어","providers":"공급자","providerDescription":"AI 공급자 연결 관리","combos":"콤보","comboDescription":"폴백을 사용한 모델 콤보","usage":"사용 및 분석","usageDescription":"API 사용량, 토큰 소비 및 요청 로그를 모니터링하세요.","analytics":"분석","analyticsDescription":"차트, 추세 및 평가 통찰력","cliTools":"CLI 도구","cliToolsDescription":"CLI 도구 구성","home":"홈","homeDescription":"OmniRoute에 오신 것을 환영합니다","endpoint":"엔드포인트","endpointDescription":"API 엔드포인트 구성","settings":"설정","settingsDescription":"환경설정 관리","openaiCompatible":"OpenAI 호환","anthropicCompatible":"인류 친화적"},"home":{"quickStart":"빠른 시작","quickStartDesc":"4단계로 시작해 보세요. 공급자를 연결하고, 모델을 라우팅하고, 모든 것을 모니터링하세요.","fullDocs":"전체 문서","step1Title":"1. API 키 생성","step1Desc":"<endpoint>Endpoint</endpoint> -> 등록된 키로 이동합니다. 환경당 하나의 키를 생성합니다.","step2Title":"2. 공급자 연결","step2Desc":"<providers>Providers</providers>에 계정을 추가하세요. OAuth, API 키 및 무료 등급을 지원합니다.","step3Title":"3. 고객에게 지시하십시오","step3Desc":"IDE 또는 API 클라이언트에서 기본 URL을 {url}으로 설정하세요.","step4Title":"4. 모니터링 및 최적화","step4Desc":"<logs>요청 로그</logs> 및 <analytics>Analytics</analytics>에서 토큰, 비용 및 오류를 추적합니다.","providersOverview":"공급자 개요","configuredOf":"{configured}은(는) {total} 사용 가능한 공급자로 구성되었습니다.","noModelsAvailable":"이 제공업체에 사용할 수 있는 모델이 없습니다.","configureFirst":"먼저 {providers}에서 연결을 구성하세요.","configureProvider":"공급자 구성","modelAvailable":"{count} 모델 사용 가능","modelsAvailable":"{count} 모델 사용 가능","connectionsActive":"{count} 연결 활성","connectionsActivePlural":"{count} 연결이 활성화되었습니다.","copyModelName":"모델명 복사","documentation":"문서","healthMonitor":"건강 모니터","reportIssue":"문제 신고","activeError":"{active} 활성 \xb7 {errors} 오류","oauthLabel":"OAuth","apiKeyLabel":"API 키","requestsShort":"{count} 요청","providerModelsTitle":"{provider} - 모델","copiedModel":"복사됨: {model}","aliasLabel":"별칭"},"analytics":{"title":"분석","overviewDescription":"모든 공급자와 모델 전반에 걸쳐 API 사용 패턴, 토큰 소비, 비용, 활동 추세를 모니터링하세요.","evalsDescription":"평가 모음을 실행하여 LLM 엔드포인트를 테스트하고 검증하세요. 모델 품질을 비교하고, 회귀를 감지하고, 벤치마크 대기 시간을 측정합니다.","overview":"개요","evals":"평가"},"apiManager":{"title":"API 키","createKey":"API 키 생성","key":"열쇠","revokeKey":"키 취소","revokeConfirm":"이 API 키를 취소하시겠습니까?","noKeys":"아직 API 키가 없습니다.","noKeysDesc":"엔드포인트에 대한 요청을 인증하기 위한 첫 번째 API 키 생성","keyLabel":"키 라벨","permissions":"권한","expiresAt":"만료","never":"절대로","revoke":"취소","showKey":"키 표시","hideKey":"키 숨기기","copyKey":"API 키 복사","allModels":"모든 모델","selectedModels":"선택된 모델","readOnly":"읽기 전용","fullAccess":"전체 액세스","keyManagement":"API 키 관리","keyManagementDesc":"엔드포인트에 대한 요청을 인증하기 위한 API 키 생성 및 관리","totalKeys":"총 키","restricted":"제한됨","totalRequests":"총 요청","modelsAvailable":"사용 가능한 모델","registeredKeys":"등록된 키","keysRegistered":"{count} 키가 등록되었습니다.","keyRegistered":"{count} 키가 등록되었습니다.","keysSecurityNote":"각 키는 사용 추적을 분리하고 독립적으로 취소할 수 있습니다. 보안을 위해 키는 생성 후 마스크 처리됩니다.","createFirstKey":"첫 번째 키 만들기","name":"이름","usage":"사용법","created":"생성됨","actions":"작업","reqs":"요구 사항","neverUsed":"한번도 사용하지 않음","deleteConfirm":"이 API 키를 삭제하시겠습니까?","usageTips":"사용 팁","tipAuth":"Authorization 헤더의 API 키를 Bearer YOUR_KEY로 사용하세요.","tipSecure":"키는 생성 중에 한 번만 표시되므로 안전하게 보관하세요.","tipSeparate":"다양한 클라이언트 또는 환경에 대해 별도의 키 생성","tipRestrict":"더 나은 보안 및 비용 관리를 위해 키를 특정 모델로 제한합니다.","keyName":"키 이름","keyNamePlaceholder":"예: 생산 키, 개발 키","keyNameDesc":"이 키의 목적을 식별하려면 설명이 포함된 이름을 선택하세요.","keyCreated":"API 키가 생성되었습니다.","keyCreatedSuccess":"키가 생성되었습니다!","keyCreatedNote":"지금 이 키를 복사하여 저장하세요. 다시 표시되지 않습니다.","done":"완료","savePermissions":"저장 권한","allowAll":"모두 허용","restrict":"제한하다","allowAllInfo":"이 키는 사용 가능한 모든 모델에 액세스할 수 있습니다.","restrictInfo":"이 키는 {total} 모델 중 {selected}에 액세스할 수 있습니다.","selected":"{count} 선택됨","all":"모두","clear":"지우기","searchModels":"이름이나 제공업체로 모델 검색...","noModelsFound":"모델을 찾을 수 없습니다.","keyNameRequired":"키 이름은 필수 항목입니다.","keyNameTooLong":"키 이름은 {max}자 이하여야 합니다.","keyNameInvalid":"키 이름에는 문자, 숫자, 공백, 하이픈, 밑줄만 포함할 수 있습니다.","invalidKeyName":"잘못된 키 이름","failedCreateKey":"키를 생성하지 못했습니다.","failedCreateKeyRetry":"키를 생성하지 못했습니다. 다시 시도해 주세요.","invalidKeyId":"잘못된 키 ID","failedDeleteKey":"키를 삭제하지 못했습니다.","failedDeleteKeyRetry":"키를 삭제하지 못했습니다. 다시 시도해 주세요.","invalidModelsSelection":"잘못된 모델 선택","cannotSelectMoreThanModels":"{max}개 이상의 모델을 선택할 수 없습니다.","failedUpdatePermissions":"권한을 업데이트하지 못했습니다.","failedUpdatePermissionsRetry":"권한을 업데이트하지 못했습니다. 다시 시도해 주세요.","unknownProvider":"알 수 없음","copyMaskedKey":"마스크된 키 복사","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"마지막: {date}","editPermissions":"권한 편집","deleteKey":"키 삭제","model":"{count} 모델","models":"{count} 모델","permissionsTitle":"권한: {name}","allowAllDesc":"이 키는 사용 가능한 모든 모델에 액세스할 수 있습니다.","restrictDesc":"이 키는 {totalModels} 모델 중 {selectedCount}에 액세스할 수 있습니다.","selectedCount":"{count} 선택됨"},"auditLog":{"title":"감사 로그","searchPlaceholder":"검색 작업...","action":"액션","actor":"배우","target":"대상","ipAddress":"IP 주소","timestamp":"타임스탬프","noEntries":"감사 항목을 찾을 수 없습니다.","filterByAction":"작업별로 필터링...","filterByActor":"배우별로 필터링...","filterEntriesAria":"감사 로그 항목 필터링","filterByActionTypeAria":"작업 유형별로 필터링","filterByActorAria":"배우별로 필터링","refreshAuditLogAria":"감사 로그 새로 고침","tableAria":"감사 로그 항목","failedFetchAuditLog":"감사 로그를 가져오지 못했습니다.","notAvailable":"—","description":"관리 조치 및 보안 이벤트","showing":"{count} 항목 표시 중(오프셋 {offset})","previous":"이전"},"cliTools":{"title":"CLI 도구","noActiveProviders":"활성 제공업체 없음","noActiveProvidersDesc":"CLI 도구를 구성하려면 먼저 공급자를 추가하고 연결하세요.","mapModels":"지도 모델","testConnection":"연결 테스트","connectionStatus":"연결 상태","configureEndpoint":"끝점 구성","instructions":"지침","modelMapping":"모델 매핑","baseUrl":"기본 URL","apiKey":"API 키","configured":"구성됨","notConfigured":"구성되지 않음","notInstalled":"설치되지 않음","custom":"맞춤","unknown":"알 수 없음","lastSavedAt":"마지막 저장: {date}","never":"절대로","justNow":"지금 막","minutesAgoShort":"{count}분 전","hoursAgoShort":"{count}시간 전","daysAgoShort":"{count}일 전","monthsAgoShort":"{count}개월 전","yearsAgoShort":"{count}년 전","runtimeCheckFailed":"런타임 확인 실패","yourApiKeyPlaceholder":"귀하의 API 키","modelPlaceholder":"공급자/모델 ID","configurationSaved":"구성이 성공적으로 저장되었습니다.","failedToSave":"구성을 저장하지 못했습니다.","noApiKeysCreateOne":"API 키 없음 - 키 페이지에서 키 만들기","defaultOmnirouteKey":"sk_omniroute(기본값)","selectModel":"모델 선택","selectModelForAlias":"{alias} 모델 선택","selectModelForTool":"{tool}의 모델 선택","select":"선택","clear":"지우기","comingSoon":"곧 출시 예정","checkingRuntime":"런타임 상태 확인 중...","guideOnlyIntegration":"가이드 전용 통합(로컬 런타임 필요 없음)","cliRuntimeDetected":"CLI 런타임이 감지되어 준비됨","cliFoundNotRunnable":"CLI를 찾았지만 실행할 수 없음{reason}","cliRuntimeNotDetected":"CLI 런타임이 감지되지 않음","binary":"바이너리","configPath":"구성 경로","configPathShort":"구성","failedCheckRuntimeStatus":"런타임 상태를 확인하지 못했습니다.","copy":"복사","copied":"복사됨","copyConfig":"구성 복사","saveConfig":"구성 저장","selectionSaved":"선택 항목이 저장되었습니다.","guide":"가이드","detected":"감지됨","notReady":"준비되지 않음","active":"활성","inactive":"비활성","startMitm":"MITM 시작","stopMitm":"MITM 중지","mitmStarted":"MITM이 성공적으로 시작되었습니다!","mitmStopped":"MITM이 성공적으로 중지되었습니다!","failedStart":"MITM을 시작하지 못했습니다.","failedStop":"MITM을 중지하지 못했습니다.","saveMappings":"매핑 저장","mappingsSaved":"매핑이 저장되었습니다!","failedSaveMappings":"매핑을 저장하지 못했습니다.","howItWorks":"작동 방식:","antigravityHowWorksDesc":"Antigravity는 Google의 엔드포인트로 요청을 보냅니다. MITM은 이를 가로채서 OmniRoute로 리디렉션합니다.","antigravityStep1":"1. MITM을 시작하여 OmniRoute를 통해 요청을 라우팅합니다.","antigravityStep2Prefix":"2. 추가","antigravityStep2Suffix":"호스트 파일에 127.0.0.1로 저장하세요.","antigravityStep3":"3. 반중력을 공개하면 요청이 프록시됩니다.","sudoPasswordRequiredTitle":"Sudo 비밀번호가 필요합니다","sudoPasswordHint":"호스트 파일 및 시스템 프록시 설정을 수정하려면 관리자 비밀번호가 필요합니다.","enterSudoPassword":"sudo 비밀번호를 입력하세요","sudoPasswordRequiredError":"Sudo 비밀번호가 필요합니다.","cancel":"취소","confirm":"확인","settingsApplied":"설정이 성공적으로 적용되었습니다!","failedApplySettings":"설정을 적용하지 못했습니다.","settingsReset":"설정이 재설정되었습니다!","failedResetSettings":"설정을 재설정하지 못했습니다.","backupRestored":"백업이 복원되었습니다!","failedRestore":"복원하지 못했습니다.","checkingCli":"{tool} CLI 확인 중...","cliNotRunnable":"{tool} CLI가 설치되었지만 실행할 수 없음","cliNotInstalled":"{tool} CLI가 설치되지 않았습니다.","cliNotDetected":"{tool} CLI가 감지되지 않음","cliDetectedReady":"{tool} CLI가 감지되어 준비됨","cliFoundFailedHealthcheck":"{tool} CLI를 찾았지만 런타임 상태 확인에 실패했습니다{reason}.","installCliPrompt":"이 기능을 사용하려면 {tool} CLI를 설치하세요.","installCodexPrompt":"자동 적용 기능을 사용하려면 Codex CLI를 설치하세요.","hide":"숨기기","howToInstall":"설치 방법","installationGuide":"설치 가이드","platforms":"macOS/리눅스/윈도우:","afterInstallationRun":"설치 후 실행","toVerify":"확인하기 위해.","current":"현재","baseUrlPlaceholder":"https://.../v1","resetToDefault":"기본값으로 재설정","providerModelPlaceholder":"공급자/모델 ID","apply":"적용","reset":"재설정","manualConfig":"수동 구성","backups":"백업","configBackups":"구성 백업","noBackupsYet":"아직 백업이 없습니다. 각 적용 또는 재설정 전에 백업이 자동으로 생성됩니다.","restore":"복원","backupRestoredReloading":"백업이 복원되었습니다! 상태를 다시 로드하는 중...","failedRestoreBackup":"백업을 복원하지 못했습니다.","applied":"적용되었습니다!","failed":"실패","resetDone":"재설정!","omnirouteConfiguredOpenAiCompatible":"OmniRoute는 OpenAI 호환 공급자로 구성됩니다.","provider":"공급자","model":"모델","providers":"공급자","auth":"인증","noApiKeysAvailable":"사용 가능한 API 키가 없습니다.","usingDefaultOmniroute":"기본값 사용: sk_omniroute","updateConfig":"구성 업데이트","applyConfig":"구성 적용","noBackupsAvailable":"사용 가능한 백업이 없습니다.","profileSaved":"프로필 \\"{name}\\"이(가) 저장되었습니다!","failedSaveProfile":"프로필을 저장하지 못했습니다.","profileActivated":"프로필이 활성화되었습니다!","failedActivateProfile":"프로필을 활성화하지 못했습니다.","profiles":"프로필","savedProfiles":"저장된 프로필","noProfilesYet":"아직 저장된 프로필이 없습니다. 현재 구성을 아래 프로필로 저장합니다.","activate":"활성화","deleteProfile":"프로필 삭제","profileNamePlaceholder":"프로필 이름(예: 개인 계정)","saveCurrent":"현재 저장","codexAuthNotePrefix":"코덱스 사용","codexAuthNoteMiddle":"와","codexAuthNoteSuffix":"자동 구성하려면 \\"적용\\"을 클릭하세요.","claudeManualConfiguration":"Claude CLI - 수동 구성","codexManualConfiguration":"Codex CLI - 수동 구성","droidManualConfiguration":"Factory Droid - 수동 구성","openClawManualConfiguration":"오픈 클로 - 수동 구성","clineManualConfiguration":"클라인 수동 구성","kiloManualConfiguration":"Kilo 코드 수동 구성","toolDescriptions":{"antigravity":"MITM이 포함된 Google 반중력 IDE","claude":"인류 클로드 코드 CLI","codex":"OpenAI 코덱스 CLI","droid":"팩토리 드로이드 AI 어시스턴트","openclaw":"Claw AI 도우미 열기","cline":"Cline AI 코딩 어시스턴트 CLI","kilo":"킬로코드 AI 어시스턴트 CLI","cursor":"커서 AI 코드 편집기","continue":"AI 어시스턴트 계속하기"},"guides":{"cursor":{"notes":{"0":"이 기능을 사용하려면 Cursor Pro 계정이 필요합니다.","1":"커서는 자체 서버를 통해 요청을 라우팅하므로 로컬 엔드포인트는 지원되지 않습니다. 설정에서 Cloud Endpoint를 활성화하세요."},"steps":{"1":{"title":"설정 열기","desc":"설정 -> 모델로 이동하세요."},"2":{"title":"OpenAI API 활성화","desc":"\\"OpenAI API 키\\" 옵션 활성화"},"3":{"title":"기본 URL"},"4":{"title":"API 키"},"5":{"title":"맞춤 모델 추가","desc":"\\"모든 모델 보기\\" -> \\"사용자 정의 모델 추가\\"를 클릭하세요."},"6":{"title":"모델 선택"}}},"continue":{"steps":{"1":{"title":"구성 열기","desc":"계속 구성 파일 열기"},"2":{"title":"API 키"},"3":{"title":"모델 선택"},"4":{"title":"모델 구성 추가","desc":"모델 배열에 다음 구성을 추가합니다."}}}}},"combos":{"title":"콤보","description":"가중치 기반 라우팅 및 폴백 지원을 통해 모델 콤보 생성","createCombo":"콤보 생성","editCombo":"콤보 편집","deleteCombo":"콤보 삭제","noModels":"모델 없음","noModelsYet":"아직 추가된 모델이 없습니다.","addModel":"모델 추가","addModelToCombo":"콤보에 모델 추가","routingStrategy":"라우팅 전략","maxRetries":"최대 재시도 횟수","timeout":"시간 초과(밀리초)","healthcheck":"건강검진","priority":"우선순위","fallback":"대체","roundRobin":"라운드 로빈","random":"무작위","leastLatency":"최소 지연 시간","comboName":"콤보 이름","comboNamePlaceholder":"내 콤보","deleteConfirm":"이 콤보를 삭제하시겠습니까?","noCombosYet":"아직 콤보가 없습니다.","comboCreated":"콤보가 성공적으로 생성되었습니다.","comboUpdated":"콤보가 성공적으로 업데이트되었습니다.","comboDeleted":"콤보가 삭제되었습니다.","failedCreate":"콤보를 생성하지 못했습니다.","failedUpdate":"콤보를 업데이트하지 못했습니다.","errorCreating":"콤보 생성 중 오류 발생","errorUpdating":"콤보 업데이트 중 오류 발생","errorDeleting":"콤보 삭제 오류","testFailed":"테스트 요청 실패","failedToggle":"콤보를 전환하지 못했습니다.","testResults":"테스트 결과 — {name}","resolvedBy":"해결 방법:","more":"+{count} 더보기","reqs":"요구 사항","success":"성공","proxyConfigured":"프록시가 구성됨","copyComboName":"콤보 이름 복사","enableCombo":"콤보 활성화","disableCombo":"콤보 비활성화","testCombo":"테스트 콤보","duplicate":"중복","proxyConfig":"프록시 구성","nameRequired":"이름은 필수입니다","nameInvalid":"문자, 숫자, -, _, / 및 .만 가능합니다. 허용됨","nameHint":"문자, 숫자, -, _, / 및 . 허용됨","priorityDesc":"순차적 폴백: 모델 1을 먼저 시도한 다음 2 등을 시도합니다.","weightedDesc":"대체 기능을 사용하여 중량 비율로 트래픽을 분산합니다.","roundRobinDesc":"순환 배포: 각 요청은 교대로 다음 모델로 이동합니다.","randomDesc":"균일한 무작위 선택 후 나머지 모델로 대체","leastUsedDesc":"시간이 지남에 따라 로드 밸런싱을 통해 요청이 가장 적은 모델을 선택합니다.","costOptimizedDesc":"가격을 기준으로 가장 저렴한 모델로 먼저 라우팅","models":"모델","autoBalance":"자동 균형","advancedSettings":"고급 설정","retryDelay":"재시도 지연(ms)","concurrencyPerModel":"동시성/모델","queueTimeout":"대기열 시간 초과(밀리초)","advancedHint":"전역 기본값을 사용하려면 비워 두세요. 이는 공급자별 설정을 재정의합니다.","moveUp":"위로 이동","moveDown":"아래로 이동","removeModel":"제거","saving":"저장 중...","weighted":"가중","leastUsed":"가장 적게 사용됨","costOpt":"비용 최적화"},"costs":{"title":"비용","budget":"예산","totalCost":"총 비용","breakdown":"비용 분석","noData":"비용 데이터 없음","byModel":"모델별","byProvider":"공급자별"},"endpoint":{"title":"API 엔드포인트","available":"사용 가능한 엔드포인트","cloudProxy":"클라우드 프록시","disableConfirm":"클라우드 프록시를 비활성화하시겠습니까?","baseUrl":"기본 URL","apiKeyLabel":"API 키","registeredKeys":"등록된 키","chatCompletions":"채팅 완료","responses":"응답","listModels":"모델 나열","usingCloudProxy":"클라우드 프록시 사용","usingLocalServer":"로컬 서버 사용","machineId":"머신 ID: {id}...","disableCloud":"클라우드 비활성화","enableCloud":"클라우드 활성화","modelsAcrossEndpoints":"{endpoints} 엔드포인트 전반의 {models} 모델","chatDesc":"모든 제공업체와의 스트리밍 및 비스트리밍 채팅","embeddings":"임베딩","embeddingsDesc":"검색 및 RAG 파이프라인을 위한 텍스트 임베딩","imageGeneration":"이미지 생성","imageDesc":"텍스트 프롬프트에서 이미지 생성","rerank":"순위 재지정","rerankDesc":"쿼리 관련성에 따라 문서의 순위를 다시 매깁니다.","audioTranscription":"오디오 전사","audioTranscriptionDesc":"오디오 파일을 텍스트로 변환(속삭임)","textToSpeech":"텍스트 음성 변환","textToSpeechDesc":"텍스트를 자연스러운 음성으로 변환","moderations":"조정","moderationsDesc":"콘텐츠 조정 및 안전 분류","enableCloudTitle":"클라우드 프록시 활성화","whatYouGet":"당신이 얻을 것입니다","cloudBenefitAccess":"전 세계 어디에서나 API에 액세스하세요","cloudBenefitShare":"팀과 쉽게 엔드포인트 공유","cloudBenefitPorts":"포트를 열거나 방화벽을 구성할 필요가 없습니다.","cloudBenefitEdge":"빠른 글로벌 에지 네트워크","cloudSessionNote":"Cloud는 인증 세션을 1일 동안 유지합니다. 사용하지 않을 경우 자동 삭제됩니다.","cloudUnstableNote":"Cloud는 현재 Claude Code OAuth를 사용하는 경우에 불안정합니다.","cloudConnected":"클라우드 프록시가 연결되었습니다!","connectingToCloud":"클라우드에 연결 중...","verifyingConnection":"연결 확인 중...","connecting":"연결 중...","verifying":"확인 중...","connected":"연결되었습니다!","disableCloudTitle":"클라우드 프록시 비활성화","disableWarning":"모든 인증 세션이 클라우드에서 삭제됩니다.","syncingData":"최신 데이터 동기화 중...","disablingCloud":"클라우드를 비활성화하는 중...","syncing":"동기화 중...","disabling":"비활성화 중...","cloudConnectedVerified":"클라우드 프록시가 연결되고 확인되었습니다!","connectedVerificationPending":"연결됨 — 확인 대기 중","connectedVerificationPendingWithError":"연결됨 — 확인 대기 중: {error}","cloudDisabledSuccess":"클라우드가 비활성화되었습니다.","syncedSuccess":"성공적으로 동기화되었습니다","failedDisable":"클라우드를 비활성화하지 못했습니다.","failedEnable":"클라우드를 활성화하지 못했습니다.","cloudRequestTimeout":"클라우드 요청 시간 초과","cloudRequestFailed":"클라우드 요청 실패","cloudWorkerUnreachable":"클라우드 작업자에 연결할 수 없습니다. 클라우드 서비스가 실행 중인지 확인하세요(npm run dev in /cloud).","connectionFailed":"연결 실패","syncFailed":"클라우드 데이터를 동기화하지 못했습니다.","providerModelsTitle":"{provider} — 모델","noModelsForProvider":"이 제공업체에 사용할 수 있는 모델이 없습니다.","chat":"채팅","embedding":"임베딩","image":"이미지","custom":"관습","modelsCount":"{count, plural, one {# model} other {# models}}"},"health":{"title":"시스템 상태","description":"OmniRoute 인스턴스의 실시간 모니터링","healthy":"건강하다","degraded":"저하됨","down":"아래로","uptime":"가동 시간","memory":"메모리","memoryRss":"메모리(RSS)","heap":"힙","cpu":"CPU","database":"데이터베이스","version":"버전","lastCheck":"마지막 확인","providerHealth":"제공자 상태","systemMetrics":"시스템 측정항목","tokenHealth":"토큰 상태","refreshAll":"모두 새로 고침","checkNow":"지금 확인하세요","loadingHealth":"건강 데이터 로드 중...","failedToLoad":"상태 데이터를 로드하지 못했습니다: {error}","retry":"재시도","allOperational":"모든 시스템 작동","issuesDetected":"시스템 문제가 감지되었습니다.","updatedAt":"{time} 업데이트됨","latency":"대기 시간","latencyP50":"p50","latencyP95":"p95","latencyP99":"p99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"총 요청수","noDataYet":"아직 데이터가 없습니다","promptCache":"프롬프트 캐시","entries":"항목","hitRate":"적중률","hitsMisses":"안타/실패","signatureCache":"서명 캐시","signatureDefaults":"기본값","signatureTool":"도구","signatureFamily":"가족","signatureSession":"세션","recovering":"회복 중","noCBData":"사용 가능한 회로 차단기 데이터가 없습니다. 먼저 몇 가지 요청을 해보세요.","providerHealthStatusAria":"공급자 상태","issuesLabel":"발견된 문제","operational":"운영","providers":"공급자","healthyCount":"{count} 건강함","nodeVersion":"노드 {version}","failures":"{count} 실패","failuresPlural":"{count} 실패","lastFailure":"마지막","rateLimitStatus":"비율 제한 상태","activeLimiters":"{count} 활성 제한기","activeLimitersPlural":"{count} 활성 제한기","queued":"대기 중","queuedCount":"{count} 대기 중","running":"달리기","runningCount":"{count} 실행 중","ok":"알았어","activeLockouts":"활성 잠금","resetConfirm":"모든 회로 차단기를 정상 상태로 재설정하시겠습니까? 그러면 모든 실패 횟수가 지워지고 모든 공급자가 작동 상태로 복원됩니다.","resetAllTitle":"모든 회로 차단기를 정상 상태로 재설정","resetting":"재설정 중...","resetAll":"모두 재설정","until":"{time}까지"},"limits":{"title":"한도 및 할당량","rateLimit":"비율 제한","remaining":"남은","requestsPerMinute":"요청/분","tokensPerMinute":"토큰/분","dailyLimit":"일일 한도"},"logs":{"title":"로그","requestLogs":"요청 로그","proxyLogs":"프록시 로그","auditLog":"감사 로그","console":"콘솔","auditLogDesc":"관리 조치 및 보안 이벤트","loading":"로드 중...","refresh":"새로고침","filterByAction":"작업별로 필터링...","filterByActor":"배우별로 필터링...","filterEntriesAria":"감사 로그 항목 필터링","filterByActionTypeAria":"작업 유형별로 필터링","filterByActorAria":"배우별로 필터링","refreshAuditLogAria":"감사 로그 새로 고침","tableAria":"감사 로그 항목","failedFetchAuditLog":"감사 로그를 가져오지 못했습니다.","showing":"{count} 항목 표시 중(오프셋 {offset})","search":"검색","timestamp":"타임스탬프","action":"액션","actor":"배우","target":"대상","details":"세부정보","ipAddress":"IP 주소","notAvailable":"—","noEntries":"감사 로그 항목이 없습니다.","previous":"이전","next":"다음"},"onboarding":{"welcome":"환영합니다","security":"보안","test":"테스트","ready":"준비됐어요!","setPassword":"비밀번호 설정","addProvider":"첫 번째 공급자 추가","getStarted":"시작하기","skip":"건너뛰기","skipWizard":"마법사를 완전히 건너뛰기","skipPassword":"비밀번호 설정 건너뛰기","skipAndContinue":"건너뛰고 계속하기","passwordLabel":"비밀번호","confirmPassword":"비밀번호 확인","enterPassword":"비밀번호를 입력하세요","confirmPasswordPlaceholder":"비밀번호 확인","passwordsMismatch":"비밀번호가 일치하지 않습니다.","setupComplete":"설정 완료!","goToDashboard":"대시보드로 이동 →","welcomeDesc":"OmniRoute는 로컬 AI API 프록시입니다. 로드 밸런싱, 장애 조치 및 사용량 추적을 통해 요청을 여러 AI 공급자에게 라우팅합니다.","multiProvider":"다중 공급자","usageTracking":"사용량 추적","apiKeyMgmt":"API 키 관리","securityDesc":"대시보드를 보호하기 위해 비밀번호를 설정하거나 지금은 건너뛰세요.","providerDesc":"첫 번째 AI 공급자를 연결하세요. 나중에 더 추가할 수 있습니다.","apiKeyRequired":"API 키(필수)","customUrlOptional":"맞춤 URL(선택사항)","testDesc":"공급자 연결이 작동하는지 확인해 보겠습니다.","runTest":"연결 테스트 실행","testingConnection":"연결 테스트 중...","connectionSuccessful":"연결 성공! 귀하의 서비스 제공자가 준비되었습니다.","noProviderFound":"공급자를 찾을 수 없습니다. 나중에 대시보드에서 추가할 수 있습니다.","testFailed":"테스트에 실패했지만 나중에 구성할 수 있습니다.","couldNotTest":"지금은 테스트할 수 없습니다. 대시보드에서 테스트할 수 있습니다.","doneDesc":"모든 준비가 완료되었습니다. OmniRoute 인스턴스가 구성되어 AI 요청을 프록시할 준비가 되었습니다.","yourEndpoint":"귀하의 엔드포인트:","continue":"계속","retry":"재시도","failedSetPassword":"비밀번호를 설정하지 못했습니다. 다시 시도해 보세요.","failedAddProvider":"공급자를 추가하지 못했습니다. 다시 시도해 보세요.","connectionError":"연결 오류입니다. 다시 시도해 주세요.","provider":"공급자"},"providers":{"title":"공급자","addProvider":"공급자 추가","editProvider":"제공자 편집","deleteProvider":"공급자 삭제","noProviders":"구성된 제공업체가 없습니다.","modelAvailability":"모델 가용성","accounts":"계정","newAccount":"새 계정","deleteConfirm":"이 제공업체를 삭제하시겠습니까?","testing":"테스트 중...","testConnection":"연결 테스트","testSuccess":"연결 성공","testFailed":"연결 실패","available":"가능","cooldown":"쿨다운","unavailable":"이용 불가","unknown":"알 수 없음","oauthLabel":"OAuth","compatibleLabel":"호환 가능","chat":"채팅","responses":"응답","messages":"메시지","oauthProviders":"OAuth 제공자","freeProviders":"무료 제공업체","apiKeyProviders":"API 키 제공자","compatibleProviders":"API 키 호환 제공자","testAll":"모두 테스트","testAllOAuth":"모든 OAuth 연결 테스트","testAllFree":"모든 무료 연결 테스트","testAllApiKey":"모든 API 키 연결 테스트","testAllCompatible":"모든 호환 연결 테스트","connected":"{count} 연결됨","errorCount":"{count} 오류({code})","errorCountNoCode":"{count} 오류","noConnections":"연결 없음","disabled":"장애인","enableProvider":"공급자 활성화","disableProvider":"공급자 비활성화","testResults":"테스트 결과","noCompatibleYet":"아직 호환되는 제공업체가 추가되지 않았습니다.","compatibleHint":"위 버튼을 사용하여 OpenAI 또는 Anthropic 호환 엔드포인트를 추가하세요.","addOpenAICompatible":"OpenAI 호환 추가","addAnthropicCompatible":"인류 호환 추가","addNewProvider":"새 공급자 추가","backToProviders":"공급자로 돌아가기","configureNewProvider":"애플리케이션과 함께 사용할 새 AI 공급자를 구성합니다.","providerLabel":"공급자","selectProvider":"제공업체 선택","selectedProvider":"선택된 제공업체","authMethod":"인증 방법","apiKeyLabel":"API 키","apiKeyRequired":"API 키가 필요합니다","selectProviderRequired":"제공업체를 선택하세요.","enterApiKey":"API 키를 입력하세요","apiKeySecure":"귀하의 API 키는 암호화되어 안전하게 저장됩니다.","oauth2Connect":"OAuth2로 연결","oauth2Label":"OAuth2","oauth2Desc":"OAuth2 인증을 사용하여 계정을 연결하세요.","displayName":"표시 이름","displayNamePlaceholder":"예: 프로덕션 API, 개발 환경","displayNameHint":"선택사항. 이 구성을 식별하기 위한 친숙한 이름입니다.","active":"활성","activeDescription":"애플리케이션에서 이 공급자를 사용하도록 설정","cancel":"취소","createProvider":"공급자 생성","failedCreate":"공급자를 생성하지 못했습니다.","errorOccurred":"오류가 발생했습니다. 다시 시도해 주세요.","modelStatus":"모델현황","allModelsOperational":"모든 모델 작동 가능","modelsWithIssues":"문제가 있는 {count} 모델","allModelsNormal":"모든 모델이 정상적으로 반응하고 있습니다.","cooldownCleared":"{model}의 쿨다운이 삭제되었습니다.","failedClearCooldown":"쿨다운을 지우지 못했습니다.","loadingAvailability":"모델 가용성 로드 중...","clearCooldown":"지우기","clearing":"지우는 중...","until":"{time}까지","providerTestFailed":"공급자 테스트 실패","modeTest":"{mode} 테스트","passedCount":"{count} 통과됨","failedCount":"{count} 실패","testedCount":"{count} 테스트됨","millisecondsAbbr":"{value}ms","okShort":"알았어","errorShort":"오류","noActiveConnectionsInGroup":"이 그룹에 대한 활성 연결이 없습니다.","allTestsPassed":"모든 {total} 테스트를 통과했습니다.","testSummary":"{passed}/{total} 통과, {failed} 실패","nameLabel":"이름","prefixLabel":"접두사","baseUrlLabel":"기본 URL","apiTypeLabel":"API 유형","prefixHint":"필수입니다. 모델 이름의 고유 접두사입니다.","nameHint":"필수입니다. 이 노드에 대한 친숙한 레이블입니다.","baseUrlHint":"필수입니다. 공급자 API 기본 URL.","anthropicPrefixPlaceholder":"AC-PROD","openaiPrefixPlaceholder":"oc-prod","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"연결 확인","validating":"검증 중...","connectionValid":"연결이 유효합니다!","connectionFailed":"연결에 실패했습니다. URL과 키를 확인하세요.","testKeyLabel":"테스트 API 키","testKeyPlaceholder":"sk-...(검증용으로만)","providerNotFound":"공급자를 찾을 수 없습니다.","deleteConnectionConfirm":"이 연결을 삭제하시겠습니까?","failedSetAlias":"별칭을 설정하지 못했습니다.","failedSaveConnection":"연결을 저장하지 못했습니다.","failedSaveConnectionRetry":"연결을 저장하지 못했습니다. 다시 시도해 주세요.","failedRetestConnection":"연결을 다시 테스트하지 못했습니다.","deleteCompatibleNodeConfirm":"이 {type} 호환 노드를 삭제하시겠습니까?","anthropicCompatibleDetails":"인류 친화적인 세부 사항","openaiCompatibleDetails":"OpenAI 호환 세부정보","messagesApi":"메시지 API","responsesApi":"응답 API","chatCompletions":"채팅 완료","importingModels":"가져오는 중...","importFromModels":"/models에서 가져오기","addConnectionToImport":"가져오기를 활성화하려면 연결을 추가하세요.","noModelsConfigured":"구성된 모델이 없습니다.","connectionCount":"{count} 연결","fetchingModels":"사용 가능한 모델을 가져오는 중...","failedFetchModels":"모델을 가져오지 못했습니다.","noModelsFound":"모델을 찾을 수 없습니다.","importFailed":"가져오기 실패","noNewModelsAdded":"새로운 모델이 추가되지 않았습니다.","adding":"추가 중...","importingModelsTitle":"모델 가져오기","copyModel":"모델 복사","removeModel":"모델 삭제","rateLimitProtected":"보호됨","rateLimitUnprotected":"보호되지 않음","enableRateLimitProtection":"속도 제한 보호를 활성화하려면 클릭하세요.","disableRateLimitProtection":"속도 제한 보호를 비활성화하려면 클릭하세요.","productionKey":"생산 키","enterNewApiKey":"새 API 키를 입력하세요","optional":"선택사항","anthropicCompatibleName":"인류 친화적","openaiCompatibleName":"OpenAI 호환","failedImportModels":"모델을 가져오지 못했습니다.","noModelsReturnedFromEndpoint":"/models 엔드포인트에서 반환된 모델이 없습니다.","importingModelsProgress":"{total} 모델 중 {current} 가져오는 중...","foundModelsStartingImport":"{count} 모델을 찾았습니다. 가져오기 시작 중...","importingModelById":"{modelId} 가져오는 중...","importSuccessCount":"{count, plural, one {# model} other {# models}}을(를) 성공적으로 가져왔습니다!","noNewModelsAddedExisting":"새로운 모델이 추가되지 않았습니다(모두 이미 존재함).","importDoneCount":"✓ 완료! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"예상치 못한 오류가 발생했습니다.","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"메시지","responsesPath":"응답","chatCompletionsPath":"채팅/완료","add":"추가","edit":"편집","delete":"삭제","anthropic":"인류학","openai":"오픈AI","singleConnectionPerCompatible":"호환되는 노드당 하나의 연결만 허용됩니다. 더 많은 연결이 필요한 경우 다른 노드를 추가하세요.","connections":"연결","providerProxyTitleConfigured":"공급자 프록시: {host}","configured":"구성된","providerProxyConfigureHint":"이 공급자의 모든 연결에 대한 프록시 구성","providerProxy":"공급자 프록시","noConnectionsYet":"아직 연결이 없습니다.","addFirstConnectionHint":"시작하려면 첫 번째 연결을 추가하세요.","addConnection":"연결 추가","availableModels":"사용 가능한 모델","pageAutoRefresh":"페이지가 자동으로 새로 고쳐집니다...","statusDisabled":"장애인","statusConnected":"연결됨","statusRuntimeIssue":"런타임 문제","statusAuthFailed":"인증 실패","statusRateLimited":"요금 제한","statusNetworkIssue":"네트워크 문제","statusTestUnsupported":"지원되지 않는 테스트","statusUnavailable":"이용할 수 없음","statusFailed":"실패했다","statusError":"오류","oauthAccount":"OAuth 계정","errorTypeRuntime":"로컬 런타임","errorTypeUpstreamAuth":"업스트림 인증","errorTypeMissingCredential":"자격증명 누락","errorTypeRefreshFailed":"새로고침 실패","errorTypeTokenExpired":"토큰이 만료되었습니다.","errorTypeRateLimited":"요금 제한","errorTypeUpstreamUnavailable":"업스트림 이용 불가","errorTypeNetworkError":"네트워크 오류","errorTypeTestUnsupported":"지원되지 않는 테스트","errorTypeUpstreamError":"업스트림 오류","proxySourceGlobal":"글로벌","proxySourceProvider":"공급자","proxySourceKey":"열쇠","proxyConfiguredBySource":"프록시({source}): {host}","autoPriority":"자동: {priority}","proxy":"프록시","retestAuthentication":"인증 재테스트","retest":"재테스트","disableConnection":"연결 비활성화","enableConnection":"연결 활성화","reauthenticateConnection":"이 연결을 다시 인증하세요.","proxyConfig":"프록시 구성","aliasExistsAlert":"별칭 \\"{alias}\\"이(가) 이미 존재합니다. 다른 모델을 사용하거나 기존 별칭을 수정하세요.","openRouterAnyModelHint":"OpenRouter는 모든 모델을 지원합니다. 빠른 액세스를 위해 모델을 추가하고 별칭을 만듭니다.","modelIdFromOpenRouter":"모델 ID(OpenRouter에서)","openRouterModelPlaceholder":"인류학/claude-3-opus","customModels":"맞춤형 모델","customModelsHint":"기본 목록에 없는 모델 ID를 추가하세요. 라우팅에 사용할 수 있습니다.","modelId":"모델 ID","customModelPlaceholder":"예를 들어 gpt-4.5-터보","loading":"로드 중...","removeCustomModel":"맞춤 모델 삭제","noCustomModels":"아직 추가된 커스텀 모델이 없습니다.","allSuggestedAliasesExist":"제안된 별칭이 모두 이미 존재합니다. 다른 모델을 선택하거나 충돌하는 별칭을 삭제하세요.","failedSaveCustomModel":"커스텀 모델을 저장하지 못했습니다.","modelAddedSuccess":"모델 {modelId}이(가) 성공적으로 추가되었습니다.","failedAddModelTryAgain":"모델을 추가하지 못했습니다. 다시 시도해 주세요.","failedSaveImportedModel":"가져온 모델을 사용자 정의 데이터베이스에 저장하지 못했습니다.","failedImportModelsTryAgain":"모델을 가져오지 못했습니다. 다시 시도해 주세요.","failedRemoveModelFromDatabase":"데이터베이스에서 모델을 제거하지 못했습니다.","modelRemovedSuccess":"모델이 성공적으로 제거되었습니다.","failedDeleteModelTryAgain":"모델을 삭제하지 못했습니다. 다시 시도해 주세요.","compatibleModelsDescription":"{type} 호환 모델을 수동으로 추가하거나 /models 엔드포인트에서 가져옵니다.","anthropicCompatibleModelPlaceholder":"클로드-3-opus-20240229","openaiCompatibleModelPlaceholder":"gpt-4o","apiKeyValidationFailed":"API 키 검증에 실패했습니다. 키를 확인하고 다시 시도해 주세요.","addProviderApiKeyTitle":"{provider} API 키 추가","checking":"확인 중...","check":"확인","valid":"유효","invalid":"유효하지 않음","creating":"만드는 중...","validationChecksAnthropicCompatible":"검증은 API 키를 확인하여 {provider}을 확인합니다.","validationChecksOpenAiCompatible":"유효성 검사는 기본 URL의 /models를 통해 {provider}을 확인합니다.","priorityLabel":"우선순위","saving":"저장 중...","save":"저장","editConnection":"연결 편집","accountName":"계정 이름","email":"이메일","healthCheckMinutes":"상태 점검(분)","healthCheckHint":"사전 토큰 새로 고침 간격. 0 = 비활성화됨.","failedTestConnection":"연결을 테스트하지 못했습니다.","failed":"실패","leaveBlankKeepCurrentApiKey":"현재 API 키를 유지하려면 비워 두세요.","editCompatibleTitle":"{type} 호환 가능 편집","compatibleBaseUrlHint":"{type} 호환 API에는 기본 URL(/v1로 끝남)을 사용하세요.","apiKeyForCheck":"API Key(확인용)","compatibleProdPlaceholder":"{type} 호환 가능(프로덕션)"},"settings":{"title":"설정","general":"일반","security":"보안","appearance":"외관","routing":"라우팅","cache":"캐시","resilience":"탄력성","systemPrompt":"시스템 프롬프트","thinkingBudget":"생각하는 예산","proxy":"프록시","pricing":"가격","storage":"저장","policies":"정책","ipFilter":"IP 필터","comboDefaults":"콤보 기본값","fallbackChains":"폴백 체인","changePassword":"비밀번호 변경","enablePassword":"비밀번호 활성화","darkMode":"다크 모드","lightMode":"라이트 모드","systemTheme":"시스템 테마","enableCache":"캐시 활성화","cacheTTL":"캐시 TTL","maxCacheSize":"최대 캐시 크기","clearCache":"캐시 지우기","cacheHits":"캐시 적중","cacheMisses":"캐시 미스","hitRate":"적중률","cacheEntries":"캐시 항목","circuitBreaker":"회로 차단기","retryPolicy":"재시도 정책","maxRetries":"최대 재시도 횟수","retryDelay":"재시도 지연","timeoutMs":"시간 초과(밀리초)","enableSystemPrompt":"시스템 프롬프트 활성화","systemPromptText":"시스템 프롬프트 텍스트","enableThinking":"사고 활성화","maxThinkingTokens":"맥스 씽킹 토큰","enableProxy":"프록시 활성화","proxyUrl":"프록시 URL","pricingRates":"가격 요율 형식","currentPricing":"현재 가격 개요","loadingPricing":"가격 데이터 로드 중...","noPricing":"사용 가능한 가격 데이터가 없습니다.","input":"입력","output":"출력","cached":"캐시됨","reasoning":"추론","cacheCreation":"캐시 생성","customPricing":"맞춤형 가격","databaseSize":"데이터베이스 크기","backupDb":"백업 데이터베이스","restoreDb":"데이터베이스 복원","exportData":"데이터 내보내기","importData":"데이터 가져오기","clearData":"모든 데이터 지우기","clearDataConfirm":"모든 데이터가 영구적으로 삭제됩니다. 확실합니까?","enableRequestLogs":"요청 로그 활성화","logRetention":"로그 보존","ipWhitelist":"IP 화이트리스트","ipBlacklist":"IP 블랙리스트","addIP":"IP 추가","savedSuccessfully":"설정이 성공적으로 저장되었습니다.","ai":"AI","advanced":"고급","localMode":"로컬 모드 — 컴퓨터에 저장된 모든 데이터","settingsSectionsAria":"설정 섹션","switchThemes":"밝은 테마와 어두운 테마 간 전환","themeSelectionAria":"테마 선택","themeLight":"빛","themeDark":"어둠","themeSystem":"시스템","hideHealthLogs":"상태 확인 로그 숨기기","hideHealthLogsDesc":"ON일 때, 서버 콘솔에서 [HealthCheck] 메시지를 억제합니다.","promptCache":"프롬프트 캐시","flushCache":"캐시 플러시","flushing":"플러싱…","size":"크기","hits":"조회수","evictions":"퇴거","loadingCacheStats":"캐시 통계 로드 중…","globalProxy":"글로벌 프록시","globalProxyDesc":"모든 API 호출에 대해 글로벌 아웃바운드 프록시를 구성합니다. 개별 공급자, 콤보 및 키가 이를 재정의할 수 있습니다.","noGlobalProxy":"글로벌 프록시가 구성되지 않았습니다.","globalLabel":"글로벌","configure":"구성","globalSystemPrompt":"글로벌 시스템 프롬프트","systemPromptDesc":"프록시 수준에서 모든 요청에 삽입됩니다.","saved":"저장됨","systemPromptPlaceholder":"모든 요청에 삽입하려면 시스템 프롬프트를 입력하세요...","systemPromptHint":"이 프롬프트는 모든 요청의 시스템 메시지 앞에 추가됩니다. 전역 지침, 안전 지침 또는 응답 형식 지정 규칙에 사용합니다.","chars":"{count}자","thinkingBudgetTitle":"생각하는 예산","thinkingBudgetDesc":"모든 요청에서 AI 추론 토큰 사용을 제어합니다.","passthrough":"통과","passthroughDesc":"변경 사항 없음 - 클라이언트가 사고 예산을 제어합니다.","auto":"자동","autoDesc":"모든 사고 구성 제거 - 공급자가 결정하도록 함","custom":"맞춤","customDesc":"모든 요청에 대해 고정 토큰 예산 설정","adaptive":"적응형","adaptiveDesc":"요청 복잡성에 따라 예산 규모 조정","effortNone":"없음(토큰 0개)","effortLow":"낮음(1,000개 토큰)","effortMedium":"중간(10,000개 토큰)","effortHigh":"높음(128K 토큰)","tokenBudget":"토큰예산","tokens":"토큰","baseEffortLevel":"기본 노력 수준","adaptiveHint":"적응 모드는 메시지 수, 도구 사용량 및 프롬프트 길이에 따라 이 기본 수준에서 확장됩니다.","requireLogin":"로그인 필요","requireLoginDesc":"ON으로 설정하면 대시보드에 비밀번호가 필요합니다. OFF시 로그인 없이 접속 가능합니다.","currentPassword":"현재 비밀번호","enterCurrentPassword":"현재 비밀번호를 입력하세요","newPassword":"새 비밀번호","enterNewPassword":"새 비밀번호를 입력하세요","confirmPassword":"새 비밀번호 확인","confirmPasswordPlaceholder":"새 비밀번호 확인","passwordsNoMatch":"비밀번호가 일치하지 않습니다.","passwordUpdated":"비밀번호가 성공적으로 업데이트되었습니다.","failedUpdatePassword":"비밀번호를 업데이트하지 못했습니다.","errorOccurred":"오류가 발생했습니다","updatePassword":"비밀번호 업데이트","setPassword":"비밀번호 설정","apiEndpointProtection":"API 엔드포인트 보호","requireAuthModels":"/models에 대한 API 키 필요","requireAuthModelsDesc":"ON인 경우 /v1/models 엔드포인트는 인증되지 않은 요청에 대해 404를 반환합니다. 승인되지 않은 사용자가 모델을 발견하는 것을 방지합니다.","blockedProviders":"차단된 제공업체","blockedProvidersDesc":"/v1/models 응답에서 특정 공급자를 숨깁니다. 차단된 제공업체는 모델 목록에 표시되지 않습니다.","providersBlocked":"{count} 공급자가 /models에서 차단되었습니다.","blockProviderTitle":"{provider} 차단","unblockProviderTitle":"{provider} 차단 해제","routingStrategy":"라우팅 전략","fillFirst":"먼저 채우기","fillFirstDesc":"우선순위에 따라 계정을 사용하세요","roundRobin":"라운드 로빈","roundRobinDesc":"모든 계정을 순환합니다.","p2c":"P2C","p2cDesc":"무작위로 2개를 선택하고 더 건강한 것을 사용하세요","random":"무작위","randomDesc":"각 요청마다 무작위 계정","leastUsed":"최소 사용","leastUsedDesc":"최근에 가장 적게 사용한 계정 선택","costOpt":"비용 선택","costOptDesc":"가장 저렴한 계정을 선호합니다","stickyLimit":"고정 한도","stickyLimitDesc":"전환 전 계정당 통화","modelAliases":"모델 별칭","modelAliasesDesc":"모델 이름을 다시 매핑하는 와일드카드 패턴 • * 및 ?를 사용합니다.","aliasPatternPlaceholder":"클로드-소네트-*","aliasTargetPlaceholder":"클로드 소네트-4-20250514","pattern":"패턴","targetModel":"대상 모델","add":"+ 추가","session":"세션","sessionDetailsAria":"세션 세부정보","status":"상태","authenticated":"인증됨","guest":"손님","loginTime":"로그인 시간","sessionAge":"세션 연령","browser":"브라우저","clearLocalData":"로컬 데이터 지우기","logout":"로그아웃","clearLocalDataConfirm":"모든 로컬 데이터를 삭제하시겠습니까? 그러면 기본 설정이 재설정됩니다.","unknown":"알 수 없음","systemActor":"시스템","ipAccessControl":"IP 접근 제어","ipAccessControlDesc":"특정 IP 주소 차단 또는 허용","ipModeDisabled":"장애인","ipModeBlacklist":"블랙리스트","ipModeWhitelist":"화이트리스트","ipModeWhitelistPriority":"WL 우선순위","addIpAddress":"IP 주소 추가","ipAddressPlaceholder":"192.168.1.0/24 또는 10.0.*.*","block":"+ 차단","allow":"+ 허용","blocked":"차단됨({count})","allowed":"허용됨({count})","temporaryBans":"임시 금지({count})","minLeft":"{min}분 남음","auditLog":"감사 로그","searchAuditLogs":"감사 로그 검색...","failedLoadAuditLog":"감사 로그를 로드하지 못했습니다.","noAuditEvents":"감사 이벤트가 없습니다.","action":"액션","actor":"배우","details":"세부정보","time":"시간","fallbackChainsTitle":"폴백 체인","fallbackChainsDesc":"모델별 공급자 대체 순서 정의","addChain":"+ 체인 추가","modelName":"모델명","modelNamePlaceholder":"클로드 소네트-4-20250514","providersCommaSeparated":"공급자(쉼표로 구분, 우선순위)","providersCommaSeparatedPlaceholder":"인류, openai, 쌍둥이자리","createChain":"체인 생성","noFallbackChains":"대체 체인 없음","noFallbackChainsDesc":"모델에 대한 공급자 대체 순서를 정의하는 체인을 만듭니다.","loadingFallbackChains":"대체 체인 로드 중...","deleteChainConfirm":"\'{model}\'에 대한 대체 체인을 삭제하시겠습니까?","chainCreated":"{model}용으로 생성된 체인","chainDeleted":"{model}에 대한 체인이 삭제되었습니다.","failedCreateChain":"체인을 생성하지 못했습니다.","failedDeleteChain":"체인을 삭제하지 못했습니다.","deleteChain":"체인 삭제","fillModelAndProviders":"모델명과 제공업체를 입력하세요.","addAtLeastOneProvider":"제공업체를 하나 이상 추가하세요.","comboDefaultsTitle":"콤보 기본값","globalComboConfig":"글로벌 콤보 구성","defaultStrategy":"기본 전략","defaultStrategyDesc":"명시적인 전략이 없는 새로운 콤보에 적용","comboStrategyAria":"콤보 전략","priority":"우선순위","weighted":"가중","maxRetriesLabel":"최대 재시도 횟수","retryDelayLabel":"재시도 지연(ms)","timeoutLabel":"시간 초과(밀리초)","healthCheck":"건강검진","healthCheckDesc":"제공업체 가용성 사전 확인","trackMetrics":"추적 지표","trackMetricsDesc":"콤보별 요청 측정항목 기록","providerOverrides":"공급자 재정의","providerOverridesDesc":"공급자당 시간 초과 및 재시도를 재정의합니다. 공급자 설정은 전역 기본값을 재정의합니다.","providerMaxRetriesAria":"{provider} 최대 재시도 횟수","providerTimeoutAria":"{provider} 시간 초과(밀리초)","removeProviderOverrideAria":"{provider} 재정의 제거","newProviderNamePlaceholder":"예를 들어 구글, 오픈아이...","newProviderNameAria":"새 제공업체 이름","retries":"재시도","ms":"ms","saveComboDefaults":"콤보 기본값 저장","maxNestingDepth":"최대 중첩 깊이","concurrencyPerModel":"동시성/모델","queueTimeout":"대기열 시간 초과(밀리초)","providerProfiles":"공급자 프로필","providerProfilesDesc":"OAuth(세션 기반) 및 API 키(측정) 공급자에 대한 별도의 복원력 설정입니다. OAuth 공급자는 낮은 비율 제한으로 인해 더 엄격한 기준을 적용합니다.","oauthProviders":"OAuth 제공자","apiKeyProviders":"API 키 제공자","transientCooldown":"일시적인 쿨다운","rateLimitCooldown":"비율 제한 쿨다운","maxBackoffLevel":"최대 백오프 수준","cbThreshold":"CB 임계값","cbResetTime":"차단기 재설정 시간","rateLimiting":"속도 제한","rateLimitingDesc":"API 키 제공자는 안전한 기본값을 사용하여 자동으로 속도가 제한됩니다. 제한은 응답 헤더에서 학습되고 시간이 지남에 따라 조정됩니다.","defaultSafetyNet":"기본 안전망","rpm":"RPM","minGap":"민갭","maxConcurrent":"최대 동시","activeLimiters":"활성 리미터","noActiveLimiters":"아직 활성 속도 제한기가 없습니다.","reservoir":"저수지","running":"달리기","queued":"대기 중","circuitBreakers":"회로 차단기","breakerStateClosed":"휴무","breakerStateOpen":"열기","breakerStateHalfOpen":"반개방형","tripped":"{count}이(가) 작동되었습니다.","healthy":"{count} 건강함","resetAll":"모두 재설정","noCircuitBreakers":"아직 활성화된 회로 차단기가 없습니다. 요청이 콤보 파이프라인을 통해 흐를 때 자동으로 생성됩니다.","failures":"{count} 실패","policiesLocked":"정책 및 잠긴 식별자","allOperational":"모든 시스템 작동 — 잠금이나 차단기 작동 없음","loadingPolicies":"정책 로드 중...","lockedIdentifiers":"잠긴 식별자","unlockedIdentifier":"잠금 해제됨: {identifier}","sinceDate":"{date} 이후","forceUnlock":"강제 잠금 해제","unlocking":"잠금 해제 중...","failedUnlock":"잠금 해제에 실패했습니다.","failedLoadWithStatus":"로드 실패: {status}","failedLoadResilience":"복원력 상태를 로드하지 못했습니다.","saveFailed":"저장 실패","resetFailed":"재설정 실패","loadingResilience":"복원력 상태 로드 중...","retry":"재시도","systemStorage":"시스템 및 스토리지","allDataLocal":"모든 데이터는 컴퓨터에 로컬로 저장됩니다.","databasePath":"데이터베이스 경로","exportDatabase":"데이터베이스 내보내기","exportAll":"모두 내보내기(.tar.gz)","importDatabase":"데이터베이스 가져오기","confirmDbImport":"데이터베이스 가져오기 확인","confirmDbImportDesc":"그러면 모든 현재 데이터가 {file}의 콘텐츠로 대체됩니다. 가져오기 전에 백업이 자동으로 생성됩니다.","yesImport":"예, 수입합니다","lastBackup":"마지막 백업","noBackupYet":"아직 백업이 없습니다","backupNow":"지금 백업","backupRestore":"백업 및 복원","viewBackups":"백업 보기","hide":"숨기기","backupRetentionDesc":"데이터베이스 스냅샷은 복원 전과 데이터가 변경될 때 15분마다 자동으로 생성됩니다. 보존: 스마트 순환을 통한 24시간 + 30일 백업.","loadingBackups":"백업 로드 중...","noBackupsYet":"아직 사용할 수 있는 백업이 없습니다. 데이터가 변경되면 백업이 자동으로 생성됩니다.","backupsAvailable":"{count} 백업 사용 가능","refresh":"새로고침","confirm":"확인하시겠습니까?","yes":"예","no":"아니요","restore":"복원","invalidFileType":"파일 형식이 잘못되었습니다. .sqlite 파일만 허용됩니다.","exportFailed":"내보내기 실패","exportFailedWithError":"내보내기 실패: {error}","fullExportFailedWithError":"전체 내보내기 실패: {error}","backupCreated":"생성된 백업: {file}","restoreSuccess":"복원되었습니다! {connections} 연결, {nodes} 노드, {combos} 콤보, {apiKeys} API 키.","importSuccess":"데이터베이스를 가져왔습니다! {connections} 연결, {nodes} 노드, {combos} 콤보, {apiKeys} API 키.","justNow":"지금 막","minutesAgo":"{count}분 전","hoursAgo":"{count}시간 전","daysAgo":"{count}일 전","backupReasonManual":"매뉴얼","backupReasonPreRestore":"사전 복원","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"마지막 백업 이후 변경 사항 없음","backupFailed":"백업 실패","restoreFailed":"복원 실패","importFailed":"가져오기 실패","errorDuringRestore":"복원 중 오류가 발생했습니다.","errorDuringImport":"가져오는 중에 오류가 발생했습니다.","modelPricing":"모델 가격","modelPricingDesc":"모델별 비용 구성 • 모든 비용은 $/1M 토큰 단위","providers":"공급자","registry":"레지스트리","priced":"가격","searchProvidersModels":"공급자 또는 모델 검색...","showAll":"모두 표시","noProvidersMatch":"검색어와 일치하는 제공업체가 없습니다.","howPricingWorks":"가격 책정 방식","cacheWrite":"캐시 쓰기","unsaved":"저장되지 않은","resetDefaults":"기본값 재설정","saveProvider":"공급자 저장","saving":"저장 중...","model":"모델","models":"모델","moreProviders":"{count} 제공업체 더보기","withPricing":"가격이 구성된 경우","policiesCircuitBreakers":"정책 및 회로 차단기","activeIssuesDetected":"활성 문제가 감지되었습니다.","off":"끄기","resetPricingConfirm":"{provider}의 모든 가격을 기본값으로 재설정하시겠습니까?","pricingDescInput":"입력: 모델에 전송된 토큰","pricingDescOutput":"출력: 생성된 토큰","pricingDescCached":"캐시됨: 재사용된 입력(입력 속도의 ~50%)","pricingDescReasoning":"추론: 사고 토큰(출력으로 대체)","pricingDescCacheWrite":"캐시 쓰기: 캐시 항목 생성(입력으로 대체)","pricingDescFormula":"비용 = (입력 \xd7 입력 속도) + (출력 \xd7 출력 속도) + (캐시 \xd7 캐시 속도) 백만 토큰당.","pricingSettingsTitle":"가격 설정","totalModels":"총 모델","active":"활성","costCalculation":"비용 계산","costCalculationDesc":"비용은 토큰 사용량과 각 모델에 구성된 가격 책정 요율을 기준으로 계산됩니다.","pricingFormat":"가격 형식","pricingFormatDesc":"모든 요율은 $/1M 토큰(백만 토큰당 달러) 단위입니다.","tokenTypes":"토큰 유형","inputTokenDesc":"표준 프롬프트 토큰","outputTokenDesc":"완료/응답 토큰","cachedTokenDesc":"캐시된 입력 토큰(일반적으로 입력 속도의 50%)","reasoningTokenDesc":"특수 추론/사고 토큰(출력 속도로 대체)","cacheCreationTokenDesc":"캐시 항목을 생성하는 데 사용되는 토큰(입력 속도로 대체)","customPricingNote":"특정 모델의 기본 가격을 재정의할 수 있습니다. 맞춤 재정의는 자동 감지된 가격보다 우선 적용됩니다.","editPricing":"가격 편집","viewFullDetails":"전체 세부정보 보기"},"translator":{"title":"번역기","metaTitle":"번역가 놀이터 | 옴니루트","metaDescription":"공급자 간의 API 형식 변환을 디버그, 테스트 및 시각화합니다.","playgroundTitle":"번역가 놀이터","playground":"놀이터","realtime":"실시간 번역 활동","chatTester":"채팅 테스터","testBench":"테스트 벤치","liveMonitor":"라이브 모니터","modeDescriptionPlayground":"API 요청 본문을 붙여넣고 OmniRoute가 이를 공급자 형식(OpenAI ← Claude ← Gemini ← Responses API) 간에 어떻게 변환하는지 확인하세요.","modeDescriptionChatTester":"OmniRoute를 통해 실제 채팅 요청을 보내고 전체 왕복(입력, 번역된 요청, 공급자 응답 및 번역된 출력)을 검사합니다.","modeDescriptionTestBench":"사전 정의된 시나리오를 실행하고 공급자와 모델 간의 호환성을 비교하세요.","modeDescriptionLiveMonitor":"요청이 OmniRoute를 통해 전달됨에 따라 번역 이벤트를 실시간으로 감시하세요.","modeDescriptionFallback":"OmniRoute가 공급자 간 API 요청을 변환하는 방법을 디버그, 테스트 및 시각화합니다.","recentTranslations":"최근 번역","noTranslations":"아직 번역이 없습니다.","source":"소스","target":"대상","time":"시간","model":"모델","status":"상태","latency":"대기 시간","totalTranslations":"총 번역","successful":"성공","errors":"오류","avgLatency":"평균 지연 시간","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"실시간 — 자동 새로고침","paused":"일시중지됨","eventsAppearHint":"요청이 OmniRoute를 통해 전달될 때 번역 이벤트가 여기에 표시됩니다. 이벤트를 생성하려면 다음 방법 중 하나를 사용하세요.","chatTesterTab":"채팅 테스터 탭","testBenchTab":"테스트 벤치 탭","externalApiCalls":"외부 API 호출","ideCliIntegrations":"IDE/CLI 통합","inMemoryNote":"참고: 이벤트는 메모리에 저장되며 서버가 다시 시작되면 재설정됩니다.","ok":"알았어","errorShort":"오류","formatConverter":"형식 변환기","formatConverterDescription":"JSON 요청 본문을 붙여넣거나 입력하세요. 변환기는 소스 형식을 자동으로 감지하여 대상 형식으로 변환합니다. 이를 사용하여 OmniRoute가 형식(OpenAI ← Claude ⇔ Gemini ⇔ Responses API) 간 요청을 변환하는 방법을 디버깅합니다.","input":"입력","output":"출력","auto":"자동","swapFormats":"형식 교환","translateAction":"번역하다","clear":"지우기","inputPlaceholder":"여기에 요청 본문을 붙여넣거나 아래에서 템플릿을 선택하세요...","exampleTemplates":"예제 템플릿","exampleTemplatesHint":"— 로드하려면 클릭하세요.","templateLoadHint":"템플릿은 {format} 형식으로 요청을 로드합니다. 다른 형식으로 로드하려면 소스 형식을 변경하세요.","compatibilityTester":"호환성 테스터","compatibilityReport":"호환성 보고서","testBenchDescription":"사전 정의된 시나리오(간단한 채팅, 도구 호출 등)를 실행하여 번역 및 공급자 호환성을 확인하세요. 소스 형식과 대상 공급자를 선택한 다음 모든 테스트를 실행하여 호환성 비율을 확인하세요. 이를 사용하여 공급자 간에 작동하는 기능을 찾으세요.","targetProvider":"대상 제공자","runAllTests":"모든 테스트 실행","runTest":"테스트 실행","reRun":"재실행","running":"실행중...","passed":"합격","failed":"실패했다","passedIconLabel":"✅ 합격","chunks":"덩어리","scenarioSimpleChat":"간단한 채팅","scenarioToolCalling":"도구 호출","scenarioMultiTurn":"다회전","scenarioThinking":"생각","scenarioSystemPrompt":"시스템 프롬프트","scenarioStreaming":"스트리밍","templateNames":{"simple-chat":"간단한 채팅","tool-calling":"도구 호출","multi-turn":"다회전","thinking":"생각","system-prompt":"시스템 프롬프트","streaming":"스트리밍"},"templateDescriptions":{"simple-chat":"기본 문자 메시지","tool-calling":"함수/도구 호출","multi-turn":"역사와의 대화","thinking":"확장된 사고/추론","system-prompt":"복잡한 시스템 지침","streaming":"SSE 스트리밍 요청"},"templatePayloads":{"simpleChat":{"system":"당신은 도움이 되는 조수입니다.","userGreeting":"안녕하세요! 오늘 기분이 어떠세요?"},"toolCalling":{"userWeather":"상파울루 날씨는 어떻습니까?","toolDescription":"특정 위치의 현재 날씨 확인","cityNameDescription":"도시 이름"},"multiTurn":{"system":"당신은 코딩 도우미입니다.","userInitial":"Python에서 배열을 정렬하는 함수를 작성합니다.","assistantExample":"다음은 간단한 정렬 기능입니다.\\n\\n``파이썬\\ndef sort_array(arr):\\n 반환 정렬(arr)\\n````","userFollowUp":"이제 내림차순으로 정렬해 보겠습니다."},"thinking":{"question":"처음 100개의 소수의 합은 얼마입니까?"},"systemPrompt":{"systemInstruction":"당신은 분산 시스템을 전문으로 하는 수석 소프트웨어 엔지니어입니다. 업계 모범 사례를 사용하여 질문에 간결하게 답변하세요. 관련이 있는 경우 항상 코드 예제를 제공하세요. 마크다운을 사용하여 응답 형식을 지정하세요.","question":"회로 차단기 패턴을 어떻게 구현하나요?"},"streaming":{"prompt":"그림 그리는 법을 배우는 로봇에 대한 짧은 이야기를 들려주세요."}},"openaiCompatibleLabel":"OpenAI 호환","anthropicCompatibleLabel":"인류 친화적","noTemplateForFormat":"이 형식에 대한 템플릿이 없습니다.","translationFailed":"번역 실패: {error}","pipelineDebugger":"파이프라인 디버거","translationPipeline":"번역 파이프라인","pipelineVisualization":"파이프라인 시각화","pipelineVisualizationHint":"감지 → 번역 → 공급자 호출을 통해 요청이 어떻게 진행되는지 확인하려면 메시지를 보내세요.","chatTesterDescription":"특정 클라이언트 형식으로 메시지를 보내고 번역 파이프라인의 각 단계를 검사합니다.","chatTesterFlow":"클라이언트 요청 → 형식 감지 → OpenAI Intermediate → 공급자 형식 → 응답","clickStepToInspect":"단계를 클릭하면 해당 단계의 데이터를 검사할 수 있습니다.","clientFormat":"클라이언트 형식","provider":"공급자","modelPlaceholder":"모델 이름을 선택하거나 입력하세요...","sendMessageToSeePipeline":"번역 파이프라인을 보려면 메시지를 보내세요.","chatMessageHintPrefix":"귀하의 메시지는 다음과 같은 형식으로 지정됩니다.","chatMessageHintSuffix":"요청하고 파이프라인을 통해 번역되어 선택한 공급자에게 전송됩니다.","youWithFormat":"귀하({format})","assistant":"어시스턴트","typeMessage":"메시지를 입력하세요...","send":"보내기","clientRequest":"클라이언트 요청","clientRequestDescription":"클라이언트가 보내는 요청 본문","formatDetected":"형식이 감지되었습니다.","formatDetectedDescription":"OmniRoute는 요청 구조에서 API 형식을 자동 감지합니다.","openaiIntermediate":"OpenAI 중급","openaiIntermediateDescription":"모든 형식은 먼저 OpenAI 형식(범용 브리지)으로 정규화됩니다.","providerFormat":"공급자 형식","providerFormatDescription":"OpenAI 형식은 공급자의 기본 형식으로 변환됩니다.","providerResponse":"제공자 응답","providerResponseRawDescription":"공급자 API의 원시 응답","providerResponseSseDescription":"공급자 API의 원시 SSE 스트림","unexpectedError":"예상치 못한 오류가 발생했습니다.","error":"오류","errorMessage":"오류: {message}","requestFailed":"요청 실패","noTextExtracted":"(텍스트가 추출되지 않았습니다)","liveMonitorDescriptionPrefix":"OmniRoute를 통한 API 호출 흐름으로 번역 이벤트를 표시합니다. 이벤트는 메모리 내 버퍼에서 발생합니다(다시 시작 시 재설정). 사용","liveMonitorDescriptionSuffix":", 또는 외부 API 호출을 통해 이벤트를 생성합니다."},"usage":{"title":"사용법","loggerTab":"로거","proxyTab":"프록시","budgetManagement":"예산 관리","budgetSaved":"예산 한도가 저장되었습니다.","budgetSaveFailed":"예산을 저장하지 못했습니다.","loadingBudgetData":"예산 데이터 로드 중...","noApiKeysTitle":"API 키 없음","noApiKeysDescription":"예산 한도를 설정하려면 먼저 API 키를 추가하세요.","apiKey":"API 키","todaysSpend":"오늘의 지출","thisMonth":"이번 달","setLimits":"한도 설정","dailyLimitUsd":"일일 한도(USD)","monthlyLimitUsd":"월 한도(USD)","warningThresholdPercent":"경고 임계값(%)","dailyLimitPlaceholder":"예를 들어 5.00","monthlyLimitPlaceholder":"예를 들어 50.00","warningThresholdPlaceholder":"80","saveLimits":"저장 한도","budgetOk":"예산 양호 — {remaining} 남음","budgetExceeded":"예산 초과 - 요청이 차단될 수 있음","totalRequests":"총 요청수","noDataYet":"아직 데이터가 없습니다","latency":"대기 시간","latencyP50":"p50","latencyP95":"p95","latencyP99":"p99","promptCache":"프롬프트 캐시","systemHealth":"시스템 상태","entries":"항목","activeCount":"{count} 활성","openCircuitBreakersDetected":"개방형 회로 차단기가 감지되었습니다.","hitRate":"적중률","hitsMisses":"안타/실패","circuitBreakers":"회로 차단기","lockedIPs":"잠긴 IP","lockoutsAutoRefreshHint":"모델별 비율 제한 잠금 • 10초 자동 새로고침","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} 남음","howItWorks":"작동 방식","howItWorksSubtitle":"평가를 통해 LLM 응답을 검증하는 방법 알아보기","define":"정의","defineStepDescription":"포함, 정규식 또는 정확한 일치와 같은 전략을 사용하여 입력 프롬프트 및 예상 출력 기준으로 테스트 사례를 만듭니다.","run":"실행","runStepDescription":"OmniRoute를 통해 LLM 엔드포인트에 대해 테스트 케이스를 실행하세요. 각 사례는 실제 API 요청으로 전송됩니다.","evaluate":"평가하다","evaluateStepDescription":"응답은 예상 기준과 비교됩니다. 지연 시간 측정항목과 자세한 피드백을 통해 각 사례의 통과/실패를 확인하세요.","evalSuites":"평가 제품군","evalSuitesHint":"제품군을 클릭하여 테스트 사례를 본 다음 실행하여 LLM 엔드포인트를 평가하세요.","evalsLoading":"평가 모음 로드 중...","noEvalSuitesFound":"평가 제품군을 찾을 수 없습니다.","noEvalSuitesDescription":"평가 제품군은 API 또는 코드를 통해 정의할 수 있습니다. 포함, 정규식, 정확한 일치 및 사용자 정의 기능과 같은 전략을 사용하여 예상 결과에 대해 모델 출력을 테스트합니다.","columnCase":"케이스","columnStatus":"상태","columnLatency":"대기 시간","columnDetails":"세부정보","columnModel":"모델","columnStrategy":"전략","columnExpected":"예상","statsSuites":"스위트","statsTestCases":"테스트 케이스","statsModels":"모델","statsCoverage":"적용 범위","statsStrategiesCount":"{count} 전략","evaluationStrategies":"평가 전략","modelsUnderTest":"테스트 중인 모델","searchSuitesPlaceholder":"제품군 검색...","passSuffix":"통과","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"평가 실행","runningProgress":"{current}/{total} 실행 중...","passRate":"합격률","summaryBreakdown":"{passed} 통과 \xb7 {failed} 실패 \xb7 총 {total}","passedIconLabel":"✅ 합격","failedIconLabel":"❌ 실패","detailsContains":"포함: \\"{term}\\"","detailsRegex":"정규식: {pattern}","detailsExpected":"예상: \\"{expected}\\"","noResultsYet":"아직 결과가 없습니다","testCasesCount":"테스트 케이스({count})","noTestCasesDefined":"정의된 테스트 사례가 없습니다.","runEvalHint":"LLM 엔드포인트에 대해 모든 사례를 실행하려면 \\"평가 실행\\"을 클릭하세요. 각 테스트는 OmniRoute를 통해 실제 요청을 보냅니다.","notifyNoTestCases":"이 제품군에 대해 정의된 테스트 사례가 없습니다.","notifyAllCasesPassed":"{total} 건 모두 통과됨 ✅","notifySomeCasesFailed":"{passed}/{total} 통과, {failed} 실패","notifyEvalRunFailed":"평가 실행 실패","notifyEvalTitle":"평가: {name}","modelEvals":"모델 평가","evalsHeroDescription":"사전 정의된 평가 제품군을 실행하여 LLM 엔드포인트를 테스트하고 검증하세요. 각 제품군에는 OmniRoute를 통해 실제 프롬프트를 보내고 예상 기준과 응답을 비교하는 테스트 사례가 포함되어 있어 회귀를 감지하고, 모델을 비교하고, 공급자 전체의 응답 품질을 보장하는 데 도움이 됩니다.","qualityValidation":"품질 검증","modelComparison":"모델 비교","regressionDetection":"회귀 감지","latencyBenchmarks":"지연 시간 벤치마크","modelLockouts":"모델 잠금","noLockouts":"현재 잠긴 모델이 없습니다.","activeSessions":"활성 세션","noSessions":"활성 세션 없음","sessionsHint":"세션은 프록시를 통한 요청 흐름으로 나타납니다.","sessionsTrackedHint":"요청 핑거프린팅을 통해 추적됨 • 자동 새로고침 5초","session":"세션","age":"나이","requests":"요청사항","connection":"연결","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}s","durationMinutesShort":"{value}m","durationHoursShort":"{value}h","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"공급자 한도","noProviders":"연결된 제공업체 없음","connectProvidersForQuota":"OAuth를 통해 공급자에 연결하여 API 할당량 한도 및 사용량을 추적하세요.","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"({count}에서 필터링됨)","autoRefresh":"자동 새로고침","refreshAll":"모두 새로 고침","loadingQuotas":"로드 중...","account":"계정","modelQuotas":"모델 할당량","lastUsed":"마지막으로 사용됨","actions":"작업","refreshQuota":"새로고침 할당량","today":"오늘","tomorrow":"내일","dayTimeFormat":"{day}, {time}","inDuration":"{duration}에서","notApplicable":"해당 없음","rawPlanWithValue":"기본 계획: {plan}","noPlanFromProvider":"공급자의 계획 없음","noQuotaData":"할당량 데이터 없음","noQuotaDataAvailable":"사용 가능한 할당량 데이터가 없습니다.","noAccountsForTierFilter":"등급 필터에 대한 계정을 찾을 수 없습니다.","tierAll":"모두","tierEnterprise":"기업","tierTeam":"팀","tierBusiness":"비즈니스","tierUltra":"울트라","tierPro":"프로","tierPlus":"플러스","tierFree":"무료","tierUnknown":"알 수 없음"},"modals":{"waitingAuth":"승인을 기다리는 중","verificationUrl":"확인 URL","yourCode":"귀하의 코드","remoteAccess":"원격 액세스:","connectedSuccess":"성공적으로 연결되었습니다!","connectionFailed":"연결 실패","chooseAuthMethod":"인증 방법을 선택하세요:","awsBuilderId":"AWS 빌더 ID","awsIamIdentity":"AWS IAM 자격 증명 센터","googleAccount":"구글 계정","githubAccount":"GitHub 계정","importToken":"토큰 가져오기","pasteToken":"Kiro IDE에서 새로 고침 토큰을 붙여넣습니다.","awsRegion":"AWS 지역","autoDetecting":"토큰 자동 감지 중...","readingFromCache":"AWS SSO 캐시에서 읽기","readingFromCursor":"커서 IDE 데이터베이스에서 읽기","initializing":"초기화 중...","pricingConfig":"가격 구성","loadingPricing":"가격 데이터 로드 중...","pricingRatesFormat":"가격 요율 형식","noPricingData":"사용 가능한 가격 데이터가 없습니다.","noModelsFound":"모델을 찾을 수 없습니다."},"loggers":{"allProviders":"모든 제공자","allModels":"모든 모델","allAccounts":"모든 계정","allApiKeys":"모든 API 키","allTypes":"모든 유형","allLevels":"모든 레벨","modelAZ":"모델 A-Z","modelZA":"모델 Z-A","loadingLogs":"로그 로드 중...","loadingProxyLogs":"프록시 로그 로드 중...","noLogEntries":"로그 항목을 찾을 수 없습니다.","noPayloadData":"이 로그 항목에 사용할 수 있는 페이로드 데이터가 없습니다.","proxyEvent":"프록시 이벤트","proxy":"프록시","level":"레벨","directNative":"직접(네이티브)","combo":"콤보","inputTokens":"나:","outputTokens":"아:"},"stats":{"usageOverview":"사용법 개요","outputTokens":"출력 토큰","totalCost":"총 비용","usageByModel":"모델별 사용량","usageByAccount":"계정별 사용량","failedToLoad":"사용 통계를 로드하지 못했습니다.","tokenHealth":"토큰 상태","totalOAuth":"총 OAuth","healthy":"건강하다","warning":"경고","errored":"오류 발생","lastCheck":"마지막 확인","noData":"데이터 없음","share":"공유","unableToLoad":"시스템 측정항목을 로드할 수 없습니다.","product":"제품","resources":"자원","company":"회사"},"auth":{"welcome":"환영합니다","signIn":"로그인","enterPassword":"계속하려면 비밀번호를 입력하세요","password":"비밀번호","unifiedProxy":"통합 AI API 프록시","unifiedAiApiProxy":"통합 AI API 프록시","unifiedAiApiProxyDesc":"단일 엔드포인트를 통해 여러 AI 공급자에게 요청을 라우팅합니다. 로드 밸런싱, 장애 조치 및 사용 추적 기능이 내장되어 있습니다.","passwordNotEnabled":"비밀번호 보호가 활성화되지 않았습니다.","loading":"로드 중...","invalidPassword":"잘못된 비밀번호","errorOccurredRetry":"오류가 발생했습니다. 다시 시도해 주세요.","configureInstance":"OmniRoute 인스턴스를 구성해 보겠습니다.","runOnboardingWizard":"온보딩 마법사를 실행하여 비밀번호를 설정하고 첫 번째 AI 공급자를 연결하세요.","startOnboarding":"온보딩 시작","secureYourInstance":"인스턴스 보안","setPasswordDescription":"대시보드를 보호하고 무단 액세스로부터 API 엔드포인트를 보호하기 위해 비밀번호를 설정하세요.","configurePassword":"비밀번호 구성","continue":"계속","windowWillClose":"이 창은 자동으로 닫힙니다...","closeTabNow":"이제 이 탭을 닫아도 됩니다.","copyUrlManual":"주소 표시줄에서 URL을 복사하여 애플리케이션에 붙여넣으세요.","accessDeniedDescription":"이 리소스에 액세스할 수 있는 권한이 없습니다. API 키를 확인하거나 관리자에게 문의하세요.","goToDashboard":"대시보드로 이동","featureMultiProviderTitle":"다중 공급자","featureMultiProviderDesc":"OpenAI, Anthropic, Google 등","featureLoadBalancingTitle":"로드 밸런싱","featureLoadBalancingDesc":"요청을 지능적으로 분산","featureUsageTrackingTitle":"사용량 추적","featureUsageTrackingDesc":"비용 및 토큰 모니터링","resetPassword":"비밀번호 재설정","resetDescription":"대시보드에 대한 액세스를 복구하는 방법을 선택하세요.","stopServer":"OmniRoute 서버 중지","processing":"처리 중...","pleaseWait":"승인이 완료되는 동안 잠시 기다려 주십시오.","authSuccess":"승인 성공!","copyUrl":"이 URL 복사","accessDenied":"액세스가 거부되었습니다.","methodCliTitle":"방법 1: CLI 재설정","methodCliDescription":"OmniRoute가 실행 중인 서버에서 다음 명령을 실행합니다.","methodCliHint":"그러면 새 비밀번호를 설정하라는 메시지가 표시됩니다. 먼저 서버를 중지해야 합니다.","methodManualTitle":"방법 2: 수동 재설정","methodManualDescription":"데이터베이스에서 비밀번호를 삭제하고 시작 시 새 비밀번호를 설정하세요.","setPasswordInYour":"새 비밀번호를 설정하세요.","fileLabelSuffix":"파일:","newPasswordPlaceholder":"your_new_password","deleteSettingsFile":"삭제","orRemovePasswordHashField":"또는 PasswordHash 필드를 제거하세요.","restartServerWithNewPassword":"서버를 다시 시작하세요. 새 비밀번호가 사용됩니다.","backToLogin":"로그인으로 돌아가기","forgotPassword":"비밀번호를 잊으셨나요?"},"landing":{"brandName":"옴니루트","navigateHome":"집으로 이동","toggleMenu":"토글 메뉴","featuresLink":"특징","docsLink":"문서","github":"GitHub","versionLive":"v1.0이 출시되었습니다","oneEndpoint":"하나의 엔드포인트","allProviders":"모든 AI 제공업체","heroDescription":"웹 대시보드가 포함된 AI 엔드포인트 프록시 - CLIProxyAPI의 JavaScript 포트입니다. Claude Code, OpenAI Codex, Cline, RooCode 및 기타 CLI 도구와 원활하게 작동합니다.","getStarted":"시작하기","viewOnGithub":"GitHub에서 보기","powerfulFeatures":"강력한 기능","featuresSubtitle":"AI 인프라를 한 곳에서 관리하는 데 필요한 모든 것이 확장 가능하도록 구축되었습니다.","featureUnifiedEndpointTitle":"통합 엔드포인트","featureUnifiedEndpointDesc":"단일 표준 API URL을 통해 모든 공급자에 액세스합니다.","featureEasySetupTitle":"쉬운 설정","featureEasySetupDesc":"npx 명령을 사용하여 몇 분 만에 시작하고 실행할 수 있습니다.","featureModelFallbackTitle":"모델 대체","featureModelFallbackDesc":"장애가 발생하거나 대기 시간이 긴 경우 공급자를 자동으로 전환합니다.","featureUsageTrackingTitle":"사용량 추적","featureUsageTrackingDesc":"모든 모델에 대한 자세한 분석 및 비용 모니터링.","featureOAuthApiKeysTitle":"OAuth 및 API 키","featureOAuthApiKeysDesc":"하나의 저장소에서 자격 증명을 안전하게 관리하세요.","featureCloudSyncTitle":"클라우드 동기화","featureCloudSyncDesc":"여러 장치에서 구성을 즉시 동기화하세요.","featureCliSupportTitle":"CLI 지원","featureCliSupportDesc":"Claude Code, Codex, Cline, Cursor 등과 함께 작동합니다.","featureDashboardTitle":"대시보드","featureDashboardDesc":"실시간 트래픽 분석을 위한 시각적 대시보드입니다.","howItWorks":"OmniRoute 작동 방식","howItWorksDescription":"데이터는 귀하의 애플리케이션에서 당사의 지능형 라우팅 계층을 통해 작업에 가장 적합한 제공업체로 원활하게 흐릅니다.","howItWorksStep1Title":"1. CLI 및 SDK","howItWorksStep1Description":"귀하의 요청은 귀하가 선호하는 도구 또는 당사의 통합 SDK에서 시작됩니다. 기본 URL만 변경하면 됩니다.","howItWorksStep2Title":"2. 옴니루트 허브","howItWorksStep2Description":"우리 엔진은 프롬프트를 분석하고 공급자 상태를 확인하며 지연 시간이나 비용이 가장 낮은 경로를 지정합니다.","howItWorksStep3Title":"3. AI 제공업체","howItWorksStep3Description":"요청은 OpenAI, Anthropic, Gemini 등이 즉시 이행합니다.","getStartedIn30Seconds":"30초 안에 시작하세요","getStartedDescription":"OmniRoute를 설치하고, 웹 대시보드를 통해 공급자를 구성하고, AI 요청 라우팅을 시작하세요.","installOmniRoute":"OmniRoute 설치","installStepDescription":"npx 명령을 실행하여 서버를 즉시 시작하세요.","openDashboard":"대시보드 열기","openDashboardStepDescription":"웹 인터페이스를 통해 공급자 및 API 키 구성","routeRequests":"라우팅 요청","routeRequestsStepDescription":"CLI 도구를 {endpoint}에 지정하세요.","terminal":"터미널","copy":"복사","copied":"✓ 복사됨","startingOmniRoute":"OmniRoute 시작 중...","serverRunningOnLabel":"실행 중인 서버","dashboardLabel":"대시보드","readyToRoute":"라우팅 준비 완료! ✓","configureProvidersNote":"\uD83D\uDCDD 대시보드에서 공급자를 구성하거나 환경 변수를 사용하세요.","dataLocation":"데이터 위치:","dataLocationMacLinux":" 맥OS/리눅스:","dataLocationWindows":" 윈도우:","product":"제품","dashboardLink":"대시보드","changelog":"변경 내역","resources":"자원","documentation":"문서","npm":"NPM","legal":"법적","mitLicense":"MIT 라이센스","footerTagline":"AI 생성을 위한 통합 엔드포인트입니다. AI 공급자를 쉽게 연결하고 라우팅하고 관리하세요.","copyright":"\xa9 {year} OmniRoute. 모든 권리 보유.","flowToolClaudeCode":"클로드 코드","flowToolOpenAICodex":"오픈AI 코덱스","flowToolCline":"클라인","flowToolCursor":"커서","flowProviderOpenAI":"오픈AI","flowProviderAnthropic":"인류학","flowProviderGemini":"쌍둥이자리","flowProviderGithubCopilot":"GitHub 코파일럿","interactiveDiagram":"데스크탑에 표시되는 대화형 다이어그램","ctaTitle":"AI 인프라를 단순화할 준비가 되셨나요?","ctaDescription":"OmniRoute를 통해 AI 통합을 간소화하는 개발자와 함께하세요. 오픈 소스이며 무료로 시작할 수 있습니다.","startFree":"무료로 시작하세요","readDocumentation":"문서 읽기"},"docs":{"title":"문서","quickStart":"빠른 시작","features":"특징","supportedProviders":"지원되는 제공업체","supportedProvidersToc":"공급자","commonUseCases":"일반적인 사용 사례","clientCompatibility":"클라이언트 호환성","apiReference":"API 참조","method":"방법","path":"경로","notes":"메모","modelPrefixes":"모델 접두어","prefix":"접두사","troubleshooting":"문제 해결","supportsChat":"채팅 및 응답 엔드포인트를 모두 지원합니다.","oauthAutoRefresh":"자동 토큰 새로 고침을 통한 OAuth 연결.","fullStreaming":"모든 모델에 대한 전체 스트리밍 지원.","docsLabel":"문서","docsHeroDescription":"다중 공급자 LLM을 위한 AI 게이트웨이. OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor 및 20개 이상의 공급자를 위한 하나의 엔드포인트입니다.","openDashboard":"대시보드 열기","endpointPage":"엔드포인트 페이지","github":"GitHub","reportIssue":"문제 보고","onThisPage":"이 페이지에서","documentationVersion":"문서 - v{version}","quickStartStep1Title":"1. 설치 및 실행","quickStartStep1Prefix":"실행","quickStartStep1Middle":"또는 GitHub에서 복제하여 실행하세요.","quickStartStep2Title":"2. API 키 생성","quickStartStep2Text":"엔드포인트 -> 등록된 키로 이동합니다. 환경당 하나의 키를 생성합니다.","quickStartStep3Title":"3. 공급자 연결","quickStartStep3Text":"OAuth 로그인, API 키 또는 무료 계층 자동 연결을 통해 공급자 계정을 추가하세요.","quickStartStep4Title":"4. 클라이언트 기본 URL 설정","quickStartStep4Prefix":"IDE 또는 API 클라이언트를 다음으로 지정하세요.","quickStartStep4Suffix":"예를 들어 공급자 접두사를 사용하십시오.","featureRoutingTitle":"다중 공급자 라우팅","featureRoutingText":"단일 OpenAI 호환 엔드포인트를 통해 30개 이상의 AI 공급자에게 요청을 라우팅합니다. 채팅, 응답, 오디오 및 이미지 API를 지원합니다.","featureCombosTitle":"콤보와 밸런싱","featureCombosText":"대체 체인 및 균형 조정 전략(라운드 로빈, 우선 순위, 무작위, 최소 사용, 비용 최적화)을 사용하여 모델 콤보를 만듭니다.","featureUsageTitle":"사용량 및 비용 추적","featureUsageText":"실시간 토큰 계산, 공급자/모델별 비용 계산, API 키 및 계정별 세부 사용량 분석.","featureAnalyticsTitle":"분석 대시보드","featureAnalyticsText":"시간 경과에 따른 요청, 토큰, 오류, 대기 시간, 비용 및 모델 인기도에 대한 차트가 포함된 시각적 분석입니다.","featureHealthTitle":"건강 모니터링","featureHealthText":"실시간 상태 확인, 공급자 상태, 회로 차단기 상태 및 지수 백오프를 통한 자동 속도 제한 감지.","featureCliTitle":"CLI 도구","featureCliText":"IDE 구성을 관리하고, 백업을 내보내거나 가져오고, 코덱스 프로필을 검색하고, 대시보드에서 설정을 구성하세요.","featureSecurityTitle":"보안 및 정책","featureSecurityText":"API 키 인증, IP 필터링, 프롬프트 주입 가드, 도메인 정책, 세션 관리 및 감사 로깅.","featureCloudSyncTitle":"클라우드 동기화","featureCloudSyncText":"암호화된 자격 증명 및 자동 장애 조치를 통해 원격 액세스를 위해 구성을 Cloudflare Workers에 동기화하세요.","providersAcrossConnectionTypes":"세 가지 연결 유형에 걸쳐 {count} 공급자.","manageProviders":"공급자 관리","providersCount":"{count} 제공업체","providerTypeFree":"프리 티어","providerTypeOAuth":"OAuth","providerTypeApiKey":"API 키","useCaseSingleEndpointTitle":"많은 공급자를 위한 단일 엔드포인트","useCaseSingleEndpointText":"클라이언트를 하나의 기본 URL로 지정하고 모델 접두사(예: gh/, cc/, kr/, openai/)로 라우팅합니다.","useCaseFallbackTitle":"콤보를 사용한 폴백 및 모델 전환","useCaseFallbackText":"대시보드에서 콤보 모델을 생성하고 공급자가 내부적으로 순환하는 동안 클라이언트 구성을 안정적으로 유지하세요.","useCaseUsageVisibilityTitle":"사용량, 비용 및 디버그 가시성","useCaseUsageVisibilityText":"사용량 및 분석 탭에서 공급자, 계정, API 키별로 토큰과 비용을 추적하세요.","clientCherryStudioTitle":"체리 스튜디오","baseUrlLabel":"기본 URL","chatEndpointLabel":"채팅 엔드포인트","modelRecommendationLabel":"모델 권장사항: 명시적 접두사","clientCodexTitle":"Codex / GitHub Copilot 모델","clientCodexBullet1":"다음과 함께 모델 ID를 사용하세요.","clientCodexBullet2":"Codex 계열 모델은 다음으로 자동 라우팅됩니다.","clientCodexBullet3":"비 Codex 모델은 계속됩니다","clientCursorTitle":"커서 IDE","clientCursorBullet1":"사용","clientCursorBullet1Suffix":"커서 모델의 접두사.","clientCursorBullet2":"OAuth 연결 - 공급자 페이지에서 로그인합니다.","clientClaudeTitle":"클로드 코드 / 반중력","clientClaudeBullet1Prefix":"사용","clientClaudeBullet1Middle":"(클로드) 또는","clientClaudeBullet1Suffix":"(반중력) 접두사.","endpointChatNote":"OpenAI 호환 채팅 엔드포인트(기본값)","endpointResponsesNote":"응답 API 엔드포인트(Codex, o-시리즈).","endpointModelsNote":"연결된 모든 공급자의 모델 카탈로그입니다.","endpointAudioNote":"오디오 전사(Deepgram, AssemblyAI).","endpointImagesNote":"이미지 생성(NanoBanana).","endpointRewriteChatNote":"/v1이 없는 클라이언트용 도우미를 다시 작성합니다.","endpointRewriteResponsesNote":"/v1 없이 응답에 대한 도우미를 다시 작성합니다.","endpointRewriteModelsNote":"/v1 없이 모델 검색을 위한 도우미를 다시 작성합니다.","modelPrefixesDescriptionStart":"특정 공급자로 라우팅하려면 모델 이름 앞에 공급자 접두사를 사용하십시오. 예:","modelPrefixesDescriptionEnd":"GitHub Copilot으로 경로를 지정합니다.","provider":"공급자","type":"유형","troubleshootingModelRouting":"클라이언트가 모델 라우팅에 실패하면 명시적인 공급자/모델을 사용하십시오(예: gh/gpt-5.1-codex).","troubleshootingAmbiguousModels":"모호한 모델 오류가 발생하는 경우 기본 모델 ID 대신 공급자 접두사를 선택하세요.","troubleshootingCodexFamily":"GitHub Codex 계열 모델의 경우 모델을 gh/<codex-model>로 유지합니다. 라우터는 /responses를 자동으로 선택합니다.","troubleshootingTestConnection":"IDE 또는 외부 클라이언트에서 테스트하기 전에 대시보드 > 공급자 > 연결 테스트를 사용하세요.","troubleshootingCircuitBreaker":"공급자가 회로 차단기를 열었다고 표시하는 경우 대기 시간을 기다리거나 상태 페이지에서 자세한 내용을 확인하세요.","troubleshootingOAuth":"OAuth 공급자의 경우 토큰이 만료되면 다시 인증하세요. 공급자 카드 상태 표시기를 확인하십시오."},"legal":{"privacyPolicy":"개인 정보 보호 정책","termsOfService":"서비스 약관","providerConfigurations":"공급자 구성","apiKeys":"API 키","usageLogs":"사용 로그","applicationSettings":"애플리케이션 설정","viewExportAnalytics":"사용량 분석 보기 및 내보내기","clearHistory":"언제든지 사용 내역 지우기","configureRetention":"로그 보존 정책 구성","backupRestore":"데이터베이스 백업 및 복원","privacyMetadataTitle":"개인정보 보호정책 | 옴니루트","privacyMetadataDescription":"OmniRoute AI API 프록시 라우터에 대한 개인정보 보호정책.","termsMetadataTitle":"서비스 약관 | 옴니루트","termsMetadataDescription":"OmniRoute AI API 프록시 라우터에 대한 서비스 약관입니다.","backToHome":"집으로 돌아가기","lastUpdated":"최종 업데이트: {date}","policyLastUpdatedDate":"2026년 2월 13일","listSeparator":"-","questionsVisit":"질문이 있으신가요? 우리를 방문하세요","githubRepository":"GitHub 저장소","privacySection1Title":"1. 로컬 우선 아키텍처","privacySection1Text":"OmniRoute는 로컬 우선 애플리케이션으로 설계되었습니다. 모든 데이터 처리 및 저장은 전적으로 귀하의 컴퓨터에서 이루어집니다. 귀하의 정보를 수집하는 중앙 집중식 서버가 없습니다.","privacySection2Title":"2. 당사가 저장하는 데이터","privacyDataStoredIn":"다음 데이터는 로컬에 저장됩니다.","privacyDataProviderConfigurationsDesc":"연결 URL, 공급자 유형 및 우선순위 설정","privacyDataApiKeysDesc":"AI 제공업체 인증을 위해 암호화되어 로컬에 저장됨","privacyDataUsageLogsDesc":"요청 수, 토큰 사용량, 모델 이름, 타임스탬프 및 응답 시간","privacyDataApplicationSettingsDesc":"테마 기본 설정, 라우팅 전략 및 콤보 구성","privacySection3Title":"3. 원격 측정 없음","privacySection3Text":"OmniRoute는 원격 측정, 분석 또는 충돌 보고서를 수집하지 않습니다. 어떠한 데이터도 당사나 제3자에게 전송되지 않습니다. 귀하의 사용 패턴, API 호출 및 구성은 완전히 비공개로 유지됩니다.","privacySection4Title":"4. 제3자 AI 제공업체","privacySection4Text":"OmniRoute를 통해 API 호출을 수행하면 요청은 구성한 AI 공급자(예: OpenAI, Anthropic, Google)로 전달됩니다. 이러한 제공업체는 귀하의 데이터를 처리하는 방법을 관리하는 자체 개인 정보 보호 정책을 가지고 있습니다. 검토해 주십시오:","privacyOpenAiPolicy":"OpenAI 개인정보 보호정책","privacyAnthropicPolicy":"인류학적 개인정보 보호정책","privacyGooglePolicy":"Google 개인정보 보호정책","privacySection5Title":"5. 클라우드 동기화(선택 사항)","privacySection5Text":"선택적 클라우드 동기화 기능을 활성화하면 공급자 구성 및 API 키가 구성된 클라우드 엔드포인트로 전송될 수 있습니다. 이 기능은 기본적으로 비활성화되어 있으며 명시적인 선택이 필요합니다.","privacySection6Title":"6. 로깅","privacyLoggingIntro":"요청 로그는 대시보드 설정을 통해 구성할 수 있습니다. 다음을 수행할 수 있습니다.","privacySection7Title":"7. 귀하의 권리","privacySection7TextStart":"모든 데이터는 로컬에 저장되므로 모든 권한을 가질 수 있습니다. 언제든지 제거하여 데이터를 삭제할 수 있습니다.","privacySection7TextEnd":"디렉터리를 사용하거나 대시보드의 데이터베이스 백업 및 복원 기능을 사용합니다.","termsSection1Title":"1. 개요","termsSection1Text":"OmniRoute는 전적으로 사용자의 머신에서 작동하는 로컬 우선 AI API 프록시 라우터입니다. 로드 밸런싱, 장애 조치 및 사용량 추적을 통해 요청을 여러 AI 공급자에게 라우팅합니다.","termsSection2Title":"2. 사용자의 책임","termsResponsibilityApiKeys":"제3자 AI 제공업체(OpenAI, Anthropic, Google 등)에 대한 자체 API 키 및 자격 증명을 관리하는 것은 전적으로 귀하의 책임입니다.","termsResponsibilityCompliance":"귀하는 OmniRoute를 통해 API에 액세스하는 각 AI 제공업체의 서비스 약관을 준수해야 합니다.","termsResponsibilitySecurity":"비밀번호 설정 및 네트워크 액세스 제한을 포함하여 로컬 OmniRoute 설치의 보안에 대한 책임은 귀하에게 있습니다.","termsSection3Title":"3. 작동 원리","termsSection3Text":"OmniRoute는 중개 프록시 역할을 합니다. OmniRoute로 전송된 API 호출은 변환되어 구성된 AI 공급자에게 전달됩니다. OmniRoute는 필요한 프로토콜 변환 이상으로 요청 또는 응답의 내용을 수정하지 않습니다.","termsSection4Title":"4. 데이터 처리","termsDataStoredLocally":"모든 데이터는 컴퓨터의 SQLite 데이터베이스에 로컬로 저장됩니다.","termsNoTransmission":"OmniRoute는 클라우드 동기화 기능을 명시적으로 활성화하지 않는 한 외부 서버에 데이터를 전송하지 않습니다.","termsDataLocationText":"사용 로그, API 키 및 구성은 다음 위치에 저장됩니다.","termsSection5Title":"5. 면책조항","termsSection5Text":"OmniRoute는 어떠한 종류의 보증도 없이 \\"있는 그대로\\" 제공됩니다. API 사용, 서비스 중단 또는 데이터 손실로 인해 발생하는 비용에 대해 당사는 책임을 지지 않습니다. 항상 구성의 백업을 유지하십시오.","termsSection6Title":"6. 오픈 소스","termsSection6Text":"OmniRoute는 오픈 소스 소프트웨어입니다. 라이센스 조건에 따라 자유롭게 검사, 수정 및 배포할 수 있습니다."}}')}};
|
|
1
|
+
"use strict";exports.id=9837,exports.ids=[9837],exports.modules={79837:a=>{a.exports=JSON.parse('{"common":{"save":"저장","cancel":"취소","delete":"삭제","loading":"로드 중...","error":"오류가 발생했습니다","success":"성공","confirm":"확실합니까?","refresh":"새로고침","close":"닫기","add":"추가","edit":"편집","search":"검색","back":"뒤로","next":"다음","submit":"제출","reset":"재설정","copy":"복사","copied":"복사되었습니다!","enabled":"활성화됨","disabled":"장애인","active":"활성","inactive":"비활성","noData":"사용 가능한 데이터가 없습니다.","configure":"구성","manage":"관리하다","name":"이름","actions":"작업","status":"상태","type":"유형","model":"모델","models":"모델","provider":"공급자","account":"계정","time":"시간","details":"세부정보","created":"생성됨","lastUsed":"마지막으로 사용됨","loadMore":"더 로드하기","noResults":"검색결과가 없습니다","reloadPage":"페이지 새로고침","connected":"연결됨","disconnected":"연결이 끊김","notConfigured":"구성되지 않음","testConnection":"연결 테스트","enable":"활성화","disable":"비활성화","columns":"열","newest":"최신","oldest":"가장 오래된","all":"모두","none":"없음","yes":"예","no":"아니요","warning":"경고","note":"참고","free":"무료","skipToContent":"콘텐츠로 건너뛰기"},"sidebar":{"home":"홈","dashboard":"대시보드","providers":"공급자","combos":"콤보","usage":"사용법","analytics":"분석","costs":"비용","health":"건강","limits":"한도 및 할당량","cliTools":"CLI 도구","settings":"설정","translator":"번역기","docs":"문서","issues":"문제","endpoint":"엔드포인트","apiManager":"API 관리자","logs":"로그","auditLog":"감사 로그","shutdown":"종료","restart":"다시 시작","shutdownConfirm":"OmniRoute를 종료하시겠습니까?","restartConfirm":"OmniRoute를 다시 시작하시겠습니까?","version":"v{version}","debug":"디버그","system":"시스템","help":"도움말","serverDisconnected":"서버 연결 끊김","serverDisconnectedMsg":"프록시 서버가 중지되었거나 다시 시작되는 중입니다.","expandSidebar":"사이드바 확장","collapseSidebar":"사이드바 접기"},"header":{"logout":"로그아웃","language":"언어","providers":"공급자","providerDescription":"AI 공급자 연결 관리","combos":"콤보","comboDescription":"폴백을 사용한 모델 콤보","usage":"사용 및 분석","usageDescription":"API 사용량, 토큰 소비 및 요청 로그를 모니터링하세요.","analytics":"분석","analyticsDescription":"차트, 추세 및 평가 통찰력","cliTools":"CLI 도구","cliToolsDescription":"CLI 도구 구성","home":"홈","homeDescription":"OmniRoute에 오신 것을 환영합니다","endpoint":"엔드포인트","endpointDescription":"API 엔드포인트 구성","settings":"설정","settingsDescription":"환경설정 관리","openaiCompatible":"OpenAI 호환","anthropicCompatible":"인류 친화적"},"home":{"quickStart":"빠른 시작","quickStartDesc":"4단계로 시작해 보세요. 공급자를 연결하고, 모델을 라우팅하고, 모든 것을 모니터링하세요.","fullDocs":"전체 문서","step1Title":"1. API 키 생성","step1Desc":"<endpoint>Endpoint</endpoint> -> 등록된 키로 이동합니다. 환경당 하나의 키를 생성합니다.","step2Title":"2. 공급자 연결","step2Desc":"<providers>Providers</providers>에 계정을 추가하세요. OAuth, API 키 및 무료 등급을 지원합니다.","step3Title":"3. 고객에게 지시하십시오","step3Desc":"IDE 또는 API 클라이언트에서 기본 URL을 {url}으로 설정하세요.","step4Title":"4. 모니터링 및 최적화","step4Desc":"<logs>요청 로그</logs> 및 <analytics>Analytics</analytics>에서 토큰, 비용 및 오류를 추적합니다.","providersOverview":"공급자 개요","configuredOf":"{configured}은(는) {total} 사용 가능한 공급자로 구성되었습니다.","noModelsAvailable":"이 제공업체에 사용할 수 있는 모델이 없습니다.","configureFirst":"먼저 {providers}에서 연결을 구성하세요.","configureProvider":"공급자 구성","modelAvailable":"{count} 모델 사용 가능","modelsAvailable":"{count} 모델 사용 가능","connectionsActive":"{count} 연결 활성","connectionsActivePlural":"{count} 연결이 활성화되었습니다.","copyModelName":"모델명 복사","documentation":"문서","healthMonitor":"건강 모니터","reportIssue":"문제 신고","activeError":"{active} 활성 \xb7 {errors} 오류","oauthLabel":"OAuth","apiKeyLabel":"API 키","requestsShort":"{count} 요청","providerModelsTitle":"{provider} - 모델","copiedModel":"복사됨: {model}","aliasLabel":"별칭"},"analytics":{"title":"분석","overviewDescription":"모든 공급자와 모델 전반에 걸쳐 API 사용 패턴, 토큰 소비, 비용, 활동 추세를 모니터링하세요.","evalsDescription":"평가 모음을 실행하여 LLM 엔드포인트를 테스트하고 검증하세요. 모델 품질을 비교하고, 회귀를 감지하고, 벤치마크 대기 시간을 측정합니다.","overview":"개요","evals":"평가"},"apiManager":{"title":"API 키","createKey":"API 키 생성","key":"열쇠","revokeKey":"키 취소","revokeConfirm":"이 API 키를 취소하시겠습니까?","noKeys":"아직 API 키가 없습니다.","noKeysDesc":"엔드포인트에 대한 요청을 인증하기 위한 첫 번째 API 키 생성","keyLabel":"키 라벨","permissions":"권한","expiresAt":"만료","never":"절대로","revoke":"취소","showKey":"키 표시","hideKey":"키 숨기기","copyKey":"API 키 복사","allModels":"모든 모델","selectedModels":"선택된 모델","readOnly":"읽기 전용","fullAccess":"전체 액세스","keyManagement":"API 키 관리","keyManagementDesc":"엔드포인트에 대한 요청을 인증하기 위한 API 키 생성 및 관리","totalKeys":"총 키","restricted":"제한됨","totalRequests":"총 요청","modelsAvailable":"사용 가능한 모델","registeredKeys":"등록된 키","keysRegistered":"{count} 키가 등록되었습니다.","keyRegistered":"{count} 키가 등록되었습니다.","keysSecurityNote":"각 키는 사용 추적을 분리하고 독립적으로 취소할 수 있습니다. 보안을 위해 키는 생성 후 마스크 처리됩니다.","createFirstKey":"첫 번째 키 만들기","name":"이름","usage":"사용법","created":"생성됨","actions":"작업","reqs":"요구 사항","neverUsed":"한번도 사용하지 않음","deleteConfirm":"이 API 키를 삭제하시겠습니까?","usageTips":"사용 팁","tipAuth":"Authorization 헤더의 API 키를 Bearer YOUR_KEY로 사용하세요.","tipSecure":"키는 생성 중에 한 번만 표시되므로 안전하게 보관하세요.","tipSeparate":"다양한 클라이언트 또는 환경에 대해 별도의 키 생성","tipRestrict":"더 나은 보안 및 비용 관리를 위해 키를 특정 모델로 제한합니다.","keyName":"키 이름","keyNamePlaceholder":"예: 생산 키, 개발 키","keyNameDesc":"이 키의 목적을 식별하려면 설명이 포함된 이름을 선택하세요.","keyCreated":"API 키가 생성되었습니다.","keyCreatedSuccess":"키가 생성되었습니다!","keyCreatedNote":"지금 이 키를 복사하여 저장하세요. 다시 표시되지 않습니다.","done":"완료","savePermissions":"저장 권한","allowAll":"모두 허용","restrict":"제한하다","allowAllInfo":"이 키는 사용 가능한 모든 모델에 액세스할 수 있습니다.","restrictInfo":"이 키는 {total} 모델 중 {selected}에 액세스할 수 있습니다.","selected":"{count} 선택됨","all":"모두","clear":"지우기","searchModels":"이름이나 제공업체로 모델 검색...","noModelsFound":"모델을 찾을 수 없습니다.","keyNameRequired":"키 이름은 필수 항목입니다.","keyNameTooLong":"키 이름은 {max}자 이하여야 합니다.","keyNameInvalid":"키 이름에는 문자, 숫자, 공백, 하이픈, 밑줄만 포함할 수 있습니다.","invalidKeyName":"잘못된 키 이름","failedCreateKey":"키를 생성하지 못했습니다.","failedCreateKeyRetry":"키를 생성하지 못했습니다. 다시 시도해 주세요.","invalidKeyId":"잘못된 키 ID","failedDeleteKey":"키를 삭제하지 못했습니다.","failedDeleteKeyRetry":"키를 삭제하지 못했습니다. 다시 시도해 주세요.","invalidModelsSelection":"잘못된 모델 선택","cannotSelectMoreThanModels":"{max}개 이상의 모델을 선택할 수 없습니다.","failedUpdatePermissions":"권한을 업데이트하지 못했습니다.","failedUpdatePermissionsRetry":"권한을 업데이트하지 못했습니다. 다시 시도해 주세요.","unknownProvider":"알 수 없음","copyMaskedKey":"마스크된 키 복사","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"마지막: {date}","editPermissions":"권한 편집","deleteKey":"키 삭제","model":"{count} 모델","models":"{count} 모델","permissionsTitle":"권한: {name}","allowAllDesc":"이 키는 사용 가능한 모든 모델에 액세스할 수 있습니다.","restrictDesc":"이 키는 {totalModels} 모델 중 {selectedCount}에 액세스할 수 있습니다.","selectedCount":"{count} 선택됨"},"auditLog":{"title":"감사 로그","searchPlaceholder":"검색 작업...","action":"액션","actor":"배우","target":"대상","ipAddress":"IP 주소","timestamp":"타임스탬프","noEntries":"감사 항목을 찾을 수 없습니다.","filterByAction":"작업별로 필터링...","filterByActor":"배우별로 필터링...","filterEntriesAria":"감사 로그 항목 필터링","filterByActionTypeAria":"작업 유형별로 필터링","filterByActorAria":"배우별로 필터링","refreshAuditLogAria":"감사 로그 새로 고침","tableAria":"감사 로그 항목","failedFetchAuditLog":"감사 로그를 가져오지 못했습니다.","notAvailable":"—","description":"관리 조치 및 보안 이벤트","showing":"{count} 항목 표시 중(오프셋 {offset})","previous":"이전"},"cliTools":{"title":"CLI 도구","noActiveProviders":"활성 제공업체 없음","noActiveProvidersDesc":"CLI 도구를 구성하려면 먼저 공급자를 추가하고 연결하세요.","mapModels":"지도 모델","testConnection":"연결 테스트","connectionStatus":"연결 상태","configureEndpoint":"끝점 구성","instructions":"지침","modelMapping":"모델 매핑","baseUrl":"기본 URL","apiKey":"API 키","configured":"구성됨","notConfigured":"구성되지 않음","notInstalled":"설치되지 않음","custom":"맞춤","unknown":"알 수 없음","lastSavedAt":"마지막 저장: {date}","never":"절대로","justNow":"지금 막","minutesAgoShort":"{count}분 전","hoursAgoShort":"{count}시간 전","daysAgoShort":"{count}일 전","monthsAgoShort":"{count}개월 전","yearsAgoShort":"{count}년 전","runtimeCheckFailed":"런타임 확인 실패","yourApiKeyPlaceholder":"귀하의 API 키","modelPlaceholder":"공급자/모델 ID","configurationSaved":"구성이 성공적으로 저장되었습니다.","failedToSave":"구성을 저장하지 못했습니다.","noApiKeysCreateOne":"API 키 없음 - 키 페이지에서 키 만들기","defaultOmnirouteKey":"sk_omniroute(기본값)","selectModel":"모델 선택","selectModelForAlias":"{alias} 모델 선택","selectModelForTool":"{tool}의 모델 선택","select":"선택","clear":"지우기","comingSoon":"곧 출시 예정","checkingRuntime":"런타임 상태 확인 중...","guideOnlyIntegration":"가이드 전용 통합(로컬 런타임 필요 없음)","cliRuntimeDetected":"CLI 런타임이 감지되어 준비됨","cliFoundNotRunnable":"CLI를 찾았지만 실행할 수 없음{reason}","cliRuntimeNotDetected":"CLI 런타임이 감지되지 않음","binary":"바이너리","configPath":"구성 경로","configPathShort":"구성","failedCheckRuntimeStatus":"런타임 상태를 확인하지 못했습니다.","copy":"복사","copied":"복사됨","copyConfig":"구성 복사","saveConfig":"구성 저장","selectionSaved":"선택 항목이 저장되었습니다.","guide":"가이드","detected":"감지됨","notReady":"준비되지 않음","active":"활성","inactive":"비활성","startMitm":"MITM 시작","stopMitm":"MITM 중지","mitmStarted":"MITM이 성공적으로 시작되었습니다!","mitmStopped":"MITM이 성공적으로 중지되었습니다!","failedStart":"MITM을 시작하지 못했습니다.","failedStop":"MITM을 중지하지 못했습니다.","saveMappings":"매핑 저장","mappingsSaved":"매핑이 저장되었습니다!","failedSaveMappings":"매핑을 저장하지 못했습니다.","howItWorks":"작동 방식:","antigravityHowWorksDesc":"Antigravity는 Google의 엔드포인트로 요청을 보냅니다. MITM은 이를 가로채서 OmniRoute로 리디렉션합니다.","antigravityStep1":"1. MITM을 시작하여 OmniRoute를 통해 요청을 라우팅합니다.","antigravityStep2Prefix":"2. 추가","antigravityStep2Suffix":"호스트 파일에 127.0.0.1로 저장하세요.","antigravityStep3":"3. 반중력을 공개하면 요청이 프록시됩니다.","sudoPasswordRequiredTitle":"Sudo 비밀번호가 필요합니다","sudoPasswordHint":"호스트 파일 및 시스템 프록시 설정을 수정하려면 관리자 비밀번호가 필요합니다.","enterSudoPassword":"sudo 비밀번호를 입력하세요","sudoPasswordRequiredError":"Sudo 비밀번호가 필요합니다.","cancel":"취소","confirm":"확인","settingsApplied":"설정이 성공적으로 적용되었습니다!","failedApplySettings":"설정을 적용하지 못했습니다.","settingsReset":"설정이 재설정되었습니다!","failedResetSettings":"설정을 재설정하지 못했습니다.","backupRestored":"백업이 복원되었습니다!","failedRestore":"복원하지 못했습니다.","checkingCli":"{tool} CLI 확인 중...","cliNotRunnable":"{tool} CLI가 설치되었지만 실행할 수 없음","cliNotInstalled":"{tool} CLI가 설치되지 않았습니다.","cliNotDetected":"{tool} CLI가 감지되지 않음","cliDetectedReady":"{tool} CLI가 감지되어 준비됨","cliFoundFailedHealthcheck":"{tool} CLI를 찾았지만 런타임 상태 확인에 실패했습니다{reason}.","installCliPrompt":"이 기능을 사용하려면 {tool} CLI를 설치하세요.","installCodexPrompt":"자동 적용 기능을 사용하려면 Codex CLI를 설치하세요.","hide":"숨기기","howToInstall":"설치 방법","installationGuide":"설치 가이드","platforms":"macOS/리눅스/윈도우:","afterInstallationRun":"설치 후 실행","toVerify":"확인하기 위해.","current":"현재","baseUrlPlaceholder":"https://.../v1","resetToDefault":"기본값으로 재설정","providerModelPlaceholder":"공급자/모델 ID","apply":"적용","reset":"재설정","manualConfig":"수동 구성","backups":"백업","configBackups":"구성 백업","noBackupsYet":"아직 백업이 없습니다. 각 적용 또는 재설정 전에 백업이 자동으로 생성됩니다.","restore":"복원","backupRestoredReloading":"백업이 복원되었습니다! 상태를 다시 로드하는 중...","failedRestoreBackup":"백업을 복원하지 못했습니다.","applied":"적용되었습니다!","failed":"실패","resetDone":"재설정!","omnirouteConfiguredOpenAiCompatible":"OmniRoute는 OpenAI 호환 공급자로 구성됩니다.","provider":"공급자","model":"모델","providers":"공급자","auth":"인증","noApiKeysAvailable":"사용 가능한 API 키가 없습니다.","usingDefaultOmniroute":"기본값 사용: sk_omniroute","updateConfig":"구성 업데이트","applyConfig":"구성 적용","noBackupsAvailable":"사용 가능한 백업이 없습니다.","profileSaved":"프로필 \\"{name}\\"이(가) 저장되었습니다!","failedSaveProfile":"프로필을 저장하지 못했습니다.","profileActivated":"프로필이 활성화되었습니다!","failedActivateProfile":"프로필을 활성화하지 못했습니다.","profiles":"프로필","savedProfiles":"저장된 프로필","noProfilesYet":"아직 저장된 프로필이 없습니다. 현재 구성을 아래 프로필로 저장합니다.","activate":"활성화","deleteProfile":"프로필 삭제","profileNamePlaceholder":"프로필 이름(예: 개인 계정)","saveCurrent":"현재 저장","codexAuthNotePrefix":"코덱스 사용","codexAuthNoteMiddle":"와","codexAuthNoteSuffix":"자동 구성하려면 \\"적용\\"을 클릭하세요.","claudeManualConfiguration":"Claude CLI - 수동 구성","codexManualConfiguration":"Codex CLI - 수동 구성","droidManualConfiguration":"Factory Droid - 수동 구성","openClawManualConfiguration":"오픈 클로 - 수동 구성","clineManualConfiguration":"클라인 수동 구성","kiloManualConfiguration":"Kilo 코드 수동 구성","toolDescriptions":{"antigravity":"MITM이 포함된 Google 반중력 IDE","claude":"인류 클로드 코드 CLI","codex":"OpenAI 코덱스 CLI","droid":"팩토리 드로이드 AI 어시스턴트","openclaw":"Claw AI 도우미 열기","cline":"Cline AI 코딩 어시스턴트 CLI","kilo":"킬로코드 AI 어시스턴트 CLI","cursor":"커서 AI 코드 편집기","continue":"AI 어시스턴트 계속하기"},"guides":{"cursor":{"notes":{"0":"이 기능을 사용하려면 Cursor Pro 계정이 필요합니다.","1":"커서는 자체 서버를 통해 요청을 라우팅하므로 로컬 엔드포인트는 지원되지 않습니다. 설정에서 Cloud Endpoint를 활성화하세요."},"steps":{"1":{"title":"설정 열기","desc":"설정 -> 모델로 이동하세요."},"2":{"title":"OpenAI API 활성화","desc":"\\"OpenAI API 키\\" 옵션 활성화"},"3":{"title":"기본 URL"},"4":{"title":"API 키"},"5":{"title":"맞춤 모델 추가","desc":"\\"모든 모델 보기\\" -> \\"사용자 정의 모델 추가\\"를 클릭하세요."},"6":{"title":"모델 선택"}}},"continue":{"steps":{"1":{"title":"구성 열기","desc":"계속 구성 파일 열기"},"2":{"title":"API 키"},"3":{"title":"모델 선택"},"4":{"title":"모델 구성 추가","desc":"모델 배열에 다음 구성을 추가합니다."}}}}},"combos":{"title":"콤보","description":"가중치 기반 라우팅 및 폴백 지원을 통해 모델 콤보 생성","createCombo":"콤보 생성","editCombo":"콤보 편집","deleteCombo":"콤보 삭제","noModels":"모델 없음","noModelsYet":"아직 추가된 모델이 없습니다.","addModel":"모델 추가","addModelToCombo":"콤보에 모델 추가","routingStrategy":"라우팅 전략","maxRetries":"최대 재시도 횟수","timeout":"시간 초과(밀리초)","healthcheck":"건강검진","priority":"우선순위","fallback":"대체","roundRobin":"라운드 로빈","random":"무작위","leastLatency":"최소 지연 시간","comboName":"콤보 이름","comboNamePlaceholder":"내 콤보","deleteConfirm":"이 콤보를 삭제하시겠습니까?","noCombosYet":"아직 콤보가 없습니다.","comboCreated":"콤보가 성공적으로 생성되었습니다.","comboUpdated":"콤보가 성공적으로 업데이트되었습니다.","comboDeleted":"콤보가 삭제되었습니다.","failedCreate":"콤보를 생성하지 못했습니다.","failedUpdate":"콤보를 업데이트하지 못했습니다.","errorCreating":"콤보 생성 중 오류 발생","errorUpdating":"콤보 업데이트 중 오류 발생","errorDeleting":"콤보 삭제 오류","testFailed":"테스트 요청 실패","failedToggle":"콤보를 전환하지 못했습니다.","testResults":"테스트 결과 — {name}","resolvedBy":"해결 방법:","more":"+{count} 더보기","reqs":"요구 사항","success":"성공","proxyConfigured":"프록시가 구성됨","copyComboName":"콤보 이름 복사","enableCombo":"콤보 활성화","disableCombo":"콤보 비활성화","testCombo":"테스트 콤보","duplicate":"중복","proxyConfig":"프록시 구성","nameRequired":"이름은 필수입니다","nameInvalid":"문자, 숫자, -, _, / 및 .만 가능합니다. 허용됨","nameHint":"문자, 숫자, -, _, / 및 . 허용됨","priorityDesc":"순차적 폴백: 모델 1을 먼저 시도한 다음 2 등을 시도합니다.","weightedDesc":"대체 기능을 사용하여 중량 비율로 트래픽을 분산합니다.","roundRobinDesc":"순환 배포: 각 요청은 교대로 다음 모델로 이동합니다.","randomDesc":"균일한 무작위 선택 후 나머지 모델로 대체","leastUsedDesc":"시간이 지남에 따라 로드 밸런싱을 통해 요청이 가장 적은 모델을 선택합니다.","costOptimizedDesc":"가격을 기준으로 가장 저렴한 모델로 먼저 라우팅","models":"모델","autoBalance":"자동 균형","advancedSettings":"고급 설정","retryDelay":"재시도 지연(ms)","concurrencyPerModel":"동시성/모델","queueTimeout":"대기열 시간 초과(밀리초)","advancedHint":"전역 기본값을 사용하려면 비워 두세요. 이는 공급자별 설정을 재정의합니다.","moveUp":"위로 이동","moveDown":"아래로 이동","removeModel":"제거","saving":"저장 중...","weighted":"가중","leastUsed":"가장 적게 사용됨","costOpt":"비용 최적화"},"costs":{"title":"비용","budget":"예산","totalCost":"총 비용","breakdown":"비용 분석","noData":"비용 데이터 없음","byModel":"모델별","byProvider":"공급자별"},"endpoint":{"title":"API 엔드포인트","available":"사용 가능한 엔드포인트","cloudProxy":"클라우드 프록시","disableConfirm":"클라우드 프록시를 비활성화하시겠습니까?","baseUrl":"기본 URL","apiKeyLabel":"API 키","registeredKeys":"등록된 키","chatCompletions":"채팅 완료","responses":"응답","listModels":"모델 나열","usingCloudProxy":"클라우드 프록시 사용","usingLocalServer":"로컬 서버 사용","machineId":"머신 ID: {id}...","disableCloud":"클라우드 비활성화","enableCloud":"클라우드 활성화","modelsAcrossEndpoints":"{endpoints} 엔드포인트 전반의 {models} 모델","chatDesc":"모든 제공업체와의 스트리밍 및 비스트리밍 채팅","embeddings":"임베딩","embeddingsDesc":"검색 및 RAG 파이프라인을 위한 텍스트 임베딩","imageGeneration":"이미지 생성","imageDesc":"텍스트 프롬프트에서 이미지 생성","rerank":"순위 재지정","rerankDesc":"쿼리 관련성에 따라 문서의 순위를 다시 매깁니다.","audioTranscription":"오디오 전사","audioTranscriptionDesc":"오디오 파일을 텍스트로 변환(속삭임)","textToSpeech":"텍스트 음성 변환","textToSpeechDesc":"텍스트를 자연스러운 음성으로 변환","moderations":"조정","moderationsDesc":"콘텐츠 조정 및 안전 분류","enableCloudTitle":"클라우드 프록시 활성화","whatYouGet":"당신이 얻을 것입니다","cloudBenefitAccess":"전 세계 어디에서나 API에 액세스하세요","cloudBenefitShare":"팀과 쉽게 엔드포인트 공유","cloudBenefitPorts":"포트를 열거나 방화벽을 구성할 필요가 없습니다.","cloudBenefitEdge":"빠른 글로벌 에지 네트워크","cloudSessionNote":"Cloud는 인증 세션을 1일 동안 유지합니다. 사용하지 않을 경우 자동 삭제됩니다.","cloudUnstableNote":"Cloud는 현재 Claude Code OAuth를 사용하는 경우에 불안정합니다.","cloudConnected":"클라우드 프록시가 연결되었습니다!","connectingToCloud":"클라우드에 연결 중...","verifyingConnection":"연결 확인 중...","connecting":"연결 중...","verifying":"확인 중...","connected":"연결되었습니다!","disableCloudTitle":"클라우드 프록시 비활성화","disableWarning":"모든 인증 세션이 클라우드에서 삭제됩니다.","syncingData":"최신 데이터 동기화 중...","disablingCloud":"클라우드를 비활성화하는 중...","syncing":"동기화 중...","disabling":"비활성화 중...","cloudConnectedVerified":"클라우드 프록시가 연결되고 확인되었습니다!","connectedVerificationPending":"연결됨 — 확인 대기 중","connectedVerificationPendingWithError":"연결됨 — 확인 대기 중: {error}","cloudDisabledSuccess":"클라우드가 비활성화되었습니다.","syncedSuccess":"성공적으로 동기화되었습니다","failedDisable":"클라우드를 비활성화하지 못했습니다.","failedEnable":"클라우드를 활성화하지 못했습니다.","cloudRequestTimeout":"클라우드 요청 시간 초과","cloudRequestFailed":"클라우드 요청 실패","cloudWorkerUnreachable":"클라우드 작업자에 연결할 수 없습니다. 클라우드 서비스가 실행 중인지 확인하세요(npm run dev in /cloud).","connectionFailed":"연결 실패","syncFailed":"클라우드 데이터를 동기화하지 못했습니다.","providerModelsTitle":"{provider} — 모델","noModelsForProvider":"이 제공업체에 사용할 수 있는 모델이 없습니다.","chat":"채팅","embedding":"임베딩","image":"이미지","custom":"관습","modelsCount":"{count, plural, one {# model} other {# models}}","responsesDesc":"Codex 및 고급 에이전트 워크플로용 OpenAI Responses API","listModelsDesc":"연결된 모든 공급자의 사용 가능한 모든 모델 나열","settingsApi":"Settings API","settingsApiDesc":"API를 통해 OmniRoute 구성 읽기 및 수정","categoryCore":"핵심 API","categoryMedia":"미디어 및 멀티모달","categoryUtility":"유틸리티 및 관리"},"health":{"title":"시스템 상태","description":"OmniRoute 인스턴스의 실시간 모니터링","healthy":"건강하다","degraded":"저하됨","down":"아래로","uptime":"가동 시간","memory":"메모리","memoryRss":"메모리(RSS)","heap":"힙","cpu":"CPU","database":"데이터베이스","version":"버전","lastCheck":"마지막 확인","providerHealth":"제공자 상태","systemMetrics":"시스템 측정항목","tokenHealth":"토큰 상태","refreshAll":"모두 새로 고침","checkNow":"지금 확인하세요","loadingHealth":"건강 데이터 로드 중...","failedToLoad":"상태 데이터를 로드하지 못했습니다: {error}","retry":"재시도","allOperational":"모든 시스템 작동","issuesDetected":"시스템 문제가 감지되었습니다.","updatedAt":"{time} 업데이트됨","latency":"대기 시간","latencyP50":"p50","latencyP95":"p95","latencyP99":"p99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"총 요청수","noDataYet":"아직 데이터가 없습니다","promptCache":"프롬프트 캐시","entries":"항목","hitRate":"적중률","hitsMisses":"안타/실패","signatureCache":"서명 캐시","signatureDefaults":"기본값","signatureTool":"도구","signatureFamily":"가족","signatureSession":"세션","recovering":"회복 중","noCBData":"사용 가능한 회로 차단기 데이터가 없습니다. 먼저 몇 가지 요청을 해보세요.","providerHealthStatusAria":"공급자 상태","issuesLabel":"발견된 문제","operational":"운영","providers":"공급자","healthyCount":"{count} 건강함","nodeVersion":"노드 {version}","failures":"{count} 실패","failuresPlural":"{count} 실패","lastFailure":"마지막","rateLimitStatus":"비율 제한 상태","activeLimiters":"{count} 활성 제한기","activeLimitersPlural":"{count} 활성 제한기","queued":"대기 중","queuedCount":"{count} 대기 중","running":"달리기","runningCount":"{count} 실행 중","ok":"알았어","activeLockouts":"활성 잠금","resetConfirm":"모든 회로 차단기를 정상 상태로 재설정하시겠습니까? 그러면 모든 실패 횟수가 지워지고 모든 공급자가 작동 상태로 복원됩니다.","resetAllTitle":"모든 회로 차단기를 정상 상태로 재설정","resetting":"재설정 중...","resetAll":"모두 재설정","until":"{time}까지"},"limits":{"title":"한도 및 할당량","rateLimit":"비율 제한","remaining":"남은","requestsPerMinute":"요청/분","tokensPerMinute":"토큰/분","dailyLimit":"일일 한도"},"logs":{"title":"로그","requestLogs":"요청 로그","proxyLogs":"프록시 로그","auditLog":"감사 로그","console":"콘솔","auditLogDesc":"관리 조치 및 보안 이벤트","loading":"로드 중...","refresh":"새로고침","filterByAction":"작업별로 필터링...","filterByActor":"배우별로 필터링...","filterEntriesAria":"감사 로그 항목 필터링","filterByActionTypeAria":"작업 유형별로 필터링","filterByActorAria":"배우별로 필터링","refreshAuditLogAria":"감사 로그 새로 고침","tableAria":"감사 로그 항목","failedFetchAuditLog":"감사 로그를 가져오지 못했습니다.","showing":"{count} 항목 표시 중(오프셋 {offset})","search":"검색","timestamp":"타임스탬프","action":"액션","actor":"배우","target":"대상","details":"세부정보","ipAddress":"IP 주소","notAvailable":"—","noEntries":"감사 로그 항목이 없습니다.","previous":"이전","next":"다음"},"onboarding":{"welcome":"환영합니다","security":"보안","test":"테스트","ready":"준비됐어요!","setPassword":"비밀번호 설정","addProvider":"첫 번째 공급자 추가","getStarted":"시작하기","skip":"건너뛰기","skipWizard":"마법사를 완전히 건너뛰기","skipPassword":"비밀번호 설정 건너뛰기","skipAndContinue":"건너뛰고 계속하기","passwordLabel":"비밀번호","confirmPassword":"비밀번호 확인","enterPassword":"비밀번호를 입력하세요","confirmPasswordPlaceholder":"비밀번호 확인","passwordsMismatch":"비밀번호가 일치하지 않습니다.","setupComplete":"설정 완료!","goToDashboard":"대시보드로 이동 →","welcomeDesc":"OmniRoute는 로컬 AI API 프록시입니다. 로드 밸런싱, 장애 조치 및 사용량 추적을 통해 요청을 여러 AI 공급자에게 라우팅합니다.","multiProvider":"다중 공급자","usageTracking":"사용량 추적","apiKeyMgmt":"API 키 관리","securityDesc":"대시보드를 보호하기 위해 비밀번호를 설정하거나 지금은 건너뛰세요.","providerDesc":"첫 번째 AI 공급자를 연결하세요. 나중에 더 추가할 수 있습니다.","apiKeyRequired":"API 키(필수)","customUrlOptional":"맞춤 URL(선택사항)","testDesc":"공급자 연결이 작동하는지 확인해 보겠습니다.","runTest":"연결 테스트 실행","testingConnection":"연결 테스트 중...","connectionSuccessful":"연결 성공! 귀하의 서비스 제공자가 준비되었습니다.","noProviderFound":"공급자를 찾을 수 없습니다. 나중에 대시보드에서 추가할 수 있습니다.","testFailed":"테스트에 실패했지만 나중에 구성할 수 있습니다.","couldNotTest":"지금은 테스트할 수 없습니다. 대시보드에서 테스트할 수 있습니다.","doneDesc":"모든 준비가 완료되었습니다. OmniRoute 인스턴스가 구성되어 AI 요청을 프록시할 준비가 되었습니다.","yourEndpoint":"귀하의 엔드포인트:","continue":"계속","retry":"재시도","failedSetPassword":"비밀번호를 설정하지 못했습니다. 다시 시도해 보세요.","failedAddProvider":"공급자를 추가하지 못했습니다. 다시 시도해 보세요.","connectionError":"연결 오류입니다. 다시 시도해 주세요.","provider":"공급자"},"providers":{"title":"공급자","addProvider":"공급자 추가","editProvider":"제공자 편집","deleteProvider":"공급자 삭제","noProviders":"구성된 제공업체가 없습니다.","modelAvailability":"모델 가용성","accounts":"계정","newAccount":"새 계정","deleteConfirm":"이 제공업체를 삭제하시겠습니까?","testing":"테스트 중...","testConnection":"연결 테스트","testSuccess":"연결 성공","testFailed":"연결 실패","available":"가능","cooldown":"쿨다운","unavailable":"이용 불가","unknown":"알 수 없음","oauthLabel":"OAuth","compatibleLabel":"호환 가능","chat":"채팅","responses":"응답","messages":"메시지","oauthProviders":"OAuth 제공자","freeProviders":"무료 제공업체","apiKeyProviders":"API 키 제공자","compatibleProviders":"API 키 호환 제공자","testAll":"모두 테스트","testAllOAuth":"모든 OAuth 연결 테스트","testAllFree":"모든 무료 연결 테스트","testAllApiKey":"모든 API 키 연결 테스트","testAllCompatible":"모든 호환 연결 테스트","connected":"{count} 연결됨","errorCount":"{count} 오류({code})","errorCountNoCode":"{count} 오류","noConnections":"연결 없음","disabled":"장애인","enableProvider":"공급자 활성화","disableProvider":"공급자 비활성화","testResults":"테스트 결과","noCompatibleYet":"아직 호환되는 제공업체가 추가되지 않았습니다.","compatibleHint":"위 버튼을 사용하여 OpenAI 또는 Anthropic 호환 엔드포인트를 추가하세요.","addOpenAICompatible":"OpenAI 호환 추가","addAnthropicCompatible":"인류 호환 추가","addNewProvider":"새 공급자 추가","backToProviders":"공급자로 돌아가기","configureNewProvider":"애플리케이션과 함께 사용할 새 AI 공급자를 구성합니다.","providerLabel":"공급자","selectProvider":"제공업체 선택","selectedProvider":"선택된 제공업체","authMethod":"인증 방법","apiKeyLabel":"API 키","apiKeyRequired":"API 키가 필요합니다","selectProviderRequired":"제공업체를 선택하세요.","enterApiKey":"API 키를 입력하세요","apiKeySecure":"귀하의 API 키는 암호화되어 안전하게 저장됩니다.","oauth2Connect":"OAuth2로 연결","oauth2Label":"OAuth2","oauth2Desc":"OAuth2 인증을 사용하여 계정을 연결하세요.","displayName":"표시 이름","displayNamePlaceholder":"예: 프로덕션 API, 개발 환경","displayNameHint":"선택사항. 이 구성을 식별하기 위한 친숙한 이름입니다.","active":"활성","activeDescription":"애플리케이션에서 이 공급자를 사용하도록 설정","cancel":"취소","createProvider":"공급자 생성","failedCreate":"공급자를 생성하지 못했습니다.","errorOccurred":"오류가 발생했습니다. 다시 시도해 주세요.","modelStatus":"모델현황","allModelsOperational":"모든 모델 작동 가능","modelsWithIssues":"문제가 있는 {count} 모델","allModelsNormal":"모든 모델이 정상적으로 반응하고 있습니다.","cooldownCleared":"{model}의 쿨다운이 삭제되었습니다.","failedClearCooldown":"쿨다운을 지우지 못했습니다.","loadingAvailability":"모델 가용성 로드 중...","clearCooldown":"지우기","clearing":"지우는 중...","until":"{time}까지","providerTestFailed":"공급자 테스트 실패","modeTest":"{mode} 테스트","passedCount":"{count} 통과됨","failedCount":"{count} 실패","testedCount":"{count} 테스트됨","millisecondsAbbr":"{value}ms","okShort":"알았어","errorShort":"오류","noActiveConnectionsInGroup":"이 그룹에 대한 활성 연결이 없습니다.","allTestsPassed":"모든 {total} 테스트를 통과했습니다.","testSummary":"{passed}/{total} 통과, {failed} 실패","nameLabel":"이름","prefixLabel":"접두사","baseUrlLabel":"기본 URL","apiTypeLabel":"API 유형","prefixHint":"필수입니다. 모델 이름의 고유 접두사입니다.","nameHint":"필수입니다. 이 노드에 대한 친숙한 레이블입니다.","baseUrlHint":"필수입니다. 공급자 API 기본 URL.","anthropicPrefixPlaceholder":"AC-PROD","openaiPrefixPlaceholder":"oc-prod","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"연결 확인","validating":"검증 중...","connectionValid":"연결이 유효합니다!","connectionFailed":"연결에 실패했습니다. URL과 키를 확인하세요.","testKeyLabel":"테스트 API 키","testKeyPlaceholder":"sk-...(검증용으로만)","providerNotFound":"공급자를 찾을 수 없습니다.","deleteConnectionConfirm":"이 연결을 삭제하시겠습니까?","failedSetAlias":"별칭을 설정하지 못했습니다.","failedSaveConnection":"연결을 저장하지 못했습니다.","failedSaveConnectionRetry":"연결을 저장하지 못했습니다. 다시 시도해 주세요.","failedRetestConnection":"연결을 다시 테스트하지 못했습니다.","deleteCompatibleNodeConfirm":"이 {type} 호환 노드를 삭제하시겠습니까?","anthropicCompatibleDetails":"인류 친화적인 세부 사항","openaiCompatibleDetails":"OpenAI 호환 세부정보","messagesApi":"메시지 API","responsesApi":"응답 API","chatCompletions":"채팅 완료","importingModels":"가져오는 중...","importFromModels":"/models에서 가져오기","addConnectionToImport":"가져오기를 활성화하려면 연결을 추가하세요.","noModelsConfigured":"구성된 모델이 없습니다.","connectionCount":"{count} 연결","fetchingModels":"사용 가능한 모델을 가져오는 중...","failedFetchModels":"모델을 가져오지 못했습니다.","noModelsFound":"모델을 찾을 수 없습니다.","importFailed":"가져오기 실패","noNewModelsAdded":"새로운 모델이 추가되지 않았습니다.","adding":"추가 중...","importingModelsTitle":"모델 가져오기","copyModel":"모델 복사","removeModel":"모델 삭제","rateLimitProtected":"보호됨","rateLimitUnprotected":"보호되지 않음","enableRateLimitProtection":"속도 제한 보호를 활성화하려면 클릭하세요.","disableRateLimitProtection":"속도 제한 보호를 비활성화하려면 클릭하세요.","productionKey":"생산 키","enterNewApiKey":"새 API 키를 입력하세요","optional":"선택사항","anthropicCompatibleName":"인류 친화적","openaiCompatibleName":"OpenAI 호환","failedImportModels":"모델을 가져오지 못했습니다.","noModelsReturnedFromEndpoint":"/models 엔드포인트에서 반환된 모델이 없습니다.","importingModelsProgress":"{total} 모델 중 {current} 가져오는 중...","foundModelsStartingImport":"{count} 모델을 찾았습니다. 가져오기 시작 중...","importingModelById":"{modelId} 가져오는 중...","importSuccessCount":"{count, plural, one {# model} other {# models}}을(를) 성공적으로 가져왔습니다!","noNewModelsAddedExisting":"새로운 모델이 추가되지 않았습니다(모두 이미 존재함).","importDoneCount":"✓ 완료! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"예상치 못한 오류가 발생했습니다.","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"메시지","responsesPath":"응답","chatCompletionsPath":"채팅/완료","add":"추가","edit":"편집","delete":"삭제","anthropic":"인류학","openai":"오픈AI","singleConnectionPerCompatible":"호환되는 노드당 하나의 연결만 허용됩니다. 더 많은 연결이 필요한 경우 다른 노드를 추가하세요.","connections":"연결","providerProxyTitleConfigured":"공급자 프록시: {host}","configured":"구성된","providerProxyConfigureHint":"이 공급자의 모든 연결에 대한 프록시 구성","providerProxy":"공급자 프록시","noConnectionsYet":"아직 연결이 없습니다.","addFirstConnectionHint":"시작하려면 첫 번째 연결을 추가하세요.","addConnection":"연결 추가","availableModels":"사용 가능한 모델","pageAutoRefresh":"페이지가 자동으로 새로 고쳐집니다...","statusDisabled":"장애인","statusConnected":"연결됨","statusRuntimeIssue":"런타임 문제","statusAuthFailed":"인증 실패","statusRateLimited":"요금 제한","statusNetworkIssue":"네트워크 문제","statusTestUnsupported":"지원되지 않는 테스트","statusUnavailable":"이용할 수 없음","statusFailed":"실패했다","statusError":"오류","oauthAccount":"OAuth 계정","errorTypeRuntime":"로컬 런타임","errorTypeUpstreamAuth":"업스트림 인증","errorTypeMissingCredential":"자격증명 누락","errorTypeRefreshFailed":"새로고침 실패","errorTypeTokenExpired":"토큰이 만료되었습니다.","errorTypeRateLimited":"요금 제한","errorTypeUpstreamUnavailable":"업스트림 이용 불가","errorTypeNetworkError":"네트워크 오류","errorTypeTestUnsupported":"지원되지 않는 테스트","errorTypeUpstreamError":"업스트림 오류","proxySourceGlobal":"글로벌","proxySourceProvider":"공급자","proxySourceKey":"열쇠","proxyConfiguredBySource":"프록시({source}): {host}","autoPriority":"자동: {priority}","proxy":"프록시","retestAuthentication":"인증 재테스트","retest":"재테스트","disableConnection":"연결 비활성화","enableConnection":"연결 활성화","reauthenticateConnection":"이 연결을 다시 인증하세요.","proxyConfig":"프록시 구성","aliasExistsAlert":"별칭 \\"{alias}\\"이(가) 이미 존재합니다. 다른 모델을 사용하거나 기존 별칭을 수정하세요.","openRouterAnyModelHint":"OpenRouter는 모든 모델을 지원합니다. 빠른 액세스를 위해 모델을 추가하고 별칭을 만듭니다.","modelIdFromOpenRouter":"모델 ID(OpenRouter에서)","openRouterModelPlaceholder":"인류학/claude-3-opus","customModels":"맞춤형 모델","customModelsHint":"기본 목록에 없는 모델 ID를 추가하세요. 라우팅에 사용할 수 있습니다.","modelId":"모델 ID","customModelPlaceholder":"예를 들어 gpt-4.5-터보","loading":"로드 중...","removeCustomModel":"맞춤 모델 삭제","noCustomModels":"아직 추가된 커스텀 모델이 없습니다.","allSuggestedAliasesExist":"제안된 별칭이 모두 이미 존재합니다. 다른 모델을 선택하거나 충돌하는 별칭을 삭제하세요.","failedSaveCustomModel":"커스텀 모델을 저장하지 못했습니다.","modelAddedSuccess":"모델 {modelId}이(가) 성공적으로 추가되었습니다.","failedAddModelTryAgain":"모델을 추가하지 못했습니다. 다시 시도해 주세요.","failedSaveImportedModel":"가져온 모델을 사용자 정의 데이터베이스에 저장하지 못했습니다.","failedImportModelsTryAgain":"모델을 가져오지 못했습니다. 다시 시도해 주세요.","failedRemoveModelFromDatabase":"데이터베이스에서 모델을 제거하지 못했습니다.","modelRemovedSuccess":"모델이 성공적으로 제거되었습니다.","failedDeleteModelTryAgain":"모델을 삭제하지 못했습니다. 다시 시도해 주세요.","compatibleModelsDescription":"{type} 호환 모델을 수동으로 추가하거나 /models 엔드포인트에서 가져옵니다.","anthropicCompatibleModelPlaceholder":"클로드-3-opus-20240229","openaiCompatibleModelPlaceholder":"gpt-4o","apiKeyValidationFailed":"API 키 검증에 실패했습니다. 키를 확인하고 다시 시도해 주세요.","addProviderApiKeyTitle":"{provider} API 키 추가","checking":"확인 중...","check":"확인","valid":"유효","invalid":"유효하지 않음","creating":"만드는 중...","validationChecksAnthropicCompatible":"검증은 API 키를 확인하여 {provider}을 확인합니다.","validationChecksOpenAiCompatible":"유효성 검사는 기본 URL의 /models를 통해 {provider}을 확인합니다.","priorityLabel":"우선순위","saving":"저장 중...","save":"저장","editConnection":"연결 편집","accountName":"계정 이름","email":"이메일","healthCheckMinutes":"상태 점검(분)","healthCheckHint":"사전 토큰 새로 고침 간격. 0 = 비활성화됨.","failedTestConnection":"연결을 테스트하지 못했습니다.","failed":"실패","leaveBlankKeepCurrentApiKey":"현재 API 키를 유지하려면 비워 두세요.","editCompatibleTitle":"{type} 호환 가능 편집","compatibleBaseUrlHint":"{type} 호환 API에는 기본 URL(/v1로 끝남)을 사용하세요.","apiKeyForCheck":"API Key(확인용)","compatibleProdPlaceholder":"{type} 호환 가능(프로덕션)"},"settings":{"title":"설정","general":"일반","security":"보안","appearance":"외관","routing":"라우팅","cache":"캐시","resilience":"탄력성","systemPrompt":"시스템 프롬프트","thinkingBudget":"생각하는 예산","proxy":"프록시","pricing":"가격","storage":"저장","policies":"정책","ipFilter":"IP 필터","comboDefaults":"콤보 기본값","fallbackChains":"폴백 체인","changePassword":"비밀번호 변경","enablePassword":"비밀번호 활성화","darkMode":"다크 모드","lightMode":"라이트 모드","systemTheme":"시스템 테마","enableCache":"캐시 활성화","cacheTTL":"캐시 TTL","maxCacheSize":"최대 캐시 크기","clearCache":"캐시 지우기","cacheHits":"캐시 적중","cacheMisses":"캐시 미스","hitRate":"적중률","cacheEntries":"캐시 항목","circuitBreaker":"회로 차단기","retryPolicy":"재시도 정책","maxRetries":"최대 재시도 횟수","retryDelay":"재시도 지연","timeoutMs":"시간 초과(밀리초)","enableSystemPrompt":"시스템 프롬프트 활성화","systemPromptText":"시스템 프롬프트 텍스트","enableThinking":"사고 활성화","maxThinkingTokens":"맥스 씽킹 토큰","enableProxy":"프록시 활성화","proxyUrl":"프록시 URL","pricingRates":"가격 요율 형식","currentPricing":"현재 가격 개요","loadingPricing":"가격 데이터 로드 중...","noPricing":"사용 가능한 가격 데이터가 없습니다.","input":"입력","output":"출력","cached":"캐시됨","reasoning":"추론","cacheCreation":"캐시 생성","customPricing":"맞춤형 가격","databaseSize":"데이터베이스 크기","backupDb":"백업 데이터베이스","restoreDb":"데이터베이스 복원","exportData":"데이터 내보내기","importData":"데이터 가져오기","clearData":"모든 데이터 지우기","clearDataConfirm":"모든 데이터가 영구적으로 삭제됩니다. 확실합니까?","enableRequestLogs":"요청 로그 활성화","logRetention":"로그 보존","ipWhitelist":"IP 화이트리스트","ipBlacklist":"IP 블랙리스트","addIP":"IP 추가","savedSuccessfully":"설정이 성공적으로 저장되었습니다.","ai":"AI","advanced":"고급","localMode":"로컬 모드 — 컴퓨터에 저장된 모든 데이터","settingsSectionsAria":"설정 섹션","switchThemes":"밝은 테마와 어두운 테마 간 전환","themeSelectionAria":"테마 선택","themeLight":"빛","themeDark":"어둠","themeSystem":"시스템","hideHealthLogs":"상태 확인 로그 숨기기","hideHealthLogsDesc":"ON일 때, 서버 콘솔에서 [HealthCheck] 메시지를 억제합니다.","promptCache":"프롬프트 캐시","flushCache":"캐시 플러시","flushing":"플러싱…","size":"크기","hits":"조회수","evictions":"퇴거","loadingCacheStats":"캐시 통계 로드 중…","globalProxy":"글로벌 프록시","globalProxyDesc":"모든 API 호출에 대해 글로벌 아웃바운드 프록시를 구성합니다. 개별 공급자, 콤보 및 키가 이를 재정의할 수 있습니다.","noGlobalProxy":"글로벌 프록시가 구성되지 않았습니다.","globalLabel":"글로벌","configure":"구성","globalSystemPrompt":"글로벌 시스템 프롬프트","systemPromptDesc":"프록시 수준에서 모든 요청에 삽입됩니다.","saved":"저장됨","systemPromptPlaceholder":"모든 요청에 삽입하려면 시스템 프롬프트를 입력하세요...","systemPromptHint":"이 프롬프트는 모든 요청의 시스템 메시지 앞에 추가됩니다. 전역 지침, 안전 지침 또는 응답 형식 지정 규칙에 사용합니다.","chars":"{count}자","thinkingBudgetTitle":"생각하는 예산","thinkingBudgetDesc":"모든 요청에서 AI 추론 토큰 사용을 제어합니다.","passthrough":"통과","passthroughDesc":"변경 사항 없음 - 클라이언트가 사고 예산을 제어합니다.","auto":"자동","autoDesc":"모든 사고 구성 제거 - 공급자가 결정하도록 함","custom":"맞춤","customDesc":"모든 요청에 대해 고정 토큰 예산 설정","adaptive":"적응형","adaptiveDesc":"요청 복잡성에 따라 예산 규모 조정","effortNone":"없음(토큰 0개)","effortLow":"낮음(1,000개 토큰)","effortMedium":"중간(10,000개 토큰)","effortHigh":"높음(128K 토큰)","tokenBudget":"토큰예산","tokens":"토큰","baseEffortLevel":"기본 노력 수준","adaptiveHint":"적응 모드는 메시지 수, 도구 사용량 및 프롬프트 길이에 따라 이 기본 수준에서 확장됩니다.","requireLogin":"로그인 필요","requireLoginDesc":"ON으로 설정하면 대시보드에 비밀번호가 필요합니다. OFF시 로그인 없이 접속 가능합니다.","currentPassword":"현재 비밀번호","enterCurrentPassword":"현재 비밀번호를 입력하세요","newPassword":"새 비밀번호","enterNewPassword":"새 비밀번호를 입력하세요","confirmPassword":"새 비밀번호 확인","confirmPasswordPlaceholder":"새 비밀번호 확인","passwordsNoMatch":"비밀번호가 일치하지 않습니다.","passwordUpdated":"비밀번호가 성공적으로 업데이트되었습니다.","failedUpdatePassword":"비밀번호를 업데이트하지 못했습니다.","errorOccurred":"오류가 발생했습니다","updatePassword":"비밀번호 업데이트","setPassword":"비밀번호 설정","apiEndpointProtection":"API 엔드포인트 보호","requireAuthModels":"/models에 대한 API 키 필요","requireAuthModelsDesc":"ON인 경우 /v1/models 엔드포인트는 인증되지 않은 요청에 대해 404를 반환합니다. 승인되지 않은 사용자가 모델을 발견하는 것을 방지합니다.","blockedProviders":"차단된 제공업체","blockedProvidersDesc":"/v1/models 응답에서 특정 공급자를 숨깁니다. 차단된 제공업체는 모델 목록에 표시되지 않습니다.","providersBlocked":"{count} 공급자가 /models에서 차단되었습니다.","blockProviderTitle":"{provider} 차단","unblockProviderTitle":"{provider} 차단 해제","routingStrategy":"라우팅 전략","fillFirst":"먼저 채우기","fillFirstDesc":"우선순위에 따라 계정을 사용하세요","roundRobin":"라운드 로빈","roundRobinDesc":"모든 계정을 순환합니다.","p2c":"P2C","p2cDesc":"무작위로 2개를 선택하고 더 건강한 것을 사용하세요","random":"무작위","randomDesc":"각 요청마다 무작위 계정","leastUsed":"최소 사용","leastUsedDesc":"최근에 가장 적게 사용한 계정 선택","costOpt":"비용 선택","costOptDesc":"가장 저렴한 계정을 선호합니다","stickyLimit":"고정 한도","stickyLimitDesc":"전환 전 계정당 통화","modelAliases":"모델 별칭","modelAliasesDesc":"모델 이름을 다시 매핑하는 와일드카드 패턴 • * 및 ?를 사용합니다.","aliasPatternPlaceholder":"클로드-소네트-*","aliasTargetPlaceholder":"클로드 소네트-4-20250514","pattern":"패턴","targetModel":"대상 모델","add":"+ 추가","session":"세션","sessionDetailsAria":"세션 세부정보","status":"상태","authenticated":"인증됨","guest":"손님","loginTime":"로그인 시간","sessionAge":"세션 연령","browser":"브라우저","clearLocalData":"로컬 데이터 지우기","logout":"로그아웃","clearLocalDataConfirm":"모든 로컬 데이터를 삭제하시겠습니까? 그러면 기본 설정이 재설정됩니다.","unknown":"알 수 없음","systemActor":"시스템","ipAccessControl":"IP 접근 제어","ipAccessControlDesc":"특정 IP 주소 차단 또는 허용","ipModeDisabled":"장애인","ipModeBlacklist":"블랙리스트","ipModeWhitelist":"화이트리스트","ipModeWhitelistPriority":"WL 우선순위","addIpAddress":"IP 주소 추가","ipAddressPlaceholder":"192.168.1.0/24 또는 10.0.*.*","block":"+ 차단","allow":"+ 허용","blocked":"차단됨({count})","allowed":"허용됨({count})","temporaryBans":"임시 금지({count})","minLeft":"{min}분 남음","auditLog":"감사 로그","searchAuditLogs":"감사 로그 검색...","failedLoadAuditLog":"감사 로그를 로드하지 못했습니다.","noAuditEvents":"감사 이벤트가 없습니다.","action":"액션","actor":"배우","details":"세부정보","time":"시간","fallbackChainsTitle":"폴백 체인","fallbackChainsDesc":"모델별 공급자 대체 순서 정의","addChain":"+ 체인 추가","modelName":"모델명","modelNamePlaceholder":"클로드 소네트-4-20250514","providersCommaSeparated":"공급자(쉼표로 구분, 우선순위)","providersCommaSeparatedPlaceholder":"인류, openai, 쌍둥이자리","createChain":"체인 생성","noFallbackChains":"대체 체인 없음","noFallbackChainsDesc":"모델에 대한 공급자 대체 순서를 정의하는 체인을 만듭니다.","loadingFallbackChains":"대체 체인 로드 중...","deleteChainConfirm":"\'{model}\'에 대한 대체 체인을 삭제하시겠습니까?","chainCreated":"{model}용으로 생성된 체인","chainDeleted":"{model}에 대한 체인이 삭제되었습니다.","failedCreateChain":"체인을 생성하지 못했습니다.","failedDeleteChain":"체인을 삭제하지 못했습니다.","deleteChain":"체인 삭제","fillModelAndProviders":"모델명과 제공업체를 입력하세요.","addAtLeastOneProvider":"제공업체를 하나 이상 추가하세요.","comboDefaultsTitle":"콤보 기본값","globalComboConfig":"글로벌 콤보 구성","defaultStrategy":"기본 전략","defaultStrategyDesc":"명시적인 전략이 없는 새로운 콤보에 적용","comboStrategyAria":"콤보 전략","priority":"우선순위","weighted":"가중","maxRetriesLabel":"최대 재시도 횟수","retryDelayLabel":"재시도 지연(ms)","timeoutLabel":"시간 초과(밀리초)","healthCheck":"건강검진","healthCheckDesc":"제공업체 가용성 사전 확인","trackMetrics":"추적 지표","trackMetricsDesc":"콤보별 요청 측정항목 기록","providerOverrides":"공급자 재정의","providerOverridesDesc":"공급자당 시간 초과 및 재시도를 재정의합니다. 공급자 설정은 전역 기본값을 재정의합니다.","providerMaxRetriesAria":"{provider} 최대 재시도 횟수","providerTimeoutAria":"{provider} 시간 초과(밀리초)","removeProviderOverrideAria":"{provider} 재정의 제거","newProviderNamePlaceholder":"예를 들어 구글, 오픈아이...","newProviderNameAria":"새 제공업체 이름","retries":"재시도","ms":"ms","saveComboDefaults":"콤보 기본값 저장","maxNestingDepth":"최대 중첩 깊이","concurrencyPerModel":"동시성/모델","queueTimeout":"대기열 시간 초과(밀리초)","providerProfiles":"공급자 프로필","providerProfilesDesc":"OAuth(세션 기반) 및 API 키(측정) 공급자에 대한 별도의 복원력 설정입니다. OAuth 공급자는 낮은 비율 제한으로 인해 더 엄격한 기준을 적용합니다.","oauthProviders":"OAuth 제공자","apiKeyProviders":"API 키 제공자","transientCooldown":"일시적인 쿨다운","rateLimitCooldown":"비율 제한 쿨다운","maxBackoffLevel":"최대 백오프 수준","cbThreshold":"CB 임계값","cbResetTime":"차단기 재설정 시간","rateLimiting":"속도 제한","rateLimitingDesc":"API 키 제공자는 안전한 기본값을 사용하여 자동으로 속도가 제한됩니다. 제한은 응답 헤더에서 학습되고 시간이 지남에 따라 조정됩니다.","defaultSafetyNet":"기본 안전망","rpm":"RPM","minGap":"민갭","maxConcurrent":"최대 동시","activeLimiters":"활성 리미터","noActiveLimiters":"아직 활성 속도 제한기가 없습니다.","reservoir":"저수지","running":"달리기","queued":"대기 중","circuitBreakers":"회로 차단기","breakerStateClosed":"휴무","breakerStateOpen":"열기","breakerStateHalfOpen":"반개방형","tripped":"{count}이(가) 작동되었습니다.","healthy":"{count} 건강함","resetAll":"모두 재설정","noCircuitBreakers":"아직 활성화된 회로 차단기가 없습니다. 요청이 콤보 파이프라인을 통해 흐를 때 자동으로 생성됩니다.","failures":"{count} 실패","policiesLocked":"정책 및 잠긴 식별자","allOperational":"모든 시스템 작동 — 잠금이나 차단기 작동 없음","loadingPolicies":"정책 로드 중...","lockedIdentifiers":"잠긴 식별자","unlockedIdentifier":"잠금 해제됨: {identifier}","sinceDate":"{date} 이후","forceUnlock":"강제 잠금 해제","unlocking":"잠금 해제 중...","failedUnlock":"잠금 해제에 실패했습니다.","failedLoadWithStatus":"로드 실패: {status}","failedLoadResilience":"복원력 상태를 로드하지 못했습니다.","saveFailed":"저장 실패","resetFailed":"재설정 실패","loadingResilience":"복원력 상태 로드 중...","retry":"재시도","systemStorage":"시스템 및 스토리지","allDataLocal":"모든 데이터는 컴퓨터에 로컬로 저장됩니다.","databasePath":"데이터베이스 경로","exportDatabase":"데이터베이스 내보내기","exportAll":"모두 내보내기(.tar.gz)","importDatabase":"데이터베이스 가져오기","confirmDbImport":"데이터베이스 가져오기 확인","confirmDbImportDesc":"그러면 모든 현재 데이터가 {file}의 콘텐츠로 대체됩니다. 가져오기 전에 백업이 자동으로 생성됩니다.","yesImport":"예, 수입합니다","lastBackup":"마지막 백업","noBackupYet":"아직 백업이 없습니다","backupNow":"지금 백업","backupRestore":"백업 및 복원","viewBackups":"백업 보기","hide":"숨기기","backupRetentionDesc":"데이터베이스 스냅샷은 복원 전과 데이터가 변경될 때 15분마다 자동으로 생성됩니다. 보존: 스마트 순환을 통한 24시간 + 30일 백업.","loadingBackups":"백업 로드 중...","noBackupsYet":"아직 사용할 수 있는 백업이 없습니다. 데이터가 변경되면 백업이 자동으로 생성됩니다.","backupsAvailable":"{count} 백업 사용 가능","refresh":"새로고침","confirm":"확인하시겠습니까?","yes":"예","no":"아니요","restore":"복원","invalidFileType":"파일 형식이 잘못되었습니다. .sqlite 파일만 허용됩니다.","exportFailed":"내보내기 실패","exportFailedWithError":"내보내기 실패: {error}","fullExportFailedWithError":"전체 내보내기 실패: {error}","backupCreated":"생성된 백업: {file}","restoreSuccess":"복원되었습니다! {connections} 연결, {nodes} 노드, {combos} 콤보, {apiKeys} API 키.","importSuccess":"데이터베이스를 가져왔습니다! {connections} 연결, {nodes} 노드, {combos} 콤보, {apiKeys} API 키.","justNow":"지금 막","minutesAgo":"{count}분 전","hoursAgo":"{count}시간 전","daysAgo":"{count}일 전","backupReasonManual":"매뉴얼","backupReasonPreRestore":"사전 복원","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"마지막 백업 이후 변경 사항 없음","backupFailed":"백업 실패","restoreFailed":"복원 실패","importFailed":"가져오기 실패","errorDuringRestore":"복원 중 오류가 발생했습니다.","errorDuringImport":"가져오는 중에 오류가 발생했습니다.","modelPricing":"모델 가격","modelPricingDesc":"모델별 비용 구성 • 모든 비용은 $/1M 토큰 단위","providers":"공급자","registry":"레지스트리","priced":"가격","searchProvidersModels":"공급자 또는 모델 검색...","showAll":"모두 표시","noProvidersMatch":"검색어와 일치하는 제공업체가 없습니다.","howPricingWorks":"가격 책정 방식","cacheWrite":"캐시 쓰기","unsaved":"저장되지 않은","resetDefaults":"기본값 재설정","saveProvider":"공급자 저장","saving":"저장 중...","model":"모델","models":"모델","moreProviders":"{count} 제공업체 더보기","withPricing":"가격이 구성된 경우","policiesCircuitBreakers":"정책 및 회로 차단기","activeIssuesDetected":"활성 문제가 감지되었습니다.","off":"끄기","resetPricingConfirm":"{provider}의 모든 가격을 기본값으로 재설정하시겠습니까?","pricingDescInput":"입력: 모델에 전송된 토큰","pricingDescOutput":"출력: 생성된 토큰","pricingDescCached":"캐시됨: 재사용된 입력(입력 속도의 ~50%)","pricingDescReasoning":"추론: 사고 토큰(출력으로 대체)","pricingDescCacheWrite":"캐시 쓰기: 캐시 항목 생성(입력으로 대체)","pricingDescFormula":"비용 = (입력 \xd7 입력 속도) + (출력 \xd7 출력 속도) + (캐시 \xd7 캐시 속도) 백만 토큰당.","pricingSettingsTitle":"가격 설정","totalModels":"총 모델","active":"활성","costCalculation":"비용 계산","costCalculationDesc":"비용은 토큰 사용량과 각 모델에 구성된 가격 책정 요율을 기준으로 계산됩니다.","pricingFormat":"가격 형식","pricingFormatDesc":"모든 요율은 $/1M 토큰(백만 토큰당 달러) 단위입니다.","tokenTypes":"토큰 유형","inputTokenDesc":"표준 프롬프트 토큰","outputTokenDesc":"완료/응답 토큰","cachedTokenDesc":"캐시된 입력 토큰(일반적으로 입력 속도의 50%)","reasoningTokenDesc":"특수 추론/사고 토큰(출력 속도로 대체)","cacheCreationTokenDesc":"캐시 항목을 생성하는 데 사용되는 토큰(입력 속도로 대체)","customPricingNote":"특정 모델의 기본 가격을 재정의할 수 있습니다. 맞춤 재정의는 자동 감지된 가격보다 우선 적용됩니다.","editPricing":"가격 편집","viewFullDetails":"전체 세부정보 보기","modelAliasesTitle":"모델 별칭","addCustomAlias":"사용자 지정 별칭 추가","deprecatedModelId":"사용 중단된 모델 ID","newModelId":"새 모델 ID","customAliases":"사용자 지정 별칭","builtInAliases":"기본 제공 별칭","backgroundDegradationTitle":"백그라운드 작업 다운그레이드","backgroundDegradationDesc":"백그라운드 작업(제목, 요약)을 자동 감지하여 저렴한 모델로 라우팅","enableDegradation":"백그라운드 다운그레이드 활성화","enableDegradationHint":"활성화하면 제목 생성 및 요약과 같은 백그라운드 작업이 자동으로 저렴한 모델로 라우팅됩니다","tasksDetected":"감지된 작업","degradationMap":"모델 다운그레이드 맵","premiumModel":"프리미엄 모델","cheapModel":"저렴한 모델","detectionPatterns":"감지 패턴","newPattern":"예: \\"제목 생성\\""},"translator":{"title":"번역기","metaTitle":"번역가 놀이터 | 옴니루트","metaDescription":"공급자 간의 API 형식 변환을 디버그, 테스트 및 시각화합니다.","playgroundTitle":"번역가 놀이터","playground":"놀이터","realtime":"실시간 번역 활동","chatTester":"채팅 테스터","testBench":"테스트 벤치","liveMonitor":"라이브 모니터","modeDescriptionPlayground":"API 요청 본문을 붙여넣고 OmniRoute가 이를 공급자 형식(OpenAI ← Claude ← Gemini ← Responses API) 간에 어떻게 변환하는지 확인하세요.","modeDescriptionChatTester":"OmniRoute를 통해 실제 채팅 요청을 보내고 전체 왕복(입력, 번역된 요청, 공급자 응답 및 번역된 출력)을 검사합니다.","modeDescriptionTestBench":"사전 정의된 시나리오를 실행하고 공급자와 모델 간의 호환성을 비교하세요.","modeDescriptionLiveMonitor":"요청이 OmniRoute를 통해 전달됨에 따라 번역 이벤트를 실시간으로 감시하세요.","modeDescriptionFallback":"OmniRoute가 공급자 간 API 요청을 변환하는 방법을 디버그, 테스트 및 시각화합니다.","recentTranslations":"최근 번역","noTranslations":"아직 번역이 없습니다.","source":"소스","target":"대상","time":"시간","model":"모델","status":"상태","latency":"대기 시간","totalTranslations":"총 번역","successful":"성공","errors":"오류","avgLatency":"평균 지연 시간","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"실시간 — 자동 새로고침","paused":"일시중지됨","eventsAppearHint":"요청이 OmniRoute를 통해 전달될 때 번역 이벤트가 여기에 표시됩니다. 이벤트를 생성하려면 다음 방법 중 하나를 사용하세요.","chatTesterTab":"채팅 테스터 탭","testBenchTab":"테스트 벤치 탭","externalApiCalls":"외부 API 호출","ideCliIntegrations":"IDE/CLI 통합","inMemoryNote":"참고: 이벤트는 메모리에 저장되며 서버가 다시 시작되면 재설정됩니다.","ok":"알았어","errorShort":"오류","formatConverter":"형식 변환기","formatConverterDescription":"JSON 요청 본문을 붙여넣거나 입력하세요. 변환기는 소스 형식을 자동으로 감지하여 대상 형식으로 변환합니다. 이를 사용하여 OmniRoute가 형식(OpenAI ← Claude ⇔ Gemini ⇔ Responses API) 간 요청을 변환하는 방법을 디버깅합니다.","input":"입력","output":"출력","auto":"자동","swapFormats":"형식 교환","translateAction":"번역하다","clear":"지우기","inputPlaceholder":"여기에 요청 본문을 붙여넣거나 아래에서 템플릿을 선택하세요...","exampleTemplates":"예제 템플릿","exampleTemplatesHint":"— 로드하려면 클릭하세요.","templateLoadHint":"템플릿은 {format} 형식으로 요청을 로드합니다. 다른 형식으로 로드하려면 소스 형식을 변경하세요.","compatibilityTester":"호환성 테스터","compatibilityReport":"호환성 보고서","testBenchDescription":"사전 정의된 시나리오(간단한 채팅, 도구 호출 등)를 실행하여 번역 및 공급자 호환성을 확인하세요. 소스 형식과 대상 공급자를 선택한 다음 모든 테스트를 실행하여 호환성 비율을 확인하세요. 이를 사용하여 공급자 간에 작동하는 기능을 찾으세요.","targetProvider":"대상 제공자","runAllTests":"모든 테스트 실행","runTest":"테스트 실행","reRun":"재실행","running":"실행중...","passed":"합격","failed":"실패했다","passedIconLabel":"✅ 합격","chunks":"덩어리","scenarioSimpleChat":"간단한 채팅","scenarioToolCalling":"도구 호출","scenarioMultiTurn":"다회전","scenarioThinking":"생각","scenarioSystemPrompt":"시스템 프롬프트","scenarioStreaming":"스트리밍","templateNames":{"simple-chat":"간단한 채팅","tool-calling":"도구 호출","multi-turn":"다회전","thinking":"생각","system-prompt":"시스템 프롬프트","streaming":"스트리밍"},"templateDescriptions":{"simple-chat":"기본 문자 메시지","tool-calling":"함수/도구 호출","multi-turn":"역사와의 대화","thinking":"확장된 사고/추론","system-prompt":"복잡한 시스템 지침","streaming":"SSE 스트리밍 요청"},"templatePayloads":{"simpleChat":{"system":"당신은 도움이 되는 조수입니다.","userGreeting":"안녕하세요! 오늘 기분이 어떠세요?"},"toolCalling":{"userWeather":"상파울루 날씨는 어떻습니까?","toolDescription":"특정 위치의 현재 날씨 확인","cityNameDescription":"도시 이름"},"multiTurn":{"system":"당신은 코딩 도우미입니다.","userInitial":"Python에서 배열을 정렬하는 함수를 작성합니다.","assistantExample":"다음은 간단한 정렬 기능입니다.\\n\\n``파이썬\\ndef sort_array(arr):\\n 반환 정렬(arr)\\n````","userFollowUp":"이제 내림차순으로 정렬해 보겠습니다."},"thinking":{"question":"처음 100개의 소수의 합은 얼마입니까?"},"systemPrompt":{"systemInstruction":"당신은 분산 시스템을 전문으로 하는 수석 소프트웨어 엔지니어입니다. 업계 모범 사례를 사용하여 질문에 간결하게 답변하세요. 관련이 있는 경우 항상 코드 예제를 제공하세요. 마크다운을 사용하여 응답 형식을 지정하세요.","question":"회로 차단기 패턴을 어떻게 구현하나요?"},"streaming":{"prompt":"그림 그리는 법을 배우는 로봇에 대한 짧은 이야기를 들려주세요."}},"openaiCompatibleLabel":"OpenAI 호환","anthropicCompatibleLabel":"인류 친화적","noTemplateForFormat":"이 형식에 대한 템플릿이 없습니다.","translationFailed":"번역 실패: {error}","pipelineDebugger":"파이프라인 디버거","translationPipeline":"번역 파이프라인","pipelineVisualization":"파이프라인 시각화","pipelineVisualizationHint":"감지 → 번역 → 공급자 호출을 통해 요청이 어떻게 진행되는지 확인하려면 메시지를 보내세요.","chatTesterDescription":"특정 클라이언트 형식으로 메시지를 보내고 번역 파이프라인의 각 단계를 검사합니다.","chatTesterFlow":"클라이언트 요청 → 형식 감지 → OpenAI Intermediate → 공급자 형식 → 응답","clickStepToInspect":"단계를 클릭하면 해당 단계의 데이터를 검사할 수 있습니다.","clientFormat":"클라이언트 형식","provider":"공급자","modelPlaceholder":"모델 이름을 선택하거나 입력하세요...","sendMessageToSeePipeline":"번역 파이프라인을 보려면 메시지를 보내세요.","chatMessageHintPrefix":"귀하의 메시지는 다음과 같은 형식으로 지정됩니다.","chatMessageHintSuffix":"요청하고 파이프라인을 통해 번역되어 선택한 공급자에게 전송됩니다.","youWithFormat":"귀하({format})","assistant":"어시스턴트","typeMessage":"메시지를 입력하세요...","send":"보내기","clientRequest":"클라이언트 요청","clientRequestDescription":"클라이언트가 보내는 요청 본문","formatDetected":"형식이 감지되었습니다.","formatDetectedDescription":"OmniRoute는 요청 구조에서 API 형식을 자동 감지합니다.","openaiIntermediate":"OpenAI 중급","openaiIntermediateDescription":"모든 형식은 먼저 OpenAI 형식(범용 브리지)으로 정규화됩니다.","providerFormat":"공급자 형식","providerFormatDescription":"OpenAI 형식은 공급자의 기본 형식으로 변환됩니다.","providerResponse":"제공자 응답","providerResponseRawDescription":"공급자 API의 원시 응답","providerResponseSseDescription":"공급자 API의 원시 SSE 스트림","unexpectedError":"예상치 못한 오류가 발생했습니다.","error":"오류","errorMessage":"오류: {message}","requestFailed":"요청 실패","noTextExtracted":"(텍스트가 추출되지 않았습니다)","liveMonitorDescriptionPrefix":"OmniRoute를 통한 API 호출 흐름으로 번역 이벤트를 표시합니다. 이벤트는 메모리 내 버퍼에서 발생합니다(다시 시작 시 재설정). 사용","liveMonitorDescriptionSuffix":", 또는 외부 API 호출을 통해 이벤트를 생성합니다."},"usage":{"title":"사용법","loggerTab":"로거","proxyTab":"프록시","budgetManagement":"예산 관리","budgetSaved":"예산 한도가 저장되었습니다.","budgetSaveFailed":"예산을 저장하지 못했습니다.","loadingBudgetData":"예산 데이터 로드 중...","noApiKeysTitle":"API 키 없음","noApiKeysDescription":"예산 한도를 설정하려면 먼저 API 키를 추가하세요.","apiKey":"API 키","todaysSpend":"오늘의 지출","thisMonth":"이번 달","setLimits":"한도 설정","dailyLimitUsd":"일일 한도(USD)","monthlyLimitUsd":"월 한도(USD)","warningThresholdPercent":"경고 임계값(%)","dailyLimitPlaceholder":"예를 들어 5.00","monthlyLimitPlaceholder":"예를 들어 50.00","warningThresholdPlaceholder":"80","saveLimits":"저장 한도","budgetOk":"예산 양호 — {remaining} 남음","budgetExceeded":"예산 초과 - 요청이 차단될 수 있음","totalRequests":"총 요청수","noDataYet":"아직 데이터가 없습니다","latency":"대기 시간","latencyP50":"p50","latencyP95":"p95","latencyP99":"p99","promptCache":"프롬프트 캐시","systemHealth":"시스템 상태","entries":"항목","activeCount":"{count} 활성","openCircuitBreakersDetected":"개방형 회로 차단기가 감지되었습니다.","hitRate":"적중률","hitsMisses":"안타/실패","circuitBreakers":"회로 차단기","lockedIPs":"잠긴 IP","lockoutsAutoRefreshHint":"모델별 비율 제한 잠금 • 10초 자동 새로고침","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} 남음","howItWorks":"작동 방식","howItWorksSubtitle":"평가를 통해 LLM 응답을 검증하는 방법 알아보기","define":"정의","defineStepDescription":"포함, 정규식 또는 정확한 일치와 같은 전략을 사용하여 입력 프롬프트 및 예상 출력 기준으로 테스트 사례를 만듭니다.","run":"실행","runStepDescription":"OmniRoute를 통해 LLM 엔드포인트에 대해 테스트 케이스를 실행하세요. 각 사례는 실제 API 요청으로 전송됩니다.","evaluate":"평가하다","evaluateStepDescription":"응답은 예상 기준과 비교됩니다. 지연 시간 측정항목과 자세한 피드백을 통해 각 사례의 통과/실패를 확인하세요.","evalSuites":"평가 제품군","evalSuitesHint":"제품군을 클릭하여 테스트 사례를 본 다음 실행하여 LLM 엔드포인트를 평가하세요.","evalsLoading":"평가 모음 로드 중...","noEvalSuitesFound":"평가 제품군을 찾을 수 없습니다.","noEvalSuitesDescription":"평가 제품군은 API 또는 코드를 통해 정의할 수 있습니다. 포함, 정규식, 정확한 일치 및 사용자 정의 기능과 같은 전략을 사용하여 예상 결과에 대해 모델 출력을 테스트합니다.","columnCase":"케이스","columnStatus":"상태","columnLatency":"대기 시간","columnDetails":"세부정보","columnModel":"모델","columnStrategy":"전략","columnExpected":"예상","statsSuites":"스위트","statsTestCases":"테스트 케이스","statsModels":"모델","statsCoverage":"적용 범위","statsStrategiesCount":"{count} 전략","evaluationStrategies":"평가 전략","modelsUnderTest":"테스트 중인 모델","searchSuitesPlaceholder":"제품군 검색...","passSuffix":"통과","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"평가 실행","runningProgress":"{current}/{total} 실행 중...","passRate":"합격률","summaryBreakdown":"{passed} 통과 \xb7 {failed} 실패 \xb7 총 {total}","passedIconLabel":"✅ 합격","failedIconLabel":"❌ 실패","detailsContains":"포함: \\"{term}\\"","detailsRegex":"정규식: {pattern}","detailsExpected":"예상: \\"{expected}\\"","noResultsYet":"아직 결과가 없습니다","testCasesCount":"테스트 케이스({count})","noTestCasesDefined":"정의된 테스트 사례가 없습니다.","runEvalHint":"LLM 엔드포인트에 대해 모든 사례를 실행하려면 \\"평가 실행\\"을 클릭하세요. 각 테스트는 OmniRoute를 통해 실제 요청을 보냅니다.","notifyNoTestCases":"이 제품군에 대해 정의된 테스트 사례가 없습니다.","notifyAllCasesPassed":"{total} 건 모두 통과됨 ✅","notifySomeCasesFailed":"{passed}/{total} 통과, {failed} 실패","notifyEvalRunFailed":"평가 실행 실패","notifyEvalTitle":"평가: {name}","modelEvals":"모델 평가","evalsHeroDescription":"사전 정의된 평가 제품군을 실행하여 LLM 엔드포인트를 테스트하고 검증하세요. 각 제품군에는 OmniRoute를 통해 실제 프롬프트를 보내고 예상 기준과 응답을 비교하는 테스트 사례가 포함되어 있어 회귀를 감지하고, 모델을 비교하고, 공급자 전체의 응답 품질을 보장하는 데 도움이 됩니다.","qualityValidation":"품질 검증","modelComparison":"모델 비교","regressionDetection":"회귀 감지","latencyBenchmarks":"지연 시간 벤치마크","modelLockouts":"모델 잠금","noLockouts":"현재 잠긴 모델이 없습니다.","activeSessions":"활성 세션","noSessions":"활성 세션 없음","sessionsHint":"세션은 프록시를 통한 요청 흐름으로 나타납니다.","sessionsTrackedHint":"요청 핑거프린팅을 통해 추적됨 • 자동 새로고침 5초","session":"세션","age":"나이","requests":"요청사항","connection":"연결","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}s","durationMinutesShort":"{value}m","durationHoursShort":"{value}h","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"공급자 한도","noProviders":"연결된 제공업체 없음","connectProvidersForQuota":"OAuth를 통해 공급자에 연결하여 API 할당량 한도 및 사용량을 추적하세요.","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"({count}에서 필터링됨)","autoRefresh":"자동 새로고침","refreshAll":"모두 새로 고침","loadingQuotas":"로드 중...","account":"계정","modelQuotas":"모델 할당량","lastUsed":"마지막으로 사용됨","actions":"작업","refreshQuota":"새로고침 할당량","today":"오늘","tomorrow":"내일","dayTimeFormat":"{day}, {time}","inDuration":"{duration}에서","notApplicable":"해당 없음","rawPlanWithValue":"기본 계획: {plan}","noPlanFromProvider":"공급자의 계획 없음","noQuotaData":"할당량 데이터 없음","noQuotaDataAvailable":"사용 가능한 할당량 데이터가 없습니다.","noAccountsForTierFilter":"등급 필터에 대한 계정을 찾을 수 없습니다.","tierAll":"모두","tierEnterprise":"기업","tierTeam":"팀","tierBusiness":"비즈니스","tierUltra":"울트라","tierPro":"프로","tierPlus":"플러스","tierFree":"무료","tierUnknown":"알 수 없음"},"modals":{"waitingAuth":"승인을 기다리는 중","verificationUrl":"확인 URL","yourCode":"귀하의 코드","remoteAccess":"원격 액세스:","connectedSuccess":"성공적으로 연결되었습니다!","connectionFailed":"연결 실패","chooseAuthMethod":"인증 방법을 선택하세요:","awsBuilderId":"AWS 빌더 ID","awsIamIdentity":"AWS IAM 자격 증명 센터","googleAccount":"구글 계정","githubAccount":"GitHub 계정","importToken":"토큰 가져오기","pasteToken":"Kiro IDE에서 새로 고침 토큰을 붙여넣습니다.","awsRegion":"AWS 지역","autoDetecting":"토큰 자동 감지 중...","readingFromCache":"AWS SSO 캐시에서 읽기","readingFromCursor":"커서 IDE 데이터베이스에서 읽기","initializing":"초기화 중...","pricingConfig":"가격 구성","loadingPricing":"가격 데이터 로드 중...","pricingRatesFormat":"가격 요율 형식","noPricingData":"사용 가능한 가격 데이터가 없습니다.","noModelsFound":"모델을 찾을 수 없습니다."},"loggers":{"allProviders":"모든 제공자","allModels":"모든 모델","allAccounts":"모든 계정","allApiKeys":"모든 API 키","allTypes":"모든 유형","allLevels":"모든 레벨","modelAZ":"모델 A-Z","modelZA":"모델 Z-A","loadingLogs":"로그 로드 중...","loadingProxyLogs":"프록시 로그 로드 중...","noLogEntries":"로그 항목을 찾을 수 없습니다.","noPayloadData":"이 로그 항목에 사용할 수 있는 페이로드 데이터가 없습니다.","proxyEvent":"프록시 이벤트","proxy":"프록시","level":"레벨","directNative":"직접(네이티브)","combo":"콤보","inputTokens":"나:","outputTokens":"아:"},"stats":{"usageOverview":"사용법 개요","outputTokens":"출력 토큰","totalCost":"총 비용","usageByModel":"모델별 사용량","usageByAccount":"계정별 사용량","failedToLoad":"사용 통계를 로드하지 못했습니다.","tokenHealth":"토큰 상태","totalOAuth":"총 OAuth","healthy":"건강하다","warning":"경고","errored":"오류 발생","lastCheck":"마지막 확인","noData":"데이터 없음","share":"공유","unableToLoad":"시스템 측정항목을 로드할 수 없습니다.","product":"제품","resources":"자원","company":"회사"},"auth":{"welcome":"환영합니다","signIn":"로그인","enterPassword":"계속하려면 비밀번호를 입력하세요","password":"비밀번호","unifiedProxy":"통합 AI API 프록시","unifiedAiApiProxy":"통합 AI API 프록시","unifiedAiApiProxyDesc":"단일 엔드포인트를 통해 여러 AI 공급자에게 요청을 라우팅합니다. 로드 밸런싱, 장애 조치 및 사용 추적 기능이 내장되어 있습니다.","passwordNotEnabled":"비밀번호 보호가 활성화되지 않았습니다.","loading":"로드 중...","invalidPassword":"잘못된 비밀번호","errorOccurredRetry":"오류가 발생했습니다. 다시 시도해 주세요.","configureInstance":"OmniRoute 인스턴스를 구성해 보겠습니다.","runOnboardingWizard":"온보딩 마법사를 실행하여 비밀번호를 설정하고 첫 번째 AI 공급자를 연결하세요.","startOnboarding":"온보딩 시작","secureYourInstance":"인스턴스 보안","setPasswordDescription":"대시보드를 보호하고 무단 액세스로부터 API 엔드포인트를 보호하기 위해 비밀번호를 설정하세요.","configurePassword":"비밀번호 구성","continue":"계속","windowWillClose":"이 창은 자동으로 닫힙니다...","closeTabNow":"이제 이 탭을 닫아도 됩니다.","copyUrlManual":"주소 표시줄에서 URL을 복사하여 애플리케이션에 붙여넣으세요.","accessDeniedDescription":"이 리소스에 액세스할 수 있는 권한이 없습니다. API 키를 확인하거나 관리자에게 문의하세요.","goToDashboard":"대시보드로 이동","featureMultiProviderTitle":"다중 공급자","featureMultiProviderDesc":"OpenAI, Anthropic, Google 등","featureLoadBalancingTitle":"로드 밸런싱","featureLoadBalancingDesc":"요청을 지능적으로 분산","featureUsageTrackingTitle":"사용량 추적","featureUsageTrackingDesc":"비용 및 토큰 모니터링","resetPassword":"비밀번호 재설정","resetDescription":"대시보드에 대한 액세스를 복구하는 방법을 선택하세요.","stopServer":"OmniRoute 서버 중지","processing":"처리 중...","pleaseWait":"승인이 완료되는 동안 잠시 기다려 주십시오.","authSuccess":"승인 성공!","copyUrl":"이 URL 복사","accessDenied":"액세스가 거부되었습니다.","methodCliTitle":"방법 1: CLI 재설정","methodCliDescription":"OmniRoute가 실행 중인 서버에서 다음 명령을 실행합니다.","methodCliHint":"그러면 새 비밀번호를 설정하라는 메시지가 표시됩니다. 먼저 서버를 중지해야 합니다.","methodManualTitle":"방법 2: 수동 재설정","methodManualDescription":"데이터베이스에서 비밀번호를 삭제하고 시작 시 새 비밀번호를 설정하세요.","setPasswordInYour":"새 비밀번호를 설정하세요.","fileLabelSuffix":"파일:","newPasswordPlaceholder":"your_new_password","deleteSettingsFile":"삭제","orRemovePasswordHashField":"또는 PasswordHash 필드를 제거하세요.","restartServerWithNewPassword":"서버를 다시 시작하세요. 새 비밀번호가 사용됩니다.","backToLogin":"로그인으로 돌아가기","forgotPassword":"비밀번호를 잊으셨나요?"},"landing":{"brandName":"옴니루트","navigateHome":"집으로 이동","toggleMenu":"토글 메뉴","featuresLink":"특징","docsLink":"문서","github":"GitHub","versionLive":"v1.0이 출시되었습니다","oneEndpoint":"하나의 엔드포인트","allProviders":"모든 AI 제공업체","heroDescription":"웹 대시보드가 포함된 AI 엔드포인트 프록시 - CLIProxyAPI의 JavaScript 포트입니다. Claude Code, OpenAI Codex, Cline, RooCode 및 기타 CLI 도구와 원활하게 작동합니다.","getStarted":"시작하기","viewOnGithub":"GitHub에서 보기","powerfulFeatures":"강력한 기능","featuresSubtitle":"AI 인프라를 한 곳에서 관리하는 데 필요한 모든 것이 확장 가능하도록 구축되었습니다.","featureUnifiedEndpointTitle":"통합 엔드포인트","featureUnifiedEndpointDesc":"단일 표준 API URL을 통해 모든 공급자에 액세스합니다.","featureEasySetupTitle":"쉬운 설정","featureEasySetupDesc":"npx 명령을 사용하여 몇 분 만에 시작하고 실행할 수 있습니다.","featureModelFallbackTitle":"모델 대체","featureModelFallbackDesc":"장애가 발생하거나 대기 시간이 긴 경우 공급자를 자동으로 전환합니다.","featureUsageTrackingTitle":"사용량 추적","featureUsageTrackingDesc":"모든 모델에 대한 자세한 분석 및 비용 모니터링.","featureOAuthApiKeysTitle":"OAuth 및 API 키","featureOAuthApiKeysDesc":"하나의 저장소에서 자격 증명을 안전하게 관리하세요.","featureCloudSyncTitle":"클라우드 동기화","featureCloudSyncDesc":"여러 장치에서 구성을 즉시 동기화하세요.","featureCliSupportTitle":"CLI 지원","featureCliSupportDesc":"Claude Code, Codex, Cline, Cursor 등과 함께 작동합니다.","featureDashboardTitle":"대시보드","featureDashboardDesc":"실시간 트래픽 분석을 위한 시각적 대시보드입니다.","howItWorks":"OmniRoute 작동 방식","howItWorksDescription":"데이터는 귀하의 애플리케이션에서 당사의 지능형 라우팅 계층을 통해 작업에 가장 적합한 제공업체로 원활하게 흐릅니다.","howItWorksStep1Title":"1. CLI 및 SDK","howItWorksStep1Description":"귀하의 요청은 귀하가 선호하는 도구 또는 당사의 통합 SDK에서 시작됩니다. 기본 URL만 변경하면 됩니다.","howItWorksStep2Title":"2. 옴니루트 허브","howItWorksStep2Description":"우리 엔진은 프롬프트를 분석하고 공급자 상태를 확인하며 지연 시간이나 비용이 가장 낮은 경로를 지정합니다.","howItWorksStep3Title":"3. AI 제공업체","howItWorksStep3Description":"요청은 OpenAI, Anthropic, Gemini 등이 즉시 이행합니다.","getStartedIn30Seconds":"30초 안에 시작하세요","getStartedDescription":"OmniRoute를 설치하고, 웹 대시보드를 통해 공급자를 구성하고, AI 요청 라우팅을 시작하세요.","installOmniRoute":"OmniRoute 설치","installStepDescription":"npx 명령을 실행하여 서버를 즉시 시작하세요.","openDashboard":"대시보드 열기","openDashboardStepDescription":"웹 인터페이스를 통해 공급자 및 API 키 구성","routeRequests":"라우팅 요청","routeRequestsStepDescription":"CLI 도구를 {endpoint}에 지정하세요.","terminal":"터미널","copy":"복사","copied":"✓ 복사됨","startingOmniRoute":"OmniRoute 시작 중...","serverRunningOnLabel":"실행 중인 서버","dashboardLabel":"대시보드","readyToRoute":"라우팅 준비 완료! ✓","configureProvidersNote":"\uD83D\uDCDD 대시보드에서 공급자를 구성하거나 환경 변수를 사용하세요.","dataLocation":"데이터 위치:","dataLocationMacLinux":" 맥OS/리눅스:","dataLocationWindows":" 윈도우:","product":"제품","dashboardLink":"대시보드","changelog":"변경 내역","resources":"자원","documentation":"문서","npm":"NPM","legal":"법적","mitLicense":"MIT 라이센스","footerTagline":"AI 생성을 위한 통합 엔드포인트입니다. AI 공급자를 쉽게 연결하고 라우팅하고 관리하세요.","copyright":"\xa9 {year} OmniRoute. 모든 권리 보유.","flowToolClaudeCode":"클로드 코드","flowToolOpenAICodex":"오픈AI 코덱스","flowToolCline":"클라인","flowToolCursor":"커서","flowProviderOpenAI":"오픈AI","flowProviderAnthropic":"인류학","flowProviderGemini":"쌍둥이자리","flowProviderGithubCopilot":"GitHub 코파일럿","interactiveDiagram":"데스크탑에 표시되는 대화형 다이어그램","ctaTitle":"AI 인프라를 단순화할 준비가 되셨나요?","ctaDescription":"OmniRoute를 통해 AI 통합을 간소화하는 개발자와 함께하세요. 오픈 소스이며 무료로 시작할 수 있습니다.","startFree":"무료로 시작하세요","readDocumentation":"문서 읽기"},"docs":{"title":"문서","quickStart":"빠른 시작","features":"특징","supportedProviders":"지원되는 제공업체","supportedProvidersToc":"공급자","commonUseCases":"일반적인 사용 사례","clientCompatibility":"클라이언트 호환성","apiReference":"API 참조","method":"방법","path":"경로","notes":"메모","modelPrefixes":"모델 접두어","prefix":"접두사","troubleshooting":"문제 해결","supportsChat":"채팅 및 응답 엔드포인트를 모두 지원합니다.","oauthAutoRefresh":"자동 토큰 새로 고침을 통한 OAuth 연결.","fullStreaming":"모든 모델에 대한 전체 스트리밍 지원.","docsLabel":"문서","docsHeroDescription":"다중 공급자 LLM을 위한 AI 게이트웨이. OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor 및 20개 이상의 공급자를 위한 하나의 엔드포인트입니다.","openDashboard":"대시보드 열기","endpointPage":"엔드포인트 페이지","github":"GitHub","reportIssue":"문제 보고","onThisPage":"이 페이지에서","documentationVersion":"문서 - v{version}","quickStartStep1Title":"1. 설치 및 실행","quickStartStep1Prefix":"실행","quickStartStep1Middle":"또는 GitHub에서 복제하여 실행하세요.","quickStartStep2Title":"2. API 키 생성","quickStartStep2Text":"엔드포인트 -> 등록된 키로 이동합니다. 환경당 하나의 키를 생성합니다.","quickStartStep3Title":"3. 공급자 연결","quickStartStep3Text":"OAuth 로그인, API 키 또는 무료 계층 자동 연결을 통해 공급자 계정을 추가하세요.","quickStartStep4Title":"4. 클라이언트 기본 URL 설정","quickStartStep4Prefix":"IDE 또는 API 클라이언트를 다음으로 지정하세요.","quickStartStep4Suffix":"예를 들어 공급자 접두사를 사용하십시오.","featureRoutingTitle":"다중 공급자 라우팅","featureRoutingText":"단일 OpenAI 호환 엔드포인트를 통해 30개 이상의 AI 공급자에게 요청을 라우팅합니다. 채팅, 응답, 오디오 및 이미지 API를 지원합니다.","featureCombosTitle":"콤보와 밸런싱","featureCombosText":"대체 체인 및 균형 조정 전략(라운드 로빈, 우선 순위, 무작위, 최소 사용, 비용 최적화)을 사용하여 모델 콤보를 만듭니다.","featureUsageTitle":"사용량 및 비용 추적","featureUsageText":"실시간 토큰 계산, 공급자/모델별 비용 계산, API 키 및 계정별 세부 사용량 분석.","featureAnalyticsTitle":"분석 대시보드","featureAnalyticsText":"시간 경과에 따른 요청, 토큰, 오류, 대기 시간, 비용 및 모델 인기도에 대한 차트가 포함된 시각적 분석입니다.","featureHealthTitle":"건강 모니터링","featureHealthText":"실시간 상태 확인, 공급자 상태, 회로 차단기 상태 및 지수 백오프를 통한 자동 속도 제한 감지.","featureCliTitle":"CLI 도구","featureCliText":"IDE 구성을 관리하고, 백업을 내보내거나 가져오고, 코덱스 프로필을 검색하고, 대시보드에서 설정을 구성하세요.","featureSecurityTitle":"보안 및 정책","featureSecurityText":"API 키 인증, IP 필터링, 프롬프트 주입 가드, 도메인 정책, 세션 관리 및 감사 로깅.","featureCloudSyncTitle":"클라우드 동기화","featureCloudSyncText":"암호화된 자격 증명 및 자동 장애 조치를 통해 원격 액세스를 위해 구성을 Cloudflare Workers에 동기화하세요.","providersAcrossConnectionTypes":"세 가지 연결 유형에 걸쳐 {count} 공급자.","manageProviders":"공급자 관리","providersCount":"{count} 제공업체","providerTypeFree":"프리 티어","providerTypeOAuth":"OAuth","providerTypeApiKey":"API 키","useCaseSingleEndpointTitle":"많은 공급자를 위한 단일 엔드포인트","useCaseSingleEndpointText":"클라이언트를 하나의 기본 URL로 지정하고 모델 접두사(예: gh/, cc/, kr/, openai/)로 라우팅합니다.","useCaseFallbackTitle":"콤보를 사용한 폴백 및 모델 전환","useCaseFallbackText":"대시보드에서 콤보 모델을 생성하고 공급자가 내부적으로 순환하는 동안 클라이언트 구성을 안정적으로 유지하세요.","useCaseUsageVisibilityTitle":"사용량, 비용 및 디버그 가시성","useCaseUsageVisibilityText":"사용량 및 분석 탭에서 공급자, 계정, API 키별로 토큰과 비용을 추적하세요.","clientCherryStudioTitle":"체리 스튜디오","baseUrlLabel":"기본 URL","chatEndpointLabel":"채팅 엔드포인트","modelRecommendationLabel":"모델 권장사항: 명시적 접두사","clientCodexTitle":"Codex / GitHub Copilot 모델","clientCodexBullet1":"다음과 함께 모델 ID를 사용하세요.","clientCodexBullet2":"Codex 계열 모델은 다음으로 자동 라우팅됩니다.","clientCodexBullet3":"비 Codex 모델은 계속됩니다","clientCursorTitle":"커서 IDE","clientCursorBullet1":"사용","clientCursorBullet1Suffix":"커서 모델의 접두사.","clientCursorBullet2":"OAuth 연결 - 공급자 페이지에서 로그인합니다.","clientClaudeTitle":"클로드 코드 / 반중력","clientClaudeBullet1Prefix":"사용","clientClaudeBullet1Middle":"(클로드) 또는","clientClaudeBullet1Suffix":"(반중력) 접두사.","endpointChatNote":"OpenAI 호환 채팅 엔드포인트(기본값)","endpointResponsesNote":"응답 API 엔드포인트(Codex, o-시리즈).","endpointModelsNote":"연결된 모든 공급자의 모델 카탈로그입니다.","endpointAudioNote":"오디오 전사(Deepgram, AssemblyAI).","endpointImagesNote":"이미지 생성(NanoBanana).","endpointRewriteChatNote":"/v1이 없는 클라이언트용 도우미를 다시 작성합니다.","endpointRewriteResponsesNote":"/v1 없이 응답에 대한 도우미를 다시 작성합니다.","endpointRewriteModelsNote":"/v1 없이 모델 검색을 위한 도우미를 다시 작성합니다.","modelPrefixesDescriptionStart":"특정 공급자로 라우팅하려면 모델 이름 앞에 공급자 접두사를 사용하십시오. 예:","modelPrefixesDescriptionEnd":"GitHub Copilot으로 경로를 지정합니다.","provider":"공급자","type":"유형","troubleshootingModelRouting":"클라이언트가 모델 라우팅에 실패하면 명시적인 공급자/모델을 사용하십시오(예: gh/gpt-5.1-codex).","troubleshootingAmbiguousModels":"모호한 모델 오류가 발생하는 경우 기본 모델 ID 대신 공급자 접두사를 선택하세요.","troubleshootingCodexFamily":"GitHub Codex 계열 모델의 경우 모델을 gh/<codex-model>로 유지합니다. 라우터는 /responses를 자동으로 선택합니다.","troubleshootingTestConnection":"IDE 또는 외부 클라이언트에서 테스트하기 전에 대시보드 > 공급자 > 연결 테스트를 사용하세요.","troubleshootingCircuitBreaker":"공급자가 회로 차단기를 열었다고 표시하는 경우 대기 시간을 기다리거나 상태 페이지에서 자세한 내용을 확인하세요.","troubleshootingOAuth":"OAuth 공급자의 경우 토큰이 만료되면 다시 인증하세요. 공급자 카드 상태 표시기를 확인하십시오."},"legal":{"privacyPolicy":"개인 정보 보호 정책","termsOfService":"서비스 약관","providerConfigurations":"공급자 구성","apiKeys":"API 키","usageLogs":"사용 로그","applicationSettings":"애플리케이션 설정","viewExportAnalytics":"사용량 분석 보기 및 내보내기","clearHistory":"언제든지 사용 내역 지우기","configureRetention":"로그 보존 정책 구성","backupRestore":"데이터베이스 백업 및 복원","privacyMetadataTitle":"개인정보 보호정책 | 옴니루트","privacyMetadataDescription":"OmniRoute AI API 프록시 라우터에 대한 개인정보 보호정책.","termsMetadataTitle":"서비스 약관 | 옴니루트","termsMetadataDescription":"OmniRoute AI API 프록시 라우터에 대한 서비스 약관입니다.","backToHome":"집으로 돌아가기","lastUpdated":"최종 업데이트: {date}","policyLastUpdatedDate":"2026년 2월 13일","listSeparator":"-","questionsVisit":"질문이 있으신가요? 우리를 방문하세요","githubRepository":"GitHub 저장소","privacySection1Title":"1. 로컬 우선 아키텍처","privacySection1Text":"OmniRoute는 로컬 우선 애플리케이션으로 설계되었습니다. 모든 데이터 처리 및 저장은 전적으로 귀하의 컴퓨터에서 이루어집니다. 귀하의 정보를 수집하는 중앙 집중식 서버가 없습니다.","privacySection2Title":"2. 당사가 저장하는 데이터","privacyDataStoredIn":"다음 데이터는 로컬에 저장됩니다.","privacyDataProviderConfigurationsDesc":"연결 URL, 공급자 유형 및 우선순위 설정","privacyDataApiKeysDesc":"AI 제공업체 인증을 위해 암호화되어 로컬에 저장됨","privacyDataUsageLogsDesc":"요청 수, 토큰 사용량, 모델 이름, 타임스탬프 및 응답 시간","privacyDataApplicationSettingsDesc":"테마 기본 설정, 라우팅 전략 및 콤보 구성","privacySection3Title":"3. 원격 측정 없음","privacySection3Text":"OmniRoute는 원격 측정, 분석 또는 충돌 보고서를 수집하지 않습니다. 어떠한 데이터도 당사나 제3자에게 전송되지 않습니다. 귀하의 사용 패턴, API 호출 및 구성은 완전히 비공개로 유지됩니다.","privacySection4Title":"4. 제3자 AI 제공업체","privacySection4Text":"OmniRoute를 통해 API 호출을 수행하면 요청은 구성한 AI 공급자(예: OpenAI, Anthropic, Google)로 전달됩니다. 이러한 제공업체는 귀하의 데이터를 처리하는 방법을 관리하는 자체 개인 정보 보호 정책을 가지고 있습니다. 검토해 주십시오:","privacyOpenAiPolicy":"OpenAI 개인정보 보호정책","privacyAnthropicPolicy":"인류학적 개인정보 보호정책","privacyGooglePolicy":"Google 개인정보 보호정책","privacySection5Title":"5. 클라우드 동기화(선택 사항)","privacySection5Text":"선택적 클라우드 동기화 기능을 활성화하면 공급자 구성 및 API 키가 구성된 클라우드 엔드포인트로 전송될 수 있습니다. 이 기능은 기본적으로 비활성화되어 있으며 명시적인 선택이 필요합니다.","privacySection6Title":"6. 로깅","privacyLoggingIntro":"요청 로그는 대시보드 설정을 통해 구성할 수 있습니다. 다음을 수행할 수 있습니다.","privacySection7Title":"7. 귀하의 권리","privacySection7TextStart":"모든 데이터는 로컬에 저장되므로 모든 권한을 가질 수 있습니다. 언제든지 제거하여 데이터를 삭제할 수 있습니다.","privacySection7TextEnd":"디렉터리를 사용하거나 대시보드의 데이터베이스 백업 및 복원 기능을 사용합니다.","termsSection1Title":"1. 개요","termsSection1Text":"OmniRoute는 전적으로 사용자의 머신에서 작동하는 로컬 우선 AI API 프록시 라우터입니다. 로드 밸런싱, 장애 조치 및 사용량 추적을 통해 요청을 여러 AI 공급자에게 라우팅합니다.","termsSection2Title":"2. 사용자의 책임","termsResponsibilityApiKeys":"제3자 AI 제공업체(OpenAI, Anthropic, Google 등)에 대한 자체 API 키 및 자격 증명을 관리하는 것은 전적으로 귀하의 책임입니다.","termsResponsibilityCompliance":"귀하는 OmniRoute를 통해 API에 액세스하는 각 AI 제공업체의 서비스 약관을 준수해야 합니다.","termsResponsibilitySecurity":"비밀번호 설정 및 네트워크 액세스 제한을 포함하여 로컬 OmniRoute 설치의 보안에 대한 책임은 귀하에게 있습니다.","termsSection3Title":"3. 작동 원리","termsSection3Text":"OmniRoute는 중개 프록시 역할을 합니다. OmniRoute로 전송된 API 호출은 변환되어 구성된 AI 공급자에게 전달됩니다. OmniRoute는 필요한 프로토콜 변환 이상으로 요청 또는 응답의 내용을 수정하지 않습니다.","termsSection4Title":"4. 데이터 처리","termsDataStoredLocally":"모든 데이터는 컴퓨터의 SQLite 데이터베이스에 로컬로 저장됩니다.","termsNoTransmission":"OmniRoute는 클라우드 동기화 기능을 명시적으로 활성화하지 않는 한 외부 서버에 데이터를 전송하지 않습니다.","termsDataLocationText":"사용 로그, API 키 및 구성은 다음 위치에 저장됩니다.","termsSection5Title":"5. 면책조항","termsSection5Text":"OmniRoute는 어떠한 종류의 보증도 없이 \\"있는 그대로\\" 제공됩니다. API 사용, 서비스 중단 또는 데이터 손실로 인해 발생하는 비용에 대해 당사는 책임을 지지 않습니다. 항상 구성의 백업을 유지하십시오.","termsSection6Title":"6. 오픈 소스","termsSection6Text":"OmniRoute는 오픈 소스 소프트웨어입니다. 라이센스 조건에 따라 자유롭게 검사, 수정 및 배포할 수 있습니다."}}')}};
|