omniroute 2.3.3 → 2.3.6
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/app/.next/BUILD_ID +1 -1
- package/app/.next/app-path-routes-manifest.json +38 -38
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/.well-known/agent.json/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +2 -2
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/a2a/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/a2a/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/a2a/tasks/[id]/cancel/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/a2a/tasks/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/a2a/tasks/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/acp/agents/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/backups/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw/auto-order/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +1 -1
- package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cli-tools/status/route.js +2 -2
- package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/auto/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/audit/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/audit/stats/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/sse/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/stream/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/openrouter-catalog/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/models/route.js +1 -1
- package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/monitoring/health/route.js +1 -1
- package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/route.js +1 -1
- package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/background-degradation/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/model-aliases/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/quota/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/music/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1/videos/generations/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs/page.js +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app-paths-manifest.json +38 -38
- package/app/.next/server/chunks/1248.js +1 -1
- package/app/.next/server/chunks/1526.js +1 -1
- package/app/.next/server/chunks/1584.js +1 -1
- package/app/.next/server/chunks/1623.js +1 -1
- package/app/.next/server/chunks/1880.js +1 -1
- package/app/.next/server/chunks/1960.js +1 -1
- package/app/.next/server/chunks/1990.js +1 -1
- package/app/.next/server/chunks/2214.js +1 -1
- package/app/.next/server/chunks/2372.js +1 -1
- package/app/.next/server/chunks/2594.js +1 -1
- package/app/.next/server/chunks/3371.js +1 -1
- package/app/.next/server/chunks/3911.js +1 -1
- package/app/.next/server/chunks/496.js +1 -1
- package/app/.next/server/chunks/5047.js +1 -1
- package/app/.next/server/chunks/5094.js +1 -1
- package/app/.next/server/chunks/5097.js +1 -1
- package/app/.next/server/chunks/5521.js +1 -1
- package/app/.next/server/chunks/5945.js +1 -1
- package/app/.next/server/chunks/6118.js +1 -1
- package/app/.next/server/chunks/6930.js +1 -1
- package/app/.next/server/chunks/7011.js +1 -1
- package/app/.next/server/chunks/708.js +1 -1
- package/app/.next/server/chunks/7650.js +1 -1
- package/app/.next/server/chunks/7889.js +1 -1
- package/app/.next/server/chunks/8220.js +1 -1
- package/app/.next/server/chunks/8464.js +1 -1
- package/app/.next/server/chunks/8706.js +1 -1
- package/app/.next/server/chunks/8976.js +1 -1
- package/app/.next/server/chunks/9119.js +1 -1
- package/app/.next/server/chunks/944.js +1 -1
- package/app/.next/server/chunks/9837.js +1 -1
- package/app/.next/server/pages/500.html +2 -2
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/chunks/{5846-42d982547e1caf85.js → 5846-8ad5ab8a1ba62e97.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-8d4d2f071d114b90.js → page-284b636e8d7e33f1.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-62c8c63ebebff9df.js +1 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-ee3b3c7b9ecbad30.js → page-4c046dfc5159d2ac.js} +1 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-adbd858f2a6cd352.js +1 -0
- package/app/package.json +1 -1
- package/app/public/providers/assemblyai.svg +12 -0
- package/app/public/providers/elevenlabs.svg +6 -0
- package/app/public/providers/hyperbolic.svg +13 -0
- package/app/public/providers/inworld.svg +12 -0
- package/app/public/providers/nanobanana.svg +12 -0
- package/app/public/providers/ollama-cloud.png +375 -0
- package/app/public/providers/playht.svg +11 -0
- package/package.json +1 -1
- package/scripts/postinstall.mjs +25 -0
- package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-7b1037d65eef97a8.js +0 -1
- package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/page-7341fec78a6818b3.js +0 -1
- /package/app/.next/static/{2-Wq7CYQRUOTZ9PqJz4xL → rkqZOF0zvNBiqtXd_BupR}/_buildManifest.js +0 -0
- /package/app/.next/static/{2-Wq7CYQRUOTZ9PqJz4xL → rkqZOF0zvNBiqtXd_BupR}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=3911,exports.ids=[3911],exports.modules={53911:a=>{a.exports=JSON.parse('{"common":{"save":"Enregistrer","cancel":"Annuler","delete":"Supprimer","loading":"Chargement...","error":"Une erreur s\'est produite","success":"Succ\xe8s","confirm":"Etes-vous s\xfbr ?","refresh":"Actualiser","close":"Fermer","add":"Ajouter","edit":"Modifier","search":"Rechercher","back":"Retour","next":"Suivant","submit":"Soumettre","reset":"R\xe9initialiser","copy":"Copier","copied":"Copi\xe9!","enabled":"Activ\xe9","disabled":"D\xe9sactiv\xe9","active":"Actif","inactive":"Inactif","noData":"Aucune donn\xe9e disponible","configure":"Configurer","manage":"G\xe9rer","name":"Nom","actions":"Actions","status":"Statut","type":"Tapez","model":"Mod\xe8le","models":"mod\xe8les","provider":"Fournisseur","account":"Compte","time":"Temps","details":"D\xe9tails","created":"Cr\xe9\xe9","lastUsed":"Derni\xe8re utilisation","loadMore":"Charger plus","noResults":"Aucun r\xe9sultat trouv\xe9","reloadPage":"Recharger la page","connected":"Connect\xe9","disconnected":"D\xe9connect\xe9","notConfigured":"Non configur\xe9","testConnection":"Tester la connexion","enable":"Activer","disable":"D\xe9sactiver","columns":"Colonnes","newest":"Le plus r\xe9cent","oldest":"Le plus ancien","all":"Tout","none":"Aucun","yes":"Oui","no":"Non","warning":"Avertissement","note":"Remarque","free":"Gratuit","skipToContent":"Passer au contenu"},"sidebar":{"home":"Accueil","dashboard":"Tableau de bord","providers":"Fournisseurs","combos":"Combinaisons","usage":"Utilisation","analytics":"Analyse","costs":"Co\xfbts","health":"Sant\xe9","limits":"Limites et quotas","cliTools":"Outils CLI","media":"M\xe9dias","settings":"Param\xe8tres","translator":"Traducteur","docs":"Documentation","issues":"Probl\xe8mes","apiManager":"Gestionnaire d\'API","logs":"Journaux","auditLog":"Journal d\'audit","shutdown":"Arr\xeat","restart":"Red\xe9marrer","shutdownConfirm":"Arr\xeater OmniRoute\xa0?","restartConfirm":"Red\xe9marrer OmniRoute\xa0?","version":"v{version}","debug":"D\xe9bogage","system":"Syst\xe8me","help":"Aide","serverDisconnected":"Serveur d\xe9connect\xe9","serverDisconnectedMsg":"Le serveur proxy a \xe9t\xe9 arr\xeat\xe9 ou est en train de red\xe9marrer.","expandSidebar":"D\xe9velopper la barre lat\xe9rale","collapseSidebar":"R\xe9duire la barre lat\xe9rale","themes":"Th\xe8mes","presetColors":"Couleurs populaires","createTheme":"Cr\xe9er un th\xe8me","chooseColor":"Choisissez une couleur","themeCoral":"Corail","themeBlue":"Bleu","themeRed":"Rouge","themeGreen":"Vert","themeViolet":"Violette","themeOrange":"Orange","themeCyan":"Cyan","endpoints":"Points d\'acc\xe8s","playground":"Playground","agents":"Agents","cliToolsShort":"Outils"},"themesPage":{"title":"Th\xe8mes","description":"Choisissez un th\xe8me pr\xe9d\xe9fini ou cr\xe9ez le v\xf4tre avec une seule couleur","presetColors":"Couleurs populaires","customTheme":"Th\xe8me personnalis\xe9","customThemeDesc":"Cliquez sur cr\xe9er un th\xe8me et choisissez une couleur","createTheme":"Cr\xe9er un th\xe8me","activePreset":"Th\xe8me actif"},"header":{"logout":"D\xe9connexion","language":"Langue","providers":"Fournisseurs","providerDescription":"G\xe9rez vos connexions aux fournisseurs d\'IA","combos":"Combinaisons","comboDescription":"Combinaisons de mod\xe8les avec bascule de secours","usage":"Utilisation et analyses","usageDescription":"Surveillez l\'utilisation de votre API, la consommation de jetons et les journaux de requ\xeates","analytics":"Analytique","analyticsDescription":"Graphiques, tendances et informations d\'\xe9valuation","cliTools":"Outils CLI","cliToolsDescription":"Configurer les outils CLI","home":"Accueil","homeDescription":"Bienvenue sur OmniRoute","endpoint":"Points d\'acc\xe8s","endpointDescription":"G\xe9rer les points d\'acc\xe8s proxy, MCP, A2A et les points d\'acc\xe8s API","settings":"Param\xe8tres","settingsDescription":"G\xe9rez vos pr\xe9f\xe9rences","openaiCompatible":"Compatible avec OpenAI","anthropicCompatible":"Compatible Anthropic","media":"M\xe9dias","mediaDescription":"G\xe9n\xe9rez des images, des vid\xe9os et de la musique","themes":"Th\xe8mes","themesDescription":"Choisissez un th\xe8me de couleur pour l\'ensemble du panneau du tableau de bord"},"home":{"quickStart":"D\xe9marrage rapide","quickStartDesc":"D\xe9marrez en 4 \xe9tapes. Connectez des fournisseurs, routez les mod\xe8les et surveillez tout.","fullDocs":"Documentation compl\xe8te","step1Title":"1. Cr\xe9er une cl\xe9 API","step1Desc":"Allez dans <endpoint>Endpoint</endpoint> -> Cl\xe9s enregistr\xe9es. G\xe9n\xe9rez une cl\xe9 par environnement.","step2Title":"2. Connecter des fournisseurs","step2Desc":"Ajoutez des comptes dans <providers>Providers</providers>. Prend en charge OAuth, API Key et paliers gratuits.","step3Title":"3. Configurer votre client","step3Desc":"D\xe9finissez l\'URL de base sur {url} dans votre IDE ou client API.","step4Title":"4. Surveiller et optimiser","step4Desc":"Suivez les tokens, les co\xfbts et les erreurs dans <logs>Journaux des requ\xeates</logs> et <analytics>Analytique</analytics>.","providersOverview":"Pr\xe9sentation des fournisseurs","configuredOf":"{configured} configur\xe9 parmi {total} fournisseurs disponibles","noModelsAvailable":"Aucun mod\xe8le disponible pour ce fournisseur.","configureFirst":"Configurez d\'abord une connexion dans {providers}","configureProvider":"Configurer le fournisseur","modelAvailable":"Mod\xe8le {count} disponible","modelsAvailable":"{count} mod\xe8les disponibles","connectionsActive":"Connexion {count} active","connectionsActivePlural":"{count} connexions actives","copyModelName":"Copier le nom du mod\xe8le","documentation":"Documentation","healthMonitor":"Moniteur de sant\xe9","reportIssue":"Signaler un probl\xe8me","activeError":"{active} actif \xb7 Erreur {errors}","oauthLabel":"OAuth","apiKeyLabel":"Cl\xe9 API","requestsShort":"{count} reqs","providerModelsTitle":"{provider} - Mod\xe8les","copiedModel":"Copi\xe9\xa0: {model}","aliasLabel":"pseudonyme"},"analytics":{"title":"Analyse","overviewDescription":"Surveillez vos mod\xe8les d\'utilisation des API, la consommation de jetons, les co\xfbts et les tendances d\'activit\xe9 sur tous les fournisseurs et mod\xe8les.","evalsDescription":"Ex\xe9cutez des suites d\'\xe9valuation pour tester et valider vos points de terminaison LLM. Comparez la qualit\xe9 des mod\xe8les, d\xe9tectez les r\xe9gressions et \xe9valuez la latence.","overview":"Aper\xe7u","evals":"\xc9valuations"},"apiManager":{"title":"Cl\xe9s API","createKey":"Cr\xe9er une cl\xe9 API","key":"Cl\xe9","revokeKey":"R\xe9voquer la cl\xe9","revokeConfirm":"\xcates-vous s\xfbr de vouloir r\xe9voquer cette cl\xe9 API\xa0?","noKeys":"Pas encore de cl\xe9 API","noKeysDesc":"Cr\xe9ez votre premi\xe8re cl\xe9 API pour authentifier les requ\xeates sur votre point de terminaison","keyLabel":"\xc9tiquette de cl\xe9","permissions":"Autorisations","expiresAt":"Expire","never":"Jamais","revoke":"R\xe9voquer","showKey":"Afficher la cl\xe9","hideKey":"Masquer la cl\xe9","copyKey":"Copier la cl\xe9 API","allModels":"Tous les mod\xe8les","selectedModels":"Mod\xe8les s\xe9lectionn\xe9s","readOnly":"Lecture seule","fullAccess":"Acc\xe8s complet","keyManagement":"Gestion des cl\xe9s API","keyManagementDesc":"Cr\xe9ez et g\xe9rez des cl\xe9s API pour authentifier les requ\xeates sur votre point de terminaison","totalKeys":"Cl\xe9s totales","restricted":"Restreint","totalRequests":"Total des demandes","modelsAvailable":"Mod\xe8les disponibles","registeredKeys":"Cl\xe9s enregistr\xe9es","keysRegistered":"{count} cl\xe9s enregistr\xe9es","keyRegistered":"Cl\xe9 {count} enregistr\xe9e","keysSecurityNote":"Chaque cl\xe9 isole le suivi de l\'utilisation et peut \xeatre r\xe9voqu\xe9e ind\xe9pendamment. Les cl\xe9s sont masqu\xe9es apr\xe8s leur cr\xe9ation pour des raisons de s\xe9curit\xe9.","createFirstKey":"Cr\xe9ez votre premi\xe8re cl\xe9","name":"Nom","usage":"Utilisation","created":"Cr\xe9\xe9","actions":"Actions","reqs":"demandes","neverUsed":"Jamais utilis\xe9","deleteConfirm":"Supprimer cette cl\xe9 API\xa0?","usageTips":"Conseils d\'utilisation","tipAuth":"Utilisez les cl\xe9s API dans l\'en-t\xeate d\'autorisation en tant que Bearer YOUR_KEY","tipSecure":"Les cl\xe9s ne sont affich\xe9es qu\'une seule fois lors de la cr\xe9ation\xa0: stockez-les en toute s\xe9curit\xe9","tipSeparate":"Cr\xe9er des cl\xe9s distinctes pour diff\xe9rents clients ou environnements","tipRestrict":"Restreindre les cl\xe9s \xe0 des mod\xe8les sp\xe9cifiques pour une meilleure s\xe9curit\xe9 et un meilleur contr\xf4le des co\xfbts","keyName":"Nom de la cl\xe9","keyNamePlaceholder":"par exemple, cl\xe9 de production, cl\xe9 de d\xe9veloppement","keyNameDesc":"Choisissez un nom descriptif pour identifier l\'objectif de cette cl\xe9","keyCreated":"Cl\xe9 API cr\xe9\xe9e","keyCreatedSuccess":"Cl\xe9 cr\xe9\xe9e avec succ\xe8s\xa0!","keyCreatedNote":"Copiez et stockez cette cl\xe9 maintenant – elle ne sera plus affich\xe9e.","done":"Termin\xe9","savePermissions":"Enregistrer les autorisations","allowAll":"Tout autoriser","restrict":"Restreindre","allowAllInfo":"Cette cl\xe9 peut acc\xe9der \xe0 tous les mod\xe8les disponibles.","restrictInfo":"Cette cl\xe9 peut acc\xe9der \xe0 {selected} des mod\xe8les {total}.","selected":"{count} s\xe9lectionn\xe9","all":"Tout","clear":"Effacer","searchModels":"Rechercher des mod\xe8les par nom ou fournisseur...","noModelsFound":"Aucun mod\xe8le trouv\xe9","keyNameRequired":"Le nom de la cl\xe9 est requis","keyNameTooLong":"Le nom de la cl\xe9 doit comporter {max}\xa0caract\xe8res ou moins.","keyNameInvalid":"Le nom de la cl\xe9 ne peut contenir que des lettres, des chiffres, des espaces, des traits d\'union et des traits de soulignement.","invalidKeyName":"Nom de cl\xe9 invalide","failedCreateKey":"\xc9chec de la cr\xe9ation de la cl\xe9","failedCreateKeyRetry":"\xc9chec de la cr\xe9ation de la cl\xe9. Veuillez r\xe9essayer.","invalidKeyId":"ID de cl\xe9 invalide","failedDeleteKey":"\xc9chec de la suppression de la cl\xe9","failedDeleteKeyRetry":"\xc9chec de la suppression de la cl\xe9. Veuillez r\xe9essayer.","invalidModelsSelection":"S\xe9lection de mod\xe8les invalide","cannotSelectMoreThanModels":"Impossible de s\xe9lectionner plus de {max} mod\xe8les","failedUpdatePermissions":"\xc9chec de la mise \xe0 jour des autorisations","failedUpdatePermissionsRetry":"\xc9chec de la mise \xe0 jour des autorisations. Veuillez r\xe9essayer.","unknownProvider":"inconnu","copyMaskedKey":"Copier la cl\xe9 masqu\xe9e","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"Dernier\xa0: {date}","editPermissions":"Modifier les autorisations","deleteKey":"Supprimer la cl\xe9","model":"Mod\xe8le {count}","models":"Mod\xe8les {count}","permissionsTitle":"Autorisations\xa0: {name}","allowAllDesc":"Cette cl\xe9 peut acc\xe9der \xe0 tous les mod\xe8les disponibles.","restrictDesc":"Cette cl\xe9 peut acc\xe9der \xe0 {selectedCount} des mod\xe8les {totalModels}.","selectedCount":"{count} s\xe9lectionn\xe9"},"auditLog":{"title":"Journal d\'audit","searchPlaceholder":"Actions de recherche...","action":"Action","actor":"Acteur","target":"Cible","ipAddress":"Adresse IP","timestamp":"Horodatage","noEntries":"Aucune entr\xe9e d\'audit trouv\xe9e","filterByAction":"Filtrer par action...","filterByActor":"Filtrer par acteur...","filterEntriesAria":"Filtrer les entr\xe9es du journal d\'audit","filterByActionTypeAria":"Filtrer par type d\'action","filterByActorAria":"Filtrer par acteur","refreshAuditLogAria":"Actualiser le journal d\'audit","tableAria":"Entr\xe9es du journal d\'audit","failedFetchAuditLog":"\xc9chec de la r\xe9cup\xe9ration du journal d\'audit","notAvailable":"—","description":"Actions administratives et \xe9v\xe9nements de s\xe9curit\xe9","showing":"Affichage des entr\xe9es {count} (d\xe9calage {offset})","previous":"Pr\xe9c\xe9dent"},"media":{"title":"Espace m\xe9dia","subtitle":"G\xe9n\xe9rez des images, des vid\xe9os et de la musique","model":"Model","prompt":"Prompt","generate":"G\xe9n\xe9rer","generating":"Generating...","loadingModels":"Loading available models...","noModels":"No models available. Configure providers with media capabilities first.","error":"Generation Failed","result":"Result","imageDescription":"Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.","videoDescription":"Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.","musicDescription":"Compose music using Stable Audio Open or MusicGen via ComfyUI."},"cliTools":{"title":"Outils CLI","noActiveProviders":"Aucun fournisseur actif","noActiveProvidersDesc":"Veuillez d\'abord ajouter et connecter des fournisseurs pour configurer les outils CLI.","mapModels":"Mod\xe8les de cartes","testConnection":"Tester la connexion","connectionStatus":"\xc9tat de la connexion","configureEndpoint":"Configurer le point de terminaison","instructions":"Instructions","modelMapping":"Cartographie du mod\xe8le","baseUrl":"URL de base","apiKey":"Cl\xe9 API","configured":"Configur\xe9","notConfigured":"Non configur\xe9","notInstalled":"Non install\xe9","custom":"Personnalis\xe9","unknown":"Inconnu","lastSavedAt":"Dernier enregistrement\xa0: {date}","never":"Jamais","justNow":"juste maintenant","minutesAgoShort":"il y a {count}m","hoursAgoShort":"il y a {count}h","daysAgoShort":"Il y a {count}j","monthsAgoShort":"Il y a {count}mo","yearsAgoShort":"Il y a {count}ans","runtimeCheckFailed":"La v\xe9rification de l\'ex\xe9cution a \xe9chou\xe9","yourApiKeyPlaceholder":"votre-cl\xe9-API","modelPlaceholder":"fournisseur/identifiant de mod\xe8le","configurationSaved":"Configuration enregistr\xe9e avec succ\xe8s.","failedToSave":"\xc9chec de l\'enregistrement de la configuration.","noApiKeysCreateOne":"Aucune cl\xe9 API\xa0–\xa0Cr\xe9ez-en une sur la page Cl\xe9s","defaultOmnirouteKey":"sk_omniroute (par d\xe9faut)","selectModel":"S\xe9lectionnez le mod\xe8le","selectModelForAlias":"S\xe9lectionnez le mod\xe8le pour {alias}","selectModelForTool":"S\xe9lectionnez le mod\xe8le pour {tool}","select":"S\xe9lectionnez","clear":"Effacer","comingSoon":"Bient\xf4t disponible","checkingRuntime":"V\xe9rification de l\'\xe9tat d\'ex\xe9cution...","guideOnlyIntegration":"Int\xe9gration avec guide uniquement (aucun runtime local requis)","cliRuntimeDetected":"Runtime CLI d\xe9tect\xe9 et pr\xeat","cliFoundNotRunnable":"CLI trouv\xe9e mais non ex\xe9cutable{reason}","cliRuntimeNotDetected":"L\'ex\xe9cution CLI n\'est pas d\xe9tect\xe9e","binary":"Binaire","configPath":"Chemin de configuration","configPathShort":"Configuration","failedCheckRuntimeStatus":"\xc9chec de la v\xe9rification de l\'\xe9tat d\'ex\xe9cution.","copy":"Copier","copied":"Copi\xe9","copyConfig":"Copier la configuration","saveConfig":"Enregistrer la configuration","selectionSaved":"S\xe9lection enregistr\xe9e","guide":"Guider","detected":"D\xe9tect\xe9","notReady":"Pas pr\xeat","active":"Actif","inactive":"Inactif","startMitm":"D\xe9marrer MITM","stopMitm":"Arr\xeatez le MITM","mitmStarted":"MITM a d\xe9marr\xe9 avec succ\xe8s\xa0!","mitmStopped":"MITM s\'est arr\xeat\xe9 avec succ\xe8s\xa0!","failedStart":"\xc9chec du d\xe9marrage de MITM","failedStop":"\xc9chec de l\'arr\xeat de MITM","saveMappings":"Enregistrer les mappages","mappingsSaved":"Mappages enregistr\xe9s\xa0!","failedSaveMappings":"\xc9chec de l\'enregistrement des mappages","howItWorks":"Comment \xe7a marche\xa0:","antigravityHowWorksDesc":"Antigravity envoie des requ\xeates au point de terminaison de Google. MITM les intercepte et les redirige vers OmniRoute.","antigravityStep1":"1. D\xe9marrez MITM pour acheminer les demandes via OmniRoute.","antigravityStep2Prefix":"2. Ajouter","antigravityStep2Suffix":"\xe0 votre fichier hosts en tant que 127.0.0.1.","antigravityStep3":"3. Ouvrez Antigravity et les requ\xeates seront proxy.","sudoPasswordRequiredTitle":"Mot de passe Sudo requis","sudoPasswordHint":"Un mot de passe administrateur est requis pour modifier les param\xe8tres du fichier h\xf4te et du proxy syst\xe8me.","enterSudoPassword":"Entrez le mot de passe sudo","sudoPasswordRequiredError":"Le mot de passe Sudo est requis.","cancel":"Annuler","confirm":"Confirmer","settingsApplied":"Param\xe8tres appliqu\xe9s avec succ\xe8s\xa0!","failedApplySettings":"\xc9chec de l\'application des param\xe8tres","settingsReset":"Les param\xe8tres ont \xe9t\xe9 r\xe9initialis\xe9s avec succ\xe8s\xa0!","failedResetSettings":"\xc9chec de la r\xe9initialisation des param\xe8tres","backupRestored":"Sauvegarde restaur\xe9e\xa0!","failedRestore":"\xc9chec de la restauration","checkingCli":"V\xe9rification de {tool} CLI...","cliNotRunnable":"{tool} CLI install\xe9 mais non ex\xe9cutable","cliNotInstalled":"{tool} CLI non install\xe9","cliNotDetected":"{tool} CLI non d\xe9tect\xe9e","cliDetectedReady":"{tool} CLI d\xe9tect\xe9 et pr\xeat","cliFoundFailedHealthcheck":"{tool} CLI a \xe9t\xe9 trouv\xe9e mais le contr\xf4le de sant\xe9 d\'ex\xe9cution a \xe9chou\xe9{reason}.","installCliPrompt":"Veuillez installer {tool} CLI pour utiliser cette fonctionnalit\xe9.","installCodexPrompt":"Veuillez installer Codex CLI pour utiliser la fonctionnalit\xe9 d\'application automatique.","hide":"Masquer","howToInstall":"Comment installer","installationGuide":"Guide d\'installation","platforms":"macOS/Linux/Windows\xa0:","afterInstallationRun":"Apr\xe8s l\'installation, ex\xe9cutez","toVerify":"\xe0 v\xe9rifier.","current":"Actuel","baseUrlPlaceholder":"https://.../v1","resetToDefault":"R\xe9initialiser aux valeurs par d\xe9faut","providerModelPlaceholder":"fournisseur/identifiant de mod\xe8le","apply":"Postuler","reset":"R\xe9initialiser","manualConfig":"Configuration manuelle","backups":"Sauvegardes","configBackups":"Sauvegardes de configuration","noBackupsYet":"Aucune sauvegarde pour l\'instant. Les sauvegardes sont cr\xe9\xe9es automatiquement avant chaque application ou r\xe9initialisation.","restore":"Restaurer","backupRestoredReloading":"Sauvegarde restaur\xe9e\xa0! Statut de rechargement...","failedRestoreBackup":"\xc9chec de la restauration de la sauvegarde","applied":"Appliqu\xe9!","failed":"\xc9chec","resetDone":"R\xe9initialisez\xa0!","omnirouteConfiguredOpenAiCompatible":"OmniRoute est configur\xe9 en tant que fournisseur compatible OpenAI","provider":"Fournisseur","model":"Mod\xe8le","providers":"Fournisseurs","auth":"Authentification","noApiKeysAvailable":"Aucune cl\xe9 API disponible","usingDefaultOmniroute":"Utilisation par d\xe9faut\xa0: sk_omniroute","updateConfig":"Mettre \xe0 jour la configuration","applyConfig":"Appliquer la configuration","noBackupsAvailable":"Aucune sauvegarde disponible.","profileSaved":"Profil \\"{name}\\" enregistr\xe9\xa0!","failedSaveProfile":"\xc9chec de l\'enregistrement du profil","profileActivated":"Profil activ\xe9\xa0!","failedActivateProfile":"\xc9chec de l\'activation du profil","profiles":"Profils","savedProfiles":"Profils enregistr\xe9s","noProfilesYet":"Aucun profil enregistr\xe9 pour le moment. Enregistrez la configuration actuelle en tant que profil ci-dessous.","activate":"Activer","deleteProfile":"Supprimer le profil","profileNamePlaceholder":"Nom du profil (par exemple, compte personnel)","saveCurrent":"Enregistrer le courant","codexAuthNotePrefix":"Utilisations du Codex","codexAuthNoteMiddle":"avec","codexAuthNoteSuffix":"Cliquez sur \\"Appliquer\\" pour effectuer la configuration automatique.","claudeManualConfiguration":"Claude CLI - Configuration manuelle","codexManualConfiguration":"CLI Codex - Configuration manuelle","droidManualConfiguration":"Factory Droid - Configuration manuelle","openClawManualConfiguration":"Griffe ouverte - Configuration manuelle","clineManualConfiguration":"Configuration manuelle en ligne","kiloManualConfiguration":"Configuration manuelle du code kilo","toolDescriptions":{"antigravity":"IDE Google Antigravity avec MITM","claude":"Anthropique Claude Code CLI","codex":"CLI du Codex OpenAI","droid":"Assistant IA pour dro\xefdes d\'usine","openclaw":"Assistant IA Open Claw","cline":"CLI de l\'assistant de codage Cline AI","kilo":"CLI de l\'assistant IA Kilo Code","cursor":"\xc9diteur de code AI du curseur","continue":"Continuer l\'Assistant IA"},"guides":{"cursor":{"notes":{"0":"N\xe9cessite un compte Cursor Pro pour utiliser cette fonctionnalit\xe9.","1":"Le curseur achemine les requ\xeates via son propre serveur, le point de terminaison local n\'est donc pas pris en charge. Veuillez activer Cloud Endpoint dans les param\xe8tres."},"steps":{"1":{"title":"Ouvrir les param\xe8tres","desc":"Allez dans Param\xe8tres -> Mod\xe8les"},"2":{"title":"Activer l\'API OpenAI","desc":"Activer l\'option \\"Cl\xe9 API OpenAI\\""},"3":{"title":"URL de base"},"4":{"title":"Cl\xe9 API"},"5":{"title":"Ajouter un mod\xe8le personnalis\xe9","desc":"Cliquez sur \\"Afficher tous les mod\xe8les\\" -> \\"Ajouter un mod\xe8le personnalis\xe9\\""},"6":{"title":"S\xe9lectionnez le mod\xe8le"}}},"continue":{"steps":{"1":{"title":"Ouvrir la configuration","desc":"Ouvrir le fichier de configuration Continuer"},"2":{"title":"Cl\xe9 API"},"3":{"title":"S\xe9lectionnez le mod\xe8le"},"4":{"title":"Ajouter une configuration de mod\xe8le","desc":"Ajoutez la configuration suivante \xe0 votre tableau models\xa0:"}}}}},"combos":{"title":"Combinaisons","description":"Cr\xe9ez des combinaisons de mod\xe8les avec un routage pond\xe9r\xe9 et une prise en charge de secours","createCombo":"Cr\xe9er une combinaison","editCombo":"Modifier la combinaison","deleteCombo":"Supprimer la combinaison","noModels":"Aucun mod\xe8le","noModelsYet":"Aucun mod\xe8le ajout\xe9 pour l\'instant","addModel":"Ajouter un mod\xe8le","addModelToCombo":"Ajouter un mod\xe8le au combo","routingStrategy":"Strat\xe9gie de routage","maxRetries":"Nombre maximal de tentatives","timeout":"D\xe9lai d\'expiration (ms)","healthcheck":"Bilan de sant\xe9","priority":"Priorit\xe9","fallback":"Repli","roundRobin":"Tournoi \xe0 la ronde","random":"Al\xe9atoire","leastLatency":"Moins de latence","comboName":"Nom de la combinaison","comboNamePlaceholder":"mon-combo","deleteConfirm":"Supprimer cette combinaison\xa0?","noCombosYet":"Pas encore de combo","comboCreated":"Combo cr\xe9\xe9 avec succ\xe8s","comboUpdated":"Combo mis \xe0 jour avec succ\xe8s","comboDeleted":"Combinaison supprim\xe9e","failedCreate":"\xc9chec de la cr\xe9ation du combo","failedUpdate":"\xc9chec de la mise \xe0 jour du combo","errorCreating":"Erreur lors de la cr\xe9ation du combo","errorUpdating":"Erreur lors de la mise \xe0 jour du combo","errorDeleting":"Erreur lors de la suppression du combo","testFailed":"La demande de test a \xe9chou\xe9","failedToggle":"Impossible de basculer la combinaison","testResults":"R\xe9sultats des tests — {name}","resolvedBy":"R\xe9solu par\xa0:","more":"+{count} plus","reqs":"demandes","success":"succ\xe8s","proxyConfigured":"Proxy configur\xe9","copyComboName":"Copier le nom du combo","enableCombo":"Activer la combinaison","disableCombo":"D\xe9sactiver la combinaison","testCombo":"Combinaison de tests","duplicate":"Dupliquer","proxyConfig":"Configuration du proxy","nameRequired":"Le nom est requis","nameInvalid":"Uniquement les lettres, chiffres, -, _, / et . autoris\xe9","nameHint":"Lettres, chiffres, -, _, / et . autoris\xe9","priorityDesc":"Repli s\xe9quentiel\xa0: essaie d\'abord le mod\xe8le 1, puis le 2, etc.","weightedDesc":"R\xe9partit le trafic en pourcentage de poids avec repli","roundRobinDesc":"Distribution circulaire : chaque demande va au mod\xe8le suivant en rotation","randomDesc":"S\xe9lection al\xe9atoire uniforme, puis retour aux mod\xe8les restants","leastUsedDesc":"S\xe9lectionne le mod\xe8le avec le moins de demandes, en \xe9quilibrant la charge au fil du temps","costOptimizedDesc":"Itin\xe9raires vers le mod\xe8le le moins cher en premier en fonction du prix","models":"Mod\xe8les","autoBalance":"\xc9quilibre automatique","advancedSettings":"Param\xe8tres avanc\xe9s","retryDelay":"D\xe9lai de nouvelle tentative (ms)","concurrencyPerModel":"Concurrence / Mod\xe8le","queueTimeout":"D\xe9lai d\'expiration de la file d\'attente (ms)","advancedHint":"Laissez vide pour utiliser les valeurs par d\xe9faut globales. Ceux-ci remplacent les param\xe8tres de chaque fournisseur.","moveUp":"Monter","moveDown":"Descendre","removeModel":"Supprimer","saving":"Sauvegarde...","weighted":"Pond\xe9r\xe9","leastUsed":"Le moins utilis\xe9","costOpt":"Option de co\xfbt","strategyGuideTitle":"Comment utiliser cette strat\xe9gie","strategyGuideWhen":"Quand utiliser","strategyGuideAvoid":"A \xe9viter quand","strategyGuideExample":"Exemple","strategyGuide":{"priority":{"when":"Vous avez un mod\xe8le pr\xe9f\xe9r\xe9 et souhaitez uniquement une solution de secours en cas d\'\xe9chec.","avoid":"Vous avez besoin d’une distribution des demandes entre les mod\xe8les.","example":"Mod\xe8le de codage principal avec sauvegarde moins ch\xe8re en cas de panne."},"weighted":{"when":"Vous avez besoin d’un trafic contr\xf4l\xe9 r\xe9parti entre les mod\xe8les.","avoid":"Vous ne pouvez pas maintenir des poids pr\xe9cis au fil du temps.","example":"Mod\xe8le stable \xe0 80 % + d\xe9ploiement du mod\xe8le Canary \xe0 20 %."},"round-robin":{"when":"Vous voulez une distribution pr\xe9visible et uniforme.","avoid":"Les mod\xe8les diff\xe8rent trop en termes de latence ou de co\xfbt.","example":"M\xeame mod\xe8le sur plusieurs comptes pour r\xe9partir le d\xe9bit."},"random":{"when":"Vous souhaitez une distribution simple avec une configuration minimale.","avoid":"Vous avez besoin de garanties de trafic strictes.","example":"Prototypage rapide avec des mod\xe8les \xe9quivalents."},"least-used":{"when":"Vous souhaitez un \xe9quilibrage adaptatif bas\xe9 sur la demande en direct.","avoid":"Le trafic est trop faible pour b\xe9n\xe9ficier d’un \xe9quilibrage des usages.","example":"Charges de travail mixtes o\xf9 un mod\xe8le est souvent surcharg\xe9."},"cost-optimized":{"when":"La r\xe9duction des co\xfbts est votre priorit\xe9 absolue.","avoid":"Les donn\xe9es de tarification sont manquantes ou obsol\xe8tes.","example":"Travaux en arri\xe8re-plan ou par lots pour lesquels un co\xfbt inf\xe9rieur est pr\xe9f\xe9r\xe9."}},"advancedHelp":{"maxRetries":"Combien de tentatives sont tent\xe9es avant l\'\xe9chec d\'une requ\xeate.","retryDelay":"Initial wait between retries. Higher values reduce burst pressure.","timeout":"Maximum request duration before aborting.","healthcheck":"Skips unhealthy models/providers from routing decisions.","concurrencyPerModel":"Max simultaneous requests allowed per model in round-robin.","queueTimeout":"How long a request can wait in queue before timing out."},"templatesTitle":"Quick templates","templatesDescription":"Apply a starting profile, then adjust models and config.","templateApply":"Apply template","templateHighAvailability":"High availability","templateHighAvailabilityDesc":"Priority routing with health checks and safe retries.","templateCostSaver":"Cost saver","templateCostSaverDesc":"Cost-optimized routing for budget-first workloads.","templateBalanced":"Charge \xe9quilibr\xe9e","templateBalancedDesc":"Routage le moins utilis\xe9 pour r\xe9partir la demande dans le temps.","usageGuideHide":"Cacher","usageGuideDontShowAgain":"Ne plus montrer","usageGuideShow":"Afficher le guide","quickTestTitle":"Combo pr\xeat \xe0 valider","quickTestDescription":"Ex\xe9cutez un test maintenant pour confirmer le comportement de repli et de latence.","testNow":"Testez maintenant","pricingCoverage":"Couverture tarifaire","pricingCoverageHint":"Les co\xfbts optimis\xe9s fonctionnent mieux lorsque tous les mod\xe8les combin\xe9s ont des prix.","pricingAvailable":"Tarifs disponibles","pricingMissing":"Pas de prix","pricingAvailableShort":"prix","pricingMissingShort":"sans prix","warningRoundRobinSingleModel":"Le round-robin est plus utile avec au moins 2 mod\xe8les.","warningCostOptimizedPartialPricing":"Seuls {priced} des mod\xe8les {total} ont un prix. Le routage peut \xeatre partiellement ax\xe9 sur les co\xfbts.","warningCostOptimizedNoPricing":"Aucune donn\xe9e de prix trouv\xe9e pour ce combo. Un itin\xe9raire optimis\xe9 en termes de co\xfbts peut \xeatre inattendu.","readinessTitle":"Pr\xeat \xe0 enregistrer ?","readinessDescription":"V\xe9rifie la checklist avant de cr\xe9er ou de mettre \xe0 jour ce combo.","readinessCheckName":"Le nom du combo est valide","readinessCheckModels":"Au moins un mod\xe8le est s\xe9lectionn\xe9","readinessCheckWeights":"Le total des poids est \xe0 100 %","readinessCheckWeightsOptional":"R\xe8gle de pond\xe9ration non requise","readinessCheckPricing":"Les donn\xe9es de prix sont disponibles","readinessCheckPricingOptional":"R\xe8gle de prix non requise","saveBlockedTitle":"L’enregistrement est bloqu\xe9 tant que ces points ne sont pas corrig\xe9s :","saveBlockName":"D\xe9finis un nom pour le combo.","saveBlockModels":"Ajoute au moins un mod\xe8le.","saveBlockWeighted":"Ajuste les pond\xe9rations \xe0 100 % (actuel : {total} %).","saveBlockPricing":"Ajoute un prix pour au moins un mod\xe8le ou choisis une autre strat\xe9gie.","recommendationsLabel":"Configuration recommand\xe9e","applyRecommendations":"Appliquer les recommandations","recommendationsUpdated":"Recommandations mises \xe0 jour pour {strategy}.","recommendationsApplied":"Recommandations appliqu\xe9es \xe0 ce combo.","strategyRecommendations":{"priority":{"title":"Base tol\xe9rante aux pannes","description":"Utilise un mod\xe8le principal et garde une cha\xeene de fallback courte et fiable.","tip1":"Place ton mod\xe8le le plus fiable en premier.","tip2":"Garde 1 \xe0 2 mod\xe8les de secours avec une qualit\xe9 proche.","tip3":"Active des retries s\xfbrs pour absorber les pannes transitoires."},"weighted":{"title":"R\xe9partition de trafic contr\xf4l\xe9e","description":"Id\xe9al pour les d\xe9ploiements canary et les migrations progressives.","tip1":"Commence avec une r\xe9partition prudente comme 90/10.","tip2":"Garde le total \xe0 100 % et auto-\xe9quilibre apr\xe8s chaque changement.","tip3":"Surveille succ\xe8s et latence avant d’augmenter le poids canary."},"round-robin":{"title":"Partage de charge pr\xe9visible","description":"Parfait quand les mod\xe8les sont \xe9quivalents et qu’il faut une distribution stable.","tip1":"Utilise au moins 2 mod\xe8les.","tip2":"D\xe9finis des limites de concurrence pour \xe9viter les pics.","tip3":"Utilise un timeout de file pour \xe9chouer vite en saturation."},"random":{"title":"R\xe9partition rapide avec peu de r\xe9glages","description":"\xc0 utiliser pour une distribution simple sans garanties strictes.","tip1":"Choisis des mod\xe8les avec des profils de latence similaires.","tip2":"Garde les retries actifs pour absorber les \xe9checs al\xe9atoires.","tip3":"\xc0 privil\xe9gier pour l’exp\xe9rimentation, pas pour des SLA stricts."},"least-used":{"title":"\xc9quilibrage adaptatif","description":"Routage vers les mod\xe8les les moins utilis\xe9s pour r\xe9duire les points chauds.","tip1":"Fonctionne mieux avec un trafic continu.","tip2":"Combine avec les health checks pour un \xe9quilibrage plus s\xfbr.","tip3":"Suis l’usage par mod\xe8le pour valider la distribution."},"cost-optimized":{"title":"Routage orient\xe9 budget","description":"Routage vers les mod\xe8les les moins co\xfbteux si les prix sont disponibles.","tip1":"Assure une couverture de prix pour tous les mod\xe8les s\xe9lectionn\xe9s.","tip2":"Garde un fallback de qualit\xe9 pour les prompts difficiles.","tip3":"Id\xe9al pour batch/t\xe2ches de fond o\xf9 le co\xfbt est le KPI principal."}}},"costs":{"title":"Co\xfbts","budget":"Budget","totalCost":"Co\xfbt total","breakdown":"R\xe9partition des co\xfbts","noData":"Aucune donn\xe9e sur les co\xfbts","byModel":"Par mod\xe8le","byProvider":"Par fournisseur"},"endpoint":{"title":"Point de terminaison de l\'API","available":"Points de terminaison disponibles","cloudProxy":"Proxy cloud","disableConfirm":"\xcates-vous s\xfbr de vouloir d\xe9sactiver le proxy cloud\xa0?","baseUrl":"URL de base","apiKeyLabel":"Cl\xe9 API","registeredKeys":"Cl\xe9s enregistr\xe9es","chatCompletions":"Ach\xe8vements des discussions","responses":"R\xe9ponses","listModels":"Liste des mod\xe8les","usingCloudProxy":"Utiliser le proxy cloud","usingLocalServer":"Utiliser un serveur local","machineId":"ID de l\'ordinateur\xa0: {id}...","disableCloud":"D\xe9sactiver le cloud","enableCloud":"Activer le cloud","modelsAcrossEndpoints":"Mod\xe8les {models} sur {endpoints} points de terminaison","chatDesc":"Chat en streaming et sans streaming avec tous les fournisseurs","embeddings":"Int\xe9grations","embeddingsDesc":"Int\xe9grations de texte pour les pipelines de recherche et RAG","imageGeneration":"G\xe9n\xe9ration d\'images","imageDesc":"G\xe9n\xe9rer des images \xe0 partir d\'invites de texte","rerank":"Reclassement","rerankDesc":"Reclasser les documents par pertinence par rapport \xe0 une requ\xeate","audioTranscription":"Transcription audio","audioTranscriptionDesc":"Transcrire des fichiers audio en texte (Whisper)","textToSpeech":"Synth\xe8se vocale","textToSpeechDesc":"Convertir du texte en discours au son naturel","moderations":"Mod\xe9rations","moderationsDesc":"Mod\xe9ration du contenu et classification de s\xe9curit\xe9","responsesDesc":"API Responses d\'OpenAI pour Codex et workflows agentiques avanc\xe9s","listModelsDesc":"Lister tous les mod\xe8les disponibles sur tous les fournisseurs connect\xe9s","settingsApiDesc":"Lire et modifier la configuration d\'OmniRoute via l\'API","settingsApi":"Settings API","categoryCore":"APIs Principales","categoryMedia":"M\xe9dias et Multi-Modal","categoryUtility":"Utilitaires et Gestion","enableCloudTitle":"Activer le proxy cloud","whatYouGet":"Ce que vous obtiendrez","cloudBenefitAccess":"Acc\xe9dez \xe0 votre API depuis n\'importe o\xf9 dans le monde","cloudBenefitShare":"Partagez facilement le point de terminaison avec votre \xe9quipe","cloudBenefitPorts":"Pas besoin d\'ouvrir des ports ou de configurer un pare-feu","cloudBenefitEdge":"R\xe9seau p\xe9riph\xe9rique mondial rapide","cloudSessionNote":"Cloud conservera votre session d\'authentification pendant 1\xa0jour. S\'il n\'est pas utilis\xe9, il sera automatiquement supprim\xe9.","cloudUnstableNote":"Cloud est actuellement instable avec Claude Code OAuth dans certains cas.","cloudConnected":"Proxy Cloud connect\xe9\xa0!","connectingToCloud":"Connexion au cloud...","verifyingConnection":"V\xe9rification de la connexion...","connecting":"Connexion...","verifying":"V\xe9rification...","connected":"Connect\xe9 !","disableCloudTitle":"D\xe9sactiver le proxy cloud","disableWarning":"Toutes les sessions d\'authentification seront supprim\xe9es du cloud.","syncingData":"Synchronisation des derni\xe8res donn\xe9es...","disablingCloud":"D\xe9sactivation du cloud...","syncing":"Synchronisation...","disabling":"D\xe9sactivation...","cloudConnectedVerified":"Cloud Proxy connect\xe9 et v\xe9rifi\xe9\xa0!","connectedVerificationPending":"Connect\xe9\xa0–\xa0v\xe9rification en attente","connectedVerificationPendingWithError":"Connect\xe9 — v\xe9rification en attente\xa0: {error}","cloudDisabledSuccess":"Cloud d\xe9sactiv\xe9 avec succ\xe8s","syncedSuccess":"Synchronis\xe9 avec succ\xe8s","failedDisable":"\xc9chec de la d\xe9sactivation du cloud","failedEnable":"\xc9chec de l\'activation du cloud","cloudRequestTimeout":"Expiration du d\xe9lai de demande cloud","cloudRequestFailed":"La requ\xeate cloud a \xe9chou\xe9","cloudWorkerUnreachable":"Impossible d\'atteindre le travailleur cloud. Assurez-vous que le service cloud est en cours d\'ex\xe9cution (npm run dev dans /cloud).","connectionFailed":"La connexion a \xe9chou\xe9","syncFailed":"\xc9chec de la synchronisation des donn\xe9es cloud","providerModelsTitle":"{provider} — Mod\xe8les","noModelsForProvider":"Aucun mod\xe8le disponible pour ce fournisseur.","chat":"Discuter","embedding":"Int\xe9gration","image":"Images","custom":"personnalis\xe9","modelsCount":"{count, plural, one {# model} other {# models}}","sectionTitle":"Surface d\'int\xe9gration","sectionDescription":"API compatibles OpenAI et points de terminaison du protocole op\xe9rationnel","tabApis":"API compatibles OpenAI","tabProtocols":"Protocoles","tabsAria":"Sections de point de terminaison","protocolsTitle":"Protocoles","protocolsDescription":"MCP et A2A sont des points de terminaison de premi\xe8re classe avec une observabilit\xe9 et des contr\xf4les d\xe9di\xe9s.","mcpCardTitle":"Serveur MCP","mcpCardDescription":"Protocole de contexte de mod\xe8le sur stdio","a2aCardTitle":"Serveur A2A","a2aCardDescription":"Point de terminaison Agent2Agent JSON-RPC","protocolToolsLabel":"Outils","protocolTasksLabel":"T\xe2ches","protocolActiveStreamsLabel":"Flux actifs","protocolLastActivity":"Derni\xe8re activit\xe9","quickStart":"D\xe9marrage rapide","openMcpDashboard":"Gestion MCP ouverte","openA2aDashboard":"Gestion A2A ouverte","mcpQuickStartTitle":"D\xe9marrage rapide MCP","mcpQuickStartStep1":"Ex\xe9cutez le serveur MCP via `omniroute --mcp`.","mcpQuickStartStep2":"Configurez votre client MCP pour vous connecter via le transport stdio.","mcpQuickStartStep3":"Invoquez des outils tels que `omniroute_get_health` et `omniroute_list_combos`.","a2aQuickStartTitle":"D\xe9marrage rapide A2A","a2aQuickStartStep1":"D\xe9couvrez la carte d\'agent sur `/.well-known/agent.json`.","a2aQuickStartStep2":"Envoyez des requ\xeates JSON-RPC \xe0 `POST /a2a` en utilisant `message/send` ou `message/stream`.","a2aQuickStartStep3":"Suivez et contr\xf4lez les t\xe2ches \xe0 l’aide de `tasks/get` et `tasks/cancel`."},"mcpDashboard":{"loading":"Chargement du tableau de bord MCP...","activate":"activer","deactivate":"d\xe9sactiver","confirmSwitchCombo":"Confirmer la combinaison {action} \\"{combo}\\"\xa0?","switchComboFailed":"\xc9chec du changement d\'\xe9tat du combo.","switchComboSuccess":"Combo \\"{combo}\\" mis \xe0 jour.","confirmApplyProfile":"Appliquer le profil de r\xe9silience \xab {profile} \xbb\xa0?","applyProfileFailed":"\xc9chec de l\'application du profil de r\xe9silience.","applyProfileSuccess":"Profil \\"{profile}\\" appliqu\xe9.","confirmResetBreakers":"R\xe9initialiser tous les disjoncteurs\xa0?","resetBreakersFailed":"\xc9chec de la r\xe9initialisation des disjoncteurs.","resetBreakersSuccess":"Les disjoncteurs se r\xe9initialisent.","processStatus":"Statut du processus","online":"En ligne","offline":"Hors ligne","pid":"PID","sessionUptime":"Disponibilit\xe9 de la session","lastHeartbeat":"Dernier battement de coeur","activity24h":"Activit\xe9 (24h)","totalCalls":"Total des appels","successRate":"Taux de r\xe9ussite","avgLatency":"Latence moyenne","topTools":"Meilleurs outils","noToolCalls24h":"Aucun outil n\'a appel\xe9 au cours des derni\xe8res 24 heures.","runtimeDetails":"D\xe9tails d\'ex\xe9cution","transport":"Transports","scopesEnforced":"Port\xe9es appliqu\xe9es","yes":"oui","no":"non","lastCall":"Dernier appel","heartbeatPath":"Heartbeat path","operationalControls":"Contr\xf4les op\xe9rationnels","switchCombo":"Changer de combinaison","inactive":"inactif","active":"actif","activateCombo":"Activer le combo","deactivateCombo":"D\xe9sactiver le combo","applyResilienceProfile":"Appliquer le profil de r\xe9silience","profileAggressive":"agressif","profileBalanced":"\xe9quilibr\xe9","profileConservative":"conservateur","applyProfile":"Appliquer le profil","resetCircuitBreakers":"R\xe9initialiser les disjoncteurs","resetCircuitBreakersHelp":"Efface l’\xe9tat actuel du disjoncteur et les compteurs de pannes pour les fournisseurs.","resetAllBreakers":"R\xe9initialiser tous les disjoncteurs","toolsAndScopes":"Outils et port\xe9es","tableTool":"Outil","tableScopes":"Port\xe9es","tablePhase":"Phase","tableAudit":"V\xe9rification","auditLog":"Journal d\'audit","auditSummary":"Appels\xa0: {total} | page {page} de {totalPages}","allTools":"Tous les outils","allResults":"Tous les r\xe9sultats","success":"Succ\xe8s","failure":"\xc9chec","apiKeyIdPlaceholder":"apiKeyId","loadingAuditEntries":"Loading audit entries...","noAuditEntriesForFilters":"No audit entries found for current filters.","tableTimestamp":"Timestamp","tableDuration":"Duration","tableResult":"Result","tableApiKey":"API key","failed":"failed","previous":"Previous","next":"Next"},"a2aDashboard":{"loading":"Loading A2A dashboard...","confirmCancelTask":"Cancel task {taskId}?","cancelTaskFailed":"\xc9chec de l\'annulation de la t\xe2che.","cancelTaskSuccess":"T\xe2che {taskId} annul\xe9e.","smokeSendFailed":"message/send smoke test failed.","smokeSendSuccessWithTask":"message/send ok (task {taskId}).","smokeSendSuccess":"message/send ok.","smokeStreamFailed":"message/stream smoke test failed.","smokeStreamSuccessWithTask":"message/stream ok (task {taskId}{stateSuffix}).","smokeStreamNoTaskId":"message/stream finished without task id.","health":"Health","ok":"ok","totalTasks":"Total tasks","activeStreams":"Flux actifs","lastTask":"Last task","taskStateOverview":"Task state overview","state":{"submitted":"submitted","working":"working","completed":"completed","failed":"failed","cancelled":"annul\xe9"},"agentCard":"Carte d\'agent","version":"Version","url":"URL","capabilities":"Capacit\xe9s","agentCardNotAvailable":"Carte d\'agent non disponible.","quickValidation":"Validation rapide","quickValidationDescription":"Executes smoke calls through the live `/a2a` endpoint.","runMessageSend":"Run message/send","runMessageStream":"Run message/stream","taskManagement":"Task management","taskSummary":"{total} tasks | page {page} of {totalPages}","allStates":"all","allSkills":"all skills","loadingTasks":"Loading tasks...","noTasksForFilters":"No tasks found for current filters.","tableTask":"Task","tableSkill":"Skill","tableState":"State","tableUpdated":"Updated","tableActions":"Actes","view":"Voir","cancel":"Annuler","previous":"Previous","next":"Next","taskDetail":"D\xe9tail de la t\xe2che","close":"Fermer","metadata":"M\xe9tadonn\xe9es","events":"\xc9v\xe9nements","artifacts":"Artefacts"},"health":{"title":"Sant\xe9 du syst\xe8me","description":"Surveillance en temps r\xe9el de votre instance OmniRoute","healthy":"Sain","degraded":"D\xe9grad\xe9","down":"Vers le bas","uptime":"Temps de disponibilit\xe9","memory":"M\xe9moire","memoryRss":"M\xe9moire (RSS)","heap":"Tas","cpu":"Processeur","database":"Base de donn\xe9es","version":"Version","lastCheck":"Derni\xe8re v\xe9rification","providerHealth":"Sant\xe9 du prestataire","systemMetrics":"M\xe9triques du syst\xe8me","tokenHealth":"Sant\xe9 du jeton","refreshAll":"Actualiser tout","checkNow":"V\xe9rifiez maintenant","loadingHealth":"Chargement des donn\xe9es de sant\xe9...","failedToLoad":"\xc9chec du chargement des donn\xe9es d\'\xe9tat\xa0: {error}","retry":"R\xe9essayer","allOperational":"Tous les syst\xe8mes op\xe9rationnels","issuesDetected":"Probl\xe8mes syst\xe8me d\xe9tect\xe9s","updatedAt":"{time} mis \xe0 jour","latency":"Latence","latencyP50":"p50","latencyP95":"p95","latencyP99":"p99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"Total des demandes","noDataYet":"Aucune donn\xe9e pour l\'instant","promptCache":"Cache d\'invite","entries":"Entr\xe9es","hitRate":"Taux de r\xe9ussite","hitsMisses":"Coups r\xe9ussis / Manqu\xe9s","signatureCache":"Cache de signatures","signatureDefaults":"Valeurs par d\xe9faut","signatureTool":"Outil","signatureFamily":"Famille","signatureSession":"S\xe9ance","recovering":"R\xe9cup\xe9ration","noCBData":"Aucune donn\xe9e sur les disjoncteurs disponible. Faites d\'abord quelques demandes.","providerHealthStatusAria":"\xc9tat de sant\xe9 du prestataire","issuesLabel":"Probl\xe8mes d\xe9tect\xe9s","operational":"Op\xe9rationnel","providers":"Fournisseurs","healthyCount":"{count} en bonne sant\xe9","nodeVersion":"Nœud {version}","failures":"\xc9chec de {count}","failuresPlural":"{count} \xe9checs","lastFailure":"Dernier","rateLimitStatus":"Statut de limite de d\xe9bit","activeLimiters":"{count} limiteur actif","activeLimitersPlural":"{count} limiteurs actifs","queued":"En file d\'attente","queuedCount":"{count} en file d\'attente","running":"courir","runningCount":"{count} en cours d\'ex\xe9cution","ok":"D\'accord","activeLockouts":"Verrouillages actifs","resetConfirm":"R\xe9initialiser tous les disjoncteurs \xe0 l\'\xe9tat sain\xa0? Cela effacera tous les d\xe9comptes d’\xe9checs et restaurera tous les fournisseurs \xe0 l’\xe9tat op\xe9rationnel.","resetAllTitle":"R\xe9initialisez tous les disjoncteurs \xe0 l’\xe9tat sain","resetting":"R\xe9initialisation...","resetAll":"Tout r\xe9initialiser","until":"Jusqu\'au {time}"},"limits":{"title":"Limites et quotas","rateLimit":"Limite de taux","remaining":"Restant","requestsPerMinute":"Requ\xeates/min","tokensPerMinute":"Jetons/min","dailyLimit":"Limite quotidienne"},"logs":{"title":"Journaux","requestLogs":"Journaux de demande","proxyLogs":"Journaux proxy","auditLog":"Journal d\'audit","console":"Console","auditLogDesc":"Actions administratives et \xe9v\xe9nements de s\xe9curit\xe9","loading":"Chargement...","refresh":"Actualiser","filterByAction":"Filtrer par action...","filterByActor":"Filtrer par acteur...","filterEntriesAria":"Filtrer les entr\xe9es du journal d\'audit","filterByActionTypeAria":"Filtrer par type d\'action","filterByActorAria":"Filtrer par acteur","refreshAuditLogAria":"Actualiser le journal d\'audit","tableAria":"Entr\xe9es du journal d\'audit","failedFetchAuditLog":"\xc9chec de la r\xe9cup\xe9ration du journal d\'audit","showing":"Affichage des entr\xe9es {count} (d\xe9calage {offset})","search":"Rechercher","timestamp":"Horodatage","action":"Action","actor":"Acteur","target":"Cible","details":"D\xe9tails","ipAddress":"Adresse IP","notAvailable":"—","noEntries":"Aucune entr\xe9e du journal d\'audit trouv\xe9e","previous":"Pr\xe9c\xe9dent","next":"Suivant"},"onboarding":{"welcome":"Bienvenue","security":"S\xe9curit\xe9","test":"Tester","ready":"Pr\xeat\xa0!","setPassword":"D\xe9finir le mot de passe","addProvider":"Ajoutez votre premier fournisseur","getStarted":"Commencer","skip":"Sauter","skipWizard":"Ignorer compl\xe8tement l\'assistant","skipPassword":"Ignorer la configuration du mot de passe","skipAndContinue":"Passer et continuer","passwordLabel":"Mot de passe","confirmPassword":"Confirmer le mot de passe","enterPassword":"Entrez le mot de passe","confirmPasswordPlaceholder":"Confirmer le mot de passe","passwordsMismatch":"Les mots de passe ne correspondent pas","setupComplete":"Configuration termin\xe9e\xa0!","goToDashboard":"Acc\xe9dez au tableau de bord →","welcomeDesc":"OmniRoute est votre proxy API IA local. Il achemine les requ\xeates vers plusieurs fournisseurs d\'IA avec \xe9quilibrage de charge, basculement et suivi de l\'utilisation.","multiProvider":"Multi-fournisseur","usageTracking":"Suivi de l\'utilisation","apiKeyMgmt":"Gestion des cl\xe9s API","securityDesc":"D\xe9finissez un mot de passe pour prot\xe9ger votre tableau de bord ou ignorez-le pour l\'instant.","providerDesc":"Connectez votre premier fournisseur d\'IA. Vous pourrez en ajouter d’autres plus tard.","apiKeyRequired":"Cl\xe9 API (obligatoire)","customUrlOptional":"URL personnalis\xe9e (facultatif)","testDesc":"V\xe9rifions que la connexion de votre fournisseur fonctionne.","runTest":"Ex\xe9cuter le test de connexion","testingConnection":"Test de connexion...","connectionSuccessful":"Connexion r\xe9ussie\xa0! Votre fournisseur est pr\xeat.","noProviderFound":"Aucun fournisseur trouv\xe9. Vous pourrez en ajouter un depuis le tableau de bord plus tard.","testFailed":"Le test a \xe9chou\xe9, mais vous pourrez le configurer ult\xe9rieurement.","couldNotTest":"Impossible de tester pour le moment. Vous pouvez tester depuis le tableau de bord.","doneDesc":"Vous \xeates pr\xeat\xa0! Votre instance OmniRoute est configur\xe9e et pr\xeate \xe0 proxyer les requ\xeates IA.","yourEndpoint":"Votre point de terminaison\xa0:","continue":"Continuer","retry":"R\xe9essayer","failedSetPassword":"\xc9chec de la d\xe9finition du mot de passe. Essayer \xe0 nouveau.","failedAddProvider":"\xc9chec de l\'ajout du fournisseur. Essayer \xe0 nouveau.","connectionError":"Erreur de connexion. Veuillez r\xe9essayer.","provider":"Fournisseur"},"providers":{"title":"Fournisseurs","addProvider":"Ajouter un fournisseur","editProvider":"Modifier le fournisseur","deleteProvider":"Supprimer le fournisseur","noProviders":"Aucun fournisseur configur\xe9","modelAvailability":"Disponibilit\xe9 du mod\xe8le","accounts":"Comptes","newAccount":"Nouveau compte","deleteConfirm":"\xcates-vous s\xfbr de vouloir supprimer ce fournisseur\xa0?","testing":"Test...","testConnection":"Tester la connexion","testSuccess":"Connexion r\xe9ussie","testFailed":"La connexion a \xe9chou\xe9","available":"Disponible","cooldown":"Temps de recharge","unavailable":"Indisponible","unknown":"Inconnu","oauthLabel":"OAuth","compatibleLabel":"Compatible","chat":"Discuter","responses":"R\xe9ponses","messages":"Messages","oauthProviders":"Fournisseurs OAuth","freeProviders":"Fournisseurs gratuits","apiKeyProviders":"Fournisseurs de cl\xe9s API","compatibleProviders":"Fournisseurs compatibles avec les cl\xe9s API","testAll":"Tout tester","testAllOAuth":"Testez toutes les connexions OAuth","testAllFree":"Testez toutes les connexions gratuites","testAllApiKey":"Testez toutes les connexions de cl\xe9 API","testAllCompatible":"Testez toutes les connexions compatibles","connected":"{count} Connect\xe9","errorCount":"{count} Erreur ({code})","errorCountNoCode":"{count} Erreur","noConnections":"Aucune connexion","disabled":"D\xe9sactiv\xe9","enableProvider":"Activer le fournisseur","disableProvider":"D\xe9sactiver le fournisseur","testResults":"R\xe9sultats des tests","noCompatibleYet":"Aucun fournisseur compatible ajout\xe9 pour le moment","compatibleHint":"Utilisez les boutons ci-dessus pour ajouter des points de terminaison compatibles OpenAI ou Anthropic","addOpenAICompatible":"Ajouter la compatibilit\xe9 OpenAI","addAnthropicCompatible":"Ajouter une compatibilit\xe9 anthropique","addNewProvider":"Ajouter un nouveau fournisseur","backToProviders":"Retour aux fournisseurs","configureNewProvider":"Configurez un nouveau fournisseur d\'IA \xe0 utiliser avec vos applications.","providerLabel":"Fournisseur","selectProvider":"S\xe9lectionnez un fournisseur","selectedProvider":"Fournisseur s\xe9lectionn\xe9","authMethod":"M\xe9thode d\'authentification","apiKeyLabel":"Cl\xe9 API","apiKeyRequired":"La cl\xe9 API est requise","selectProviderRequired":"Veuillez s\xe9lectionner un fournisseur","enterApiKey":"Entrez votre cl\xe9 API","apiKeySecure":"Votre cl\xe9 API sera crypt\xe9e et stock\xe9e en toute s\xe9curit\xe9.","oauth2Connect":"Connectez-vous avec OAuth2","oauth2Label":"OAuth2","oauth2Desc":"Connectez votre compte en utilisant l\'authentification OAuth2.","displayName":"Nom d\'affichage","displayNamePlaceholder":"par exemple, API de production, environnement de d\xe9veloppement","displayNameHint":"Facultatif. Un nom convivial pour identifier cette configuration.","active":"Actif","activeDescription":"Activez ce fournisseur pour l\'utiliser dans vos applications","cancel":"Annuler","createProvider":"Cr\xe9er un fournisseur","failedCreate":"\xc9chec de la cr\xe9ation du fournisseur","errorOccurred":"Une erreur s\'est produite. Veuillez r\xe9essayer.","modelStatus":"Statut du mod\xe8le","allModelsOperational":"Tous les mod\xe8les op\xe9rationnels","modelsWithIssues":"{count}\xa0mod\xe8le(s) pr\xe9sentant des probl\xe8mes","allModelsNormal":"Tous les mod\xe8les r\xe9pondent normalement.","cooldownCleared":"Temps de recharge effac\xe9 pour {model}","failedClearCooldown":"\xc9chec de la suppression du temps de recharge","loadingAvailability":"Chargement de la disponibilit\xe9 du mod\xe8le...","clearCooldown":"Effacer","clearing":"D\xe9gagement...","until":"Jusqu\'au {time}","providerTestFailed":"Le test du fournisseur a \xe9chou\xe9","modeTest":"{mode}Test","passedCount":"{count} r\xe9ussi","failedCount":"{count} a \xe9chou\xe9","testedCount":"{count} test\xe9","millisecondsAbbr":"{value}ms","okShort":"D\'accord","errorShort":"ERREUR","noActiveConnectionsInGroup":"Aucune connexion active trouv\xe9e pour ce groupe.","allTestsPassed":"Tous les tests {total} ont \xe9t\xe9 r\xe9ussis","testSummary":"{passed}/{total} r\xe9ussi, {failed} \xe9chou\xe9","nameLabel":"Nom","prefixLabel":"Pr\xe9fixe","baseUrlLabel":"URL de base","apiTypeLabel":"Type d\'API","prefixHint":"Obligatoire. Pr\xe9fixe unique pour les noms de mod\xe8les.","nameHint":"Obligatoire. Une \xe9tiquette conviviale pour ce nœud.","baseUrlHint":"Obligatoire. URL de base de l’API du fournisseur.","anthropicPrefixPlaceholder":"ac-prod","openaiPrefixPlaceholder":"oc-prod","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"Valider la connexion","validating":"Validation...","connectionValid":"La connexion est valide\xa0!","connectionFailed":"La connexion a \xe9chou\xe9. V\xe9rifiez l\'URL et la cl\xe9.","testKeyLabel":"Cl\xe9 API de test","testKeyPlaceholder":"sk-... (pour validation uniquement)","providerNotFound":"Fournisseur introuvable","deleteConnectionConfirm":"Supprimer cette connexion\xa0?","failedSetAlias":"\xc9chec de la d\xe9finition de l\'alias","failedSaveConnection":"\xc9chec de l\'enregistrement de la connexion","failedSaveConnectionRetry":"\xc9chec de l\'enregistrement de la connexion. Veuillez r\xe9essayer.","failedRetestConnection":"\xc9chec du nouveau test de connexion","deleteCompatibleNodeConfirm":"Supprimer ce nœud compatible {type}\xa0?","anthropicCompatibleDetails":"D\xe9tails compatibles anthropiques","openaiCompatibleDetails":"D\xe9tails compatibles avec OpenAI","messagesApi":"API de messages","responsesApi":"API de r\xe9ponses","chatCompletions":"Ach\xe8vements des discussions","importingModels":"Importation...","importFromModels":"Importer depuis /models","addConnectionToImport":"Ajoutez une connexion pour activer l\'importation.","noModelsConfigured":"Aucun mod\xe8le configur\xe9","connectionCount":"{count} connexion(s)","fetchingModels":"R\xe9cup\xe9ration des mod\xe8les disponibles...","failedFetchModels":"\xc9chec de la r\xe9cup\xe9ration des mod\xe8les","noModelsFound":"Aucun mod\xe8le trouv\xe9","importFailed":"\xc9chec de l\'importation","noNewModelsAdded":"Aucun nouveau mod\xe8le n\'a \xe9t\xe9 ajout\xe9.","adding":"Ajout...","importingModelsTitle":"Importation de mod\xe8les","copyModel":"Copier le mod\xe8le","removeModel":"Supprimer le mod\xe8le","rateLimitProtected":"Prot\xe9g\xe9","rateLimitUnprotected":"Non prot\xe9g\xe9","enableRateLimitProtection":"Cliquez pour activer la protection de limite de d\xe9bit","disableRateLimitProtection":"Cliquez pour d\xe9sactiver la protection de limite de d\xe9bit","productionKey":"Cl\xe9 de production","enterNewApiKey":"Saisissez une nouvelle cl\xe9 API","optional":"Facultatif","anthropicCompatibleName":"Compatible anthropique","openaiCompatibleName":"Compatible avec OpenAI","failedImportModels":"\xc9chec de l\'importation des mod\xe8les","noModelsReturnedFromEndpoint":"Aucun mod\xe8le renvoy\xe9 par le point de terminaison /models.","importingModelsProgress":"Importation de {current} des mod\xe8les {total}...","foundModelsStartingImport":"Mod\xe8les {count} trouv\xe9s. D\xe9marrage de l\'importation...","importingModelById":"Importation de {modelId}...","importSuccessCount":"{count, plural, one {# model} other {# models}} a \xe9t\xe9 import\xe9 avec succ\xe8s\xa0!","noNewModelsAddedExisting":"Aucun nouveau mod\xe8le n\'a \xe9t\xe9 ajout\xe9 (tous existent d\xe9j\xe0).","importDoneCount":"✓ C\'est fait\xa0! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"Une erreur inattendue s\'est produite","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"messages","responsesPath":"r\xe9ponses","chatCompletionsPath":"chat/ach\xe8vements","add":"Ajouter","edit":"Modifier","delete":"Supprimer","anthropic":"Anthropique","openai":"OpenAI","singleConnectionPerCompatible":"Une seule connexion est autoris\xe9e par nœud compatible. Ajoutez un autre nœud si vous avez besoin de plus de connexions.","connections":"Connexions","providerProxyTitleConfigured":"Mandataire du fournisseur\xa0: {host}","configured":"configur\xe9","providerProxyConfigureHint":"Configurer le proxy pour toutes les connexions de ce fournisseur","providerProxy":"Proxy du fournisseur","noConnectionsYet":"Aucune connexion pour l\'instant","addFirstConnectionHint":"Ajoutez votre premi\xe8re connexion pour commencer","addConnection":"Ajouter une connexion","availableModels":"Mod\xe8les disponibles","pageAutoRefresh":"La page s\'actualisera automatiquement...","statusDisabled":"d\xe9sactiv\xe9","statusConnected":"connect\xe9","statusRuntimeIssue":"probl\xe8me d\'ex\xe9cution","statusAuthFailed":"l\'authentification a \xe9chou\xe9","statusRateLimited":"tarif limit\xe9","statusNetworkIssue":"probl\xe8me de r\xe9seau","statusTestUnsupported":"test non pris en charge","statusUnavailable":"indisponible","statusFailed":"\xe9chou\xe9","statusError":"erreur","oauthAccount":"Compte OAuth","errorTypeRuntime":"Ex\xe9cution locale","errorTypeUpstreamAuth":"Authentification en amont","errorTypeMissingCredential":"Identifiant manquant","errorTypeRefreshFailed":"\xc9chec de l\'actualisation","errorTypeTokenExpired":"Jeton expir\xe9","errorTypeRateLimited":"Tarif limit\xe9","errorTypeUpstreamUnavailable":"Amont indisponible","errorTypeNetworkError":"Erreur r\xe9seau","errorTypeTestUnsupported":"Test non pris en charge","errorTypeUpstreamError":"Erreur en amont","proxySourceGlobal":"Mondial","proxySourceProvider":"Fournisseur","proxySourceKey":"Cl\xe9","proxyConfiguredBySource":"Mandataire ({source})\xa0: {host}","autoPriority":"Automatique\xa0: {priority}","proxy":"Procuration","retestAuthentication":"Retester l\'authentification","retest":"Retester","disableConnection":"D\xe9sactiver la connexion","enableConnection":"Activer la connexion","reauthenticateConnection":"R\xe9authentifier cette connexion","proxyConfig":"Configuration du proxy","aliasExistsAlert":"L\'alias \\"{alias}\\" existe d\xe9j\xe0. Veuillez utiliser un mod\xe8le diff\xe9rent ou modifier l\'alias existant.","openRouterAnyModelHint":"OpenRouter prend en charge n\'importe quel mod\xe8le. Ajoutez des mod\xe8les et cr\xe9ez des alias pour un acc\xe8s rapide.","modelIdFromOpenRouter":"ID du mod\xe8le (depuis OpenRouter)","openRouterModelPlaceholder":"anthropique/claude-3-opus","customModels":"Mod\xe8les personnalis\xe9s","customModelsHint":"Ajoutez des ID de mod\xe8le qui ne figurent pas dans la liste par d\xe9faut. Ceux-ci seront disponibles pour le routage.","modelId":"ID du mod\xe8le","customModelPlaceholder":"par ex. gpt-4.5-turbo","loading":"Chargement...","removeCustomModel":"Supprimer le mod\xe8le personnalis\xe9","noCustomModels":"Aucun mod\xe8le personnalis\xe9 ajout\xe9 pour l\'instant.","allSuggestedAliasesExist":"Tous les alias sugg\xe9r\xe9s existent d\xe9j\xe0. Veuillez choisir un autre mod\xe8le ou supprimer les alias conflictuels.","failedSaveCustomModel":"\xc9chec de l\'enregistrement du mod\xe8le personnalis\xe9","modelAddedSuccess":"Mod\xe8le {modelId} ajout\xe9 avec succ\xe8s","failedAddModelTryAgain":"\xc9chec de l\'ajout du mod\xe8le. Veuillez r\xe9essayer.","failedSaveImportedModel":"\xc9chec de l\'enregistrement du mod\xe8le import\xe9 dans la base de donn\xe9es personnalis\xe9e","failedImportModelsTryAgain":"\xc9chec de l\'importation des mod\xe8les. Veuillez r\xe9essayer.","failedRemoveModelFromDatabase":"\xc9chec de la suppression du mod\xe8le de la base de donn\xe9es","modelRemovedSuccess":"Mod\xe8le supprim\xe9 avec succ\xe8s","failedDeleteModelTryAgain":"\xc9chec de la suppression du mod\xe8le. Veuillez r\xe9essayer.","compatibleModelsDescription":"Ajoutez manuellement des mod\xe8les compatibles {type} ou importez-les \xe0 partir du point de terminaison /models.","anthropicCompatibleModelPlaceholder":"claude-3-opus-20240229","openaiCompatibleModelPlaceholder":"gpt-4o","apiKeyValidationFailed":"La validation de la cl\xe9 API a \xe9chou\xe9. Veuillez v\xe9rifier votre cl\xe9 et r\xe9essayer.","addProviderApiKeyTitle":"Ajouter la cl\xe9 API {provider}","checking":"V\xe9rification...","check":"V\xe9rifier","valid":"Valide","invalid":"Invalide","creating":"Cr\xe9ation...","validationChecksAnthropicCompatible":"La validation v\xe9rifie {provider} en v\xe9rifiant la cl\xe9 API.","validationChecksOpenAiCompatible":"La validation v\xe9rifie {provider} via /models sur votre URL de base.","priorityLabel":"Priorit\xe9","saving":"Sauvegarde...","save":"Enregistrer","editConnection":"Modifier la connexion","accountName":"Nom du compte","email":"Courriel","healthCheckMinutes":"Bilan de sant\xe9 (min)","healthCheckHint":"Intervalle d’actualisation proactif des jetons. 0 = d\xe9sactiv\xe9.","failedTestConnection":"\xc9chec du test de connexion","failed":"\xc9chec","leaveBlankKeepCurrentApiKey":"Laissez vide pour conserver la cl\xe9 API actuelle.","editCompatibleTitle":"Modifier {type} Compatible","compatibleBaseUrlHint":"Utilisez l\'URL de base (se terminant par /v1) pour votre API compatible {type}.","apiKeyForCheck":"Cl\xe9 API (pour v\xe9rification)","compatibleProdPlaceholder":"{type} Compatible (Prod)"},"settings":{"title":"Param\xe8tres","general":"G\xe9n\xe9ral","security":"S\xe9curit\xe9","appearance":"Apparence","routing":"Routage","cache":"Cache","resilience":"R\xe9silience","systemPrompt":"Invite syst\xe8me","thinkingBudget":"Penser le budget","proxy":"Procuration","pricing":"Tarifs","storage":"Stockage","policies":"Politiques","ipFilter":"Filtre IP","comboDefaults":"Valeurs par d\xe9faut des combos","fallbackChains":"Cha\xeenes de secours","changePassword":"Changer le mot de passe","enablePassword":"Activer le mot de passe","darkMode":"Mode sombre","lightMode":"Mode lumi\xe8re","systemTheme":"Th\xe8me syst\xe8me","enableCache":"Activer le cache","cacheTTL":"Dur\xe9e de vie du cache","maxCacheSize":"Taille maximale du cache","clearCache":"Vider le cache","cacheHits":"Acc\xe8s au cache","cacheMisses":"Manques de cache","hitRate":"Taux de r\xe9ussite","cacheEntries":"Entr\xe9es du cache","circuitBreaker":"Disjoncteur","retryPolicy":"Politique de nouvelle tentative","maxRetries":"Nombre maximal de tentatives","retryDelay":"D\xe9lai de nouvelle tentative","timeoutMs":"D\xe9lai d\'expiration (ms)","enableSystemPrompt":"Activer l\'invite syst\xe8me","systemPromptText":"Texte d\'invite du syst\xe8me","enableThinking":"Permettre la r\xe9flexion","maxThinkingTokens":"Jetons de r\xe9flexion maximum","enableProxy":"Activer le proxy","proxyUrl":"URL du proxy","pricingRates":"Format des tarifs","currentPricing":"Aper\xe7u des prix actuels","loadingPricing":"Chargement des donn\xe9es de tarification...","noPricing":"Aucune donn\xe9e de prix disponible","input":"Entr\xe9e","output":"Sortie","cached":"En cache","reasoning":"Raisonnement","cacheCreation":"Cr\xe9ation de cache","customPricing":"Tarification personnalis\xe9e","databaseSize":"Taille de la base de donn\xe9es","backupDb":"Base de donn\xe9es de sauvegarde","restoreDb":"Restaurer la base de donn\xe9es","exportData":"Exporter des donn\xe9es","importData":"Importer des donn\xe9es","clearData":"Effacer toutes les donn\xe9es","clearDataConfirm":"Cela supprimera d\xe9finitivement toutes les donn\xe9es. Es-tu s\xfbr?","enableRequestLogs":"Activer les journaux de demandes","logRetention":"Conservation des journaux","ipWhitelist":"Liste blanche IP","ipBlacklist":"Liste noire IP","addIP":"Ajouter une adresse IP","savedSuccessfully":"Param\xe8tres enregistr\xe9s avec succ\xe8s","ai":"IA","advanced":"Avanc\xe9","localMode":"Mode local — Toutes les donn\xe9es stock\xe9es sur votre machine","settingsSectionsAria":"Sections de param\xe8tres","switchThemes":"Basculer entre les th\xe8mes clairs et sombres","themeSelectionAria":"S\xe9lection de th\xe8me","themeLight":"Lumi\xe8re","themeDark":"Sombre","themeSystem":"Syst\xe8me","hideHealthLogs":"Masquer les journaux de contr\xf4le de sant\xe9","hideHealthLogsDesc":"Lorsqu\'il est activ\xe9, supprimez les messages [HealthCheck] dans la console du serveur","themeAccent":"Couleur du th\xe8me","themeAccentDesc":"Choisissez une couleur pr\xe9d\xe9finie ou cr\xe9ez votre propre th\xe8me avec une seule couleur","themeCreate":"Cr\xe9er un th\xe8me","themeCustom":"Th\xe8me personnalis\xe9","themeBlue":"Bleu","themeRed":"Rouge","themeGreen":"Vert","themeViolet":"Violet","themeOrange":"Orange","themeCyan":"Cyan","promptCache":"Cache d\'invite","flushCache":"Vider le cache","flushing":"Rin\xe7age…","size":"Taille","hits":"Clics","evictions":"Expulsions","loadingCacheStats":"Chargement des statistiques du cache…","globalProxy":"Proxy mondial","globalProxyDesc":"Configurez un proxy sortant global pour tous les appels d\'API. Les fournisseurs individuels, les combos et les cl\xe9s peuvent remplacer cela.","noGlobalProxy":"Aucun proxy global configur\xe9","globalLabel":"Mondial","configure":"Configurer","globalSystemPrompt":"Invite syst\xe8me globale","systemPromptDesc":"Inject\xe9 dans toutes les requ\xeates au niveau du proxy","saved":"Enregistr\xe9","systemPromptPlaceholder":"Entrez l\'invite du syst\xe8me pour injecter dans toutes les requ\xeates...","systemPromptHint":"Cette invite est ajout\xe9e au message syst\xe8me de chaque demande. \xc0 utiliser pour les instructions globales, les consignes de s\xe9curit\xe9 ou les r\xe8gles de formatage des r\xe9ponses.","chars":"{count} caract\xe8res","thinkingBudgetTitle":"Penser le budget","thinkingBudgetDesc":"Contr\xf4ler l\'utilisation des jetons de raisonnement IA pour toutes les requ\xeates","passthrough":"Passage","passthroughDesc":"Aucun changement — le client contr\xf4le le budget en pensant","auto":"Automatique","autoDesc":"Supprimez toute configuration de r\xe9flexion - laissez le fournisseur d\xe9cider","custom":"Personnalis\xe9","customDesc":"D\xe9finir un budget de jetons fixe pour toutes les demandes","adaptive":"Adaptatif","adaptiveDesc":"Adaptez le budget en fonction de la complexit\xe9 de la demande","effortNone":"Aucun (0 jeton)","effortLow":"Faible (1 000 jetons)","effortMedium":"Moyen (10 000 jetons)","effortHigh":"\xc9lev\xe9 (128 000 jetons)","tokenBudget":"Budget des jetons","tokens":"jetons","baseEffortLevel":"Niveau d\'effort de base","adaptiveHint":"Le mode adaptatif \xe9volue \xe0 partir de ce niveau de base en fonction du nombre de messages, de l\'utilisation des outils et de la longueur des invites.","requireLogin":"Exiger une connexion","requireLoginDesc":"Lorsqu\'il est activ\xe9, le tableau de bord n\xe9cessite un mot de passe. Lorsqu\'il est d\xe9sactiv\xe9, acc\xe9dez sans connexion.","currentPassword":"Mot de passe actuel","enterCurrentPassword":"Entrez le mot de passe actuel","newPassword":"Nouveau mot de passe","enterNewPassword":"Entrez le nouveau mot de passe","confirmPassword":"Confirmer le nouveau mot de passe","confirmPasswordPlaceholder":"Confirmer le nouveau mot de passe","passwordsNoMatch":"Les mots de passe ne correspondent pas","passwordUpdated":"Mot de passe mis \xe0 jour avec succ\xe8s","failedUpdatePassword":"\xc9chec de la mise \xe0 jour du mot de passe","errorOccurred":"Une erreur s\'est produite","updatePassword":"Mettre \xe0 jour le mot de passe","setPassword":"D\xe9finir le mot de passe","apiEndpointProtection":"Protection des points de terminaison API","requireAuthModels":"Exiger une cl\xe9 API pour /models","requireAuthModelsDesc":"Lorsqu\'il est activ\xe9, le point de terminaison /v1/models renvoie 404 pour les demandes non authentifi\xe9es. Emp\xeache la d\xe9couverte de mod\xe8les par des utilisateurs non autoris\xe9s.","blockedProviders":"Fournisseurs bloqu\xe9s","blockedProvidersDesc":"Masquez les fournisseurs sp\xe9cifiques de la r\xe9ponse /v1/models. Les fournisseurs bloqu\xe9s n\'appara\xeetront pas dans les listes de mod\xe8les.","providersBlocked":"{count} fournisseur(s) bloqu\xe9(s) sur /models","blockProviderTitle":"Bloquer {provider}","unblockProviderTitle":"D\xe9bloquer {provider}","routingStrategy":"Strat\xe9gie de routage","fillFirst":"Remplir d\'abord","fillFirstDesc":"Utiliser les comptes par ordre de priorit\xe9","roundRobin":"Tournoi \xe0 la ronde","roundRobinDesc":"Parcourez tous les comptes","p2c":"P2C","p2cDesc":"Choisissez-en 2 au hasard, utilisez le plus sain","random":"Al\xe9atoire","randomDesc":"Compte al\xe9atoire \xe0 chaque demande","leastUsed":"Le moins utilis\xe9","leastUsedDesc":"Choisissez le compte le moins r\xe9cemment utilis\xe9","costOpt":"Option de co\xfbt","costOptDesc":"Pr\xe9f\xe9rer le compte disponible le moins cher","stickyLimit":"Limite collante","stickyLimitDesc":"Appels par compte avant de changer","modelAliases":"Alias de mod\xe8le","modelAliasesTitle":"Alias de Mod\xe8les","modelAliasesDesc":"Mod\xe8les g\xe9n\xe9riques pour remapper les noms de mod\xe8les • Utilisez * et ?","addCustomAlias":"Ajouter un Alias Personnalis\xe9","deprecatedModelId":"ID du mod\xe8le obsol\xe8te","newModelId":"Nouvel ID de mod\xe8le","customAliases":"Alias Personnalis\xe9s","builtInAliases":"Alias Int\xe9gr\xe9s","backgroundDegradationTitle":"D\xe9gradation des T\xe2ches en Arri\xe8re-plan","backgroundDegradationDesc":"D\xe9tecte automatiquement les t\xe2ches en arri\xe8re-plan (titres, r\xe9sum\xe9s) et redirige vers des mod\xe8les moins chers","enableDegradation":"Activer la D\xe9gradation en Arri\xe8re-plan","enableDegradationHint":"Lorsqu\'activ\xe9, les t\xe2ches en arri\xe8re-plan comme la g\xe9n\xe9ration de titres et les r\xe9sum\xe9s sont redirig\xe9es automatiquement vers des mod\xe8les moins chers","tasksDetected":"T\xe2ches d\xe9tect\xe9es","degradationMap":"Carte de D\xe9gradation des Mod\xe8les","premiumModel":"Mod\xe8le premium","cheapModel":"Mod\xe8le \xe9conomique","detectionPatterns":"Mod\xe8les de D\xe9tection","newPattern":"ex: \\"g\xe9n\xe9rer un titre\\"","aliasPatternPlaceholder":"claude-sonnet-*","aliasTargetPlaceholder":"claude-sonnet-4-20250514","pattern":"Mod\xe8le","targetModel":"Mod\xe8le cible","add":"+ Ajouter","session":"S\xe9ance","sessionDetailsAria":"D\xe9tails de la s\xe9ance","status":"Statut","authenticated":"Authentifi\xe9","guest":"Invit\xe9","loginTime":"Heure de connexion","sessionAge":"\xc2ge de la session","browser":"Navigateur","clearLocalData":"Effacer les donn\xe9es locales","logout":"D\xe9connexion","clearLocalDataConfirm":"Effacer toutes les donn\xe9es locales\xa0? Cela r\xe9initialisera vos pr\xe9f\xe9rences.","unknown":"Inconnu","systemActor":"syst\xe8me","ipAccessControl":"Contr\xf4le d\'acc\xe8s IP","ipAccessControlDesc":"Bloquer ou autoriser des adresses IP sp\xe9cifiques","ipModeDisabled":"D\xe9sactiv\xe9","ipModeBlacklist":"Liste noire","ipModeWhitelist":"Liste blanche","ipModeWhitelistPriority":"Priorit\xe9 WL","addIpAddress":"Ajouter une adresse IP","ipAddressPlaceholder":"192.168.1.0/24 ou 10.0.*.*","block":"+ Bloquer","allow":"+ Autoriser","blocked":"Bloqu\xe9 ({count})","allowed":"Autoris\xe9 ({count})","temporaryBans":"Interdictions temporaires ({count})","minLeft":"{min}m restant","auditLog":"Journal d\'audit","searchAuditLogs":"Rechercher dans les journaux d\'audit...","failedLoadAuditLog":"\xc9chec du chargement du journal d\'audit","noAuditEvents":"Aucun \xe9v\xe9nement d\'audit trouv\xe9","action":"Action","actor":"Acteur","details":"D\xe9tails","time":"Temps","fallbackChainsTitle":"Cha\xeenes de secours","fallbackChainsDesc":"D\xe9finir l\'ordre de secours du fournisseur par mod\xe8le","addChain":"+ Ajouter une cha\xeene","modelName":"Nom du mod\xe8le","modelNamePlaceholder":"claude-sonnet-4-20250514","providersCommaSeparated":"Fournisseurs (s\xe9par\xe9s par des virgules, par ordre de priorit\xe9)","providersCommaSeparatedPlaceholder":"anthropique, openai, g\xe9meaux","createChain":"Cr\xe9er une cha\xeene","noFallbackChains":"Aucune cha\xeene de repli","noFallbackChainsDesc":"Cr\xe9ez une cha\xeene pour d\xe9finir l\'ordre de secours du fournisseur pour un mod\xe8le.","loadingFallbackChains":"Chargement des cha\xeenes de secours...","deleteChainConfirm":"Supprimer la cha\xeene de secours pour \xab {model} \xbb\xa0?","chainCreated":"Cha\xeene cr\xe9\xe9e pour {model}","chainDeleted":"Cha\xeene supprim\xe9e pour {model}","failedCreateChain":"\xc9chec de la cr\xe9ation de la cha\xeene","failedDeleteChain":"\xc9chec de la suppression de la cha\xeene","deleteChain":"Supprimer la cha\xeene","fillModelAndProviders":"Veuillez remplir le nom du mod\xe8le et les fournisseurs","addAtLeastOneProvider":"Ajouter au moins un fournisseur","comboDefaultsTitle":"Valeurs par d\xe9faut des combos","globalComboConfig":"Configuration combin\xe9e globale","defaultStrategy":"Strat\xe9gie par d\xe9faut","defaultStrategyDesc":"Appliqu\xe9 aux nouveaux combos sans strat\xe9gie explicite","comboStrategyAria":"Strat\xe9gie combin\xe9e","priority":"Priorit\xe9","weighted":"Pond\xe9r\xe9","maxRetriesLabel":"Nombre maximal de tentatives","retryDelayLabel":"D\xe9lai de nouvelle tentative (ms)","timeoutLabel":"D\xe9lai d\'expiration (ms)","healthCheck":"Bilan de sant\xe9","healthCheckDesc":"Pr\xe9-v\xe9rifier la disponibilit\xe9 du fournisseur","trackMetrics":"Suivre les m\xe9triques","trackMetricsDesc":"Enregistrer les m\xe9triques de requ\xeate par combo","providerOverrides":"Remplacements du fournisseur","providerOverridesDesc":"Remplacez le d\xe9lai d\'attente et les tentatives par fournisseur. Les param\xe8tres du fournisseur remplacent les valeurs par d\xe9faut globales.","providerMaxRetriesAria":"{provider} tentatives maximales","providerTimeoutAria":"{provider} d\xe9lai d\'expiration ms","removeProviderOverrideAria":"Supprimer le remplacement de {provider}","newProviderNamePlaceholder":"par ex. google, ouvre...","newProviderNameAria":"Nom du nouveau fournisseur","retries":"nouvelles tentatives","ms":"Mme","saveComboDefaults":"Enregistrer les valeurs par d\xe9faut du combo","maxNestingDepth":"Profondeur maximale d\'embo\xeetement","concurrencyPerModel":"Concurrence / Mod\xe8le","queueTimeout":"D\xe9lai d\'expiration de la file d\'attente (ms)","providerProfiles":"Profils de fournisseurs","providerProfilesDesc":"Param\xe8tres de r\xe9silience s\xe9par\xe9s pour les fournisseurs OAuth (bas\xe9s sur la session) et API Key (mesur\xe9s). Les fournisseurs OAuth ont des seuils plus stricts en raison de limites de d\xe9bit plus basses.","oauthProviders":"Fournisseurs OAuth","apiKeyProviders":"Fournisseurs de cl\xe9s API","transientCooldown":"Temps de recharge transitoire","rateLimitCooldown":"Temps de recharge de la limite de d\xe9bit","maxBackoffLevel":"Niveau d\'attente maximum","cbThreshold":"Seuil CB","cbResetTime":"Temps de r\xe9initialisation du CB","rateLimiting":"Limitation du d\xe9bit","rateLimitingDesc":"Les fournisseurs de cl\xe9s API sont automatiquement limit\xe9s en d\xe9bit avec des valeurs par d\xe9faut s\xfbres. Les limites sont apprises \xe0 partir des en-t\xeates de r\xe9ponse et s’adaptent au fil du temps.","defaultSafetyNet":"Filet de s\xe9curit\xe9 par d\xe9faut","rpm":"RPM","minGap":"\xc9cart minimum","maxConcurrent":"Maximum simultan\xe9","activeLimiters":"Limiteurs actifs","noActiveLimiters":"Pas encore de limiteurs de d\xe9bit actifs.","reservoir":"R\xe9servoir","running":"Courir","queued":"En file d\'attente","circuitBreakers":"Disjoncteurs","breakerStateClosed":"Ferm\xe9","breakerStateOpen":"Ouvert","breakerStateHalfOpen":"Mi-ouvert","tripped":"{count} d\xe9clench\xe9","healthy":"{count} en bonne sant\xe9","resetAll":"Tout r\xe9initialiser","noCircuitBreakers":"Aucun disjoncteur n\'est encore actif. Ils sont cr\xe9\xe9s automatiquement lorsque les demandes transitent par le pipeline combo.","failures":"{count} \xe9chec(s)","policiesLocked":"Politiques et identifiants verrouill\xe9s","allOperational":"Tous les syst\xe8mes op\xe9rationnels – pas de verrouillage ni de disjoncteur d\xe9clench\xe9","loadingPolicies":"Chargement des politiques...","lockedIdentifiers":"Identifiants verrouill\xe9s","unlockedIdentifier":"D\xe9bloqu\xe9\xa0: {identifier}","sinceDate":"depuis {date}","forceUnlock":"Forcer le d\xe9verrouillage","unlocking":"D\xe9verrouillage...","failedUnlock":"\xc9chec du d\xe9verrouillage","failedLoadWithStatus":"\xc9chec du chargement\xa0: {status}","failedLoadResilience":"\xc9chec du chargement de l\'\xe9tat de r\xe9silience","saveFailed":"\xc9chec de l\'enregistrement","resetFailed":"\xc9chec de la r\xe9initialisation","loadingResilience":"Chargement de l\'\xe9tat de r\xe9silience...","retry":"R\xe9essayer","systemStorage":"Syst\xe8me et stockage","allDataLocal":"Toutes les donn\xe9es stock\xe9es localement sur votre machine","databasePath":"Chemin de la base de donn\xe9es","exportDatabase":"Exporter la base de donn\xe9es","exportAll":"Exporter tout (.tar.gz)","importDatabase":"Importer la base de donn\xe9es","confirmDbImport":"Confirmer l\'importation de la base de donn\xe9es","confirmDbImportDesc":"Cela remplacera toutes les donn\xe9es actuelles par le contenu de {file}. Une sauvegarde sera cr\xe9\xe9e automatiquement avant l\'importation.","yesImport":"Oui, importer","lastBackup":"Derni\xe8re sauvegarde","noBackupYet":"Pas encore de sauvegarde","backupNow":"Sauvegarder maintenant","backupRestore":"Sauvegarde et restauration","viewBackups":"Afficher les sauvegardes","hide":"Masquer","backupRetentionDesc":"Les instantan\xe9s de la base de donn\xe9es sont cr\xe9\xe9s automatiquement avant la restauration et toutes les 15 minutes lorsque les donn\xe9es changent. R\xe9tention : 24 heures sur 24 + 30 sauvegardes quotidiennes avec rotation intelligente.","loadingBackups":"Chargement des sauvegardes...","noBackupsYet":"Aucune sauvegarde disponible pour le moment. Les sauvegardes seront cr\xe9\xe9es automatiquement lorsque les donn\xe9es changent.","backupsAvailable":"{count} sauvegarde(s) disponible(s)","refresh":"Actualiser","confirm":"Confirmer ?","yes":"Oui","no":"Non","restore":"Restaurer","invalidFileType":"Type de fichier invalide. Seuls les fichiers .sqlite sont accept\xe9s.","exportFailed":"\xc9chec de l\'exportation","exportFailedWithError":"\xc9chec de l\'exportation\xa0: {error}","fullExportFailedWithError":"\xc9chec de l\'exportation compl\xe8te\xa0: {error}","backupCreated":"Sauvegarde cr\xe9\xe9e\xa0: {file}","restoreSuccess":"Restaur\xe9 ! Connexions {connections}, nœuds {nodes}, combos {combos}, cl\xe9s API {apiKeys}.","importSuccess":"Base de donn\xe9es import\xe9e\xa0! Connexions {connections}, nœuds {nodes}, combos {combos}, cl\xe9s API {apiKeys}.","justNow":"juste maintenant","minutesAgo":"il y a {count}m","hoursAgo":"il y a {count}h","daysAgo":"Il y a {count}j","backupReasonManual":"manuel","backupReasonPreRestore":"pr\xe9-restauration","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"Aucun changement depuis la derni\xe8re sauvegarde","backupFailed":"La sauvegarde a \xe9chou\xe9","restoreFailed":"La restauration a \xe9chou\xe9","importFailed":"\xc9chec de l\'importation","errorDuringRestore":"Une erreur s\'est produite lors de la restauration","errorDuringImport":"Une erreur s\'est produite lors de l\'importation","modelPricing":"Prix du mod\xe8le","modelPricingDesc":"Configurer les tarifs par mod\xe8le • Tous les tarifs en jetons\xa0$/1\xa0M","providers":"Fournisseurs","registry":"Registre","priced":"Prix","searchProvidersModels":"Rechercher des fournisseurs ou des mod\xe8les...","showAll":"Afficher tout","noProvidersMatch":"Aucun fournisseur ne correspond \xe0 votre recherche.","howPricingWorks":"Comment fonctionne la tarification","cacheWrite":"\xc9criture du cache","unsaved":"non enregistr\xe9","resetDefaults":"R\xe9initialiser les param\xe8tres par d\xe9faut","saveProvider":"Enregistrer le fournisseur","saving":"Sauvegarde...","model":"Mod\xe8le","models":"mod\xe8les","moreProviders":"{count} autres fournisseurs","withPricing":"avec tarification configur\xe9e","policiesCircuitBreakers":"Politiques et disjoncteurs","activeIssuesDetected":"Probl\xe8mes actifs d\xe9tect\xe9s","off":"D\xe9sactiv\xe9","resetPricingConfirm":"R\xe9initialiser tous les prix de {provider} aux valeurs par d\xe9faut\xa0?","pricingDescInput":"Entr\xe9e\xa0: jetons envoy\xe9s au mod\xe8le","pricingDescOutput":"Sortie\xa0: jetons g\xe9n\xe9r\xe9s","pricingDescCached":"En cache\xa0: entr\xe9e r\xe9utilis\xe9e (~ 50\xa0% du taux d\'entr\xe9e)","pricingDescReasoning":"Raisonnement\xa0:\xa0penser aux jetons (revient \xe0 la sortie)","pricingDescCacheWrite":"Cache Write\xa0: cr\xe9ation d\'entr\xe9es de cache (revient \xe0 Input)","pricingDescFormula":"Co\xfbt = (entr\xe9e \xd7 input_rate) + (output \xd7 output_rate) + (mis en cache \xd7 cached_rate) par million de jetons.","pricingSettingsTitle":"Param\xe8tres de tarification","totalModels":"Total des mod\xe8les","active":"Actif","costCalculation":"Calcul du co\xfbt","costCalculationDesc":"Les co\xfbts sont calcul\xe9s en fonction de l\'utilisation des jetons et des tarifs configur\xe9s pour chaque mod\xe8le.","pricingFormat":"Format de tarification","pricingFormatDesc":"Tous les tarifs sont en jetons $/1M (dollars par million de jetons).","tokenTypes":"Types de jetons","inputTokenDesc":"Jetons d\'invite standard","outputTokenDesc":"Jetons d\'ach\xe8vement/r\xe9ponse","cachedTokenDesc":"Jetons d\'entr\xe9e mis en cache (g\xe9n\xe9ralement 50\xa0% du taux d\'entr\xe9e)","reasoningTokenDesc":"Jetons de raisonnement/r\xe9flexion sp\xe9ciaux (repli au taux de sortie)","cacheCreationTokenDesc":"Jetons utilis\xe9s pour cr\xe9er des entr\xe9es de cache (repli sur le d\xe9bit d\'entr\xe9e)","customPricingNote":"Vous pouvez remplacer le prix par d\xe9faut pour des mod\xe8les sp\xe9cifiques. Les remplacements personnalis\xe9s ont la priorit\xe9 sur les prix d\xe9tect\xe9s automatiquement.","editPricing":"Modifier le prix","viewFullDetails":"Afficher tous les d\xe9tails","themeCoral":"Corail"},"translator":{"title":"Traducteur","metaTitle":"Aire de jeux pour traducteurs | OmniRoute","metaDescription":"D\xe9boguer, tester et visualiser les traductions au format API entre les fournisseurs","playgroundTitle":"Terrain de jeu des traducteurs","playground":"Aire de jeux","realtime":"Activit\xe9 de traduction en temps r\xe9el","chatTester":"Testeur de chat","testBench":"Banc d\'essai","liveMonitor":"Moniteur en direct","modeDescriptionPlayground":"Collez n\'importe quel corps de requ\xeate d\'API et voyez comment OmniRoute le traduit entre les formats de fournisseur (OpenAI ↔ Claude ↔ Gemini ↔ API Responses)","modeDescriptionChatTester":"Envoyez de vraies demandes de chat via OmniRoute et inspectez l\'aller-retour complet\xa0: entr\xe9e, demande traduite, r\xe9ponse du fournisseur et sortie traduite.","modeDescriptionTestBench":"Ex\xe9cutez des sc\xe9narios pr\xe9d\xe9finis et comparez la compatibilit\xe9 entre les fournisseurs et les mod\xe8les.","modeDescriptionLiveMonitor":"Regardez les \xe9v\xe9nements de traduction en temps r\xe9el \xe0 mesure que les demandes transitent par OmniRoute.","modeDescriptionFallback":"D\xe9boguez, testez et visualisez comment OmniRoute traduit les requ\xeates API entre les fournisseurs.","recentTranslations":"Traductions r\xe9centes","noTranslations":"Pas encore de traductions","source":"Source","target":"Cible","time":"Temps","model":"Mod\xe8le","status":"Statut","latency":"Latence","totalTranslations":"Traductions totales","successful":"R\xe9ussi","errors":"Erreurs","avgLatency":"Latence moyenne","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"En direct\xa0– Actualisation automatique","paused":"En pause","eventsAppearHint":"Les \xe9v\xe9nements de traduction apparaissent ici \xe0 mesure que les demandes transitent par OmniRoute. Utilisez l\'une de ces m\xe9thodes pour g\xe9n\xe9rer des \xe9v\xe9nements\xa0:","chatTesterTab":"Onglet Testeur de chat","testBenchTab":"Onglet Banc de Test","externalApiCalls":"Appels d\'API externes","ideCliIntegrations":"Int\xe9grations IDE/CLI","inMemoryNote":"Remarque\xa0: Les \xe9v\xe9nements sont stock\xe9s en m\xe9moire et r\xe9initialis\xe9s au red\xe9marrage du serveur.","ok":"D\'accord","errorShort":"ERREUR","formatConverter":"Convertisseur de formats","formatConverterDescription":"Collez ou saisissez un corps de requ\xeate JSON. Le traducteur d\xe9tectera automatiquement le format source et le convertira au format cible. Utilisez-le pour d\xe9boguer la fa\xe7on dont OmniRoute traduit les requ\xeates entre les formats (OpenAI ↔ Claude ↔ Gemini ↔ API Responses).","input":"Entr\xe9e","output":"Sortie","auto":"Automatique","swapFormats":"Changer de format","translateAction":"Traduire","clear":"Effacer","inputPlaceholder":"Collez le corps d\'une demande ici ou s\xe9lectionnez un mod\xe8le ci-dessous...","exampleTemplates":"Exemples de mod\xe8les","exampleTemplatesHint":"— Cliquez pour charger","templateLoadHint":"Le mod\xe8le charge la requ\xeate au format {format}. Modifiez le format source pour charger dans un format diff\xe9rent.","compatibilityTester":"Testeur de compatibilit\xe9","compatibilityReport":"Rapport de compatibilit\xe9","testBenchDescription":"Ex\xe9cutez des sc\xe9narios pr\xe9d\xe9finis (Simple Chat, Tool Calling, etc.) pour v\xe9rifier la traduction et la compatibilit\xe9 des fournisseurs. S\xe9lectionnez un format source et un fournisseur cible, puis ex\xe9cutez tous les tests pour voir un pourcentage de compatibilit\xe9. Utilisez-le pour d\xe9couvrir les fonctionnalit\xe9s qui fonctionnent entre les fournisseurs.","targetProvider":"Fournisseur cible","runAllTests":"Ex\xe9cuter tous les tests","runTest":"Ex\xe9cuter le test","reRun":"R\xe9ex\xe9cuter","running":"Courir...","passed":"r\xe9ussi","failed":"\xe9chou\xe9","passedIconLabel":"✅ R\xe9ussi","chunks":"morceaux","scenarioSimpleChat":"Discussion simple","scenarioToolCalling":"Appel d\'outil","scenarioMultiTurn":"Multi-tours","scenarioThinking":"Penser","scenarioSystemPrompt":"Invite syst\xe8me","scenarioStreaming":"Diffusion en continu","templateNames":{"simple-chat":"Discussion simple","tool-calling":"Appel d\'outil","multi-turn":"Multi-tours","thinking":"Penser","system-prompt":"Invite syst\xe8me","streaming":"Diffusion en continu"},"templateDescriptions":{"simple-chat":"Message texte de base","tool-calling":"Invocation de fonction/outil","multi-turn":"Conversation avec l\'histoire","thinking":"Pens\xe9e/raisonnement \xe9tendu","system-prompt":"Instructions syst\xe8me complexes","streaming":"Demande de streaming SSE"},"templatePayloads":{"simpleChat":{"system":"Vous \xeates un assistant utile.","userGreeting":"Bonjour ! Comment allez-vous aujourd\'hui?"},"toolCalling":{"userWeather":"Quel temps fait-il \xe0 S\xe3o Paulo ?","toolDescription":"Obtenir la m\xe9t\xe9o actuelle pour un emplacement","cityNameDescription":"Nom de la ville"},"multiTurn":{"system":"Vous \xeates assistant de codage.","userInitial":"\xc9crivez une fonction pour trier un tableau en Python.","assistantExample":"Voici une fonction de tri simple\xa0:\\n\\n```python\\ndef sort_array(arr):\\n retour tri\xe9 (arr)\\n```","userFollowUp":"Maintenant, faites-le trier par ordre d\xe9croissant."},"thinking":{"question":"Quelle est la somme des 100 premiers nombres premiers ?"},"systemPrompt":{"systemInstruction":"Vous \xeates un ing\xe9nieur logiciel senior sp\xe9cialis\xe9 dans les syst\xe8mes distribu\xe9s. R\xe9pondez aux questions de mani\xe8re concise en utilisant les meilleures pratiques de l’industrie. Fournissez toujours des exemples de code lorsque cela est pertinent. Formatez vos r\xe9ponses en utilisant le markdown.","question":"Comment mettre en œuvre un mod\xe8le de disjoncteur\xa0?"},"streaming":{"prompt":"Racontez-moi une courte histoire sur un robot qui apprend \xe0 peindre."}},"openaiCompatibleLabel":"Compatible avec OpenAI","anthropicCompatibleLabel":"Compatible anthropique","noTemplateForFormat":"Aucun mod\xe8le pour ce format","translationFailed":"\xc9chec de la traduction\xa0: {error}","pipelineDebugger":"D\xe9bogueur de pipeline","translationPipeline":"Pipeline de traduction","pipelineVisualization":"Visualisation des pipelines","pipelineVisualizationHint":"Envoyez un message pour voir comment votre demande passe par la d\xe9tection → traduction → appel du fournisseur.","chatTesterDescription":"Envoyez des messages dans un format client sp\xe9cifique et inspectez chaque \xe9tape du pipeline de traduction.","chatTesterFlow":"Demande client → D\xe9tection de format → OpenAI Interm\xe9diaire → Format du fournisseur → R\xe9ponse","clickStepToInspect":"Cliquez sur n’importe quelle \xe9tape pour inspecter les donn\xe9es \xe0 ce stade.","clientFormat":"Format client","provider":"Fournisseur","modelPlaceholder":"S\xe9lectionnez ou saisissez un nom de mod\xe8le...","sendMessageToSeePipeline":"Envoyez un message pour voir le pipeline de traduction","chatMessageHintPrefix":"Votre message sera format\xe9 comme un","chatMessageHintSuffix":"demande, traduite via le pipeline et envoy\xe9e au fournisseur s\xe9lectionn\xe9.","youWithFormat":"Vous ({format})","assistant":"Assistante","typeMessage":"Tapez un message...","send":"Envoyer","clientRequest":"Demande du client","clientRequestDescription":"Le corps de la requ\xeate tel que votre client l\'enverrait","formatDetected":"Format d\xe9tect\xe9","formatDetectedDescription":"OmniRoute d\xe9tecte automatiquement le format de l\'API \xe0 partir de la structure de la demande","openaiIntermediate":"Interm\xe9diaire OpenAI","openaiIntermediateDescription":"Tous les formats sont d\'abord normalis\xe9s au format OpenAI (le pont universel)","providerFormat":"Format du fournisseur","providerFormatDescription":"Le format OpenAI est traduit au format natif du fournisseur","providerResponse":"R\xe9ponse du fournisseur","providerResponseRawDescription":"La r\xe9ponse brute de l\'API du fournisseur","providerResponseSseDescription":"Le flux SSE brut de l\'API du fournisseur","unexpectedError":"Une erreur inattendue s\'est produite","error":"Erreur","errorMessage":"Erreur\xa0: {message}","requestFailed":"La demande a \xe9chou\xe9","noTextExtracted":"(Aucun texte extrait)","liveMonitorDescriptionPrefix":"Affiche les \xe9v\xe9nements de traduction lorsque les appels d\'API transitent par OmniRoute. Les \xe9v\xe9nements proviennent du tampon en m\xe9moire (r\xe9initialisation au red\xe9marrage). Utiliser","liveMonitorDescriptionSuffix":", ou des appels d\'API externes pour g\xe9n\xe9rer des \xe9v\xe9nements."},"usage":{"title":"Utilisation","loggerTab":"Enregistreur","proxyTab":"Procuration","budgetManagement":"Gestion budg\xe9taire","budgetSaved":"Limites budg\xe9taires enregistr\xe9es","budgetSaveFailed":"\xc9chec de la sauvegarde du budget","loadingBudgetData":"Chargement des donn\xe9es budg\xe9taires...","noApiKeysTitle":"Aucune cl\xe9 API","noApiKeysDescription":"Ajoutez d\'abord des cl\xe9s API pour d\xe9finir des limites budg\xe9taires.","apiKey":"Cl\xe9 API","todaysSpend":"D\xe9penses du jour","thisMonth":"Ce mois-ci","setLimits":"Fixer des limites","dailyLimitUsd":"Limite quotidienne (USD)","monthlyLimitUsd":"Limite mensuelle (USD)","warningThresholdPercent":"Seuil d\'avertissement (%)","dailyLimitPlaceholder":"par ex. 5h00","monthlyLimitPlaceholder":"par ex. 50.00","warningThresholdPlaceholder":"80","saveLimits":"Enregistrer les limites","budgetOk":"Budget OK — {remaining} restant","budgetExceeded":"Budget d\xe9pass\xe9\xa0: les demandes peuvent \xeatre bloqu\xe9es","totalRequests":"Total des demandes","noDataYet":"Aucune donn\xe9e pour l\'instant","latency":"Latence","latencyP50":"p50","latencyP95":"p95","latencyP99":"p99","promptCache":"Cache d\'invite","systemHealth":"Sant\xe9 du syst\xe8me","entries":"Entr\xe9es","activeCount":"{count} actif","openCircuitBreakersDetected":"Disjoncteurs ouverts d\xe9tect\xe9s","hitRate":"Taux de r\xe9ussite","hitsMisses":"Coups r\xe9ussis / Manqu\xe9s","circuitBreakers":"Disjoncteurs","lockedIPs":"IP verrouill\xe9es","lockoutsAutoRefreshHint":"Verrouillage de la limite de d\xe9bit par mod\xe8le • Actualisation automatique toutes les 10\xa0s","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} restant","howItWorks":"Comment \xe7a marche","howItWorksSubtitle":"D\xe9couvrez comment les \xe9valuations valident vos r\xe9ponses LLM","define":"D\xe9finir","defineStepDescription":"Cr\xe9ez des sc\xe9narios de test avec des invites de saisie et des crit\xe8res de sortie attendus \xe0 l\'aide de strat\xe9gies telles que le contenu, l\'expression r\xe9guli\xe8re ou la correspondance exacte.","run":"Courir","runStepDescription":"Ex\xe9cutez des cas de test sur vos points de terminaison LLM via OmniRoute. Chaque cas est envoy\xe9 comme une v\xe9ritable requ\xeate API.","evaluate":"\xc9valuer","evaluateStepDescription":"Les r\xe9ponses sont compar\xe9es aux crit\xe8res attendus. Voir r\xe9ussite/\xe9chec pour chaque cas avec des mesures de latence et des commentaires d\xe9taill\xe9s.","evalSuites":"Suites d\'\xe9valuation","evalSuitesHint":"Cliquez sur une suite pour afficher les cas de test, puis ex\xe9cutez-la pour \xe9valuer vos points de terminaison LLM.","evalsLoading":"Chargement des suites d\'\xe9valuation...","noEvalSuitesFound":"Aucune suite d\'\xe9valuation trouv\xe9e","noEvalSuitesDescription":"Les suites d\'\xe9valuation peuvent \xeatre d\xe9finies via l\'API ou dans le code. Ils testent les sorties du mod\xe8le par rapport aux r\xe9sultats attendus \xe0 l\'aide de strat\xe9gies telles que le contenu, l\'expression r\xe9guli\xe8re, la correspondance exacte et les fonctions personnalis\xe9es.","columnCase":"Cas","columnStatus":"Statut","columnLatency":"Latence","columnDetails":"D\xe9tails","columnModel":"Mod\xe8le","columnStrategy":"Strat\xe9gie","columnExpected":"Attendu","statsSuites":"Suites","statsTestCases":"Cas de test","statsModels":"Mod\xe8les","statsCoverage":"Couverture","statsStrategiesCount":"Strat\xe9gies {count}","evaluationStrategies":"Strat\xe9gies d\'\xe9valuation","modelsUnderTest":"Mod\xe8les en test","searchSuitesPlaceholder":"Rechercher des suites...","passSuffix":"passer","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"Ex\xe9cuter l\'\xe9valuation","runningProgress":"Ex\xe9cution de {current}/{total}...","passRate":"taux de r\xe9ussite","summaryBreakdown":"{passed} r\xe9ussi \xb7 {failed} \xe9chou\xe9 \xb7 {total} total","passedIconLabel":"✅ R\xe9ussi","failedIconLabel":"❌ \xc9chec","detailsContains":"Contient\xa0: \\"{term}\\"","detailsRegex":"Expression r\xe9guli\xe8re\xa0: {pattern}","detailsExpected":"Attendu\xa0: \\"{expected}\\"","noResultsYet":"Aucun r\xe9sultat pour l\'instant","testCasesCount":"Cas de test ({count})","noTestCasesDefined":"Aucun cas de test d\xe9fini","runEvalHint":"Cliquez sur \xab\xa0Ex\xe9cuter l\'\xe9valuation\xa0\xbb pour ex\xe9cuter tous les cas sur votre point de terminaison LLM. Chaque test envoie une requ\xeate r\xe9elle via OmniRoute.","notifyNoTestCases":"Aucun cas de test d\xe9fini pour cette suite","notifyAllCasesPassed":"Tous les {total} cas ont \xe9t\xe9 r\xe9ussis ✅","notifySomeCasesFailed":"{passed}/{total} r\xe9ussi, {failed} \xe9chou\xe9","notifyEvalRunFailed":"\xc9chec de l\'ex\xe9cution de l\'\xe9valuation","notifyEvalTitle":"\xc9valuation\xa0: {name}","modelEvals":"\xc9valuations de mod\xe8les","evalsHeroDescription":"Testez et validez vos points de terminaison LLM en ex\xe9cutant des suites d\'\xe9valuation pr\xe9d\xe9finies. Chaque suite contient des cas de test qui envoient des invites r\xe9elles via OmniRoute et comparent les r\xe9ponses aux crit\xe8res attendus, vous aidant ainsi \xe0 d\xe9tecter les r\xe9gressions, \xe0 comparer les mod\xe8les et \xe0 garantir la qualit\xe9 des r\xe9ponses entre les fournisseurs.","qualityValidation":"Validation de la qualit\xe9","modelComparison":"Comparaison des mod\xe8les","regressionDetection":"D\xe9tection de r\xe9gression","latencyBenchmarks":"Benchmarks de latence","modelLockouts":"Mod\xe8les de verrouillage","noLockouts":"Aucun mod\xe8le actuellement verrouill\xe9","activeSessions":"S\xe9ances actives","noSessions":"Aucune session active","sessionsHint":"Les sessions apparaissent au fur et \xe0 mesure que les demandes transitent par le proxy","sessionsTrackedHint":"Suivi via une demande d\'empreinte digitale • Actualisation automatique 5\xa0s","session":"S\xe9ance","age":"\xc2ge","requests":"Demandes","connection":"Connexion","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}s","durationMinutesShort":"{value}m","durationHoursShort":"{value}h","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"Limites du fournisseur","noProviders":"Aucun fournisseur connect\xe9","connectProvidersForQuota":"Connectez-vous aux fournisseurs avec OAuth pour suivre les limites de quota et l\'utilisation de vos API.","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"(filtr\xe9 \xe0 partir de {count})","autoRefresh":"Actualisation automatique","refreshAll":"Actualiser tout","loadingQuotas":"Chargement...","account":"Compte","modelQuotas":"Quotas de mod\xe8les","lastUsed":"Derni\xe8re utilisation","actions":"Actions","refreshQuota":"Actualiser le quota","today":"Aujourd\'hui","tomorrow":"Demain","dayTimeFormat":"{day}, {time}","inDuration":"dans {duration}","notApplicable":"N/D","rawPlanWithValue":"Plan brut\xa0: {plan}","noPlanFromProvider":"Aucun plan du fournisseur","noQuotaData":"Aucune donn\xe9e de quota","noQuotaDataAvailable":"Aucune donn\xe9e de quota disponible","noAccountsForTierFilter":"Aucun compte trouv\xe9 pour le filtre de niveau","tierAll":"Tout","tierEnterprise":"Entreprise","tierTeam":"\xc9quipe","tierBusiness":"Affaires","tierUltra":"Ultra","tierPro":"Pro","tierPlus":"Plus","tierFree":"Gratuit","tierUnknown":"Inconnu"},"modals":{"waitingAuth":"En attente d\'autorisation","verificationUrl":"URL de v\xe9rification","yourCode":"Votre code","remoteAccess":"Acc\xe8s \xe0 distance\xa0:","connectedSuccess":"Connect\xe9 avec succ\xe8s\xa0!","connectionFailed":"\xc9chec de la connexion","chooseAuthMethod":"Choisissez votre m\xe9thode d\'authentification\xa0:","awsBuilderId":"ID du constructeur AWS","awsIamIdentity":"Centre d\'identit\xe9 AWS IAM","googleAccount":"Compte Google","githubAccount":"Compte GitHub","importToken":"Jeton d\'importation","pasteToken":"Collez le jeton d\'actualisation de Kiro IDE.","awsRegion":"R\xe9gion AWS","autoDetecting":"Jetons \xe0 d\xe9tection automatique...","readingFromCache":"Lecture \xe0 partir du cache AWS SSO","readingFromCursor":"Lecture \xe0 partir de la base de donn\xe9es Cursor IDE","initializing":"Initialisation...","pricingConfig":"Configuration des prix","loadingPricing":"Chargement des donn\xe9es de tarification...","pricingRatesFormat":"Format des tarifs","noPricingData":"Aucune donn\xe9e de prix disponible","noModelsFound":"Aucun mod\xe8le trouv\xe9"},"loggers":{"allProviders":"Tous les fournisseurs","allModels":"Tous les mod\xe8les","allAccounts":"Tous les comptes","allApiKeys":"Toutes les cl\xe9s API","allTypes":"Tous types","allLevels":"Tous les niveaux","modelAZ":"Mod\xe8le A-Z","modelZA":"Mod\xe8le ZA","loadingLogs":"Chargement des journaux...","loadingProxyLogs":"Chargement des journaux proxy...","noLogEntries":"Aucune entr\xe9e de journal trouv\xe9e","noPayloadData":"Aucune donn\xe9e utile disponible pour cette entr\xe9e de journal.","proxyEvent":"\xc9v\xe9nement proxy","proxy":"Procuration","level":"Niveau","directNative":"Direct (natif)","combo":"Combo","inputTokens":"Moi :","outputTokens":"O\xa0:"},"stats":{"usageOverview":"Aper\xe7u de l\'utilisation","outputTokens":"Jetons de sortie","totalCost":"Co\xfbt total","usageByModel":"Utilisation par mod\xe8le","usageByAccount":"Utilisation par compte","failedToLoad":"\xc9chec du chargement des statistiques d\'utilisation.","tokenHealth":"Sant\xe9 du jeton","totalOAuth":"OAuth total","healthy":"Sain","warning":"Avertissement","errored":"Erreur","lastCheck":"Derni\xe8re v\xe9rification","noData":"Aucune donn\xe9e","share":"Partager","unableToLoad":"Impossible de charger les m\xe9triques du syst\xe8me","product":"Produit","resources":"Ressources","company":"Entreprise"},"auth":{"welcome":"Bienvenue","signIn":"Connectez-vous","enterPassword":"Entrez votre mot de passe pour continuer","password":"Mot de passe","unifiedProxy":"Proxy API IA unifi\xe9","unifiedAiApiProxy":"Proxy API IA unifi\xe9","unifiedAiApiProxyDesc":"Acheminez les requ\xeates vers plusieurs fournisseurs d’IA via un seul point de terminaison. \xc9quilibrage de charge, basculement et suivi de l\'utilisation int\xe9gr\xe9s.","passwordNotEnabled":"La protection par mot de passe n\'est pas activ\xe9e","loading":"Chargement...","invalidPassword":"Mot de passe invalide","errorOccurredRetry":"Une erreur s\'est produite. Veuillez r\xe9essayer.","configureInstance":"Configureons votre instance OmniRoute","runOnboardingWizard":"Ex\xe9cutez l\'assistant d\'onboarding pour configurer votre mot de passe et connecter votre premier fournisseur d\'IA.","startOnboarding":"Commencer l\'int\xe9gration","secureYourInstance":"S\xe9curisez votre instance","setPasswordDescription":"D\xe9finissez un mot de passe pour prot\xe9ger votre tableau de bord et s\xe9curiser vos points de terminaison d\'API contre tout acc\xe8s non autoris\xe9.","configurePassword":"Configurer le mot de passe","continue":"Continuer","windowWillClose":"Cette fen\xeatre se fermera automatiquement...","closeTabNow":"Vous pouvez fermer cet onglet maintenant.","copyUrlManual":"Copiez l\'URL depuis la barre d\'adresse et collez-la dans l\'application.","accessDeniedDescription":"Vous n\'\xeates pas autoris\xe9 \xe0 acc\xe9der \xe0 cette ressource. V\xe9rifiez votre cl\xe9 API ou contactez l\'administrateur.","goToDashboard":"Aller au tableau de bord","featureMultiProviderTitle":"Multi-fournisseur","featureMultiProviderDesc":"OpenAI, Anthropic, Google et plus","featureLoadBalancingTitle":"\xc9quilibrage de charge","featureLoadBalancingDesc":"Distribuez intelligemment les demandes","featureUsageTrackingTitle":"Suivi de l\'utilisation","featureUsageTrackingDesc":"Surveiller les co\xfbts et les jetons","resetPassword":"R\xe9initialiser le mot de passe","resetDescription":"Choisissez une m\xe9thode pour r\xe9cup\xe9rer l\'acc\xe8s \xe0 votre tableau de bord","stopServer":"Arr\xeatez le serveur OmniRoute","processing":"Traitement...","pleaseWait":"Veuillez patienter pendant que nous finalisons l\'autorisation.","authSuccess":"Autorisation r\xe9ussie\xa0!","copyUrl":"Copiez cette URL","accessDenied":"Acc\xe8s refus\xe9","methodCliTitle":"M\xe9thode 1\xa0:\xa0r\xe9initialisation de la CLI","methodCliDescription":"Ex\xe9cutez la commande suivante sur le serveur sur lequel OmniRoute est ex\xe9cut\xe9\xa0:","methodCliHint":"Cela vous demandera de d\xe9finir un nouveau mot de passe. Le serveur doit d\'abord \xeatre arr\xeat\xe9.","methodManualTitle":"M\xe9thode 2\xa0:\xa0r\xe9initialisation manuelle","methodManualDescription":"Supprimez le mot de passe de la base de donn\xe9es et d\xe9finissez-en un nouveau au d\xe9marrage\xa0:","setPasswordInYour":"D\xe9finissez un nouveau mot de passe dans votre","fileLabelSuffix":"fichier :","newPasswordPlaceholder":"votre_nouveau_mot_de_passe","deleteSettingsFile":"Supprimer","orRemovePasswordHashField":"ou supprimez le champ passwordHash","restartServerWithNewPassword":"Red\xe9marrez le serveur - il utilisera le nouveau mot de passe","backToLogin":"Retour \xe0 la connexion","forgotPassword":"Mot de passe oubli\xe9 ?"},"landing":{"brandName":"OmniRoute","navigateHome":"Acc\xe9dez \xe0 la maison","toggleMenu":"Changer de menu","featuresLink":"Caract\xe9ristiques","docsLink":"Documents","github":"GitHub","versionLive":"La v1.0 est maintenant disponible","oneEndpoint":"Un point de terminaison pour","allProviders":"Tous les fournisseurs d\'IA","heroDescription":"Proxy de point de terminaison IA avec tableau de bord Web\xa0: un port JavaScript de CLIProxyAPI. Fonctionne de mani\xe8re transparente avec Claude Code, OpenAI Codex, Cline, RooCode et d\'autres outils CLI.","getStarted":"Commencer","viewOnGithub":"Voir sur GitHub","powerfulFeatures":"Fonctionnalit\xe9s puissantes","featuresSubtitle":"Tout ce dont vous avez besoin pour g\xe9rer votre infrastructure d\'IA en un seul endroit, con\xe7u pour \xe9voluer.","featureUnifiedEndpointTitle":"Point de terminaison unifi\xe9","featureUnifiedEndpointDesc":"Acc\xe9dez \xe0 tous les fournisseurs via une seule URL API standard.","featureEasySetupTitle":"Installation facile","featureEasySetupDesc":"Soyez op\xe9rationnel en quelques minutes avec la commande npx.","featureModelFallbackTitle":"Mod\xe8le de secours","featureModelFallbackDesc":"Changez automatiquement de fournisseur en cas de panne ou de latence \xe9lev\xe9e.","featureUsageTrackingTitle":"Suivi de l\'utilisation","featureUsageTrackingDesc":"Analyses d\xe9taill\xe9es et surveillance des co\xfbts sur tous les mod\xe8les.","featureOAuthApiKeysTitle":"Cl\xe9s OAuth et API","featureOAuthApiKeysDesc":"G\xe9rez en toute s\xe9curit\xe9 les informations d’identification dans un seul coffre-fort.","featureCloudSyncTitle":"Synchronisation dans le cloud","featureCloudSyncDesc":"Synchronisez instantan\xe9ment vos configurations sur tous les appareils.","featureCliSupportTitle":"Prise en charge de l\'interface CLI","featureCliSupportDesc":"Fonctionne avec Claude Code, Codex, Cline, Cursor et plus encore.","featureDashboardTitle":"Tableau de bord","featureDashboardDesc":"Tableau de bord visuel pour une analyse du trafic en temps r\xe9el.","howItWorks":"Comment fonctionne OmniRoute","howItWorksDescription":"Les donn\xe9es circulent de mani\xe8re transparente depuis votre application via notre couche de routage intelligente jusqu\'au meilleur fournisseur pour le travail.","howItWorksStep1Title":"1. CLI et SDK","howItWorksStep1Description":"Vos demandes partent de vos outils pr\xe9f\xe9r\xe9s ou de notre SDK unifi\xe9. Changez simplement l\'URL de base.","howItWorksStep2Title":"2. Centre OmniRoute","howItWorksStep2Description":"Notre moteur analyse l\'invite, v\xe9rifie l\'\xe9tat du fournisseur et trace les itin\xe9raires pour obtenir la latence ou le co\xfbt le plus faible.","howItWorksStep3Title":"3. Fournisseurs d\'IA","howItWorksStep3Description":"La demande est satisfaite instantan\xe9ment par OpenAI, Anthropic, Gemini ou autres.","getStartedIn30Seconds":"Commencez en 30 secondes","getStartedDescription":"Installez OmniRoute, configurez vos fournisseurs via le tableau de bord Web et commencez \xe0 acheminer les demandes d\'IA.","installOmniRoute":"Installer OmniRoute","installStepDescription":"Ex\xe9cutez la commande npx pour d\xe9marrer le serveur instantan\xe9ment","openDashboard":"Ouvrir le tableau de bord","openDashboardStepDescription":"Configurer les fournisseurs et les cl\xe9s API via l\'interface Web","routeRequests":"Demandes d\'itin\xe9raire","routeRequestsStepDescription":"Pointez vos outils CLI vers {endpoint}","terminal":"borne","copy":"Copier","copied":"✓ Copi\xe9","startingOmniRoute":"D\xe9marrage d\'OmniRoute...","serverRunningOnLabel":"Serveur fonctionnant sur","dashboardLabel":"Tableau de bord","readyToRoute":"Pr\xeat \xe0 rouler\xa0! ✓","configureProvidersNote":"\uD83D\uDCDD Configurez les fournisseurs dans le tableau de bord ou utilisez des variables d\'environnement","dataLocation":"Emplacement des donn\xe9es\xa0:","dataLocationMacLinux":" macOS/Linux\xa0:","dataLocationWindows":" Fen\xeatres\xa0:","product":"Produit","dashboardLink":"Tableau de bord","changelog":"Journal des modifications","resources":"Ressources","documentation":"Documentation","npm":"MNP","legal":"Juridique","mitLicense":"Licence MIT","footerTagline":"Le point de terminaison unifi\xe9 pour la g\xe9n\xe9ration d’IA. Connectez, acheminez et g\xe9rez vos fournisseurs d\'IA en toute simplicit\xe9.","copyright":"\xa9 {year} OmniRoute. Tous droits r\xe9serv\xe9s.","flowToolClaudeCode":"Claude Code","flowToolOpenAICodex":"Codex OpenAI","flowToolCline":"Clin","flowToolCursor":"Curseur","flowProviderOpenAI":"OpenAI","flowProviderAnthropic":"Anthropique","flowProviderGemini":"G\xe9meaux","flowProviderGithubCopilot":"Copilote GitHub","interactiveDiagram":"Diagramme interactif visible sur le bureau","ctaTitle":"Pr\xeat \xe0 simplifier votre infrastructure d\'IA\xa0?","ctaDescription":"Rejoignez les d\xe9veloppeurs qui rationalisent leurs int\xe9grations d\'IA avec OmniRoute. Open source et d\xe9marrage gratuit.","startFree":"Commencez gratuitement","readDocumentation":"Lire la documentation"},"docs":{"title":"Documentation","quickStart":"D\xe9marrage rapide","features":"Caract\xe9ristiques","supportedProviders":"Fournisseurs pris en charge","supportedProvidersToc":"Fournisseurs","commonUseCases":"Cas d\'utilisation courants","clientCompatibility":"Compatibilit\xe9 client","protocolsToc":"Protocoles","apiReference":"R\xe9f\xe9rence API","method":"M\xe9thode","path":"Chemin","notes":"Remarques","modelPrefixes":"Pr\xe9fixes de mod\xe8le","prefix":"Pr\xe9fixe","troubleshooting":"D\xe9pannage","supportsChat":"Prend en charge les points de terminaison de chat et de r\xe9ponses.","oauthAutoRefresh":"Connexion OAuth avec actualisation automatique des jetons.","fullStreaming":"Prise en charge compl\xe8te du streaming pour tous les mod\xe8les.","docsLabel":"Documents","docsHeroDescription":"Passerelle IA pour les LLM multi-fournisseurs. Un point de terminaison pour OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor et plus de 20 autres fournisseurs.","openDashboard":"Ouvrir le tableau de bord","endpointPage":"Page de point de terminaison","github":"GitHub","reportIssue":"Signaler un probl\xe8me","onThisPage":"Sur cette page","documentationVersion":"Documentation-v{version}","quickStartStep1Title":"1. Installez et ex\xe9cutez","quickStartStep1Prefix":"Courir","quickStartStep1Middle":"ou clonez depuis GitHub et ex\xe9cutez","quickStartStep2Title":"2. Cr\xe9er une cl\xe9 API","quickStartStep2Text":"Acc\xe9dez \xe0 Endpoint -> Cl\xe9s enregistr\xe9es. G\xe9n\xe9rez une cl\xe9 par environnement.","quickStartStep3Title":"3. Connectez les fournisseurs","quickStartStep3Text":"Ajoutez des comptes de fournisseur via une connexion OAuth, une cl\xe9 API ou une connexion automatique de niveau gratuit.","quickStartStep4Title":"4. D\xe9finir l\'URL de la base de clients","quickStartStep4Prefix":"Pointez votre client IDE ou API vers","quickStartStep4Suffix":"Utilisez le pr\xe9fixe du fournisseur, par exemple","featureRoutingTitle":"Routage multi-fournisseurs","featureRoutingText":"Acheminez les requ\xeates vers plus de 30 fournisseurs d’IA via un seul point de terminaison compatible OpenAI. Prend en charge les API de chat, de r\xe9ponses, d\'audio et d\'image.","featureCombosTitle":"Combos et \xe9quilibrage","featureCombosText":"Cr\xe9ez des combinaisons de mod\xe8les avec des cha\xeenes de secours et des strat\xe9gies d\'\xe9quilibrage\xa0: round-robin, priorit\xe9, al\xe9atoire, moins utilis\xe9 et co\xfbt optimis\xe9.","featureUsageTitle":"Suivi de l\'utilisation et des co\xfbts","featureUsageText":"Comptage des jetons en temps r\xe9el, calcul des co\xfbts par fournisseur/mod\xe8le et r\xe9partition d\xe9taill\xe9e de l\'utilisation par cl\xe9 API et compte.","featureAnalyticsTitle":"Tableau de bord d\'analyse","featureAnalyticsText":"Analyses visuelles avec des graphiques pour les requ\xeates, les jetons, les erreurs, la latence, les co\xfbts et la popularit\xe9 du mod\xe8le au fil du temps.","featureHealthTitle":"Surveillance de la sant\xe9","featureHealthText":"Contr\xf4les de sant\xe9 en direct, statut du fournisseur, \xe9tats des disjoncteurs et d\xe9tection automatique des limites de d\xe9bit avec interruption exponentielle.","featureCliTitle":"Outils CLI","featureCliText":"G\xe9rez les configurations IDE, exportez/importez des sauvegardes, d\xe9couvrez les profils codex et configurez les param\xe8tres \xe0 partir du tableau de bord.","featureSecurityTitle":"S\xe9curit\xe9 et politiques","featureSecurityText":"Authentification par cl\xe9 API, filtrage IP, protection contre l\'injection rapide, politiques de domaine, gestion de session et journalisation d\'audit.","featureCloudSyncTitle":"Synchronisation dans le cloud","featureCloudSyncText":"Synchronisez votre configuration avec Cloudflare Workers pour un acc\xe8s \xe0 distance avec des informations d\'identification crypt\xe9es et un basculement automatique.","providersAcrossConnectionTypes":"Fournisseurs {count} sur trois types de connexion.","manageProviders":"G\xe9rer les fournisseurs","providersCount":"{count} fournisseurs","providerTypeFree":"Niveau gratuit","providerTypeOAuth":"OAuth","providerTypeApiKey":"Cl\xe9 API","useCaseSingleEndpointTitle":"Point de terminaison unique pour de nombreux fournisseurs","useCaseSingleEndpointText":"Dirigez les clients vers une URL de base et acheminez-les par pr\xe9fixe de mod\xe8le (par exemple\xa0: gh/, cc/, kr/, openai/).","useCaseFallbackTitle":"Repli et changement de mod\xe8le avec des combos","useCaseFallbackText":"Cr\xe9ez des mod\xe8les combin\xe9s dans le tableau de bord et maintenez la configuration client stable pendant que les fournisseurs effectuent une rotation en interne.","useCaseUsageVisibilityTitle":"Visibilit\xe9 de l\'utilisation, du co\xfbt et du d\xe9bogage","useCaseUsageVisibilityText":"Suivez les jetons et le co\xfbt par fournisseur, compte et cl\xe9 API dans les onglets Utilisation et Analyse.","clientCherryStudioTitle":"Studio Cerise","baseUrlLabel":"URL de base","chatEndpointLabel":"Point de terminaison de discussion","modelRecommendationLabel":"Recommandation de mod\xe8le\xa0: pr\xe9fixe explicite","clientCodexTitle":"Mod\xe8les de copilote Codex / GitHub","clientCodexBullet1":"Utiliser les ID de mod\xe8le avec","clientCodexBullet2":"Les mod\xe8les de la famille Codex sont achemin\xe9s automatiquement vers","clientCodexBullet3":"Les mod\xe8les non-Codex continuent","clientCursorTitle":"Curseur IDE","clientCursorBullet1":"Utiliser","clientCursorBullet1Suffix":"pr\xe9fixe pour les mod\xe8les Cursor.","clientCursorBullet2":"Connexion OAuth - connectez-vous \xe0 partir de la page Fournisseurs.","clientClaudeTitle":"Claude Code / Antigravit\xe9","clientClaudeBullet1Prefix":"Utiliser","clientClaudeBullet1Middle":"(Claude) ou","clientClaudeBullet1Suffix":"Pr\xe9fixe (Antigravit\xe9).","protocolsTitle":"Protocoles\xa0: MCP et A2A","protocolsDescription":"OmniRoute expose deux protocoles op\xe9rationnels en plus des API compatibles OpenAI\xa0: MCP pour l\'ex\xe9cution des outils et A2A pour les flux de travail d\'agent \xe0 agent.","protocolMcpTitle":"MCP (protocole de contexte de mod\xe8le)","protocolMcpDesc":"Utilisez MCP sur stdio pour permettre aux clients de d\xe9couvrir et d\'appeler les outils OmniRoute avec une visibilit\xe9 d\'audit.","protocolMcpStep1":"D\xe9marrez le transport MCP avec `omniroute --mcp`.","protocolMcpStep2":"Pointez votre client MCP vers le transport stdio.","protocolMcpStep3":"Appelez `omniroute_get_health` et `omniroute_list_combos` pour valider la connectivit\xe9.","protocolA2aTitle":"A2A (Agent2Agent)","protocolA2aDesc":"Utilisez A2A JSON-RPC pour soumettre des t\xe2ches de mani\xe8re synchrone ou via le streaming SSE.","protocolA2aStep1":"Lisez `/.well-known/agent.json` pour la d\xe9couverte d\'agents.","protocolA2aStep2":"Envoyez les requ\xeates `message/send` ou `message/stream` \xe0 `POST /a2a`.","protocolA2aStep3":"G\xe9rez le cycle de vie des t\xe2ches avec `tasks/get` et `tasks/cancel`.","protocolTroubleshootingTitle":"D\xe9pannage du protocole","protocolTroubleshooting1":"Si l\'\xe9tat MCP est hors ligne, v\xe9rifiez que le processus stdio est en cours d\'ex\xe9cution et que le fichier de pulsation est mis \xe0 jour.","protocolTroubleshooting2":"Si les t\xe2ches A2A restent dans `working`, inspectez `/api/a2a/tasks/:id` et diffusez les \xe9v\xe9nements pour conna\xeetre l\'\xe9tat du terminal.","protocolTroubleshooting3":"Utilisez `/dashboard/mcp` et `/dashboard/a2a` pour les contr\xf4les op\xe9rationnels et la visibilit\xe9 des audits.","endpointChatNote":"Point de terminaison de discussion compatible OpenAI (par d\xe9faut).","endpointResponsesNote":"Point de terminaison de l’API de r\xe9ponses (Codex, s\xe9rie o).","endpointModelsNote":"Catalogue mod\xe8le pour tous les fournisseurs connect\xe9s.","endpointAudioNote":"Transcription audio (Deepgram, AssemblyAI).","endpointImagesNote":"G\xe9n\xe9ration d\'images (NanoBanana).","endpointRewriteChatNote":"Aide \xe0 la r\xe9\xe9criture pour les clients sans /v1.","endpointRewriteResponsesNote":"Assistant de r\xe9\xe9criture pour les r\xe9ponses sans /v1.","endpointRewriteModelsNote":"Aide \xe0 la r\xe9\xe9criture pour la d\xe9couverte de mod\xe8les sans /v1.","modelPrefixesDescriptionStart":"Utilisez le pr\xe9fixe du fournisseur avant le nom du mod\xe8le pour acheminer vers un fournisseur sp\xe9cifique. Exemple\xa0:","modelPrefixesDescriptionEnd":"itin\xe9raires vers GitHub Copilot.","provider":"Fournisseur","type":"Tapez","troubleshootingModelRouting":"Si le client \xe9choue avec le routage du mod\xe8le, utilisez un fournisseur/mod\xe8le explicite (par exemple\xa0: gh/gpt-5.1-codex).","troubleshootingAmbiguousModels":"Si vous recevez des erreurs de mod\xe8le ambigu\xebs, choisissez un pr\xe9fixe de fournisseur au lieu d\'un simple ID de mod\xe8le.","troubleshootingCodexFamily":"Pour les mod\xe8les de la famille GitHub Codex, conservez le mod\xe8le sous la forme gh/codex-model\xa0; Le routeur s\xe9lectionne /r\xe9ponses automatiquement.","troubleshootingTestConnection":"Utilisez Tableau de bord > Fournisseurs > Tester la connexion avant de tester \xe0 partir d\'IDE ou de clients externes.","troubleshootingCircuitBreaker":"Si un fournisseur indique que le disjoncteur est ouvert, attendez le temps de recharge ou consultez la page Sant\xe9 pour plus de d\xe9tails.","troubleshootingOAuth":"Pour les fournisseurs OAuth, r\xe9authentifiez-vous si les jetons expirent. V\xe9rifiez l\'indicateur d\'\xe9tat de la carte du fournisseur."},"legal":{"privacyPolicy":"Politique de confidentialit\xe9","termsOfService":"Conditions d\'utilisation","providerConfigurations":"Configurations du fournisseur","apiKeys":"Cl\xe9s API","usageLogs":"Journaux d\'utilisation","applicationSettings":"Param\xe8tres de l\'application","viewExportAnalytics":"Afficher et exporter les analyses d\'utilisation","clearHistory":"Effacer l\'historique d\'utilisation \xe0 tout moment","configureRetention":"Configurer les politiques de conservation des journaux","backupRestore":"Sauvegardez et restaurez votre base de donn\xe9es","privacyMetadataTitle":"Politique de confidentialit\xe9 | OmniRoute","privacyMetadataDescription":"Politique de confidentialit\xe9 pour le routeur proxy OmniRoute AI API.","termsMetadataTitle":"Conditions d\'utilisation | OmniRoute","termsMetadataDescription":"Conditions d\'utilisation du routeur proxy de l\'API OmniRoute AI.","backToHome":"Retour \xe0 la maison","lastUpdated":"Derni\xe8re mise \xe0 jour\xa0: {date}","policyLastUpdatedDate":"13 f\xe9vrier 2026","listSeparator":"-","questionsVisit":"Des questions ? Visitez notre","githubRepository":"D\xe9p\xf4t GitHub","privacySection1Title":"1. Architecture locale d’abord","privacySection1Text":"OmniRoute est con\xe7u comme une application locale. Tout le traitement et le stockage des donn\xe9es s\'effectuent enti\xe8rement sur votre machine. Il n\'y a pas de serveur centralis\xe9 collectant vos informations.","privacySection2Title":"2. Donn\xe9es que nous stockons","privacyDataStoredIn":"Les donn\xe9es suivantes sont stock\xe9es localement dans","privacyDataProviderConfigurationsDesc":"URL de connexion, types de fournisseurs et param\xe8tres de priorit\xe9","privacyDataApiKeysDesc":"crypt\xe9 et stock\xe9 localement pour l\'authentification aupr\xe8s des fournisseurs d\'IA","privacyDataUsageLogsDesc":"nombre de requ\xeates, utilisation des jetons, noms de mod\xe8les, horodatages et temps de r\xe9ponse","privacyDataApplicationSettingsDesc":"pr\xe9f\xe9rences de th\xe8me, strat\xe9gie de routage et configurations combo","privacySection3Title":"3. Pas de t\xe9l\xe9m\xe9trie","privacySection3Text":"OmniRoute ne collecte pas de rapports de t\xe9l\xe9m\xe9trie, d\'analyse ou d\'erreur. Aucune donn\xe9e n\'est envoy\xe9e \xe0 nous ou \xe0 un tiers. Vos mod\xe8les d\'utilisation, appels API et configurations restent enti\xe8rement priv\xe9s.","privacySection4Title":"4. Fournisseurs d\'IA tiers","privacySection4Text":"Lorsque vous effectuez des appels API via OmniRoute, vos requ\xeates sont transmises aux fournisseurs d\'IA que vous avez configur\xe9s (par exemple : OpenAI, Anthropic, Google). Ces fournisseurs ont leurs propres politiques de confidentialit\xe9 qui r\xe9gissent la mani\xe8re dont ils traitent vos donn\xe9es. Veuillez consulter\xa0:","privacyOpenAiPolicy":"Politique de confidentialit\xe9 d\'OpenAI","privacyAnthropicPolicy":"Politique de confidentialit\xe9 anthropique","privacyGooglePolicy":"Politique de confidentialit\xe9 de Google","privacySection5Title":"5. Synchronisation cloud (facultatif)","privacySection5Text":"Si vous activez la fonctionnalit\xe9 facultative de synchronisation dans le cloud, les configurations du fournisseur et les cl\xe9s API peuvent \xeatre transmises \xe0 un point de terminaison cloud configur\xe9. Cette fonctionnalit\xe9 est d\xe9sactiv\xe9e par d\xe9faut et n\xe9cessite une inscription explicite.","privacySection6Title":"6. Journalisation","privacyLoggingIntro":"Les journaux de demandes peuvent \xeatre configur\xe9s via les param\xe8tres du tableau de bord. Vous pouvez\xa0:","privacySection7Title":"7. Vos droits","privacySection7TextStart":"Puisque toutes les donn\xe9es sont stock\xe9es localement, vous avez le contr\xf4le total. Vous pouvez supprimer vos donn\xe9es \xe0 tout moment en supprimant le","privacySection7TextEnd":"r\xe9pertoire ou en utilisant les fonctionnalit\xe9s de sauvegarde et de restauration de la base de donn\xe9es dans le tableau de bord.","termsSection1Title":"1. Aper\xe7u","termsSection1Text":"OmniRoute est un premier routeur proxy API AI local qui fonctionne enti\xe8rement sur votre machine. Il achemine les requ\xeates vers plusieurs fournisseurs d\'IA avec \xe9quilibrage de charge, basculement et suivi de l\'utilisation.","termsSection2Title":"2. Responsabilit\xe9s de l\'utilisateur","termsResponsibilityApiKeys":"Vous \xeates seul responsable de la gestion de vos propres cl\xe9s API et informations d\'identification pour les fournisseurs d\'IA tiers (OpenAI, Anthropic, Google, etc.).","termsResponsibilityCompliance":"Vous devez respecter les conditions de service de chaque fournisseur d\'IA dont vous acc\xe9dez \xe0 l\'API via OmniRoute.","termsResponsibilitySecurity":"Vous \xeates responsable de la s\xe9curit\xe9 de votre installation OmniRoute locale, notamment en d\xe9finissant un mot de passe et en restreignant l\'acc\xe8s au r\xe9seau.","termsSection3Title":"3. Comment \xe7a marche","termsSection3Text":"OmniRoute agit en tant que proxy interm\xe9diaire. Les appels API envoy\xe9s \xe0 OmniRoute sont traduits et transmis \xe0 vos fournisseurs d\'IA configur\xe9s. OmniRoute ne modifie pas le contenu de vos demandes ou r\xe9ponses au-del\xe0 de la traduction du protocole n\xe9cessaire.","termsSection4Title":"4. Traitement des donn\xe9es","termsDataStoredLocally":"Toutes les donn\xe9es sont stock\xe9es localement sur votre machine dans une base de donn\xe9es SQLite.","termsNoTransmission":"OmniRoute ne transmet aucune donn\xe9e aux serveurs externes, sauf si vous activez explicitement les fonctionnalit\xe9s de synchronisation dans le cloud.","termsDataLocationText":"Les journaux d\'utilisation, les cl\xe9s API et la configuration sont stock\xe9s dans","termsSection5Title":"5. Avis de non-responsabilit\xe9","termsSection5Text":"OmniRoute est fourni \xab tel quel \xbb, sans garantie d\'aucune sorte. Nous ne sommes pas responsables des co\xfbts occasionn\xe9s par l\'utilisation de l\'API, les interruptions de service ou la perte de donn\xe9es. Conservez toujours des sauvegardes de votre configuration.","termsSection6Title":"6. Ouvrir la source","termsSection6Text":"OmniRoute est un logiciel open source. Vous \xeates libre de l\'inspecter, de le modifier et de le distribuer selon les termes de sa licence."},"endpoints":{"tabProxy":"Endpoint Proxy","tabApiEndpoints":"Points d\'acc\xe8s API","apiEndpointsTitle":"Points d\'acc\xe8s API","apiEndpointsDescription":"Points d\'acc\xe8s API backend pouvant \xeatre consomm\xe9s par d\'autres applications et services.","comingSoon":"Bient\xf4t disponible","plannedFeatures":"Fonctionnalit\xe9s pr\xe9vues","featureRestApi":"Catalogue d\'API REST avec documentation interactive","featureWebhooks":"Configuration de webhooks et abonnements aux \xe9v\xe9nements","featureSwagger":"G\xe9n\xe9ration automatique de sp\xe9cifications OpenAPI / Swagger","featureAuth":"Gestion des cl\xe9s API et des port\xe9es OAuth par point d\'acc\xe8s"}}')}};
|
|
1
|
+
"use strict";exports.id=3911,exports.ids=[3911],exports.modules={53911:a=>{a.exports=JSON.parse('{"common":{"save":"Enregistrer","cancel":"Annuler","delete":"Supprimer","loading":"Chargement...","error":"Une erreur s\'est produite","success":"Succ\xe8s","confirm":"Etes-vous s\xfbr ?","refresh":"Actualiser","close":"Fermer","add":"Ajouter","edit":"Modifier","search":"Rechercher","back":"Retour","next":"Suivant","submit":"Soumettre","reset":"R\xe9initialiser","copy":"Copier","copied":"Copi\xe9!","enabled":"Activ\xe9","disabled":"D\xe9sactiv\xe9","active":"Actif","inactive":"Inactif","noData":"Aucune donn\xe9e disponible","configure":"Configurer","manage":"G\xe9rer","name":"Nom","actions":"Actions","status":"Statut","type":"Tapez","model":"Mod\xe8le","models":"mod\xe8les","provider":"Fournisseur","account":"Compte","time":"Temps","details":"D\xe9tails","created":"Cr\xe9\xe9","lastUsed":"Derni\xe8re utilisation","loadMore":"Charger plus","noResults":"Aucun r\xe9sultat trouv\xe9","reloadPage":"Recharger la page","connected":"Connect\xe9","disconnected":"D\xe9connect\xe9","notConfigured":"Non configur\xe9","testConnection":"Tester la connexion","enable":"Activer","disable":"D\xe9sactiver","columns":"Colonnes","newest":"Le plus r\xe9cent","oldest":"Le plus ancien","all":"Tout","none":"Aucun","yes":"Oui","no":"Non","warning":"Avertissement","note":"Remarque","free":"Gratuit","skipToContent":"Passer au contenu"},"sidebar":{"home":"Accueil","dashboard":"Tableau de bord","providers":"Fournisseurs","combos":"Combinaisons","usage":"Utilisation","analytics":"Analyse","costs":"Co\xfbts","health":"Sant\xe9","limits":"Limites et quotas","cliTools":"Outils CLI","media":"M\xe9dias","settings":"Param\xe8tres","translator":"Traducteur","docs":"Documentation","issues":"Probl\xe8mes","apiManager":"Gestionnaire d\'API","logs":"Journaux","auditLog":"Journal d\'audit","shutdown":"Arr\xeat","restart":"Red\xe9marrer","shutdownConfirm":"Arr\xeater OmniRoute\xa0?","restartConfirm":"Red\xe9marrer OmniRoute\xa0?","version":"v{version}","debug":"D\xe9bogage","system":"Syst\xe8me","help":"Aide","serverDisconnected":"Serveur d\xe9connect\xe9","serverDisconnectedMsg":"Le serveur proxy a \xe9t\xe9 arr\xeat\xe9 ou est en train de red\xe9marrer.","expandSidebar":"D\xe9velopper la barre lat\xe9rale","collapseSidebar":"R\xe9duire la barre lat\xe9rale","themes":"Th\xe8mes","presetColors":"Couleurs populaires","createTheme":"Cr\xe9er un th\xe8me","chooseColor":"Choisissez une couleur","themeCoral":"Corail","themeBlue":"Bleu","themeRed":"Rouge","themeGreen":"Vert","themeViolet":"Violette","themeOrange":"Orange","themeCyan":"Cyan","endpoints":"Points d\'acc\xe8s","playground":"Playground","agents":"Agents","cliToolsShort":"Outils"},"themesPage":{"title":"Th\xe8mes","description":"Choisissez un th\xe8me pr\xe9d\xe9fini ou cr\xe9ez le v\xf4tre avec une seule couleur","presetColors":"Couleurs populaires","customTheme":"Th\xe8me personnalis\xe9","customThemeDesc":"Cliquez sur cr\xe9er un th\xe8me et choisissez une couleur","createTheme":"Cr\xe9er un th\xe8me","activePreset":"Th\xe8me actif"},"header":{"logout":"D\xe9connexion","language":"Langue","providers":"Fournisseurs","providerDescription":"G\xe9rez vos connexions aux fournisseurs d\'IA","combos":"Combinaisons","comboDescription":"Combinaisons de mod\xe8les avec bascule de secours","usage":"Utilisation et analyses","usageDescription":"Surveillez l\'utilisation de votre API, la consommation de jetons et les journaux de requ\xeates","analytics":"Analytique","analyticsDescription":"Graphiques, tendances et informations d\'\xe9valuation","cliTools":"Outils CLI","cliToolsDescription":"Configurer les outils CLI","home":"Accueil","homeDescription":"Bienvenue sur OmniRoute","endpoint":"Points d\'acc\xe8s","endpointDescription":"G\xe9rer les points d\'acc\xe8s proxy, MCP, A2A et les points d\'acc\xe8s API","settings":"Param\xe8tres","settingsDescription":"G\xe9rez vos pr\xe9f\xe9rences","openaiCompatible":"Compatible avec OpenAI","anthropicCompatible":"Compatible Anthropic","media":"M\xe9dias","mediaDescription":"G\xe9n\xe9rez des images, des vid\xe9os et de la musique","themes":"Th\xe8mes","themesDescription":"Choisissez un th\xe8me de couleur pour l\'ensemble du panneau du tableau de bord","mcp":"MCP","mcpDescription":"Model Context Protocol server management and tools","a2a":"A2A","a2aDescription":"Agent-to-Agent protocol tasks and observability"},"home":{"quickStart":"D\xe9marrage rapide","quickStartDesc":"D\xe9marrez en 4 \xe9tapes. Connectez des fournisseurs, routez les mod\xe8les et surveillez tout.","fullDocs":"Documentation compl\xe8te","step1Title":"1. Cr\xe9er une cl\xe9 API","step1Desc":"Allez dans <endpoint>Endpoint</endpoint> -> Cl\xe9s enregistr\xe9es. G\xe9n\xe9rez une cl\xe9 par environnement.","step2Title":"2. Connecter des fournisseurs","step2Desc":"Ajoutez des comptes dans <providers>Providers</providers>. Prend en charge OAuth, API Key et paliers gratuits.","step3Title":"3. Configurer votre client","step3Desc":"D\xe9finissez l\'URL de base sur {url} dans votre IDE ou client API.","step4Title":"4. Surveiller et optimiser","step4Desc":"Suivez les tokens, les co\xfbts et les erreurs dans <logs>Journaux des requ\xeates</logs> et <analytics>Analytique</analytics>.","providersOverview":"Pr\xe9sentation des fournisseurs","configuredOf":"{configured} configur\xe9 parmi {total} fournisseurs disponibles","noModelsAvailable":"Aucun mod\xe8le disponible pour ce fournisseur.","configureFirst":"Configurez d\'abord une connexion dans {providers}","configureProvider":"Configurer le fournisseur","modelAvailable":"Mod\xe8le {count} disponible","modelsAvailable":"{count} mod\xe8les disponibles","connectionsActive":"Connexion {count} active","connectionsActivePlural":"{count} connexions actives","copyModelName":"Copier le nom du mod\xe8le","documentation":"Documentation","healthMonitor":"Moniteur de sant\xe9","reportIssue":"Signaler un probl\xe8me","activeError":"{active} actif \xb7 Erreur {errors}","oauthLabel":"OAuth","apiKeyLabel":"Cl\xe9 API","requestsShort":"{count} reqs","providerModelsTitle":"{provider} - Mod\xe8les","copiedModel":"Copi\xe9\xa0: {model}","aliasLabel":"pseudonyme"},"analytics":{"title":"Analyse","overviewDescription":"Surveillez vos mod\xe8les d\'utilisation des API, la consommation de jetons, les co\xfbts et les tendances d\'activit\xe9 sur tous les fournisseurs et mod\xe8les.","evalsDescription":"Ex\xe9cutez des suites d\'\xe9valuation pour tester et valider vos points de terminaison LLM. Comparez la qualit\xe9 des mod\xe8les, d\xe9tectez les r\xe9gressions et \xe9valuez la latence.","overview":"Aper\xe7u","evals":"\xc9valuations"},"apiManager":{"title":"Cl\xe9s API","createKey":"Cr\xe9er une cl\xe9 API","key":"Cl\xe9","revokeKey":"R\xe9voquer la cl\xe9","revokeConfirm":"\xcates-vous s\xfbr de vouloir r\xe9voquer cette cl\xe9 API\xa0?","noKeys":"Pas encore de cl\xe9 API","noKeysDesc":"Cr\xe9ez votre premi\xe8re cl\xe9 API pour authentifier les requ\xeates sur votre point de terminaison","keyLabel":"\xc9tiquette de cl\xe9","permissions":"Autorisations","expiresAt":"Expire","never":"Jamais","revoke":"R\xe9voquer","showKey":"Afficher la cl\xe9","hideKey":"Masquer la cl\xe9","copyKey":"Copier la cl\xe9 API","allModels":"Tous les mod\xe8les","selectedModels":"Mod\xe8les s\xe9lectionn\xe9s","readOnly":"Lecture seule","fullAccess":"Acc\xe8s complet","keyManagement":"Gestion des cl\xe9s API","keyManagementDesc":"Cr\xe9ez et g\xe9rez des cl\xe9s API pour authentifier les requ\xeates sur votre point de terminaison","totalKeys":"Cl\xe9s totales","restricted":"Restreint","totalRequests":"Total des demandes","modelsAvailable":"Mod\xe8les disponibles","registeredKeys":"Cl\xe9s enregistr\xe9es","keysRegistered":"{count} cl\xe9s enregistr\xe9es","keyRegistered":"Cl\xe9 {count} enregistr\xe9e","keysSecurityNote":"Chaque cl\xe9 isole le suivi de l\'utilisation et peut \xeatre r\xe9voqu\xe9e ind\xe9pendamment. Les cl\xe9s sont masqu\xe9es apr\xe8s leur cr\xe9ation pour des raisons de s\xe9curit\xe9.","createFirstKey":"Cr\xe9ez votre premi\xe8re cl\xe9","name":"Nom","usage":"Utilisation","created":"Cr\xe9\xe9","actions":"Actions","reqs":"demandes","neverUsed":"Jamais utilis\xe9","deleteConfirm":"Supprimer cette cl\xe9 API\xa0?","usageTips":"Conseils d\'utilisation","tipAuth":"Utilisez les cl\xe9s API dans l\'en-t\xeate d\'autorisation en tant que Bearer YOUR_KEY","tipSecure":"Les cl\xe9s ne sont affich\xe9es qu\'une seule fois lors de la cr\xe9ation\xa0: stockez-les en toute s\xe9curit\xe9","tipSeparate":"Cr\xe9er des cl\xe9s distinctes pour diff\xe9rents clients ou environnements","tipRestrict":"Restreindre les cl\xe9s \xe0 des mod\xe8les sp\xe9cifiques pour une meilleure s\xe9curit\xe9 et un meilleur contr\xf4le des co\xfbts","keyName":"Nom de la cl\xe9","keyNamePlaceholder":"par exemple, cl\xe9 de production, cl\xe9 de d\xe9veloppement","keyNameDesc":"Choisissez un nom descriptif pour identifier l\'objectif de cette cl\xe9","keyCreated":"Cl\xe9 API cr\xe9\xe9e","keyCreatedSuccess":"Cl\xe9 cr\xe9\xe9e avec succ\xe8s\xa0!","keyCreatedNote":"Copiez et stockez cette cl\xe9 maintenant – elle ne sera plus affich\xe9e.","done":"Termin\xe9","savePermissions":"Enregistrer les autorisations","allowAll":"Tout autoriser","restrict":"Restreindre","allowAllInfo":"Cette cl\xe9 peut acc\xe9der \xe0 tous les mod\xe8les disponibles.","restrictInfo":"Cette cl\xe9 peut acc\xe9der \xe0 {selected} des mod\xe8les {total}.","selected":"{count} s\xe9lectionn\xe9","all":"Tout","clear":"Effacer","searchModels":"Rechercher des mod\xe8les par nom ou fournisseur...","noModelsFound":"Aucun mod\xe8le trouv\xe9","keyNameRequired":"Le nom de la cl\xe9 est requis","keyNameTooLong":"Le nom de la cl\xe9 doit comporter {max}\xa0caract\xe8res ou moins.","keyNameInvalid":"Le nom de la cl\xe9 ne peut contenir que des lettres, des chiffres, des espaces, des traits d\'union et des traits de soulignement.","invalidKeyName":"Nom de cl\xe9 invalide","failedCreateKey":"\xc9chec de la cr\xe9ation de la cl\xe9","failedCreateKeyRetry":"\xc9chec de la cr\xe9ation de la cl\xe9. Veuillez r\xe9essayer.","invalidKeyId":"ID de cl\xe9 invalide","failedDeleteKey":"\xc9chec de la suppression de la cl\xe9","failedDeleteKeyRetry":"\xc9chec de la suppression de la cl\xe9. Veuillez r\xe9essayer.","invalidModelsSelection":"S\xe9lection de mod\xe8les invalide","cannotSelectMoreThanModels":"Impossible de s\xe9lectionner plus de {max} mod\xe8les","failedUpdatePermissions":"\xc9chec de la mise \xe0 jour des autorisations","failedUpdatePermissionsRetry":"\xc9chec de la mise \xe0 jour des autorisations. Veuillez r\xe9essayer.","unknownProvider":"inconnu","copyMaskedKey":"Copier la cl\xe9 masqu\xe9e","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"Dernier\xa0: {date}","editPermissions":"Modifier les autorisations","deleteKey":"Supprimer la cl\xe9","model":"Mod\xe8le {count}","models":"Mod\xe8les {count}","permissionsTitle":"Autorisations\xa0: {name}","allowAllDesc":"Cette cl\xe9 peut acc\xe9der \xe0 tous les mod\xe8les disponibles.","restrictDesc":"Cette cl\xe9 peut acc\xe9der \xe0 {selectedCount} des mod\xe8les {totalModels}.","selectedCount":"{count} s\xe9lectionn\xe9"},"auditLog":{"title":"Journal d\'audit","searchPlaceholder":"Actions de recherche...","action":"Action","actor":"Acteur","target":"Cible","ipAddress":"Adresse IP","timestamp":"Horodatage","noEntries":"Aucune entr\xe9e d\'audit trouv\xe9e","filterByAction":"Filtrer par action...","filterByActor":"Filtrer par acteur...","filterEntriesAria":"Filtrer les entr\xe9es du journal d\'audit","filterByActionTypeAria":"Filtrer par type d\'action","filterByActorAria":"Filtrer par acteur","refreshAuditLogAria":"Actualiser le journal d\'audit","tableAria":"Entr\xe9es du journal d\'audit","failedFetchAuditLog":"\xc9chec de la r\xe9cup\xe9ration du journal d\'audit","notAvailable":"—","description":"Actions administratives et \xe9v\xe9nements de s\xe9curit\xe9","showing":"Affichage des entr\xe9es {count} (d\xe9calage {offset})","previous":"Pr\xe9c\xe9dent"},"media":{"title":"Espace m\xe9dia","subtitle":"G\xe9n\xe9rez des images, des vid\xe9os et de la musique","model":"Model","prompt":"Prompt","generate":"G\xe9n\xe9rer","generating":"Generating...","loadingModels":"Loading available models...","noModels":"No models available. Configure providers with media capabilities first.","error":"Generation Failed","result":"Result","imageDescription":"Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.","videoDescription":"Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.","musicDescription":"Compose music using Stable Audio Open or MusicGen via ComfyUI."},"cliTools":{"title":"Outils CLI","noActiveProviders":"Aucun fournisseur actif","noActiveProvidersDesc":"Veuillez d\'abord ajouter et connecter des fournisseurs pour configurer les outils CLI.","mapModels":"Mod\xe8les de cartes","testConnection":"Tester la connexion","connectionStatus":"\xc9tat de la connexion","configureEndpoint":"Configurer le point de terminaison","instructions":"Instructions","modelMapping":"Cartographie du mod\xe8le","baseUrl":"URL de base","apiKey":"Cl\xe9 API","configured":"Configur\xe9","notConfigured":"Non configur\xe9","notInstalled":"Non install\xe9","custom":"Personnalis\xe9","unknown":"Inconnu","lastSavedAt":"Dernier enregistrement\xa0: {date}","never":"Jamais","justNow":"juste maintenant","minutesAgoShort":"il y a {count}m","hoursAgoShort":"il y a {count}h","daysAgoShort":"Il y a {count}j","monthsAgoShort":"Il y a {count}mo","yearsAgoShort":"Il y a {count}ans","runtimeCheckFailed":"La v\xe9rification de l\'ex\xe9cution a \xe9chou\xe9","yourApiKeyPlaceholder":"votre-cl\xe9-API","modelPlaceholder":"fournisseur/identifiant de mod\xe8le","configurationSaved":"Configuration enregistr\xe9e avec succ\xe8s.","failedToSave":"\xc9chec de l\'enregistrement de la configuration.","noApiKeysCreateOne":"Aucune cl\xe9 API\xa0–\xa0Cr\xe9ez-en une sur la page Cl\xe9s","defaultOmnirouteKey":"sk_omniroute (par d\xe9faut)","selectModel":"S\xe9lectionnez le mod\xe8le","selectModelForAlias":"S\xe9lectionnez le mod\xe8le pour {alias}","selectModelForTool":"S\xe9lectionnez le mod\xe8le pour {tool}","select":"S\xe9lectionnez","clear":"Effacer","comingSoon":"Bient\xf4t disponible","checkingRuntime":"V\xe9rification de l\'\xe9tat d\'ex\xe9cution...","guideOnlyIntegration":"Int\xe9gration avec guide uniquement (aucun runtime local requis)","cliRuntimeDetected":"Runtime CLI d\xe9tect\xe9 et pr\xeat","cliFoundNotRunnable":"CLI trouv\xe9e mais non ex\xe9cutable{reason}","cliRuntimeNotDetected":"L\'ex\xe9cution CLI n\'est pas d\xe9tect\xe9e","binary":"Binaire","configPath":"Chemin de configuration","configPathShort":"Configuration","failedCheckRuntimeStatus":"\xc9chec de la v\xe9rification de l\'\xe9tat d\'ex\xe9cution.","copy":"Copier","copied":"Copi\xe9","copyConfig":"Copier la configuration","saveConfig":"Enregistrer la configuration","selectionSaved":"S\xe9lection enregistr\xe9e","guide":"Guider","detected":"D\xe9tect\xe9","notReady":"Pas pr\xeat","active":"Actif","inactive":"Inactif","startMitm":"D\xe9marrer MITM","stopMitm":"Arr\xeatez le MITM","mitmStarted":"MITM a d\xe9marr\xe9 avec succ\xe8s\xa0!","mitmStopped":"MITM s\'est arr\xeat\xe9 avec succ\xe8s\xa0!","failedStart":"\xc9chec du d\xe9marrage de MITM","failedStop":"\xc9chec de l\'arr\xeat de MITM","saveMappings":"Enregistrer les mappages","mappingsSaved":"Mappages enregistr\xe9s\xa0!","failedSaveMappings":"\xc9chec de l\'enregistrement des mappages","howItWorks":"Comment \xe7a marche\xa0:","antigravityHowWorksDesc":"Antigravity envoie des requ\xeates au point de terminaison de Google. MITM les intercepte et les redirige vers OmniRoute.","antigravityStep1":"1. D\xe9marrez MITM pour acheminer les demandes via OmniRoute.","antigravityStep2Prefix":"2. Ajouter","antigravityStep2Suffix":"\xe0 votre fichier hosts en tant que 127.0.0.1.","antigravityStep3":"3. Ouvrez Antigravity et les requ\xeates seront proxy.","sudoPasswordRequiredTitle":"Mot de passe Sudo requis","sudoPasswordHint":"Un mot de passe administrateur est requis pour modifier les param\xe8tres du fichier h\xf4te et du proxy syst\xe8me.","enterSudoPassword":"Entrez le mot de passe sudo","sudoPasswordRequiredError":"Le mot de passe Sudo est requis.","cancel":"Annuler","confirm":"Confirmer","settingsApplied":"Param\xe8tres appliqu\xe9s avec succ\xe8s\xa0!","failedApplySettings":"\xc9chec de l\'application des param\xe8tres","settingsReset":"Les param\xe8tres ont \xe9t\xe9 r\xe9initialis\xe9s avec succ\xe8s\xa0!","failedResetSettings":"\xc9chec de la r\xe9initialisation des param\xe8tres","backupRestored":"Sauvegarde restaur\xe9e\xa0!","failedRestore":"\xc9chec de la restauration","checkingCli":"V\xe9rification de {tool} CLI...","cliNotRunnable":"{tool} CLI install\xe9 mais non ex\xe9cutable","cliNotInstalled":"{tool} CLI non install\xe9","cliNotDetected":"{tool} CLI non d\xe9tect\xe9e","cliDetectedReady":"{tool} CLI d\xe9tect\xe9 et pr\xeat","cliFoundFailedHealthcheck":"{tool} CLI a \xe9t\xe9 trouv\xe9e mais le contr\xf4le de sant\xe9 d\'ex\xe9cution a \xe9chou\xe9{reason}.","installCliPrompt":"Veuillez installer {tool} CLI pour utiliser cette fonctionnalit\xe9.","installCodexPrompt":"Veuillez installer Codex CLI pour utiliser la fonctionnalit\xe9 d\'application automatique.","hide":"Masquer","howToInstall":"Comment installer","installationGuide":"Guide d\'installation","platforms":"macOS/Linux/Windows\xa0:","afterInstallationRun":"Apr\xe8s l\'installation, ex\xe9cutez","toVerify":"\xe0 v\xe9rifier.","current":"Actuel","baseUrlPlaceholder":"https://.../v1","resetToDefault":"R\xe9initialiser aux valeurs par d\xe9faut","providerModelPlaceholder":"fournisseur/identifiant de mod\xe8le","apply":"Postuler","reset":"R\xe9initialiser","manualConfig":"Configuration manuelle","backups":"Sauvegardes","configBackups":"Sauvegardes de configuration","noBackupsYet":"Aucune sauvegarde pour l\'instant. Les sauvegardes sont cr\xe9\xe9es automatiquement avant chaque application ou r\xe9initialisation.","restore":"Restaurer","backupRestoredReloading":"Sauvegarde restaur\xe9e\xa0! Statut de rechargement...","failedRestoreBackup":"\xc9chec de la restauration de la sauvegarde","applied":"Appliqu\xe9!","failed":"\xc9chec","resetDone":"R\xe9initialisez\xa0!","omnirouteConfiguredOpenAiCompatible":"OmniRoute est configur\xe9 en tant que fournisseur compatible OpenAI","provider":"Fournisseur","model":"Mod\xe8le","providers":"Fournisseurs","auth":"Authentification","noApiKeysAvailable":"Aucune cl\xe9 API disponible","usingDefaultOmniroute":"Utilisation par d\xe9faut\xa0: sk_omniroute","updateConfig":"Mettre \xe0 jour la configuration","applyConfig":"Appliquer la configuration","noBackupsAvailable":"Aucune sauvegarde disponible.","profileSaved":"Profil \\"{name}\\" enregistr\xe9\xa0!","failedSaveProfile":"\xc9chec de l\'enregistrement du profil","profileActivated":"Profil activ\xe9\xa0!","failedActivateProfile":"\xc9chec de l\'activation du profil","profiles":"Profils","savedProfiles":"Profils enregistr\xe9s","noProfilesYet":"Aucun profil enregistr\xe9 pour le moment. Enregistrez la configuration actuelle en tant que profil ci-dessous.","activate":"Activer","deleteProfile":"Supprimer le profil","profileNamePlaceholder":"Nom du profil (par exemple, compte personnel)","saveCurrent":"Enregistrer le courant","codexAuthNotePrefix":"Utilisations du Codex","codexAuthNoteMiddle":"avec","codexAuthNoteSuffix":"Cliquez sur \\"Appliquer\\" pour effectuer la configuration automatique.","claudeManualConfiguration":"Claude CLI - Configuration manuelle","codexManualConfiguration":"CLI Codex - Configuration manuelle","droidManualConfiguration":"Factory Droid - Configuration manuelle","openClawManualConfiguration":"Griffe ouverte - Configuration manuelle","clineManualConfiguration":"Configuration manuelle en ligne","kiloManualConfiguration":"Configuration manuelle du code kilo","toolDescriptions":{"antigravity":"IDE Google Antigravity avec MITM","claude":"Anthropique Claude Code CLI","codex":"CLI du Codex OpenAI","droid":"Assistant IA pour dro\xefdes d\'usine","openclaw":"Assistant IA Open Claw","cline":"CLI de l\'assistant de codage Cline AI","kilo":"CLI de l\'assistant IA Kilo Code","cursor":"\xc9diteur de code AI du curseur","continue":"Continuer l\'Assistant IA","opencode":"OpenCode AI coding agent (Terminal)","kiro":"Amazon Kiro — AI-powered IDE"},"guides":{"cursor":{"notes":{"0":"N\xe9cessite un compte Cursor Pro pour utiliser cette fonctionnalit\xe9.","1":"Le curseur achemine les requ\xeates via son propre serveur, le point de terminaison local n\'est donc pas pris en charge. Veuillez activer Cloud Endpoint dans les param\xe8tres."},"steps":{"1":{"title":"Ouvrir les param\xe8tres","desc":"Allez dans Param\xe8tres -> Mod\xe8les"},"2":{"title":"Activer l\'API OpenAI","desc":"Activer l\'option \\"Cl\xe9 API OpenAI\\""},"3":{"title":"URL de base"},"4":{"title":"Cl\xe9 API"},"5":{"title":"Ajouter un mod\xe8le personnalis\xe9","desc":"Cliquez sur \\"Afficher tous les mod\xe8les\\" -> \\"Ajouter un mod\xe8le personnalis\xe9\\""},"6":{"title":"S\xe9lectionnez le mod\xe8le"}}},"continue":{"steps":{"1":{"title":"Ouvrir la configuration","desc":"Ouvrir le fichier de configuration Continuer"},"2":{"title":"Cl\xe9 API"},"3":{"title":"S\xe9lectionnez le mod\xe8le"},"4":{"title":"Ajouter une configuration de mod\xe8le","desc":"Ajoutez la configuration suivante \xe0 votre tableau models\xa0:"}}},"opencode":{"steps":{"1":{"title":"Install OpenCode","desc":"Install via npm: npm install -g opencode-ai"},"2":{"title":"API Key"},"3":{"title":"Set Base URL","desc":"opencode config set baseUrl {{baseUrl}}"},"4":{"title":"Select Model"}}},"kiro":{"steps":{"1":{"title":"Open Kiro Settings","desc":"Go to Settings → AI Provider"},"2":{"title":"Base URL","desc":"Paste your OmniRoute endpoint URL"},"3":{"title":"API Key"},"4":{"title":"Select Model"}}}}},"combos":{"title":"Combinaisons","description":"Cr\xe9ez des combinaisons de mod\xe8les avec un routage pond\xe9r\xe9 et une prise en charge de secours","createCombo":"Cr\xe9er une combinaison","editCombo":"Modifier la combinaison","deleteCombo":"Supprimer la combinaison","noModels":"Aucun mod\xe8le","noModelsYet":"Aucun mod\xe8le ajout\xe9 pour l\'instant","addModel":"Ajouter un mod\xe8le","addModelToCombo":"Ajouter un mod\xe8le au combo","routingStrategy":"Strat\xe9gie de routage","maxRetries":"Nombre maximal de tentatives","timeout":"D\xe9lai d\'expiration (ms)","healthcheck":"Bilan de sant\xe9","priority":"Priorit\xe9","fallback":"Repli","roundRobin":"Tournoi \xe0 la ronde","random":"Al\xe9atoire","leastLatency":"Moins de latence","comboName":"Nom de la combinaison","comboNamePlaceholder":"mon-combo","deleteConfirm":"Supprimer cette combinaison\xa0?","noCombosYet":"Pas encore de combo","comboCreated":"Combo cr\xe9\xe9 avec succ\xe8s","comboUpdated":"Combo mis \xe0 jour avec succ\xe8s","comboDeleted":"Combinaison supprim\xe9e","failedCreate":"\xc9chec de la cr\xe9ation du combo","failedUpdate":"\xc9chec de la mise \xe0 jour du combo","errorCreating":"Erreur lors de la cr\xe9ation du combo","errorUpdating":"Erreur lors de la mise \xe0 jour du combo","errorDeleting":"Erreur lors de la suppression du combo","testFailed":"La demande de test a \xe9chou\xe9","failedToggle":"Impossible de basculer la combinaison","testResults":"R\xe9sultats des tests — {name}","resolvedBy":"R\xe9solu par\xa0:","more":"+{count} plus","reqs":"demandes","success":"succ\xe8s","proxyConfigured":"Proxy configur\xe9","copyComboName":"Copier le nom du combo","enableCombo":"Activer la combinaison","disableCombo":"D\xe9sactiver la combinaison","testCombo":"Combinaison de tests","duplicate":"Dupliquer","proxyConfig":"Configuration du proxy","nameRequired":"Le nom est requis","nameInvalid":"Uniquement les lettres, chiffres, -, _, / et . autoris\xe9","nameHint":"Lettres, chiffres, -, _, / et . autoris\xe9","priorityDesc":"Repli s\xe9quentiel\xa0: essaie d\'abord le mod\xe8le 1, puis le 2, etc.","weightedDesc":"R\xe9partit le trafic en pourcentage de poids avec repli","roundRobinDesc":"Distribution circulaire : chaque demande va au mod\xe8le suivant en rotation","randomDesc":"S\xe9lection al\xe9atoire uniforme, puis retour aux mod\xe8les restants","leastUsedDesc":"S\xe9lectionne le mod\xe8le avec le moins de demandes, en \xe9quilibrant la charge au fil du temps","costOptimizedDesc":"Itin\xe9raires vers le mod\xe8le le moins cher en premier en fonction du prix","models":"Mod\xe8les","autoBalance":"\xc9quilibre automatique","advancedSettings":"Param\xe8tres avanc\xe9s","retryDelay":"D\xe9lai de nouvelle tentative (ms)","concurrencyPerModel":"Concurrence / Mod\xe8le","queueTimeout":"D\xe9lai d\'expiration de la file d\'attente (ms)","advancedHint":"Laissez vide pour utiliser les valeurs par d\xe9faut globales. Ceux-ci remplacent les param\xe8tres de chaque fournisseur.","moveUp":"Monter","moveDown":"Descendre","removeModel":"Supprimer","saving":"Sauvegarde...","weighted":"Pond\xe9r\xe9","leastUsed":"Le moins utilis\xe9","costOpt":"Option de co\xfbt","strategyGuideTitle":"Comment utiliser cette strat\xe9gie","strategyGuideWhen":"Quand utiliser","strategyGuideAvoid":"A \xe9viter quand","strategyGuideExample":"Exemple","strategyGuide":{"priority":{"when":"Vous avez un mod\xe8le pr\xe9f\xe9r\xe9 et souhaitez uniquement une solution de secours en cas d\'\xe9chec.","avoid":"Vous avez besoin d’une distribution des demandes entre les mod\xe8les.","example":"Mod\xe8le de codage principal avec sauvegarde moins ch\xe8re en cas de panne."},"weighted":{"when":"Vous avez besoin d’un trafic contr\xf4l\xe9 r\xe9parti entre les mod\xe8les.","avoid":"Vous ne pouvez pas maintenir des poids pr\xe9cis au fil du temps.","example":"Mod\xe8le stable \xe0 80 % + d\xe9ploiement du mod\xe8le Canary \xe0 20 %."},"round-robin":{"when":"Vous voulez une distribution pr\xe9visible et uniforme.","avoid":"Les mod\xe8les diff\xe8rent trop en termes de latence ou de co\xfbt.","example":"M\xeame mod\xe8le sur plusieurs comptes pour r\xe9partir le d\xe9bit."},"random":{"when":"Vous souhaitez une distribution simple avec une configuration minimale.","avoid":"Vous avez besoin de garanties de trafic strictes.","example":"Prototypage rapide avec des mod\xe8les \xe9quivalents."},"least-used":{"when":"Vous souhaitez un \xe9quilibrage adaptatif bas\xe9 sur la demande en direct.","avoid":"Le trafic est trop faible pour b\xe9n\xe9ficier d’un \xe9quilibrage des usages.","example":"Charges de travail mixtes o\xf9 un mod\xe8le est souvent surcharg\xe9."},"cost-optimized":{"when":"La r\xe9duction des co\xfbts est votre priorit\xe9 absolue.","avoid":"Les donn\xe9es de tarification sont manquantes ou obsol\xe8tes.","example":"Travaux en arri\xe8re-plan ou par lots pour lesquels un co\xfbt inf\xe9rieur est pr\xe9f\xe9r\xe9."}},"advancedHelp":{"maxRetries":"Combien de tentatives sont tent\xe9es avant l\'\xe9chec d\'une requ\xeate.","retryDelay":"Initial wait between retries. Higher values reduce burst pressure.","timeout":"Maximum request duration before aborting.","healthcheck":"Skips unhealthy models/providers from routing decisions.","concurrencyPerModel":"Max simultaneous requests allowed per model in round-robin.","queueTimeout":"How long a request can wait in queue before timing out."},"templatesTitle":"Quick templates","templatesDescription":"Apply a starting profile, then adjust models and config.","templateApply":"Apply template","templateHighAvailability":"High availability","templateHighAvailabilityDesc":"Priority routing with health checks and safe retries.","templateCostSaver":"Cost saver","templateCostSaverDesc":"Cost-optimized routing for budget-first workloads.","templateBalanced":"Charge \xe9quilibr\xe9e","templateBalancedDesc":"Routage le moins utilis\xe9 pour r\xe9partir la demande dans le temps.","usageGuideHide":"Cacher","usageGuideDontShowAgain":"Ne plus montrer","usageGuideShow":"Afficher le guide","quickTestTitle":"Combo pr\xeat \xe0 valider","quickTestDescription":"Ex\xe9cutez un test maintenant pour confirmer le comportement de repli et de latence.","testNow":"Testez maintenant","pricingCoverage":"Couverture tarifaire","pricingCoverageHint":"Les co\xfbts optimis\xe9s fonctionnent mieux lorsque tous les mod\xe8les combin\xe9s ont des prix.","pricingAvailable":"Tarifs disponibles","pricingMissing":"Pas de prix","pricingAvailableShort":"prix","pricingMissingShort":"sans prix","warningRoundRobinSingleModel":"Le round-robin est plus utile avec au moins 2 mod\xe8les.","warningCostOptimizedPartialPricing":"Seuls {priced} des mod\xe8les {total} ont un prix. Le routage peut \xeatre partiellement ax\xe9 sur les co\xfbts.","warningCostOptimizedNoPricing":"Aucune donn\xe9e de prix trouv\xe9e pour ce combo. Un itin\xe9raire optimis\xe9 en termes de co\xfbts peut \xeatre inattendu.","readinessTitle":"Pr\xeat \xe0 enregistrer ?","readinessDescription":"V\xe9rifie la checklist avant de cr\xe9er ou de mettre \xe0 jour ce combo.","readinessCheckName":"Le nom du combo est valide","readinessCheckModels":"Au moins un mod\xe8le est s\xe9lectionn\xe9","readinessCheckWeights":"Le total des poids est \xe0 100 %","readinessCheckWeightsOptional":"R\xe8gle de pond\xe9ration non requise","readinessCheckPricing":"Les donn\xe9es de prix sont disponibles","readinessCheckPricingOptional":"R\xe8gle de prix non requise","saveBlockedTitle":"L’enregistrement est bloqu\xe9 tant que ces points ne sont pas corrig\xe9s :","saveBlockName":"D\xe9finis un nom pour le combo.","saveBlockModels":"Ajoute au moins un mod\xe8le.","saveBlockWeighted":"Ajuste les pond\xe9rations \xe0 100 % (actuel : {total} %).","saveBlockPricing":"Ajoute un prix pour au moins un mod\xe8le ou choisis une autre strat\xe9gie.","recommendationsLabel":"Configuration recommand\xe9e","applyRecommendations":"Appliquer les recommandations","recommendationsUpdated":"Recommandations mises \xe0 jour pour {strategy}.","recommendationsApplied":"Recommandations appliqu\xe9es \xe0 ce combo.","strategyRecommendations":{"priority":{"title":"Base tol\xe9rante aux pannes","description":"Utilise un mod\xe8le principal et garde une cha\xeene de fallback courte et fiable.","tip1":"Place ton mod\xe8le le plus fiable en premier.","tip2":"Garde 1 \xe0 2 mod\xe8les de secours avec une qualit\xe9 proche.","tip3":"Active des retries s\xfbrs pour absorber les pannes transitoires."},"weighted":{"title":"R\xe9partition de trafic contr\xf4l\xe9e","description":"Id\xe9al pour les d\xe9ploiements canary et les migrations progressives.","tip1":"Commence avec une r\xe9partition prudente comme 90/10.","tip2":"Garde le total \xe0 100 % et auto-\xe9quilibre apr\xe8s chaque changement.","tip3":"Surveille succ\xe8s et latence avant d’augmenter le poids canary."},"round-robin":{"title":"Partage de charge pr\xe9visible","description":"Parfait quand les mod\xe8les sont \xe9quivalents et qu’il faut une distribution stable.","tip1":"Utilise au moins 2 mod\xe8les.","tip2":"D\xe9finis des limites de concurrence pour \xe9viter les pics.","tip3":"Utilise un timeout de file pour \xe9chouer vite en saturation."},"random":{"title":"R\xe9partition rapide avec peu de r\xe9glages","description":"\xc0 utiliser pour une distribution simple sans garanties strictes.","tip1":"Choisis des mod\xe8les avec des profils de latence similaires.","tip2":"Garde les retries actifs pour absorber les \xe9checs al\xe9atoires.","tip3":"\xc0 privil\xe9gier pour l’exp\xe9rimentation, pas pour des SLA stricts."},"least-used":{"title":"\xc9quilibrage adaptatif","description":"Routage vers les mod\xe8les les moins utilis\xe9s pour r\xe9duire les points chauds.","tip1":"Fonctionne mieux avec un trafic continu.","tip2":"Combine avec les health checks pour un \xe9quilibrage plus s\xfbr.","tip3":"Suis l’usage par mod\xe8le pour valider la distribution."},"cost-optimized":{"title":"Routage orient\xe9 budget","description":"Routage vers les mod\xe8les les moins co\xfbteux si les prix sont disponibles.","tip1":"Assure une couverture de prix pour tous les mod\xe8les s\xe9lectionn\xe9s.","tip2":"Garde un fallback de qualit\xe9 pour les prompts difficiles.","tip3":"Id\xe9al pour batch/t\xe2ches de fond o\xf9 le co\xfbt est le KPI principal."}}},"costs":{"title":"Co\xfbts","budget":"Budget","totalCost":"Co\xfbt total","breakdown":"R\xe9partition des co\xfbts","noData":"Aucune donn\xe9e sur les co\xfbts","byModel":"Par mod\xe8le","byProvider":"Par fournisseur"},"endpoint":{"title":"Point de terminaison de l\'API","available":"Points de terminaison disponibles","cloudProxy":"Proxy cloud","disableConfirm":"\xcates-vous s\xfbr de vouloir d\xe9sactiver le proxy cloud\xa0?","baseUrl":"URL de base","apiKeyLabel":"Cl\xe9 API","registeredKeys":"Cl\xe9s enregistr\xe9es","chatCompletions":"Ach\xe8vements des discussions","responses":"R\xe9ponses","listModels":"Liste des mod\xe8les","usingCloudProxy":"Utiliser le proxy cloud","usingLocalServer":"Utiliser un serveur local","machineId":"ID de l\'ordinateur\xa0: {id}...","disableCloud":"D\xe9sactiver le cloud","enableCloud":"Activer le cloud","modelsAcrossEndpoints":"Mod\xe8les {models} sur {endpoints} points de terminaison","chatDesc":"Chat en streaming et sans streaming avec tous les fournisseurs","embeddings":"Int\xe9grations","embeddingsDesc":"Int\xe9grations de texte pour les pipelines de recherche et RAG","imageGeneration":"G\xe9n\xe9ration d\'images","imageDesc":"G\xe9n\xe9rer des images \xe0 partir d\'invites de texte","rerank":"Reclassement","rerankDesc":"Reclasser les documents par pertinence par rapport \xe0 une requ\xeate","audioTranscription":"Transcription audio","audioTranscriptionDesc":"Transcrire des fichiers audio en texte (Whisper)","textToSpeech":"Synth\xe8se vocale","textToSpeechDesc":"Convertir du texte en discours au son naturel","moderations":"Mod\xe9rations","moderationsDesc":"Mod\xe9ration du contenu et classification de s\xe9curit\xe9","responsesDesc":"API Responses d\'OpenAI pour Codex et workflows agentiques avanc\xe9s","listModelsDesc":"Lister tous les mod\xe8les disponibles sur tous les fournisseurs connect\xe9s","settingsApiDesc":"Lire et modifier la configuration d\'OmniRoute via l\'API","settingsApi":"Settings API","categoryCore":"APIs Principales","categoryMedia":"M\xe9dias et Multi-Modal","categoryUtility":"Utilitaires et Gestion","enableCloudTitle":"Activer le proxy cloud","whatYouGet":"Ce que vous obtiendrez","cloudBenefitAccess":"Acc\xe9dez \xe0 votre API depuis n\'importe o\xf9 dans le monde","cloudBenefitShare":"Partagez facilement le point de terminaison avec votre \xe9quipe","cloudBenefitPorts":"Pas besoin d\'ouvrir des ports ou de configurer un pare-feu","cloudBenefitEdge":"R\xe9seau p\xe9riph\xe9rique mondial rapide","cloudSessionNote":"Cloud conservera votre session d\'authentification pendant 1\xa0jour. S\'il n\'est pas utilis\xe9, il sera automatiquement supprim\xe9.","cloudUnstableNote":"Cloud est actuellement instable avec Claude Code OAuth dans certains cas.","cloudConnected":"Proxy Cloud connect\xe9\xa0!","connectingToCloud":"Connexion au cloud...","verifyingConnection":"V\xe9rification de la connexion...","connecting":"Connexion...","verifying":"V\xe9rification...","connected":"Connect\xe9 !","disableCloudTitle":"D\xe9sactiver le proxy cloud","disableWarning":"Toutes les sessions d\'authentification seront supprim\xe9es du cloud.","syncingData":"Synchronisation des derni\xe8res donn\xe9es...","disablingCloud":"D\xe9sactivation du cloud...","syncing":"Synchronisation...","disabling":"D\xe9sactivation...","cloudConnectedVerified":"Cloud Proxy connect\xe9 et v\xe9rifi\xe9\xa0!","connectedVerificationPending":"Connect\xe9\xa0–\xa0v\xe9rification en attente","connectedVerificationPendingWithError":"Connect\xe9 — v\xe9rification en attente\xa0: {error}","cloudDisabledSuccess":"Cloud d\xe9sactiv\xe9 avec succ\xe8s","syncedSuccess":"Synchronis\xe9 avec succ\xe8s","failedDisable":"\xc9chec de la d\xe9sactivation du cloud","failedEnable":"\xc9chec de l\'activation du cloud","cloudRequestTimeout":"Expiration du d\xe9lai de demande cloud","cloudRequestFailed":"La requ\xeate cloud a \xe9chou\xe9","cloudWorkerUnreachable":"Impossible d\'atteindre le travailleur cloud. Assurez-vous que le service cloud est en cours d\'ex\xe9cution (npm run dev dans /cloud).","connectionFailed":"La connexion a \xe9chou\xe9","syncFailed":"\xc9chec de la synchronisation des donn\xe9es cloud","providerModelsTitle":"{provider} — Mod\xe8les","noModelsForProvider":"Aucun mod\xe8le disponible pour ce fournisseur.","chat":"Discuter","embedding":"Int\xe9gration","image":"Images","custom":"personnalis\xe9","modelsCount":"{count, plural, one {# model} other {# models}}","sectionTitle":"Surface d\'int\xe9gration","sectionDescription":"API compatibles OpenAI et points de terminaison du protocole op\xe9rationnel","tabApis":"API compatibles OpenAI","tabProtocols":"Protocoles","tabsAria":"Sections de point de terminaison","protocolsTitle":"Protocoles","protocolsDescription":"MCP et A2A sont des points de terminaison de premi\xe8re classe avec une observabilit\xe9 et des contr\xf4les d\xe9di\xe9s.","mcpCardTitle":"Serveur MCP","mcpCardDescription":"Protocole de contexte de mod\xe8le sur stdio","a2aCardTitle":"Serveur A2A","a2aCardDescription":"Point de terminaison Agent2Agent JSON-RPC","protocolToolsLabel":"Outils","protocolTasksLabel":"T\xe2ches","protocolActiveStreamsLabel":"Flux actifs","protocolLastActivity":"Derni\xe8re activit\xe9","quickStart":"D\xe9marrage rapide","openMcpDashboard":"Gestion MCP ouverte","openA2aDashboard":"Gestion A2A ouverte","mcpQuickStartTitle":"D\xe9marrage rapide MCP","mcpQuickStartStep1":"Ex\xe9cutez le serveur MCP via `omniroute --mcp`.","mcpQuickStartStep2":"Configurez votre client MCP pour vous connecter via le transport stdio.","mcpQuickStartStep3":"Invoquez des outils tels que `omniroute_get_health` et `omniroute_list_combos`.","a2aQuickStartTitle":"D\xe9marrage rapide A2A","a2aQuickStartStep1":"D\xe9couvrez la carte d\'agent sur `/.well-known/agent.json`.","a2aQuickStartStep2":"Envoyez des requ\xeates JSON-RPC \xe0 `POST /a2a` en utilisant `message/send` ou `message/stream`.","a2aQuickStartStep3":"Suivez et contr\xf4lez les t\xe2ches \xe0 l’aide de `tasks/get` et `tasks/cancel`."},"mcpDashboard":{"loading":"Chargement du tableau de bord MCP...","activate":"activer","deactivate":"d\xe9sactiver","confirmSwitchCombo":"Confirmer la combinaison {action} \\"{combo}\\"\xa0?","switchComboFailed":"\xc9chec du changement d\'\xe9tat du combo.","switchComboSuccess":"Combo \\"{combo}\\" mis \xe0 jour.","confirmApplyProfile":"Appliquer le profil de r\xe9silience \xab {profile} \xbb\xa0?","applyProfileFailed":"\xc9chec de l\'application du profil de r\xe9silience.","applyProfileSuccess":"Profil \\"{profile}\\" appliqu\xe9.","confirmResetBreakers":"R\xe9initialiser tous les disjoncteurs\xa0?","resetBreakersFailed":"\xc9chec de la r\xe9initialisation des disjoncteurs.","resetBreakersSuccess":"Les disjoncteurs se r\xe9initialisent.","processStatus":"Statut du processus","online":"En ligne","offline":"Hors ligne","pid":"PID","sessionUptime":"Disponibilit\xe9 de la session","lastHeartbeat":"Dernier battement de coeur","activity24h":"Activit\xe9 (24h)","totalCalls":"Total des appels","successRate":"Taux de r\xe9ussite","avgLatency":"Latence moyenne","topTools":"Meilleurs outils","noToolCalls24h":"Aucun outil n\'a appel\xe9 au cours des derni\xe8res 24 heures.","runtimeDetails":"D\xe9tails d\'ex\xe9cution","transport":"Transports","scopesEnforced":"Port\xe9es appliqu\xe9es","yes":"oui","no":"non","lastCall":"Dernier appel","heartbeatPath":"Heartbeat path","operationalControls":"Contr\xf4les op\xe9rationnels","switchCombo":"Changer de combinaison","inactive":"inactif","active":"actif","activateCombo":"Activer le combo","deactivateCombo":"D\xe9sactiver le combo","applyResilienceProfile":"Appliquer le profil de r\xe9silience","profileAggressive":"agressif","profileBalanced":"\xe9quilibr\xe9","profileConservative":"conservateur","applyProfile":"Appliquer le profil","resetCircuitBreakers":"R\xe9initialiser les disjoncteurs","resetCircuitBreakersHelp":"Efface l’\xe9tat actuel du disjoncteur et les compteurs de pannes pour les fournisseurs.","resetAllBreakers":"R\xe9initialiser tous les disjoncteurs","toolsAndScopes":"Outils et port\xe9es","tableTool":"Outil","tableScopes":"Port\xe9es","tablePhase":"Phase","tableAudit":"V\xe9rification","auditLog":"Journal d\'audit","auditSummary":"Appels\xa0: {total} | page {page} de {totalPages}","allTools":"Tous les outils","allResults":"Tous les r\xe9sultats","success":"Succ\xe8s","failure":"\xc9chec","apiKeyIdPlaceholder":"apiKeyId","loadingAuditEntries":"Loading audit entries...","noAuditEntriesForFilters":"No audit entries found for current filters.","tableTimestamp":"Timestamp","tableDuration":"Duration","tableResult":"Result","tableApiKey":"API key","failed":"failed","previous":"Previous","next":"Next"},"a2aDashboard":{"loading":"Loading A2A dashboard...","confirmCancelTask":"Cancel task {taskId}?","cancelTaskFailed":"\xc9chec de l\'annulation de la t\xe2che.","cancelTaskSuccess":"T\xe2che {taskId} annul\xe9e.","smokeSendFailed":"message/send smoke test failed.","smokeSendSuccessWithTask":"message/send ok (task {taskId}).","smokeSendSuccess":"message/send ok.","smokeStreamFailed":"message/stream smoke test failed.","smokeStreamSuccessWithTask":"message/stream ok (task {taskId}{stateSuffix}).","smokeStreamNoTaskId":"message/stream finished without task id.","health":"Health","ok":"ok","totalTasks":"Total tasks","activeStreams":"Flux actifs","lastTask":"Last task","taskStateOverview":"Task state overview","state":{"submitted":"submitted","working":"working","completed":"completed","failed":"failed","cancelled":"annul\xe9"},"agentCard":"Carte d\'agent","version":"Version","url":"URL","capabilities":"Capacit\xe9s","agentCardNotAvailable":"Carte d\'agent non disponible.","quickValidation":"Validation rapide","quickValidationDescription":"Executes smoke calls through the live `/a2a` endpoint.","runMessageSend":"Run message/send","runMessageStream":"Run message/stream","taskManagement":"Task management","taskSummary":"{total} tasks | page {page} of {totalPages}","allStates":"all","allSkills":"all skills","loadingTasks":"Loading tasks...","noTasksForFilters":"No tasks found for current filters.","tableTask":"Task","tableSkill":"Skill","tableState":"State","tableUpdated":"Updated","tableActions":"Actes","view":"Voir","cancel":"Annuler","previous":"Previous","next":"Next","taskDetail":"D\xe9tail de la t\xe2che","close":"Fermer","metadata":"M\xe9tadonn\xe9es","events":"\xc9v\xe9nements","artifacts":"Artefacts"},"health":{"title":"Sant\xe9 du syst\xe8me","description":"Surveillance en temps r\xe9el de votre instance OmniRoute","healthy":"Sain","degraded":"D\xe9grad\xe9","down":"Vers le bas","uptime":"Temps de disponibilit\xe9","memory":"M\xe9moire","memoryRss":"M\xe9moire (RSS)","heap":"Tas","cpu":"Processeur","database":"Base de donn\xe9es","version":"Version","lastCheck":"Derni\xe8re v\xe9rification","providerHealth":"Sant\xe9 du prestataire","systemMetrics":"M\xe9triques du syst\xe8me","tokenHealth":"Sant\xe9 du jeton","refreshAll":"Actualiser tout","checkNow":"V\xe9rifiez maintenant","loadingHealth":"Chargement des donn\xe9es de sant\xe9...","failedToLoad":"\xc9chec du chargement des donn\xe9es d\'\xe9tat\xa0: {error}","retry":"R\xe9essayer","allOperational":"Tous les syst\xe8mes op\xe9rationnels","issuesDetected":"Probl\xe8mes syst\xe8me d\xe9tect\xe9s","updatedAt":"{time} mis \xe0 jour","latency":"Latence","latencyP50":"p50","latencyP95":"p95","latencyP99":"p99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"Total des demandes","noDataYet":"Aucune donn\xe9e pour l\'instant","promptCache":"Cache d\'invite","entries":"Entr\xe9es","hitRate":"Taux de r\xe9ussite","hitsMisses":"Coups r\xe9ussis / Manqu\xe9s","signatureCache":"Cache de signatures","signatureDefaults":"Valeurs par d\xe9faut","signatureTool":"Outil","signatureFamily":"Famille","signatureSession":"S\xe9ance","recovering":"R\xe9cup\xe9ration","noCBData":"Aucune donn\xe9e sur les disjoncteurs disponible. Faites d\'abord quelques demandes.","providerHealthStatusAria":"\xc9tat de sant\xe9 du prestataire","issuesLabel":"Probl\xe8mes d\xe9tect\xe9s","operational":"Op\xe9rationnel","providers":"Fournisseurs","healthyCount":"{count} en bonne sant\xe9","nodeVersion":"Nœud {version}","failures":"\xc9chec de {count}","failuresPlural":"{count} \xe9checs","lastFailure":"Dernier","rateLimitStatus":"Statut de limite de d\xe9bit","activeLimiters":"{count} limiteur actif","activeLimitersPlural":"{count} limiteurs actifs","queued":"En file d\'attente","queuedCount":"{count} en file d\'attente","running":"courir","runningCount":"{count} en cours d\'ex\xe9cution","ok":"D\'accord","activeLockouts":"Verrouillages actifs","resetConfirm":"R\xe9initialiser tous les disjoncteurs \xe0 l\'\xe9tat sain\xa0? Cela effacera tous les d\xe9comptes d’\xe9checs et restaurera tous les fournisseurs \xe0 l’\xe9tat op\xe9rationnel.","resetAllTitle":"R\xe9initialisez tous les disjoncteurs \xe0 l’\xe9tat sain","resetting":"R\xe9initialisation...","resetAll":"Tout r\xe9initialiser","until":"Jusqu\'au {time}"},"limits":{"title":"Limites et quotas","rateLimit":"Limite de taux","remaining":"Restant","requestsPerMinute":"Requ\xeates/min","tokensPerMinute":"Jetons/min","dailyLimit":"Limite quotidienne"},"logs":{"title":"Journaux","requestLogs":"Journaux de demande","proxyLogs":"Journaux proxy","auditLog":"Journal d\'audit","console":"Console","auditLogDesc":"Actions administratives et \xe9v\xe9nements de s\xe9curit\xe9","loading":"Chargement...","refresh":"Actualiser","filterByAction":"Filtrer par action...","filterByActor":"Filtrer par acteur...","filterEntriesAria":"Filtrer les entr\xe9es du journal d\'audit","filterByActionTypeAria":"Filtrer par type d\'action","filterByActorAria":"Filtrer par acteur","refreshAuditLogAria":"Actualiser le journal d\'audit","tableAria":"Entr\xe9es du journal d\'audit","failedFetchAuditLog":"\xc9chec de la r\xe9cup\xe9ration du journal d\'audit","showing":"Affichage des entr\xe9es {count} (d\xe9calage {offset})","search":"Rechercher","timestamp":"Horodatage","action":"Action","actor":"Acteur","target":"Cible","details":"D\xe9tails","ipAddress":"Adresse IP","notAvailable":"—","noEntries":"Aucune entr\xe9e du journal d\'audit trouv\xe9e","previous":"Pr\xe9c\xe9dent","next":"Suivant"},"onboarding":{"welcome":"Bienvenue","security":"S\xe9curit\xe9","test":"Tester","ready":"Pr\xeat\xa0!","setPassword":"D\xe9finir le mot de passe","addProvider":"Ajoutez votre premier fournisseur","getStarted":"Commencer","skip":"Sauter","skipWizard":"Ignorer compl\xe8tement l\'assistant","skipPassword":"Ignorer la configuration du mot de passe","skipAndContinue":"Passer et continuer","passwordLabel":"Mot de passe","confirmPassword":"Confirmer le mot de passe","enterPassword":"Entrez le mot de passe","confirmPasswordPlaceholder":"Confirmer le mot de passe","passwordsMismatch":"Les mots de passe ne correspondent pas","setupComplete":"Configuration termin\xe9e\xa0!","goToDashboard":"Acc\xe9dez au tableau de bord →","welcomeDesc":"OmniRoute est votre proxy API IA local. Il achemine les requ\xeates vers plusieurs fournisseurs d\'IA avec \xe9quilibrage de charge, basculement et suivi de l\'utilisation.","multiProvider":"Multi-fournisseur","usageTracking":"Suivi de l\'utilisation","apiKeyMgmt":"Gestion des cl\xe9s API","securityDesc":"D\xe9finissez un mot de passe pour prot\xe9ger votre tableau de bord ou ignorez-le pour l\'instant.","providerDesc":"Connectez votre premier fournisseur d\'IA. Vous pourrez en ajouter d’autres plus tard.","apiKeyRequired":"Cl\xe9 API (obligatoire)","customUrlOptional":"URL personnalis\xe9e (facultatif)","testDesc":"V\xe9rifions que la connexion de votre fournisseur fonctionne.","runTest":"Ex\xe9cuter le test de connexion","testingConnection":"Test de connexion...","connectionSuccessful":"Connexion r\xe9ussie\xa0! Votre fournisseur est pr\xeat.","noProviderFound":"Aucun fournisseur trouv\xe9. Vous pourrez en ajouter un depuis le tableau de bord plus tard.","testFailed":"Le test a \xe9chou\xe9, mais vous pourrez le configurer ult\xe9rieurement.","couldNotTest":"Impossible de tester pour le moment. Vous pouvez tester depuis le tableau de bord.","doneDesc":"Vous \xeates pr\xeat\xa0! Votre instance OmniRoute est configur\xe9e et pr\xeate \xe0 proxyer les requ\xeates IA.","yourEndpoint":"Votre point de terminaison\xa0:","continue":"Continuer","retry":"R\xe9essayer","failedSetPassword":"\xc9chec de la d\xe9finition du mot de passe. Essayer \xe0 nouveau.","failedAddProvider":"\xc9chec de l\'ajout du fournisseur. Essayer \xe0 nouveau.","connectionError":"Erreur de connexion. Veuillez r\xe9essayer.","provider":"Fournisseur"},"providers":{"title":"Fournisseurs","addProvider":"Ajouter un fournisseur","editProvider":"Modifier le fournisseur","deleteProvider":"Supprimer le fournisseur","noProviders":"Aucun fournisseur configur\xe9","modelAvailability":"Disponibilit\xe9 du mod\xe8le","accounts":"Comptes","newAccount":"Nouveau compte","deleteConfirm":"\xcates-vous s\xfbr de vouloir supprimer ce fournisseur\xa0?","testing":"Test...","testConnection":"Tester la connexion","testSuccess":"Connexion r\xe9ussie","testFailed":"La connexion a \xe9chou\xe9","available":"Disponible","cooldown":"Temps de recharge","unavailable":"Indisponible","unknown":"Inconnu","oauthLabel":"OAuth","compatibleLabel":"Compatible","chat":"Discuter","responses":"R\xe9ponses","messages":"Messages","oauthProviders":"Fournisseurs OAuth","freeProviders":"Fournisseurs gratuits","apiKeyProviders":"Fournisseurs de cl\xe9s API","compatibleProviders":"Fournisseurs compatibles avec les cl\xe9s API","testAll":"Tout tester","testAllOAuth":"Testez toutes les connexions OAuth","testAllFree":"Testez toutes les connexions gratuites","testAllApiKey":"Testez toutes les connexions de cl\xe9 API","testAllCompatible":"Testez toutes les connexions compatibles","connected":"{count} Connect\xe9","errorCount":"{count} Erreur ({code})","errorCountNoCode":"{count} Erreur","noConnections":"Aucune connexion","disabled":"D\xe9sactiv\xe9","enableProvider":"Activer le fournisseur","disableProvider":"D\xe9sactiver le fournisseur","testResults":"R\xe9sultats des tests","noCompatibleYet":"Aucun fournisseur compatible ajout\xe9 pour le moment","compatibleHint":"Utilisez les boutons ci-dessus pour ajouter des points de terminaison compatibles OpenAI ou Anthropic","addOpenAICompatible":"Ajouter la compatibilit\xe9 OpenAI","addAnthropicCompatible":"Ajouter une compatibilit\xe9 anthropique","addNewProvider":"Ajouter un nouveau fournisseur","backToProviders":"Retour aux fournisseurs","configureNewProvider":"Configurez un nouveau fournisseur d\'IA \xe0 utiliser avec vos applications.","providerLabel":"Fournisseur","selectProvider":"S\xe9lectionnez un fournisseur","selectedProvider":"Fournisseur s\xe9lectionn\xe9","authMethod":"M\xe9thode d\'authentification","apiKeyLabel":"Cl\xe9 API","apiKeyRequired":"La cl\xe9 API est requise","selectProviderRequired":"Veuillez s\xe9lectionner un fournisseur","enterApiKey":"Entrez votre cl\xe9 API","apiKeySecure":"Votre cl\xe9 API sera crypt\xe9e et stock\xe9e en toute s\xe9curit\xe9.","oauth2Connect":"Connectez-vous avec OAuth2","oauth2Label":"OAuth2","oauth2Desc":"Connectez votre compte en utilisant l\'authentification OAuth2.","displayName":"Nom d\'affichage","displayNamePlaceholder":"par exemple, API de production, environnement de d\xe9veloppement","displayNameHint":"Facultatif. Un nom convivial pour identifier cette configuration.","active":"Actif","activeDescription":"Activez ce fournisseur pour l\'utiliser dans vos applications","cancel":"Annuler","createProvider":"Cr\xe9er un fournisseur","failedCreate":"\xc9chec de la cr\xe9ation du fournisseur","errorOccurred":"Une erreur s\'est produite. Veuillez r\xe9essayer.","modelStatus":"Statut du mod\xe8le","allModelsOperational":"Tous les mod\xe8les op\xe9rationnels","modelsWithIssues":"{count}\xa0mod\xe8le(s) pr\xe9sentant des probl\xe8mes","allModelsNormal":"Tous les mod\xe8les r\xe9pondent normalement.","cooldownCleared":"Temps de recharge effac\xe9 pour {model}","failedClearCooldown":"\xc9chec de la suppression du temps de recharge","loadingAvailability":"Chargement de la disponibilit\xe9 du mod\xe8le...","clearCooldown":"Effacer","clearing":"D\xe9gagement...","until":"Jusqu\'au {time}","providerTestFailed":"Le test du fournisseur a \xe9chou\xe9","modeTest":"{mode}Test","passedCount":"{count} r\xe9ussi","failedCount":"{count} a \xe9chou\xe9","testedCount":"{count} test\xe9","millisecondsAbbr":"{value}ms","okShort":"D\'accord","errorShort":"ERREUR","noActiveConnectionsInGroup":"Aucune connexion active trouv\xe9e pour ce groupe.","allTestsPassed":"Tous les tests {total} ont \xe9t\xe9 r\xe9ussis","testSummary":"{passed}/{total} r\xe9ussi, {failed} \xe9chou\xe9","nameLabel":"Nom","prefixLabel":"Pr\xe9fixe","baseUrlLabel":"URL de base","apiTypeLabel":"Type d\'API","prefixHint":"Obligatoire. Pr\xe9fixe unique pour les noms de mod\xe8les.","nameHint":"Obligatoire. Une \xe9tiquette conviviale pour ce nœud.","baseUrlHint":"Obligatoire. URL de base de l’API du fournisseur.","anthropicPrefixPlaceholder":"ac-prod","openaiPrefixPlaceholder":"oc-prod","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"Valider la connexion","validating":"Validation...","connectionValid":"La connexion est valide\xa0!","connectionFailed":"La connexion a \xe9chou\xe9. V\xe9rifiez l\'URL et la cl\xe9.","testKeyLabel":"Cl\xe9 API de test","testKeyPlaceholder":"sk-... (pour validation uniquement)","providerNotFound":"Fournisseur introuvable","deleteConnectionConfirm":"Supprimer cette connexion\xa0?","failedSetAlias":"\xc9chec de la d\xe9finition de l\'alias","failedSaveConnection":"\xc9chec de l\'enregistrement de la connexion","failedSaveConnectionRetry":"\xc9chec de l\'enregistrement de la connexion. Veuillez r\xe9essayer.","failedRetestConnection":"\xc9chec du nouveau test de connexion","deleteCompatibleNodeConfirm":"Supprimer ce nœud compatible {type}\xa0?","anthropicCompatibleDetails":"D\xe9tails compatibles anthropiques","openaiCompatibleDetails":"D\xe9tails compatibles avec OpenAI","messagesApi":"API de messages","responsesApi":"API de r\xe9ponses","chatCompletions":"Ach\xe8vements des discussions","importingModels":"Importation...","importFromModels":"Importer depuis /models","addConnectionToImport":"Ajoutez une connexion pour activer l\'importation.","noModelsConfigured":"Aucun mod\xe8le configur\xe9","connectionCount":"{count} connexion(s)","fetchingModels":"R\xe9cup\xe9ration des mod\xe8les disponibles...","failedFetchModels":"\xc9chec de la r\xe9cup\xe9ration des mod\xe8les","noModelsFound":"Aucun mod\xe8le trouv\xe9","importFailed":"\xc9chec de l\'importation","noNewModelsAdded":"Aucun nouveau mod\xe8le n\'a \xe9t\xe9 ajout\xe9.","adding":"Ajout...","importingModelsTitle":"Importation de mod\xe8les","copyModel":"Copier le mod\xe8le","removeModel":"Supprimer le mod\xe8le","rateLimitProtected":"Prot\xe9g\xe9","rateLimitUnprotected":"Non prot\xe9g\xe9","enableRateLimitProtection":"Cliquez pour activer la protection de limite de d\xe9bit","disableRateLimitProtection":"Cliquez pour d\xe9sactiver la protection de limite de d\xe9bit","productionKey":"Cl\xe9 de production","enterNewApiKey":"Saisissez une nouvelle cl\xe9 API","optional":"Facultatif","anthropicCompatibleName":"Compatible anthropique","openaiCompatibleName":"Compatible avec OpenAI","failedImportModels":"\xc9chec de l\'importation des mod\xe8les","noModelsReturnedFromEndpoint":"Aucun mod\xe8le renvoy\xe9 par le point de terminaison /models.","importingModelsProgress":"Importation de {current} des mod\xe8les {total}...","foundModelsStartingImport":"Mod\xe8les {count} trouv\xe9s. D\xe9marrage de l\'importation...","importingModelById":"Importation de {modelId}...","importSuccessCount":"{count, plural, one {# model} other {# models}} a \xe9t\xe9 import\xe9 avec succ\xe8s\xa0!","noNewModelsAddedExisting":"Aucun nouveau mod\xe8le n\'a \xe9t\xe9 ajout\xe9 (tous existent d\xe9j\xe0).","importDoneCount":"✓ C\'est fait\xa0! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"Une erreur inattendue s\'est produite","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"messages","responsesPath":"r\xe9ponses","chatCompletionsPath":"chat/ach\xe8vements","add":"Ajouter","edit":"Modifier","delete":"Supprimer","anthropic":"Anthropique","openai":"OpenAI","singleConnectionPerCompatible":"Une seule connexion est autoris\xe9e par nœud compatible. Ajoutez un autre nœud si vous avez besoin de plus de connexions.","connections":"Connexions","providerProxyTitleConfigured":"Mandataire du fournisseur\xa0: {host}","configured":"configur\xe9","providerProxyConfigureHint":"Configurer le proxy pour toutes les connexions de ce fournisseur","providerProxy":"Proxy du fournisseur","noConnectionsYet":"Aucune connexion pour l\'instant","addFirstConnectionHint":"Ajoutez votre premi\xe8re connexion pour commencer","addConnection":"Ajouter une connexion","availableModels":"Mod\xe8les disponibles","pageAutoRefresh":"La page s\'actualisera automatiquement...","statusDisabled":"d\xe9sactiv\xe9","statusConnected":"connect\xe9","statusRuntimeIssue":"probl\xe8me d\'ex\xe9cution","statusAuthFailed":"l\'authentification a \xe9chou\xe9","statusRateLimited":"tarif limit\xe9","statusNetworkIssue":"probl\xe8me de r\xe9seau","statusTestUnsupported":"test non pris en charge","statusUnavailable":"indisponible","statusFailed":"\xe9chou\xe9","statusError":"erreur","oauthAccount":"Compte OAuth","errorTypeRuntime":"Ex\xe9cution locale","errorTypeUpstreamAuth":"Authentification en amont","errorTypeMissingCredential":"Identifiant manquant","errorTypeRefreshFailed":"\xc9chec de l\'actualisation","errorTypeTokenExpired":"Jeton expir\xe9","errorTypeRateLimited":"Tarif limit\xe9","errorTypeUpstreamUnavailable":"Amont indisponible","errorTypeNetworkError":"Erreur r\xe9seau","errorTypeTestUnsupported":"Test non pris en charge","errorTypeUpstreamError":"Erreur en amont","proxySourceGlobal":"Mondial","proxySourceProvider":"Fournisseur","proxySourceKey":"Cl\xe9","proxyConfiguredBySource":"Mandataire ({source})\xa0: {host}","autoPriority":"Automatique\xa0: {priority}","proxy":"Procuration","retestAuthentication":"Retester l\'authentification","retest":"Retester","disableConnection":"D\xe9sactiver la connexion","enableConnection":"Activer la connexion","reauthenticateConnection":"R\xe9authentifier cette connexion","proxyConfig":"Configuration du proxy","aliasExistsAlert":"L\'alias \\"{alias}\\" existe d\xe9j\xe0. Veuillez utiliser un mod\xe8le diff\xe9rent ou modifier l\'alias existant.","openRouterAnyModelHint":"OpenRouter prend en charge n\'importe quel mod\xe8le. Ajoutez des mod\xe8les et cr\xe9ez des alias pour un acc\xe8s rapide.","modelIdFromOpenRouter":"ID du mod\xe8le (depuis OpenRouter)","openRouterModelPlaceholder":"anthropique/claude-3-opus","customModels":"Mod\xe8les personnalis\xe9s","customModelsHint":"Ajoutez des ID de mod\xe8le qui ne figurent pas dans la liste par d\xe9faut. Ceux-ci seront disponibles pour le routage.","modelId":"ID du mod\xe8le","customModelPlaceholder":"par ex. gpt-4.5-turbo","loading":"Chargement...","removeCustomModel":"Supprimer le mod\xe8le personnalis\xe9","noCustomModels":"Aucun mod\xe8le personnalis\xe9 ajout\xe9 pour l\'instant.","allSuggestedAliasesExist":"Tous les alias sugg\xe9r\xe9s existent d\xe9j\xe0. Veuillez choisir un autre mod\xe8le ou supprimer les alias conflictuels.","failedSaveCustomModel":"\xc9chec de l\'enregistrement du mod\xe8le personnalis\xe9","modelAddedSuccess":"Mod\xe8le {modelId} ajout\xe9 avec succ\xe8s","failedAddModelTryAgain":"\xc9chec de l\'ajout du mod\xe8le. Veuillez r\xe9essayer.","failedSaveImportedModel":"\xc9chec de l\'enregistrement du mod\xe8le import\xe9 dans la base de donn\xe9es personnalis\xe9e","failedImportModelsTryAgain":"\xc9chec de l\'importation des mod\xe8les. Veuillez r\xe9essayer.","failedRemoveModelFromDatabase":"\xc9chec de la suppression du mod\xe8le de la base de donn\xe9es","modelRemovedSuccess":"Mod\xe8le supprim\xe9 avec succ\xe8s","failedDeleteModelTryAgain":"\xc9chec de la suppression du mod\xe8le. Veuillez r\xe9essayer.","compatibleModelsDescription":"Ajoutez manuellement des mod\xe8les compatibles {type} ou importez-les \xe0 partir du point de terminaison /models.","anthropicCompatibleModelPlaceholder":"claude-3-opus-20240229","openaiCompatibleModelPlaceholder":"gpt-4o","apiKeyValidationFailed":"La validation de la cl\xe9 API a \xe9chou\xe9. Veuillez v\xe9rifier votre cl\xe9 et r\xe9essayer.","addProviderApiKeyTitle":"Ajouter la cl\xe9 API {provider}","checking":"V\xe9rification...","check":"V\xe9rifier","valid":"Valide","invalid":"Invalide","creating":"Cr\xe9ation...","validationChecksAnthropicCompatible":"La validation v\xe9rifie {provider} en v\xe9rifiant la cl\xe9 API.","validationChecksOpenAiCompatible":"La validation v\xe9rifie {provider} via /models sur votre URL de base.","priorityLabel":"Priorit\xe9","saving":"Sauvegarde...","save":"Enregistrer","editConnection":"Modifier la connexion","accountName":"Nom du compte","email":"Courriel","healthCheckMinutes":"Bilan de sant\xe9 (min)","healthCheckHint":"Intervalle d’actualisation proactif des jetons. 0 = d\xe9sactiv\xe9.","failedTestConnection":"\xc9chec du test de connexion","failed":"\xc9chec","leaveBlankKeepCurrentApiKey":"Laissez vide pour conserver la cl\xe9 API actuelle.","editCompatibleTitle":"Modifier {type} Compatible","compatibleBaseUrlHint":"Utilisez l\'URL de base (se terminant par /v1) pour votre API compatible {type}.","apiKeyForCheck":"Cl\xe9 API (pour v\xe9rification)","compatibleProdPlaceholder":"{type} Compatible (Prod)","providerTestTimeout":"Provider test timed out — too many connections to test at once"},"settings":{"title":"Param\xe8tres","general":"G\xe9n\xe9ral","security":"S\xe9curit\xe9","appearance":"Apparence","routing":"Routage","cache":"Cache","resilience":"R\xe9silience","systemPrompt":"Invite syst\xe8me","thinkingBudget":"Penser le budget","proxy":"Procuration","pricing":"Tarifs","storage":"Stockage","policies":"Politiques","ipFilter":"Filtre IP","comboDefaults":"Valeurs par d\xe9faut des combos","fallbackChains":"Cha\xeenes de secours","changePassword":"Changer le mot de passe","enablePassword":"Activer le mot de passe","darkMode":"Mode sombre","lightMode":"Mode lumi\xe8re","systemTheme":"Th\xe8me syst\xe8me","enableCache":"Activer le cache","cacheTTL":"Dur\xe9e de vie du cache","maxCacheSize":"Taille maximale du cache","clearCache":"Vider le cache","cacheHits":"Acc\xe8s au cache","cacheMisses":"Manques de cache","hitRate":"Taux de r\xe9ussite","cacheEntries":"Entr\xe9es du cache","circuitBreaker":"Disjoncteur","retryPolicy":"Politique de nouvelle tentative","maxRetries":"Nombre maximal de tentatives","retryDelay":"D\xe9lai de nouvelle tentative","timeoutMs":"D\xe9lai d\'expiration (ms)","enableSystemPrompt":"Activer l\'invite syst\xe8me","systemPromptText":"Texte d\'invite du syst\xe8me","enableThinking":"Permettre la r\xe9flexion","maxThinkingTokens":"Jetons de r\xe9flexion maximum","enableProxy":"Activer le proxy","proxyUrl":"URL du proxy","pricingRates":"Format des tarifs","currentPricing":"Aper\xe7u des prix actuels","loadingPricing":"Chargement des donn\xe9es de tarification...","noPricing":"Aucune donn\xe9e de prix disponible","input":"Entr\xe9e","output":"Sortie","cached":"En cache","reasoning":"Raisonnement","cacheCreation":"Cr\xe9ation de cache","customPricing":"Tarification personnalis\xe9e","databaseSize":"Taille de la base de donn\xe9es","backupDb":"Base de donn\xe9es de sauvegarde","restoreDb":"Restaurer la base de donn\xe9es","exportData":"Exporter des donn\xe9es","importData":"Importer des donn\xe9es","clearData":"Effacer toutes les donn\xe9es","clearDataConfirm":"Cela supprimera d\xe9finitivement toutes les donn\xe9es. Es-tu s\xfbr?","enableRequestLogs":"Activer les journaux de demandes","logRetention":"Conservation des journaux","ipWhitelist":"Liste blanche IP","ipBlacklist":"Liste noire IP","addIP":"Ajouter une adresse IP","savedSuccessfully":"Param\xe8tres enregistr\xe9s avec succ\xe8s","ai":"IA","advanced":"Avanc\xe9","localMode":"Mode local — Toutes les donn\xe9es stock\xe9es sur votre machine","settingsSectionsAria":"Sections de param\xe8tres","switchThemes":"Basculer entre les th\xe8mes clairs et sombres","themeSelectionAria":"S\xe9lection de th\xe8me","themeLight":"Lumi\xe8re","themeDark":"Sombre","themeSystem":"Syst\xe8me","hideHealthLogs":"Masquer les journaux de contr\xf4le de sant\xe9","hideHealthLogsDesc":"Lorsqu\'il est activ\xe9, supprimez les messages [HealthCheck] dans la console du serveur","themeAccent":"Couleur du th\xe8me","themeAccentDesc":"Choisissez une couleur pr\xe9d\xe9finie ou cr\xe9ez votre propre th\xe8me avec une seule couleur","themeCreate":"Cr\xe9er un th\xe8me","themeCustom":"Th\xe8me personnalis\xe9","themeBlue":"Bleu","themeRed":"Rouge","themeGreen":"Vert","themeViolet":"Violet","themeOrange":"Orange","themeCyan":"Cyan","promptCache":"Cache d\'invite","flushCache":"Vider le cache","flushing":"Rin\xe7age…","size":"Taille","hits":"Clics","evictions":"Expulsions","loadingCacheStats":"Chargement des statistiques du cache…","globalProxy":"Proxy mondial","globalProxyDesc":"Configurez un proxy sortant global pour tous les appels d\'API. Les fournisseurs individuels, les combos et les cl\xe9s peuvent remplacer cela.","noGlobalProxy":"Aucun proxy global configur\xe9","globalLabel":"Mondial","configure":"Configurer","globalSystemPrompt":"Invite syst\xe8me globale","systemPromptDesc":"Inject\xe9 dans toutes les requ\xeates au niveau du proxy","saved":"Enregistr\xe9","systemPromptPlaceholder":"Entrez l\'invite du syst\xe8me pour injecter dans toutes les requ\xeates...","systemPromptHint":"Cette invite est ajout\xe9e au message syst\xe8me de chaque demande. \xc0 utiliser pour les instructions globales, les consignes de s\xe9curit\xe9 ou les r\xe8gles de formatage des r\xe9ponses.","chars":"{count} caract\xe8res","thinkingBudgetTitle":"Penser le budget","thinkingBudgetDesc":"Contr\xf4ler l\'utilisation des jetons de raisonnement IA pour toutes les requ\xeates","passthrough":"Passage","passthroughDesc":"Aucun changement — le client contr\xf4le le budget en pensant","auto":"Automatique","autoDesc":"Supprimez toute configuration de r\xe9flexion - laissez le fournisseur d\xe9cider","custom":"Personnalis\xe9","customDesc":"D\xe9finir un budget de jetons fixe pour toutes les demandes","adaptive":"Adaptatif","adaptiveDesc":"Adaptez le budget en fonction de la complexit\xe9 de la demande","effortNone":"Aucun (0 jeton)","effortLow":"Faible (1 000 jetons)","effortMedium":"Moyen (10 000 jetons)","effortHigh":"\xc9lev\xe9 (128 000 jetons)","tokenBudget":"Budget des jetons","tokens":"jetons","baseEffortLevel":"Niveau d\'effort de base","adaptiveHint":"Le mode adaptatif \xe9volue \xe0 partir de ce niveau de base en fonction du nombre de messages, de l\'utilisation des outils et de la longueur des invites.","requireLogin":"Exiger une connexion","requireLoginDesc":"Lorsqu\'il est activ\xe9, le tableau de bord n\xe9cessite un mot de passe. Lorsqu\'il est d\xe9sactiv\xe9, acc\xe9dez sans connexion.","currentPassword":"Mot de passe actuel","enterCurrentPassword":"Entrez le mot de passe actuel","newPassword":"Nouveau mot de passe","enterNewPassword":"Entrez le nouveau mot de passe","confirmPassword":"Confirmer le nouveau mot de passe","confirmPasswordPlaceholder":"Confirmer le nouveau mot de passe","passwordsNoMatch":"Les mots de passe ne correspondent pas","passwordUpdated":"Mot de passe mis \xe0 jour avec succ\xe8s","failedUpdatePassword":"\xc9chec de la mise \xe0 jour du mot de passe","errorOccurred":"Une erreur s\'est produite","updatePassword":"Mettre \xe0 jour le mot de passe","setPassword":"D\xe9finir le mot de passe","apiEndpointProtection":"Protection des points de terminaison API","requireAuthModels":"Exiger une cl\xe9 API pour /models","requireAuthModelsDesc":"Lorsqu\'il est activ\xe9, le point de terminaison /v1/models renvoie 404 pour les demandes non authentifi\xe9es. Emp\xeache la d\xe9couverte de mod\xe8les par des utilisateurs non autoris\xe9s.","blockedProviders":"Fournisseurs bloqu\xe9s","blockedProvidersDesc":"Masquez les fournisseurs sp\xe9cifiques de la r\xe9ponse /v1/models. Les fournisseurs bloqu\xe9s n\'appara\xeetront pas dans les listes de mod\xe8les.","providersBlocked":"{count} fournisseur(s) bloqu\xe9(s) sur /models","blockProviderTitle":"Bloquer {provider}","unblockProviderTitle":"D\xe9bloquer {provider}","routingStrategy":"Strat\xe9gie de routage","fillFirst":"Remplir d\'abord","fillFirstDesc":"Utiliser les comptes par ordre de priorit\xe9","roundRobin":"Tournoi \xe0 la ronde","roundRobinDesc":"Parcourez tous les comptes","p2c":"P2C","p2cDesc":"Choisissez-en 2 au hasard, utilisez le plus sain","random":"Al\xe9atoire","randomDesc":"Compte al\xe9atoire \xe0 chaque demande","leastUsed":"Le moins utilis\xe9","leastUsedDesc":"Choisissez le compte le moins r\xe9cemment utilis\xe9","costOpt":"Option de co\xfbt","costOptDesc":"Pr\xe9f\xe9rer le compte disponible le moins cher","stickyLimit":"Limite collante","stickyLimitDesc":"Appels par compte avant de changer","modelAliases":"Alias de mod\xe8le","modelAliasesTitle":"Alias de Mod\xe8les","modelAliasesDesc":"Mod\xe8les g\xe9n\xe9riques pour remapper les noms de mod\xe8les • Utilisez * et ?","addCustomAlias":"Ajouter un Alias Personnalis\xe9","deprecatedModelId":"ID du mod\xe8le obsol\xe8te","newModelId":"Nouvel ID de mod\xe8le","customAliases":"Alias Personnalis\xe9s","builtInAliases":"Alias Int\xe9gr\xe9s","backgroundDegradationTitle":"D\xe9gradation des T\xe2ches en Arri\xe8re-plan","backgroundDegradationDesc":"D\xe9tecte automatiquement les t\xe2ches en arri\xe8re-plan (titres, r\xe9sum\xe9s) et redirige vers des mod\xe8les moins chers","enableDegradation":"Activer la D\xe9gradation en Arri\xe8re-plan","enableDegradationHint":"Lorsqu\'activ\xe9, les t\xe2ches en arri\xe8re-plan comme la g\xe9n\xe9ration de titres et les r\xe9sum\xe9s sont redirig\xe9es automatiquement vers des mod\xe8les moins chers","tasksDetected":"T\xe2ches d\xe9tect\xe9es","degradationMap":"Carte de D\xe9gradation des Mod\xe8les","premiumModel":"Mod\xe8le premium","cheapModel":"Mod\xe8le \xe9conomique","detectionPatterns":"Mod\xe8les de D\xe9tection","newPattern":"ex: \\"g\xe9n\xe9rer un titre\\"","aliasPatternPlaceholder":"claude-sonnet-*","aliasTargetPlaceholder":"claude-sonnet-4-20250514","pattern":"Mod\xe8le","targetModel":"Mod\xe8le cible","add":"+ Ajouter","session":"S\xe9ance","sessionDetailsAria":"D\xe9tails de la s\xe9ance","status":"Statut","authenticated":"Authentifi\xe9","guest":"Invit\xe9","loginTime":"Heure de connexion","sessionAge":"\xc2ge de la session","browser":"Navigateur","clearLocalData":"Effacer les donn\xe9es locales","logout":"D\xe9connexion","clearLocalDataConfirm":"Effacer toutes les donn\xe9es locales\xa0? Cela r\xe9initialisera vos pr\xe9f\xe9rences.","unknown":"Inconnu","systemActor":"syst\xe8me","ipAccessControl":"Contr\xf4le d\'acc\xe8s IP","ipAccessControlDesc":"Bloquer ou autoriser des adresses IP sp\xe9cifiques","ipModeDisabled":"D\xe9sactiv\xe9","ipModeBlacklist":"Liste noire","ipModeWhitelist":"Liste blanche","ipModeWhitelistPriority":"Priorit\xe9 WL","addIpAddress":"Ajouter une adresse IP","ipAddressPlaceholder":"192.168.1.0/24 ou 10.0.*.*","block":"+ Bloquer","allow":"+ Autoriser","blocked":"Bloqu\xe9 ({count})","allowed":"Autoris\xe9 ({count})","temporaryBans":"Interdictions temporaires ({count})","minLeft":"{min}m restant","auditLog":"Journal d\'audit","searchAuditLogs":"Rechercher dans les journaux d\'audit...","failedLoadAuditLog":"\xc9chec du chargement du journal d\'audit","noAuditEvents":"Aucun \xe9v\xe9nement d\'audit trouv\xe9","action":"Action","actor":"Acteur","details":"D\xe9tails","time":"Temps","fallbackChainsTitle":"Cha\xeenes de secours","fallbackChainsDesc":"D\xe9finir l\'ordre de secours du fournisseur par mod\xe8le","addChain":"+ Ajouter une cha\xeene","modelName":"Nom du mod\xe8le","modelNamePlaceholder":"claude-sonnet-4-20250514","providersCommaSeparated":"Fournisseurs (s\xe9par\xe9s par des virgules, par ordre de priorit\xe9)","providersCommaSeparatedPlaceholder":"anthropique, openai, g\xe9meaux","createChain":"Cr\xe9er une cha\xeene","noFallbackChains":"Aucune cha\xeene de repli","noFallbackChainsDesc":"Cr\xe9ez une cha\xeene pour d\xe9finir l\'ordre de secours du fournisseur pour un mod\xe8le.","loadingFallbackChains":"Chargement des cha\xeenes de secours...","deleteChainConfirm":"Supprimer la cha\xeene de secours pour \xab {model} \xbb\xa0?","chainCreated":"Cha\xeene cr\xe9\xe9e pour {model}","chainDeleted":"Cha\xeene supprim\xe9e pour {model}","failedCreateChain":"\xc9chec de la cr\xe9ation de la cha\xeene","failedDeleteChain":"\xc9chec de la suppression de la cha\xeene","deleteChain":"Supprimer la cha\xeene","fillModelAndProviders":"Veuillez remplir le nom du mod\xe8le et les fournisseurs","addAtLeastOneProvider":"Ajouter au moins un fournisseur","comboDefaultsTitle":"Valeurs par d\xe9faut des combos","globalComboConfig":"Configuration combin\xe9e globale","defaultStrategy":"Strat\xe9gie par d\xe9faut","defaultStrategyDesc":"Appliqu\xe9 aux nouveaux combos sans strat\xe9gie explicite","comboStrategyAria":"Strat\xe9gie combin\xe9e","priority":"Priorit\xe9","weighted":"Pond\xe9r\xe9","maxRetriesLabel":"Nombre maximal de tentatives","retryDelayLabel":"D\xe9lai de nouvelle tentative (ms)","timeoutLabel":"D\xe9lai d\'expiration (ms)","healthCheck":"Bilan de sant\xe9","healthCheckDesc":"Pr\xe9-v\xe9rifier la disponibilit\xe9 du fournisseur","trackMetrics":"Suivre les m\xe9triques","trackMetricsDesc":"Enregistrer les m\xe9triques de requ\xeate par combo","providerOverrides":"Remplacements du fournisseur","providerOverridesDesc":"Remplacez le d\xe9lai d\'attente et les tentatives par fournisseur. Les param\xe8tres du fournisseur remplacent les valeurs par d\xe9faut globales.","providerMaxRetriesAria":"{provider} tentatives maximales","providerTimeoutAria":"{provider} d\xe9lai d\'expiration ms","removeProviderOverrideAria":"Supprimer le remplacement de {provider}","newProviderNamePlaceholder":"par ex. google, ouvre...","newProviderNameAria":"Nom du nouveau fournisseur","retries":"nouvelles tentatives","ms":"Mme","saveComboDefaults":"Enregistrer les valeurs par d\xe9faut du combo","maxNestingDepth":"Profondeur maximale d\'embo\xeetement","concurrencyPerModel":"Concurrence / Mod\xe8le","queueTimeout":"D\xe9lai d\'expiration de la file d\'attente (ms)","providerProfiles":"Profils de fournisseurs","providerProfilesDesc":"Param\xe8tres de r\xe9silience s\xe9par\xe9s pour les fournisseurs OAuth (bas\xe9s sur la session) et API Key (mesur\xe9s). Les fournisseurs OAuth ont des seuils plus stricts en raison de limites de d\xe9bit plus basses.","oauthProviders":"Fournisseurs OAuth","apiKeyProviders":"Fournisseurs de cl\xe9s API","transientCooldown":"Temps de recharge transitoire","rateLimitCooldown":"Temps de recharge de la limite de d\xe9bit","maxBackoffLevel":"Niveau d\'attente maximum","cbThreshold":"Seuil CB","cbResetTime":"Temps de r\xe9initialisation du CB","rateLimiting":"Limitation du d\xe9bit","rateLimitingDesc":"Les fournisseurs de cl\xe9s API sont automatiquement limit\xe9s en d\xe9bit avec des valeurs par d\xe9faut s\xfbres. Les limites sont apprises \xe0 partir des en-t\xeates de r\xe9ponse et s’adaptent au fil du temps.","defaultSafetyNet":"Filet de s\xe9curit\xe9 par d\xe9faut","rpm":"RPM","minGap":"\xc9cart minimum","maxConcurrent":"Maximum simultan\xe9","activeLimiters":"Limiteurs actifs","noActiveLimiters":"Pas encore de limiteurs de d\xe9bit actifs.","reservoir":"R\xe9servoir","running":"Courir","queued":"En file d\'attente","circuitBreakers":"Disjoncteurs","breakerStateClosed":"Ferm\xe9","breakerStateOpen":"Ouvert","breakerStateHalfOpen":"Mi-ouvert","tripped":"{count} d\xe9clench\xe9","healthy":"{count} en bonne sant\xe9","resetAll":"Tout r\xe9initialiser","noCircuitBreakers":"Aucun disjoncteur n\'est encore actif. Ils sont cr\xe9\xe9s automatiquement lorsque les demandes transitent par le pipeline combo.","failures":"{count} \xe9chec(s)","policiesLocked":"Politiques et identifiants verrouill\xe9s","allOperational":"Tous les syst\xe8mes op\xe9rationnels – pas de verrouillage ni de disjoncteur d\xe9clench\xe9","loadingPolicies":"Chargement des politiques...","lockedIdentifiers":"Identifiants verrouill\xe9s","unlockedIdentifier":"D\xe9bloqu\xe9\xa0: {identifier}","sinceDate":"depuis {date}","forceUnlock":"Forcer le d\xe9verrouillage","unlocking":"D\xe9verrouillage...","failedUnlock":"\xc9chec du d\xe9verrouillage","failedLoadWithStatus":"\xc9chec du chargement\xa0: {status}","failedLoadResilience":"\xc9chec du chargement de l\'\xe9tat de r\xe9silience","saveFailed":"\xc9chec de l\'enregistrement","resetFailed":"\xc9chec de la r\xe9initialisation","loadingResilience":"Chargement de l\'\xe9tat de r\xe9silience...","retry":"R\xe9essayer","systemStorage":"Syst\xe8me et stockage","allDataLocal":"Toutes les donn\xe9es stock\xe9es localement sur votre machine","databasePath":"Chemin de la base de donn\xe9es","exportDatabase":"Exporter la base de donn\xe9es","exportAll":"Exporter tout (.tar.gz)","importDatabase":"Importer la base de donn\xe9es","confirmDbImport":"Confirmer l\'importation de la base de donn\xe9es","confirmDbImportDesc":"Cela remplacera toutes les donn\xe9es actuelles par le contenu de {file}. Une sauvegarde sera cr\xe9\xe9e automatiquement avant l\'importation.","yesImport":"Oui, importer","lastBackup":"Derni\xe8re sauvegarde","noBackupYet":"Pas encore de sauvegarde","backupNow":"Sauvegarder maintenant","backupRestore":"Sauvegarde et restauration","viewBackups":"Afficher les sauvegardes","hide":"Masquer","backupRetentionDesc":"Les instantan\xe9s de la base de donn\xe9es sont cr\xe9\xe9s automatiquement avant la restauration et toutes les 15 minutes lorsque les donn\xe9es changent. R\xe9tention : 24 heures sur 24 + 30 sauvegardes quotidiennes avec rotation intelligente.","loadingBackups":"Chargement des sauvegardes...","noBackupsYet":"Aucune sauvegarde disponible pour le moment. Les sauvegardes seront cr\xe9\xe9es automatiquement lorsque les donn\xe9es changent.","backupsAvailable":"{count} sauvegarde(s) disponible(s)","refresh":"Actualiser","confirm":"Confirmer ?","yes":"Oui","no":"Non","restore":"Restaurer","invalidFileType":"Type de fichier invalide. Seuls les fichiers .sqlite sont accept\xe9s.","exportFailed":"\xc9chec de l\'exportation","exportFailedWithError":"\xc9chec de l\'exportation\xa0: {error}","fullExportFailedWithError":"\xc9chec de l\'exportation compl\xe8te\xa0: {error}","backupCreated":"Sauvegarde cr\xe9\xe9e\xa0: {file}","restoreSuccess":"Restaur\xe9 ! Connexions {connections}, nœuds {nodes}, combos {combos}, cl\xe9s API {apiKeys}.","importSuccess":"Base de donn\xe9es import\xe9e\xa0! Connexions {connections}, nœuds {nodes}, combos {combos}, cl\xe9s API {apiKeys}.","justNow":"juste maintenant","minutesAgo":"il y a {count}m","hoursAgo":"il y a {count}h","daysAgo":"Il y a {count}j","backupReasonManual":"manuel","backupReasonPreRestore":"pr\xe9-restauration","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"Aucun changement depuis la derni\xe8re sauvegarde","backupFailed":"La sauvegarde a \xe9chou\xe9","restoreFailed":"La restauration a \xe9chou\xe9","importFailed":"\xc9chec de l\'importation","errorDuringRestore":"Une erreur s\'est produite lors de la restauration","errorDuringImport":"Une erreur s\'est produite lors de l\'importation","modelPricing":"Prix du mod\xe8le","modelPricingDesc":"Configurer les tarifs par mod\xe8le • Tous les tarifs en jetons\xa0$/1\xa0M","providers":"Fournisseurs","registry":"Registre","priced":"Prix","searchProvidersModels":"Rechercher des fournisseurs ou des mod\xe8les...","showAll":"Afficher tout","noProvidersMatch":"Aucun fournisseur ne correspond \xe0 votre recherche.","howPricingWorks":"Comment fonctionne la tarification","cacheWrite":"\xc9criture du cache","unsaved":"non enregistr\xe9","resetDefaults":"R\xe9initialiser les param\xe8tres par d\xe9faut","saveProvider":"Enregistrer le fournisseur","saving":"Sauvegarde...","model":"Mod\xe8le","models":"mod\xe8les","moreProviders":"{count} autres fournisseurs","withPricing":"avec tarification configur\xe9e","policiesCircuitBreakers":"Politiques et disjoncteurs","activeIssuesDetected":"Probl\xe8mes actifs d\xe9tect\xe9s","off":"D\xe9sactiv\xe9","resetPricingConfirm":"R\xe9initialiser tous les prix de {provider} aux valeurs par d\xe9faut\xa0?","pricingDescInput":"Entr\xe9e\xa0: jetons envoy\xe9s au mod\xe8le","pricingDescOutput":"Sortie\xa0: jetons g\xe9n\xe9r\xe9s","pricingDescCached":"En cache\xa0: entr\xe9e r\xe9utilis\xe9e (~ 50\xa0% du taux d\'entr\xe9e)","pricingDescReasoning":"Raisonnement\xa0:\xa0penser aux jetons (revient \xe0 la sortie)","pricingDescCacheWrite":"Cache Write\xa0: cr\xe9ation d\'entr\xe9es de cache (revient \xe0 Input)","pricingDescFormula":"Co\xfbt = (entr\xe9e \xd7 input_rate) + (output \xd7 output_rate) + (mis en cache \xd7 cached_rate) par million de jetons.","pricingSettingsTitle":"Param\xe8tres de tarification","totalModels":"Total des mod\xe8les","active":"Actif","costCalculation":"Calcul du co\xfbt","costCalculationDesc":"Les co\xfbts sont calcul\xe9s en fonction de l\'utilisation des jetons et des tarifs configur\xe9s pour chaque mod\xe8le.","pricingFormat":"Format de tarification","pricingFormatDesc":"Tous les tarifs sont en jetons $/1M (dollars par million de jetons).","tokenTypes":"Types de jetons","inputTokenDesc":"Jetons d\'invite standard","outputTokenDesc":"Jetons d\'ach\xe8vement/r\xe9ponse","cachedTokenDesc":"Jetons d\'entr\xe9e mis en cache (g\xe9n\xe9ralement 50\xa0% du taux d\'entr\xe9e)","reasoningTokenDesc":"Jetons de raisonnement/r\xe9flexion sp\xe9ciaux (repli au taux de sortie)","cacheCreationTokenDesc":"Jetons utilis\xe9s pour cr\xe9er des entr\xe9es de cache (repli sur le d\xe9bit d\'entr\xe9e)","customPricingNote":"Vous pouvez remplacer le prix par d\xe9faut pour des mod\xe8les sp\xe9cifiques. Les remplacements personnalis\xe9s ont la priorit\xe9 sur les prix d\xe9tect\xe9s automatiquement.","editPricing":"Modifier le prix","viewFullDetails":"Afficher tous les d\xe9tails","themeCoral":"Corail","cliFingerprint":"CLI Fingerprint Matching","cliFingerprintDesc":"Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.","cliFingerprintEnabled":"{count} provider(s) with CLI fingerprint active","enableFingerprintTitle":"Enable fingerprint for {provider}","disableFingerprintTitle":"Disable fingerprint for {provider}"},"translator":{"title":"Traducteur","metaTitle":"Aire de jeux pour traducteurs | OmniRoute","metaDescription":"D\xe9boguer, tester et visualiser les traductions au format API entre les fournisseurs","playgroundTitle":"Terrain de jeu des traducteurs","playground":"Aire de jeux","realtime":"Activit\xe9 de traduction en temps r\xe9el","chatTester":"Testeur de chat","testBench":"Banc d\'essai","liveMonitor":"Moniteur en direct","modeDescriptionPlayground":"Collez n\'importe quel corps de requ\xeate d\'API et voyez comment OmniRoute le traduit entre les formats de fournisseur (OpenAI ↔ Claude ↔ Gemini ↔ API Responses)","modeDescriptionChatTester":"Envoyez de vraies demandes de chat via OmniRoute et inspectez l\'aller-retour complet\xa0: entr\xe9e, demande traduite, r\xe9ponse du fournisseur et sortie traduite.","modeDescriptionTestBench":"Ex\xe9cutez des sc\xe9narios pr\xe9d\xe9finis et comparez la compatibilit\xe9 entre les fournisseurs et les mod\xe8les.","modeDescriptionLiveMonitor":"Regardez les \xe9v\xe9nements de traduction en temps r\xe9el \xe0 mesure que les demandes transitent par OmniRoute.","modeDescriptionFallback":"D\xe9boguez, testez et visualisez comment OmniRoute traduit les requ\xeates API entre les fournisseurs.","recentTranslations":"Traductions r\xe9centes","noTranslations":"Pas encore de traductions","source":"Source","target":"Cible","time":"Temps","model":"Mod\xe8le","status":"Statut","latency":"Latence","totalTranslations":"Traductions totales","successful":"R\xe9ussi","errors":"Erreurs","avgLatency":"Latence moyenne","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"En direct\xa0– Actualisation automatique","paused":"En pause","eventsAppearHint":"Les \xe9v\xe9nements de traduction apparaissent ici \xe0 mesure que les demandes transitent par OmniRoute. Utilisez l\'une de ces m\xe9thodes pour g\xe9n\xe9rer des \xe9v\xe9nements\xa0:","chatTesterTab":"Onglet Testeur de chat","testBenchTab":"Onglet Banc de Test","externalApiCalls":"Appels d\'API externes","ideCliIntegrations":"Int\xe9grations IDE/CLI","inMemoryNote":"Remarque\xa0: Les \xe9v\xe9nements sont stock\xe9s en m\xe9moire et r\xe9initialis\xe9s au red\xe9marrage du serveur.","ok":"D\'accord","errorShort":"ERREUR","formatConverter":"Convertisseur de formats","formatConverterDescription":"Collez ou saisissez un corps de requ\xeate JSON. Le traducteur d\xe9tectera automatiquement le format source et le convertira au format cible. Utilisez-le pour d\xe9boguer la fa\xe7on dont OmniRoute traduit les requ\xeates entre les formats (OpenAI ↔ Claude ↔ Gemini ↔ API Responses).","input":"Entr\xe9e","output":"Sortie","auto":"Automatique","swapFormats":"Changer de format","translateAction":"Traduire","clear":"Effacer","inputPlaceholder":"Collez le corps d\'une demande ici ou s\xe9lectionnez un mod\xe8le ci-dessous...","exampleTemplates":"Exemples de mod\xe8les","exampleTemplatesHint":"— Cliquez pour charger","templateLoadHint":"Le mod\xe8le charge la requ\xeate au format {format}. Modifiez le format source pour charger dans un format diff\xe9rent.","compatibilityTester":"Testeur de compatibilit\xe9","compatibilityReport":"Rapport de compatibilit\xe9","testBenchDescription":"Ex\xe9cutez des sc\xe9narios pr\xe9d\xe9finis (Simple Chat, Tool Calling, etc.) pour v\xe9rifier la traduction et la compatibilit\xe9 des fournisseurs. S\xe9lectionnez un format source et un fournisseur cible, puis ex\xe9cutez tous les tests pour voir un pourcentage de compatibilit\xe9. Utilisez-le pour d\xe9couvrir les fonctionnalit\xe9s qui fonctionnent entre les fournisseurs.","targetProvider":"Fournisseur cible","runAllTests":"Ex\xe9cuter tous les tests","runTest":"Ex\xe9cuter le test","reRun":"R\xe9ex\xe9cuter","running":"Courir...","passed":"r\xe9ussi","failed":"\xe9chou\xe9","passedIconLabel":"✅ R\xe9ussi","chunks":"morceaux","scenarioSimpleChat":"Discussion simple","scenarioToolCalling":"Appel d\'outil","scenarioMultiTurn":"Multi-tours","scenarioThinking":"Penser","scenarioSystemPrompt":"Invite syst\xe8me","scenarioStreaming":"Diffusion en continu","templateNames":{"simple-chat":"Discussion simple","tool-calling":"Appel d\'outil","multi-turn":"Multi-tours","thinking":"Penser","system-prompt":"Invite syst\xe8me","streaming":"Diffusion en continu"},"templateDescriptions":{"simple-chat":"Message texte de base","tool-calling":"Invocation de fonction/outil","multi-turn":"Conversation avec l\'histoire","thinking":"Pens\xe9e/raisonnement \xe9tendu","system-prompt":"Instructions syst\xe8me complexes","streaming":"Demande de streaming SSE"},"templatePayloads":{"simpleChat":{"system":"Vous \xeates un assistant utile.","userGreeting":"Bonjour ! Comment allez-vous aujourd\'hui?"},"toolCalling":{"userWeather":"Quel temps fait-il \xe0 S\xe3o Paulo ?","toolDescription":"Obtenir la m\xe9t\xe9o actuelle pour un emplacement","cityNameDescription":"Nom de la ville"},"multiTurn":{"system":"Vous \xeates assistant de codage.","userInitial":"\xc9crivez une fonction pour trier un tableau en Python.","assistantExample":"Voici une fonction de tri simple\xa0:\\n\\n```python\\ndef sort_array(arr):\\n retour tri\xe9 (arr)\\n```","userFollowUp":"Maintenant, faites-le trier par ordre d\xe9croissant."},"thinking":{"question":"Quelle est la somme des 100 premiers nombres premiers ?"},"systemPrompt":{"systemInstruction":"Vous \xeates un ing\xe9nieur logiciel senior sp\xe9cialis\xe9 dans les syst\xe8mes distribu\xe9s. R\xe9pondez aux questions de mani\xe8re concise en utilisant les meilleures pratiques de l’industrie. Fournissez toujours des exemples de code lorsque cela est pertinent. Formatez vos r\xe9ponses en utilisant le markdown.","question":"Comment mettre en œuvre un mod\xe8le de disjoncteur\xa0?"},"streaming":{"prompt":"Racontez-moi une courte histoire sur un robot qui apprend \xe0 peindre."}},"openaiCompatibleLabel":"Compatible avec OpenAI","anthropicCompatibleLabel":"Compatible anthropique","noTemplateForFormat":"Aucun mod\xe8le pour ce format","translationFailed":"\xc9chec de la traduction\xa0: {error}","pipelineDebugger":"D\xe9bogueur de pipeline","translationPipeline":"Pipeline de traduction","pipelineVisualization":"Visualisation des pipelines","pipelineVisualizationHint":"Envoyez un message pour voir comment votre demande passe par la d\xe9tection → traduction → appel du fournisseur.","chatTesterDescription":"Envoyez des messages dans un format client sp\xe9cifique et inspectez chaque \xe9tape du pipeline de traduction.","chatTesterFlow":"Demande client → D\xe9tection de format → OpenAI Interm\xe9diaire → Format du fournisseur → R\xe9ponse","clickStepToInspect":"Cliquez sur n’importe quelle \xe9tape pour inspecter les donn\xe9es \xe0 ce stade.","clientFormat":"Format client","provider":"Fournisseur","modelPlaceholder":"S\xe9lectionnez ou saisissez un nom de mod\xe8le...","sendMessageToSeePipeline":"Envoyez un message pour voir le pipeline de traduction","chatMessageHintPrefix":"Votre message sera format\xe9 comme un","chatMessageHintSuffix":"demande, traduite via le pipeline et envoy\xe9e au fournisseur s\xe9lectionn\xe9.","youWithFormat":"Vous ({format})","assistant":"Assistante","typeMessage":"Tapez un message...","send":"Envoyer","clientRequest":"Demande du client","clientRequestDescription":"Le corps de la requ\xeate tel que votre client l\'enverrait","formatDetected":"Format d\xe9tect\xe9","formatDetectedDescription":"OmniRoute d\xe9tecte automatiquement le format de l\'API \xe0 partir de la structure de la demande","openaiIntermediate":"Interm\xe9diaire OpenAI","openaiIntermediateDescription":"Tous les formats sont d\'abord normalis\xe9s au format OpenAI (le pont universel)","providerFormat":"Format du fournisseur","providerFormatDescription":"Le format OpenAI est traduit au format natif du fournisseur","providerResponse":"R\xe9ponse du fournisseur","providerResponseRawDescription":"La r\xe9ponse brute de l\'API du fournisseur","providerResponseSseDescription":"Le flux SSE brut de l\'API du fournisseur","unexpectedError":"Une erreur inattendue s\'est produite","error":"Erreur","errorMessage":"Erreur\xa0: {message}","requestFailed":"La demande a \xe9chou\xe9","noTextExtracted":"(Aucun texte extrait)","liveMonitorDescriptionPrefix":"Affiche les \xe9v\xe9nements de traduction lorsque les appels d\'API transitent par OmniRoute. Les \xe9v\xe9nements proviennent du tampon en m\xe9moire (r\xe9initialisation au red\xe9marrage). Utiliser","liveMonitorDescriptionSuffix":", ou des appels d\'API externes pour g\xe9n\xe9rer des \xe9v\xe9nements."},"usage":{"title":"Utilisation","loggerTab":"Enregistreur","proxyTab":"Procuration","budgetManagement":"Gestion budg\xe9taire","budgetSaved":"Limites budg\xe9taires enregistr\xe9es","budgetSaveFailed":"\xc9chec de la sauvegarde du budget","loadingBudgetData":"Chargement des donn\xe9es budg\xe9taires...","noApiKeysTitle":"Aucune cl\xe9 API","noApiKeysDescription":"Ajoutez d\'abord des cl\xe9s API pour d\xe9finir des limites budg\xe9taires.","apiKey":"Cl\xe9 API","todaysSpend":"D\xe9penses du jour","thisMonth":"Ce mois-ci","setLimits":"Fixer des limites","dailyLimitUsd":"Limite quotidienne (USD)","monthlyLimitUsd":"Limite mensuelle (USD)","warningThresholdPercent":"Seuil d\'avertissement (%)","dailyLimitPlaceholder":"par ex. 5h00","monthlyLimitPlaceholder":"par ex. 50.00","warningThresholdPlaceholder":"80","saveLimits":"Enregistrer les limites","budgetOk":"Budget OK — {remaining} restant","budgetExceeded":"Budget d\xe9pass\xe9\xa0: les demandes peuvent \xeatre bloqu\xe9es","totalRequests":"Total des demandes","noDataYet":"Aucune donn\xe9e pour l\'instant","latency":"Latence","latencyP50":"p50","latencyP95":"p95","latencyP99":"p99","promptCache":"Cache d\'invite","systemHealth":"Sant\xe9 du syst\xe8me","entries":"Entr\xe9es","activeCount":"{count} actif","openCircuitBreakersDetected":"Disjoncteurs ouverts d\xe9tect\xe9s","hitRate":"Taux de r\xe9ussite","hitsMisses":"Coups r\xe9ussis / Manqu\xe9s","circuitBreakers":"Disjoncteurs","lockedIPs":"IP verrouill\xe9es","lockoutsAutoRefreshHint":"Verrouillage de la limite de d\xe9bit par mod\xe8le • Actualisation automatique toutes les 10\xa0s","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} restant","howItWorks":"Comment \xe7a marche","howItWorksSubtitle":"D\xe9couvrez comment les \xe9valuations valident vos r\xe9ponses LLM","define":"D\xe9finir","defineStepDescription":"Cr\xe9ez des sc\xe9narios de test avec des invites de saisie et des crit\xe8res de sortie attendus \xe0 l\'aide de strat\xe9gies telles que le contenu, l\'expression r\xe9guli\xe8re ou la correspondance exacte.","run":"Courir","runStepDescription":"Ex\xe9cutez des cas de test sur vos points de terminaison LLM via OmniRoute. Chaque cas est envoy\xe9 comme une v\xe9ritable requ\xeate API.","evaluate":"\xc9valuer","evaluateStepDescription":"Les r\xe9ponses sont compar\xe9es aux crit\xe8res attendus. Voir r\xe9ussite/\xe9chec pour chaque cas avec des mesures de latence et des commentaires d\xe9taill\xe9s.","evalSuites":"Suites d\'\xe9valuation","evalSuitesHint":"Cliquez sur une suite pour afficher les cas de test, puis ex\xe9cutez-la pour \xe9valuer vos points de terminaison LLM.","evalsLoading":"Chargement des suites d\'\xe9valuation...","noEvalSuitesFound":"Aucune suite d\'\xe9valuation trouv\xe9e","noEvalSuitesDescription":"Les suites d\'\xe9valuation peuvent \xeatre d\xe9finies via l\'API ou dans le code. Ils testent les sorties du mod\xe8le par rapport aux r\xe9sultats attendus \xe0 l\'aide de strat\xe9gies telles que le contenu, l\'expression r\xe9guli\xe8re, la correspondance exacte et les fonctions personnalis\xe9es.","columnCase":"Cas","columnStatus":"Statut","columnLatency":"Latence","columnDetails":"D\xe9tails","columnModel":"Mod\xe8le","columnStrategy":"Strat\xe9gie","columnExpected":"Attendu","statsSuites":"Suites","statsTestCases":"Cas de test","statsModels":"Mod\xe8les","statsCoverage":"Couverture","statsStrategiesCount":"Strat\xe9gies {count}","evaluationStrategies":"Strat\xe9gies d\'\xe9valuation","modelsUnderTest":"Mod\xe8les en test","searchSuitesPlaceholder":"Rechercher des suites...","passSuffix":"passer","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"Ex\xe9cuter l\'\xe9valuation","runningProgress":"Ex\xe9cution de {current}/{total}...","passRate":"taux de r\xe9ussite","summaryBreakdown":"{passed} r\xe9ussi \xb7 {failed} \xe9chou\xe9 \xb7 {total} total","passedIconLabel":"✅ R\xe9ussi","failedIconLabel":"❌ \xc9chec","detailsContains":"Contient\xa0: \\"{term}\\"","detailsRegex":"Expression r\xe9guli\xe8re\xa0: {pattern}","detailsExpected":"Attendu\xa0: \\"{expected}\\"","noResultsYet":"Aucun r\xe9sultat pour l\'instant","testCasesCount":"Cas de test ({count})","noTestCasesDefined":"Aucun cas de test d\xe9fini","runEvalHint":"Cliquez sur \xab\xa0Ex\xe9cuter l\'\xe9valuation\xa0\xbb pour ex\xe9cuter tous les cas sur votre point de terminaison LLM. Chaque test envoie une requ\xeate r\xe9elle via OmniRoute.","notifyNoTestCases":"Aucun cas de test d\xe9fini pour cette suite","notifyAllCasesPassed":"Tous les {total} cas ont \xe9t\xe9 r\xe9ussis ✅","notifySomeCasesFailed":"{passed}/{total} r\xe9ussi, {failed} \xe9chou\xe9","notifyEvalRunFailed":"\xc9chec de l\'ex\xe9cution de l\'\xe9valuation","notifyEvalTitle":"\xc9valuation\xa0: {name}","modelEvals":"\xc9valuations de mod\xe8les","evalsHeroDescription":"Testez et validez vos points de terminaison LLM en ex\xe9cutant des suites d\'\xe9valuation pr\xe9d\xe9finies. Chaque suite contient des cas de test qui envoient des invites r\xe9elles via OmniRoute et comparent les r\xe9ponses aux crit\xe8res attendus, vous aidant ainsi \xe0 d\xe9tecter les r\xe9gressions, \xe0 comparer les mod\xe8les et \xe0 garantir la qualit\xe9 des r\xe9ponses entre les fournisseurs.","qualityValidation":"Validation de la qualit\xe9","modelComparison":"Comparaison des mod\xe8les","regressionDetection":"D\xe9tection de r\xe9gression","latencyBenchmarks":"Benchmarks de latence","modelLockouts":"Mod\xe8les de verrouillage","noLockouts":"Aucun mod\xe8le actuellement verrouill\xe9","activeSessions":"S\xe9ances actives","noSessions":"Aucune session active","sessionsHint":"Les sessions apparaissent au fur et \xe0 mesure que les demandes transitent par le proxy","sessionsTrackedHint":"Suivi via une demande d\'empreinte digitale • Actualisation automatique 5\xa0s","session":"S\xe9ance","age":"\xc2ge","requests":"Demandes","connection":"Connexion","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}s","durationMinutesShort":"{value}m","durationHoursShort":"{value}h","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"Limites du fournisseur","noProviders":"Aucun fournisseur connect\xe9","connectProvidersForQuota":"Connectez-vous aux fournisseurs avec OAuth pour suivre les limites de quota et l\'utilisation de vos API.","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"(filtr\xe9 \xe0 partir de {count})","autoRefresh":"Actualisation automatique","refreshAll":"Actualiser tout","loadingQuotas":"Chargement...","account":"Compte","modelQuotas":"Quotas de mod\xe8les","lastUsed":"Derni\xe8re utilisation","actions":"Actions","refreshQuota":"Actualiser le quota","today":"Aujourd\'hui","tomorrow":"Demain","dayTimeFormat":"{day}, {time}","inDuration":"dans {duration}","notApplicable":"N/D","rawPlanWithValue":"Plan brut\xa0: {plan}","noPlanFromProvider":"Aucun plan du fournisseur","noQuotaData":"Aucune donn\xe9e de quota","noQuotaDataAvailable":"Aucune donn\xe9e de quota disponible","noAccountsForTierFilter":"Aucun compte trouv\xe9 pour le filtre de niveau","tierAll":"Tout","tierEnterprise":"Entreprise","tierTeam":"\xc9quipe","tierBusiness":"Affaires","tierUltra":"Ultra","tierPro":"Pro","tierPlus":"Plus","tierFree":"Gratuit","tierUnknown":"Inconnu"},"modals":{"waitingAuth":"En attente d\'autorisation","verificationUrl":"URL de v\xe9rification","yourCode":"Votre code","remoteAccess":"Acc\xe8s \xe0 distance\xa0:","connectedSuccess":"Connect\xe9 avec succ\xe8s\xa0!","connectionFailed":"\xc9chec de la connexion","chooseAuthMethod":"Choisissez votre m\xe9thode d\'authentification\xa0:","awsBuilderId":"ID du constructeur AWS","awsIamIdentity":"Centre d\'identit\xe9 AWS IAM","googleAccount":"Compte Google","githubAccount":"Compte GitHub","importToken":"Jeton d\'importation","pasteToken":"Collez le jeton d\'actualisation de Kiro IDE.","awsRegion":"R\xe9gion AWS","autoDetecting":"Jetons \xe0 d\xe9tection automatique...","readingFromCache":"Lecture \xe0 partir du cache AWS SSO","readingFromCursor":"Lecture \xe0 partir de la base de donn\xe9es Cursor IDE","initializing":"Initialisation...","pricingConfig":"Configuration des prix","loadingPricing":"Chargement des donn\xe9es de tarification...","pricingRatesFormat":"Format des tarifs","noPricingData":"Aucune donn\xe9e de prix disponible","noModelsFound":"Aucun mod\xe8le trouv\xe9"},"loggers":{"allProviders":"Tous les fournisseurs","allModels":"Tous les mod\xe8les","allAccounts":"Tous les comptes","allApiKeys":"Toutes les cl\xe9s API","allTypes":"Tous types","allLevels":"Tous les niveaux","modelAZ":"Mod\xe8le A-Z","modelZA":"Mod\xe8le ZA","loadingLogs":"Chargement des journaux...","loadingProxyLogs":"Chargement des journaux proxy...","noLogEntries":"Aucune entr\xe9e de journal trouv\xe9e","noPayloadData":"Aucune donn\xe9e utile disponible pour cette entr\xe9e de journal.","proxyEvent":"\xc9v\xe9nement proxy","proxy":"Procuration","level":"Niveau","directNative":"Direct (natif)","combo":"Combo","inputTokens":"Moi :","outputTokens":"O\xa0:"},"stats":{"usageOverview":"Aper\xe7u de l\'utilisation","outputTokens":"Jetons de sortie","totalCost":"Co\xfbt total","usageByModel":"Utilisation par mod\xe8le","usageByAccount":"Utilisation par compte","failedToLoad":"\xc9chec du chargement des statistiques d\'utilisation.","tokenHealth":"Sant\xe9 du jeton","totalOAuth":"OAuth total","healthy":"Sain","warning":"Avertissement","errored":"Erreur","lastCheck":"Derni\xe8re v\xe9rification","noData":"Aucune donn\xe9e","share":"Partager","unableToLoad":"Impossible de charger les m\xe9triques du syst\xe8me","product":"Produit","resources":"Ressources","company":"Entreprise"},"auth":{"welcome":"Bienvenue","signIn":"Connectez-vous","enterPassword":"Entrez votre mot de passe pour continuer","password":"Mot de passe","unifiedProxy":"Proxy API IA unifi\xe9","unifiedAiApiProxy":"Proxy API IA unifi\xe9","unifiedAiApiProxyDesc":"Acheminez les requ\xeates vers plusieurs fournisseurs d’IA via un seul point de terminaison. \xc9quilibrage de charge, basculement et suivi de l\'utilisation int\xe9gr\xe9s.","passwordNotEnabled":"La protection par mot de passe n\'est pas activ\xe9e","loading":"Chargement...","invalidPassword":"Mot de passe invalide","errorOccurredRetry":"Une erreur s\'est produite. Veuillez r\xe9essayer.","configureInstance":"Configureons votre instance OmniRoute","runOnboardingWizard":"Ex\xe9cutez l\'assistant d\'onboarding pour configurer votre mot de passe et connecter votre premier fournisseur d\'IA.","startOnboarding":"Commencer l\'int\xe9gration","secureYourInstance":"S\xe9curisez votre instance","setPasswordDescription":"D\xe9finissez un mot de passe pour prot\xe9ger votre tableau de bord et s\xe9curiser vos points de terminaison d\'API contre tout acc\xe8s non autoris\xe9.","configurePassword":"Configurer le mot de passe","continue":"Continuer","windowWillClose":"Cette fen\xeatre se fermera automatiquement...","closeTabNow":"Vous pouvez fermer cet onglet maintenant.","copyUrlManual":"Copiez l\'URL depuis la barre d\'adresse et collez-la dans l\'application.","accessDeniedDescription":"Vous n\'\xeates pas autoris\xe9 \xe0 acc\xe9der \xe0 cette ressource. V\xe9rifiez votre cl\xe9 API ou contactez l\'administrateur.","goToDashboard":"Aller au tableau de bord","featureMultiProviderTitle":"Multi-fournisseur","featureMultiProviderDesc":"OpenAI, Anthropic, Google et plus","featureLoadBalancingTitle":"\xc9quilibrage de charge","featureLoadBalancingDesc":"Distribuez intelligemment les demandes","featureUsageTrackingTitle":"Suivi de l\'utilisation","featureUsageTrackingDesc":"Surveiller les co\xfbts et les jetons","resetPassword":"R\xe9initialiser le mot de passe","resetDescription":"Choisissez une m\xe9thode pour r\xe9cup\xe9rer l\'acc\xe8s \xe0 votre tableau de bord","stopServer":"Arr\xeatez le serveur OmniRoute","processing":"Traitement...","pleaseWait":"Veuillez patienter pendant que nous finalisons l\'autorisation.","authSuccess":"Autorisation r\xe9ussie\xa0!","copyUrl":"Copiez cette URL","accessDenied":"Acc\xe8s refus\xe9","methodCliTitle":"M\xe9thode 1\xa0:\xa0r\xe9initialisation de la CLI","methodCliDescription":"Ex\xe9cutez la commande suivante sur le serveur sur lequel OmniRoute est ex\xe9cut\xe9\xa0:","methodCliHint":"Cela vous demandera de d\xe9finir un nouveau mot de passe. Le serveur doit d\'abord \xeatre arr\xeat\xe9.","methodManualTitle":"M\xe9thode 2\xa0:\xa0r\xe9initialisation manuelle","methodManualDescription":"Supprimez le mot de passe de la base de donn\xe9es et d\xe9finissez-en un nouveau au d\xe9marrage\xa0:","setPasswordInYour":"D\xe9finissez un nouveau mot de passe dans votre","fileLabelSuffix":"fichier :","newPasswordPlaceholder":"votre_nouveau_mot_de_passe","deleteSettingsFile":"Supprimer","orRemovePasswordHashField":"ou supprimez le champ passwordHash","restartServerWithNewPassword":"Red\xe9marrez le serveur - il utilisera le nouveau mot de passe","backToLogin":"Retour \xe0 la connexion","forgotPassword":"Mot de passe oubli\xe9 ?"},"landing":{"brandName":"OmniRoute","navigateHome":"Acc\xe9dez \xe0 la maison","toggleMenu":"Changer de menu","featuresLink":"Caract\xe9ristiques","docsLink":"Documents","github":"GitHub","versionLive":"La v1.0 est maintenant disponible","oneEndpoint":"Un point de terminaison pour","allProviders":"Tous les fournisseurs d\'IA","heroDescription":"Proxy de point de terminaison IA avec tableau de bord Web\xa0: un port JavaScript de CLIProxyAPI. Fonctionne de mani\xe8re transparente avec Claude Code, OpenAI Codex, Cline, RooCode et d\'autres outils CLI.","getStarted":"Commencer","viewOnGithub":"Voir sur GitHub","powerfulFeatures":"Fonctionnalit\xe9s puissantes","featuresSubtitle":"Tout ce dont vous avez besoin pour g\xe9rer votre infrastructure d\'IA en un seul endroit, con\xe7u pour \xe9voluer.","featureUnifiedEndpointTitle":"Point de terminaison unifi\xe9","featureUnifiedEndpointDesc":"Acc\xe9dez \xe0 tous les fournisseurs via une seule URL API standard.","featureEasySetupTitle":"Installation facile","featureEasySetupDesc":"Soyez op\xe9rationnel en quelques minutes avec la commande npx.","featureModelFallbackTitle":"Mod\xe8le de secours","featureModelFallbackDesc":"Changez automatiquement de fournisseur en cas de panne ou de latence \xe9lev\xe9e.","featureUsageTrackingTitle":"Suivi de l\'utilisation","featureUsageTrackingDesc":"Analyses d\xe9taill\xe9es et surveillance des co\xfbts sur tous les mod\xe8les.","featureOAuthApiKeysTitle":"Cl\xe9s OAuth et API","featureOAuthApiKeysDesc":"G\xe9rez en toute s\xe9curit\xe9 les informations d’identification dans un seul coffre-fort.","featureCloudSyncTitle":"Synchronisation dans le cloud","featureCloudSyncDesc":"Synchronisez instantan\xe9ment vos configurations sur tous les appareils.","featureCliSupportTitle":"Prise en charge de l\'interface CLI","featureCliSupportDesc":"Fonctionne avec Claude Code, Codex, Cline, Cursor et plus encore.","featureDashboardTitle":"Tableau de bord","featureDashboardDesc":"Tableau de bord visuel pour une analyse du trafic en temps r\xe9el.","howItWorks":"Comment fonctionne OmniRoute","howItWorksDescription":"Les donn\xe9es circulent de mani\xe8re transparente depuis votre application via notre couche de routage intelligente jusqu\'au meilleur fournisseur pour le travail.","howItWorksStep1Title":"1. CLI et SDK","howItWorksStep1Description":"Vos demandes partent de vos outils pr\xe9f\xe9r\xe9s ou de notre SDK unifi\xe9. Changez simplement l\'URL de base.","howItWorksStep2Title":"2. Centre OmniRoute","howItWorksStep2Description":"Notre moteur analyse l\'invite, v\xe9rifie l\'\xe9tat du fournisseur et trace les itin\xe9raires pour obtenir la latence ou le co\xfbt le plus faible.","howItWorksStep3Title":"3. Fournisseurs d\'IA","howItWorksStep3Description":"La demande est satisfaite instantan\xe9ment par OpenAI, Anthropic, Gemini ou autres.","getStartedIn30Seconds":"Commencez en 30 secondes","getStartedDescription":"Installez OmniRoute, configurez vos fournisseurs via le tableau de bord Web et commencez \xe0 acheminer les demandes d\'IA.","installOmniRoute":"Installer OmniRoute","installStepDescription":"Ex\xe9cutez la commande npx pour d\xe9marrer le serveur instantan\xe9ment","openDashboard":"Ouvrir le tableau de bord","openDashboardStepDescription":"Configurer les fournisseurs et les cl\xe9s API via l\'interface Web","routeRequests":"Demandes d\'itin\xe9raire","routeRequestsStepDescription":"Pointez vos outils CLI vers {endpoint}","terminal":"borne","copy":"Copier","copied":"✓ Copi\xe9","startingOmniRoute":"D\xe9marrage d\'OmniRoute...","serverRunningOnLabel":"Serveur fonctionnant sur","dashboardLabel":"Tableau de bord","readyToRoute":"Pr\xeat \xe0 rouler\xa0! ✓","configureProvidersNote":"\uD83D\uDCDD Configurez les fournisseurs dans le tableau de bord ou utilisez des variables d\'environnement","dataLocation":"Emplacement des donn\xe9es\xa0:","dataLocationMacLinux":" macOS/Linux\xa0:","dataLocationWindows":" Fen\xeatres\xa0:","product":"Produit","dashboardLink":"Tableau de bord","changelog":"Journal des modifications","resources":"Ressources","documentation":"Documentation","npm":"MNP","legal":"Juridique","mitLicense":"Licence MIT","footerTagline":"Le point de terminaison unifi\xe9 pour la g\xe9n\xe9ration d’IA. Connectez, acheminez et g\xe9rez vos fournisseurs d\'IA en toute simplicit\xe9.","copyright":"\xa9 {year} OmniRoute. Tous droits r\xe9serv\xe9s.","flowToolClaudeCode":"Claude Code","flowToolOpenAICodex":"Codex OpenAI","flowToolCline":"Clin","flowToolCursor":"Curseur","flowProviderOpenAI":"OpenAI","flowProviderAnthropic":"Anthropique","flowProviderGemini":"G\xe9meaux","flowProviderGithubCopilot":"Copilote GitHub","interactiveDiagram":"Diagramme interactif visible sur le bureau","ctaTitle":"Pr\xeat \xe0 simplifier votre infrastructure d\'IA\xa0?","ctaDescription":"Rejoignez les d\xe9veloppeurs qui rationalisent leurs int\xe9grations d\'IA avec OmniRoute. Open source et d\xe9marrage gratuit.","startFree":"Commencez gratuitement","readDocumentation":"Lire la documentation"},"docs":{"title":"Documentation","quickStart":"D\xe9marrage rapide","features":"Caract\xe9ristiques","supportedProviders":"Fournisseurs pris en charge","supportedProvidersToc":"Fournisseurs","commonUseCases":"Cas d\'utilisation courants","clientCompatibility":"Compatibilit\xe9 client","protocolsToc":"Protocoles","apiReference":"R\xe9f\xe9rence API","method":"M\xe9thode","path":"Chemin","notes":"Remarques","modelPrefixes":"Pr\xe9fixes de mod\xe8le","prefix":"Pr\xe9fixe","troubleshooting":"D\xe9pannage","supportsChat":"Prend en charge les points de terminaison de chat et de r\xe9ponses.","oauthAutoRefresh":"Connexion OAuth avec actualisation automatique des jetons.","fullStreaming":"Prise en charge compl\xe8te du streaming pour tous les mod\xe8les.","docsLabel":"Documents","docsHeroDescription":"Passerelle IA pour les LLM multi-fournisseurs. Un point de terminaison pour OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor et plus de 20 autres fournisseurs.","openDashboard":"Ouvrir le tableau de bord","endpointPage":"Page de point de terminaison","github":"GitHub","reportIssue":"Signaler un probl\xe8me","onThisPage":"Sur cette page","documentationVersion":"Documentation-v{version}","quickStartStep1Title":"1. Installez et ex\xe9cutez","quickStartStep1Prefix":"Courir","quickStartStep1Middle":"ou clonez depuis GitHub et ex\xe9cutez","quickStartStep2Title":"2. Cr\xe9er une cl\xe9 API","quickStartStep2Text":"Acc\xe9dez \xe0 Endpoint -> Cl\xe9s enregistr\xe9es. G\xe9n\xe9rez une cl\xe9 par environnement.","quickStartStep3Title":"3. Connectez les fournisseurs","quickStartStep3Text":"Ajoutez des comptes de fournisseur via une connexion OAuth, une cl\xe9 API ou une connexion automatique de niveau gratuit.","quickStartStep4Title":"4. D\xe9finir l\'URL de la base de clients","quickStartStep4Prefix":"Pointez votre client IDE ou API vers","quickStartStep4Suffix":"Utilisez le pr\xe9fixe du fournisseur, par exemple","featureRoutingTitle":"Routage multi-fournisseurs","featureRoutingText":"Acheminez les requ\xeates vers plus de 30 fournisseurs d’IA via un seul point de terminaison compatible OpenAI. Prend en charge les API de chat, de r\xe9ponses, d\'audio et d\'image.","featureCombosTitle":"Combos et \xe9quilibrage","featureCombosText":"Cr\xe9ez des combinaisons de mod\xe8les avec des cha\xeenes de secours et des strat\xe9gies d\'\xe9quilibrage\xa0: round-robin, priorit\xe9, al\xe9atoire, moins utilis\xe9 et co\xfbt optimis\xe9.","featureUsageTitle":"Suivi de l\'utilisation et des co\xfbts","featureUsageText":"Comptage des jetons en temps r\xe9el, calcul des co\xfbts par fournisseur/mod\xe8le et r\xe9partition d\xe9taill\xe9e de l\'utilisation par cl\xe9 API et compte.","featureAnalyticsTitle":"Tableau de bord d\'analyse","featureAnalyticsText":"Analyses visuelles avec des graphiques pour les requ\xeates, les jetons, les erreurs, la latence, les co\xfbts et la popularit\xe9 du mod\xe8le au fil du temps.","featureHealthTitle":"Surveillance de la sant\xe9","featureHealthText":"Contr\xf4les de sant\xe9 en direct, statut du fournisseur, \xe9tats des disjoncteurs et d\xe9tection automatique des limites de d\xe9bit avec interruption exponentielle.","featureCliTitle":"Outils CLI","featureCliText":"G\xe9rez les configurations IDE, exportez/importez des sauvegardes, d\xe9couvrez les profils codex et configurez les param\xe8tres \xe0 partir du tableau de bord.","featureSecurityTitle":"S\xe9curit\xe9 et politiques","featureSecurityText":"Authentification par cl\xe9 API, filtrage IP, protection contre l\'injection rapide, politiques de domaine, gestion de session et journalisation d\'audit.","featureCloudSyncTitle":"Synchronisation dans le cloud","featureCloudSyncText":"Synchronisez votre configuration avec Cloudflare Workers pour un acc\xe8s \xe0 distance avec des informations d\'identification crypt\xe9es et un basculement automatique.","providersAcrossConnectionTypes":"Fournisseurs {count} sur trois types de connexion.","manageProviders":"G\xe9rer les fournisseurs","providersCount":"{count} fournisseurs","providerTypeFree":"Niveau gratuit","providerTypeOAuth":"OAuth","providerTypeApiKey":"Cl\xe9 API","useCaseSingleEndpointTitle":"Point de terminaison unique pour de nombreux fournisseurs","useCaseSingleEndpointText":"Dirigez les clients vers une URL de base et acheminez-les par pr\xe9fixe de mod\xe8le (par exemple\xa0: gh/, cc/, kr/, openai/).","useCaseFallbackTitle":"Repli et changement de mod\xe8le avec des combos","useCaseFallbackText":"Cr\xe9ez des mod\xe8les combin\xe9s dans le tableau de bord et maintenez la configuration client stable pendant que les fournisseurs effectuent une rotation en interne.","useCaseUsageVisibilityTitle":"Visibilit\xe9 de l\'utilisation, du co\xfbt et du d\xe9bogage","useCaseUsageVisibilityText":"Suivez les jetons et le co\xfbt par fournisseur, compte et cl\xe9 API dans les onglets Utilisation et Analyse.","clientCherryStudioTitle":"Studio Cerise","baseUrlLabel":"URL de base","chatEndpointLabel":"Point de terminaison de discussion","modelRecommendationLabel":"Recommandation de mod\xe8le\xa0: pr\xe9fixe explicite","clientCodexTitle":"Mod\xe8les de copilote Codex / GitHub","clientCodexBullet1":"Utiliser les ID de mod\xe8le avec","clientCodexBullet2":"Les mod\xe8les de la famille Codex sont achemin\xe9s automatiquement vers","clientCodexBullet3":"Les mod\xe8les non-Codex continuent","clientCursorTitle":"Curseur IDE","clientCursorBullet1":"Utiliser","clientCursorBullet1Suffix":"pr\xe9fixe pour les mod\xe8les Cursor.","clientCursorBullet2":"Connexion OAuth - connectez-vous \xe0 partir de la page Fournisseurs.","clientClaudeTitle":"Claude Code / Antigravit\xe9","clientClaudeBullet1Prefix":"Utiliser","clientClaudeBullet1Middle":"(Claude) ou","clientClaudeBullet1Suffix":"Pr\xe9fixe (Antigravit\xe9).","protocolsTitle":"Protocoles\xa0: MCP et A2A","protocolsDescription":"OmniRoute expose deux protocoles op\xe9rationnels en plus des API compatibles OpenAI\xa0: MCP pour l\'ex\xe9cution des outils et A2A pour les flux de travail d\'agent \xe0 agent.","protocolMcpTitle":"MCP (protocole de contexte de mod\xe8le)","protocolMcpDesc":"Utilisez MCP sur stdio pour permettre aux clients de d\xe9couvrir et d\'appeler les outils OmniRoute avec une visibilit\xe9 d\'audit.","protocolMcpStep1":"D\xe9marrez le transport MCP avec `omniroute --mcp`.","protocolMcpStep2":"Pointez votre client MCP vers le transport stdio.","protocolMcpStep3":"Appelez `omniroute_get_health` et `omniroute_list_combos` pour valider la connectivit\xe9.","protocolA2aTitle":"A2A (Agent2Agent)","protocolA2aDesc":"Utilisez A2A JSON-RPC pour soumettre des t\xe2ches de mani\xe8re synchrone ou via le streaming SSE.","protocolA2aStep1":"Lisez `/.well-known/agent.json` pour la d\xe9couverte d\'agents.","protocolA2aStep2":"Envoyez les requ\xeates `message/send` ou `message/stream` \xe0 `POST /a2a`.","protocolA2aStep3":"G\xe9rez le cycle de vie des t\xe2ches avec `tasks/get` et `tasks/cancel`.","protocolTroubleshootingTitle":"D\xe9pannage du protocole","protocolTroubleshooting1":"Si l\'\xe9tat MCP est hors ligne, v\xe9rifiez que le processus stdio est en cours d\'ex\xe9cution et que le fichier de pulsation est mis \xe0 jour.","protocolTroubleshooting2":"Si les t\xe2ches A2A restent dans `working`, inspectez `/api/a2a/tasks/:id` et diffusez les \xe9v\xe9nements pour conna\xeetre l\'\xe9tat du terminal.","protocolTroubleshooting3":"Utilisez `/dashboard/mcp` et `/dashboard/a2a` pour les contr\xf4les op\xe9rationnels et la visibilit\xe9 des audits.","endpointChatNote":"Point de terminaison de discussion compatible OpenAI (par d\xe9faut).","endpointResponsesNote":"Point de terminaison de l’API de r\xe9ponses (Codex, s\xe9rie o).","endpointModelsNote":"Catalogue mod\xe8le pour tous les fournisseurs connect\xe9s.","endpointAudioNote":"Transcription audio (Deepgram, AssemblyAI).","endpointImagesNote":"G\xe9n\xe9ration d\'images (NanoBanana).","endpointRewriteChatNote":"Aide \xe0 la r\xe9\xe9criture pour les clients sans /v1.","endpointRewriteResponsesNote":"Assistant de r\xe9\xe9criture pour les r\xe9ponses sans /v1.","endpointRewriteModelsNote":"Aide \xe0 la r\xe9\xe9criture pour la d\xe9couverte de mod\xe8les sans /v1.","modelPrefixesDescriptionStart":"Utilisez le pr\xe9fixe du fournisseur avant le nom du mod\xe8le pour acheminer vers un fournisseur sp\xe9cifique. Exemple\xa0:","modelPrefixesDescriptionEnd":"itin\xe9raires vers GitHub Copilot.","provider":"Fournisseur","type":"Tapez","troubleshootingModelRouting":"Si le client \xe9choue avec le routage du mod\xe8le, utilisez un fournisseur/mod\xe8le explicite (par exemple\xa0: gh/gpt-5.1-codex).","troubleshootingAmbiguousModels":"Si vous recevez des erreurs de mod\xe8le ambigu\xebs, choisissez un pr\xe9fixe de fournisseur au lieu d\'un simple ID de mod\xe8le.","troubleshootingCodexFamily":"Pour les mod\xe8les de la famille GitHub Codex, conservez le mod\xe8le sous la forme gh/codex-model\xa0; Le routeur s\xe9lectionne /r\xe9ponses automatiquement.","troubleshootingTestConnection":"Utilisez Tableau de bord > Fournisseurs > Tester la connexion avant de tester \xe0 partir d\'IDE ou de clients externes.","troubleshootingCircuitBreaker":"Si un fournisseur indique que le disjoncteur est ouvert, attendez le temps de recharge ou consultez la page Sant\xe9 pour plus de d\xe9tails.","troubleshootingOAuth":"Pour les fournisseurs OAuth, r\xe9authentifiez-vous si les jetons expirent. V\xe9rifiez l\'indicateur d\'\xe9tat de la carte du fournisseur."},"legal":{"privacyPolicy":"Politique de confidentialit\xe9","termsOfService":"Conditions d\'utilisation","providerConfigurations":"Configurations du fournisseur","apiKeys":"Cl\xe9s API","usageLogs":"Journaux d\'utilisation","applicationSettings":"Param\xe8tres de l\'application","viewExportAnalytics":"Afficher et exporter les analyses d\'utilisation","clearHistory":"Effacer l\'historique d\'utilisation \xe0 tout moment","configureRetention":"Configurer les politiques de conservation des journaux","backupRestore":"Sauvegardez et restaurez votre base de donn\xe9es","privacyMetadataTitle":"Politique de confidentialit\xe9 | OmniRoute","privacyMetadataDescription":"Politique de confidentialit\xe9 pour le routeur proxy OmniRoute AI API.","termsMetadataTitle":"Conditions d\'utilisation | OmniRoute","termsMetadataDescription":"Conditions d\'utilisation du routeur proxy de l\'API OmniRoute AI.","backToHome":"Retour \xe0 la maison","lastUpdated":"Derni\xe8re mise \xe0 jour\xa0: {date}","policyLastUpdatedDate":"13 f\xe9vrier 2026","listSeparator":"-","questionsVisit":"Des questions ? Visitez notre","githubRepository":"D\xe9p\xf4t GitHub","privacySection1Title":"1. Architecture locale d’abord","privacySection1Text":"OmniRoute est con\xe7u comme une application locale. Tout le traitement et le stockage des donn\xe9es s\'effectuent enti\xe8rement sur votre machine. Il n\'y a pas de serveur centralis\xe9 collectant vos informations.","privacySection2Title":"2. Donn\xe9es que nous stockons","privacyDataStoredIn":"Les donn\xe9es suivantes sont stock\xe9es localement dans","privacyDataProviderConfigurationsDesc":"URL de connexion, types de fournisseurs et param\xe8tres de priorit\xe9","privacyDataApiKeysDesc":"crypt\xe9 et stock\xe9 localement pour l\'authentification aupr\xe8s des fournisseurs d\'IA","privacyDataUsageLogsDesc":"nombre de requ\xeates, utilisation des jetons, noms de mod\xe8les, horodatages et temps de r\xe9ponse","privacyDataApplicationSettingsDesc":"pr\xe9f\xe9rences de th\xe8me, strat\xe9gie de routage et configurations combo","privacySection3Title":"3. Pas de t\xe9l\xe9m\xe9trie","privacySection3Text":"OmniRoute ne collecte pas de rapports de t\xe9l\xe9m\xe9trie, d\'analyse ou d\'erreur. Aucune donn\xe9e n\'est envoy\xe9e \xe0 nous ou \xe0 un tiers. Vos mod\xe8les d\'utilisation, appels API et configurations restent enti\xe8rement priv\xe9s.","privacySection4Title":"4. Fournisseurs d\'IA tiers","privacySection4Text":"Lorsque vous effectuez des appels API via OmniRoute, vos requ\xeates sont transmises aux fournisseurs d\'IA que vous avez configur\xe9s (par exemple : OpenAI, Anthropic, Google). Ces fournisseurs ont leurs propres politiques de confidentialit\xe9 qui r\xe9gissent la mani\xe8re dont ils traitent vos donn\xe9es. Veuillez consulter\xa0:","privacyOpenAiPolicy":"Politique de confidentialit\xe9 d\'OpenAI","privacyAnthropicPolicy":"Politique de confidentialit\xe9 anthropique","privacyGooglePolicy":"Politique de confidentialit\xe9 de Google","privacySection5Title":"5. Synchronisation cloud (facultatif)","privacySection5Text":"Si vous activez la fonctionnalit\xe9 facultative de synchronisation dans le cloud, les configurations du fournisseur et les cl\xe9s API peuvent \xeatre transmises \xe0 un point de terminaison cloud configur\xe9. Cette fonctionnalit\xe9 est d\xe9sactiv\xe9e par d\xe9faut et n\xe9cessite une inscription explicite.","privacySection6Title":"6. Journalisation","privacyLoggingIntro":"Les journaux de demandes peuvent \xeatre configur\xe9s via les param\xe8tres du tableau de bord. Vous pouvez\xa0:","privacySection7Title":"7. Vos droits","privacySection7TextStart":"Puisque toutes les donn\xe9es sont stock\xe9es localement, vous avez le contr\xf4le total. Vous pouvez supprimer vos donn\xe9es \xe0 tout moment en supprimant le","privacySection7TextEnd":"r\xe9pertoire ou en utilisant les fonctionnalit\xe9s de sauvegarde et de restauration de la base de donn\xe9es dans le tableau de bord.","termsSection1Title":"1. Aper\xe7u","termsSection1Text":"OmniRoute est un premier routeur proxy API AI local qui fonctionne enti\xe8rement sur votre machine. Il achemine les requ\xeates vers plusieurs fournisseurs d\'IA avec \xe9quilibrage de charge, basculement et suivi de l\'utilisation.","termsSection2Title":"2. Responsabilit\xe9s de l\'utilisateur","termsResponsibilityApiKeys":"Vous \xeates seul responsable de la gestion de vos propres cl\xe9s API et informations d\'identification pour les fournisseurs d\'IA tiers (OpenAI, Anthropic, Google, etc.).","termsResponsibilityCompliance":"Vous devez respecter les conditions de service de chaque fournisseur d\'IA dont vous acc\xe9dez \xe0 l\'API via OmniRoute.","termsResponsibilitySecurity":"Vous \xeates responsable de la s\xe9curit\xe9 de votre installation OmniRoute locale, notamment en d\xe9finissant un mot de passe et en restreignant l\'acc\xe8s au r\xe9seau.","termsSection3Title":"3. Comment \xe7a marche","termsSection3Text":"OmniRoute agit en tant que proxy interm\xe9diaire. Les appels API envoy\xe9s \xe0 OmniRoute sont traduits et transmis \xe0 vos fournisseurs d\'IA configur\xe9s. OmniRoute ne modifie pas le contenu de vos demandes ou r\xe9ponses au-del\xe0 de la traduction du protocole n\xe9cessaire.","termsSection4Title":"4. Traitement des donn\xe9es","termsDataStoredLocally":"Toutes les donn\xe9es sont stock\xe9es localement sur votre machine dans une base de donn\xe9es SQLite.","termsNoTransmission":"OmniRoute ne transmet aucune donn\xe9e aux serveurs externes, sauf si vous activez explicitement les fonctionnalit\xe9s de synchronisation dans le cloud.","termsDataLocationText":"Les journaux d\'utilisation, les cl\xe9s API et la configuration sont stock\xe9s dans","termsSection5Title":"5. Avis de non-responsabilit\xe9","termsSection5Text":"OmniRoute est fourni \xab tel quel \xbb, sans garantie d\'aucune sorte. Nous ne sommes pas responsables des co\xfbts occasionn\xe9s par l\'utilisation de l\'API, les interruptions de service ou la perte de donn\xe9es. Conservez toujours des sauvegardes de votre configuration.","termsSection6Title":"6. Ouvrir la source","termsSection6Text":"OmniRoute est un logiciel open source. Vous \xeates libre de l\'inspecter, de le modifier et de le distribuer selon les termes de sa licence."},"endpoints":{"tabProxy":"Endpoint Proxy","tabApiEndpoints":"Points d\'acc\xe8s API","apiEndpointsTitle":"Points d\'acc\xe8s API","apiEndpointsDescription":"Points d\'acc\xe8s API backend pouvant \xeatre consomm\xe9s par d\'autres applications et services.","comingSoon":"Bient\xf4t disponible","plannedFeatures":"Fonctionnalit\xe9s pr\xe9vues","featureRestApi":"Catalogue d\'API REST avec documentation interactive","featureWebhooks":"Configuration de webhooks et abonnements aux \xe9v\xe9nements","featureSwagger":"G\xe9n\xe9ration automatique de sp\xe9cifications OpenAPI / Swagger","featureAuth":"Gestion des cl\xe9s API et des port\xe9es OAuth par point d\'acc\xe8s"},"agents":{"title":"CLI Agents","description":"Discover installed CLI agents on your system. Add custom agents for auto-detection.","refresh":"Refresh","installed":"Installed","notFound":"Not Found","builtIn":"Built-in","custom":"Custom","remove":"Remove","addCustomAgent":"Add Custom Agent","addCustomAgentDesc":"Register any CLI tool for detection. It will be scanned automatically on refresh.","agentName":"Agent Name","binaryName":"Binary Name","versionCommand":"Version Command","spawnArgs":"Spawn Args","addAgent":"Add Agent"}}')}};
|