@srouterhq/server 0.0.0-stage → 0.9.0
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/LICENSE +21 -0
- package/client/dist/assets/am-TQ7Jmdqe.js +1 -0
- package/client/dist/assets/ar-Bf5a7yfC.js +1 -0
- package/client/dist/assets/az-CrosE1xH.js +1 -0
- package/client/dist/assets/bg-BvWnmcUz.js +1 -0
- package/client/dist/assets/bn-ams5TsJp.js +1 -0
- package/client/dist/assets/cs-Dh67CaJ_.js +1 -0
- package/client/dist/assets/da-9WlT8Iq7.js +1 -0
- package/client/dist/assets/de-lWhJJzz7.js +1 -0
- package/client/dist/assets/el-Cu7_GhNq.js +1 -0
- package/client/dist/assets/es-BZuzsBcP.js +1 -0
- package/client/dist/assets/fa-Dwdn-jKS.js +1 -0
- package/client/dist/assets/fi-BFrFyOTy.js +1 -0
- package/client/dist/assets/fr-XhbtmPpj.js +1 -0
- package/client/dist/assets/geist-cyrillic-ext-wght-normal-DjL33-gN.woff2 +0 -0
- package/client/dist/assets/geist-cyrillic-wght-normal-BEAKL7Jp.woff2 +0 -0
- package/client/dist/assets/geist-latin-ext-wght-normal-DC-KSUi6.woff2 +0 -0
- package/client/dist/assets/geist-latin-wght-normal-BgDaEnEv.woff2 +0 -0
- package/client/dist/assets/geist-mono-cyrillic-ext-wght-normal-I4S5GZfc.woff2 +0 -0
- package/client/dist/assets/geist-mono-cyrillic-wght-normal-BmXc_FBt.woff2 +0 -0
- package/client/dist/assets/geist-mono-latin-ext-wght-normal-DrnZ1wKl.woff2 +0 -0
- package/client/dist/assets/geist-mono-latin-wght-normal-B_7UjwxQ.woff2 +0 -0
- package/client/dist/assets/geist-mono-symbols2-wght-normal-GZpp1pK2.woff2 +0 -0
- package/client/dist/assets/geist-mono-vietnamese-wght-normal-D8KDMBhC.woff2 +0 -0
- package/client/dist/assets/geist-vietnamese-wght-normal-6IgcOCM7.woff2 +0 -0
- package/client/dist/assets/gu-D0uhLUB8.js +1 -0
- package/client/dist/assets/ha-CVlm9pqp.js +1 -0
- package/client/dist/assets/he-CMIFeoWr.js +1 -0
- package/client/dist/assets/hi-ENTwhBpn.js +1 -0
- package/client/dist/assets/hr-fc03vMy_.js +1 -0
- package/client/dist/assets/hu-YBo2BIYt.js +1 -0
- package/client/dist/assets/id-BEWXYX69.js +1 -0
- package/client/dist/assets/ig-BKLZFKka.js +1 -0
- package/client/dist/assets/index-D9I4KtvR.js +145 -0
- package/client/dist/assets/index-txhEmCdb.css +2 -0
- package/client/dist/assets/it-Bzmei1Y2.js +1 -0
- package/client/dist/assets/ja-BfcpuqEl.js +1 -0
- package/client/dist/assets/ka-CnWjRgLo.js +1 -0
- package/client/dist/assets/km-BAjPR3Qj.js +1 -0
- package/client/dist/assets/kn-B15WKU5m.js +1 -0
- package/client/dist/assets/ko-C61fAB-w.js +1 -0
- package/client/dist/assets/lt-CYTr4_YW.js +1 -0
- package/client/dist/assets/ml-CtqxgyH3.js +1 -0
- package/client/dist/assets/mr-X5TMY7aR.js +1 -0
- package/client/dist/assets/ms-DSg8RqPS.js +1 -0
- package/client/dist/assets/my-D7RqR8uE.js +1 -0
- package/client/dist/assets/ne-DaflxkDj.js +1 -0
- package/client/dist/assets/nl-BOqqtsC8.js +1 -0
- package/client/dist/assets/no-BSHp_StB.js +1 -0
- package/client/dist/assets/or-BkLR9Vub.js +1 -0
- package/client/dist/assets/pa-CarJ2XgI.js +1 -0
- package/client/dist/assets/pl-C2n0V-0k.js +1 -0
- package/client/dist/assets/pt-BR-CqJdNhg2.js +1 -0
- package/client/dist/assets/pt-PT-C_HpMyKz.js +1 -0
- package/client/dist/assets/ro-DVRZqSAS.js +1 -0
- package/client/dist/assets/ru-DwAJG7VC.js +1 -0
- package/client/dist/assets/si-BxUezXm0.js +1 -0
- package/client/dist/assets/sk-eI1VcIfY.js +1 -0
- package/client/dist/assets/sr-CJF3auCr.js +1 -0
- package/client/dist/assets/srouter-logo-C6ZfjGIi.svg +14 -0
- package/client/dist/assets/sv-nqvwHAq_.js +1 -0
- package/client/dist/assets/sw-DWynE2pW.js +1 -0
- package/client/dist/assets/ta-BVM12knC.js +1 -0
- package/client/dist/assets/te-oyzEkF7_.js +1 -0
- package/client/dist/assets/th-COVeE0ZQ.js +1 -0
- package/client/dist/assets/tl-DsJANnQz.js +1 -0
- package/client/dist/assets/tr-B-Fl-urO.js +1 -0
- package/client/dist/assets/uk-C5qketAO.js +1 -0
- package/client/dist/assets/ur-QU9KugfV.js +1 -0
- package/client/dist/assets/uz-DL9cG_mY.js +1 -0
- package/client/dist/assets/vi-CQiVy3Pu.js +1 -0
- package/client/dist/assets/yo-DqazMdrZ.js +1 -0
- package/client/dist/assets/zh-CN-DnYL_Kio.js +1 -0
- package/client/dist/assets/zh-TW-5bdbosKj.js +1 -0
- package/client/dist/favicon.svg +14 -0
- package/client/dist/icons.svg +24 -0
- package/client/dist/index.html +37 -0
- package/dist/app.d.ts +4 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +372 -0
- package/dist/app.js.map +1 -0
- package/dist/db/index.d.ts +49 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +203 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/migrate/TEMPLATE.d.ts +4 -0
- package/dist/db/migrate/TEMPLATE.d.ts.map +1 -0
- package/dist/db/migrate/TEMPLATE.js +18 -0
- package/dist/db/migrate/TEMPLATE.js.map +1 -0
- package/dist/db/migrate/cli.d.ts +2 -0
- package/dist/db/migrate/cli.d.ts.map +1 -0
- package/dist/db/migrate/cli.js +177 -0
- package/dist/db/migrate/cli.js.map +1 -0
- package/dist/db/migrate/defaults.d.ts +52 -0
- package/dist/db/migrate/defaults.d.ts.map +1 -0
- package/dist/db/migrate/defaults.js +126 -0
- package/dist/db/migrate/defaults.js.map +1 -0
- package/dist/db/migrate/runner.d.ts +16 -0
- package/dist/db/migrate/runner.d.ts.map +1 -0
- package/dist/db/migrate/runner.js +178 -0
- package/dist/db/migrate/runner.js.map +1 -0
- package/dist/db/migrations/20260101_000000_legacy_baseline.d.ts +4 -0
- package/dist/db/migrations/20260101_000000_legacy_baseline.d.ts.map +1 -0
- package/dist/db/migrations/20260101_000000_legacy_baseline.js +2240 -0
- package/dist/db/migrations/20260101_000000_legacy_baseline.js.map +1 -0
- package/dist/db/migrations/20260627_000001_custom_provider_modalities.d.ts +4 -0
- package/dist/db/migrations/20260627_000001_custom_provider_modalities.d.ts.map +1 -0
- package/dist/db/migrations/20260627_000001_custom_provider_modalities.js +27 -0
- package/dist/db/migrations/20260627_000001_custom_provider_modalities.js.map +1 -0
- package/dist/db/migrations/20260627_000002_catalog_model_state.d.ts +4 -0
- package/dist/db/migrations/20260627_000002_catalog_model_state.d.ts.map +1 -0
- package/dist/db/migrations/20260627_000002_catalog_model_state.js +30 -0
- package/dist/db/migrations/20260627_000002_catalog_model_state.js.map +1 -0
- package/dist/db/migrations/20260628_120000_request_aggregates.d.ts +6 -0
- package/dist/db/migrations/20260628_120000_request_aggregates.d.ts.map +1 -0
- package/dist/db/migrations/20260628_120000_request_aggregates.js +104 -0
- package/dist/db/migrations/20260628_120000_request_aggregates.js.map +1 -0
- package/dist/db/migrations/20260630_000001_github_gpt41_context.d.ts +9 -0
- package/dist/db/migrations/20260630_000001_github_gpt41_context.d.ts.map +1 -0
- package/dist/db/migrations/20260630_000001_github_gpt41_context.js +22 -0
- package/dist/db/migrations/20260630_000001_github_gpt41_context.js.map +1 -0
- package/dist/db/migrations/20260706_000001_request_client_info.d.ts +4 -0
- package/dist/db/migrations/20260706_000001_request_client_info.d.ts.map +1 -0
- package/dist/db/migrations/20260706_000001_request_client_info.js +30 -0
- package/dist/db/migrations/20260706_000001_request_client_info.js.map +1 -0
- package/dist/db/migrations/20260706_000002_custom_model_tool_support.d.ts +17 -0
- package/dist/db/migrations/20260706_000002_custom_model_tool_support.d.ts.map +1 -0
- package/dist/db/migrations/20260706_000002_custom_model_tool_support.js +20 -0
- package/dist/db/migrations/20260706_000002_custom_model_tool_support.js.map +1 -0
- package/dist/db/migrations/20260714_000001_profile_chain_backfill.d.ts +12 -0
- package/dist/db/migrations/20260714_000001_profile_chain_backfill.d.ts.map +1 -0
- package/dist/db/migrations/20260714_000001_profile_chain_backfill.js +45 -0
- package/dist/db/migrations/20260714_000001_profile_chain_backfill.js.map +1 -0
- package/dist/db/migrations/20260720_000001_key_health_error.d.ts +5 -0
- package/dist/db/migrations/20260720_000001_key_health_error.d.ts.map +1 -0
- package/dist/db/migrations/20260720_000001_key_health_error.js +16 -0
- package/dist/db/migrations/20260720_000001_key_health_error.js.map +1 -0
- package/dist/db/migrations/20260726_000001_cooldown_probe_provenance.d.ts +4 -0
- package/dist/db/migrations/20260726_000001_cooldown_probe_provenance.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000001_cooldown_probe_provenance.js +38 -0
- package/dist/db/migrations/20260726_000001_cooldown_probe_provenance.js.map +1 -0
- package/dist/db/migrations/20260726_000002_request_attempts.d.ts +4 -0
- package/dist/db/migrations/20260726_000002_request_attempts.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000002_request_attempts.js +43 -0
- package/dist/db/migrations/20260726_000002_request_attempts.js.map +1 -0
- package/dist/db/migrations/20260726_000003_model_source_provenance.d.ts +4 -0
- package/dist/db/migrations/20260726_000003_model_source_provenance.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000003_model_source_provenance.js +80 -0
- package/dist/db/migrations/20260726_000003_model_source_provenance.js.map +1 -0
- package/dist/db/migrations/20260726_000004_media_model_meta.d.ts +4 -0
- package/dist/db/migrations/20260726_000004_media_model_meta.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000004_media_model_meta.js +34 -0
- package/dist/db/migrations/20260726_000004_media_model_meta.js.map +1 -0
- package/dist/db/migrations/20260726_000005_request_served_model.d.ts +4 -0
- package/dist/db/migrations/20260726_000005_request_served_model.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000005_request_served_model.js +31 -0
- package/dist/db/migrations/20260726_000005_request_served_model.js.map +1 -0
- package/dist/db/migrations/20260726_000006_attempt_error_summary.d.ts +4 -0
- package/dist/db/migrations/20260726_000006_attempt_error_summary.d.ts.map +1 -0
- package/dist/db/migrations/20260726_000006_attempt_error_summary.js +29 -0
- package/dist/db/migrations/20260726_000006_attempt_error_summary.js.map +1 -0
- package/dist/db/migrations/20260727_000001_agent_compatibility.d.ts +4 -0
- package/dist/db/migrations/20260727_000001_agent_compatibility.d.ts.map +1 -0
- package/dist/db/migrations/20260727_000001_agent_compatibility.js +41 -0
- package/dist/db/migrations/20260727_000001_agent_compatibility.js.map +1 -0
- package/dist/db/migrations/20260728_000001_tombstone_provenance.d.ts +12 -0
- package/dist/db/migrations/20260728_000001_tombstone_provenance.d.ts.map +1 -0
- package/dist/db/migrations/20260728_000001_tombstone_provenance.js +37 -0
- package/dist/db/migrations/20260728_000001_tombstone_provenance.js.map +1 -0
- package/dist/db/migrations/20260729_000001_custom_model_endpoint_identity.d.ts +4 -0
- package/dist/db/migrations/20260729_000001_custom_model_endpoint_identity.d.ts.map +1 -0
- package/dist/db/migrations/20260729_000001_custom_model_endpoint_identity.js +145 -0
- package/dist/db/migrations/20260729_000001_custom_model_endpoint_identity.js.map +1 -0
- package/dist/db/migrations/20260802_000001_custom_endpoint_host_labels.d.ts +6 -0
- package/dist/db/migrations/20260802_000001_custom_endpoint_host_labels.d.ts.map +1 -0
- package/dist/db/migrations/20260802_000001_custom_endpoint_host_labels.js +52 -0
- package/dist/db/migrations/20260802_000001_custom_endpoint_host_labels.js.map +1 -0
- package/dist/db/migrations/20260805_000001_key_model_scope.d.ts +6 -0
- package/dist/db/migrations/20260805_000001_key_model_scope.d.ts.map +1 -0
- package/dist/db/migrations/20260805_000001_key_model_scope.js +17 -0
- package/dist/db/migrations/20260805_000001_key_model_scope.js.map +1 -0
- package/dist/db/migrations/20260805_000002_client_profiles.d.ts +4 -0
- package/dist/db/migrations/20260805_000002_client_profiles.d.ts.map +1 -0
- package/dist/db/migrations/20260805_000002_client_profiles.js +33 -0
- package/dist/db/migrations/20260805_000002_client_profiles.js.map +1 -0
- package/dist/db/migrations/20260810_000001_api_key_proxy.d.ts +4 -0
- package/dist/db/migrations/20260810_000001_api_key_proxy.d.ts.map +1 -0
- package/dist/db/migrations/20260810_000001_api_key_proxy.js +33 -0
- package/dist/db/migrations/20260810_000001_api_key_proxy.js.map +1 -0
- package/dist/db/migrations/20260819_000001_custom_model_tombstones.d.ts +4 -0
- package/dist/db/migrations/20260819_000001_custom_model_tombstones.d.ts.map +1 -0
- package/dist/db/migrations/20260819_000001_custom_model_tombstones.js +19 -0
- package/dist/db/migrations/20260819_000001_custom_model_tombstones.js.map +1 -0
- package/dist/db/migrations/20260820_000001_playground_conversations.d.ts +4 -0
- package/dist/db/migrations/20260820_000001_playground_conversations.d.ts.map +1 -0
- package/dist/db/migrations/20260820_000001_playground_conversations.js +47 -0
- package/dist/db/migrations/20260820_000001_playground_conversations.js.map +1 -0
- package/dist/db/migrations/20260823_000001_server_logs.d.ts +4 -0
- package/dist/db/migrations/20260823_000001_server_logs.d.ts.map +1 -0
- package/dist/db/migrations/20260823_000001_server_logs.js +53 -0
- package/dist/db/migrations/20260823_000001_server_logs.js.map +1 -0
- package/dist/db/migrations/20260823_000002_backups_table.d.ts +8 -0
- package/dist/db/migrations/20260823_000002_backups_table.d.ts.map +1 -0
- package/dist/db/migrations/20260823_000002_backups_table.js +22 -0
- package/dist/db/migrations/20260823_000002_backups_table.js.map +1 -0
- package/dist/db/migrations/20260823_000003_attempt_key_label.d.ts +19 -0
- package/dist/db/migrations/20260823_000003_attempt_key_label.d.ts.map +1 -0
- package/dist/db/migrations/20260823_000003_attempt_key_label.js +28 -0
- package/dist/db/migrations/20260823_000003_attempt_key_label.js.map +1 -0
- package/dist/db/migrations/20260823_000004_profile_auto_include.d.ts +14 -0
- package/dist/db/migrations/20260823_000004_profile_auto_include.d.ts.map +1 -0
- package/dist/db/migrations/20260823_000004_profile_auto_include.js +25 -0
- package/dist/db/migrations/20260823_000004_profile_auto_include.js.map +1 -0
- package/dist/db/migrations/20260901_000001_idempotency_claims.d.ts +4 -0
- package/dist/db/migrations/20260901_000001_idempotency_claims.d.ts.map +1 -0
- package/dist/db/migrations/20260901_000001_idempotency_claims.js +46 -0
- package/dist/db/migrations/20260901_000001_idempotency_claims.js.map +1 -0
- package/dist/db/migrations/20260901_000002_quota_observation_lookup.d.ts +4 -0
- package/dist/db/migrations/20260901_000002_quota_observation_lookup.d.ts.map +1 -0
- package/dist/db/migrations/20260901_000002_quota_observation_lookup.js +37 -0
- package/dist/db/migrations/20260901_000002_quota_observation_lookup.js.map +1 -0
- package/dist/db/migrations/20260901_000003_request_caller.d.ts +4 -0
- package/dist/db/migrations/20260901_000003_request_caller.d.ts.map +1 -0
- package/dist/db/migrations/20260901_000003_request_caller.js +27 -0
- package/dist/db/migrations/20260901_000003_request_caller.js.map +1 -0
- package/dist/db/migrations/20260902_000001_analytics_latency_percentile_index.d.ts +4 -0
- package/dist/db/migrations/20260902_000001_analytics_latency_percentile_index.d.ts.map +1 -0
- package/dist/db/migrations/20260902_000001_analytics_latency_percentile_index.js +35 -0
- package/dist/db/migrations/20260902_000001_analytics_latency_percentile_index.js.map +1 -0
- package/dist/db/migrations/20260903_000001_mcp_enabled_default.d.ts +4 -0
- package/dist/db/migrations/20260903_000001_mcp_enabled_default.d.ts.map +1 -0
- package/dist/db/migrations/20260903_000001_mcp_enabled_default.js +37 -0
- package/dist/db/migrations/20260903_000001_mcp_enabled_default.js.map +1 -0
- package/dist/db/migrations/20260903_000002_response_cache.d.ts +4 -0
- package/dist/db/migrations/20260903_000002_response_cache.d.ts.map +1 -0
- package/dist/db/migrations/20260903_000002_response_cache.js +53 -0
- package/dist/db/migrations/20260903_000002_response_cache.js.map +1 -0
- package/dist/db/migrations/20260904_000001_key_monthly_budget.d.ts +13 -0
- package/dist/db/migrations/20260904_000001_key_monthly_budget.d.ts.map +1 -0
- package/dist/db/migrations/20260904_000001_key_monthly_budget.js +35 -0
- package/dist/db/migrations/20260904_000001_key_monthly_budget.js.map +1 -0
- package/dist/db/migrations/20260913_000001_request_model_attribution.d.ts +4 -0
- package/dist/db/migrations/20260913_000001_request_model_attribution.d.ts.map +1 -0
- package/dist/db/migrations/20260913_000001_request_model_attribution.js +68 -0
- package/dist/db/migrations/20260913_000001_request_model_attribution.js.map +1 -0
- package/dist/db/migrations/20260914_000001_key_monthly_usage.d.ts +5 -0
- package/dist/db/migrations/20260914_000001_key_monthly_usage.d.ts.map +1 -0
- package/dist/db/migrations/20260914_000001_key_monthly_usage.js +37 -0
- package/dist/db/migrations/20260914_000001_key_monthly_usage.js.map +1 -0
- package/dist/db/migrations/20260915_000001_quota_snapshot_freshness.d.ts +4 -0
- package/dist/db/migrations/20260915_000001_quota_snapshot_freshness.d.ts.map +1 -0
- package/dist/db/migrations/20260915_000001_quota_snapshot_freshness.js +28 -0
- package/dist/db/migrations/20260915_000001_quota_snapshot_freshness.js.map +1 -0
- package/dist/db/migrations/20261004_000001_unified_key_sr_prefix.d.ts +4 -0
- package/dist/db/migrations/20261004_000001_unified_key_sr_prefix.d.ts.map +1 -0
- package/dist/db/migrations/20261004_000001_unified_key_sr_prefix.js +25 -0
- package/dist/db/migrations/20261004_000001_unified_key_sr_prefix.js.map +1 -0
- package/dist/db/migrations/20261005_000001_key_budget_period.d.ts +10 -0
- package/dist/db/migrations/20261005_000001_key_budget_period.d.ts.map +1 -0
- package/dist/db/migrations/20261005_000001_key_budget_period.js +78 -0
- package/dist/db/migrations/20261005_000001_key_budget_period.js.map +1 -0
- package/dist/db/migrations/20261005_000002_key_budget_period_auto.d.ts +21 -0
- package/dist/db/migrations/20261005_000002_key_budget_period_auto.d.ts.map +1 -0
- package/dist/db/migrations/20261005_000002_key_budget_period_auto.js +41 -0
- package/dist/db/migrations/20261005_000002_key_budget_period_auto.js.map +1 -0
- package/dist/db/model-pricing.d.ts +39 -0
- package/dist/db/model-pricing.d.ts.map +1 -0
- package/dist/db/model-pricing.js +274 -0
- package/dist/db/model-pricing.js.map +1 -0
- package/dist/db/node-sqlite.d.ts +9 -0
- package/dist/db/node-sqlite.d.ts.map +1 -0
- package/dist/db/node-sqlite.js +87 -0
- package/dist/db/node-sqlite.js.map +1 -0
- package/dist/db/types.d.ts +22 -0
- package/dist/db/types.d.ts.map +1 -0
- package/dist/db/types.js +2 -0
- package/dist/db/types.js.map +1 -0
- package/dist/docs/docs-page.d.ts +2 -0
- package/dist/docs/docs-page.d.ts.map +1 -0
- package/dist/docs/docs-page.js +319 -0
- package/dist/docs/docs-page.js.map +1 -0
- package/dist/docs/openapi.d.ts +1896 -0
- package/dist/docs/openapi.d.ts.map +1 -0
- package/dist/docs/openapi.js +1096 -0
- package/dist/docs/openapi.js.map +1 -0
- package/dist/env.d.ts +2 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +9 -0
- package/dist/env.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +144 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/anthropic-documents.d.ts +41 -0
- package/dist/lib/anthropic-documents.d.ts.map +1 -0
- package/dist/lib/anthropic-documents.js +132 -0
- package/dist/lib/anthropic-documents.js.map +1 -0
- package/dist/lib/app-version.d.ts +5 -0
- package/dist/lib/app-version.d.ts.map +1 -0
- package/dist/lib/app-version.js +61 -0
- package/dist/lib/app-version.js.map +1 -0
- package/dist/lib/attempt-trace.d.ts +23 -0
- package/dist/lib/attempt-trace.d.ts.map +1 -0
- package/dist/lib/attempt-trace.js +32 -0
- package/dist/lib/attempt-trace.js.map +1 -0
- package/dist/lib/budget.d.ts +6 -0
- package/dist/lib/budget.d.ts.map +1 -0
- package/dist/lib/budget.js +40 -0
- package/dist/lib/budget.js.map +1 -0
- package/dist/lib/client-classifier.d.ts +10 -0
- package/dist/lib/client-classifier.d.ts.map +1 -0
- package/dist/lib/client-classifier.js +126 -0
- package/dist/lib/client-classifier.js.map +1 -0
- package/dist/lib/client-context.d.ts +10 -0
- package/dist/lib/client-context.d.ts.map +1 -0
- package/dist/lib/client-context.js +39 -0
- package/dist/lib/client-context.js.map +1 -0
- package/dist/lib/config.d.ts +33 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +94 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/content.d.ts +33 -0
- package/dist/lib/content.d.ts.map +1 -0
- package/dist/lib/content.js +201 -0
- package/dist/lib/content.js.map +1 -0
- package/dist/lib/credential.d.ts +11 -0
- package/dist/lib/credential.d.ts.map +1 -0
- package/dist/lib/credential.js +18 -0
- package/dist/lib/credential.js.map +1 -0
- package/dist/lib/crypto.d.ts +31 -0
- package/dist/lib/crypto.d.ts.map +1 -0
- package/dist/lib/crypto.js +206 -0
- package/dist/lib/crypto.js.map +1 -0
- package/dist/lib/custom-provider-cleanup.d.ts +13 -0
- package/dist/lib/custom-provider-cleanup.d.ts.map +1 -0
- package/dist/lib/custom-provider-cleanup.js +43 -0
- package/dist/lib/custom-provider-cleanup.js.map +1 -0
- package/dist/lib/db-backup.d.ts +31 -0
- package/dist/lib/db-backup.d.ts.map +1 -0
- package/dist/lib/db-backup.js +255 -0
- package/dist/lib/db-backup.js.map +1 -0
- package/dist/lib/endpoint-scope.d.ts +42 -0
- package/dist/lib/endpoint-scope.d.ts.map +1 -0
- package/dist/lib/endpoint-scope.js +95 -0
- package/dist/lib/endpoint-scope.js.map +1 -0
- package/dist/lib/env-drift.d.ts +17 -0
- package/dist/lib/env-drift.d.ts.map +1 -0
- package/dist/lib/env-drift.js +108 -0
- package/dist/lib/env-drift.js.map +1 -0
- package/dist/lib/error-classify.d.ts +40 -0
- package/dist/lib/error-classify.d.ts.map +1 -0
- package/dist/lib/error-classify.js +687 -0
- package/dist/lib/error-classify.js.map +1 -0
- package/dist/lib/error-redaction.d.ts +8 -0
- package/dist/lib/error-redaction.d.ts.map +1 -0
- package/dist/lib/error-redaction.js +45 -0
- package/dist/lib/error-redaction.js.map +1 -0
- package/dist/lib/fallback-loop.d.ts +306 -0
- package/dist/lib/fallback-loop.d.ts.map +1 -0
- package/dist/lib/fallback-loop.js +1336 -0
- package/dist/lib/fallback-loop.js.map +1 -0
- package/dist/lib/file-permissions.d.ts +98 -0
- package/dist/lib/file-permissions.d.ts.map +1 -0
- package/dist/lib/file-permissions.js +159 -0
- package/dist/lib/file-permissions.js.map +1 -0
- package/dist/lib/gemini-wire.d.ts +76 -0
- package/dist/lib/gemini-wire.d.ts.map +1 -0
- package/dist/lib/gemini-wire.js +392 -0
- package/dist/lib/gemini-wire.js.map +1 -0
- package/dist/lib/guardrails.d.ts +37 -0
- package/dist/lib/guardrails.d.ts.map +1 -0
- package/dist/lib/guardrails.js +106 -0
- package/dist/lib/guardrails.js.map +1 -0
- package/dist/lib/header-value.d.ts +8 -0
- package/dist/lib/header-value.d.ts.map +1 -0
- package/dist/lib/header-value.js +55 -0
- package/dist/lib/header-value.js.map +1 -0
- package/dist/lib/image-normalize.d.ts +21 -0
- package/dist/lib/image-normalize.d.ts.map +1 -0
- package/dist/lib/image-normalize.js +218 -0
- package/dist/lib/image-normalize.js.map +1 -0
- package/dist/lib/inbound-chat.d.ts +48 -0
- package/dist/lib/inbound-chat.d.ts.map +1 -0
- package/dist/lib/inbound-chat.js +406 -0
- package/dist/lib/inbound-chat.js.map +1 -0
- package/dist/lib/key-parser.d.ts +79 -0
- package/dist/lib/key-parser.d.ts.map +1 -0
- package/dist/lib/key-parser.js +701 -0
- package/dist/lib/key-parser.js.map +1 -0
- package/dist/lib/key-proxy.d.ts +49 -0
- package/dist/lib/key-proxy.d.ts.map +1 -0
- package/dist/lib/key-proxy.js +92 -0
- package/dist/lib/key-proxy.js.map +1 -0
- package/dist/lib/log-redaction.d.ts +28 -0
- package/dist/lib/log-redaction.d.ts.map +1 -0
- package/dist/lib/log-redaction.js +166 -0
- package/dist/lib/log-redaction.js.map +1 -0
- package/dist/lib/model-scope.d.ts +9 -0
- package/dist/lib/model-scope.d.ts.map +1 -0
- package/dist/lib/model-scope.js +29 -0
- package/dist/lib/model-scope.js.map +1 -0
- package/dist/lib/one-time-code.d.ts +15 -0
- package/dist/lib/one-time-code.d.ts.map +1 -0
- package/dist/lib/one-time-code.js +41 -0
- package/dist/lib/one-time-code.js.map +1 -0
- package/dist/lib/output-cap.d.ts +24 -0
- package/dist/lib/output-cap.d.ts.map +1 -0
- package/dist/lib/output-cap.js +80 -0
- package/dist/lib/output-cap.js.map +1 -0
- package/dist/lib/password.d.ts +3 -0
- package/dist/lib/password.d.ts.map +1 -0
- package/dist/lib/password.js +27 -0
- package/dist/lib/password.js.map +1 -0
- package/dist/lib/process-safety-net.d.ts +32 -0
- package/dist/lib/process-safety-net.d.ts.map +1 -0
- package/dist/lib/process-safety-net.js +123 -0
- package/dist/lib/process-safety-net.js.map +1 -0
- package/dist/lib/provider-identity.d.ts +37 -0
- package/dist/lib/provider-identity.d.ts.map +1 -0
- package/dist/lib/provider-identity.js +110 -0
- package/dist/lib/provider-identity.js.map +1 -0
- package/dist/lib/provider-size-parser.d.ts +6 -0
- package/dist/lib/provider-size-parser.d.ts.map +1 -0
- package/dist/lib/provider-size-parser.js +72 -0
- package/dist/lib/provider-size-parser.js.map +1 -0
- package/dist/lib/provider-timeout.d.ts +17 -0
- package/dist/lib/provider-timeout.d.ts.map +1 -0
- package/dist/lib/provider-timeout.js +70 -0
- package/dist/lib/provider-timeout.js.map +1 -0
- package/dist/lib/proxy.d.ts +180 -0
- package/dist/lib/proxy.d.ts.map +1 -0
- package/dist/lib/proxy.js +1002 -0
- package/dist/lib/proxy.js.map +1 -0
- package/dist/lib/request-log.d.ts +4 -0
- package/dist/lib/request-log.d.ts.map +1 -0
- package/dist/lib/request-log.js +161 -0
- package/dist/lib/request-log.js.map +1 -0
- package/dist/lib/reset-code.d.ts +5 -0
- package/dist/lib/reset-code.d.ts.map +1 -0
- package/dist/lib/reset-code.js +39 -0
- package/dist/lib/reset-code.js.map +1 -0
- package/dist/lib/retry-hint.d.ts +14 -0
- package/dist/lib/retry-hint.d.ts.map +1 -0
- package/dist/lib/retry-hint.js +36 -0
- package/dist/lib/retry-hint.js.map +1 -0
- package/dist/lib/route-live.d.ts +29 -0
- package/dist/lib/route-live.d.ts.map +1 -0
- package/dist/lib/route-live.js +97 -0
- package/dist/lib/route-live.js.map +1 -0
- package/dist/lib/sampling-params.d.ts +183 -0
- package/dist/lib/sampling-params.d.ts.map +1 -0
- package/dist/lib/sampling-params.js +386 -0
- package/dist/lib/sampling-params.js.map +1 -0
- package/dist/lib/scheduler.d.ts +13 -0
- package/dist/lib/scheduler.d.ts.map +1 -0
- package/dist/lib/scheduler.js +11 -0
- package/dist/lib/scheduler.js.map +1 -0
- package/dist/lib/served-model.d.ts +16 -0
- package/dist/lib/served-model.d.ts.map +1 -0
- package/dist/lib/served-model.js +0 -0
- package/dist/lib/served-model.js.map +1 -0
- package/dist/lib/server-logs.d.ts +132 -0
- package/dist/lib/server-logs.d.ts.map +1 -0
- package/dist/lib/server-logs.js +473 -0
- package/dist/lib/server-logs.js.map +1 -0
- package/dist/lib/setup-code.d.ts +5 -0
- package/dist/lib/setup-code.d.ts.map +1 -0
- package/dist/lib/setup-code.js +35 -0
- package/dist/lib/setup-code.js.map +1 -0
- package/dist/lib/structured-output.d.ts +9 -0
- package/dist/lib/structured-output.d.ts.map +1 -0
- package/dist/lib/structured-output.js +72 -0
- package/dist/lib/structured-output.js.map +1 -0
- package/dist/lib/system-prompt.d.ts +30 -0
- package/dist/lib/system-prompt.d.ts.map +1 -0
- package/dist/lib/system-prompt.js +66 -0
- package/dist/lib/system-prompt.js.map +1 -0
- package/dist/lib/task-type.d.ts +18 -0
- package/dist/lib/task-type.d.ts.map +1 -0
- package/dist/lib/task-type.js +92 -0
- package/dist/lib/task-type.js.map +1 -0
- package/dist/lib/think-tags.d.ts +37 -0
- package/dist/lib/think-tags.d.ts.map +1 -0
- package/dist/lib/think-tags.js +203 -0
- package/dist/lib/think-tags.js.map +1 -0
- package/dist/lib/tool-args.d.ts +36 -0
- package/dist/lib/tool-args.d.ts.map +1 -0
- package/dist/lib/tool-args.js +190 -0
- package/dist/lib/tool-args.js.map +1 -0
- package/dist/lib/tool-call-rescue.d.ts +62 -0
- package/dist/lib/tool-call-rescue.d.ts.map +1 -0
- package/dist/lib/tool-call-rescue.js +258 -0
- package/dist/lib/tool-call-rescue.js.map +1 -0
- package/dist/lib/tool-capability.d.ts +13 -0
- package/dist/lib/tool-capability.d.ts.map +1 -0
- package/dist/lib/tool-capability.js +70 -0
- package/dist/lib/tool-capability.js.map +1 -0
- package/dist/lib/tool-validate.d.ts +44 -0
- package/dist/lib/tool-validate.d.ts.map +1 -0
- package/dist/lib/tool-validate.js +165 -0
- package/dist/lib/tool-validate.js.map +1 -0
- package/dist/lib/ttfb-budget.d.ts +13 -0
- package/dist/lib/ttfb-budget.d.ts.map +1 -0
- package/dist/lib/ttfb-budget.js +153 -0
- package/dist/lib/ttfb-budget.js.map +1 -0
- package/dist/lib/url-guard.d.ts +47 -0
- package/dist/lib/url-guard.d.ts.map +1 -0
- package/dist/lib/url-guard.js +229 -0
- package/dist/lib/url-guard.js.map +1 -0
- package/dist/lib/wake-detect.d.ts +12 -0
- package/dist/lib/wake-detect.d.ts.map +1 -0
- package/dist/lib/wake-detect.js +99 -0
- package/dist/lib/wake-detect.js.map +1 -0
- package/dist/middleware/errorHandler.d.ts +3 -0
- package/dist/middleware/errorHandler.d.ts.map +1 -0
- package/dist/middleware/errorHandler.js +45 -0
- package/dist/middleware/errorHandler.js.map +1 -0
- package/dist/middleware/rateLimit.d.ts +4 -0
- package/dist/middleware/rateLimit.d.ts.map +1 -0
- package/dist/middleware/rateLimit.js +125 -0
- package/dist/middleware/rateLimit.js.map +1 -0
- package/dist/middleware/requireAuth.d.ts +3 -0
- package/dist/middleware/requireAuth.d.ts.map +1 -0
- package/dist/middleware/requireAuth.js +17 -0
- package/dist/middleware/requireAuth.js.map +1 -0
- package/dist/providers/aclide.d.ts +18 -0
- package/dist/providers/aclide.d.ts.map +1 -0
- package/dist/providers/aclide.js +174 -0
- package/dist/providers/aclide.js.map +1 -0
- package/dist/providers/aihorde.d.ts +42 -0
- package/dist/providers/aihorde.d.ts.map +1 -0
- package/dist/providers/aihorde.js +192 -0
- package/dist/providers/aihorde.js.map +1 -0
- package/dist/providers/airforce.d.ts +11 -0
- package/dist/providers/airforce.d.ts.map +1 -0
- package/dist/providers/airforce.js +32 -0
- package/dist/providers/airforce.js.map +1 -0
- package/dist/providers/base.d.ts +177 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +354 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/blaze.d.ts +11 -0
- package/dist/providers/blaze.d.ts.map +1 -0
- package/dist/providers/blaze.js +33 -0
- package/dist/providers/blaze.js.map +1 -0
- package/dist/providers/blockrun.d.ts +14 -0
- package/dist/providers/blockrun.d.ts.map +1 -0
- package/dist/providers/blockrun.js +36 -0
- package/dist/providers/blockrun.js.map +1 -0
- package/dist/providers/clod.d.ts +11 -0
- package/dist/providers/clod.d.ts.map +1 -0
- package/dist/providers/clod.js +39 -0
- package/dist/providers/clod.js.map +1 -0
- package/dist/providers/cloudflare.d.ts +15 -0
- package/dist/providers/cloudflare.d.ts.map +1 -0
- package/dist/providers/cloudflare.js +175 -0
- package/dist/providers/cloudflare.js.map +1 -0
- package/dist/providers/cohere.d.ts +11 -0
- package/dist/providers/cohere.d.ts.map +1 -0
- package/dist/providers/cohere.js +117 -0
- package/dist/providers/cohere.js.map +1 -0
- package/dist/providers/dreamprompting.d.ts +11 -0
- package/dist/providers/dreamprompting.d.ts.map +1 -0
- package/dist/providers/dreamprompting.js +41 -0
- package/dist/providers/dreamprompting.js.map +1 -0
- package/dist/providers/electronhub.d.ts +10 -0
- package/dist/providers/electronhub.d.ts.map +1 -0
- package/dist/providers/electronhub.js +56 -0
- package/dist/providers/electronhub.js.map +1 -0
- package/dist/providers/experiential.d.ts +10 -0
- package/dist/providers/experiential.d.ts.map +1 -0
- package/dist/providers/experiential.js +33 -0
- package/dist/providers/experiential.js.map +1 -0
- package/dist/providers/gizmo.d.ts +15 -0
- package/dist/providers/gizmo.d.ts.map +1 -0
- package/dist/providers/gizmo.js +54 -0
- package/dist/providers/gizmo.js.map +1 -0
- package/dist/providers/google.d.ts +30 -0
- package/dist/providers/google.d.ts.map +1 -0
- package/dist/providers/google.js +766 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/index.d.ts +13 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +561 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/llmtr.d.ts +15 -0
- package/dist/providers/llmtr.d.ts.map +1 -0
- package/dist/providers/llmtr.js +51 -0
- package/dist/providers/llmtr.js.map +1 -0
- package/dist/providers/logfare.d.ts +11 -0
- package/dist/providers/logfare.d.ts.map +1 -0
- package/dist/providers/logfare.js +33 -0
- package/dist/providers/logfare.js.map +1 -0
- package/dist/providers/lucidity.d.ts +11 -0
- package/dist/providers/lucidity.d.ts.map +1 -0
- package/dist/providers/lucidity.js +37 -0
- package/dist/providers/lucidity.js.map +1 -0
- package/dist/providers/modelscope.d.ts +50 -0
- package/dist/providers/modelscope.d.ts.map +1 -0
- package/dist/providers/modelscope.js +143 -0
- package/dist/providers/modelscope.js.map +1 -0
- package/dist/providers/moondream.d.ts +17 -0
- package/dist/providers/moondream.d.ts.map +1 -0
- package/dist/providers/moondream.js +140 -0
- package/dist/providers/moondream.js.map +1 -0
- package/dist/providers/openai-compat.d.ts +140 -0
- package/dist/providers/openai-compat.d.ts.map +1 -0
- package/dist/providers/openai-compat.js +537 -0
- package/dist/providers/openai-compat.js.map +1 -0
- package/dist/providers/opencode-free.d.ts +24 -0
- package/dist/providers/opencode-free.d.ts.map +1 -0
- package/dist/providers/opencode-free.js +262 -0
- package/dist/providers/opencode-free.js.map +1 -0
- package/dist/providers/pollinations.d.ts +32 -0
- package/dist/providers/pollinations.d.ts.map +1 -0
- package/dist/providers/pollinations.js +65 -0
- package/dist/providers/pollinations.js.map +1 -0
- package/dist/providers/router9.d.ts +16 -0
- package/dist/providers/router9.d.ts.map +1 -0
- package/dist/providers/router9.js +42 -0
- package/dist/providers/router9.js.map +1 -0
- package/dist/providers/sail.d.ts +44 -0
- package/dist/providers/sail.d.ts.map +1 -0
- package/dist/providers/sail.js +302 -0
- package/dist/providers/sail.js.map +1 -0
- package/dist/providers/septor.d.ts +10 -0
- package/dist/providers/septor.d.ts.map +1 -0
- package/dist/providers/septor.js +36 -0
- package/dist/providers/septor.js.map +1 -0
- package/dist/providers/speechify.d.ts +14 -0
- package/dist/providers/speechify.d.ts.map +1 -0
- package/dist/providers/speechify.js +28 -0
- package/dist/providers/speechify.js.map +1 -0
- package/dist/providers/speka.d.ts +12 -0
- package/dist/providers/speka.d.ts.map +1 -0
- package/dist/providers/speka.js +37 -0
- package/dist/providers/speka.js.map +1 -0
- package/dist/providers/waterfall.d.ts +11 -0
- package/dist/providers/waterfall.d.ts.map +1 -0
- package/dist/providers/waterfall.js +33 -0
- package/dist/providers/waterfall.js.map +1 -0
- package/dist/providers/xkiro.d.ts +71 -0
- package/dist/providers/xkiro.d.ts.map +1 -0
- package/dist/providers/xkiro.js +119 -0
- package/dist/providers/xkiro.js.map +1 -0
- package/dist/providers/zhipu.d.ts +43 -0
- package/dist/providers/zhipu.d.ts.map +1 -0
- package/dist/providers/zhipu.js +95 -0
- package/dist/providers/zhipu.js.map +1 -0
- package/dist/routes/analytics.d.ts +2 -0
- package/dist/routes/analytics.d.ts.map +1 -0
- package/dist/routes/analytics.js +738 -0
- package/dist/routes/analytics.js.map +1 -0
- package/dist/routes/anthropic.d.ts +7 -0
- package/dist/routes/anthropic.d.ts.map +1 -0
- package/dist/routes/anthropic.js +1076 -0
- package/dist/routes/anthropic.js.map +1 -0
- package/dist/routes/auth.d.ts +2 -0
- package/dist/routes/auth.d.ts.map +1 -0
- package/dist/routes/auth.js +310 -0
- package/dist/routes/auth.js.map +1 -0
- package/dist/routes/backups.d.ts +2 -0
- package/dist/routes/backups.d.ts.map +1 -0
- package/dist/routes/backups.js +127 -0
- package/dist/routes/backups.js.map +1 -0
- package/dist/routes/cache.d.ts +2 -0
- package/dist/routes/cache.d.ts.map +1 -0
- package/dist/routes/cache.js +40 -0
- package/dist/routes/cache.js.map +1 -0
- package/dist/routes/client-profiles.d.ts +2 -0
- package/dist/routes/client-profiles.d.ts.map +1 -0
- package/dist/routes/client-profiles.js +128 -0
- package/dist/routes/client-profiles.js.map +1 -0
- package/dist/routes/compression.d.ts +2 -0
- package/dist/routes/compression.d.ts.map +1 -0
- package/dist/routes/compression.js +82 -0
- package/dist/routes/compression.js.map +1 -0
- package/dist/routes/conversations.d.ts +3 -0
- package/dist/routes/conversations.d.ts.map +1 -0
- package/dist/routes/conversations.js +215 -0
- package/dist/routes/conversations.js.map +1 -0
- package/dist/routes/docs.d.ts +2 -0
- package/dist/routes/docs.d.ts.map +1 -0
- package/dist/routes/docs.js +21 -0
- package/dist/routes/docs.js.map +1 -0
- package/dist/routes/embeddings.d.ts +2 -0
- package/dist/routes/embeddings.d.ts.map +1 -0
- package/dist/routes/embeddings.js +255 -0
- package/dist/routes/embeddings.js.map +1 -0
- package/dist/routes/fallback.d.ts +2 -0
- package/dist/routes/fallback.d.ts.map +1 -0
- package/dist/routes/fallback.js +631 -0
- package/dist/routes/fallback.js.map +1 -0
- package/dist/routes/free-tier.d.ts +22 -0
- package/dist/routes/free-tier.d.ts.map +1 -0
- package/dist/routes/free-tier.js +175 -0
- package/dist/routes/free-tier.js.map +1 -0
- package/dist/routes/gemini.d.ts +2 -0
- package/dist/routes/gemini.d.ts.map +1 -0
- package/dist/routes/gemini.js +218 -0
- package/dist/routes/gemini.js.map +1 -0
- package/dist/routes/health.d.ts +2 -0
- package/dist/routes/health.d.ts.map +1 -0
- package/dist/routes/health.js +72 -0
- package/dist/routes/health.js.map +1 -0
- package/dist/routes/keys.d.ts +17 -0
- package/dist/routes/keys.d.ts.map +1 -0
- package/dist/routes/keys.js +1787 -0
- package/dist/routes/keys.js.map +1 -0
- package/dist/routes/logs.d.ts +2 -0
- package/dist/routes/logs.d.ts.map +1 -0
- package/dist/routes/logs.js +88 -0
- package/dist/routes/logs.js.map +1 -0
- package/dist/routes/mcp.d.ts +4 -0
- package/dist/routes/mcp.d.ts.map +1 -0
- package/dist/routes/mcp.js +563 -0
- package/dist/routes/mcp.js.map +1 -0
- package/dist/routes/media.d.ts +2 -0
- package/dist/routes/media.d.ts.map +1 -0
- package/dist/routes/media.js +180 -0
- package/dist/routes/media.js.map +1 -0
- package/dist/routes/models.d.ts +2 -0
- package/dist/routes/models.d.ts.map +1 -0
- package/dist/routes/models.js +439 -0
- package/dist/routes/models.js.map +1 -0
- package/dist/routes/ollama.d.ts +7 -0
- package/dist/routes/ollama.d.ts.map +1 -0
- package/dist/routes/ollama.js +595 -0
- package/dist/routes/ollama.js.map +1 -0
- package/dist/routes/profiles.d.ts +3 -0
- package/dist/routes/profiles.d.ts.map +1 -0
- package/dist/routes/profiles.js +431 -0
- package/dist/routes/profiles.js.map +1 -0
- package/dist/routes/proxy.d.ts +32 -0
- package/dist/routes/proxy.d.ts.map +1 -0
- package/dist/routes/proxy.js +2793 -0
- package/dist/routes/proxy.js.map +1 -0
- package/dist/routes/responses.d.ts +1161 -0
- package/dist/routes/responses.d.ts.map +1 -0
- package/dist/routes/responses.js +1521 -0
- package/dist/routes/responses.js.map +1 -0
- package/dist/routes/settings.d.ts +2 -0
- package/dist/routes/settings.d.ts.map +1 -0
- package/dist/routes/settings.js +549 -0
- package/dist/routes/settings.js.map +1 -0
- package/dist/routes/status.d.ts +3 -0
- package/dist/routes/status.d.ts.map +1 -0
- package/dist/routes/status.js +214 -0
- package/dist/routes/status.js.map +1 -0
- package/dist/routes/update.d.ts +31 -0
- package/dist/routes/update.d.ts.map +1 -0
- package/dist/routes/update.js +536 -0
- package/dist/routes/update.js.map +1 -0
- package/dist/routes/url-tokens.d.ts +2 -0
- package/dist/routes/url-tokens.d.ts.map +1 -0
- package/dist/routes/url-tokens.js +31 -0
- package/dist/routes/url-tokens.js.map +1 -0
- package/dist/scripts/export-catalog.d.ts +2 -0
- package/dist/scripts/export-catalog.d.ts.map +1 -0
- package/dist/scripts/export-catalog.js +114 -0
- package/dist/scripts/export-catalog.js.map +1 -0
- package/dist/scripts/rotate-encryption-key.d.ts +81 -0
- package/dist/scripts/rotate-encryption-key.d.ts.map +1 -0
- package/dist/scripts/rotate-encryption-key.js +232 -0
- package/dist/scripts/rotate-encryption-key.js.map +1 -0
- package/dist/scripts/routing-sim.d.ts +2 -0
- package/dist/scripts/routing-sim.d.ts.map +1 -0
- package/dist/scripts/routing-sim.js +130 -0
- package/dist/scripts/routing-sim.js.map +1 -0
- package/dist/scripts/test-all-models.d.ts +2 -0
- package/dist/scripts/test-all-models.d.ts.map +1 -0
- package/dist/scripts/test-all-models.js +56 -0
- package/dist/scripts/test-all-models.js.map +1 -0
- package/dist/services/anthropic-map.d.ts +39 -0
- package/dist/services/anthropic-map.d.ts.map +1 -0
- package/dist/services/anthropic-map.js +138 -0
- package/dist/services/anthropic-map.js.map +1 -0
- package/dist/services/auth.d.ts +30 -0
- package/dist/services/auth.d.ts.map +1 -0
- package/dist/services/auth.js +124 -0
- package/dist/services/auth.js.map +1 -0
- package/dist/services/auto-discover.d.ts +77 -0
- package/dist/services/auto-discover.d.ts.map +1 -0
- package/dist/services/auto-discover.js +1047 -0
- package/dist/services/auto-discover.js.map +1 -0
- package/dist/services/backups.d.ts +67 -0
- package/dist/services/backups.d.ts.map +1 -0
- package/dist/services/backups.js +444 -0
- package/dist/services/backups.js.map +1 -0
- package/dist/services/builtin-model-discovery.d.ts +107 -0
- package/dist/services/builtin-model-discovery.d.ts.map +1 -0
- package/dist/services/builtin-model-discovery.js +296 -0
- package/dist/services/builtin-model-discovery.js.map +1 -0
- package/dist/services/cache.d.ts +190 -0
- package/dist/services/cache.d.ts.map +1 -0
- package/dist/services/cache.js +617 -0
- package/dist/services/cache.js.map +1 -0
- package/dist/services/catalog-sync.d.ts +257 -0
- package/dist/services/catalog-sync.d.ts.map +1 -0
- package/dist/services/catalog-sync.js +1041 -0
- package/dist/services/catalog-sync.js.map +1 -0
- package/dist/services/compression/config.d.ts +33 -0
- package/dist/services/compression/config.d.ts.map +1 -0
- package/dist/services/compression/config.js +158 -0
- package/dist/services/compression/config.js.map +1 -0
- package/dist/services/compression/engines/aging.d.ts +2 -0
- package/dist/services/compression/engines/aging.d.ts.map +1 -0
- package/dist/services/compression/engines/aging.js +53 -0
- package/dist/services/compression/engines/aging.js.map +1 -0
- package/dist/services/compression/engines/custom-filters.d.ts +4 -0
- package/dist/services/compression/engines/custom-filters.d.ts.map +1 -0
- package/dist/services/compression/engines/custom-filters.js +49 -0
- package/dist/services/compression/engines/custom-filters.js.map +1 -0
- package/dist/services/compression/engines/dedup.d.ts +2 -0
- package/dist/services/compression/engines/dedup.d.ts.map +1 -0
- package/dist/services/compression/engines/dedup.js +61 -0
- package/dist/services/compression/engines/dedup.js.map +1 -0
- package/dist/services/compression/engines/filter-definitions.d.ts +75 -0
- package/dist/services/compression/engines/filter-definitions.d.ts.map +1 -0
- package/dist/services/compression/engines/filter-definitions.js +45 -0
- package/dist/services/compression/engines/filter-definitions.js.map +1 -0
- package/dist/services/compression/engines/hard-budget.d.ts +2 -0
- package/dist/services/compression/engines/hard-budget.d.ts.map +1 -0
- package/dist/services/compression/engines/hard-budget.js +52 -0
- package/dist/services/compression/engines/hard-budget.js.map +1 -0
- package/dist/services/compression/engines/index.d.ts +9 -0
- package/dist/services/compression/engines/index.d.ts.map +1 -0
- package/dist/services/compression/engines/index.js +9 -0
- package/dist/services/compression/engines/index.js.map +1 -0
- package/dist/services/compression/engines/jsoncompact.d.ts +3 -0
- package/dist/services/compression/engines/jsoncompact.d.ts.map +1 -0
- package/dist/services/compression/engines/jsoncompact.js +145 -0
- package/dist/services/compression/engines/jsoncompact.js.map +1 -0
- package/dist/services/compression/engines/lite.d.ts +2 -0
- package/dist/services/compression/engines/lite.d.ts.map +1 -0
- package/dist/services/compression/engines/lite.js +34 -0
- package/dist/services/compression/engines/lite.js.map +1 -0
- package/dist/services/compression/engines/read-lifecycle.d.ts +2 -0
- package/dist/services/compression/engines/read-lifecycle.d.ts.map +1 -0
- package/dist/services/compression/engines/read-lifecycle.js +70 -0
- package/dist/services/compression/engines/read-lifecycle.js.map +1 -0
- package/dist/services/compression/engines/relevance.d.ts +2 -0
- package/dist/services/compression/engines/relevance.d.ts.map +1 -0
- package/dist/services/compression/engines/relevance.js +74 -0
- package/dist/services/compression/engines/relevance.js.map +1 -0
- package/dist/services/compression/engines/toolfilter.d.ts +2 -0
- package/dist/services/compression/engines/toolfilter.d.ts.map +1 -0
- package/dist/services/compression/engines/toolfilter.js +195 -0
- package/dist/services/compression/engines/toolfilter.js.map +1 -0
- package/dist/services/compression/fidelity-gate.d.ts +12 -0
- package/dist/services/compression/fidelity-gate.d.ts.map +1 -0
- package/dist/services/compression/fidelity-gate.js +90 -0
- package/dist/services/compression/fidelity-gate.js.map +1 -0
- package/dist/services/compression/helpers.d.ts +9 -0
- package/dist/services/compression/helpers.d.ts.map +1 -0
- package/dist/services/compression/helpers.js +52 -0
- package/dist/services/compression/helpers.js.map +1 -0
- package/dist/services/compression/pipeline.d.ts +7 -0
- package/dist/services/compression/pipeline.d.ts.map +1 -0
- package/dist/services/compression/pipeline.js +245 -0
- package/dist/services/compression/pipeline.js.map +1 -0
- package/dist/services/compression/preservation.d.ts +27 -0
- package/dist/services/compression/preservation.d.ts.map +1 -0
- package/dist/services/compression/preservation.js +109 -0
- package/dist/services/compression/preservation.js.map +1 -0
- package/dist/services/compression/registry.d.ts +6 -0
- package/dist/services/compression/registry.d.ts.map +1 -0
- package/dist/services/compression/registry.js +16 -0
- package/dist/services/compression/registry.js.map +1 -0
- package/dist/services/compression/stats.d.ts +29 -0
- package/dist/services/compression/stats.d.ts.map +1 -0
- package/dist/services/compression/stats.js +55 -0
- package/dist/services/compression/stats.js.map +1 -0
- package/dist/services/compression/types.d.ts +90 -0
- package/dist/services/compression/types.d.ts.map +1 -0
- package/dist/services/compression/types.js +2 -0
- package/dist/services/compression/types.js.map +1 -0
- package/dist/services/context-handoff.d.ts +22 -0
- package/dist/services/context-handoff.d.ts.map +1 -0
- package/dist/services/context-handoff.js +164 -0
- package/dist/services/context-handoff.js.map +1 -0
- package/dist/services/cooldown-probe.d.ts +24 -0
- package/dist/services/cooldown-probe.d.ts.map +1 -0
- package/dist/services/cooldown-probe.js +181 -0
- package/dist/services/cooldown-probe.js.map +1 -0
- package/dist/services/custom-endpoint.d.ts +58 -0
- package/dist/services/custom-endpoint.d.ts.map +1 -0
- package/dist/services/custom-endpoint.js +167 -0
- package/dist/services/custom-endpoint.js.map +1 -0
- package/dist/services/custom-media-register.d.ts +22 -0
- package/dist/services/custom-media-register.d.ts.map +1 -0
- package/dist/services/custom-media-register.js +45 -0
- package/dist/services/custom-media-register.js.map +1 -0
- package/dist/services/custom-model-register.d.ts +50 -0
- package/dist/services/custom-model-register.d.ts.map +1 -0
- package/dist/services/custom-model-register.js +103 -0
- package/dist/services/custom-model-register.js.map +1 -0
- package/dist/services/custom-model-seed.d.ts +18 -0
- package/dist/services/custom-model-seed.d.ts.map +1 -0
- package/dist/services/custom-model-seed.js +42 -0
- package/dist/services/custom-model-seed.js.map +1 -0
- package/dist/services/custom-model-sync.d.ts +37 -0
- package/dist/services/custom-model-sync.d.ts.map +1 -0
- package/dist/services/custom-model-sync.js +118 -0
- package/dist/services/custom-model-sync.js.map +1 -0
- package/dist/services/custom-model-tombstone.d.ts +5 -0
- package/dist/services/custom-model-tombstone.d.ts.map +1 -0
- package/dist/services/custom-model-tombstone.js +30 -0
- package/dist/services/custom-model-tombstone.js.map +1 -0
- package/dist/services/declarative-config.d.ts +356 -0
- package/dist/services/declarative-config.d.ts.map +1 -0
- package/dist/services/declarative-config.js +427 -0
- package/dist/services/declarative-config.js.map +1 -0
- package/dist/services/degradation.d.ts +40 -0
- package/dist/services/degradation.d.ts.map +1 -0
- package/dist/services/degradation.js +119 -0
- package/dist/services/degradation.js.map +1 -0
- package/dist/services/embeddings.d.ts +76 -0
- package/dist/services/embeddings.d.ts.map +1 -0
- package/dist/services/embeddings.js +319 -0
- package/dist/services/embeddings.js.map +1 -0
- package/dist/services/fusion.d.ts +162 -0
- package/dist/services/fusion.d.ts.map +1 -0
- package/dist/services/fusion.js +789 -0
- package/dist/services/fusion.js.map +1 -0
- package/dist/services/gemini-map.d.ts +14 -0
- package/dist/services/gemini-map.d.ts.map +1 -0
- package/dist/services/gemini-map.js +78 -0
- package/dist/services/gemini-map.js.map +1 -0
- package/dist/services/health.d.ts +52 -0
- package/dist/services/health.d.ts.map +1 -0
- package/dist/services/health.js +352 -0
- package/dist/services/health.js.map +1 -0
- package/dist/services/idempotency.d.ts +49 -0
- package/dist/services/idempotency.d.ts.map +1 -0
- package/dist/services/idempotency.js +140 -0
- package/dist/services/idempotency.js.map +1 -0
- package/dist/services/key-budget.d.ts +74 -0
- package/dist/services/key-budget.d.ts.map +1 -0
- package/dist/services/key-budget.js +200 -0
- package/dist/services/key-budget.js.map +1 -0
- package/dist/services/media.d.ts +123 -0
- package/dist/services/media.d.ts.map +1 -0
- package/dist/services/media.js +954 -0
- package/dist/services/media.js.map +1 -0
- package/dist/services/model-discovery.d.ts +126 -0
- package/dist/services/model-discovery.d.ts.map +1 -0
- package/dist/services/model-discovery.js +662 -0
- package/dist/services/model-discovery.js.map +1 -0
- package/dist/services/model-groups.d.ts +149 -0
- package/dist/services/model-groups.d.ts.map +1 -0
- package/dist/services/model-groups.js +314 -0
- package/dist/services/model-groups.js.map +1 -0
- package/dist/services/model-listing.d.ts +18 -0
- package/dist/services/model-listing.d.ts.map +1 -0
- package/dist/services/model-listing.js +94 -0
- package/dist/services/model-listing.js.map +1 -0
- package/dist/services/model-retirement.d.ts +29 -0
- package/dist/services/model-retirement.d.ts.map +1 -0
- package/dist/services/model-retirement.js +86 -0
- package/dist/services/model-retirement.js.map +1 -0
- package/dist/services/model-state.d.ts +90 -0
- package/dist/services/model-state.d.ts.map +1 -0
- package/dist/services/model-state.js +342 -0
- package/dist/services/model-state.js.map +1 -0
- package/dist/services/model-weight-overrides.d.ts +48 -0
- package/dist/services/model-weight-overrides.d.ts.map +1 -0
- package/dist/services/model-weight-overrides.js +127 -0
- package/dist/services/model-weight-overrides.js.map +1 -0
- package/dist/services/notification-emitter.d.ts +50 -0
- package/dist/services/notification-emitter.d.ts.map +1 -0
- package/dist/services/notification-emitter.js +177 -0
- package/dist/services/notification-emitter.js.map +1 -0
- package/dist/services/opencode-free-sync.d.ts +29 -0
- package/dist/services/opencode-free-sync.d.ts.map +1 -0
- package/dist/services/opencode-free-sync.js +206 -0
- package/dist/services/opencode-free-sync.js.map +1 -0
- package/dist/services/penalty-inspector.d.ts +56 -0
- package/dist/services/penalty-inspector.d.ts.map +1 -0
- package/dist/services/penalty-inspector.js +167 -0
- package/dist/services/penalty-inspector.js.map +1 -0
- package/dist/services/profile-models.d.ts +5 -0
- package/dist/services/profile-models.d.ts.map +1 -0
- package/dist/services/profile-models.js +62 -0
- package/dist/services/profile-models.js.map +1 -0
- package/dist/services/provider-credential.d.ts +19 -0
- package/dist/services/provider-credential.d.ts.map +1 -0
- package/dist/services/provider-credential.js +51 -0
- package/dist/services/provider-credential.js.map +1 -0
- package/dist/services/provider-quota.d.ts +64 -0
- package/dist/services/provider-quota.d.ts.map +1 -0
- package/dist/services/provider-quota.js +563 -0
- package/dist/services/provider-quota.js.map +1 -0
- package/dist/services/quirks.d.ts +0 -0
- package/dist/services/quirks.d.ts.map +1 -0
- package/dist/services/quirks.js +0 -0
- package/dist/services/quirks.js.map +1 -0
- package/dist/services/quota-forecast.d.ts +50 -0
- package/dist/services/quota-forecast.d.ts.map +1 -0
- package/dist/services/quota-forecast.js +150 -0
- package/dist/services/quota-forecast.js.map +1 -0
- package/dist/services/quota-outlook.d.ts +4 -0
- package/dist/services/quota-outlook.d.ts.map +1 -0
- package/dist/services/quota-outlook.js +92 -0
- package/dist/services/quota-outlook.js.map +1 -0
- package/dist/services/ratelimit.d.ts +249 -0
- package/dist/services/ratelimit.d.ts.map +1 -0
- package/dist/services/ratelimit.js +1182 -0
- package/dist/services/ratelimit.js.map +1 -0
- package/dist/services/request-retention.d.ts +60 -0
- package/dist/services/request-retention.d.ts.map +1 -0
- package/dist/services/request-retention.js +229 -0
- package/dist/services/request-retention.js.map +1 -0
- package/dist/services/router.d.ts +384 -0
- package/dist/services/router.d.ts.map +1 -0
- package/dist/services/router.js +1986 -0
- package/dist/services/router.js.map +1 -0
- package/dist/services/scoring.d.ts +156 -0
- package/dist/services/scoring.d.ts.map +1 -0
- package/dist/services/scoring.js +435 -0
- package/dist/services/scoring.js.map +1 -0
- package/dist/services/url-tokens.d.ts +15 -0
- package/dist/services/url-tokens.d.ts.map +1 -0
- package/dist/services/url-tokens.js +55 -0
- package/dist/services/url-tokens.js.map +1 -0
- package/package.json +77 -4
- package/README.md +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={nav:{models:`Mallit`,playground:`Leikkipaikka`,keys:`Avaimet`,analytics:`Analytiikka`,premium:`Premium`,upgrade:`Päivitys`,settings:`Asetukset`,signOut:`Kirjautuu ulos`,openMenu:`Avaa navigointivalikko`,switchLight:`Vaihda valoteemaan`,switchDark:`Vaihda tummaan teemaan`,switchToChinese:`Siirtyminen kiinaan`,switchToEnglish:`Siirtyminen englanniksi`,modelsMenu:`Selaa mallityyppejä`,agents:`Agentit`,logs:`Lokit`,analyticsMenu:`Analytiikkasivut`,notifications:`Notifications`,noNotifications:`No notifications yet`},auth:{createYourAccount:`Luo tilisi`,signIn:`Kirjaudu sisään`,email:`Sähköposti`,password:`Salasana`,emailPlaceholder:`you@example.com`,passwordPlaceholderSetup:`vähintään 8 hahmoa`,passwordPlaceholderLogin:`salasanasi`,setupDescription:`Aseta sähköpostiosoite ja salasana, jotka suojaavat tätä hallintapaneelia.`,loginDescription:`Kirjaudu sisään hallitaksesi avaimiasi, reititystä ja analytiikkaa.`,createAccount:`Luo tili`,creating:`Luomassa...`,signingIn:`Kirjaudun sisään...`,loading:`Ladataan...`,newPasswordAutoComplete:`uusi-salasana`,currentPasswordAutoComplete:`current-password`,serverUnreachableBefore:`En saa yhteyttä palvelimelle. Varmista, että taustajärjestelmä toimii (`,serverUnreachableAfter:`).`,setupCode:`Asetuskoodi`,setupCodePlaceholder:`Koodi palvelinlokitiedostoista`,setupCodeHint:`Toisen laitteen asentaminen vaatii kertaluonteisen koodin, joka on tulostettu palvelimen lokeihin käynnistyksen yhteydessä.`,changePassword:`Vaihda salasana`,changeEmail:`Vaihda sähköposti`,forgotPassword:`Unohditko salasanan?`,currentPassword:`Nykyinen salasana`,newPassword:`Uusi salasana`,newEmail:`Uusi sähköposti`,resetCode:`Palautuskoodi`,resetCodePlaceholder:`koodi palvelimen lokeista`,resetCodeHint:`Koodi on palvelimen lokissa. Sitä ei koskaan lähetetä sähköpostitse.`,forgotPasswordDescription:`Napsauta alla olevaa painiketta luodaksesi palautuskoodin. Koodi kirjoitetaan palvelimen lokiin, eikä sitä koskaan lähetetä sähköpostitse. Syötä se tähän asettaaksesi uuden salasanan.`,requestResetCode:`Lähetä koodi`,requestingResetCode:`Lähetetään…`,resetPassword:`Palauta salasana`,resettingPassword:`Palautetaan…`,changingPassword:`Vaihdetaan…`,changingEmail:`Vaihdetaan…`,backToLogin:`Takaisin kirjautumiseen`,passwordChanged:`Salasana vaihdettu.`,emailChanged:`Sähköposti vaihdettu.`,passwordReset:`Salasana palautettu. Kirjaudu sisään.`,resetCodeDockerHint:`Onko käytössä Docker? Koodi on kontin lokissa: docker logs <container>.`,desktopSessionFailed:`Hallintapaneeli ei voinut kirjautua paikalliselle palvelimelle. Sulje SRouter ja avaa se uudelleen.`},common:{save:`Tallenna`,saving:`Säästäminen...`,cancel:`Peruuta`,discard:`Hylkääminen`,delete:`Poista`,confirm:`Vahvista`,copy:`Selvä`,copied:`Kopioitu`,copyFailed:`Kopiointi epäonnistui — valitse teksti ja kopioi käsin`,show:`Ohjelma`,hide:`Piiloudu`,apply:`Hae`,applied:`Sovellettu`,applying:`Hakeminen...`,active:`Aktiivinen`,inactive:`Passiivinen`,never:`Ei koskaan`,loading:`Ladataan...`,error:`Virhe`,noData:`Tietoja ei vielä`,unsavedChanges:`Tallentamattomat muutokset`,saveChanges:`Tallennusmuutokset`,remove:`Poista`,unknownError:`Tuntematon virhe`,model:`Malli`,provider:`Tarjoaja`,success:`Menestys`,failures:`Epäonnistumiset`,dismiss:`Hylkäys`,status:`Tila`},settings:{title:`Asetukset`,language:`Kieli`,theme:`Teema`,themeSystem:`Järjestelmä`,themeLight:`Vaalea`,themeDark:`Tumma`,searchLanguage:`Hae kieliä…`,noLanguages:`Kieliä ei löytynyt`,sections:`Asetusosiot`,sectionGeneral:`Yleiset`,sectionCompression:`Pakkaus`,sectionAdvanced:`Lisäasetukset`,sectionPreview:`Esikatselu`,generalDescription:`Tämän hallintapaneelin kieli ja ulkoasu.`,advancedDescription:`Pakkausputken raja-arvot ja turvakytkimet.`,compressionTitle:`Promptien pakkaus`,compressionDescription:`Pienennä pyynnön kokoa ennen reititystä säilyttäen koodin, virheet, polut, numerot ja työkalumääritykset.`,compressionHelp:`Kirjoittaa jokaisen pyynnön uudelleen ennen sen lähettämistä palveluntarjoajalle, jotta se käyttää vähemmän tokeneita. Koodi, virheet, tiedostopolut ja luvut ovat suojattuja, ja jokainen niitä vahingoittava uudelleenkirjoitus hylätään.`,compressionMode:`Tila`,compressionModeHelp:`Pois lähettää pyynnöt koskemattomina. Häviötön poistaa vain toistuvan ja turhan tekstin. Vakio lyhentää myös työkalujen tulosteita. Aggressiivinen tiivistää lisäksi vanhemmat vuorot.`,compressionOff:`Pois`,compressionLossless:`Häviötön`,compressionStandard:`Vakio`,compressionAggressive:`Aggressiivinen`,compressionLossy:`Häviöllinen`,compressionEngines:`Moottorit`,compressionEnginesHelp:`Jokainen moottori on yksi uudelleenkirjoitusvaihe. Tila ratkaisee, mitkä moottorit suoritetaan; täältä pois kytketty moottori jää pois kaikista tiloista.`,engineDedup:`Toistuvat lohkot`,engineDedupHelp:`Korvaa keskustelussa jo aiemmin esiintyneen tekstilohkon lyhyellä viittauksella siihen.`,engineLite:`Tyhjätilan siivous`,engineLiteHelp:`Poistaa rivien lopun välilyönnit, yhdistää toistuvat tyhjät rivit ja pudottaa kahdentuneet järjestelmäviestit.`,engineReadLifecycle:`Vanhentuneet tiedostoluvut`,engineReadLifecycleHelp:`Korvaa aiemman tiedostoluvun huomautuksella heti, kun sama tiedosto luetaan tai sitä muokataan myöhemmin uudelleen.`,engineToolfilter:`Työkalutulosteen suodatin`,engineToolfilterHelp:`Lyhentää komentojen ja työkalujen tulosteita, kuten käännöksiä, testejä ja asennuksia. Virhe- ja pinojälkirivit säilyvät aina.`,engineJsoncompact:`JSON-taulukot`,engineJsoncompactHelp:`Koodaa uudelleen pitkät JSON-listat, joilla on samat kentät, tiiviiksi taulukoksi. Palautettavissa, joten mitään ei menetetä.`,engineRelevance:`Osuvuussuodatin`,engineRelevanceHelp:`Pudottaa viimeisimpään viestiin vähiten liittyvät lauseet, kun viesti ylittää kokorajansa.`,engineAging:`Vanhemmat vuorot`,engineAgingHelp:`Tiivistää muutamaa viimeisintä vanhemmat vuorot lyhyeksi yhteenvedoksi, joka säilyttää polut, virheet ja päätökset.`,engineHardBudget:`Tokenikatto`,engineHardBudgetHelp:`Poistaa vähiten arvokkaat rivit, kunnes pyyntö mahtuu tokentavoitteeseen.`,compressionAutoTrigger:`Käynnistä automaattisesti arvioitujen tokenien ylittyessä`,compressionAutoTriggerHelp:`Pyynnöt, joiden arvioitu tokenimäärä ylittää tämän, siirtyvät automaattisesti Aggressiiviseen tilaan. Jätä tyhjäksi poistaaksesi käytöstä.`,compressionPrefixFreeze:`Jäädytä toistuvat prompt-etuliitteet`,compressionPrefixFreezeHelp:`Jättää järjestelmäpromptin koskemattomaksi, kun sama teksti on nähty kolme kertaa, jotta palveluntarjoajan puolen promptien välimuisti toimii edelleen.`,compressionTrustProjectFilters:`Luota projektin suodatintiedostoihin`,compressionTrustProjectFiltersHelp:`Lataa työkalutulosteen suodattimet myös työhakemistosta. Oletuksena pois päältä, koska repositorio voisi piilottaa sen avulla tulosteita mallilta.`,compressionStats:`Säästetty koko`,compressionEstimatedTokensSaved:`Arviolta säästetyt tokenit`,compressionPreview:`Live-esikatselu`,compressionPreviewDescription:`Lähetä pyynnön runko putken läpi nähdäksesi, mitä palveluntarjoaja saisi.`,compressionPreviewPlaceholder:`Liitä pyynnön JSON tai pelkkä teksti`,compressionRunPreview:`Suorita esikatselu`,updatesTitle:`Päivitykset`,checkForUpdates:`Tarkista päivitykset`,lastChecked:`Viimeksi tarkistettu: {when}`,currentVersion:`Nykyinen koontiversio:`,updateAvailable:`Päivitys saatavilla`,changelog:`Mikä muuttui`,upToDate:`Ajan tasalla`,buildAhead:`Tämä koontiversio on virallista main-haaraa edellä.`,buildDiverged:`Tämä koontiversio on erkaantunut virallisesta main-haarasta.`,buildUnknown:`Tätä mukautettua koontiversiota ei voi verrata viralliseen main-haaraan.`,notGitInstall:`Tämä asennus ei sisällä commit-tietoja.`,checkFailed:`Päivitysten tarkistaminen epäonnistui.`,contactsGithub:`Tarkistukset tehdään manuaalisesti ja ne ottavat yhteyden GitHubiin.`,autoUpdateCheck:`Automaattinen päivitystarkistus`,autoUpdateCheckHelp:`Tarkistaa GitHubista kerran päivässä, onko uutta julkaisua, ja näyttää muistutuksen. Oletuksena pois päältä.`,openReleases:`Avaa GitHub-julkaisut`,restartAfterUpdate:`Käynnistä SRouter uudelleen koonnin valmistuttua.`,syncSchedule:`Model Sync`,syncScheduleHint:`How often the model catalog is refreshed from the server`,syncIntervalOff:`Off`,syncInterval6h:`Every 6h`,syncInterval12h:`Every 12h`,syncInterval24h:`Every 24h`},models:{title:`Mallit`,chatModelsTab:`Chat-mallit`,fusionTab:`Fuusio`,embeddingsTab:`Upotukset`,imageTab:`Kuva`,videoTab:`Video`,audioTab:`Ääni`,imageDesc:`Tekstistä kuvaksi -generointimallit.`,videoDesc:`Text-to-video generation models.`,audioDesc:`Tekstistä puheeksi -mallit ja puheesta tekstiksi -mallit.`,mediaHint:`Generoi`,mediaEmpty:`Ei vielä malleja. Ne synkronoituvat katalogista.`,ttsHeading:`Tekstistä puheeksi`,sttHeading:`Puheesta tekstiksi`,sttHint:`Litteroi`,sttEmpty:`Ei vielä puheesta tekstiksi -malleja. Ne synkronoituvat katalogista.`,newBadge:`Uusi`,monthlyTokenBudget:`Kuukausittainen token-budjetti`,remaining:`jäljelle jääminen`,used:`käytetty`,usedScopeHint:`Chat requests only, since the start of this calendar month, summed over every model in the active chain — custom endpoints included. Traffic you send to a provider outside SRouter is not counted.`,legendRemainingTitle:`Remaining / monthly budget for {name} ({platform})`,noPublishedQuota:`+{count} with no published quota`,noPublishedQuotaTitle:`These models have no documented monthly token budget, so there is no remaining figure to show.`,of:`of`,showAllModels:`Näytä kaikki {count} mallit`,showLess:`Näytä vähemmän`,vision:`Visio`,visionTitle:`Hyväksyy kuvasyötteen`,tools:`Työkalut`,toolsTitle:`Lähettää rakenteellisia työkalukutsuja, joten se on kelpoinen työkalun kantamiseen liittyviin pyyntöihin`,retired:`Poistettu`,penalty:`−{value} rangaistus`,obs:`{count} Obs`,tokPerMonth:`{count} tok/mo`,rpmLimit:`{count} rpm`,rpdLimit:`{count} RPD`,noKey:`ei avainta`,dragToReorder:`Drag ja järjestä uudelleen`,dragToReorderGroup:`Vetäminen uudelleenjärjestelyyn mallin uudelleenjärjestelyyn`,moveToRank:`Siirry sijalle`,providerCount:`{count} palveluntarjoajat`,servedBy:`Palvelevat {providers}`,viewProviders:`Näytä palveluntarjoajat`,backToModels:`Takaisin malleihin`,providersHeading:`Tätä mallia palvelevat palveluntarjoajat`,codeSnippetHeading:`Käytä tätä mallia`,modelNotFound:`Tätä mallia ei ole saatavilla tai sillä ei ole konfiguroituja palveluntarjoajia.`,providerIdsHeading:`Palveluntarjoajamallin tunnisteet`,providerIdsHint:`Lähetä yhtenäinen mallitunnus failover-toimintoon jokaisen palveluntarjoajan välillä tai palveluntarjoajakohtainen id kiinnittämään yhden palveluntarjoajan.`,copyModelName:`Kopioi mallin nimi`,settingsHeading:`Palveluntarjoajan asetukset`,settingsHint:`Paikalliset muokkaukset katalogimalleihin säilytetään katalogin synkronointien yli. Poistetut katalogimallit pysyvät poistettuina, kunnes lisäät ne uudelleen konfiguraatioiden kautta.`,catalogModel:`Katalogi`,customModel:`Tapana`,discoveredModel:`löydetty`,localOverride:`paikallinen ohitus`,displayName:`Näyttönimi`,sizeLabel:`Kyvykkyystaso`,sizeLabelHint:`Frontier/Large/Medium/Small määrittävät tiedusteluakselin: korkeampi taso voittaa aina alemman, ja saman tason sisällä tiedustelusijoitus siirtää yhä pisteitä. Malli, jolla ei ole tunnistettua tasoa, saa tällä akselilla matalimmat pisteet, mutta tiedustelu on vain yksi kolmesta akselista — vahva luotettavuus ja nopeus voivat silti voittaa sille reitityksen.`,sizeLabelNone:`Ei mitään (matalimmat tiedustelupisteet)`,contextWindow:`Tausta`,inFallback:`Ketjussa`,saveModelSettings:`Tallennusmallin asetukset`,aggregateBudget:`{count}/kuukausi`,aggregateBudgetTitle:`Yhteensä ilmaisia tokeneita kuukaudessa tämän mallin palveluntarjoajilla`,rateRpm:`{count} RPM`,rateRpd:`{count} RPD`,rateTitle:`Maksurajoitettu — ei kiinteää kuukausittaista token-budjettia`,rateLimitUsage:`{kind} {used}/{limit}`,rateLimitUsageTitle:`Aikaikkunan nopeusrajan käyttö (käytetty / raja) palveluntarjoajalla, jolla on eniten liikkumavaraa`,splitOut:`Älä yhdistä tätä kopiota`,splitOutHint:`Anna tämän palveluntarjoajan kopiolle oma erillinen merkintä sen sijaan, että yhdistäisit sen yhtenäiseen malliin. Voit yhdistää sen takaisin kopion omalta sivulta.`,splitUndo:`Yhdistä takaisin`,splitUndoHint:`Tämä kopio säilytetään erillään yhtenäisestä mallistaan. Yhdistä se takaisin epäonnistuaksesi uudelleen kaikkien sen tarjoajien kesken.`,splitBadge:`pidetään erillään`,noData:`ei dataa`,noDataTitle:`Pyyntöjä ei ole vielä tallennettu – luotettavuutta ja nopeutta ei mitata tälle palveluntarjoajalle.`,bestOfN:`{count}:n paras`,perProviderScores:`Palveluntarjoajakohtaiset pisteet: {list}`,columnModel:`Malli`,columnOn:`Päällä`,noModelsBefore:`Malleja ei saatavilla. Lisää API näppäimet`,keysPageLink:`Avainsivu`,noModelsAfter:`Ensin.`,hiddenNoKeys:`Piilotettu (ei avaimia): {platforms}`,searchPlaceholder:`Etsi malleja tai palveluntarjoajia...`,clearSearch:`Selkeä haku`,ctxAny:`Mikä tahansa konteksti`,ctxBadge:`{size} ctx`,ctxTitle:`Konteksti`,copyModelId:`Kopioi mallin tunnus`,showingCount:`{shown} {total} mallia`,clearFilters:`Clear-suodattimet`,noMatches:`Yksikään malli ei vastaa suodattimiasi.`,noModelsTitle:`Ei malleja konfiguroituna`,intelligenceRank:`Tiedustelu`,speedRank:`Nopeus`,rankHint:`Sijoitus luettelossa — 1 on paras.`,limitRpm:`RPM`,limitRpd:`RPD`,limitTpm:`TPM`,limitTpd:`TPD`,limitRpmHint:`Pyyntöä minuutissa. Jätä tyhjäksi, jos ei rajaa.`,limitRpdHint:`Pyyntöä päivässä. Jätä tyhjäksi, jos ei rajaa.`,limitTpmHint:`Tokenia minuutissa. Jätä tyhjäksi, jos ei rajaa.`,limitTpdHint:`Tokenia päivässä. Jätä tyhjäksi, jos ei rajaa.`,usageThisMonth:`Kuukausikäyttö`,usageEmpty:`Ei vielä pyyntöjä tässä kuussa.`,usageRequestsMonth:`{count} pyyntöä tässä kuussa`,aliasMergeHeading:`Merge model aliases`,aliasMergeHint:`Requests for the unified model id are also served through these custom-provider aliases (e.g. custom:my-alias).`,aliasMergeAdd:`Add`,aliasMergeRemove:`Remove`,bulkToggle:`Enable or disable every shown model`,enableAll:`Enable all`,disableAll:`Disable all`,enableAllHint:`Turn on every model shown, then Save`,disableAllHint:`Turn off every model shown, then Save`,enabledOfShown:`{enabled} of {shown} shown models are in the chain`},strategies:{explore:`Tutki mittaamattomia malleja`,exploreHint:`Give models with no reliability or speed data a 10% chance to go first so they build a track record. Your real request is what gets sent, so it may be answered by an untested model. For a custom endpoint, use Probe endpoint on the Keys page to test it without live traffic.`,keySelection:`Avaimen valinta`,keySelectionAuto:`Automaattinen`,keySelectionLeastRemaining:`Vähiten jäljellä`,keySelectionHint:`Miten valitaan saman palveluntarjoajan useista avaimista. Automaattinen säilyttää nykyisen kierron; Vähiten jäljellä järjestää avaimet havaitun kiintiön mukaan ja kokeilee ensin sitä, jolla on eniten jäljellä.`,cooldownCeiling:`Pisin automaattinen jäähdytys`,cooldownCeilingHint:`Rajoittaa, kuinka pitkään reitittimen omat arviot voivat hyllyttää epäonnistuvan avain- ja malliparin. Portaat nousevat yleensä 2 min, 10 min, 1 h, 24 h, ja saldo- tai tasovirheet hyllyttävät päiväksi. Palveluntarjoajan ilmoittamia uudelleenyritysaikoja ei koskaan lyhennetä.`,cooldownCeilingDefault:`Oletus (enintään 24 h)`,cooldownCeiling10m:`10 minuuttia`,cooldownCeiling1h:`1 tunti`,cooldownCeiling6h:`6 tuntia`,moreOptions:`Lisäasetukset`,peakActive:`(ruuhka-aika)`,peakActiveHint:`Ruuhka-ajan säätö on nyt käytössä, joten nämä eivät ole esiasetuksen omat painot: 60 % nopeuden painosta on siirretty luotettavuudelle.`,peakAdjust:`Ruuhka-ajan säätö`,peakAdjustHint:`Oletuksena pois päältä. Alla olevalla aikavälillä 60 % nopeuden painosta siirtyy luotettavuudelle — ilmaiset välityspalvelimet ovat silloin kuormitetuimmillaan, joten luotettavuus ennustaa onnistumista paremmin kuin pelkkä läpisyöttö. Nopein ja Luotettavin jätetään rauhaan.`,peakFrom:`Alkaen`,peakTo:`päättyen`,peakTimezoneLabel:`Aikavyöhyke`,peakUseBrowserTimezone:`Käytä selaimen aikavyöhykettä`,peakTimezoneInvalid:`Tuntematon aikavyöhyke.`,peakExemptNote:`Tämä esiasetus jätetään rauhaan — se on jo nopeuden ja luotettavuuden vaihtokaupan toisessa päässä.`,title:`Reititysstrategia`,description:`Valitse reititysstrategia. Manuaalitilassa raahaat järjestyksen asettamiseksi; Muut strategiat ohjaavat reaaliaikaisen tuloksen mukaan luotettavuuden, nopeuden ja älykkyyden välillä.`,weightsSummary:`luotettavuus {reliability} % · nopeus {speed}% · älykkyys {intelligence} %`,guardrails:`Kaiteet`,guardrailsTooltip:`Aina päällä olevat suojakaiteet: vapaa kiintiökapasiteetti × elävä hintarajoitusrangaistus. Alle 1.0 tarkoittaa, että mallia pidetään takana.`,scoreTooltip:`Lopullinen reitityspiste = kolmen akselin painotettu keskiarvo, kerrottuna kaiteilla. Korkeammat reitit ensin.`,modeManualHint:`Manuaalinen tila: pyynnöt noudattavat alla olevaa järjestystä, ylhäältä alas. Vedä tilata uudelleen.`,modeScoreHint:`Tulokset päivittyvät live-liikenteestä. Alla oleva järjestys kertoo, miten pyynnöt tällä hetkellä ohjataan.`,manual:`Manuaali`,manualBlurb:`Reitti täsmälleen alla asetetussa järjestyksessä. Vedä kahvoja uudelleenjärjestykseen. Ei pisteitä; ketjua seurataan ylhäältä alas.`,balanced:`Tasapainoinen`,balancedBlurb:`Luotettavuus johtaa (50 %), nopeus ja älykkyys ovat yhtä paljon painotettuja (25 % kumpikin). Järkevä ja monipuolinen maksuhäiriö.`,smartest:`Älykkäin`,smartestBlurb:`Suosi tehokkainta mallia, joka vielä toimii. Älykkyys 55 %, luotettavuus 35 %, nopeus 10 %.`,fastest:`Nopein`,fastestBlurb:`Suosi nopeinta mallia, joka vielä toimii. Nopeus 55 %, luotettavuus 35 %, älykkyys 10 %.`,reliable:`Luotettavin`,reliableBlurb:`Maksimoi onnistumisprosentti ennen kaikkea. Luotettavuus 70 %, nopeus ja älykkyys 15 % kumpikin.`,custom:`Tapana`,customBlurb:`Aseta oma tasapaino luotettavuuden, nopeuden ja älykkyyden välillä liukusäätimillä. Sama moottori kuin esiasetuksissa, vain painot.`,adjust:`Säädä`,customWeights:`Räätälöidyt painot`,customWeightsHelp:`Liukusäätimet ovat itsenäisiä; Osakkeet tasoittavat automaattisesti 100 %:iin.`,weightReliability:`Luotettavuus`,weightSpeed:`Nopeus`,weightIntelligence:`Tiedustelu`,weightRequired:`Vähintään yhden painon täytyy olla yli nollan.`,scoreColumn:`Musiikki`},penaltyInspector:{title:`Jyrsimen paine`,subtitle:`Rangaistukset, jäähdytysajat ja epäonnistumiset viimeiseltä {minutes} minuutilta`,rowCount:`{count} aktiivinen`,offChain:`Off chain`,penaltyValue:`Rangaistus {value}`,factor:`pisteet x{factor}`,noCooldown:`Ei jäähdytysaikaa`,cooldownChip:`{key} - {time}`,resetCooldown:`Reset cooldown`,clearAll:`Tyhjennä kaikki`,clearAllHint:`Poistaa heti kaikki jäähdytykset, rangaistukset ja virhesarjat. Paine rakentuu uudelleen seuraavista todellisista tuloksista.`,errorsHeading:`{count} viimeaikaiset virheet`,noRecentErrors:`Ei viimeaikaisia virheitä`,noKey:`ei avainta`,reasons:{penalty:`rangaistus`,cooldown:`Jäähdytysaika`,recent_errors:`epäonnistuminen`}},keys:JSON.parse(`{"pageTitle":"Avaimet","pageDescription":"Palveluntarjoajan tunnukset ja yhtenäinen API avain, johon sovelluksesi yhdistyvät.","tabProviders":"Palveluntarjoajat","checklistSummary":"{configured}/{total} palveluntarjoajaa määritetty","checklistKeyless":"avainta ei tarvita","checklistNoKeyTip":"Avainta ei ole vielä lisätty. Lisää napsauttamalla.","checklistSignupLink":"Avaa {provider} tilin luomista ja avaimen saantia varten","checklistKeylessTip":"Toimii ilman avainta.","tabQuotaSignals":"Kiintiösignaalit","tabApiKey":"Yhtenäinen API avain","tabAnthropic":"Anthropic","unifiedKey":"Yhtenäinen API avain","regenerate":"Regeneraatio","showKey":"Ohjelma","hideKey":"Piiloudu","copyKey":"Selvä","copyFullKey":"Kopioi koko avain","copiedKey":"Kopioitu","baseUrl":"Perus URL","endpointChat":"Chat","endpointResponses":"Vastaukset","endpointEmbeddings":"Upotukset","endpointEmbeddingsHint":"model: \\"auto\\" tai perhe Embeddings-välilehdeltä","endpointMessages":"Viestit","endpointMessagesHint":"Anthropic yhteensopiva (Claude)","quickStart":"Quick start","quickStartDesc":"Use auto for your active routing chain, or auto:fast to prioritize speed across enabled models. Replace $YOUR_KEY with your unified API key.","exampleAuto":"Auto mode (use the active chain)","exampleFast":"Fast mode (prioritize speed)","anthropicTitle":"Claude (Anthropic) mallit","anthropicDesc":"Osoita Claude tai Anthropic SDK-asiakas tälle palvelimelle. Anthropic asiakkaat lähettävät Claude mallinimeä — yhdistävät ne Auto-malliin (reititin valitsee ilmaisen mallin) tai kiinnitä tietty malli.","anthropicBaseUrl":"Perus URL","anthropicAuth":"Auth-otsikko","anthropicAuto":"Auto — reititin valitsee parhaan mallin","anthropicSave":"Tallenna kartoitus","anthropicSaved":"Pelastettu","anthropicNote":"Anthropic asiakkaat säilyttävät sisäänrakennetut Claude mallinimensä; Yllä oleva kartta määrittää, miten kukin reitittää altaaseen.","familyDefault":"Oletus","familyOpus":"Opus","familySonnet":"Sonetti","familyHaiku":"Haiku","selectPlatform":"Valitse palveluntarjoaja","addKey":"Lisää avain","keyAdded":"Avain lisätty","endpointKeysShareModels":"Saman päätepisteen avaimet jakavat sen mallit.","export":"Vienti","exportAll":"Kaikki avaimet","exportHealthy":"Vain terveellisiä","exportKeys":"Vienti API avaimet","exportFormat":"Formaatti","exportHealthyOnly":"Vain terveet koskettimet","exportHealthyOnlyDesc":"Sulje pois avaimet, jotka tällä hetkellä epäonnistuvat terveystarkistuksissa","exportWillExport":"Viedään","exportKey":"Avain","exportKeys plural":"Avaimet","exporting":"Vienti...","exportDownload":"Lataa","exportSuccess":"Vietyjä {count} avaimia","adding":"Lisään...","selectProvider":"Valitse palveluntarjoaja...","accountId":"Tilin tunnus","label":"Levy-yhtiö","noKeyNeeded":"(ei avainta tarvita)","outboundProxy":"Lähtevä proxy","outboundProxyDescription":"Ohjaa lähtevät LLM-pyynnöt välityspalvelimen kautta. Tukee SOCKS5, HTTP ja HTTPS.","proxyUrl":"Proxy URL","saveProxy":"Tallenna","savingProxy":"Säästäminen...","proxyLoadFailed":"Välityspalvelimen asetuksia ei voinut ladata.","proxyMode":"Mode","proxyModeForward":"Forward proxy","proxyModeFetchRelay":"Fetch relay","relayToken":"Relay token","relayTokenConfigured":"Configured. Leave unchanged to keep.","relayTokenPlaceholder":"Relay bearer token (optional)","relayHeadersHint":"The relay reads the destination and its own credential from","addCustom":"Lisää mukautettu OpenAI-yhteensopiva malli","addCustomDescription":"Pistechat, upotus, kuva tai äänimallit missä tahansa OpenAI-yhteensopivassa päätepisteessä. API-avain on valinnainen paikallisille palvelimille.","customType":"Tyyppi","customTypeChat":"Chat","customTypeEmbedding":"Upotus","customTypeImage":"Kuva","customTypeAudio":"Ääni","customTypeTranscription":"Transcription","customBaseUrl":"Perus URL","customModels":"Mallit","customModel":"Malli","customDisplayName":"Näyttönimi","customDisplayNamePerModel":"per malli","customDisplayNameOptional":"Valinnainen","customFamily":"Perhe","customFamilyPlaceholder":"Oletukset malli-ID:hen","customApiKey":"API avain","customCapabilities":"Kyvykkyydet","addModel":"Lisää malli","modelAdded":"Lisätty malli","addModels":"Lisää {count} mallit","addEmbeddingModel":"Lisää upotus","addImageModel":"Lisää kuvamalli","addAudioModel":"Lisää äänimalli","addTranscriptionModel":"Add transcription model","addingCustom":"Lisään...","discoverModels":"Hae mallit","probeNow":"Testaa päätepiste","probeConfirm":"Lähetetäänkö enintään 3 testipyyntöä?","probeCapabilities":"päättely: {reasoning} · työkalut: {tools}","probeCapYes":"kyllä","probeCapNo":"ei","probeCapUnknown":"tuntematon","probeSuccess":"{model} testattu, {latency} ms","probeFailed":"Testaus epäonnistui: {reason}","discoverTitle":"Tämän päätepisteen mallit","discoverHint":"Valitse rekisteröitävät mallit. Jo lisätyt pysyvät lukittuina.","discoverEmpty":"Tämä päätepiste ei palauttanut malleja.","discoverAlreadyAdded":"Lisätty","discoverSelectAll":"Valitse kaikki","modelsAdded":"{count} mallia lisätty","getApiKey":"Hanki API avain","deleteKeyConfirm":"Poistatko tämän avaimen? Tätä ei voi perua.","checkAll":"Katso kaikki","checking":"Tarkistan...","editLabel":"Muokkaa etikettiä","saveLabel":"Tallenne-etiketti","unifiedKeyDescBefore":"Käytä tätä OpenAI","unifiedKeyDescAfter":"; Se todentaa pyynnöt tälle välityspalvelimelle.","serverUnreachableBefore":"En saa yhteyttä palvelimelle","serverUnreachableAfter":". Varmista, että taustajärjestelmä toimii. NPM käynnistää kehon molemmat, ja palvelinlokit tulostavat palvelimen etuliitteellä.","paneProviderKey":"Palveluntarjoajan avain","paneImportFile":"Tiedoston tuonti","paneCustomEndpoint":"Mukautettu päätepiste","platform":"Alusta","hideAdded":"Piilota lisätyt palveluntarjoajat","apiToken":"API merkki","keyOptionalPlaceholder":"Valinnainen","bearerTokenPlaceholder":"Kantajamerkki","pasteKeyPlaceholder":"Liitä avain tähän","pasteSeveral":"Liitä useita","keyOptionalHint":"Valinnainen: jätä tyhjäksi käyttääksesi anonyymiä ilmaistasoa (rajoitettu IP-kohtaisesti), tai liitä oma avaimesi käyttääksesi tiliäsi.","enable":"Ota käyttöön","noProviderKeys":"Ei vielä palveluntarjoajan avaimia. Lisää yksi ylle aloittaaksesi reitityksen.","filterPlaceholder":"Suodattimen tarjoajat tai avaimet","filterAll":"Kaikki","filterHealthy":"Terve","filterIssues":"Ongelmat","filterDisabled":"Vammainen","noFilterMatch":"Yksikään palveluntarjoaja ei vastaa suodattimiasi.","providerCountSummary":"{providers} palveluntarjoajat · {keys} avaimet","summaryHealthy":"{count} terve","summaryIssueOne":"{count} ongelma","summaryIssueOther":"{count} ongelmat","providerActions":"Palveluntarjoajan toimet","routeViaProxy":"Reitti välityspalvelimen kautta","checkNow":"Tarkista nyt","syncModels":"Sync models with upstream","syncModelsResult":"Model list synced: {added} added, {total} live","syncModelsFailed":"Model sync failed: {reason}","syncAllModels":"Sync all providers","syncAllPending":"Syncing…","syncAllResult":"Synced {count} provider(s): {registered} model(s) registered","syncAllFailed":"Sync all failed: {reason}","syncAllNoChanges":"All provider rosters are already up to date","syncAllDialogTitle":"Sync Results","syncAllDialogSummary":"Changes detected in {changed} of {total} providers","syncAllNew":"+{count} new","syncAllUpdated":"{count} updated","syncAllRetired":"{count} retired","syncAllNewModels":"New models","syncAllUpdatedModels":"Updated models","syncAllRetiredModels":"Retired models","syncAllDialogClose":"Done","proxyEnvHintBefore":"Myös konfiguroitavissa","proxyEnvHintAfter":"ympäristömuuttuja (etenee etusijalla). Jätä tyhjä ruutu pois käytöstä varten. Esimerkkejä:","importKeys":"Tuontipalveluntarjoajan avaimet","importKeysDescription":"Lataa .env-, JSON-, JSONC-, CSV-, Markdown- tai tekstitiedostoja.","importFiles":"Tiedostot","importFileCount":"{count} valittu","previewFiles":"Esikatselu","previewing":"Esikatselu...","selected":"Valitut","provider":"Tarjoaja","keyName":"Avainnimi","keyValue":"Avainarvo","chooseProvider":"Valitse palveluntarjoaja","noPreviewKeys":"Näissä tiedostoissa ei löytynyt avaimia.","skippedItems":"Ohitettu:","moreItems":"+{count} lisää","importSelected":"Tuonti {count}","importing":"Tuonti...","noImportSelection":"Valitse vähintään yksi rivi palveluntarjoajan kanssa.","duplicate":"Kaksoiskappale","duplicatesFound":"{count} kaksoiskappaleet havaittu — ne ovat jo olemassa ja ne ohitetaan.","importResult":"Tuotu {imported}; epäonnistui {failed}.","importModelCount":"+{count} mallia","importResultWithModels":"Tuotu {imported}; rekisteröity {models} mallia; epäonnistui {failed}.","confirmRemove":"Vahvistaa?","quotaSignalsTitle":"Kiintiösignaalit","quotaSignalsEmptyTitle":"Ei vielä kiintiöhavaintoja","quotaSignalsEmptyDesc":"Tämä täyttää sen jälkeen, kun palveluntarjoajat palauttavat hintarajoitusotsikot, kiintiövirheet tai validointisignaalit.","quotaKeyRef":"Keskeiset #{id}","quotaPoolRef":"uima-allas {pool}","quotaLimit":"Rajoitus","quotaRemaining":"Jäljelle jääminen","quotaReset":"Nollaus","quotaObserved":"Havaittu","tabAgents":"Agentit","familyGeminiPro":"Gemini Pro","familyGeminiFlash":"Gemini Flash","familyGeminiFlashLite":"Gemini Flash-Lite","geminiTitle":"Gemini-mallien määritys","geminiDesc":"Yhdistä Gemini Pro-, Flash- ja Flash-Lite-nimet Autoon tai tiettyyn katalogin malliin.","compatibilityTitle":"Agenttien yhteensopivuus","compatibilityDesc":"Hallitse valinnaisia yhteensopivuusrajapintoja ja Claude Coden mallien löytämistä.","ollamaMode":"Ollama-emulointi","ollamaModeHint":"Avoin loopback ei koskaan hyväksy todentamatonta LAN-liikennettä.","ollamaOff":"Pois","ollamaLoopback":"Avoin loopbackissa","ollamaKeyRequired":"API-avain vaaditaan","claudeAliases":"Claude Coden löytämisaliakset","claudeAliasesHint":"Julkaise claude/<model>-aliakset, jotta yhdyskäytävän mallivalitsin voi listata katalogin.","mcpServer":"MCP-palvelin","mcpServerHint":"Julkaisee /mcp-päätepisteen agenttiasiakkaille. Uusissa asennuksissa se on aluksi pois päältä.","urlTokensTitle":"Peruutettavat URL-tokenit","urlTokensDesc":"Vain otsikottomille asiakkaille. URL-tokenit voivat vuotaa historiaan ja lokeihin, joten peruuta ne, kun niitä ei enää tarvita.","urlTokenLabel":"Tokenin nimi","createUrlToken":"Luo token","urlTokenOnce":"Kopioi tämä token nyt. Sitä ei näytetä uudelleen.","revoked":"Peruutettu","revoke":"Peruuta","modelScope":"Mallirajaus","modelScopeDesc":"Rajaa tämä avain tiettyihin malli-ID:ihin. Muille malleille reititin ohittaa tämän avaimen.","modelScopeAdd":"Kirjoita malli-ID ja paina Enter","modelScopeEmpty":"Rajausta ei ole asetettu — avain palvelee kaikkia tarjoajansa malleja.","modelScopeClear":"Tyhjennä rajaus","modelScopeBadgeOne":"rajattu · 1 malli","modelScopeBadgeOther":"rajattu · {count} mallia","modelPicker":{"title":"Mitä malleja tämän avaimen tulisi palvella?","hint":"{provider}-avaimesi lisättiin, ja se palvelee tällä hetkellä kaikkia alla olevia malleja. Poista valinta niistä malleista, joihin avainta ei saa käyttää — reititin ohittaa avaimen niiden kohdalla.","count":"{selected}/{total} valittu","allNote":"Kaikki on valittu — mitään ei tallenneta, ja myös myöhemmin luetteloon lisättävät mallit käyttävät tätä avainta.","subsetNote":"Avain rajataan valittuihin malleihin. Voit muuttaa tätä myöhemmin avaimen riviltä.","skip":"Ei nyt","scopedOne":"Avain rajattu 1 malliin","scopedOther":"Avain rajattu {count} malliin","allSaved":"Key serves every catalog model"},"cpTitle":"Asiakasprofiilit","cpDesc":"API-avaimet asiakaskohtaisesti, kullakin järjestelmäkehote, jonka palvelin lisää aina.","cpEmpty":"Ei vielä asiakasprofiileja.","cpNameLabel":"Nimi","cpNamePlaceholder":"esim. Tukibotti","cpPromptLabel":"Järjestelmäkehote (valinnainen)","cpPromptPlaceholder":"Ohjeet, jotka palvelin lisää jokaisen tällä avaimella tehdyn pyynnön alkuun.","cpCreate":"Luo profiili","cpRotate":"Vaihda avain","cpKeyOnce":"Kopioi tämä avain nyt — sitä ei näytetä uudelleen.","cpEnabledAria":"Profiili käytössä","selectKey":"Valitse tämä avain","bulkSelected":"{count} valittu","bulkEnable":"Ota kaikki käyttöön","bulkDisable":"Poista kaikki käytöstä","bulkDelete":"Poista kaikki","bulkDeleteConfirm":"Poistetaanko {count}?","bulkResult":"Päivitetty {done}; epäonnistui {failed}.","bulkDeleteResult":"Poistettu {done}; epäonnistui {failed}.","testProxy":"Test","testingProxy":"Testing…","proxyTestOk":"Proxy works — {ms}ms round trip","proxyTestFail":"Proxy failed: {reason}","editKey":"Muokkaa avainta","editPlatformLocked":"Palveluntarjoajaa ja endpointiä ei voi muuttaa luomisen jälkeen.","editCredentialHint":"Säilytä nykyinen avain jättämällä kenttä tyhjäksi.","editCredentialPartsRequired":"Syötä sekä tilin tunnus että API-tunnus.","editModels":"Muokkaa malleja","editModelsHint":"Choose which catalog models this key may serve. Select everything to clear the scope so future catalog models use it too.","editModelsCustomHint":"Choose which registered endpoint models this key may serve. Select everything to clear the scope.","editModelsSync":"Check catalog updates","editModelsSyncing":"Checking…","editModelsSynced":"Model catalog checked","outlookUnavailable":"Unavailable","outlookNoForecasts":"Forecast unavailable. More recent traffic or reliable quota readings are needed.","outlookCoverage":"Forecasts available for {count} of {total} pools.","outlookTraffic":"{count} successful requests through this instance in the last {minutes} minutes.","outlookMinimumTraffic":"An exhaustion forecast needs at least {count} successful requests within {minutes} minutes.","outlookNotReportedHint":"The provider has not reported a usable request balance and limit. Local usage is shown; remaining quota is unavailable.","outlookMissingResetHint":"The provider did not report a valid reset time. Remaining quota cannot support an exhaustion forecast.","outlookConfidenceHint":"This balance is not reliable enough for an exhaustion forecast.","outlookObserved":"Balance observed: {time}","outlookUnavailablePools":"Unavailable quota pools ({count})","outlookTitle":"Quota outlook","outlookInsufficient":"Not enough data","outlookLowBalance":"Low balance","outlookRunningLow":"Running low soon","outlookStale":"Needs fresh data","outlookUnknown":"Unknown","outlookWithinQuota":"Within quota","outlookResetsFirst":"Not before reset","outlookExhausted":"Already exhausted","outlookLastReported":"requests last reported","outlookRequestsLeft":"requests left","outlookNotReported":"Not reported","outlookRate":"Recent rate","outlookRateValue":"{count} req/min","outlookRunsOut":"May run out","outlookStaleHint":"This balance is old or its window has expired. A fresh provider reading is needed.","outlookError":"Could not load quota forecasts. Raw observations are still available below.","outlookRetry":"Retry","outlookAttention":"Quota pools needing attention: {count}","outlookNoWarnings":"No forecast warnings. Pools with insufficient data may still be limited.","outlookHint":"Rates count successful requests through this instance only, not usage elsewhere. Forecasts require recent provider balances and reported resets. Warnings appear below 20% remaining or when quota may run out within two hours, before reset.","outlookRaw":"Raw quota observations","addCustomModel":"Lisää mukautettu malli","modelId":"Mallin tunniste","modelIdRequired":"Mallin tunniste on pakollinen","modelDisplayName":"Näyttönimi","modelContextWindow":"Konteksti-ikkuna (tokeneita)","modelRateLimits":"Pyyntörajat (valinnainen)","modelSupportsTools":"Tukee työkalukutsuja","modelSupportsToolsHint":"Ota käyttöön, jos tämä malli voi kutsua funktioita ja työkaluja","modelSupportsVision":"Tukee kuvantunnistusta","modelSupportsVisionHint":"Ota käyttöön, jos tämä malli hyväksyy kuvia syötteenä","createModel":"Luo malli","modelAddedSuccess":"Mukautettu malli lisätty onnistuneesti","modelAddFailed":"Mukautetun mallin lisääminen epäonnistui","testModel":"Testaa","testingModel":"Testataan…","testPassedShort":"Läpäisty","testFailedShort":"Epäonnistui","testPassed":"Mallin testi läpäisty ajassa {latency}ms","testFailed":"Mallin testi epäonnistui","testThrottled":"Odota {seconds}s ennen kuin testaat tätä mallia uudelleen.","noModelsForProvider":"Tälle palveluntarjoajalle ei ole määritetty malleja.","testModels":"Testaa malleja","syncAllCatalog":"Catalog: +{inserted} added, ~{updated} updated, -{removed} removed","requestCapLabel":"Request cap","tokenCapLabel":"Token cap","budgetPeriodLabel":"Budget period","budgetPeriodDaily":"Daily","budgetPeriodWeekly":"Weekly","budgetPeriodMonthly":"Monthly","budgetPeriodAuto":"Auto (follow provider)","autoResolvedDaily":"Detected provider cycle: daily","autoResolvedMonthly":"Detected provider cycle: monthly","autoResolvedFallback":"Provider cycle unknown, defaulting to monthly","capUnlimitedPlaceholder":"Rajoittamaton","capEditHint":"Caps reset at the next period boundary, 00:00 UTC. Leave blank for unlimited.","monthlyUsageLine":"{requests} pyyntöä, {tokens} tokenia tässä kuussa","monthlyUsageRequests":"{requests} requests","monthlyUsageTokens":"{tokens} tokens","monthlyUsageRequestsRelative":"{used} / {cap} ({remaining} left) requests","monthlyUsageTokensRelative":"{used} / {cap} ({remaining} left) tokens","monthlyUsageReset":"reset {date}"}`),backups:{title:`Backups`,description:`Save the routing data to a .sql file beside the database, and restore it later.`,excludedNote:`A backup carries your providers, models, routing settings and request history. Accounts, sessions and URL tokens are never included, so a dump holds no password hashes or login tokens and restoring one cannot log you out. Provider keys stay encrypted with this server's ENCRYPTION_KEY: a backup can only be restored on a server that still holds that key.`,selectHint:`Back up everything, or pick the tables you need.`,selectAll:`Select all`,deselectAll:`Clear`,fullBackup:`Full backup`,backupSelected:`Back up selected ({count})`,created:`Backup written to {filename}`,list:`Backups on disk`,empty:`No backups yet`,full:`All tables`,tablesCount:`{count} tables`,manual:`Manual`,scheduled:`Scheduled`,preRestore:`Pre-restore`,download:`Download`,restore:`Restore`,confirmRestore:`Replace data?`,restored:`Restored. The previous data was saved as {filename}.`,delete:`Delete backup`,prevPage:`Previous`,nextPage:`Next`,autoTitle:`Automatic backups`,autoHint:`The server writes a full backup on this cadence.`,time:`Time (HH:mm)`,intervalDays:`Every N days`,path:`Folder`,pathPlaceholder:`backups`,pathHint:`Relative to the database directory. Backups cannot be written outside it.`,save:`Save schedule`,saved:`Saved`},status:{healthy:`terve`,rateLimited:`rajoitettu maksu`,invalid:`Virheellinen`,error:`Virhe`,unchecked:`Ilman valvontaa`},analytics:{title:`Analytiikka`,description:`Pyydä volyymia, viivettä, tokenin käyttöä ja epäonnistumisia.`,range24h:`24h`,range7d:`7d`,range30d:`30d`,range90d:`90d`,requests:`Pyynnöt`,successRate:`Onnistumisprosentti`,inputTokens:`Syötetokenit`,outputTokens:`Tulostokenit`,avgLatency:`Keskiviive`,p95Latency:`P95-viive`,avgTtft:`Keskiarvo TTFT`,estSavings:`Arvioitu säästö`,requestsByProvider:`Palveluntarjoajien pyynnöt`,avgLatencyByProvider:`Keskimääräinen viive palveluntarjoajan mukaan`,ttftByProvider:`Ensimmäinen token-aika palveluntarjoajan mukaan`,ttftEmpty:`Ei ole vielä aikaa ensimmäiseen tokenin tallentamiseen.`,requestsOverTime:`Pyynnöt ajan myötä`,tokensOverTime:`Tokenit ajan myötä`,byModel:`Mallin mukaan`,byPlatform:`Laiturin mukaan`,errors:`Virheet`,errorDistribution:`Virhejakauma`,pinnedRequests:`Kiinnitetyt pyynnöt`,pinnedHonored:`Kunnioitettu`,fallbackAttempts:`Varasuunnitelmat`,savingsHint:"Olet itse asiassa säästänyt ${actual}:n viimeisen {range} aikana. Sen verran samat tokenit maksaisivat maksetuissa API-rajapinnoissa, mallikohtaisesti. Näytetty luku ennustaa vauhtisi viimeisestä {span} datasta täyteen 30 päivään.",savingsHintExact:"Olet itse asiassa säästänyt ${actual}:n viimeisen {range} aikana. Sen verran samat tokenit maksaisivat maksetuissa API-rajapinnoissa, mallikohtaisesti. Näytetty luku on todellinen 30 päivän kokonaismääräsi.",requestsHintPinned:`{pinned} näistä pyynnöistä kiinnitti tietyn mallin nimeltä. {honored} palvelivat naulattua mallia; {failed} epäonnistui toiseen. Loput reititettiin automaattisesti.`,requestsHintAuto:`Kaikki pyynnöt tänä aikana ohjattiin automaattisesti; yksikään asiakas ei kiinnittänyt tiettyä mallia nimeltä.`,requestsHintTypes:`{chat} chatissa ja {embedding} upotuspyynnöissä.`,rangeLabel24h:`24 tuntia`,rangeLabel7d:`7 päivää`,rangeLabel30d:`30 päivää`,rangeLabel90d:`90 päivää`,spanDays:`{count} päivää`,spanHours:`{count} tuntia`,latencyMs:`Viive (ms)`,latency:`Viive`,pinned:`Kiinnitetty`,inTokens:`Tokeneina`,outTokens:`Ulos pelastusmerkit`,saved:`Pelastettu`,message:`Viesti`,time:`Aika`,perModelBreakdown:`Mallikohtainen erittely`,usageByKey:`Käyttö avaimen mukaan`,keyColumn:`Avain`,keyLabelFallback:`Keskeiset #{id}`,errorsByProvider:`Virheet palveluntarjoajittain`,recentErrors:`Viimeaikaiset virheet`,noErrors:`Ei virheitä`,recentCalls:`Viimeaikaiset puhelut`,clientIp:`Asiakas-IP`,clientAgent:`Asiakassovellus`,requestedModelHint:`Pyydetty {model}, toimitettu varasuunnitelmana`,attempts:`Yritykset`,filterAll:`Kaikki`,filterCanceled:`Peruutetut`,providerBreakdown:`Palveluntarjoajakohtainen erittely`,tokensPerSec:`Tok/s`,allProviders:`Kaikki palveluntarjoajat`,requestDetailTitle:`Pyydä #{id}`,failoverLadder:`Failover-tikkaat`,failoverLadderHint:`Jokainen hyppy, jonka tämä pyyntö kulki varasuunnitelmaketjun läpi, järjestyksessä.`,noAttemptTrace:`Tähän pyyntöön ei kirjattu yrityksen jälkeä.`,keyOrdinal:`Keskeiset #{n}`,keyBadge:`Avain #{n}`,attemptTimingHint:`Aloita siirtymä pyynnön alusta · Yrityksen kesto`,requestedModel:`Pyydetty malli`,ttft:`TTFT`,requestsByAgent:`Pyynnöt agenteittain`,sortBy:`Lajittele: {column}`,sortHint:`Lajittelu koskee vain ladattuja {count} riviä`,cacheHitRate:`Välimuistin osumaprosentti`,cacheSavedTokens:`{tokens} tokenia säästetty`,cacheHitRateHint:`{hits} osumaa vs. {misses} ohitusta palvelimen käynnistyksestä · {requests} palveluntarjoajan kutsua vältetty`},logs:{title:`Lokit`,description:`Palvelimen reaaliaikainen loki. Uudet merkinnät ilmestyvät näkyviin sivun ollessa auki.`,pause:`Keskeytä`,resume:`Jatka`,clear:`Tyhjennä loki`,cleared:`Palvelimen loki tyhjennetty`,levelFilter:`Lokitasot`,levels:{debug:`Debug`,info:`Info`,warn:`Varoitus`,error:`Virhe`},countsHint:`Lukumäärät koskevat palvelimen koko lokipuskuria, eivät vain näitä suodattimia vastaavia merkintöjä.`,searchPlaceholder:`Hae lokiviesteistä…`,jumpToLatest:`Siirry uusimpaan`,showMore:`Näytä lisää`,showLess:`Näytä vähemmän`,buffered:`Näytetään {count} / enintään {max} puskuroitua merkintää`,emptyTitle:`Ei vielä lokimerkintöjä`,emptyDescription:`Merkinnät ilmestyvät tähän sitä mukaa kun palvelin kirjoittaa niitä. Laajenna taso-, palveluntarjoaja- tai hakusuodattimia, jos odotit tulostetta.`,noLevelsTitle:`Ei valittuja tasoja`,noLevelsDescription:`Valitse vähintään yksi taso nähdäksesi lokitulosteen.`,loadFailed:`Palvelimen lokia ei voitu ladata.`},playground:{title:`Leikkipaikka`,description:`Lähetä chatin täydennysviesti reitittimen kautta ja katso, mikä operaattori palvelee sitä.`,autoModel:`Auto (varaketju)`,fusionModel:`Fuusio (monimallisynteesi)`,selectModel:`Valitse malli`,searchModels:`Etsi malleja...`,noModelsFound:`Malleja ei löytynyt`,send:`Lähetä`,sending:`Lähetetään...`,clear:`Selvä`,inputPlaceholder:`Kirjoita viesti... (⏎ lähettääkseen, ⇧⏎ uudelle linjalle)`,emptyTitle:`Lähetä viesti aloittaaksesi.`,emptyDescription:`Käyttäen {model}. Vaihda malleja yllä olevassa valitsimessa.`,noModels:`Ei vielä malleja. Lisää API-avain Avain-sivulle täyttääksesi tämän listan.`,copyReply:`Kopioi vastaus`,fallback:`Varasuunnitelma`,fallbacks:`Varasuunnitelmat`,fusionPanel:`Paneeli`,fusionJudge:`Tuomari`,fusionTrace:`{count} mallivastaukset`,fusionFailed:`Ei vastausta`,fusionJudgeSynth:`Lopullisen vastauksen synteettinen`,errorPrefix:`Virhe:`,systemPromptLabel:`Järjestelmäkehote`,systemPromptPlaceholder:`Valinnainen. Lähetetty järjestelmäviestinä ennen keskusteluasi.`,showSettings:`Näytä asetukset`,hideSettings:`Piilota asetukset`,samplingHeading:`Näytteenotto`,samplingHelp:`Kun säädin on pois päältä, käytetään tarjoajan omaa oletusarvoa. Vain käyttöön ottamasi säätimet lähetetään.`,samplingDefault:`Oletus`,temperature:`Lämpötila`,topP:`Top P`,maxTokens:`Tokenien enimmäismäärä`,errorTitle:`Pyyntö epäonnistui`,attach:`Liitä tiedostoja`,attachTooMany:`Voit liittää enintään {count} tiedostoa viestiä kohden.`,attachTooLarge:`{name} on liian suuri. Raja on {max}.`,attachUnsupported:`{name} ei ole tuettu. Liitä kuvia (PNG, JPEG, WebP, GIF) tai tekstitiedostoja (TXT, MD, CSV, JSON, LOG).`,attachFailed:`Tiedostoa {name} ei voitu lukea.`,noVisionBadge:`Ei kuvia`,visionWarning:`{model} ei hyväksy kuvia. Valitse kuvasyötteen hyväksyvä malli tai Auto.`,dictate:`Sanele`,dictationStop:`Lopeta tallennus`,dictationTranscribing:`Litteroidaan…`,dictationUnavailable:`Lisää äänimallien tarjoajia, jotta voit käyttää sanelua.`,dictationModel:`Sanelumalli`,dictationFailed:`Litterointi epäonnistui: {reason}`,artifactOpen:`Avaa esikatselu`,artifactPreview:`Esikatselu`,artifactCode:`Koodi`,artifactClose:`Sulje esikatselu`,artifactDownload:`Lataa`,artifactReload:`Lataa esikatselu uudelleen`,artifactHtml:`HTML-sivu`,artifactSvg:`SVG-kuva`,artifactLines:`riviä`,artifactResize:`Muuta esikatselun kokoa`},playgroundSessions:{heading:`Keskustelut`,newConversation:`Uusi keskustelu`,showSidebar:`Näytä keskustelut`,hideSidebar:`Piilota keskustelut`,empty:`Ei vielä tallennettuja keskusteluja.`,untitled:`Nimetön keskustelu`,rename:`Nimeä uudelleen`,renamePlaceholder:`Keskustelun nimi`,messageCount:`{count} viestiä`,justNow:`juuri nyt`,minutesAgo:`{count} min sitten`,hoursAgo:`{count} t sitten`,daysAgo:`{count} pv sitten`,loadFailed:`Keskustelua ei voitu avata.`,renameFailed:`Keskustelua ei voitu nimetä uudelleen.`,deleteFailed:`Keskustelua ei voitu poistaa.`,actions:`Keskustelun toiminnot`,newChat:`Uusi keskustelu`},embeddings:{title:`Mallit`,description:`Upotukset siirtyvät vain perheen sisällä: sama malli, jota toinen palveluntarjoaja palvelee. Eri mallien vektorit eivät sovi yhteen, joten reititin ei koskaan vaihda malleja kanssasi.`,defaultBadge:`Oletus · Auto`,makeDefault:`Tee oletus`,moveUp:`Siirry eteenpäin`,moveDown:`Siirry alas`,usageToday:`{count} tänään`,usageMonth:`{count} Tok tässä kuussa`,autoDescription:`model: "auto" POST /v1/embeddings reiteillä oletusperheeseen. Perheen (tai palveluntarjoajan mallitunnuksen) nimeäminen kiinnittää kyseisen perheen; Sen sisällä olevat palveluntarjoajat kokeillaan asianmukaisesti.`,unsavedChanges:`Tallentamattomat muutokset`,saveChanges:`Tallennusmuutokset`,savingChanges:`Säästäminen...`,tokMax:`{tokens} tok max`,emptyTitle:`Ei vielä upotusmalleja`,emptyDesc:`Upotusperheet näkyvät tässä, kun lisäät palveluntarjoajan avaimen, joka tukee upotuksia.`,dragToReorder:`Drag reorder-palveluntarjoajalle`},fusion:{title:`Fuusio`,description:`Mallipaneeli vastaa rinnakkain, sitten tuomari kokoaa yhden vahvemman vastauksen. Käytä sitä kutsumalla mallin API "fusion".`,panelSource:`Paneelin lähde`,panelSourceHelp:`Mistä paneelimallit tulevat, kun pyyntö ei määrittele omaa malliaan.`,mode:{auto:`Auto (Varaketju)`,autoHelp:`Valitse monipuolinen joukko malleja Varasuunnitelmaketjustasi, jotka on järjestetty aktiivisen reititysstrategiasi mukaan.`,explicit:`Eksplisiittinen paneeli`,explicitHelp:`Käytä aina alla valitsemiasi malleja.`},panelModels:`Paneelimallit`,selectedCount:`{count} valituista {max}`,noModels:`Yhtään mallia ei ole vielä yhdistetty. Lisää API-avain ja ota mallit käyttöön Vara-ketjussa.`,panelSize:`Paneelikoko`,panelSizeHelp:`Kuinka monta erilaista mallia valitaan automaattisesti (1–{max}).`,judge:`Tuomarimalli`,judgeHelp:`Malli, joka yhdistää paneelin vastaukset yhdeksi. Auto käyttää saatavilla olevaa huippumalliasi.`,judgeAuto:`Auto (paras saatavilla oleva)`,strategy:`Strategia`,strategySynthesize:`Synteesi — yhdistä paneeli yhdeksi vastaukseksi`,strategyBestOf:`Paras — palauttaa vahvin vastaus (ei tuomarin päätöstä)`,strategySynthesizeShort:`Synteesi`,strategyBestOfShort:`Parhaat`,exposePanel:`Paljastuspaneelin yksityiskohdat`,exposePanelHelp:`Liitä kunkin mallin vastaus ja tuomarin metatiedot vastauksen x_fusion kentän alle.`,howToUse:`Käyttöohje`,howToUseHelp:`Lähetä tavallinen chat-pyyntö mallin "fusion" kanssa. Nämä asetukset ovat oletusasetukset; Mikä tahansa pyyntö voi ohittaa ne "fuusio"-kentällä.`,unsavedChanges:`Tallentamattomat muutokset`,save:`Tallenna`,searchPlaceholder:`Search models…`,providerFilterLabel:`Filter by provider`,providerAll:`All providers`,noMatch:`No models match your search.`},premium:{title:`Premium`,description:`Live-malliluettelo, jokaisella laitteella.`,loading:`Ladataan...`,checkForUpdates:`Tarkista päivitykset`,syncing:`Synkronoin...`,catalogFeed:`Katalogisyöte`,liveFeed:`Live-lähetys`,monthlySnapshot:`Kuukausikuva`,lastChecked:`Viimeksi tarkistettu: {when}`,liveDescription:`Uudet ilmaiset mallit, kiintiömuutokset ja erikoiskyvyn korjaukset saapuvat tänne muutaman tunnin sisällä toimituksesta. Sovellus tarkistaa sen automaattisesti kahdesti päivässä; Ei mitään tekemistä.`,snapshotDescription:`Ilmainen taso: luettelo päivittyy kuukausittaisesta snapshotista, tarkistettuna automaattisesti kahdesti päivässä. Premium vaihtaa tämän live-lähetykseen, joka päivitetään 2–3 päivän välein.`,lastSyncProblem:`Viimeinen synkronointiongelma: {error}`,license:`Lisenssi`,planAnnual:`Premium Annual`,planLifetime:`Premium Lifetime`,expired:`Vanhentunut`,inactive:`Passiivinen`,lifetimeNote:`Elinikäinen ajokortti: ei koskaan vanhene.`,renewsOn:`Jatka {date}.`,willNotRenew:`Ei uusiudu. Premium {date} asti, sitten tämä asennus palautuu ilmaiseen kuukausikatalogiin.`,keyInactive:`Tämä avain ei ole enää aktiivinen. Sovellus jatkaa työskentelyä ilmaisen kuukausikatalogin parissa.`,manageSubscription:`Hallinnoi tilausta`,openingPortal:`Avataan...`,removeKey:`Poista avain tästä laitteesta`,manageHint:`Hallinnoi tilausta avaa Stripe:n laskutusportaalin: peruuta, päivitä korttisi tai lataa laskut. Avaimen poistaminen poistaa vain tämän laitteen käytöstä; Ostoksesi on koskematon.`,licenseKey:`Lisenssiavain`,licenseKeyPlaceholder:`fla_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`,activate:`Aktivoi`,activating:`Aktivoidaan...`,keyHint:`Avaimesi löytyy ostosähköpostistasi ja jälkikassasivulta. Kadotitko sen?`,recoverKey:`Palauta se verkkosivuilta`,upsellTitle:`Mene elämään 19 dollarilla vuodessa`,upsellDescription:`Uusia ilmaisia malleja heti kun ne ovat olemassa, eivätkä 30 päivän päästä. Yksi avain, jokainen laite. Peruuta milloin tahansa; Reititin pysyy vapaana ikuisesti.`,goPremium:`Go Premium`,bundled:`niputettu`,planGeneric:`Premium`},languages:{en:`English`,"zh-CN":`中文 (简体)`,es:`Español`,fr:`Français`,"pt-BR":`Português (Brasil)`,it:`Italiano`,hi:`हिन्दी`,ar:`العربية`,bn:`বাংলা`,ru:`Русский`,ur:`اردو`,id:`Bahasa Indonesia`,de:`Deutsch`,ja:`日本語`,sw:`Kiswahili`,mr:`मराठी`,te:`తెలుగు`,tr:`Türkçe`,ta:`தமிழ்`,vi:`Tiếng Việt`,ko:`한국어`,fa:`فارسی`,th:`ไทย`,gu:`ગુજરાતી`,pl:`Polski`,uk:`Українська`,kn:`ಕನ್ನಡ`,ml:`മലയാളം`,or:`ଓଡ଼ିଆ`,my:`မြန်မာဘာသာ`,pa:`ਪੰਜਾਬੀ`,ro:`Română`,nl:`Nederlands`,ms:`Bahasa Melayu`,tl:`Filipino`,ha:`Hausa`,yo:`Yorùbá`,ig:`Igbo`,am:`አማርኛ`,uz:`Oʻzbekcha`,az:`Azərbaycanca`,si:`සිංහල`,ne:`नेपाली`,km:`ខ្មែរ`,el:`Ελληνικά`,cs:`Čeština`,hu:`Magyar`,sv:`Svenska`,he:`עברית`,da:`Dansk`,fi:`Suomi`,no:`Norsk`,sk:`Slovenčina`,bg:`Български`,hr:`Hrvatski`,sr:`Српски`,lt:`Lietuvių`,"zh-TW":`中文 (繁體)`,"pt-PT":`Português (Portugal)`,ka:`ქართული`},errors:{boundaryTitle:`Jokin meni pieleen`,boundaryDescription:`Kojelauta kohtasi odottamattoman virheen. Tietosi ovat turvassa. Yritä uudelleen tai palaa mallisivulle.`,tryAgain:`Yritä uudestaan`,goHome:`Takaisin malleihin`},notFound:{title:`Sivua ei löydy`,description:`Tätä sivua ei ole olemassa tai se on saattanut siirtyä.`},setup:{title:`Aloitus`,subtitle:`Kolme vaihetta ensimmäisen pyynnön reitittämiseen.`,progress:`{done} of {total}`,step1Title:`Lisää palveluntarjoajan avain`,step1Desc:`Yhdistä vähintään yksi palveluntarjoajatili. Ilmaiset avaimet toimivat.`,step1Cta:`Lisää avaimet`,step2Title:`Lähetä testipyyntö`,step2Desc:`Valitse mikä tahansa malli Playgroundilta ja sano hei.`,step2Cta:`Avoin leikkikenttä`,step3Title:`Yhdistä sovelluksesi`,step3Desc:`Käytä yhtenäistä API-avaintasi minkä tahansa OpenAI-yhteensopivan asiakkaan kanssa.`,copyKey:`Kopioi API avain`,copyUrl:`Kopiopohja URL`,copiedKey:`API avain kopioitu lehtiöön`,copiedUrl:`Perus URL kopioitu lehtiöön`},palette:{title:`Komentopaletti`,placeholder:`Hakusivuja, malleja, toimintoja...`,empty:`Ei tuloksia`,groupPages:`Sivut`,groupActions:`Toimet`,groupModels:`Mallit`,toggleTheme:`Kytke pimeä tila päälle`},validation:{required:`Vaaditaan`,url:`Syötä kelvollinen URL, joka alkaa http:// tai https://`,email:`Syötä kelvollinen sähköpostiosoite`,passwordMin:`Vähintään {min} hahmoa`},agents:{title:`Koodausagentit`,description:`Yhdistä koodaustyökalut yhteen ilmaisten mallien yhdyskäytävään generoidulla, varmuuskopiot turvaavalla kokoonpanolla.`,apiKey:`API-avain`,quickstartTitle:`Pika-aloitus`,quickstart:`Nopein tapa: määritä Claude Code live-katalogista.`,currentKey:`Nykyinen yhtenäinen avain:`,seenRecently:`Nähty äskettäin`,setupLabel:`Automaattinen määritys`,setupHint:`Kirjoittaa tämän työkalun asetustiedoston puolestasi ja osoittaa sen tähän yhdyskäytävään.`,setupGuideHint:`Näyttää työkalun määritysvaiheet; tiedostoja ei kirjoiteta.`,manualLabel:`Manuaalinen yhteys`,manualHint:`Perus-URL ja avain työkalun omiin asetuksiin.`,endpoint:`Päätepiste`,documentation:`Dokumentaatio`,descriptions:{claude:`Anthropic's terminal agent: it plans, edits files, and runs commands in your repo.`,codex:`OpenAI's terminal agent, which runs your task in a local sandbox first.`,cline:`A VS Code extension that asks you to approve every edit and command.`,continue:`A VS Code and JetBrains extension for inline autocomplete and chat while you type.`,aider:`A command-line pair programmer that turns each change into its own git commit.`,opencode:`A provider-agnostic terminal agent with a full-screen text interface.`,goose:`Block's local agent, extended with MCP servers to reach past your code.`,qwen:`A Gemini CLI fork tuned for Qwen models and large repositories.`,roo:`A VS Code extension with switchable modes: architect, coder, debugger.`,kilo:`A VS Code extension merging Roo and Cline, with an orchestrator that splits up work.`,crush:`Charm's terminal agent, written in Go, with one session per project.`,dsh:`DeepSeek's harness, which keeps every provider as a route you can switch between.`,mimo:`Xiaomi's terminal agent, an OpenCode fork that takes any OpenAI-compatible provider.`,cursor:`The AI-first editor; it calls through Cursor's cloud, so it needs a public URL.`,generic:`Anything else that speaks the OpenAI API, set up by hand from a base URL and key.`,atomcode:`AtomGit's terminal agent, written in Rust, that takes any OpenAI-compatible endpoint.`,openclaw:`Aina päällä oleva henkilökohtainen avustaja, joka vastaa omalta koneeltasi WhatsApp-, Telegram-, Discord- ja muissa sovelluksissa.`,hermes:`Nous Research -yhtiön itseään kehittävä agentti, jolla on pysyvä muisti ja taitoja, terminaalissa tai chat-sovelluksissa.`,pi:`Minimalistinen terminaaliagentti, jota muokkaat omilla laajennuksilla, taidoilla ja kehotepohjilla.`}},update:{available:`New version available`,whatsNew:`What's new in v{version}`,publishedOn:`Published {date}`,noNotes:`No release notes were published for this version.`,openRelease:`Open release page`,dismissVersion:`Dismiss this version`,dismiss:`Dismiss`},freeTier:{poolsToggle:`Free-tier pools ({count})`,poolsToggleBare:`Free-tier pools`,summary:`{pools} pools · {budget} tokens/mo counted once per pool · {credits} credits-based · {unpublished} unpublished`,pool:`Pool`,models:`Models`,budget:`Monthly budget`,kind:`Kind`,kindDocumented:`Documented`,kindCredits:`Credits`,kindUnpublished:`Unpublished`,remaining:`Remaining`,resetAt:`Resets at`,disabledModels:`({count} off)`,metricTokens:`tokens`,metricRequests:`requests`,metricCredits:`credits`,metricNeurons:`neurons`,metricOther:`units`,empty:`No enabled models with free-tier budget data.`,poolLabel:`{platform} · shared {scope} pool`,poolLabelBare:`{platform} · shared pool`,poolModels:`{count} models`,poolBudget:`{budget}/mo`,poolBudgetTitle:`One monthly allowance for the whole pool, scaled by the {count} usable keys on this platform. Every model listed under it draws from the same budget.`,poolNoQuota:`no published quota`,poolResets:`resets {time}`,independentBudgets:`independent budgets`},chains:{title:`Fallback chains`,description:`Named chains, each callable as auto:<name> in /v1/models.`,count:`{count} chains`,active:`Active`,default:`Default`,activate:`Activate`,activateHint:`Make this the chain the table below edits and the one auto routes through`,deleteHint:`Delete this chain`,deleteConfirm:`Delete chain "{name}"?`,create:`Create`,createPlaceholder:`Chain name`,createFailed:`Could not create the chain.`,nameRules:`Up to 20 characters: letters, digits, hyphens and underscores.`,startEmpty:`Start empty`,startEmptyHint:`Create the chain with no models in it, and keep new catalog models out of it. Unchecked, it starts as a copy of the default chain.`,curated:`Curated`,curatedHint:`New catalog models are not added to this chain automatically.`,renameHint:`Nimeä tämä ketju uudelleen`,renameConfirm:`Nimetäänkö ketju "{oldName}" nimelle "{name}"? Kutsua auto:{oldName} käyttävien asiakkaiden on vaihdettava kutsuun auto:{name}.`,renamePlaceholder:`Uusi ketjun nimi`,renameFailed:`Ketjua ei voitu nimetä uudelleen.`},notifications:{catalogAdded:`{count} new models added from catalog`,catalogAddedFrom:`{count} new models added for {provider}`,catalogRemoved:`{count} models removed from catalog`,catalogRemovedFrom:`{count} models removed for {provider}`,catalogUpdated:`{count} models updated from latest catalog`,catalogUpdatedFrom:`{count} models updated for {provider}`,discoverAdded:`{count} new models from provider {provider}`,discoverRemoved:`{count} models removed from provider {provider}`,degraded:`Degraded mode active — only {healthy}/{total} providers healthy ({pct}%)`,updateAvailable:`Update available: v{version}`},routingStrip:{canceled:`Canceled`,title:`Live routing`,mode:`Mode`,processing:`Processing…`,idle:`Waiting for a request…`,failed:`Failed`,afterAttempts:`Success after {n} attempts`,activeCount:`{n} active`}};export{e as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={nav:{models:`Modèles`,playground:`Bac à sable`,keys:`Clés`,analytics:`Analytique`,premium:`Premium`,upgrade:`Mise à niveau`,settings:`Paramètres`,signOut:`Se déconnecter`,openMenu:`Ouvrir le menu de navigation`,switchLight:`Passer au thème clair`,switchDark:`Passer au thème sombre`,switchToChinese:`Passer au chinois`,switchToEnglish:`Passer à l'anglais`,modelsMenu:`Parcourir les types de modèles`,agents:`Agents`,logs:`Journaux`,analyticsMenu:`Pages d'analytique`,notifications:`Notifications`,noNotifications:`No notifications yet`},auth:{createYourAccount:`Créez votre compte`,signIn:`Se connecter`,email:`E-mail`,password:`Mot de passe`,emailPlaceholder:`vous@exemple.com`,passwordPlaceholderSetup:`au moins 8 caractères`,passwordPlaceholderLogin:`votre mot de passe`,setupDescription:`Définissez l'e-mail et le mot de passe qui protégeront ce tableau de bord.`,loginDescription:`Connectez-vous pour gérer vos clés, le routage et l'analytique.`,createAccount:`Créer un compte`,creating:`Création…`,signingIn:`Connexion…`,loading:`Chargement…`,newPasswordAutoComplete:`new-password`,currentPasswordAutoComplete:`current-password`,serverUnreachableBefore:`Impossible de joindre le serveur. Vérifiez que le backend est démarré (`,serverUnreachableAfter:`).`,setupCode:`Code de configuration`,setupCodePlaceholder:`code des journaux du serveur`,setupCodeHint:`La configuration à partir d'un autre appareil nécessite le code à usage unique imprimé dans les journaux du serveur au démarrage.`,changePassword:`Changer le mot de passe`,changeEmail:`Changer l'adresse e-mail`,forgotPassword:`Mot de passe oublié ?`,currentPassword:`Mot de passe actuel`,newPassword:`Nouveau mot de passe`,newEmail:`Nouvel e-mail`,resetCode:`Code de réinitialisation`,resetCodePlaceholder:`code affiché dans les journaux du serveur`,resetCodeHint:`Le code se trouve dans le journal du serveur. Il n'est jamais envoyé par e-mail.`,forgotPasswordDescription:`Cliquez sur le bouton ci-dessous pour générer un code de réinitialisation. Le code est écrit dans le journal du serveur, jamais envoyé par e-mail. Saisissez-le ici pour définir un nouveau mot de passe.`,requestResetCode:`Envoyer le code de réinitialisation`,requestingResetCode:`Envoi…`,resetPassword:`Réinitialiser le mot de passe`,resettingPassword:`Réinitialisation…`,changingPassword:`Modification…`,changingEmail:`Modification…`,backToLogin:`Retour à la connexion`,passwordChanged:`Mot de passe modifié avec succès.`,emailChanged:`Adresse e-mail modifiée avec succès.`,passwordReset:`Mot de passe réinitialisé avec succès. Veuillez vous connecter.`,resetCodeDockerHint:`Vous utilisez Docker ? Le code se trouve dans le journal du conteneur : docker logs <container>.`,desktopSessionFailed:`Le tableau de bord n'a pas pu se connecter au serveur local. Quittez SRouter et rouvrez-le.`},common:{save:`Enregistrer`,saving:`Enregistrement…`,cancel:`Annuler`,discard:`Abandonner`,delete:`Supprimer`,confirm:`Confirmer`,copy:`Copier`,copied:`Copié`,copyFailed:`Copie impossible — sélectionnez le texte et copiez-le manuellement`,show:`Afficher`,hide:`Masquer`,apply:`Appliquer`,applied:`Appliqué`,applying:`Application…`,active:`Actif`,inactive:`Inactif`,never:`jamais`,loading:`Chargement…`,error:`Erreur`,noData:`Aucune donnée pour l'instant`,unsavedChanges:`Modifications non enregistrées`,saveChanges:`Enregistrer les modifications`,remove:`Supprimer`,unknownError:`Erreur inconnue`,model:`Modèle`,provider:`Fournisseur`,success:`Réussite`,failures:`Échecs`,dismiss:`Fermer`,status:`Statut`},settings:{title:`Paramètres`,language:`Langue`,theme:`Thème`,themeSystem:`Système`,themeLight:`Clair`,themeDark:`Sombre`,searchLanguage:`Rechercher des langues…`,noLanguages:`Aucune langue trouvée`,sections:`Sections des paramètres`,sectionGeneral:`Général`,sectionCompression:`Compression`,sectionAdvanced:`Avancé`,sectionPreview:`Aperçu`,generalDescription:`Langue et apparence de ce tableau de bord.`,advancedDescription:`Seuils et interrupteurs de sécurité du pipeline de compression.`,compressionTitle:`Compression des prompts`,compressionDescription:`Réduisez la taille des requêtes avant le routage tout en préservant le code, les erreurs, les chemins, les nombres et les définitions d'outils.`,compressionHelp:`Réécrit chaque requête avant son envoi à un fournisseur afin qu'elle utilise moins de tokens. Le code, les erreurs, les chemins de fichiers et les nombres sont protégés, et toute réécriture qui les altère est abandonnée.`,compressionMode:`Mode`,compressionModeHelp:`Désactivée envoie les requêtes telles quelles. Sans perte supprime uniquement le texte dupliqué et inutile. Standard raccourcit en plus la sortie des outils. Agressive condense également les échanges plus anciens.`,compressionOff:`Désactivée`,compressionLossless:`Sans perte`,compressionStandard:`Standard`,compressionAggressive:`Agressive`,compressionLossy:`Avec perte`,compressionEngines:`Moteurs`,compressionEnginesHelp:`Chaque moteur correspond à une étape de réécriture. Le mode détermine les moteurs exécutés ; en désactiver un ici l'exclut de tous les modes.`,engineDedup:`Blocs répétés`,engineDedupHelp:`Remplace un bloc de texte déjà apparu plus tôt dans la conversation par une courte référence à celui-ci.`,engineLite:`Nettoyage des espaces`,engineLiteHelp:`Supprime les espaces en fin de ligne, fusionne les lignes vides répétées et retire les messages système dupliqués.`,engineReadLifecycle:`Lectures de fichiers remplacées`,engineReadLifecycleHelp:`Remplace une lecture de fichier antérieure par une note dès que le même fichier est relu ou modifié par la suite.`,engineToolfilter:`Filtre de sortie des outils`,engineToolfilterHelp:`Raccourcit la sortie des commandes et des outils, comme les builds, les tests et les installations. Les lignes d'erreur et de trace d'appels sont toujours conservées.`,engineJsoncompact:`Tables JSON`,engineJsoncompactHelp:`Réencode les longs tableaux JSON partageant les mêmes champs sous forme de table compacte. L'opération est réversible, donc rien n'est perdu.`,engineRelevance:`Filtre de pertinence`,engineRelevanceHelp:`Supprime les phrases les moins liées au dernier message lorsqu'un message dépasse son budget de taille.`,engineAging:`Échanges plus anciens`,engineAgingHelp:`Condense les échanges antérieurs aux plus récents en un court résumé qui conserve les chemins, les erreurs et les décisions.`,engineHardBudget:`Plafond de tokens`,engineHardBudgetHelp:`Retire les lignes les moins utiles jusqu'à ce que la requête tienne dans l'objectif de tokens.`,compressionAutoTrigger:`Déclenchement automatique au-delà des tokens estimés`,compressionAutoTriggerHelp:`Les requêtes estimées au-dessus de ce nombre de tokens passent automatiquement en Agressive. Laissez vide pour désactiver.`,compressionPrefixFreeze:`Figer les préfixes de prompt récurrents`,compressionPrefixFreezeHelp:`Laisse un prompt système intact une fois que le même texte a été vu trois fois, afin que la mise en cache des prompts côté fournisseur continue de fonctionner.`,compressionTrustProjectFilters:`Faire confiance aux fichiers de filtres du projet`,compressionTrustProjectFiltersHelp:`Charge aussi les filtres de sortie d'outils depuis le répertoire de travail. Désactivé par défaut, car un dépôt pourrait s'en servir pour masquer de la sortie au modèle.`,compressionStats:`Taille économisée`,compressionEstimatedTokensSaved:`Tokens estimés économisés`,compressionPreview:`Aperçu en direct`,compressionPreviewDescription:`Envoyez un corps de requête dans le pipeline pour voir ce qu'un fournisseur recevrait.`,compressionPreviewPlaceholder:`Collez le JSON de la requête ou du texte brut`,compressionRunPreview:`Lancer l'aperçu`,updatesTitle:`Mises à jour`,checkForUpdates:`Vérifier les mises à jour`,lastChecked:`Dernière vérification : {when}`,currentVersion:`Build actuel :`,updateAvailable:`Une mise à jour est disponible`,changelog:`Nouveautés`,upToDate:`À jour`,buildAhead:`Ce build est en avance sur la branche main officielle.`,buildDiverged:`Ce build a divergé de la branche main officielle.`,buildUnknown:`Ce build personnalisé ne peut pas être comparé à la branche main officielle.`,notGitInstall:`Cette installation ne contient aucune information de commit.`,checkFailed:`Impossible de rechercher les mises à jour.`,contactsGithub:`Les vérifications sont effectuées manuellement et contactent GitHub.`,autoUpdateCheck:`Vérification automatique des mises à jour`,autoUpdateCheckHelp:`Consulte GitHub une fois par jour pour détecter une nouvelle version et affiche un rappel. Désactivé par défaut.`,openReleases:`Ouvrir les versions GitHub`,restartAfterUpdate:`Redémarrez SRouter une fois le build terminé.`,syncSchedule:`Model Sync`,syncScheduleHint:`How often the model catalog is refreshed from the server`,syncIntervalOff:`Off`,syncInterval6h:`Every 6h`,syncInterval12h:`Every 12h`,syncInterval24h:`Every 24h`},models:{title:`Modèles`,chatModelsTab:`Modèles de chat`,fusionTab:`Fusion`,embeddingsTab:`Embeddings`,imageTab:`Image`,videoTab:`Vidéo`,audioTab:`Audio`,imageDesc:`Modèles de génération texte-image.`,videoDesc:`Modèles de génération texte-vidéo.`,audioDesc:`Modèles de synthèse et de reconnaissance vocales.`,mediaHint:`Générer via`,mediaEmpty:`Aucun modèle pour l'instant. Ils se synchronisent depuis le catalogue.`,ttsHeading:`Synthèse vocale`,sttHeading:`Reconnaissance vocale`,sttHint:`Transcrire via`,sttEmpty:`Aucun modèle de reconnaissance vocale pour l'instant. Ils se synchronisent depuis le catalogue.`,newBadge:`Nouveau`,monthlyTokenBudget:`Budget mensuel de tokens`,remaining:`restant`,used:`utilisés`,usedScopeHint:`Uniquement les requêtes de chat, depuis le début de ce mois civil, cumulées sur tous les modèles de la chaîne active, endpoints personnalisés compris. Le trafic envoyé à un fournisseur en dehors de SRouter n'est pas compté.`,legendRemainingTitle:`Restant / budget mensuel de {name} ({platform})`,noPublishedQuota:`+{count} sans quota publié`,noPublishedQuotaTitle:`Ces modèles n'ont pas de budget mensuel de jetons documenté ; il n'y a donc pas de restant à afficher.`,of:`sur`,showAllModels:`Afficher les {count} modèles`,showLess:`Afficher moins`,vision:`Vision`,visionTitle:`Accepte les images en entrée`,tools:`Outils`,toolsTitle:`Émet des appels d'outils structurés, il est donc éligible aux requêtes avec outils`,retired:`Retiré`,penalty:`pénalité de −{value}`,obs:`{count} obs`,tokPerMonth:`{count} tok/mois`,rpmLimit:`{count} rpm`,rpdLimit:`{count} rpd`,noKey:`aucune clé`,dragToReorder:`Glisser pour réordonner`,dragToReorderGroup:`Glisser pour réorganiser le modèle`,moveToRank:`Aller au rang`,providerCount:`{count} fournisseurs`,servedBy:`Fourni par {providers}`,viewProviders:`Voir les fournisseurs`,backToModels:`Retour aux modèles`,providersHeading:`Fournisseurs de ce modèle`,codeSnippetHeading:`Utiliser ce modèle`,modelNotFound:`Ce modèle n'est pas disponible, ou il n'a aucun fournisseur configuré.`,providerIdsHeading:`Identifiants du modèle par fournisseur`,providerIdsHint:`Envoyez l'identifiant unifié du modèle pour basculer entre tous les fournisseurs, ou un identifiant spécifique à un fournisseur pour épingler ce fournisseur.`,copyModelName:`Copier le nom du modèle`,settingsHeading:`Paramètres du fournisseur`,settingsHint:`Les modifications locales apportées aux modèles du catalogue sont conservées lors des synchronisations du catalogue. Les modèles du catalogue supprimés restent supprimés jusqu'à ce que vous les rajoutiez via la configuration.`,catalogModel:`catalogue`,customModel:`personnalisé`,discoveredModel:`découvert`,localOverride:`remplacement local`,displayName:`Nom affiché`,sizeLabel:`Niveau de capacité`,sizeLabelHint:`Frontier/Large/Medium/Small déterminent l'axe d'intelligence : un niveau supérieur prime toujours sur un niveau inférieur, et au sein d'un même niveau le rang d'intelligence continue de faire bouger le score. Un modèle sans niveau reconnu obtient le score le plus bas sur cet axe, mais l'intelligence n'est qu'un axe sur trois : une bonne fiabilité et une bonne vitesse peuvent quand même lui valoir le routage.`,sizeLabelNone:`Aucun (score d'intelligence le plus bas)`,contextWindow:`Contexte`,inFallback:`Dans la chaîne`,saveModelSettings:`Enregistrer les paramètres du modèle`,aggregateBudget:`{count}/mois`,aggregateBudgetTitle:`Total de tokens gratuits par mois pour l'ensemble des fournisseurs de ce modèle`,rateRpm:`{count} RPM`,rateRpd:`{count} RPD`,rateTitle:`Limité en débit : pas de budget mensuel de tokens fixe`,rateLimitUsage:`{kind} {used}/{limit}`,rateLimitUsageTitle:`Utilisation de la limite de débit sur la fenêtre de temps (utilisé / limite) pour le fournisseur ayant le plus de marge`,splitOut:`Ne pas fusionner cette copie`,splitOutHint:`Donne à la copie de ce fournisseur sa propre entrée séparée au lieu de la fusionner dans le modèle unifié. Vous pourrez la re-fusionner depuis la page de la copie.`,splitUndo:`Re-fusionner`,splitUndoHint:`Cette copie est gardée séparée de son modèle unifié. Re-fusionnez-la pour basculer à nouveau entre tous ses fournisseurs.`,splitBadge:`gardée séparée`,noData:`aucune donnée`,noDataTitle:`Aucune requête enregistrée pour l'instant — la fiabilité et la vitesse de ce fournisseur ne sont pas mesurées.`,bestOfN:`meilleur de {count}`,perProviderScores:`Scores par fournisseur : {list}`,columnModel:`Modèle`,columnOn:`Actif`,noModelsBefore:`Aucun modèle disponible. Ajoutez des clés API sur la `,keysPageLink:`page Clés`,noModelsAfter:` au préalable.`,hiddenNoKeys:`Masqués (aucune clé) : {platforms}`,searchPlaceholder:`Rechercher un modèle ou un fournisseur…`,clearSearch:`Effacer la recherche`,ctxAny:`Tout contexte`,ctxBadge:`{size} ctx`,ctxTitle:`Fenêtre de contexte`,copyModelId:`Copier l'identifiant du modèle`,showingCount:`{shown} sur {total} modèles`,clearFilters:`Effacer les filtres`,noMatches:`Aucun modèle ne correspond à vos filtres.`,noModelsTitle:`Aucun modèle configuré`,intelligenceRank:`Intelligence`,speedRank:`Vitesse`,rankHint:`Classement dans le catalogue — 1 est le meilleur.`,limitRpm:`RPM`,limitRpd:`RPD`,limitTpm:`TPM`,limitTpd:`TPD`,limitRpmHint:`Requêtes par minute. Laissez vide pour aucune limite.`,limitRpdHint:`Requêtes par jour. Laissez vide pour aucune limite.`,limitTpmHint:`Tokens par minute. Laissez vide pour aucune limite.`,limitTpdHint:`Tokens par jour. Laissez vide pour aucune limite.`,usageThisMonth:`Utilisation mensuelle`,usageEmpty:`Aucune requête ce mois-ci pour l'instant.`,usageRequestsMonth:`{count} req. ce mois-ci`,aliasMergeHeading:`Fusionner les alias de modèles`,aliasMergeHint:`Les requêtes vers l'identifiant de modèle unifié sont aussi servies via ces alias de fournisseur personnalisé (par exemple custom:my-alias).`,aliasMergeAdd:`Ajouter`,aliasMergeRemove:`Supprimer`,bulkToggle:`Activer ou désactiver tous les modèles affichés`,enableAll:`Tout activer`,disableAll:`Tout désactiver`,enableAllHint:`Activer tous les modèles affichés, puis enregistrer`,disableAllHint:`Désactiver tous les modèles affichés, puis enregistrer`,enabledOfShown:`{enabled} des {shown} modèles affichés sont dans la chaîne`},strategies:{explore:`Explorer les modèles non mesurés`,exploreHint:`Donne aux modèles sans données de fiabilité ni de vitesse 10 % de chances d'être essayés en premier, pour qu'ils se constituent un historique. C'est votre vraie requête qui part : elle peut donc être traitée par un modèle non testé. Pour un endpoint personnalisé, utilisez « Tester l'endpoint » sur la page Clés, sans trafic réel.`,keySelection:`Choix de la clé`,keySelectionAuto:`Auto`,keySelectionLeastRemaining:`Reste le moins`,keySelectionHint:`Comment choisir entre plusieurs clés d'un même fournisseur. Auto conserve la rotation actuelle ; Reste le moins classe les clés selon le quota observé et essaie d'abord celle qui en a le plus.`,cooldownCeiling:`Refroidissement automatique maximal`,cooldownCeilingHint:`Limite la durée pendant laquelle les propres estimations du routeur peuvent écarter une paire clé et modèle en échec. L'échelle monte normalement à 2 min, 10 min, 1 h, 24 h, et les erreurs de crédit ou de palier écartent pour une journée. Les délais de nouvelle tentative indiqués par le fournisseur ne sont jamais raccourcis.`,cooldownCeilingDefault:`Par défaut (jusqu'à 24 h)`,cooldownCeiling10m:`10 minutes`,cooldownCeiling1h:`1 heure`,cooldownCeiling6h:`6 heures`,moreOptions:`Plus d'options`,peakActive:`(heures de pointe)`,peakActiveHint:`L'ajustement des heures de pointe est actif en ce moment, donc ce ne sont pas les pondérations propres au préréglage : 60 % du poids de la vitesse a été reporté sur la fiabilité.`,peakAdjust:`Ajustement des heures de pointe`,peakAdjustHint:`Désactivé par défaut. Dans la plage ci-dessous, reporte 60 % du poids de la vitesse sur la fiabilité : les relais gratuits sont alors les plus chargés, et la fiabilité prédit mieux le succès que le débit brut. Le plus rapide et Le plus fiable ne sont pas touchés.`,peakFrom:`De`,peakTo:`à`,peakTimezoneLabel:`Fuseau horaire`,peakUseBrowserTimezone:`Utiliser le fuseau du navigateur`,peakTimezoneInvalid:`Fuseau horaire inconnu.`,peakExemptNote:`Ce préréglage n'est pas touché : il se situe déjà à une extrémité du compromis vitesse/fiabilité.`,title:`Stratégie de routage`,description:`Choisissez une stratégie de routage. En mode manuel, glissez pour définir l'ordre ; les autres stratégies routent selon un score en direct combinant fiabilité, vitesse et intelligence.`,weightsSummary:`fiabilité {reliability}% · vitesse {speed}% · intelligence {intelligence}%`,guardrails:`Garde-fous`,guardrailsTooltip:`Garde-fous permanents : marge de quota gratuit × pénalité de limite de débit en direct. En dessous de 1,0, le modèle est freiné.`,scoreTooltip:`Score de routage final = moyenne pondérée des trois axes, multipliée par les garde-fous. Le plus élevé est routé en premier.`,modeManualHint:`Mode manuel : les requêtes suivent l'ordre ci-dessous, de haut en bas. Glissez pour réordonner.`,modeScoreHint:`Les scores se mettent à jour à partir du trafic réel. L'ordre ci-dessous correspond au routage actuel.`,manual:`Manuel`,manualBlurb:`Routage dans l'ordre exact que vous définissez ci-dessous. Glissez les poignées pour réordonner. Aucun score ; la chaîne est suivie de haut en bas.`,balanced:`Équilibré`,balancedBlurb:`La fiabilité prime (50 %), la vitesse et l'intelligence étant pondérées à parts égales (25 % chacune). Un choix par défaut polyvalent et raisonnable.`,smartest:`Le plus intelligent`,smartestBlurb:`Préférer le modèle le plus capable qui fonctionne encore. Intelligence 55 %, fiabilité 35 %, vitesse 10 %.`,fastest:`Le plus rapide`,fastestBlurb:`Préférer le modèle le plus rapide qui fonctionne encore. Vitesse 55 %, fiabilité 35 %, intelligence 10 %.`,reliable:`Le plus fiable`,reliableBlurb:`Maximiser le taux de réussite avant tout. Fiabilité 70 %, vitesse et intelligence 15 % chacune.`,custom:`Personnalisé`,customBlurb:`Définissez votre propre équilibre entre fiabilité, vitesse et intelligence à l'aide de curseurs. Le même moteur que les préréglages, avec vos pondérations.`,adjust:`Ajuster`,customWeights:`Pondérations personnalisées`,customWeightsHelp:`Les curseurs sont indépendants ; les parts s'équilibrent automatiquement à 100 %.`,weightReliability:`Fiabilité`,weightSpeed:`Vitesse`,weightIntelligence:`Intelligence`,weightRequired:`Au moins une pondération doit être supérieure à zéro.`,scoreColumn:`Score`},penaltyInspector:{title:`Pression sur le routeur`,subtitle:`Pénalités, cooldowns et échecs des {minutes} dernières minutes`,rowCount:`{count} actifs`,offChain:`hors chaîne`,penaltyValue:`Pénalité {value}`,factor:`score x{factor}`,noCooldown:`Aucun cooldown`,cooldownChip:`{key} - {time}`,resetCooldown:`Réinitialiser le cooldown`,clearAll:`Tout effacer`,clearAllHint:`Lève immédiatement tous les refroidissements, pénalités et séries d'échecs. La pression se reconstruit à partir des prochains résultats réels.`,errorsHeading:`{count} erreurs récentes`,noRecentErrors:`Aucune erreur récente`,noKey:`aucune clé`,reasons:{penalty:`pénalisé`,cooldown:`en cooldown`,recent_errors:`en échec`}},keys:JSON.parse(`{"pageTitle":"Clés","pageDescription":"Les identifiants des fournisseurs et la clé API unifiée à laquelle vos applications se connectent.","tabProviders":"Fournisseurs","checklistSummary":"{configured} fournisseurs sur {total} configurés","checklistKeyless":"aucune clé requise","checklistNoKeyTip":"Aucune clé ajoutée pour l'instant. Cliquez pour en ajouter une.","checklistSignupLink":"Ouvrir {provider} pour créer un compte et obtenir une clé","checklistKeylessTip":"Fonctionne sans clé.","tabQuotaSignals":"Signaux de quota","tabApiKey":"Clé d'API unifiée","tabAnthropic":"Anthropic","unifiedKey":"Votre clé API unifiée","regenerate":"Régénérer","showKey":"Afficher","hideKey":"Masquer","copyKey":"Copier","copyFullKey":"Copier la clé complète","copiedKey":"Copié","baseUrl":"URL de base","endpointChat":"Chat","endpointResponses":"Responses","endpointEmbeddings":"Embeddings","endpointEmbeddingsHint":"model : « auto » ou une famille de l'onglet Embeddings","endpointMessages":"Messages","endpointMessagesHint":"Compatible Anthropic (Claude)","quickStart":"Quick start","quickStartDesc":"Use auto for your active routing chain, or auto:fast to prioritize speed across enabled models. Replace $YOUR_KEY with your unified API key.","exampleAuto":"Auto mode (use the active chain)","exampleFast":"Fast mode (prioritize speed)","anthropicTitle":"Modèles Claude (Anthropic)","anthropicDesc":"Pointez un client SDK Claude ou Anthropic vers ce serveur. Les clients Anthropic envoient des noms de modèles Claude — associez chacun à Auto (le routeur choisit un modèle gratuit) ou fixez-en un précis.","anthropicBaseUrl":"URL de base","anthropicAuth":"En-tête d'authentification","anthropicAuto":"Auto — le routeur choisit le meilleur modèle","anthropicSave":"Enregistrer le mappage","anthropicSaved":"Enregistré","anthropicNote":"Les clients Anthropic conservent leurs noms de modèles Claude intégrés ; le mappage ci-dessus décide de l'acheminement de chacun vers votre pool.","familyDefault":"Par défaut","familyOpus":"Opus","familySonnet":"Sonnet","familyHaiku":"Haiku","selectPlatform":"Sélectionner un fournisseur","addKey":"Ajouter une clé","keyAdded":"Clé ajoutée","endpointKeysShareModels":"Les clés d'un même endpoint partagent ses modèles.","export":"Exporter","exportAll":"Toutes les clés","exportHealthy":"Saines uniquement","exportKeys":"Exporter les clés API","exportFormat":"Format","exportHealthyOnly":"Clés saines uniquement","exportHealthyOnlyDesc":"Exclure les clés qui échouent actuellement aux vérifications de santé","exportWillExport":"À exporter","exportKey":"clé","exportKeys plural":"clés","exporting":"Exportation…","exportDownload":"Télécharger","exportSuccess":"{count} clés exportées","adding":"Ajout…","selectProvider":"Sélectionner un fournisseur…","accountId":"ID de compte","label":"Libellé","noKeyNeeded":"(aucune clé requise)","outboundProxy":"Proxy sortant","outboundProxyDescription":"Acheminer les requêtes LLM sortantes via un proxy. Prend en charge SOCKS5, HTTP et HTTPS.","proxyUrl":"URL du proxy","saveProxy":"Enregistrer","savingProxy":"Enregistrement…","proxyLoadFailed":"Impossible de charger les paramètres du proxy.","proxyMode":"Mode","proxyModeForward":"Forward proxy","proxyModeFetchRelay":"Fetch relay","relayToken":"Relay token","relayTokenConfigured":"Configured. Leave unchanged to keep.","relayTokenPlaceholder":"Relay bearer token (optional)","relayHeadersHint":"The relay reads the destination and its own credential from","addCustom":"Ajouter un modèle personnalisé compatible OpenAI","addCustomDescription":"Pointez vers n'importe quel endpoint compatible OpenAI : llama.cpp, LM Studio, vLLM, un Ollama local ou une passerelle distante. Indiquez un modèle par ligne (ou séparés par des virgules) pour en ajouter plusieurs à la fois ; ils partagent tous le même endpoint. La clé API est facultative (la plupart des serveurs locaux n'en ont pas besoin).","customType":"Type","customTypeChat":"Chat","customTypeEmbedding":"Embedding","customTypeImage":"Image","customTypeAudio":"Audio","customTypeTranscription":"Transcription","customBaseUrl":"URL de base","customModels":"Modèles","customModel":"Modèle","customDisplayName":"Nom affiché","customDisplayNamePerModel":"par modèle","customDisplayNameOptional":"facultatif","customFamily":"Famille","customFamilyPlaceholder":"identifiant du modèle par défaut","customApiKey":"Clé API","customCapabilities":"Capacités","addModel":"Ajouter un modèle","modelAdded":"Modèle ajouté","addModels":"Ajouter {count} modèles","addEmbeddingModel":"Ajouter un embedding","addImageModel":"Ajouter un modèle d'image","addAudioModel":"Ajouter un modèle audio","addTranscriptionModel":"Ajouter un modèle de transcription","addingCustom":"Ajout…","discoverModels":"Récupérer les modèles","probeNow":"Tester l'endpoint","probeConfirm":"Envoyer jusqu'à 3 requêtes de test ?","probeCapabilities":"raisonnement : {reasoning} · outils : {tools}","probeCapYes":"oui","probeCapNo":"non","probeCapUnknown":"inconnu","probeSuccess":"{model} testé en {latency} ms","probeFailed":"Échec du test : {reason}","discoverTitle":"Modèles sur cet endpoint","discoverHint":"Choisissez les modèles à enregistrer. Ceux déjà ajoutés restent verrouillés.","discoverEmpty":"Cet endpoint n'a renvoyé aucun modèle.","discoverAlreadyAdded":"Ajouté","discoverSelectAll":"Tout sélectionner","modelsAdded":"{count} modèles ajoutés","getApiKey":"Obtenir une clé API","deleteKeyConfirm":"Supprimer cette clé ? Cette action est irréversible.","checkAll":"Tout vérifier","checking":"Vérification…","editLabel":"Modifier le libellé","saveLabel":"Enregistrer le libellé","unifiedKeyDescBefore":"Utilisez-la comme votre ","unifiedKeyDescAfter":" OpenAI ; elle authentifie les requêtes vers ce proxy.","serverUnreachableBefore":"Impossible de joindre le serveur sur ","serverUnreachableAfter":". Vérifiez que le backend est démarré. npm run dev lance les deux, et les journaux du serveur s'affichent sous le préfixe server.","paneProviderKey":"Clé de fournisseur","paneImportFile":"Importer un fichier","paneCustomEndpoint":"Endpoint personnalisé","platform":"Plateforme","hideAdded":"Masquer les fournisseurs ajoutés","apiToken":"Jeton API","keyOptionalPlaceholder":"Facultatif","bearerTokenPlaceholder":"Jeton Bearer","pasteKeyPlaceholder":"collez la clé ici","pasteSeveral":"Coller plusieurs","keyOptionalHint":"Facultatif : laissez vide pour utiliser l'offre gratuite anonyme (limitée par IP), ou collez votre propre clé pour utiliser votre compte.","enable":"Activer","noProviderKeys":"Aucune clé de fournisseur pour l'instant. Ajoutez-en une ci-dessus pour commencer le routage.","filterPlaceholder":"Filtrer les fournisseurs ou les clés","filterAll":"Tous","filterHealthy":"Sains","filterIssues":"Problèmes","filterDisabled":"Désactivés","noFilterMatch":"Aucun fournisseur ne correspond à vos filtres.","providerCountSummary":"{providers} fournisseurs · {keys} clés","summaryHealthy":"{count} sains","summaryIssueOne":"{count} problème","summaryIssueOther":"{count} problèmes","providerActions":"Actions du fournisseur","routeViaProxy":"Acheminer via le proxy","checkNow":"Vérifier maintenant","syncModels":"Sync models with upstream","syncModelsResult":"Model list synced: {added} added, {total} live","syncModelsFailed":"Model sync failed: {reason}","syncAllModels":"Sync all providers","syncAllPending":"Syncing…","syncAllResult":"Synced {count} provider(s): {registered} model(s) registered","syncAllFailed":"Sync all failed: {reason}","syncAllNoChanges":"All provider rosters are already up to date","syncAllDialogTitle":"Sync Results","syncAllDialogSummary":"Changes detected in {changed} of {total} providers","syncAllNew":"+{count} new","syncAllUpdated":"{count} updated","syncAllRetired":"{count} retired","syncAllNewModels":"New models","syncAllUpdatedModels":"Updated models","syncAllRetiredModels":"Retired models","syncAllDialogClose":"Done","proxyEnvHintBefore":"Également configurable via la variable d'environnement ","proxyEnvHintAfter":" (prioritaire). Laissez vide pour désactiver. Exemples :","importKeys":"Importer des clés de fournisseur","importKeysDescription":"Téléversez des fichiers .env, JSON, JSONC, CSV, Markdown ou texte.","importFiles":"Fichiers","importFileCount":"{count} sélectionnés","previewFiles":"Aperçu","previewing":"Aperçu en cours…","selected":"Sélectionné","provider":"Fournisseur","keyName":"Nom de la clé","keyValue":"Valeur de la clé","chooseProvider":"Choisir un fournisseur","noPreviewKeys":"Aucune clé trouvée dans ces fichiers.","skippedItems":"Ignorés :","moreItems":"+{count} de plus","importSelected":"Importer {count}","importing":"Importation en cours…","noImportSelection":"Sélectionnez au moins une ligne avec un fournisseur.","duplicate":"Doublon","duplicatesFound":"{count} doublon(s) détecté(s) — existent déjà et seront ignorés.","importResult":"Importés : {imported}. Échecs : {failed}.","importModelCount":"+{count} modèles","importResultWithModels":"Importés : {imported}. Modèles enregistrés : {models}. Échecs : {failed}.","confirmRemove":"Confirmer ?","quotaSignalsTitle":"Signaux de quota","quotaSignalsEmptyTitle":"Aucune observation de quota pour le moment","quotaSignalsEmptyDesc":"Cette section se remplit quand les fournisseurs renvoient des en-têtes de limite, des erreurs de quota ou des signaux de validation.","quotaKeyRef":"clé n° {id}","quotaPoolRef":"pool {pool}","quotaLimit":"Limite","quotaRemaining":"Restant","quotaReset":"Réinitialisation","quotaObserved":"Observé","tabAgents":"Agents","familyGeminiPro":"Gemini Pro","familyGeminiFlash":"Gemini Flash","familyGeminiFlashLite":"Gemini Flash-Lite","geminiTitle":"Correspondance des modèles Gemini","geminiDesc":"Associez les noms Gemini Pro, Flash et Flash-Lite à Auto ou à un modèle précis du catalogue.","compatibilityTitle":"Compatibilité des agents","compatibilityDesc":"Contrôlez les surfaces de compatibilité en opt-in et la découverte des modèles par Claude Code.","ollamaMode":"Émulation Ollama","ollamaModeHint":"Le mode ouvert en loopback n'accepte jamais de trafic LAN non authentifié.","ollamaOff":"Désactivé","ollamaLoopback":"Ouvert en loopback","ollamaKeyRequired":"Clé API requise","claudeAliases":"Alias de découverte Claude Code","claudeAliasesHint":"Exposez des alias claude/<model> pour que le sélecteur de modèles de la passerelle puisse lister le catalogue.","mcpServer":"Serveur MCP","mcpServerHint":"Expose le point de terminaison /mcp aux clients agents. Désactivé au départ sur les nouvelles installations.","urlTokensTitle":"Tokens d'URL révocables","urlTokensDesc":"Réservé aux clients sans en-têtes. Les tokens d'URL peuvent fuiter dans l'historique et les journaux ; révoquez-les dès qu'ils ne sont plus nécessaires.","urlTokenLabel":"Libellé du token","createUrlToken":"Créer un token","urlTokenOnce":"Copiez ce token maintenant. Il ne sera plus affiché.","revoked":"Révoqué","revoke":"Révoquer","modelScope":"Portée des modèles","modelScopeDesc":"Limitez cette clé à certains ID de modèles. Le routeur ignore cette clé pour tout autre modèle.","modelScopeAdd":"Ajoutez un ID de modèle puis appuyez sur Entrée","modelScopeEmpty":"Aucune portée définie — cette clé sert tous les modèles de son fournisseur.","modelScopeClear":"Effacer la portée","modelScopeBadgeOne":"limitée · 1 modèle","modelScopeBadgeOther":"limitée · {count} modèles","modelPicker":{"title":"Quels modèles cette clé doit-elle servir ?","hint":"Votre clé {provider} a été ajoutée et sert actuellement tous les modèles ci-dessous. Décochez ceux que cette clé n'est pas autorisée à utiliser — le routeur l'ignorera pour ceux-là.","count":"{selected} sur {total} sélectionnés","allNote":"Tout est sélectionné — rien n'est enregistré, et les modèles ajoutés au catalogue par la suite utiliseront eux aussi cette clé.","subsetNote":"Cette clé sera limitée aux modèles sélectionnés. Vous pourrez modifier cela plus tard depuis la ligne de la clé.","skip":"Pas maintenant","scopedOne":"Clé limitée à 1 modèle","scopedOther":"Clé limitée à {count} modèles","allSaved":"Key serves every catalog model"},"cpTitle":"Profils client","cpDesc":"Des clés API par client, chacune avec un prompt système que le serveur applique toujours.","cpEmpty":"Aucun profil client pour le moment.","cpNameLabel":"Nom","cpNamePlaceholder":"p. ex. Bot de support","cpPromptLabel":"Prompt système (facultatif)","cpPromptPlaceholder":"Instructions que le serveur ajoute en tête de chaque requête effectuée avec cette clé.","cpCreate":"Créer le profil","cpRotate":"Renouveler la clé","cpKeyOnce":"Copiez cette clé maintenant — elle ne sera plus affichée.","cpEnabledAria":"Profil activé","selectKey":"Sélectionner cette clé","bulkSelected":"{count} sélectionnées","bulkEnable":"Tout activer","bulkDisable":"Tout désactiver","bulkDelete":"Tout supprimer","bulkDeleteConfirm":"Supprimer {count} ?","bulkResult":"Mises à jour : {done}. Échecs : {failed}.","bulkDeleteResult":"Supprimées : {done}. Échecs : {failed}.","testProxy":"Test","testingProxy":"Test en cours…","proxyTestOk":"Le proxy fonctionne — aller-retour en {ms} ms","proxyTestFail":"Échec du proxy : {reason}","editKey":"Modifier la clé","editPlatformLocked":"Le fournisseur et l’endpoint ne peuvent pas être modifiés après la création.","editCredentialHint":"Laissez vide pour conserver la clé actuelle.","editCredentialPartsRequired":"Saisissez à la fois l’ID de compte et le jeton d’API.","editModels":"Modifier les modèles","editModelsHint":"Choisissez les modèles du catalogue que cette clé peut servir. Tout sélectionner supprime la restriction.","editModelsCustomHint":"Choisissez les modèles enregistrés du endpoint que cette clé peut servir. Tout sélectionner supprime la restriction.","editModelsSync":"Vérifier les mises à jour du catalogue","editModelsSyncing":"Vérification…","editModelsSynced":"Catalogue de modèles vérifié","outlookUnavailable":"Unavailable","outlookNoForecasts":"Forecast unavailable. More recent traffic or reliable quota readings are needed.","outlookCoverage":"Forecasts available for {count} of {total} pools.","outlookTraffic":"{count} successful requests through this instance in the last {minutes} minutes.","outlookMinimumTraffic":"An exhaustion forecast needs at least {count} successful requests within {minutes} minutes.","outlookNotReportedHint":"The provider has not reported a usable request balance and limit. Local usage is shown; remaining quota is unavailable.","outlookMissingResetHint":"The provider did not report a valid reset time. Remaining quota cannot support an exhaustion forecast.","outlookConfidenceHint":"This balance is not reliable enough for an exhaustion forecast.","outlookObserved":"Balance observed: {time}","outlookUnavailablePools":"Unavailable quota pools ({count})","outlookTitle":"Quota outlook","outlookInsufficient":"Not enough data","outlookLowBalance":"Low balance","outlookRunningLow":"Running low soon","outlookStale":"Needs fresh data","outlookUnknown":"Unknown","outlookWithinQuota":"Within quota","outlookResetsFirst":"Not before reset","outlookExhausted":"Already exhausted","outlookLastReported":"requests last reported","outlookRequestsLeft":"requests left","outlookNotReported":"Not reported","outlookRate":"Recent rate","outlookRateValue":"{count} req/min","outlookRunsOut":"May run out","outlookStaleHint":"This balance is old or its window has expired. A fresh provider reading is needed.","outlookError":"Could not load quota forecasts. Raw observations are still available below.","outlookRetry":"Retry","outlookAttention":"Quota pools needing attention: {count}","outlookNoWarnings":"No forecast warnings. Pools with insufficient data may still be limited.","outlookHint":"Rates count successful requests through this instance only, not usage elsewhere. Forecasts require recent provider balances and reported resets. Warnings appear below 20% remaining or when quota may run out within two hours, before reset.","outlookRaw":"Raw quota observations","addCustomModel":"Ajouter un modèle personnalisé","modelId":"ID du modèle","modelIdRequired":"L’ID du modèle est obligatoire","modelDisplayName":"Nom d’affichage","modelContextWindow":"Fenêtre de contexte (tokens)","modelRateLimits":"Limites de débit (optionnel)","modelSupportsTools":"Prend en charge les outils","modelSupportsToolsHint":"Activer si ce modèle peut exécuter des appels d’outils ou fonctions","modelSupportsVision":"Prend en charge la vision","modelSupportsVisionHint":"Activer si ce modèle accepte les images en entrée","createModel":"Créer le modèle","modelAddedSuccess":"Modèle personnalisé ajouté avec succès","modelAddFailed":"Échec de l’ajout du modèle personnalisé","testModel":"Tester","testingModel":"Test en cours…","testPassedShort":"Réussi","testFailedShort":"Échoué","testPassed":"Test du modèle réussi en {latency}ms","testFailed":"Échec du test du modèle","testThrottled":"Veuillez attendre {seconds}s avant de tester à nouveau ce modèle.","noModelsForProvider":"Aucun modèle configuré pour ce fournisseur.","testModels":"Tester les modèles","syncAllCatalog":"Catalog: +{inserted} added, ~{updated} updated, -{removed} removed","requestCapLabel":"Request cap","tokenCapLabel":"Token cap","budgetPeriodLabel":"Budget period","budgetPeriodDaily":"Daily","budgetPeriodWeekly":"Weekly","budgetPeriodMonthly":"Monthly","budgetPeriodAuto":"Auto (follow provider)","autoResolvedDaily":"Detected provider cycle: daily","autoResolvedMonthly":"Detected provider cycle: monthly","autoResolvedFallback":"Provider cycle unknown, defaulting to monthly","capUnlimitedPlaceholder":"Illimité","capEditHint":"Caps reset at the next period boundary, 00:00 UTC. Leave blank for unlimited.","monthlyUsageLine":"{requests} requêtes, {tokens} jetons ce mois","monthlyUsageRequests":"{requests} requests","monthlyUsageTokens":"{tokens} tokens","monthlyUsageRequestsRelative":"{used} / {cap} ({remaining} left) requests","monthlyUsageTokensRelative":"{used} / {cap} ({remaining} left) tokens","monthlyUsageReset":"reset {date}"}`),backups:{title:`Sauvegardes`,description:`Enregistrez les données de routage dans un fichier .sql à côté de la base de données, pour les restaurer plus tard.`,excludedNote:`Une sauvegarde contient vos fournisseurs, vos modèles, vos réglages de routage et l'historique des requêtes. Les comptes, les sessions et les tokens d'URL n'y figurent jamais : un export ne contient donc aucune empreinte de mot de passe ni token de connexion, et en restaurer un ne peut pas vous déconnecter. Les clés de fournisseur restent chiffrées avec l'ENCRYPTION_KEY de ce serveur : une sauvegarde ne peut être restaurée que sur un serveur qui détient encore cette clé.`,selectHint:`Sauvegardez tout, ou choisissez les tables dont vous avez besoin.`,selectAll:`Tout sélectionner`,deselectAll:`Tout décocher`,fullBackup:`Sauvegarde complète`,backupSelected:`Sauvegarder la sélection ({count})`,created:`Sauvegarde écrite dans {filename}`,list:`Sauvegardes sur le disque`,empty:`Aucune sauvegarde pour l'instant`,full:`Toutes les tables`,tablesCount:`{count} tables`,manual:`Manuelle`,scheduled:`Planifiée`,preRestore:`Avant restauration`,download:`Télécharger`,restore:`Restaurer`,confirmRestore:`Remplacer les données ?`,restored:`Restauration effectuée. Les données précédentes ont été enregistrées sous {filename}.`,delete:`Supprimer la sauvegarde`,prevPage:`Précédent`,nextPage:`Suivant`,autoTitle:`Sauvegardes automatiques`,autoHint:`Le serveur écrit une sauvegarde complète à cette fréquence.`,time:`Heure (HH:mm)`,intervalDays:`Tous les N jours`,path:`Dossier`,pathPlaceholder:`backups`,pathHint:`Relatif au répertoire de la base de données. Les sauvegardes ne peuvent pas être écrites en dehors de ce répertoire.`,save:`Enregistrer la planification`,saved:`Enregistré`},status:{healthy:`sain`,rateLimited:`limité`,invalid:`invalide`,error:`erreur`,unchecked:`non vérifié`},analytics:{title:`Analytique`,description:`Volume de requêtes, latence, consommation de tokens et échecs.`,range24h:`24 h`,range7d:`7 j`,range30d:`30 j`,range90d:`90 j`,requests:`Requêtes`,successRate:`Taux de réussite`,inputTokens:`Tokens en entrée`,outputTokens:`Tokens en sortie`,avgLatency:`Latence moy.`,p95Latency:`Latence P95`,avgTtft:`TTFT moy.`,estSavings:`Économies est.`,requestsByProvider:`Requêtes par fournisseur`,avgLatencyByProvider:`Latence moy. par fournisseur`,ttftByProvider:`Temps jusqu'au premier token par fournisseur`,ttftEmpty:`Aucun temps jusqu'au premier token enregistré pour l'instant.`,requestsOverTime:`Requêtes au fil du temps`,tokensOverTime:`Tokens au fil du temps`,byModel:`Par modèle`,byPlatform:`Par plateforme`,errors:`Erreurs`,errorDistribution:`Répartition des erreurs`,pinnedRequests:`Requêtes épinglées`,pinnedHonored:`Honorées`,fallbackAttempts:`Tentatives de repli`,savingsHint:`Vous avez réellement économisé {actual} $ sur les {range} derniers. C'est ce que les mêmes tokens auraient coûté sur des API payantes, tarifés par modèle. Le chiffre affiché projette votre rythme des {span} de données les plus récentes sur 30 jours complets.`,savingsHintExact:`Vous avez réellement économisé {actual} $ sur les {range} derniers. C'est ce que les mêmes tokens auraient coûté sur des API payantes, tarifés par modèle. Le chiffre affiché est votre total réel sur 30 jours.`,requestsHintPinned:`{pinned} de ces requêtes ont épinglé un modèle précis par son nom. {honored} ont été traitées par le modèle épinglé ; {failed} ont basculé vers un autre. Les autres ont été routées automatiquement.`,requestsHintAuto:`Toutes les requêtes de cette période ont été routées automatiquement ; aucun client n'a épinglé de modèle précis par son nom.`,requestsHintTypes:`{chat} requêtes de chat et {embedding} d'embeddings.`,rangeLabel24h:`24 heures`,rangeLabel7d:`7 jours`,rangeLabel30d:`30 jours`,rangeLabel90d:`90 jours`,spanDays:`{count} jours`,spanHours:`{count} heures`,latencyMs:`Latence (ms)`,latency:`Latence`,pinned:`Épinglé`,inTokens:`Tokens en entrée`,outTokens:`Tokens en sortie`,saved:`Économisé`,message:`Message`,time:`Heure`,perModelBreakdown:`Détail par modèle`,usageByKey:`Utilisation par clé`,keyColumn:`Clé`,keyLabelFallback:`Clé n° {id}`,errorsByProvider:`Erreurs par fournisseur`,recentErrors:`Erreurs récentes`,noErrors:`Aucune erreur`,recentCalls:`Appels récents`,clientIp:`IP du client`,clientAgent:`Application cliente`,requestedModelHint:`{model} demandé, servi par repli`,attempts:`Tentatives`,filterAll:`Toutes`,filterCanceled:`Annulées`,providerBreakdown:`Détail par fournisseur`,tokensPerSec:`Tok/s`,allProviders:`Tous les fournisseurs`,requestDetailTitle:`Requête #{id}`,failoverLadder:`Échelle de failover`,failoverLadderHint:`Chaque étape parcourue par cette requête dans la chaîne de repli, dans l'ordre.`,noAttemptTrace:`Aucune trace de tentative n'a été enregistrée pour cette requête.`,keyOrdinal:`clé #{n}`,keyBadge:`Clé #{n}`,attemptTimingHint:`Décalage depuis le début de la requête · durée de la tentative`,requestedModel:`Modèle demandé`,ttft:`TTFT`,requestsByAgent:`Requêtes par agent`,sortBy:`Trier par {column}`,sortHint:`Le tri s'applique aux {count} lignes chargées`,cacheHitRate:`Taux de succès du cache`,cacheSavedTokens:`{tokens} jetons économisés`,cacheHitRateHint:`{hits} succès contre {misses} échecs depuis le démarrage du serveur · {requests} appels au fournisseur évités`},logs:{title:`Journaux`,description:`Journal du serveur en direct. Les nouvelles entrées arrivent tant que la page est ouverte.`,pause:`Suspendre`,resume:`Reprendre`,clear:`Effacer les journaux`,cleared:`Journal du serveur effacé`,levelFilter:`Niveaux de journalisation`,levels:{debug:`Debug`,info:`Info`,warn:`Avertissement`,error:`Erreur`},countsHint:`Les compteurs portent sur l'ensemble du tampon de journal du serveur, pas uniquement sur les entrées correspondant à ces filtres.`,searchPlaceholder:`Rechercher dans les messages du journal…`,jumpToLatest:`Aller aux plus récentes`,showMore:`Afficher plus`,showLess:`Afficher moins`,buffered:`Affichage de {count} entrées sur un maximum de {max} en mémoire tampon`,emptyTitle:`Aucune entrée de journal pour l'instant`,emptyDescription:`Les entrées apparaissent ici au fur et à mesure que le serveur les écrit. Élargissez les filtres de niveau, de fournisseur ou de recherche si vous attendiez des résultats.`,noLevelsTitle:`Aucun niveau sélectionné`,noLevelsDescription:`Activez au moins un niveau pour voir le journal.`,loadFailed:`Impossible de charger le journal du serveur.`},playground:{title:`Bac à sable`,description:`Envoyez une complétion de chat via le routeur et voyez quel fournisseur la traite.`,autoModel:`Auto (chaîne de repli)`,fusionModel:`Fusion (synthèse multi-modèles)`,selectModel:`Sélectionner un modèle`,searchModels:`Rechercher des modèles…`,noModelsFound:`Aucun modèle trouvé`,send:`Envoyer`,sending:`Envoi…`,clear:`Effacer`,inputPlaceholder:`Tapez un message… (⏎ pour envoyer, ⇧⏎ pour un retour à la ligne)`,emptyTitle:`Envoyez un message pour commencer.`,emptyDescription:`Utilise {model}. Changez de modèle dans le sélecteur ci-dessus.`,noModels:`Aucun modèle pour l'instant. Ajoutez une clé API sur la page Clés pour remplir cette liste.`,copyReply:`Copier la réponse`,fallback:`repli`,fallbacks:`replis`,fusionPanel:`Panel`,fusionJudge:`Juge`,fusionTrace:`{count} réponses de modèles`,fusionFailed:`aucune réponse`,fusionJudgeSynth:`a synthétisé la réponse finale`,errorPrefix:`Erreur :`,systemPromptLabel:`Prompt système`,systemPromptPlaceholder:`Facultatif. Envoyé comme message système avant votre conversation.`,showSettings:`Afficher les paramètres`,hideSettings:`Masquer les paramètres`,samplingHeading:`Échantillonnage`,samplingHelp:`Désactivés, c'est la valeur par défaut du fournisseur qui s'applique. Seuls les contrôles que vous activez sont envoyés.`,samplingDefault:`Par défaut`,temperature:`Température`,topP:`Top P`,maxTokens:`Tokens max`,errorTitle:`La requête a échoué`,attach:`Joindre des fichiers`,attachTooMany:`Vous pouvez joindre jusqu'à {count} fichiers par message.`,attachTooLarge:`{name} est trop volumineux. La limite est de {max}.`,attachUnsupported:`{name} n'est pas pris en charge. Joignez des images (PNG, JPEG, WebP, GIF) ou des fichiers texte (TXT, MD, CSV, JSON, LOG).`,attachFailed:`Impossible de lire {name}.`,noVisionBadge:`Sans images`,visionWarning:`{model} n'accepte pas les images. Choisissez un modèle vision ou Auto.`,dictate:`Dicter`,dictationStop:`Arrêter l’enregistrement`,dictationTranscribing:`Transcription…`,dictationUnavailable:`Ajoutez des fournisseurs de modèles audio pour utiliser la dictée.`,dictationModel:`Modèle de dictée`,dictationFailed:`Échec de la transcription : {reason}`,artifactOpen:`Ouvrir l’aperçu`,artifactPreview:`Aperçu`,artifactCode:`Code`,artifactClose:`Fermer l’aperçu`,artifactDownload:`Télécharger`,artifactReload:`Recharger l’aperçu`,artifactHtml:`Page HTML`,artifactSvg:`Image SVG`,artifactLines:`lignes`,artifactResize:`Redimensionner l’aperçu`},playgroundSessions:{heading:`Conversations`,newConversation:`Nouvelle conversation`,showSidebar:`Afficher les conversations`,hideSidebar:`Masquer les conversations`,empty:`Aucune conversation enregistrée pour l'instant.`,untitled:`Conversation sans titre`,rename:`Renommer`,renamePlaceholder:`Nom de la conversation`,messageCount:`{count} messages`,justNow:`à l'instant`,minutesAgo:`il y a {count} min`,hoursAgo:`il y a {count} h`,daysAgo:`il y a {count} j`,loadFailed:`Impossible d'ouvrir cette conversation.`,renameFailed:`Impossible de renommer cette conversation.`,deleteFailed:`Impossible de supprimer cette conversation.`,actions:`Actions de la conversation`,newChat:`Nouvelle discussion`},embeddings:{title:`Modèles`,description:`Les embeddings basculent uniquement au sein d'une même famille : le même modèle servi par un autre fournisseur. Les vecteurs de modèles différents sont incompatibles, le routeur ne change donc jamais de modèle à votre insu.`,defaultBadge:`Par défaut · auto`,makeDefault:`Définir par défaut`,moveUp:`Monter`,moveDown:`Descendre`,usageToday:`{count} req aujourd'hui`,usageMonth:`{count} tok ce mois-ci`,autoDescription:`model : « auto » sur POST /v1/embeddings achemine vers la famille par défaut. Nommer une famille (ou un id de modèle de fournisseur) épingle cette famille ; les fournisseurs qu'elle contient sont essayés dans l'ordre.`,unsavedChanges:`Modifications non enregistrées`,saveChanges:`Enregistrer les modifications`,savingChanges:`Enregistrement…`,tokMax:`{tokens} tok max.`,emptyTitle:`Aucun modèle d'embeddings pour l'instant`,emptyDesc:`Les familles d'embeddings apparaissent ici dès que vous ajoutez une clé de fournisseur prenant en charge les embeddings.`,dragToReorder:`Glisser pour réorganiser le fournisseur`},fusion:{title:`Fusion`,description:`Un panel de modèles répond en parallèle, puis un juge synthétise une réponse plus solide. Utilisez-la en appelant l’API avec le modèle « fusion ».`,panelSource:`Source du panel`,panelSourceHelp:`D’où proviennent les modèles du panel lorsqu’une requête n’en spécifie pas.`,mode:{auto:`Auto (chaîne de repli)`,autoHelp:`Sélectionne un ensemble varié de modèles depuis votre chaîne de repli, classés selon votre stratégie de routage active.`,explicit:`Panel explicite`,explicitHelp:`Toujours utiliser les modèles spécifiques que vous choisissez ci-dessous.`},panelModels:`Modèles du panel`,selectedCount:`{count} sur {max} sélectionnés`,noModels:`Aucun modèle connecté pour l’instant. Ajoutez une clé API, puis activez des modèles dans la chaîne de repli.`,panelSize:`Taille du panel`,panelSizeHelp:`Nombre de modèles variés à sélectionner automatiquement (1–{max}).`,judge:`Modèle juge`,judgeHelp:`Le modèle qui synthétise les réponses du panel en une seule. « Auto » utilise votre meilleur modèle disponible.`,judgeAuto:`Auto (meilleur disponible)`,strategy:`Stratégie`,strategySynthesize:`Synthèse : fusionne le panel en une seule réponse`,strategyBestOf:`Meilleure réponse : renvoie la réponse la plus solide (sans appel au juge)`,strategySynthesizeShort:`Synthèse`,strategyBestOfShort:`Meilleure réponse`,exposePanel:`Exposer les détails du panel`,exposePanelHelp:`Joint la réponse de chaque modèle et les métadonnées du juge dans un champ x_fusion de la réponse.`,howToUse:`Comment l’utiliser`,howToUseHelp:`Envoyez une requête de chat normale avec le modèle « fusion ». Ces réglages sont les valeurs par défaut ; toute requête peut les remplacer via un champ « fusion ».`,unsavedChanges:`Modifications non enregistrées`,save:`Enregistrer`,searchPlaceholder:`Rechercher des modèles…`,providerFilterLabel:`Filtrer par fournisseur`,providerAll:`Tous les fournisseurs`,noMatch:`Aucun modèle ne correspond à votre recherche.`},premium:{title:`Premium`,description:`Le catalogue de modèles en direct, sur tous vos appareils.`,loading:`Chargement…`,checkForUpdates:`Vérifier les mises à jour`,syncing:`Synchronisation…`,catalogFeed:`Flux du catalogue`,liveFeed:`Flux en direct`,monthlySnapshot:`Instantané mensuel`,lastChecked:`Dernière vérification : {when}`,liveDescription:`Les nouveaux modèles gratuits, les changements de quota et les correctifs arrivent ici quelques heures après leur déploiement. L'application vérifie automatiquement deux fois par jour ; rien à faire.`,snapshotDescription:`Offre gratuite : le catalogue se rafraîchit à partir d'un instantané mensuel, vérifié automatiquement deux fois par jour. Premium bascule sur le flux en direct, mis à jour tous les 2 à 3 jours.`,lastSyncProblem:`Problème lors de la dernière synchronisation : {error}`,license:`Licence`,planAnnual:`Premium Annuel`,planLifetime:`Premium à vie`,expired:`Expiré`,inactive:`Inactif`,lifetimeNote:`Licence à vie : n'expire jamais.`,renewsOn:`Se renouvelle le {date}.`,willNotRenew:`Ne se renouvellera pas. Premium jusqu'au {date}, puis cette installation reviendra au catalogue mensuel gratuit.`,keyInactive:`Cette clé n'est plus active. L'application continue de fonctionner avec le catalogue mensuel gratuit.`,manageSubscription:`Gérer l'abonnement`,openingPortal:`Ouverture…`,removeKey:`Retirer la clé de cet appareil`,manageHint:`« Gérer l'abonnement » ouvre le portail de facturation Stripe : annuler, mettre à jour votre carte ou télécharger vos factures. Retirer la clé ne désactive que cet appareil ; votre achat reste intact.`,licenseKey:`Clé de licence`,licenseKeyPlaceholder:`fla_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`,activate:`Activer`,activating:`Activation…`,keyHint:`Votre clé figure dans votre e-mail d'achat et sur la page de confirmation. Égarée ?`,recoverKey:`Récupérez-la sur le site web`,upsellTitle:`Passez en direct pour 19 $ par an`,upsellDescription:`De nouveaux modèles gratuits dès leur sortie, au lieu de 30 jours plus tard. Une seule clé, tous vos appareils. Annulable à tout moment ; le routeur reste gratuit pour toujours.`,goPremium:`Passer à Premium`,bundled:`intégré`,planGeneric:`Premium`},languages:{en:`English`,"zh-CN":`中文 (简体)`,es:`Español`,fr:`Français`,"pt-BR":`Português (Brasil)`,it:`Italiano`,hi:`हिन्दी`,ar:`العربية`,bn:`বাংলা`,ru:`Русский`,ur:`اردو`,id:`Bahasa Indonesia`,de:`Deutsch`,ja:`日本語`,sw:`Kiswahili`,mr:`मराठी`,te:`తెలుగు`,tr:`Türkçe`,ta:`தமிழ்`,vi:`Tiếng Việt`,ko:`한국어`,fa:`فارسی`,th:`ไทย`,gu:`ગુજરાતી`,pl:`Polski`,uk:`Українська`,kn:`ಕನ್ನಡ`,ml:`മലയാളം`,or:`ଓଡ଼ିଆ`,my:`မြန်မာဘာသာ`,pa:`ਪੰਜਾਬੀ`,ro:`Română`,nl:`Nederlands`,ms:`Bahasa Melayu`,tl:`Filipino`,ha:`Hausa`,yo:`Yorùbá`,ig:`Igbo`,am:`አማርኛ`,uz:`Oʻzbekcha`,az:`Azərbaycanca`,si:`සිංහල`,ne:`नेपाली`,km:`ខ្មែរ`,el:`Ελληνικά`,cs:`Čeština`,hu:`Magyar`,sv:`Svenska`,he:`עברית`,da:`Dansk`,fi:`Suomi`,no:`Norsk`,sk:`Slovenčina`,bg:`Български`,hr:`Hrvatski`,sr:`Српски`,lt:`Lietuvių`,"zh-TW":`中文 (繁體)`,"pt-PT":`Português (Portugal)`,ka:`ქართული`},errors:{boundaryTitle:`Une erreur est survenue`,boundaryDescription:`Le tableau de bord a rencontré une erreur inattendue. Vos données sont en sécurité. Réessayez ou revenez à la page des modèles.`,tryAgain:`Réessayer`,goHome:`Retour aux modèles`},notFound:{title:`Page introuvable`,description:`Cette page n'existe pas ou a peut-être été déplacée.`},setup:{title:`Premiers pas`,subtitle:`Trois étapes pour router votre première requête.`,progress:`{done} sur {total}`,step1Title:`Ajoutez une clé de fournisseur`,step1Desc:`Connectez au moins un compte fournisseur. Les clés gratuites fonctionnent.`,step1Cta:`Ajouter des clés`,step2Title:`Envoyez une requête de test`,step2Desc:`Choisissez un modèle dans le Playground et dites bonjour.`,step2Cta:`Ouvrir le Playground`,step3Title:`Connectez votre application`,step3Desc:`Utilisez votre clé API unifiée avec n'importe quel client compatible OpenAI.`,copyKey:`Copier la clé API`,copyUrl:`Copier l'URL de base`,copiedKey:`Clé API copiée dans le presse-papiers`,copiedUrl:`URL de base copiée dans le presse-papiers`},palette:{title:`Palette de commandes`,placeholder:`Rechercher des pages, modèles, actions…`,empty:`Aucun résultat`,groupPages:`Pages`,groupActions:`Actions`,groupModels:`Modèles`,toggleTheme:`Basculer le mode sombre`},validation:{required:`Obligatoire`,url:`Saisissez une URL valide commençant par http:// ou https://`,email:`Saisissez une adresse e-mail valide`,passwordMin:`Au moins {min} caractères`},agents:{title:`Agents de codage`,description:`Connectez vos outils de codage à une passerelle unique de modèles gratuits, avec une configuration générée et sans risque pour vos sauvegardes.`,apiKey:`Clé API`,quickstartTitle:`Démarrage rapide`,quickstart:`Le plus rapide : configurez Claude Code depuis le catalogue en direct.`,currentKey:`Clé unifiée actuelle :`,seenRecently:`Vu récemment`,setupLabel:`Configuration automatique`,setupHint:`Écrit pour vous le fichier de configuration de cet outil, pointé vers cette passerelle.`,setupGuideHint:`Affiche les étapes de configuration de cet outil ; aucun fichier n'est écrit.`,manualLabel:`Connexion manuelle`,manualHint:`URL de base et clé à saisir dans les réglages de l'outil.`,endpoint:`Endpoint`,documentation:`Documentation`,descriptions:{claude:`L'agent de terminal d'Anthropic : il planifie, modifie des fichiers et lance des commandes dans votre dépôt.`,codex:`L'agent de terminal d'OpenAI, qui exécute d'abord votre tâche dans un bac à sable local.`,cline:`Une extension VS Code qui vous fait valider chaque modification et chaque commande.`,continue:`Une extension VS Code et JetBrains : autocomplétion en ligne et discussion au fil de la frappe.`,aider:`Un binôme de programmation en ligne de commande qui transforme chaque changement en commit git.`,opencode:`Un agent de terminal indépendant du fournisseur, avec une interface texte plein écran.`,goose:`L'agent local de Block, extensible par serveurs MCP pour aller au-delà du code.`,qwen:`Un fork de Gemini CLI réglé pour les modèles Qwen et les grands dépôts.`,roo:`Une extension VS Code avec des modes interchangeables : architecte, codeur, débogueur.`,kilo:`Une extension VS Code qui fusionne Roo et Cline, avec un orchestrateur qui découpe le travail.`,crush:`L'agent de terminal de Charm, écrit en Go, avec une session par projet.`,dsh:`Le harnais de DeepSeek, qui garde chaque fournisseur comme une route commutable.`,mimo:`L'agent de terminal de Xiaomi, un fork d'OpenCode qui accepte tout fournisseur compatible OpenAI.`,cursor:`L'éditeur pensé pour l'IA ; il passe par le cloud de Cursor, il lui faut donc une URL publique.`,generic:`Tout autre outil qui parle l'API OpenAI, configuré à la main avec l'URL de base et la clé.`,atomcode:`L'agent de terminal d'AtomGit, écrit en Rust, qui accepte tout endpoint compatible OpenAI.`,openclaw:`Un assistant personnel toujours actif qui répond sur WhatsApp, Telegram, Discord et plus encore, depuis votre propre machine.`,hermes:`L'agent auto-améliorant de Nous Research, avec mémoire persistante et compétences, dans le terminal ou sur les applis de chat.`,pi:`Un agent de terminal minimaliste que vous façonnez avec vos propres extensions, compétences et modèles de prompts.`}},update:{available:`Nouvelle version disponible`,whatsNew:`Nouveautés de la v{version}`,publishedOn:`Publié le {date}`,noNotes:`Aucune note de version n'a été publiée pour cette version.`,openRelease:`Ouvrir la page de la version`,dismissVersion:`Ignorer cette version`,dismiss:`Ignorer`},freeTier:{poolsToggle:`Pools de l'offre gratuite ({count})`,poolsToggleBare:`Pools de l'offre gratuite`,summary:`{pools} pools · {budget} jetons/mois comptés une seule fois par pool · {credits} à crédits · {unpublished} non publiés`,pool:`Pool`,models:`Modèles`,budget:`Budget mensuel`,kind:`Type`,kindDocumented:`Documenté`,kindCredits:`Crédits`,kindUnpublished:`Non publié`,remaining:`Restant`,resetAt:`Réinitialisation`,disabledModels:`({count} désactivés)`,metricTokens:`jetons`,metricRequests:`requêtes`,metricCredits:`crédits`,metricNeurons:`neurones`,metricOther:`unités`,empty:`Aucun modèle activé avec des données de budget d'offre gratuite.`,poolLabel:`{platform} · pool {scope} partagé`,poolLabelBare:`{platform} · pool partagé`,poolModels:`{count} modèles`,poolBudget:`{budget}/mois`,poolBudgetTitle:`Une seule allocation mensuelle pour tout le pool, proportionnelle aux {count} clés utilisables sur cette plateforme. Tous les modèles qui en dépendent puisent dans le même budget.`,poolNoQuota:`aucun quota publié`,poolResets:`réinitialisation {time}`,independentBudgets:`budgets indépendants`},chains:{title:`Chaînes de repli`,description:`Chaînes nommées, chacune appelable via auto:<name> dans /v1/models.`,count:`{count} chaînes`,active:`Active`,default:`Par défaut`,activate:`Activer`,activateHint:`Faire éditer cette chaîne par le tableau ci-dessous et l'utiliser pour le routage auto`,deleteHint:`Supprimer cette chaîne`,deleteConfirm:`Supprimer la chaîne « {name} » ?`,create:`Créer`,createPlaceholder:`Nom de la chaîne`,createFailed:`Impossible de créer la chaîne.`,nameRules:`Jusqu'à 20 caractères : lettres, chiffres, tirets et traits de soulignement.`,startEmpty:`Démarrer vide`,startEmptyHint:`Crée la chaîne sans aucun modèle et en tient les nouveaux modèles du catalogue à l'écart. Décoché, elle démarre comme une copie de la chaîne par défaut.`,curated:`Curatée`,curatedHint:`Les nouveaux modèles du catalogue ne sont pas ajoutés automatiquement à cette chaîne.`,renameHint:`Renommer cette chaîne`,renameConfirm:`Renommer la chaîne « {oldName} » en « {name} » ? Les clients appelant auto:{oldName} doivent passer à auto:{name}.`,renamePlaceholder:`Nouveau nom de la chaîne`,renameFailed:`Impossible de renommer cette chaîne.`},notifications:{catalogAdded:`{count} new models added from catalog`,catalogAddedFrom:`{count} new models added for {provider}`,catalogRemoved:`{count} models removed from catalog`,catalogRemovedFrom:`{count} models removed for {provider}`,catalogUpdated:`{count} models updated from latest catalog`,catalogUpdatedFrom:`{count} models updated for {provider}`,discoverAdded:`{count} new models from provider {provider}`,discoverRemoved:`{count} models removed from provider {provider}`,degraded:`Degraded mode active — only {healthy}/{total} providers healthy ({pct}%)`,updateAvailable:`Update available: v{version}`},routingStrip:{canceled:`Canceled`,title:`Live routing`,mode:`Mode`,processing:`Processing…`,idle:`Waiting for a request…`,failed:`Failed`,afterAttempts:`Success after {n} attempts`,activeCount:`{n} active`}};export{e as default};
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e={nav:{models:`મોડલ્સ`,playground:`રમતનું મેદાન`,keys:`કીઓ`,analytics:`એનાલિટિક્સ`,premium:`પ્રીમિયમ`,upgrade:`અપગ્રેડ કરો`,settings:`સેટિંગ્સ`,signOut:`સાઇન આઉટ કરો`,openMenu:`નેવિગેશન મેનૂ ખોલો`,switchLight:`લાઇટ થીમ પર સ્વિચ કરો`,switchDark:`ડાર્ક થીમ પર સ્વિચ કરો`,switchToChinese:`ચાઇનીઝ પર સ્વિચ કરો`,switchToEnglish:`અંગ્રેજી પર સ્વિચ કરો`,modelsMenu:`મોડેલ પ્રકારો બ્રાઉઝ કરો`,agents:`એજન્ટ્સ`,logs:`લોગ`,analyticsMenu:`એનાલિટિક્સ પેજ`,notifications:`Notifications`,noNotifications:`No notifications yet`},auth:{createYourAccount:`તમારું એકાઉન્ટ બનાવો`,signIn:`સાઇન ઇન કરો`,email:`ઈમેલ`,password:`પાસવર્ડ`,emailPlaceholder:`you@example.com`,passwordPlaceholderSetup:`ઓછામાં ઓછા 8 અક્ષરો`,passwordPlaceholderLogin:`તમારો પાસવર્ડ`,setupDescription:`ઇમેઇલ અને પાસવર્ડ સેટ કરો જે આ ડેશબોર્ડને સુરક્ષિત કરશે.`,loginDescription:`તમારી કી, રૂટીંગ અને એનાલિટિક્સનું સંચાલન કરવા માટે સાઇન ઇન કરો.`,createAccount:`એકાઉન્ટ બનાવો`,creating:`બનાવી રહ્યું છે...`,signingIn:`સાઇન ઇન કરી રહ્યાં છીએ...`,loading:`લોડ કરી રહ્યું છે...`,newPasswordAutoComplete:`નવો-પાસવર્ડ`,currentPasswordAutoComplete:`વર્તમાન-પાસવર્ડ`,serverUnreachableBefore:`સર્વર સુધી પહોંચી શકાતું નથી. ખાતરી કરો કે બેકએન્ડ ચાલી રહ્યું છે (`,serverUnreachableAfter:`).`,setupCode:`સેટઅપ કોડ`,setupCodePlaceholder:`સર્વર લોગમાંથી કોડ`,setupCodeHint:`બીજા ઉપકરણમાંથી સેટઅપ કરવા માટે સ્ટાર્ટઅપ સમયે સર્વર લોગમાં પ્રિન્ટ થયેલ એક-વખતના કોડની જરૂર છે.`,changePassword:`પાસવર્ડ બદલો`,changeEmail:`ઈમેલ બદલો`,forgotPassword:`પાસવર્ડ ભૂલી ગયા?`,currentPassword:`વર્તમાન પાસવર્ડ`,newPassword:`નવો પાસવર્ડ`,newEmail:`નવો ઈમેલ`,resetCode:`રીસેટ કોડ`,resetCodePlaceholder:`સર્વર લોગમાંનો કોડ`,resetCodeHint:`કોડ સર્વર લોગમાં છે. તે ક્યારેય ઈમેલથી મોકલાતો નથી.`,forgotPasswordDescription:`રીસેટ કોડ બનાવવા નીચેના બટન પર ક્લિક કરો. કોડ સર્વર લોગમાં લખાય છે, ક્યારેય ઈમેલથી મોકલાતો નથી. નવો પાસવર્ડ સેટ કરવા અહીં દાખલ કરો.`,requestResetCode:`રીસેટ કોડ મોકલો`,requestingResetCode:`મોકલી રહ્યા છીએ…`,resetPassword:`પાસવર્ડ રીસેટ કરો`,resettingPassword:`રીસેટ થઈ રહ્યું છે…`,changingPassword:`બદલાઈ રહ્યું છે…`,changingEmail:`બદલાઈ રહ્યું છે…`,backToLogin:`સાઇન ઇન પર પાછા`,passwordChanged:`પાસવર્ડ સફળતાપૂર્વક બદલાયો.`,emailChanged:`ઈમેલ સફળતાપૂર્વક બદલાયો.`,passwordReset:`પાસવર્ડ રીસેટ થયો. કૃપા કરી સાઇન ઇન કરો.`,resetCodeDockerHint:`Docker માં ચલાવો છો? કોડ કન્ટેનર લોગમાં છે: docker logs <container>.`,desktopSessionFailed:`ડેશબોર્ડ લોકલ સર્વરમાં સાઇન ઇન કરી શક્યું નથી. SRouter બંધ કરીને ફરીથી ખોલો.`},common:{save:`સાચવો`,saving:`સાચવી રહ્યું છે...`,cancel:`રદ કરો`,discard:`કાઢી નાખો`,delete:`કાઢી નાખો`,confirm:`પુષ્ટિ કરો`,copy:`નકલ કરો`,copied:`નકલ કરી`,copyFailed:`કૉપિ થઈ શક્યું નહીં — ટેક્સ્ટ પસંદ કરીને જાતે કૉપિ કરો`,show:`બતાવો`,hide:`છુપાવો`,apply:`અરજી કરો`,applied:`લાગુ`,applying:`અરજી કરી રહ્યાં છીએ…`,active:`સક્રિય`,inactive:`નિષ્ક્રિય`,never:`ક્યારેય નહીં`,loading:`લોડ કરી રહ્યું છે...`,error:`ભૂલ`,noData:`હજુ સુધી કોઈ ડેટા નથી`,unsavedChanges:`વણસાચવેલા ફેરફારો`,saveChanges:`ફેરફારો સાચવો`,remove:`દૂર કરો`,unknownError:`અજાણી ભૂલ`,model:`મોડલ`,provider:`પ્રદાતા`,success:`સફળતા`,failures:`નિષ્ફળતાઓ`,dismiss:`કાઢી નાખો`,status:`સ્થિતિ`},settings:{title:`સેટિંગ્સ`,language:`ભાષા`,theme:`થીમ`,themeSystem:`સિસ્ટમ`,themeLight:`આછું`,themeDark:`ઘાટું`,searchLanguage:`ભાષાઓ શોધો...`,noLanguages:`કોઈ ભાષા મળી નથી`,sections:`સેટિંગ્સ વિભાગો`,sectionGeneral:`સામાન્ય`,sectionCompression:`કમ્પ્રેશન`,sectionAdvanced:`અદ્યતન`,sectionPreview:`પ્રીવ્યૂ`,generalDescription:`આ ડેશબોર્ડની ભાષા અને દેખાવ.`,advancedDescription:`કમ્પ્રેશન પાઇપલાઇન માટે મર્યાદાઓ અને સલામતી સ્વિચ.`,compressionTitle:`પ્રોમ્પ્ટ કમ્પ્રેશન`,compressionDescription:`કોડ, ભૂલો, પાથ, સંખ્યાઓ અને ટૂલ વ્યાખ્યાઓ સાચવીને રાઉટિંગ પહેલાં વિનંતીનું કદ ઘટાડો.`,compressionHelp:`દરેક વિનંતીને પ્રદાતાને મોકલતાં પહેલાં ફરીથી લખે છે જેથી ઓછા ટોકન વપરાય. કોડ, ભૂલો, ફાઇલ પાથ અને સંખ્યાઓ સુરક્ષિત રહે છે, અને તેમને નુકસાન કરતું કોઈપણ પુનર્લેખન રદ કરવામાં આવે છે.`,compressionMode:`મોડ`,compressionModeHelp:`બંધ હોય ત્યારે વિનંતીઓ જેમની તેમ મોકલાય છે. લોસલેસ માત્ર પુનરાવર્તિત અને બિનજરૂરી ટેક્સ્ટ દૂર કરે છે. સ્ટાન્ડર્ડ ટૂલ આઉટપુટ પણ ટૂંકું કરે છે. આક્રમક વધારામાં જૂના સંવાદો પણ સંક્ષિપ્ત કરે છે.`,compressionOff:`બંધ`,compressionLossless:`લોસલેસ`,compressionStandard:`સ્ટાન્ડર્ડ`,compressionAggressive:`આક્રમક`,compressionLossy:`લોસી`,compressionEngines:`એન્જિન`,compressionEnginesHelp:`દરેક એન્જિન એક પુનર્લેખન પગલું છે. કયા એન્જિન ચાલશે તે મોડ નક્કી કરે છે; અહીં કોઈને બંધ કરવાથી તે દરેક મોડમાંથી બાકાત રહે છે.`,engineDedup:`પુનરાવર્તિત બ્લોક`,engineDedupHelp:`વાતચીતમાં અગાઉ આવી ચૂકેલા ટેક્સ્ટ બ્લોકને તેના ટૂંકા સંદર્ભથી બદલે છે.`,engineLite:`ખાલી જગ્યાની સફાઈ`,engineLiteHelp:`છેડાની ખાલી જગ્યા કાપે છે, પુનરાવર્તિત કોરી લીટીઓ ભેગી કરે છે અને ડુપ્લિકેટ સિસ્ટમ સંદેશા દૂર કરે છે.`,engineReadLifecycle:`જૂની થયેલી ફાઇલ રીડ`,engineReadLifecycleHelp:`એ જ ફાઇલ પછીથી ફરી વંચાય કે સંપાદિત થાય ત્યારે અગાઉની ફાઇલ રીડને એક નોંધથી બદલે છે.`,engineToolfilter:`ટૂલ આઉટપુટ ફિલ્ટર`,engineToolfilterHelp:`બિલ્ડ, ટેસ્ટ અને ઇન્સ્ટોલ જેવા કમાન્ડ અને ટૂલ આઉટપુટને ટૂંકું કરે છે. ભૂલ અને સ્ટેક-ટ્રેસ લીટીઓ હંમેશાં જળવાઈ રહે છે.`,engineJsoncompact:`JSON કોષ્ટકો`,engineJsoncompactHelp:`સમાન ફીલ્ડ ધરાવતા લાંબા JSON એરેને સંક્ષિપ્ત કોષ્ટક તરીકે ફરીથી એન્કોડ કરે છે. તે ઉલટાવી શકાય તેવું છે, તેથી કંઈ ગુમાવાતું નથી.`,engineRelevance:`સુસંગતતા ફિલ્ટર`,engineRelevanceHelp:`કોઈ સંદેશ તેની કદ મર્યાદા વટાવે ત્યારે, તાજેતરના સંદેશ સાથે સૌથી ઓછા સંબંધિત વાક્યો દૂર કરે છે.`,engineAging:`જૂના સંવાદો`,engineAgingHelp:`તાજેતરના થોડા સિવાયના સંવાદોને એક ટૂંકા સારાંશમાં સંક્ષિપ્ત કરે છે, જેમાં પાથ, ભૂલો અને નિર્ણયો જળવાઈ રહે છે.`,engineHardBudget:`ટોકન મર્યાદા`,engineHardBudgetHelp:`વિનંતી ટોકન લક્ષ્યમાં બેસે ત્યાં સુધી સૌથી ઓછી ઉપયોગી લીટીઓ દૂર કરે છે.`,compressionAutoTrigger:`અંદાજિત ટોકન કરતાં વધુ થાય ત્યારે આપમેળે શરૂ કરો`,compressionAutoTriggerHelp:`આટલા ટોકનથી વધુ અંદાજિત વિનંતીઓ આપમેળે આક્રમક મોડ પર જાય છે. બંધ કરવા માટે ખાલી રાખો.`,compressionPrefixFreeze:`પુનરાવર્તિત પ્રોમ્પ્ટ પ્રીફિક્સ ફ્રીઝ કરો`,compressionPrefixFreezeHelp:`એક જ ટેક્સ્ટ ત્રણ વાર દેખાય પછી સિસ્ટમ પ્રોમ્પ્ટને જેમનું તેમ રહેવા દે છે, જેથી પ્રદાતા બાજુનું પ્રોમ્પ્ટ કેશિંગ ચાલુ રહે.`,compressionTrustProjectFilters:`પ્રોજેક્ટ ફિલ્ટર ફાઇલો પર વિશ્વાસ કરો`,compressionTrustProjectFiltersHelp:`કાર્યકારી ડિરેક્ટરીમાંથી પણ ટૂલ-આઉટપુટ ફિલ્ટર લોડ કરે છે. ડિફોલ્ટ રૂપે બંધ, કારણ કે કોઈ રિપોઝિટરી તેનો ઉપયોગ મોડલથી આઉટપુટ છુપાવવા કરી શકે.`,compressionStats:`કદ બચત`,compressionEstimatedTokensSaved:`અંદાજિત ટોકન બચત`,compressionPreview:`લાઇવ પ્રીવ્યૂ`,compressionPreviewDescription:`પ્રદાતાને શું મળશે તે જોવા માટે વિનંતીનું બોડી પાઇપલાઇનમાંથી પસાર કરો.`,compressionPreviewPlaceholder:`વિનંતીનું JSON અથવા સાદો ટેક્સ્ટ પેસ્ટ કરો`,compressionRunPreview:`પ્રીવ્યૂ ચલાવો`,updatesTitle:`અપડેટ્સ`,checkForUpdates:`અપડેટ્સ માટે તપાસો`,lastChecked:`છેલ્લે તપાસ્યું: {when}`,currentVersion:`વર્તમાન બિલ્ડ:`,updateAvailable:`અપડેટ ઉપલબ્ધ છે`,changelog:`શું બદલાયું છે`,upToDate:`અદ્યતન છે`,buildAhead:`આ બિલ્ડ અધિકૃત main કરતાં આગળ છે.`,buildDiverged:`આ બિલ્ડ અધિકૃત mainથી વિખૂટું પડ્યું છે.`,buildUnknown:`આ કસ્ટમ બિલ્ડની અધિકૃત main સાથે સરખામણી કરી શકાતી નથી.`,notGitInstall:`આ ઇન્સ્ટોલેશનમાં કમિટની માહિતી શામેલ નથી.`,checkFailed:`અપડેટ્સ તપાસી શકાયા નથી.`,contactsGithub:`તપાસો મેન્યુઅલી કરવામાં આવે છે અને GitHubનો સંપર્ક કરે છે.`,autoUpdateCheck:`આપમેળે અપડેટ તપાસ`,autoUpdateCheckHelp:`દિવસમાં એક વાર નવા રિલીઝ માટે GitHub તપાસે છે અને રિમાઇન્ડર બતાવે છે. મૂળભૂત રીતે બંધ.`,openReleases:`GitHub રિલીઝ ખોલો`,restartAfterUpdate:`બિલ્ડ પૂર્ણ થયા પછી SRouter ફરી શરૂ કરો.`,syncSchedule:`Model Sync`,syncScheduleHint:`How often the model catalog is refreshed from the server`,syncIntervalOff:`Off`,syncInterval6h:`Every 6h`,syncInterval12h:`Every 12h`,syncInterval24h:`Every 24h`},models:{title:`મોડલ્સ`,chatModelsTab:`ચેટ મોડલ્સ`,fusionTab:`ફ્યુઝન`,embeddingsTab:`એમ્બેડિંગ્સ`,imageTab:`છબી`,videoTab:`Video`,audioTab:`ઓડિયો`,imageDesc:`ટેક્સ્ટ-ટુ-ઇમેજ જનરેશન મોડલ્સ.`,videoDesc:`Text-to-video generation models.`,audioDesc:`ટેક્સ્ટ-ટુ-સ્પીચ અને સ્પીચ-ટુ-ટેક્સ્ટ મોડલ્સ.`,mediaHint:`દ્વારા જનરેટ કરો`,mediaEmpty:`હજુ સુધી કોઈ મોડલ નથી. તેઓ કેટલોગમાંથી સમન્વયિત થાય છે.`,ttsHeading:`ટેક્સ્ટ ટુ સ્પીચ`,sttHeading:`સ્પીચ ટુ ટેક્સ્ટ`,sttHint:`દ્વારા ટ્રાંસ્ક્રાઇબ કરો`,sttEmpty:`હજુ સુધી કોઈ સ્પીચ-ટુ-ટેક્સ્ટ મોડલ નથી. તેઓ કેટલોગમાંથી સમન્વયિત થાય છે.`,newBadge:`નવી`,monthlyTokenBudget:`માસિક ટોકન બજેટ`,remaining:`બાકી`,used:`વપરાયેલ`,usedScopeHint:`Chat requests only, since the start of this calendar month, summed over every model in the active chain — custom endpoints included. Traffic you send to a provider outside SRouter is not counted.`,legendRemainingTitle:`Remaining / monthly budget for {name} ({platform})`,noPublishedQuota:`+{count} with no published quota`,noPublishedQuotaTitle:`These models have no documented monthly token budget, so there is no remaining figure to show.`,of:`ના`,showAllModels:`બધા {count} મોડલ્સ બતાવો`,showLess:`ઓછું બતાવો`,vision:`દ્રષ્ટિ`,visionTitle:`ઇમેજ ઇનપુટ સ્વીકારે છે`,tools:`સાધનો`,toolsTitle:`સ્ટ્રક્ચર્ડ ટૂલ કૉલ્સ બહાર કાઢે છે, તેથી તે ટૂલ-બેરિંગ વિનંતીઓ માટે પાત્ર છે`,retired:`બંધ કરાયું`,penalty:`−{value} દંડ`,obs:`{count} obs`,tokPerMonth:`{count} tok/mo`,rpmLimit:`{count} rpm`,rpdLimit:`{count} rpd`,noKey:`કોઈ ચાવી નથી`,dragToReorder:`ફરીથી ગોઠવવા માટે ખેંચો`,dragToReorderGroup:`મૉડલને ફરીથી ગોઠવવા માટે ખેંચો`,moveToRank:`શ્રેણીક્રમે જાઓ`,providerCount:`{count} પ્રદાતાઓ`,servedBy:`{providers} દ્વારા સેવા આપવામાં આવે છે`,viewProviders:`પ્રદાતાઓ જુઓ`,backToModels:`મોડલ્સ પર પાછા`,providersHeading:`આ મોડેલની સેવા આપતા પ્રદાતાઓ`,codeSnippetHeading:`આ મોડેલનો ઉપયોગ કરો`,modelNotFound:`આ મૉડલ ઉપલબ્ધ નથી, અથવા તેમાં કોઈ રૂપરેખાંકિત પ્રદાતાઓ નથી.`,providerIdsHeading:`પ્રદાતા મોડેલ આઈડી`,providerIdsHint:`દરેક પ્રદાતામાં નિષ્ફળ થવા માટે એકીકૃત મોડેલ id અથવા એક પ્રદાતાને પિન કરવા માટે પ્રદાતા-વિશિષ્ટ id મોકલો.`,copyModelName:`મોડેલ નામની નકલ કરો`,settingsHeading:`પ્રદાતા સેટિંગ્સ`,settingsHint:`કેટલોગ મોડેલોમાં સ્થાનિક સંપાદનો સમગ્ર કેટલોગ સમન્વયનમાં રાખવામાં આવે છે. કાઢી નાખેલ કેટેલોગ મોડલ જ્યાં સુધી તમે તેને રૂપરેખા દ્વારા ફરીથી ઉમેરશો નહીં ત્યાં સુધી કાઢી નાખવામાં આવે છે.`,catalogModel:`સૂચિ`,customModel:`કસ્ટમ`,discoveredModel:`શોધાયેલ`,localOverride:`સ્થાનિક ઓવરરાઇડ`,displayName:`ડિસ્પ્લે નામ`,sizeLabel:`ક્ષમતા સ્તર`,sizeLabelHint:`Frontier/Large/Medium/Small બુદ્ધિ અક્ષ નક્કી કરે છે: ઊંચું સ્તર હંમેશાં નીચલા સ્તર કરતાં આગળ રહે છે, અને એક જ સ્તરની અંદર બુદ્ધિ ક્રમ સ્કોરને હલાવતો રહે છે. માન્ય સ્તર વગરના મોડલને આ અક્ષ પર સૌથી ઓછો સ્કોર મળે છે, પણ બુદ્ધિ ત્રણ અક્ષોમાંથી માત્ર એક છે — સારી વિશ્વસનીયતા અને ઝડપ હોય તો તે તોય રૂટ જીતી શકે છે.`,sizeLabelNone:`કંઈ નહીં (સૌથી ઓછો બુદ્ધિ સ્કોર)`,contextWindow:`સંદર્ભ`,inFallback:`સાંકળમાં`,saveModelSettings:`મોડલ સેટિંગ્સ સાચવો`,aggregateBudget:`{count}/mo`,aggregateBudgetTitle:`આ મોડેલના પ્રદાતાઓમાં દર મહિને કુલ મફત ટોકન્સ`,rateRpm:`{count} RPM`,rateRpd:`{count} RPD`,rateTitle:`દર-મર્યાદિત — કોઈ નિશ્ચિત માસિક ટોકન બજેટ નથી`,rateLimitUsage:`{kind} {used}/{limit}`,rateLimitUsageTitle:`સમય-વિન્ડો દર મર્યાદાનો વપરાશ (વપરાયેલ / મર્યાદા), સૌથી વધુ બાકી ક્ષમતા ધરાવતા પ્રદાતાનો`,splitOut:`આ નકલને મર્જ કરશો નહીં`,splitOutHint:`આ પ્રદાતાની નકલને એકીકૃત મોડેલમાં મર્જ કરવાને બદલે તેની પોતાની અલગ એન્ટ્રી આપો. તમે તેને નકલના પોતાના પૃષ્ઠ પરથી પાછું મર્જ કરી શકો છો.`,splitUndo:`પાછા મર્જ કરો`,splitUndoHint:`આ નકલ તેના એકીકૃત મોડેલથી અલગ રાખવામાં આવી છે. તેના તમામ પ્રદાતાઓમાં ફરીથી નિષ્ફળ થવા માટે તેને પાછું મર્જ કરો.`,splitBadge:`અલગ રાખ્યું`,noData:`કોઈ ડેટા નથી`,noDataTitle:`હજુ સુધી કોઈ વિનંતિઓ રેકોર્ડ કરવામાં આવી નથી — આ પ્રદાતા માટે વિશ્વસનીયતા અને ઝડપ માપી નથી.`,bestOfN:`{count} શ્રેષ્ઠ`,perProviderScores:`પ્રદાતા દીઠ સ્કોર્સ: {list}`,columnModel:`મોડલ`,columnOn:`ચાલુ`,noModelsBefore:`કોઈ મોડલ ઉપલબ્ધ નથી. પર API કીઓ ઉમેરો`,keysPageLink:`કી પાનું`,noModelsAfter:`પ્રથમ`,hiddenNoKeys:`છુપાવેલ (કોઈ કી નથી): {platforms}`,searchPlaceholder:`મોડલ્સ અથવા પ્રદાતાઓ શોધો...`,clearSearch:`શોધ સાફ કરો`,ctxAny:`કોઈપણ સંદર્ભ`,ctxBadge:`{size} ctx`,ctxTitle:`સંદર્ભ વિન્ડો`,copyModelId:`મૉડલ આઈડી કૉપિ કરો`,showingCount:`{total} મોડલ્સના {shown}`,clearFilters:`ફિલ્ટર્સ સાફ કરો`,noMatches:`કોઈ મોડલ તમારા ફિલ્ટર સાથે મેળ ખાતા નથી.`,noModelsTitle:`કોઈ મોડલ ગોઠવેલ નથી`,intelligenceRank:`બુદ્ધિ`,speedRank:`ઝડપ`,rankHint:`કૅટલૉગમાં ક્રમ — 1 શ્રેષ્ઠ છે.`,limitRpm:`RPM`,limitRpd:`RPD`,limitTpm:`TPM`,limitTpd:`TPD`,limitRpmHint:`પ્રતિ મિનિટ વિનંતીઓ. કોઈ મર્યાદા ન રાખવા ખાલી છોડો.`,limitRpdHint:`પ્રતિ દિવસ વિનંતીઓ. કોઈ મર્યાદા ન રાખવા ખાલી છોડો.`,limitTpmHint:`પ્રતિ મિનિટ ટોકન. કોઈ મર્યાદા ન રાખવા ખાલી છોડો.`,limitTpdHint:`પ્રતિ દિવસ ટોકન. કોઈ મર્યાદા ન રાખવા ખાલી છોડો.`,usageThisMonth:`માસિક વપરાશ`,usageEmpty:`આ મહિને હજી કોઈ વિનંતી નથી.`,usageRequestsMonth:`આ મહિને {count} વિનંતી`,aliasMergeHeading:`Merge model aliases`,aliasMergeHint:`Requests for the unified model id are also served through these custom-provider aliases (e.g. custom:my-alias).`,aliasMergeAdd:`Add`,aliasMergeRemove:`Remove`,bulkToggle:`Enable or disable every shown model`,enableAll:`Enable all`,disableAll:`Disable all`,enableAllHint:`Turn on every model shown, then Save`,disableAllHint:`Turn off every model shown, then Save`,enabledOfShown:`{enabled} of {shown} shown models are in the chain`},strategies:{explore:`માપ્યા વગરના મોડલ્સ એક્સપ્લોર કરો`,exploreHint:`Give models with no reliability or speed data a 10% chance to go first so they build a track record. Your real request is what gets sent, so it may be answered by an untested model. For a custom endpoint, use Probe endpoint on the Keys page to test it without live traffic.`,keySelection:`કી પસંદગી`,keySelectionAuto:`આપોઆપ`,keySelectionLeastRemaining:`સૌથી ઓછું બાકી`,keySelectionHint:`એક જ પ્રદાતાની અનેક કીમાંથી કેવી રીતે પસંદ કરવું. આપોઆપ હાલનું રોટેશન જાળવે છે; સૌથી ઓછું બાકી અવલોકન કરેલા ક્વોટા પ્રમાણે કીને ક્રમમાં ગોઠવે છે અને સૌથી વધુ બાકી હોય તે કી પહેલાં અજમાવે છે.`,cooldownCeiling:`સૌથી લાંબો સ્વચાલિત કૂલડાઉન`,cooldownCeilingHint:`રાઉટરના પોતાના અંદાજો નિષ્ફળ થતી કી અને મોડેલ જોડીને કેટલો સમય બાજુ પર રાખી શકે તે મર્યાદિત કરે છે. સીડી સામાન્ય રીતે 2 મિનિટ, 10 મિનિટ, 1 કલાક, 24 કલાક વધે છે, અને ક્રેડિટ કે સ્તરની ભૂલો એક દિવસ માટે બાજુ પર રાખે છે. પ્રદાતાએ જણાવેલા ફરી પ્રયાસના સમય ક્યારેય ટૂંકા કરાતા નથી.`,cooldownCeilingDefault:`ડિફૉલ્ટ (24 કલાક સુધી)`,cooldownCeiling10m:`10 મિનિટ`,cooldownCeiling1h:`1 કલાક`,cooldownCeiling6h:`6 કલાક`,moreOptions:`વધુ વિકલ્પો`,peakActive:`(વ્યસ્ત સમય)`,peakActiveHint:`વ્યસ્ત-સમય સમાયોજન અત્યારે સક્રિય છે, તેથી આ પ્રીસેટના પોતાના વજન નથી: ઝડપના વજનનો 60% વિશ્વસનીયતા પર ખસેડાયો છે.`,peakAdjust:`વ્યસ્ત-સમય સમાયોજન`,peakAdjustHint:`મૂળભૂત રીતે બંધ. નીચેના સમયગાળામાં ઝડપના વજનનો 60% વિશ્વસનીયતા પર ખસે છે — મફત રિલે ત્યારે સૌથી વ્યસ્ત હોય છે, તેથી કાચી ઝડપ કરતાં વિશ્વસનીયતા સફળતાનું વધુ સારું અનુમાન આપે છે. «સૌથી ઝડપી» અને «સૌથી વિશ્વસનીય» અસ્પૃષ્ટ રહે છે.`,peakFrom:`થી`,peakTo:`સુધી`,peakTimezoneLabel:`સમય ક્ષેત્ર`,peakUseBrowserTimezone:`બ્રાઉઝરનું સમય ક્ષેત્ર વાપરો`,peakTimezoneInvalid:`અજ્ઞાત સમય ક્ષેત્ર.`,peakExemptNote:`આ પ્રીસેટ અસ્પૃષ્ટ રહે છે — તે પહેલેથી જ ઝડપ/વિશ્વસનીયતા સમાધાનના એક છેડે છે.`,title:`રૂટીંગ વ્યૂહરચના`,description:`રૂટીંગ વ્યૂહરચના પસંદ કરો. મેન્યુઅલ મોડમાં તમે ઓર્ડર સેટ કરવા માટે ખેંચો છો; અન્ય વ્યૂહરચનાઓ સમગ્ર વિશ્વસનીયતા, ઝડપ અને બુદ્ધિમત્તા પર લાઇવ સ્કોર દ્વારા રૂટ કરે છે.`,weightsSummary:`વિશ્વસનીયતા {reliability}% · ઝડપ {speed}% · બુદ્ધિ {intelligence}%`,guardrails:`ગાર્ડરેલ્સ`,guardrailsTooltip:`હંમેશા-ચાલુ રક્ષક: ફ્રી-ક્વોટા હેડરૂમ × જીવંત દર-મર્યાદા દંડ. 1.0 ની નીચેનો અર્થ છે કે મોડલ પાછળ રાખવામાં આવી રહ્યું છે.`,scoreTooltip:`અંતિમ રૂટીંગ સ્કોર = ત્રણ અક્ષોની ભારાંકિત સરેરાશ, રક્ષકો દ્વારા ગુણાકાર. ઉચ્ચ માર્ગો પ્રથમ.`,modeManualHint:`મેન્યુઅલ મોડ: વિનંતીઓ નીચેના ક્રમને અનુસરે છે, ઉપરથી નીચે. ફરીથી ગોઠવવા માટે ખેંચો.`,modeScoreHint:`લાઇવ ટ્રાફિકથી સ્કોર અપડેટ. નીચેનો ક્રમ એ છે કે વિનંતીઓ હમણાં કેવી રીતે રૂટ કરવામાં આવે છે.`,manual:`મેન્યુઅલ`,manualBlurb:`તમે નીચે સેટ કરેલા ચોક્કસ ક્રમમાં રૂટ કરો. ફરીથી ગોઠવવા માટે હેન્ડલ્સને ખેંચો. કોઈ સ્કોરિંગ નથી; સાંકળ ઉપરથી નીચે સુધી અનુસરવામાં આવે છે.`,balanced:`સંતુલિત`,balancedBlurb:`વિશ્વસનીયતા લીડ્સ (50%), ઝડપ અને બુદ્ધિ સમાન રીતે (25% દરેક) સાથે. એક સમજદાર ઓલરાઉન્ડ ડિફોલ્ટ.`,smartest:`સૌથી સ્માર્ટ`,smartestBlurb:`સૌથી સક્ષમ મોડેલને પ્રાધાન્ય આપો જે હજી પણ કાર્ય કરે છે. ઇન્ટેલિજન્સ 55%, વિશ્વસનીયતા 35%, ઝડપ 10%.`,fastest:`સૌથી ઝડપી`,fastestBlurb:`સૌથી ઝડપી મોડેલને પ્રાધાન્ય આપો જે હજી પણ કાર્ય કરે છે. ઝડપ 55%, વિશ્વસનીયતા 35%, બુદ્ધિ 10%.`,reliable:`સૌથી વિશ્વસનીય`,reliableBlurb:`બધા ઉપર સફળતા દર મહત્તમ. વિશ્વસનીયતા 70%, ઝડપ અને બુદ્ધિ 15% દરેક.`,custom:`કસ્ટમ`,customBlurb:`સ્લાઇડર્સ વડે વિશ્વસનીયતા, ઝડપ અને બુદ્ધિનું તમારું પોતાનું સંતુલન સેટ કરો. પ્રીસેટ્સ જેવું જ એન્જિન, ફક્ત તમારું વજન.`,adjust:`એડજસ્ટ કરો`,customWeights:`કસ્ટમ વજન`,customWeightsHelp:`સ્લાઇડર્સ સ્વતંત્ર છે; ઓટો-બેલેન્સને 100% પર શેર કરે છે.`,weightReliability:`વિશ્વસનીયતા`,weightSpeed:`ઝડપ`,weightIntelligence:`બુદ્ધિ`,weightRequired:`ઓછામાં ઓછું એક વજન શૂન્યથી ઉપર હોવું જોઈએ.`,scoreColumn:`સ્કોર`},penaltyInspector:{title:`રાઉટર દબાણ`,subtitle:`છેલ્લા {minutes} મિનિટથી દંડ, કૂલડાઉન અને નિષ્ફળતા`,rowCount:`{count} સક્રિય`,offChain:`સાંકળ બંધ`,penaltyValue:`દંડ {value}`,factor:`સ્કોર x{factor}`,noCooldown:`કૂલડાઉન નથી`,cooldownChip:`{key} - {time}`,resetCooldown:`Reset cooldown`,clearAll:`બધું સાફ કરો`,clearAllHint:`બધા કૂલડાઉન, દંડ અને નિષ્ફળતાની શ્રેણીઓ હમણાં જ દૂર કરો. આગામી વાસ્તવિક પરિણામોમાંથી દબાણ ફરી બને છે.`,errorsHeading:`{count} તાજેતરની ભૂલો`,noRecentErrors:`તાજેતરની કોઈ ભૂલો નથી`,noKey:`કોઈ ચાવી નથી`,reasons:{penalty:`દંડ કર્યો`,cooldown:`ઠંડક`,recent_errors:`નિષ્ફળ`}},keys:JSON.parse(`{"pageTitle":"કીઓ","pageDescription":"પ્રદાતા ઓળખપત્રો અને એકીકૃત API કી જેની સાથે તમારી એપ્લિકેશનો કનેક્ટ થાય છે.","tabProviders":"પ્રદાતાઓ","checklistSummary":"{total} માંથી {configured} પ્રદાતાઓ ગોઠવેલા છે","checklistKeyless":"કીની જરૂર નથી","checklistNoKeyTip":"હજી સુધી કોઈ કી ઉમેરી નથી. ઉમેરવા માટે ક્લિક કરો.","checklistSignupLink":"ખાતું બનાવવા અને કી મેળવવા {provider} ખોલો","checklistKeylessTip":"કી વિના કામ કરે છે.","tabQuotaSignals":"ક્વોટા સંકેતો","tabApiKey":"એકીકૃત API કી","tabAnthropic":"Anthropic","unifiedKey":"તમારી એકીકૃત API કી","regenerate":"પુનર્જીવિત કરો","showKey":"બતાવો","hideKey":"છુપાવો","copyKey":"નકલ કરો","copyFullKey":"સંપૂર્ણ કી કૉપિ કરો","copiedKey":"નકલ કરી","baseUrl":"આધાર URL","endpointChat":"ચેટ","endpointResponses":"પ્રતિભાવો","endpointEmbeddings":"એમ્બેડિંગ્સ","endpointEmbeddingsHint":"model: \\"auto\\" અથવા એમ્બેડિંગ્સ ટૅબમાંથી કુટુંબ","endpointMessages":"સંદેશાઓ","endpointMessagesHint":"Anthropic- સુસંગત (Claude)","quickStart":"Quick start","quickStartDesc":"Use auto for your active routing chain, or auto:fast to prioritize speed across enabled models. Replace $YOUR_KEY with your unified API key.","exampleAuto":"Auto mode (use the active chain)","exampleFast":"Fast mode (prioritize speed)","anthropicTitle":"Claude (Anthropic) મોડલ્સ","anthropicDesc":"આ સર્વર પર Claude અથવા Anthropic SDK ક્લાયંટને નિર્દેશ કરો. Anthropic ક્લાયન્ટ્સ Claude મોડલ નામો મોકલે છે — દરેકને ઑટો પર મેપ કરો (રાઉટર મફત મૉડલ પસંદ કરે છે) અથવા કોઈ ચોક્કસને પિન કરો.","anthropicBaseUrl":"આધાર URL","anthropicAuth":"ઓથ હેડર","anthropicAuto":"ઓટો — રાઉટર શ્રેષ્ઠ મોડલ પસંદ કરે છે","anthropicSave":"મેપિંગ સાચવો","anthropicSaved":"સાચવેલ","anthropicNote":"Anthropic ક્લાયન્ટ્સ તેમના બિલ્ટ-ઇન Claude મોડેલ નામો રાખે છે; ઉપરોક્ત મેપિંગ નક્કી કરે છે કે દરેક તમારા પૂલમાં કેવી રીતે જાય છે.","familyDefault":"ડિફૉલ્ટ","familyOpus":"ઓપસ","familySonnet":"સૉનેટ","familyHaiku":"હાઈકુ","selectPlatform":"પ્રદાતા પસંદ કરો","addKey":"કી ઉમેરો","keyAdded":"કી ઉમેરી","endpointKeysShareModels":"એક જ એન્ડપોઇન્ટની કી તેના મોડેલ વહેંચે છે.","export":"નિકાસ કરો","exportAll":"બધી કીઓ","exportHealthy":"માત્ર સ્વસ્થ","exportKeys":"API કી નિકાસ કરો","exportFormat":"ફોર્મેટ","exportHealthyOnly":"માત્ર સ્વસ્થ કીઓ","exportHealthyOnlyDesc":"ચાવીઓ બાકાત રાખો જે હાલમાં સ્વાસ્થ્ય તપાસમાં નિષ્ફળ રહી છે","exportWillExport":"નિકાસ કરશે","exportKey":"ચાવી","exportKeys plural":"કીઓ","exporting":"નિકાસ કરી રહ્યું છે...","exportDownload":"ડાઉનલોડ કરો","exportSuccess":"નિકાસ કરેલ {count} કી","adding":"ઉમેરી રહ્યું છે...","selectProvider":"પ્રદાતા પસંદ કરો...","accountId":"એકાઉન્ટ ID","label":"લેબલ","noKeyNeeded":"(કોઈ ચાવીની જરૂર નથી)","outboundProxy":"આઉટબાઉન્ડ પ્રોક્સી","outboundProxyDescription":"આઉટબાઉન્ડ એલએલએમ વિનંતીઓને પ્રોક્સી દ્વારા રૂટ કરો. SOCKS5, HTTP અને HTTPS ને સપોર્ટ કરે છે.","proxyUrl":"પ્રોક્સી URL","saveProxy":"સાચવો","savingProxy":"સાચવી રહ્યું છે...","proxyLoadFailed":"પ્રોક્સી સેટિંગ્સ લોડ કરી શકાઈ નથી.","proxyMode":"Mode","proxyModeForward":"Forward proxy","proxyModeFetchRelay":"Fetch relay","relayToken":"Relay token","relayTokenConfigured":"Configured. Leave unchanged to keep.","relayTokenPlaceholder":"Relay bearer token (optional)","relayHeadersHint":"The relay reads the destination and its own credential from","addCustom":"કસ્ટમ OpenAI- સુસંગત મોડલ ઉમેરો","addCustomDescription":"કોઈપણ OpenAI- સુસંગત એન્ડપોઈન્ટ પર ચેટ, એમ્બેડિંગ, છબી અથવા ઑડિઓ મૉડલને પૉઇન્ટ કરો. API કી સ્થાનિક સર્વરો માટે વૈકલ્પિક છે.","customType":"પ્રકાર","customTypeChat":"ચેટ","customTypeEmbedding":"એમ્બેડિંગ","customTypeImage":"છબી","customTypeAudio":"ઓડિયો","customTypeTranscription":"Transcription","customBaseUrl":"આધાર URL","customModels":"મોડલ્સ","customModel":"મોડલ","customDisplayName":"ડિસ્પ્લે નામ","customDisplayNamePerModel":"પ્રતિ-મોડલ","customDisplayNameOptional":"વૈકલ્પિક","customFamily":"કુટુંબ","customFamilyPlaceholder":"મોડલ id માટે ડિફોલ્ટ","customApiKey":"API કી","customCapabilities":"ક્ષમતાઓ","addModel":"મોડેલ ઉમેરો","modelAdded":"મોડલ ઉમેર્યું","addModels":"{count} મોડલ્સ ઉમેરો","addEmbeddingModel":"એમ્બેડિંગ ઉમેરો","addImageModel":"છબી મોડેલ ઉમેરો","addAudioModel":"ઓડિયો મોડલ ઉમેરો","addTranscriptionModel":"Add transcription model","addingCustom":"ઉમેરી રહ્યું છે...","discoverModels":"મોડેલ મેળવો","probeNow":"એન્ડપોઇન્ટ ચકાસો","probeConfirm":"વધુમાં વધુ 3 પરીક્ષણ વિનંતીઓ મોકલવી?","probeCapabilities":"તર્ક: {reasoning} · ટૂલ્સ: {tools}","probeCapYes":"હા","probeCapNo":"ના","probeCapUnknown":"અજ્ઞાત","probeSuccess":"{model} {latency}ms-માં ચકાસાયું","probeFailed":"ચકાસણી નિષ્ફળ થઈ: {reason}","discoverTitle":"આ એન્ડપોઇન્ટ પરના મોડેલ","discoverHint":"નોંધણી માટે મોડેલ પસંદ કરો. પહેલેથી ઉમેરેલા લોક રહે છે.","discoverEmpty":"આ એન્ડપોઇન્ટે કોઈ મોડેલ પરત કર્યું નથી.","discoverAlreadyAdded":"ઉમેરાયું","discoverSelectAll":"બધા પસંદ કરો","modelsAdded":"{count} મોડેલ ઉમેરાયા","getApiKey":"API કી મેળવો","deleteKeyConfirm":"આ કી કાઢી નાખીએ? આ પૂર્વવત્ કરી શકાતું નથી.","checkAll":"બધા તપાસો","checking":"તપાસી રહ્યું છે...","editLabel":"લેબલ સંપાદિત કરો","saveLabel":"લેબલ સાચવો","unifiedKeyDescBefore":"આનો તમારા OpenAI તરીકે ઉપયોગ કરો","unifiedKeyDescAfter":"; તે આ પ્રોક્સીની વિનંતીઓને પ્રમાણિત કરે છે.","serverUnreachableBefore":"ચાલુ સર્વર સુધી પહોંચી શકાતું નથી","serverUnreachableAfter":". ખાતરી કરો કે બેકએન્ડ ચાલી રહ્યું છે. npm રન dev બંને શરૂ થાય છે, અને સર્વર લોગ સર્વર ઉપસર્ગ હેઠળ છાપે છે.","paneProviderKey":"પ્રદાતા કી","paneImportFile":"ફાઇલ આયાત કરો","paneCustomEndpoint":"કસ્ટમ એન્ડપોઇન્ટ","platform":"પ્લેટફોર્મ","hideAdded":"ઉમેરેલા પ્રદાતાઓ છુપાવો","apiToken":"API ટોકન","keyOptionalPlaceholder":"વૈકલ્પિક","bearerTokenPlaceholder":"બેરર ટોકન","pasteKeyPlaceholder":"કી અહીં પેસ્ટ કરો","pasteSeveral":"એકથી વધુ પેસ્ટ કરો","keyOptionalHint":"વૈકલ્પિક: અનામી મફત સ્તર માટે ખાલી છોડો (પ્રતિ IP દર-મર્યાદિત), અથવા તમારું એકાઉન્ટ વાપરવા માટે તમારી પોતાની કી પેસ્ટ કરો.","enable":"સક્ષમ કરો","noProviderKeys":"હજી સુધી કોઈ પ્રદાતા કી નથી. રાઉટીંગ શરૂ કરવા માટે ઉપર એક ઉમેરો.","filterPlaceholder":"ફિલ્ટર પ્રદાતાઓ અથવા કીઓ","filterAll":"બધા","filterHealthy":"સ્વસ્થ","filterIssues":"મુદ્દાઓ","filterDisabled":"અક્ષમ","noFilterMatch":"કોઈ પ્રદાતા તમારા ફિલ્ટર્સ સાથે મેળ ખાતા નથી.","providerCountSummary":"{providers} પ્રદાતાઓ · {keys} કી","summaryHealthy":"{count} સ્વસ્થ","summaryIssueOne":"{count} મુદ્દો","summaryIssueOther":"{count} મુદ્દાઓ","providerActions":"પ્રદાતા ક્રિયાઓ","routeViaProxy":"પ્રોક્સી મારફતે રૂટ","checkNow":"હવે તપાસો","syncModels":"Sync models with upstream","syncModelsResult":"Model list synced: {added} added, {total} live","syncModelsFailed":"Model sync failed: {reason}","syncAllModels":"Sync all providers","syncAllPending":"Syncing…","syncAllResult":"Synced {count} provider(s): {registered} model(s) registered","syncAllFailed":"Sync all failed: {reason}","syncAllNoChanges":"All provider rosters are already up to date","syncAllDialogTitle":"Sync Results","syncAllDialogSummary":"Changes detected in {changed} of {total} providers","syncAllNew":"+{count} new","syncAllUpdated":"{count} updated","syncAllRetired":"{count} retired","syncAllNewModels":"New models","syncAllUpdatedModels":"Updated models","syncAllRetiredModels":"Retired models","syncAllDialogClose":"Done","proxyEnvHintBefore":"દ્વારા પણ રૂપરેખાંકિત કરી શકાય છે","proxyEnvHintAfter":"પર્યાવરણ ચલ (અગ્રતા લે છે). અક્ષમ કરવા માટે ખાલી છોડો. ઉદાહરણો:","importKeys":"પ્રદાતા કી આયાત કરો","importKeysDescription":".env, JSON, JSONC, CSV, Markdown અથવા ટેક્સ્ટ ફાઇલો અપલોડ કરો.","importFiles":"ફાઇલો","importFileCount":"{count} પસંદ કર્યું","previewFiles":"પૂર્વાવલોકન","previewing":"પૂર્વાવલોકન કરી રહ્યું છે...","selected":"પસંદ કરેલ","provider":"પ્રદાતા","keyName":"કી નામ","keyValue":"કી મૂલ્ય","chooseProvider":"પ્રદાતા પસંદ કરો","noPreviewKeys":"તે ફાઇલોમાં કોઈ કીઓ મળી નથી.","skippedItems":"છોડ્યું:","moreItems":"+{count} વધુ","importSelected":"{count} આયાત કરો","importing":"આયાત કરી રહ્યું છે...","noImportSelection":"પ્રદાતા સાથે ઓછામાં ઓછી એક પંક્તિ પસંદ કરો.","duplicate":"ડુપ્લિકેટ","duplicatesFound":"{count} ડુપ્લિકેટ(ઓ) મળી આવ્યા છે — પહેલેથી જ અસ્તિત્વમાં છે અને તેને છોડવામાં આવશે.","importResult":"આયાત કરેલ {imported}; નિષ્ફળ {failed}.","importModelCount":"+{count} મોડેલ","importResultWithModels":"આયાત કરેલ {imported}; {models} મોડેલ નોંધાયેલ; નિષ્ફળ {failed}.","confirmRemove":"પુષ્ટિ કરો?","quotaSignalsTitle":"ક્વોટા સંકેતો","quotaSignalsEmptyTitle":"હજુ સુધી કોઈ ક્વોટા અવલોકનો નથી","quotaSignalsEmptyDesc":"પ્રદાતાઓ દર-મર્યાદા હેડર, ક્વોટા ભૂલો અથવા માન્યતા સંકેતો પરત કરે તે પછી આ ભરાય છે.","quotaKeyRef":"કી #{id}","quotaPoolRef":"પૂલ {pool}","quotaLimit":"મર્યાદા","quotaRemaining":"બાકી","quotaReset":"રીસેટ કરો","quotaObserved":"અવલોકન કર્યું","tabAgents":"એજન્ટ્સ","familyGeminiPro":"Gemini Pro","familyGeminiFlash":"Gemini Flash","familyGeminiFlashLite":"Gemini Flash-Lite","geminiTitle":"Gemini મોડેલ મેપિંગ","geminiDesc":"Gemini Pro, Flash અને Flash-Lite નામોને Auto અથવા કેટલોગના ચોક્કસ મોડેલ સાથે મેપ કરો.","compatibilityTitle":"એજન્ટ સુસંગતતા","compatibilityDesc":"વૈકલ્પિક સુસંગતતા સપાટીઓ અને Claude Code મોડેલ શોધ નિયંત્રિત કરો.","ollamaMode":"Ollama એમ્યુલેશન","ollamaModeHint":"લૂપબેક પર ખુલ્લો મોડ ક્યારેય અપ્રમાણિત LAN ટ્રાફિક સ્વીકારતો નથી.","ollamaOff":"બંધ","ollamaLoopback":"લૂપબેક પર ખુલ્લું","ollamaKeyRequired":"API કી જરૂરી છે","claudeAliases":"Claude Code શોધ ઉપનામો","claudeAliasesHint":"ગેટવેનું મોડેલ પસંદગીકાર કેટલોગની યાદી બતાવી શકે તે માટે claude/<model> ઉપનામો ખુલ્લા કરો.","mcpServer":"MCP સર્વર","mcpServerHint":"એજન્ટ ક્લાયન્ટ માટે /mcp એન્ડપોઇન્ટ ખુલ્લું કરે છે. નવા ઇન્સ્ટોલમાં તે બંધ રહે છે.","urlTokensTitle":"રદ કરી શકાય તેવા URL ટોકન્સ","urlTokensDesc":"ફક્ત હેડર વગરના ક્લાયન્ટ્સ માટે. URL ટોકન્સ ઇતિહાસ અને લોગમાં લીક થઈ શકે છે, તેથી જ્યારે જરૂર ન રહે ત્યારે તેમને રદ કરો.","urlTokenLabel":"ટોકન લેબલ","createUrlToken":"ટોકન બનાવો","urlTokenOnce":"આ ટોકન હમણાં કૉપિ કરો. તે ફરીથી બતાવવામાં આવશે નહીં.","revoked":"રદ કરેલ","revoke":"રદ કરો","modelScope":"મૉડલ વ્યાપ","modelScopeDesc":"આ કીને ચોક્કસ મૉડલ ID પૂરતી મર્યાદિત કરો. અન્ય કોઈપણ મૉડલ માટે રાઉટર આ કીને છોડી દે છે.","modelScopeAdd":"મૉડલ ID લખો અને Enter દબાવો","modelScopeEmpty":"કોઈ વ્યાપ સેટ નથી — આ કી તેના પ્રદાતાના બધા મૉડલ માટે કામ કરે છે.","modelScopeClear":"વ્યાપ દૂર કરો","modelScopeBadgeOne":"મર્યાદિત · 1 મૉડલ","modelScopeBadgeOther":"મર્યાદિત · {count} મૉડલ","modelPicker":{"title":"આ કી કયા મૉડલ માટે કામ કરવી જોઈએ?","hint":"તમારી {provider} કી ઉમેરાઈ ગઈ છે અને હાલમાં તે નીચેના દરેક મૉડલ માટે કામ કરે છે. જે મૉડલ માટે આ કીનો ઉપયોગ ન થવો જોઈએ તેની ટિક હટાવો — રાઉટર તેમના માટે આ કીને છોડી દેશે.","count":"{total} માંથી {selected} પસંદ કરેલા","allNote":"બધું પસંદ કરેલું છે — કંઈ સાચવવામાં આવતું નથી, અને પછીથી કૅટલૉગમાં ઉમેરાતા મૉડલ પણ આ કીનો ઉપયોગ કરશે.","subsetNote":"આ કી ફક્ત પસંદ કરેલા મૉડલ પૂરતી મર્યાદિત રહેશે. તમે આ પછીથી કીની હરોળમાંથી બદલી શકો છો.","skip":"હમણાં નહીં","scopedOne":"કી 1 મૉડલ પૂરતી મર્યાદિત","scopedOther":"કી {count} મૉડલ પૂરતી મર્યાદિત","allSaved":"Key serves every catalog model"},"cpTitle":"ક્લાયન્ટ પ્રોફાઇલ","cpDesc":"દરેક ક્લાયન્ટ માટે અલગ API કી, જેનો સિસ્ટમ પ્રોમ્પ્ટ સર્વર હંમેશાં લાગુ કરે છે.","cpEmpty":"હજી કોઈ ક્લાયન્ટ પ્રોફાઇલ નથી.","cpNameLabel":"નામ","cpNamePlaceholder":"દા.ત. સપોર્ટ બોટ","cpPromptLabel":"સિસ્ટમ પ્રોમ્પ્ટ (વૈકલ્પિક)","cpPromptPlaceholder":"આ કીથી થતી દરેક વિનંતી પહેલાં સર્વર ઉમેરે તે સૂચનાઓ.","cpCreate":"પ્રોફાઇલ બનાવો","cpRotate":"કી બદલો","cpKeyOnce":"આ કી હમણાં જ કૉપિ કરો — તે ફરી બતાવવામાં આવશે નહીં.","cpEnabledAria":"પ્રોફાઇલ સક્ષમ","selectKey":"આ કી પસંદ કરો","bulkSelected":"{count} પસંદ કરેલ","bulkEnable":"બધું સક્ષમ કરો","bulkDisable":"બધું અક્ષમ કરો","bulkDelete":"બધું કાઢી નાખો","bulkDeleteConfirm":"{count} કાઢી નાખવી?","bulkResult":"{done} અપડેટ થયા; {failed} નિષ્ફળ.","bulkDeleteResult":"{done} કાઢી નાખ્યા; {failed} નિષ્ફળ.","testProxy":"Test","testingProxy":"Testing…","proxyTestOk":"Proxy works — {ms}ms round trip","proxyTestFail":"Proxy failed: {reason}","editKey":"કી સંપાદિત કરો","editPlatformLocked":"બનાવ્યા પછી પ્રદાતા અથવા એન્ડપોઇન્ટ બદલી શકાતા નથી.","editCredentialHint":"વર્તમાન કી રાખવા ખાલી રાખો.","editCredentialPartsRequired":"એકાઉન્ટ ID અને API ટોકન બંને દાખલ કરો.","editModels":"મોડેલ્સ સંપાદિત કરો","editModelsHint":"Choose which catalog models this key may serve. Select everything to clear the scope so future catalog models use it too.","editModelsCustomHint":"Choose which registered endpoint models this key may serve. Select everything to clear the scope.","editModelsSync":"Check catalog updates","editModelsSyncing":"Checking…","editModelsSynced":"Model catalog checked","outlookUnavailable":"Unavailable","outlookNoForecasts":"Forecast unavailable. More recent traffic or reliable quota readings are needed.","outlookCoverage":"Forecasts available for {count} of {total} pools.","outlookTraffic":"{count} successful requests through this instance in the last {minutes} minutes.","outlookMinimumTraffic":"An exhaustion forecast needs at least {count} successful requests within {minutes} minutes.","outlookNotReportedHint":"The provider has not reported a usable request balance and limit. Local usage is shown; remaining quota is unavailable.","outlookMissingResetHint":"The provider did not report a valid reset time. Remaining quota cannot support an exhaustion forecast.","outlookConfidenceHint":"This balance is not reliable enough for an exhaustion forecast.","outlookObserved":"Balance observed: {time}","outlookUnavailablePools":"Unavailable quota pools ({count})","outlookTitle":"Quota outlook","outlookInsufficient":"Not enough data","outlookLowBalance":"Low balance","outlookRunningLow":"Running low soon","outlookStale":"Needs fresh data","outlookUnknown":"Unknown","outlookWithinQuota":"Within quota","outlookResetsFirst":"Not before reset","outlookExhausted":"Already exhausted","outlookLastReported":"requests last reported","outlookRequestsLeft":"requests left","outlookNotReported":"Not reported","outlookRate":"Recent rate","outlookRateValue":"{count} req/min","outlookRunsOut":"May run out","outlookStaleHint":"This balance is old or its window has expired. A fresh provider reading is needed.","outlookError":"Could not load quota forecasts. Raw observations are still available below.","outlookRetry":"Retry","outlookAttention":"Quota pools needing attention: {count}","outlookNoWarnings":"No forecast warnings. Pools with insufficient data may still be limited.","outlookHint":"Rates count successful requests through this instance only, not usage elsewhere. Forecasts require recent provider balances and reported resets. Warnings appear below 20% remaining or when quota may run out within two hours, before reset.","outlookRaw":"Raw quota observations","addCustomModel":"કસ્ટમ મોડેલ ઉમેરો","modelId":"મોડેલ ID","modelIdRequired":"મોડેલ ID આવશ્યક છે","modelDisplayName":"પ્રદર્શિત નામ","modelContextWindow":"સંદર્ભ વિંડો (ટોકન્સ)","modelRateLimits":"દર મર્યાદાઓ (વૈકલ્પિક)","modelSupportsTools":"ટૂલ કૉલિંગ સપોર્ટ કરે છે","modelSupportsToolsHint":"જો આ મોડેલ ફંક્શન્સ અથવા ટૂલ્સને કૉલ કરી શકે તો સક્ષમ કરો","modelSupportsVision":"વિઝન સપોર્ટ કરે છે","modelSupportsVisionHint":"જો આ મોડેલ છબીઓ સ્વીકારે તો સક્ષમ કરો","createModel":"મોડેલ બનાવો","modelAddedSuccess":"કસ્ટમ મોડેલ સફળતાપૂર્વક ઉમેરવામાં આવ્યું","modelAddFailed":"કસ્ટમ મોડેલ ઉમેરવામાં નિષ્ફળ","testModel":"પરીક્ષણ કરો","testingModel":"પરીક્ષણ ચાલુ છે…","testPassedShort":"પાસ","testFailedShort":"નિષ્ફળ","testPassed":"મોડેલ પરીક્ષણ {latency}ms માં સફળ રહ્યું","testFailed":"મોડેલ પરીક્ષણ નિષ્ફળ ગયું","testThrottled":"કૃપા કરીને આ મોડેલનું ફરીથી પરીક્ષણ કરતા પહેલા {seconds} સેકન્ડ રાહ જુઓ.","noModelsForProvider":"આ પ્રદાતા માટે કોઈ મોડેલો રૂપરેખાંકિત નથી.","testModels":"મોડેલ્સનું પરીક્ષણ કરો","syncAllCatalog":"Catalog: +{inserted} added, ~{updated} updated, -{removed} removed","requestCapLabel":"Request cap","tokenCapLabel":"Token cap","budgetPeriodLabel":"Budget period","budgetPeriodDaily":"Daily","budgetPeriodWeekly":"Weekly","budgetPeriodMonthly":"Monthly","budgetPeriodAuto":"Auto (follow provider)","autoResolvedDaily":"Detected provider cycle: daily","autoResolvedMonthly":"Detected provider cycle: monthly","autoResolvedFallback":"Provider cycle unknown, defaulting to monthly","capUnlimitedPlaceholder":"અમર્યાદિત","capEditHint":"Caps reset at the next period boundary, 00:00 UTC. Leave blank for unlimited.","monthlyUsageLine":"આ મહિને {requests} વિનંતીઓ, {tokens} ટોકન","monthlyUsageRequests":"{requests} requests","monthlyUsageTokens":"{tokens} tokens","monthlyUsageRequestsRelative":"{used} / {cap} ({remaining} left) requests","monthlyUsageTokensRelative":"{used} / {cap} ({remaining} left) tokens","monthlyUsageReset":"reset {date}"}`),backups:{title:`Backups`,description:`Save the routing data to a .sql file beside the database, and restore it later.`,excludedNote:`A backup carries your providers, models, routing settings and request history. Accounts, sessions and URL tokens are never included, so a dump holds no password hashes or login tokens and restoring one cannot log you out. Provider keys stay encrypted with this server's ENCRYPTION_KEY: a backup can only be restored on a server that still holds that key.`,selectHint:`Back up everything, or pick the tables you need.`,selectAll:`Select all`,deselectAll:`Clear`,fullBackup:`Full backup`,backupSelected:`Back up selected ({count})`,created:`Backup written to {filename}`,list:`Backups on disk`,empty:`No backups yet`,full:`All tables`,tablesCount:`{count} tables`,manual:`Manual`,scheduled:`Scheduled`,preRestore:`Pre-restore`,download:`Download`,restore:`Restore`,confirmRestore:`Replace data?`,restored:`Restored. The previous data was saved as {filename}.`,delete:`Delete backup`,prevPage:`Previous`,nextPage:`Next`,autoTitle:`Automatic backups`,autoHint:`The server writes a full backup on this cadence.`,time:`Time (HH:mm)`,intervalDays:`Every N days`,path:`Folder`,pathPlaceholder:`backups`,pathHint:`Relative to the database directory. Backups cannot be written outside it.`,save:`Save schedule`,saved:`Saved`},status:{healthy:`સ્વસ્થ`,rateLimited:`દર-મર્યાદિત`,invalid:`અમાન્ય`,error:`ભૂલ`,unchecked:`અનચેક`},analytics:{title:`એનાલિટિક્સ`,description:`વોલ્યુમ, લેટન્સી, ટોકન વપરાશ અને નિષ્ફળતાઓની વિનંતી કરો.`,range24h:`24 કલાક`,range7d:`7 દિ`,range30d:`30 ડી`,range90d:`90 ડી`,requests:`વિનંતીઓ`,successRate:`સફળતા દર`,inputTokens:`ઇનપુટ ટોકન્સ`,outputTokens:`આઉટપુટ ટોકન્સ`,avgLatency:`સરેરાશ વિલંબ`,p95Latency:`P95 લેટન્સી`,avgTtft:`સરેરાશ TTFT`,estSavings:`અનુ. બચત`,requestsByProvider:`પ્રદાતા દ્વારા વિનંતીઓ`,avgLatencyByProvider:`પ્રદાતા દ્વારા સરેરાશ વિલંબ`,ttftByProvider:`પ્રદાતા દ્વારા પ્રથમ ટોકન કરવાનો સમય`,ttftEmpty:`હજુ સુધી પ્રથમ ટોકનનો સમય નોંધાયો નથી.`,requestsOverTime:`સમયાંતરે વિનંતીઓ`,tokensOverTime:`સમય જતાં ટોકન્સ`,byModel:`મોડેલ દ્વારા`,byPlatform:`પ્લેટફોર્મ દ્વારા`,errors:`ભૂલો`,errorDistribution:`ભૂલ વિતરણ`,pinnedRequests:`પિન કરેલી વિનંતીઓ`,pinnedHonored:`સન્માનિત`,fallbackAttempts:`ફોલબેક પ્રયાસો`,savingsHint:"તમે ખરેખર છેલ્લા {range} કરતાં ${actual} બચાવ્યા. પેઇડ APIs પર સમાન ટોકન્સનો ખર્ચ મોડલ દીઠ ભાવ હશે. બતાવેલ નંબર ડેટાના છેલ્લા {span} થી સંપૂર્ણ 30 દિવસ સુધી તમારી ગતિને પ્રોજેક્ટ કરે છે.",savingsHintExact:"તમે ખરેખર છેલ્લા {range} કરતાં ${actual} બચાવ્યા. પેઇડ APIs પર સમાન ટોકન્સનો ખર્ચ મોડલ દીઠ ભાવ હશે. દર્શાવેલ સંખ્યા તમારી વાસ્તવિક 30-દિવસની કુલ સંખ્યા છે.",requestsHintPinned:`આ વિનંતીઓમાંથી {pinned} એ નામ દ્વારા ચોક્કસ મોડેલને પિન કર્યું છે. {honored} પિન કરેલ મોડેલ દ્વારા સેવા આપવામાં આવી હતી; {failed} બીજામાં નિષ્ફળ થયું. બાકીના ઓટો-રાઉટ હતા.`,requestsHintAuto:`આ સમયગાળામાં તમામ વિનંતીઓ સ્વતઃ-રાઉટ કરવામાં આવી હતી; કોઈ ક્લાયન્ટે નામ દ્વારા ચોક્કસ મોડેલને પિન કર્યું નથી.`,requestsHintTypes:`{chat} ચેટ અને {embedding} એમ્બેડિંગ વિનંતીઓ.`,rangeLabel24h:`24 કલાક`,rangeLabel7d:`7 દિવસ`,rangeLabel30d:`30 દિવસ`,rangeLabel90d:`90 દિવસ`,spanDays:`{count} દિવસો`,spanHours:`{count} કલાક`,latencyMs:`લેટન્સી (ms)`,latency:`લેટન્સી`,pinned:`પિન કરેલ`,inTokens:`ટોકન્સમાં`,outTokens:`આઉટ ટોકન્સ`,saved:`સાચવેલ`,message:`સંદેશ`,time:`સમય`,perModelBreakdown:`પ્રતિ-મોડલ બ્રેકડાઉન`,usageByKey:`કી દ્વારા ઉપયોગ`,keyColumn:`કી`,keyLabelFallback:`કી #{id}`,errorsByProvider:`પ્રદાતા દ્વારા ભૂલો`,recentErrors:`તાજેતરની ભૂલો`,noErrors:`કોઈ ભૂલો નથી`,recentCalls:`તાજેતરના કૉલ્સ`,clientIp:`ક્લાયન્ટ IP`,clientAgent:`ગ્રાહક એપ્લિકેશન`,requestedModelHint:`{model} વિનંતી કરી, ફોલબેક દ્વારા સેવા આપવામાં આવી`,attempts:`પ્રયાસો`,filterAll:`બધા`,filterCanceled:`રદ થયેલ`,providerBreakdown:`પ્રતિ-પ્રદાતા બ્રેકડાઉન`,tokensPerSec:`ટોક/સે`,allProviders:`બધા પ્રદાતાઓ`,requestDetailTitle:`વિનંતી #{id}`,failoverLadder:`નિષ્ફળ નિસરણી`,failoverLadderHint:`દરેક હોપ આ વિનંતિ ક્રમમાં, ફોલબેક સાંકળ દ્વારા લેવામાં આવી હતી.`,noAttemptTrace:`આ વિનંતી માટે કોઈ પ્રયાસ ટ્રેસ રેકોર્ડ કરવામાં આવ્યો ન હતો.`,keyOrdinal:`કી #{n}`,keyBadge:`કી #{n}`,attemptTimingHint:`વિનંતીથી ઓફસેટ શરૂ કરો પ્રારંભ · પ્રયાસ અવધિ`,requestedModel:`વિનંતી કરેલ મોડેલ`,ttft:`TTFT`,requestsByAgent:`એજન્ટ પ્રમાણે વિનંતીઓ`,sortBy:`{column} પ્રમાણે ગોઠવો`,sortHint:`ગોઠવણી ફક્ત લોડ થયેલી {count} પંક્તિઓ પર લાગુ થાય છે`,cacheHitRate:`કૅશ હિટ રેટ`,cacheSavedTokens:`{tokens} ટોકન બચ્યા`,cacheHitRateHint:`સર્વર શરૂ થયા પછી {hits} હિટ સામે {misses} મિસ · {requests} પ્રોવાઇડર કૉલ ટાળ્યા`},logs:{title:`લોગ`,description:`લાઇવ સર્વર લોગ. પેજ ખુલ્લું હોય ત્યાં સુધી નવી એન્ટ્રીઓ આવતી રહે છે.`,pause:`થોભાવો`,resume:`ફરી શરૂ કરો`,clear:`લોગ સાફ કરો`,cleared:`સર્વર લોગ સાફ કર્યો`,levelFilter:`લોગ સ્તર`,levels:{debug:`ડીબગ`,info:`ઇન્ફો`,warn:`ચેતવણી`,error:`ભૂલ`},countsHint:`ગણતરીઓ સર્વર પરના આખા લોગ બફરની કુલ છે, ફક્ત આ ફિલ્ટર સાથે મેળ ખાતી એન્ટ્રીઓની નહીં.`,searchPlaceholder:`લોગ સંદેશા શોધો...`,jumpToLatest:`તાજેતરના પર જાઓ`,showMore:`વધુ બતાવો`,showLess:`ઓછું બતાવો`,buffered:`વધુમાં વધુ {max} બફર થયેલી એન્ટ્રીઓમાંથી {count} બતાવી રહ્યા છીએ`,emptyTitle:`હજુ સુધી કોઈ લોગ એન્ટ્રી નથી`,emptyDescription:`સર્વર લખે તેમ એન્ટ્રીઓ અહીં દેખાશે. જો તમને આઉટપુટની અપેક્ષા હોય તો સ્તર, પ્રદાતા કે શોધ ફિલ્ટરનો વ્યાપ વધારો.`,noLevelsTitle:`કોઈ સ્તર પસંદ કર્યું નથી`,noLevelsDescription:`લોગ આઉટપુટ જોવા માટે ઓછામાં ઓછું એક સ્તર ચાલુ કરો.`,loadFailed:`સર્વર લોગ લોડ થઈ શક્યો નહીં.`},playground:{title:`રમતનું મેદાન`,description:`રાઉટર દ્વારા ચેટ પૂર્ણતા મોકલો અને જુઓ કે કયા પ્રદાતા તેને સેવા આપે છે.`,autoModel:`ઓટો (ફોલબેક સાંકળ)`,fusionModel:`ફ્યુઝન (મલ્ટિ-મોડલ સિન્થેસિસ)`,selectModel:`મોડેલ પસંદ કરો`,searchModels:`મોડલ્સ શોધો...`,noModelsFound:`કોઈ મોડલ મળ્યાં નથી`,send:`મોકલો`,sending:`મોકલી રહ્યું છે...`,clear:`સાફ કરો`,inputPlaceholder:`સંદેશ લખો... (મોકલવા માટે ⏎, નવી લાઇન માટે ⇧⏎)`,emptyTitle:`પ્રારંભ કરવા માટે એક સંદેશ મોકલો.`,emptyDescription:`{model} નો ઉપયોગ કરવો. ઉપરોક્ત પસંદગીકારમાં મોડેલો સ્વિચ કરો.`,noModels:`હજુ સુધી કોઈ મોડલ નથી. આ સૂચિ બનાવવા માટે કી પેજ પર API કી ઉમેરો.`,copyReply:`જવાબની નકલ કરો`,fallback:`ફોલબેક`,fallbacks:`ફોલબેક્સ`,fusionPanel:`પેનલ`,fusionJudge:`જજ`,fusionTrace:`{count} મોડેલ પ્રતિસાદો`,fusionFailed:`કોઈ જવાબ નથી`,fusionJudgeSynth:`અંતિમ જવાબનું સંશ્લેષણ કર્યું`,errorPrefix:`ભૂલ:`,systemPromptLabel:`સિસ્ટમ પ્રોમ્પ્ટ`,systemPromptPlaceholder:`વૈકલ્પિક. તમારી ચેટ પહેલા સિસ્ટમ સંદેશ તરીકે મોકલવામાં આવે છે.`,showSettings:`સેટિંગ્સ બતાવો`,hideSettings:`સેટિંગ્સ છુપાવો`,samplingHeading:`સેમ્પલિંગ`,samplingHelp:`બંધ હોય ત્યારે પ્રદાતાનું પોતાનું ડિફૉલ્ટ લાગુ પડે છે. તમે જે નિયંત્રણો ચાલુ કરો છો તે જ મોકલવામાં આવે છે.`,samplingDefault:`ડિફૉલ્ટ`,temperature:`તાપમાન`,topP:`Top P`,maxTokens:`મહત્તમ ટોકન્સ`,errorTitle:`વિનંતી નિષ્ફળ`,attach:`ફાઇલો જોડો`,attachTooMany:`તમે સંદેશ દીઠ વધુમાં વધુ {count} ફાઇલો જોડી શકો છો.`,attachTooLarge:`{name} ખૂબ મોટી છે. મર્યાદા {max} છે.`,attachUnsupported:`{name} સમર્થિત નથી. છબીઓ (PNG, JPEG, WebP, GIF) અથવા ટેક્સ્ટ ફાઇલો (TXT, MD, CSV, JSON, LOG) જોડો.`,attachFailed:`{name} વાંચી શકાયું નથી.`,noVisionBadge:`છબીઓ નહીં`,visionWarning:`{model} છબીઓ સ્વીકારતું નથી. ઇમેજ ઇનપુટ સ્વીકારતું મોડેલ અથવા ઓટો પસંદ કરો.`,dictate:`બોલીને લખો`,dictationStop:`રેકોર્ડિંગ બંધ કરો`,dictationTranscribing:`લખાઈ રહ્યું છે…`,dictationUnavailable:`બોલીને લખવા માટે ઑડિયો મોડેલ પ્રદાતાઓ ઉમેરો.`,dictationModel:`શ્રુતલેખન મોડેલ`,dictationFailed:`લખવામાં નિષ્ફળ: {reason}`,artifactOpen:`પૂર્વાવલોકન ખોલો`,artifactPreview:`પૂર્વાવલોકન`,artifactCode:`કોડ`,artifactClose:`પૂર્વાવલોકન બંધ કરો`,artifactDownload:`ડાઉનલોડ`,artifactReload:`પૂર્વાવલોકન ફરી લોડ કરો`,artifactHtml:`HTML પેજ`,artifactSvg:`SVG છબી`,artifactLines:`લાઇન`,artifactResize:`પૂર્વાવલોકનનું કદ બદલો`},playgroundSessions:{heading:`વાતચીત`,newConversation:`નવી વાતચીત`,showSidebar:`વાતચીત બતાવો`,hideSidebar:`વાતચીત છુપાવો`,empty:`હજુ સુધી કોઈ સાચવેલી વાતચીત નથી.`,untitled:`શીર્ષક વિનાની વાતચીત`,rename:`નામ બદલો`,renamePlaceholder:`વાતચીતનું નામ`,messageCount:`{count} સંદેશા`,justNow:`હમણાં જ`,minutesAgo:`{count} મિ. પહેલાં`,hoursAgo:`{count} ક. પહેલાં`,daysAgo:`{count} દિ. પહેલાં`,loadFailed:`તે વાતચીત ખોલી શકાઈ નહીં.`,renameFailed:`તે વાતચીતનું નામ બદલી શકાયું નહીં.`,deleteFailed:`તે વાતચીત કાઢી શકાઈ નહીં.`,actions:`વાતચીત ક્રિયાઓ`,newChat:`નવી ચેટ`},embeddings:{title:`મોડલ્સ`,description:`એમ્બેડિંગ્સ ફક્ત કુટુંબમાં જ નિષ્ફળ જાય છે: તે જ મોડેલ જે અન્ય પ્રદાતા દ્વારા સેવા આપવામાં આવે છે. વિવિધ મોડલ્સના વેક્ટર અસંગત હોય છે, તેથી રાઉટર ક્યારેય તમારા પર મોડલ્સ સ્વેપ કરતું નથી.`,defaultBadge:`ડિફૉલ્ટ · ઑટો`,makeDefault:`ડિફૉલ્ટ બનાવો`,moveUp:`ઉપર ખસેડો`,moveDown:`નીચે ખસેડો`,usageToday:`{count} આજે જરૂરી છે`,usageMonth:`{count} આ મહિને ટોક`,autoDescription:`model: "auto" POST /v1/embeddings ડિફૉલ્ટ કુટુંબ માટે રૂટ પર. કુટુંબનું નામકરણ (અથવા પ્રદાતા મોડેલ આઈડી) તે કુટુંબને પિન કરો; તેની અંદર પ્રદાતાઓને ક્રમમાં અજમાવવામાં આવે છે.`,unsavedChanges:`વણસાચવેલા ફેરફારો`,saveChanges:`ફેરફારો સાચવો`,savingChanges:`સાચવી રહ્યું છે...`,tokMax:`{tokens} ટોક મહત્તમ`,emptyTitle:`હજી સુધી કોઈ એમ્બેડિંગ મોડલ નથી`,emptyDesc:`એકવાર તમે એમ્બેડિંગને સપોર્ટ કરતી પ્રદાતા કી ઉમેર્યા પછી એમ્બેડિંગ પરિવારો અહીં દેખાય છે.`,dragToReorder:`પ્રદાતાને ફરીથી ગોઠવવા માટે ખેંચો`},fusion:{title:`ફ્યુઝન`,description:`મોડેલોની પેનલ સમાંતર જવાબ આપે છે, પછી ન્યાયાધીશ એક મજબૂત જવાબનું સંશ્લેષણ કરે છે. મોડેલ "ફ્યુઝન" સાથે API કૉલ કરીને તેનો ઉપયોગ કરો.`,panelSource:`પેનલ સ્ત્રોત`,panelSourceHelp:`જ્યારે વિનંતિ તેનો પોતાનો ઉલ્લેખ કરતી નથી ત્યારે પેનલ મોડલ ક્યાંથી આવે છે.`,mode:{auto:`ઓટો (ફોલબેક ચેઇન)`,autoHelp:`તમારી સક્રિય રૂટીંગ વ્યૂહરચના દ્વારા ક્રમાંકિત, તમારી ફોલબેક ચેઇનમાંથી વિવિધ મોડેલોનો સમૂહ પસંદ કરો.`,explicit:`સ્પષ્ટ પેનલ`,explicitHelp:`તમે નીચે પસંદ કરો છો તે ચોક્કસ મોડલ્સનો હંમેશા ઉપયોગ કરો.`},panelModels:`પેનલ મોડેલો`,selectedCount:`{max} માંથી {count} પસંદ કર્યું`,noModels:`હજુ સુધી કોઈ મૉડલ જોડાયેલા નથી. API કી ઉમેરો, પછી ફોલબેક ચેઇનમાં મોડલ્સને સક્ષમ કરો.`,panelSize:`પેનલનું કદ`,panelSizeHelp:`કેટલા વૈવિધ્યસભર મોડલ આપમેળે પસંદ કરવા છે (1–{max}).`,judge:`જજ મોડેલ`,judgeHelp:`મોડેલ કે જે પેનલના જવાબોને એકમાં સંશ્લેષણ કરે છે. ઑટો તમારા ટોચના ક્રમાંકિત ઉપલબ્ધ મોડલનો ઉપયોગ કરે છે.`,judgeAuto:`સ્વતઃ (ઉપલબ્ધ ટોચના ક્રમાંકિત)`,strategy:`વ્યૂહરચના`,strategySynthesize:`સિન્થેસાઇઝ કરો - પેનલને એક જવાબમાં ભેળવો`,strategyBestOf:`શ્રેષ્ઠ - એક જ મજબૂત જવાબ પરત કરો (કોઈ જજ કૉલ નહીં)`,strategySynthesizeShort:`સંશ્લેષણ કરો`,strategyBestOfShort:`શ્રેષ્ઠ`,exposePanel:`પેનલ વિગતો પ્રગટ કરો`,exposePanelHelp:`પ્રતિભાવમાં x_fusion ફીલ્ડ હેઠળ દરેક મોડેલના જવાબ અને જજ મેટાડેટા જોડો.`,howToUse:`કેવી રીતે ઉપયોગ કરવો`,howToUseHelp:`મોડેલ "ફ્યુઝન" સાથે સામાન્ય ચેટ વિનંતી મોકલો. આ સેટિંગ્સ મૂળભૂત છે; કોઈપણ વિનંતી તેમને "ફ્યુઝન" ફીલ્ડ વડે ઓવરરાઈડ કરી શકે છે.`,unsavedChanges:`વણસાચવેલા ફેરફારો`,save:`સાચવો`,searchPlaceholder:`Search models…`,providerFilterLabel:`Filter by provider`,providerAll:`All providers`,noMatch:`No models match your search.`},premium:{title:`પ્રીમિયમ`,description:`લાઇવ મોડલ કેટલોગ, દરેક ઉપકરણ પર.`,loading:`લોડ કરી રહ્યું છે...`,checkForUpdates:`અપડેટ્સ માટે તપાસો`,syncing:`સમન્વયિત કરી રહ્યું છે...`,catalogFeed:`કેટલોગ ફીડ`,liveFeed:`જીવંત ફીડ`,monthlySnapshot:`માસિક સ્નેપશોટ`,lastChecked:`છેલ્લે તપાસ્યું: {when}`,liveDescription:`નવા મફત મૉડલ, ક્વોટા ફેરફારો અને ક્વિર્ક ફિક્સેસ મોકલવામાં આવ્યાના કલાકોમાં અહીં ઉતરે છે. એપ્લિકેશન દિવસમાં બે વાર આપમેળે તપાસ કરે છે; કરવાનું કંઈ નથી.`,snapshotDescription:`મફત સ્તર: માસિક સ્નેપશોટમાંથી કેટલોગ રિફ્રેશ થાય છે, દિવસમાં બે વાર આપમેળે તપાસવામાં આવે છે. પ્રીમિયમ આને લાઇવ ફીડ પર સ્વિચ કરે છે, જે દર 2-3 દિવસે અપડેટ થાય છે.`,lastSyncProblem:`છેલ્લી સમન્વયન સમસ્યા: {error}`,license:`લાઇસન્સ`,planAnnual:`પ્રીમિયમ વાર્ષિક`,planLifetime:`પ્રીમિયમ આજીવન`,expired:`સમાપ્ત`,inactive:`નિષ્ક્રિય`,lifetimeNote:`આજીવન લાઇસન્સ: ક્યારેય સમાપ્ત થતું નથી.`,renewsOn:`{date} પર રિન્યૂ થાય છે.`,willNotRenew:`રિન્યુ કરશે નહીં. {date} સુધી પ્રીમિયમ, પછી આ ઇન્સ્ટોલ મફત માસિક કેટલોગ પર પાછું આવે છે.`,keyInactive:`આ કી હવે સક્રિય નથી. એપ્લિકેશન મફત માસિક કેટલોગ પર કામ કરવાનું ચાલુ રાખે છે.`,manageSubscription:`સબ્સ્ક્રિપ્શન મેનેજ કરો`,openingPortal:`ખુલી રહ્યું છે...`,removeKey:`આ ઉપકરણમાંથી કી દૂર કરો`,manageHint:`સબ્સ્ક્રિપ્શન મેનેજ કરો Stripe નું બિલિંગ પોર્ટલ ખોલે છે: રદ કરો, તમારું કાર્ડ અપડેટ કરો અથવા ઇન્વૉઇસ ડાઉનલોડ કરો. કી દૂર કરવાથી માત્ર આ ઉપકરણ નિષ્ક્રિય થાય છે; તમારી ખરીદી અસ્પૃશ્ય છે.`,licenseKey:`લાઇસન્સ કી`,licenseKeyPlaceholder:`fla_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX`,activate:`સક્રિય કરો`,activating:`સક્રિય કરી રહ્યું છે...`,keyHint:`તમારી કી તમારા ખરીદીના ઈમેલમાં અને પોસ્ટ-ચેકઆઉટ પેજ પર છે. તે ગુમાવ્યું?`,recoverKey:`વેબસાઇટ પર તેને પુનઃપ્રાપ્ત કરો`,upsellTitle:`દર વર્ષે $19 માં લાઇવ થાઓ`,upsellDescription:`નવા મફત મૉડલ 30 દિવસ પછીના બદલે, તેઓ અસ્તિત્વમાં છે. એક કી, દરેક ઉપકરણ. કોઈપણ સમયે રદ કરો; રાઉટર કાયમ માટે મફત રહે છે.`,goPremium:`પ્રીમિયમ પર જાઓ`,bundled:`બંડલ`,planGeneric:`પ્રીમિયમ`},languages:{en:`English`,"zh-CN":`中文 (简体)`,es:`Español`,fr:`Français`,"pt-BR":`Português (Brasil)`,it:`Italiano`,hi:`हिन्दी`,ar:`العربية`,bn:`বাংলা`,ru:`Русский`,ur:`اردو`,id:`Bahasa Indonesia`,de:`Deutsch`,ja:`日本語`,sw:`Kiswahili`,mr:`मराठी`,te:`తెలుగు`,tr:`Türkçe`,ta:`தமிழ்`,vi:`Tiếng Việt`,ko:`한국어`,fa:`فارسی`,th:`ไทย`,gu:`ગુજરાતી`,pl:`Polski`,uk:`Українська`,kn:`ಕನ್ನಡ`,ml:`മലയാളം`,or:`ଓଡ଼ିଆ`,my:`မြန်မာဘာသာ`,pa:`ਪੰਜਾਬੀ`,ro:`Română`,nl:`Nederlands`,ms:`Bahasa Melayu`,tl:`Filipino`,ha:`Hausa`,yo:`Yorùbá`,ig:`Igbo`,am:`አማርኛ`,uz:`Oʻzbekcha`,az:`Azərbaycanca`,si:`සිංහල`,ne:`नेपाली`,km:`ខ្មែរ`,el:`Ελληνικά`,cs:`Čeština`,hu:`Magyar`,sv:`Svenska`,he:`עברית`,da:`Dansk`,fi:`Suomi`,no:`Norsk`,sk:`Slovenčina`,bg:`Български`,hr:`Hrvatski`,sr:`Српски`,lt:`Lietuvių`,"zh-TW":`中文 (繁體)`,"pt-PT":`Português (Portugal)`,ka:`ქართული`},errors:{boundaryTitle:`કંઈક ખોટું થયું`,boundaryDescription:`ડેશબોર્ડમાં એક અણધારી ભૂલ આવી. તમારો ડેટા સુરક્ષિત છે. ફરી પ્રયાસ કરો અથવા મોડલ્સ પેજ પર પાછા જાઓ.`,tryAgain:`ફરી પ્રયાસ કરો`,goHome:`મોડલ્સ પર પાછા`},notFound:{title:`પૃષ્ઠ મળ્યું નથી`,description:`આ પૃષ્ઠ અસ્તિત્વમાં નથી અથવા કદાચ ખસેડવામાં આવ્યું છે.`},setup:{title:`શરૂ કરી રહ્યા છીએ`,subtitle:`તમારી પ્રથમ વિનંતીને રૂટ કરવા માટેના ત્રણ પગલાં.`,progress:`{total} ના {done}`,step1Title:`પ્રદાતા કી ઉમેરો`,step1Desc:`ઓછામાં ઓછું એક પ્રદાતા એકાઉન્ટ કનેક્ટ કરો. મફત કીઓ કામ કરે છે.`,step1Cta:`કીઓ ઉમેરો`,step2Title:`એક પરીક્ષણ વિનંતી મોકલો`,step2Desc:`રમતના મેદાનમાં કોઈપણ મોડેલ પસંદ કરો અને હેલો કહો.`,step2Cta:`ઓપન પ્લેગ્રાઉન્ડ`,step3Title:`તમારી એપ્લિકેશનને કનેક્ટ કરો`,step3Desc:`કોઈપણ OpenAI- સુસંગત ક્લાયંટ સાથે તમારી એકીકૃત API કીનો ઉપયોગ કરો.`,copyKey:`API કી કૉપિ કરો`,copyUrl:`કોપી આધાર URL`,copiedKey:`API કી ક્લિપબોર્ડ પર કૉપિ કરી`,copiedUrl:`આધાર URL ક્લિપબોર્ડ પર કૉપિ કર્યું`},palette:{title:`આદેશ પેલેટ`,placeholder:`શોધ પૃષ્ઠો, મોડેલો, ક્રિયાઓ...`,empty:`કોઈ પરિણામ નથી`,groupPages:`પૃષ્ઠો`,groupActions:`ક્રિયાઓ`,groupModels:`મોડલ્સ`,toggleTheme:`ડાર્ક મોડને ટૉગલ કરો`},validation:{required:`જરૂરી છે`,url:`http:// અથવા https:// થી શરૂ થતો માન્ય URL દાખલ કરો`,email:`માન્ય ઇમેઇલ સરનામું દાખલ કરો`,passwordMin:`ઓછામાં ઓછા {min} અક્ષરો`},agents:{title:`કોડિંગ એજન્ટ્સ`,description:`જનરેટ કરેલી, બેકઅપ-સુરક્ષિત ગોઠવણી સાથે કોડિંગ ટૂલ્સને એક ફ્રી-મોડેલ ગેટવે સાથે જોડો.`,apiKey:`API કી`,quickstartTitle:`ઝડપી શરૂઆત`,quickstart:`સૌથી ઝડપી રસ્તો: લાઇવ કેટલોગમાંથી Claude Code ગોઠવો.`,currentKey:`વર્તમાન એકીકૃત કી:`,seenRecently:`તાજેતરમાં જોવાયું`,setupLabel:`સ્વયંસંચાલિત સેટઅપ`,setupHint:`આ ટૂલની કન્ફિગ ફાઇલ તમારા માટે લખે છે, જે આ ગેટવે તરફ નિર્દેશ કરે છે.`,setupGuideHint:`આ ટૂલના સેટઅપ પગલાં બતાવે છે; કોઈ ફાઇલ લખાતી નથી.`,manualLabel:`મેન્યુઅલ કનેક્શન`,manualHint:`ટૂલની પોતાની સેટિંગ્સમાં દાખલ કરવા માટે બેઝ URL અને કી.`,endpoint:`એન્ડપોઇન્ટ`,documentation:`દસ્તાવેજીકરણ`,descriptions:{claude:`Anthropic's terminal agent: it plans, edits files, and runs commands in your repo.`,codex:`OpenAI's terminal agent, which runs your task in a local sandbox first.`,cline:`A VS Code extension that asks you to approve every edit and command.`,continue:`A VS Code and JetBrains extension for inline autocomplete and chat while you type.`,aider:`A command-line pair programmer that turns each change into its own git commit.`,opencode:`A provider-agnostic terminal agent with a full-screen text interface.`,goose:`Block's local agent, extended with MCP servers to reach past your code.`,qwen:`A Gemini CLI fork tuned for Qwen models and large repositories.`,roo:`A VS Code extension with switchable modes: architect, coder, debugger.`,kilo:`A VS Code extension merging Roo and Cline, with an orchestrator that splits up work.`,crush:`Charm's terminal agent, written in Go, with one session per project.`,dsh:`DeepSeek's harness, which keeps every provider as a route you can switch between.`,mimo:`Xiaomi's terminal agent, an OpenCode fork that takes any OpenAI-compatible provider.`,cursor:`The AI-first editor; it calls through Cursor's cloud, so it needs a public URL.`,generic:`Anything else that speaks the OpenAI API, set up by hand from a base URL and key.`,atomcode:`AtomGit's terminal agent, written in Rust, that takes any OpenAI-compatible endpoint.`,openclaw:`તમારા પોતાના મશીનથી WhatsApp, Telegram, Discord અને વધુ પર જવાબ આપતો, હંમેશાં ચાલુ રહેતો વ્યક્તિગત સહાયક.`,hermes:`Nous Research નો સ્વ-સુધારણા કરતો એજન્ટ, કાયમી મેમરી અને કૌશલ્યો સાથે, ટર્મિનલમાં કે ચેટ એપ્સ પર.`,pi:`એક ન્યૂનતમ ટર્મિનલ એજન્ટ, જેને તમે તમારા પોતાના એક્સ્ટેન્શન, કૌશલ્યો અને પ્રોમ્પ્ટ ટેમ્પ્લેટથી ઘડો છો.`}},update:{available:`New version available`,whatsNew:`What's new in v{version}`,publishedOn:`Published {date}`,noNotes:`No release notes were published for this version.`,openRelease:`Open release page`,dismissVersion:`Dismiss this version`,dismiss:`Dismiss`},freeTier:{poolsToggle:`Free-tier pools ({count})`,poolsToggleBare:`Free-tier pools`,summary:`{pools} pools · {budget} tokens/mo counted once per pool · {credits} credits-based · {unpublished} unpublished`,pool:`Pool`,models:`Models`,budget:`Monthly budget`,kind:`Kind`,kindDocumented:`Documented`,kindCredits:`Credits`,kindUnpublished:`Unpublished`,remaining:`Remaining`,resetAt:`Resets at`,disabledModels:`({count} off)`,metricTokens:`tokens`,metricRequests:`requests`,metricCredits:`credits`,metricNeurons:`neurons`,metricOther:`units`,empty:`No enabled models with free-tier budget data.`,poolLabel:`{platform} · shared {scope} pool`,poolLabelBare:`{platform} · shared pool`,poolModels:`{count} models`,poolBudget:`{budget}/mo`,poolBudgetTitle:`One monthly allowance for the whole pool, scaled by the {count} usable keys on this platform. Every model listed under it draws from the same budget.`,poolNoQuota:`no published quota`,poolResets:`resets {time}`,independentBudgets:`independent budgets`},chains:{title:`Fallback chains`,description:`Named chains, each callable as auto:<name> in /v1/models.`,count:`{count} chains`,active:`Active`,default:`Default`,activate:`Activate`,activateHint:`Make this the chain the table below edits and the one auto routes through`,deleteHint:`Delete this chain`,deleteConfirm:`Delete chain "{name}"?`,create:`Create`,createPlaceholder:`Chain name`,createFailed:`Could not create the chain.`,nameRules:`Up to 20 characters: letters, digits, hyphens and underscores.`,startEmpty:`Start empty`,startEmptyHint:`Create the chain with no models in it, and keep new catalog models out of it. Unchecked, it starts as a copy of the default chain.`,curated:`Curated`,curatedHint:`New catalog models are not added to this chain automatically.`,renameHint:`આ ચેનનું નામ બદલો`,renameConfirm:`ચેન "{oldName}" નું નામ "{name}" કરવું? auto:{oldName} કૉલ કરતા ક્લાયન્ટ્સે auto:{name} પર જવું પડશે.`,renamePlaceholder:`નવું ચેન નામ`,renameFailed:`ચેનનું નામ બદલી શકાયું નહીં.`},notifications:{catalogAdded:`{count} new models added from catalog`,catalogAddedFrom:`{count} new models added for {provider}`,catalogRemoved:`{count} models removed from catalog`,catalogRemovedFrom:`{count} models removed for {provider}`,catalogUpdated:`{count} models updated from latest catalog`,catalogUpdatedFrom:`{count} models updated for {provider}`,discoverAdded:`{count} new models from provider {provider}`,discoverRemoved:`{count} models removed from provider {provider}`,degraded:`Degraded mode active — only {healthy}/{total} providers healthy ({pct}%)`,updateAvailable:`Update available: v{version}`},routingStrip:{canceled:`Canceled`,title:`Live routing`,mode:`Mode`,processing:`Processing…`,idle:`Waiting for a request…`,failed:`Failed`,afterAttempts:`Success after {n} attempts`,activeCount:`{n} active`}};export{e as default};
|