omniroute 1.7.2 → 1.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (843) hide show
  1. package/README.ar.md +4 -0
  2. package/README.bg.md +4 -0
  3. package/README.da.md +4 -0
  4. package/README.de.md +13 -9
  5. package/README.es.md +13 -9
  6. package/README.fi.md +4 -0
  7. package/README.fr.md +13 -9
  8. package/README.he.md +29 -25
  9. package/README.hu.md +4 -0
  10. package/README.id.md +4 -0
  11. package/README.in.md +4 -0
  12. package/README.it.md +13 -9
  13. package/README.ja.md +4 -0
  14. package/README.ko.md +29 -25
  15. package/README.md +45 -0
  16. package/README.ms.md +4 -0
  17. package/README.nl.md +4 -0
  18. package/README.no.md +4 -0
  19. package/README.phi.md +4 -0
  20. package/README.pl.md +4 -0
  21. package/README.pt-BR.md +29 -25
  22. package/README.pt.md +4 -0
  23. package/README.ro.md +4 -0
  24. package/README.ru.md +13 -9
  25. package/README.sk.md +4 -0
  26. package/README.sv.md +4 -0
  27. package/README.th.md +16 -12
  28. package/README.uk-UA.md +4 -0
  29. package/README.vi.md +4 -0
  30. package/README.zh-CN.md +26 -22
  31. package/app/.env +122 -0
  32. package/app/.next/BUILD_ID +1 -1
  33. package/app/.next/app-path-routes-manifest.json +30 -28
  34. package/app/.next/build-manifest.json +3 -3
  35. package/app/.next/prerender-manifest.json +3 -3
  36. package/app/.next/required-server-files.json +1 -1
  37. package/app/.next/routes-manifest.json +12 -0
  38. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js +2 -2
  39. package/app/.next/server/app/(dashboard)/dashboard/analytics/page.js.nft.json +1 -1
  40. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js +2 -2
  42. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page.js.nft.json +1 -1
  43. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  44. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js +2 -2
  45. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page.js.nft.json +1 -1
  46. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  47. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js +3 -3
  48. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  49. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  51. package/app/.next/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  52. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js +2 -2
  54. package/app/.next/server/app/(dashboard)/dashboard/costs/page.js.nft.json +1 -1
  55. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js +2 -2
  57. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  58. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/(dashboard)/dashboard/health/page.js +2 -2
  60. package/app/.next/server/app/(dashboard)/dashboard/health/page.js.nft.json +1 -1
  61. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js +2 -2
  63. package/app/.next/server/app/(dashboard)/dashboard/limits/page.js.nft.json +1 -1
  64. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js +2 -2
  66. package/app/.next/server/app/(dashboard)/dashboard/logs/page.js.nft.json +1 -1
  67. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/(dashboard)/dashboard/media/page.js +2 -2
  69. package/app/.next/server/app/(dashboard)/dashboard/media/page.js.nft.json +1 -1
  70. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js +2 -2
  72. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page.js.nft.json +1 -1
  73. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/(dashboard)/dashboard/page.js +2 -2
  75. package/app/.next/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  76. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js +2 -2
  78. package/app/.next/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  79. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  81. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  82. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js +2 -2
  84. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  85. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js +2 -2
  87. package/app/.next/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  88. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js +2 -2
  90. package/app/.next/server/app/(dashboard)/dashboard/settings/page.js.nft.json +1 -1
  91. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  92. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js +2 -2
  93. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page.js.nft.json +1 -1
  94. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  95. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js +3 -3
  96. package/app/.next/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  97. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  98. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js +2 -2
  99. package/app/.next/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  100. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/_global-error/page.js +3 -3
  102. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  103. package/app/.next/server/app/_global-error.html +2 -2
  104. package/app/.next/server/app/_global-error.rsc +4 -4
  105. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +4 -4
  106. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  107. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  108. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  109. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +3 -3
  110. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  111. package/app/.next/server/app/_not-found/page.js +2 -2
  112. package/app/.next/server/app/_not-found/page.js.nft.json +1 -1
  113. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/api/auth/login/route.js +1 -1
  115. package/app/.next/server/app/api/auth/login/route.js.nft.json +1 -1
  116. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  117. package/app/.next/server/app/api/auth/logout/route.js +1 -1
  118. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  119. package/app/.next/server/app/api/auth/status/route.js +1 -1
  120. package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  121. package/app/.next/server/app/api/cache/route.js +1 -1
  122. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/api/cache/stats/route.js +1 -1
  124. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +2 -2
  126. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  127. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  128. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route.js +2 -2
  129. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  130. package/app/.next/server/app/api/cli-tools/backups/route.js +2 -2
  131. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  132. package/app/.next/server/app/api/cli-tools/claude-settings/route.js +2 -2
  133. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  134. package/app/.next/server/app/api/cli-tools/cline-settings/route.js +2 -2
  135. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  136. package/app/.next/server/app/api/cli-tools/codex-profiles/route.js +2 -2
  137. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  138. package/app/.next/server/app/api/cli-tools/codex-settings/route.js +2 -2
  139. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  140. package/app/.next/server/app/api/cli-tools/droid-settings/route.js +2 -2
  141. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  142. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route.js +1 -1
  143. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  144. package/app/.next/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  145. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  146. package/app/.next/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  147. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route.js +2 -2
  149. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  150. package/app/.next/server/app/api/cli-tools/status/route.js +2 -2
  151. package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
  152. package/app/.next/server/app/api/cloud/auth/route.js +1 -1
  153. package/app/.next/server/app/api/cloud/auth/route.js.nft.json +1 -1
  154. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  155. package/app/.next/server/app/api/cloud/credentials/update/route.js +1 -1
  156. package/app/.next/server/app/api/cloud/credentials/update/route.js.nft.json +1 -1
  157. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  158. package/app/.next/server/app/api/cloud/model/resolve/route.js +1 -1
  159. package/app/.next/server/app/api/cloud/model/resolve/route.js.nft.json +1 -1
  160. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  161. package/app/.next/server/app/api/cloud/models/alias/route.js +1 -1
  162. package/app/.next/server/app/api/cloud/models/alias/route.js.nft.json +1 -1
  163. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  164. package/app/.next/server/app/api/combos/[id]/route.js +1 -1
  165. package/app/.next/server/app/api/combos/[id]/route.js.nft.json +1 -1
  166. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  167. package/app/.next/server/app/api/combos/metrics/route.js +1 -1
  168. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  169. package/app/.next/server/app/api/combos/route.js +1 -1
  170. package/app/.next/server/app/api/combos/route.js.nft.json +1 -1
  171. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  172. package/app/.next/server/app/api/combos/test/route.js +1 -1
  173. package/app/.next/server/app/api/combos/test/route.js.nft.json +1 -1
  174. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  175. package/app/.next/server/app/api/compliance/audit-log/route.js +1 -1
  176. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  177. package/app/.next/server/app/api/db-backups/export/route.js +1 -1
  178. package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
  179. package/app/.next/server/app/api/db-backups/exportAll/route.js +1 -1
  180. package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
  181. package/app/.next/server/app/api/db-backups/import/route.js +1 -1
  182. package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
  183. package/app/.next/server/app/api/db-backups/route.js +1 -1
  184. package/app/.next/server/app/api/db-backups/route.js.nft.json +1 -1
  185. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  186. package/app/.next/server/app/api/evals/[suiteId]/route.js +1 -1
  187. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  188. package/app/.next/server/app/api/evals/route.js +1 -1
  189. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  190. package/app/.next/server/app/api/fallback/chains/route.js +2 -2
  191. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  192. package/app/.next/server/app/api/init/route.js +1 -1
  193. package/app/.next/server/app/api/init/route.js.nft.json +1 -1
  194. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  195. package/app/.next/server/app/api/keys/[id]/route.js +1 -1
  196. package/app/.next/server/app/api/keys/[id]/route.js.nft.json +1 -1
  197. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  198. package/app/.next/server/app/api/keys/route.js +1 -1
  199. package/app/.next/server/app/api/keys/route.js.nft.json +1 -1
  200. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  201. package/app/.next/server/app/api/logs/console/route.js +1 -1
  202. package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -1
  203. package/app/.next/server/app/api/models/alias/route.js +1 -1
  204. package/app/.next/server/app/api/models/alias/route.js.nft.json +1 -1
  205. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  206. package/app/.next/server/app/api/models/availability/route.js +1 -1
  207. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  208. package/app/.next/server/app/api/models/catalog/route.js +2 -2
  209. package/app/.next/server/app/api/models/catalog/route.js.nft.json +1 -1
  210. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  211. package/app/.next/server/app/api/models/route.js +2 -2
  212. package/app/.next/server/app/api/models/route.js.nft.json +1 -1
  213. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  214. package/app/.next/server/app/api/monitoring/health/route.js +2 -2
  215. package/app/.next/server/app/api/monitoring/health/route.js.nft.json +1 -1
  216. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
  217. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js +2 -2
  218. package/app/.next/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  219. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  220. package/app/.next/server/app/api/oauth/cursor/auto-import/route.js +1 -1
  221. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  222. package/app/.next/server/app/api/oauth/cursor/import/route.js +1 -1
  223. package/app/.next/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  224. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  225. package/app/.next/server/app/api/oauth/kiro/auto-import/route.js +1 -1
  226. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  227. package/app/.next/server/app/api/oauth/kiro/import/route.js +1 -1
  228. package/app/.next/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  229. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  230. package/app/.next/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  231. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  232. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  233. package/app/.next/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  234. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  235. package/app/.next/server/app/api/policies/route.js +2 -2
  236. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  237. package/app/.next/server/app/api/pricing/defaults/route.js +1 -1
  238. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  239. package/app/.next/server/app/api/pricing/models/route.js +1 -1
  240. package/app/.next/server/app/api/pricing/models/route.js.nft.json +1 -1
  241. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  242. package/app/.next/server/app/api/pricing/route.js +1 -1
  243. package/app/.next/server/app/api/pricing/route.js.nft.json +1 -1
  244. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  245. package/app/.next/server/app/api/provider-metrics/route.js +2 -2
  246. package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
  247. package/app/.next/server/app/api/provider-models/route.js +1 -1
  248. package/app/.next/server/app/api/provider-models/route.js.nft.json +1 -1
  249. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  250. package/app/.next/server/app/api/provider-nodes/[id]/route.js +1 -1
  251. package/app/.next/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  252. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  253. package/app/.next/server/app/api/provider-nodes/route.js +2 -2
  254. package/app/.next/server/app/api/provider-nodes/route.js.nft.json +1 -1
  255. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  256. package/app/.next/server/app/api/provider-nodes/validate/route.js +1 -1
  257. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  258. package/app/.next/server/app/api/providers/[id]/models/route.js +2 -2
  259. package/app/.next/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  260. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  261. package/app/.next/server/app/api/providers/[id]/route.js +1 -1
  262. package/app/.next/server/app/api/providers/[id]/route.js.nft.json +1 -1
  263. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  264. package/app/.next/server/app/api/providers/[id]/test/route.js +1 -1
  265. package/app/.next/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  266. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  267. package/app/.next/server/app/api/providers/client/route.js +1 -1
  268. package/app/.next/server/app/api/providers/client/route.js.nft.json +1 -1
  269. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  270. package/app/.next/server/app/api/providers/route.js +2 -2
  271. package/app/.next/server/app/api/providers/route.js.nft.json +1 -1
  272. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  273. package/app/.next/server/app/api/providers/test-batch/route.js +1 -1
  274. package/app/.next/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  275. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  276. package/app/.next/server/app/api/providers/validate/route.js +1 -1
  277. package/app/.next/server/app/api/providers/validate/route.js.nft.json +1 -1
  278. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  279. package/app/.next/server/app/api/rate-limit/route.js +1 -1
  280. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  281. package/app/.next/server/app/api/rate-limits/route.js +1 -1
  282. package/app/.next/server/app/api/rate-limits/route.js.nft.json +1 -1
  283. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  284. package/app/.next/server/app/api/resilience/reset/route.js +1 -1
  285. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  286. package/app/.next/server/app/api/resilience/route.js +1 -1
  287. package/app/.next/server/app/api/resilience/route.js.nft.json +1 -1
  288. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  289. package/app/.next/server/app/api/restart/route.js +1 -1
  290. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  291. package/app/.next/server/app/api/sessions/route.js +1 -1
  292. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  293. package/app/.next/server/app/api/settings/background-degradation/route.js +1 -0
  294. package/app/.next/server/app/api/settings/background-degradation/route.js.nft.json +1 -0
  295. package/app/.next/server/app/api/settings/background-degradation/route_client-reference-manifest.js +1 -0
  296. package/app/.next/server/app/api/settings/combo-defaults/route.js +1 -1
  297. package/app/.next/server/app/api/settings/combo-defaults/route.js.nft.json +1 -1
  298. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  299. package/app/.next/server/app/api/settings/ip-filter/route.js +1 -1
  300. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  301. package/app/.next/server/app/api/settings/model-aliases/route.js +1 -0
  302. package/app/.next/server/app/api/settings/model-aliases/route.js.nft.json +1 -0
  303. package/app/.next/server/app/api/settings/model-aliases/route_client-reference-manifest.js +1 -0
  304. package/app/.next/server/app/api/settings/proxy/route.js +1 -1
  305. package/app/.next/server/app/api/settings/proxy/route.js.nft.json +1 -1
  306. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  307. package/app/.next/server/app/api/settings/proxy/test/route.js +1 -1
  308. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  309. package/app/.next/server/app/api/settings/require-login/route.js +1 -1
  310. package/app/.next/server/app/api/settings/require-login/route.js.nft.json +1 -1
  311. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  312. package/app/.next/server/app/api/settings/route.js +1 -1
  313. package/app/.next/server/app/api/settings/route.js.nft.json +1 -1
  314. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  315. package/app/.next/server/app/api/settings/system-prompt/route.js +1 -1
  316. package/app/.next/server/app/api/settings/system-prompt/route.js.nft.json +1 -1
  317. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  318. package/app/.next/server/app/api/settings/thinking-budget/route.js +1 -1
  319. package/app/.next/server/app/api/settings/thinking-budget/route.js.nft.json +1 -1
  320. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  321. package/app/.next/server/app/api/shutdown/route.js +1 -1
  322. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  323. package/app/.next/server/app/api/storage/health/route.js +1 -1
  324. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  325. package/app/.next/server/app/api/sync/cloud/route.js +1 -1
  326. package/app/.next/server/app/api/sync/cloud/route.js.nft.json +1 -1
  327. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  328. package/app/.next/server/app/api/sync/initialize/route.js +1 -1
  329. package/app/.next/server/app/api/sync/initialize/route.js.nft.json +1 -1
  330. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  331. package/app/.next/server/app/api/tags/route.js +1 -1
  332. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  333. package/app/.next/server/app/api/telemetry/summary/route.js +1 -1
  334. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  335. package/app/.next/server/app/api/token-health/route.js +1 -1
  336. package/app/.next/server/app/api/token-health/route.js.nft.json +1 -1
  337. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  338. package/app/.next/server/app/api/translator/detect/route.js +1 -1
  339. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  340. package/app/.next/server/app/api/translator/history/route.js +1 -1
  341. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  342. package/app/.next/server/app/api/translator/load/route.js +1 -1
  343. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  344. package/app/.next/server/app/api/translator/save/route.js +1 -1
  345. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  346. package/app/.next/server/app/api/translator/send/route.js +1 -1
  347. package/app/.next/server/app/api/translator/send/route.js.nft.json +1 -1
  348. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  349. package/app/.next/server/app/api/translator/translate/route.js +1 -1
  350. package/app/.next/server/app/api/translator/translate/route.js.nft.json +1 -1
  351. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  352. package/app/.next/server/app/api/usage/[connectionId]/route.js +1 -1
  353. package/app/.next/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  354. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  355. package/app/.next/server/app/api/usage/analytics/route.js +1 -1
  356. package/app/.next/server/app/api/usage/analytics/route.js.nft.json +1 -1
  357. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  358. package/app/.next/server/app/api/usage/budget/route.js +2 -2
  359. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  360. package/app/.next/server/app/api/usage/call-logs/[id]/route.js +1 -1
  361. package/app/.next/server/app/api/usage/call-logs/[id]/route.js.nft.json +1 -1
  362. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  363. package/app/.next/server/app/api/usage/call-logs/route.js +1 -1
  364. package/app/.next/server/app/api/usage/call-logs/route.js.nft.json +1 -1
  365. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  366. package/app/.next/server/app/api/usage/history/route.js +1 -1
  367. package/app/.next/server/app/api/usage/history/route.js.nft.json +1 -1
  368. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  369. package/app/.next/server/app/api/usage/logs/route.js +1 -1
  370. package/app/.next/server/app/api/usage/logs/route.js.nft.json +1 -1
  371. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  372. package/app/.next/server/app/api/usage/proxy-logs/route.js +1 -1
  373. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  374. package/app/.next/server/app/api/usage/request-logs/route.js +1 -1
  375. package/app/.next/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  376. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  377. package/app/.next/server/app/api/v1/api/chat/route.js +1 -1
  378. package/app/.next/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  379. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  380. package/app/.next/server/app/api/v1/audio/speech/route.js +1 -1
  381. package/app/.next/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  382. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  383. package/app/.next/server/app/api/v1/audio/transcriptions/route.js +1 -1
  384. package/app/.next/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  385. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  386. package/app/.next/server/app/api/v1/chat/completions/route.js +1 -1
  387. package/app/.next/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  388. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  389. package/app/.next/server/app/api/v1/embeddings/route.js +1 -1
  390. package/app/.next/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  391. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  392. package/app/.next/server/app/api/v1/images/generations/route.js +1 -1
  393. package/app/.next/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  394. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  395. package/app/.next/server/app/api/v1/messages/count_tokens/route.js +1 -1
  396. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  397. package/app/.next/server/app/api/v1/messages/route.js +1 -1
  398. package/app/.next/server/app/api/v1/messages/route.js.nft.json +1 -1
  399. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  400. package/app/.next/server/app/api/v1/models/route.js +2 -2
  401. package/app/.next/server/app/api/v1/models/route.js.nft.json +1 -1
  402. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  403. package/app/.next/server/app/api/v1/moderations/route.js +1 -1
  404. package/app/.next/server/app/api/v1/moderations/route.js.nft.json +1 -1
  405. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  406. package/app/.next/server/app/api/v1/music/generations/route.js +1 -1
  407. package/app/.next/server/app/api/v1/music/generations/route.js.nft.json +1 -1
  408. package/app/.next/server/app/api/v1/music/generations/route_client-reference-manifest.js +1 -1
  409. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js +1 -1
  410. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route.js.nft.json +1 -1
  411. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  412. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js +1 -1
  413. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route.js.nft.json +1 -1
  414. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  415. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js +1 -1
  416. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route.js.nft.json +1 -1
  417. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  418. package/app/.next/server/app/api/v1/rerank/route.js +1 -1
  419. package/app/.next/server/app/api/v1/rerank/route.js.nft.json +1 -1
  420. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  421. package/app/.next/server/app/api/v1/responses/route.js +1 -1
  422. package/app/.next/server/app/api/v1/responses/route.js.nft.json +1 -1
  423. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  424. package/app/.next/server/app/api/v1/route.js +1 -1
  425. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  426. package/app/.next/server/app/api/v1/videos/generations/route.js +1 -1
  427. package/app/.next/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  428. package/app/.next/server/app/api/v1/videos/generations/route_client-reference-manifest.js +1 -1
  429. package/app/.next/server/app/api/v1beta/models/[...path]/route.js +1 -1
  430. package/app/.next/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  431. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  432. package/app/.next/server/app/api/v1beta/models/route.js +2 -2
  433. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  434. package/app/.next/server/app/callback/page.js +2 -2
  435. package/app/.next/server/app/callback/page.js.nft.json +1 -1
  436. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  437. package/app/.next/server/app/docs/page.js +3 -3
  438. package/app/.next/server/app/docs/page.js.nft.json +1 -1
  439. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  440. package/app/.next/server/app/forbidden/page.js +2 -2
  441. package/app/.next/server/app/forbidden/page.js.nft.json +1 -1
  442. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  443. package/app/.next/server/app/forgot-password/page.js +2 -2
  444. package/app/.next/server/app/forgot-password/page.js.nft.json +1 -1
  445. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  446. package/app/.next/server/app/landing/page.js +2 -2
  447. package/app/.next/server/app/landing/page.js.nft.json +1 -1
  448. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  449. package/app/.next/server/app/login/page.js +2 -2
  450. package/app/.next/server/app/login/page.js.nft.json +1 -1
  451. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  452. package/app/.next/server/app/page.js +2 -2
  453. package/app/.next/server/app/page.js.nft.json +1 -1
  454. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  455. package/app/.next/server/app/privacy/page.js +2 -2
  456. package/app/.next/server/app/privacy/page.js.nft.json +1 -1
  457. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  458. package/app/.next/server/app/terms/page.js +2 -2
  459. package/app/.next/server/app/terms/page.js.nft.json +1 -1
  460. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  461. package/app/.next/server/app-paths-manifest.json +30 -28
  462. package/app/.next/server/chunks/1248.js +1 -1
  463. package/app/.next/server/chunks/1308.js +1 -1
  464. package/app/.next/server/chunks/1526.js +1 -1
  465. package/app/.next/server/chunks/1584.js +1 -1
  466. package/app/.next/server/chunks/1623.js +1 -1
  467. package/app/.next/server/chunks/1880.js +1 -1
  468. package/app/.next/server/chunks/1960.js +1 -1
  469. package/app/.next/server/chunks/1990.js +1 -1
  470. package/app/.next/server/chunks/2180.js +1 -1
  471. package/app/.next/server/chunks/2214.js +1 -1
  472. package/app/.next/server/chunks/2372.js +1 -1
  473. package/app/.next/server/chunks/2594.js +1 -1
  474. package/app/.next/server/chunks/2767.js +1 -1
  475. package/app/.next/server/chunks/2901.js +2 -2
  476. package/app/.next/server/chunks/2910.js +1 -1
  477. package/app/.next/server/chunks/3371.js +1 -1
  478. package/app/.next/server/chunks/3447.js +1 -1
  479. package/app/.next/server/chunks/3498.js +1 -1
  480. package/app/.next/server/chunks/3596.js +1 -1
  481. package/app/.next/server/chunks/3801.js +2 -0
  482. package/app/.next/server/chunks/3911.js +1 -1
  483. package/app/.next/server/chunks/4488.js +1 -1
  484. package/app/.next/server/chunks/4568.js +1 -1
  485. package/app/.next/server/chunks/496.js +1 -1
  486. package/app/.next/server/chunks/5047.js +1 -1
  487. package/app/.next/server/chunks/5094.js +1 -1
  488. package/app/.next/server/chunks/5097.js +1 -1
  489. package/app/.next/server/chunks/5521.js +1 -1
  490. package/app/.next/server/chunks/5945.js +1 -1
  491. package/app/.next/server/chunks/6118.js +1 -1
  492. package/app/.next/server/chunks/6930.js +1 -1
  493. package/app/.next/server/chunks/7011.js +1 -1
  494. package/app/.next/server/chunks/708.js +1 -1
  495. package/app/.next/server/chunks/7109.js +1 -1
  496. package/app/.next/server/chunks/7230.js +2 -2
  497. package/app/.next/server/chunks/7650.js +1 -1
  498. package/app/.next/server/chunks/8020.js +3 -3
  499. package/app/.next/server/chunks/8220.js +1 -1
  500. package/app/.next/server/chunks/8464.js +1 -1
  501. package/app/.next/server/chunks/8706.js +1 -1
  502. package/app/.next/server/chunks/8976.js +1 -1
  503. package/app/.next/server/chunks/9119.js +1 -1
  504. package/app/.next/server/chunks/944.js +1 -1
  505. package/app/.next/server/chunks/9548.js +1 -0
  506. package/app/.next/server/chunks/9679.js +1 -0
  507. package/app/.next/server/chunks/9824.js +2 -2
  508. package/app/.next/server/chunks/9837.js +1 -1
  509. package/app/.next/server/middleware-build-manifest.js +1 -1
  510. package/app/.next/server/middleware.js +3 -3
  511. package/app/.next/server/next-font-manifest.js +1 -1
  512. package/app/.next/server/next-font-manifest.json +1 -1
  513. package/app/.next/server/pages/500.html +2 -2
  514. package/app/.next/server/server-reference-manifest.js +1 -1
  515. package/app/.next/server/server-reference-manifest.json +1 -1
  516. package/app/.next/static/a624rqqXG_QtNPqv8ZMWa/_buildManifest.js +1 -0
  517. package/app/.next/static/chunks/5846-1dad4fadf761e0d8.js +2 -0
  518. package/app/.next/static/chunks/{993-035473765d7d1871.js → 993-9f36b0b069ca090e.js} +2 -2
  519. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/loading-ce5214cdf489c9df.js +1 -0
  520. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/{page-52f76c7c91444ec2.js → page-20786f2c7fdbab57.js} +1 -1
  521. package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-12d772841a253032.js +1 -0
  522. package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-c9b98846b8479f3f.js +1 -0
  523. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-5e34630a5dc32825.js +15 -0
  524. package/app/.next/static/chunks/app/(dashboard)/dashboard/combos/{page-3dce7fccfcf177dd.js → page-85a3e6a423aceded.js} +1 -1
  525. package/app/.next/static/chunks/app/(dashboard)/dashboard/costs/{page-3ed2a7685adf9b91.js → page-cdb8071441476da9.js} +1 -1
  526. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-588b8bc3c4e631e0.js +1 -0
  527. package/app/.next/static/chunks/app/(dashboard)/dashboard/health/{page-9a6519bf1468f16e.js → page-b480b3cb318782d7.js} +1 -1
  528. package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-0ae1d6cc5fc4671f.js +1 -0
  529. package/app/.next/static/chunks/app/(dashboard)/dashboard/logs/{page-833d24f322a20f5a.js → page-ffdc1dcf074c7528.js} +1 -1
  530. package/app/.next/static/chunks/app/(dashboard)/dashboard/media/page-72b768421394b42c.js +1 -0
  531. package/app/.next/static/chunks/app/(dashboard)/dashboard/onboarding/{page-d424641c7e428be9.js → page-5378e9473a20cd6a.js} +1 -1
  532. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-5c87e49261a22fd5.js +1 -0
  533. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-6301a4ed902b878a.js +1 -0
  534. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-b38f2d03bae8166a.js +1 -0
  535. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{error-2f0177a2197dd556.js → error-f0730d6d62d02e82.js} +1 -1
  536. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{loading-99ab4d478260d53b.js → loading-59cbccd6d5185ca9.js} +1 -1
  537. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-a7fb36872be60fe0.js +1 -0
  538. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/{page-1f022385b812b987.js → page-40dc5ac82df708e9.js} +1 -1
  539. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{error-e844916e39172c8b.js → error-cc85c3ff1f63aea6.js} +1 -1
  540. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/{loading-bb068659ee679ff4.js → loading-19fc771a287bcb4c.js} +1 -1
  541. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-1550a2460948273c.js +1 -0
  542. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/pricing/{page-f10a8d4bb8236913.js → page-cbe9b21b62bbc2bd.js} +1 -1
  543. package/app/.next/static/chunks/app/(dashboard)/dashboard/translator/{page-83b07523f81d6282.js → page-534e13a69cb60a4f.js} +1 -1
  544. package/app/.next/static/chunks/app/(dashboard)/dashboard/usage/{page-9cc99ab874fc36e7.js → page-86a076d820931a30.js} +1 -1
  545. package/app/.next/static/chunks/app/(dashboard)/{layout-00d5d56af65098a9.js → layout-16302e54f9ef3d0e.js} +1 -1
  546. package/app/.next/static/chunks/app/_global-error/page-6301a4ed902b878a.js +1 -0
  547. package/app/.next/static/chunks/app/_not-found/page-6301a4ed902b878a.js +1 -0
  548. package/app/.next/static/chunks/app/api/auth/login/route-6301a4ed902b878a.js +1 -0
  549. package/app/.next/static/chunks/app/api/auth/logout/route-6301a4ed902b878a.js +1 -0
  550. package/app/.next/static/chunks/app/api/auth/status/route-6301a4ed902b878a.js +1 -0
  551. package/app/.next/static/chunks/app/api/cache/route-6301a4ed902b878a.js +1 -0
  552. package/app/.next/static/chunks/app/api/cache/stats/route-6301a4ed902b878a.js +1 -0
  553. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-6301a4ed902b878a.js +1 -0
  554. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-6301a4ed902b878a.js +1 -0
  555. package/app/.next/static/chunks/app/api/cli-tools/backups/route-6301a4ed902b878a.js +1 -0
  556. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-6301a4ed902b878a.js +1 -0
  557. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-6301a4ed902b878a.js +1 -0
  558. package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-6301a4ed902b878a.js +1 -0
  559. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-6301a4ed902b878a.js +1 -0
  560. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-6301a4ed902b878a.js +1 -0
  561. package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-6301a4ed902b878a.js +1 -0
  562. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-6301a4ed902b878a.js +1 -0
  563. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-6301a4ed902b878a.js +1 -0
  564. package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-6301a4ed902b878a.js +1 -0
  565. package/app/.next/static/chunks/app/api/cli-tools/status/route-6301a4ed902b878a.js +1 -0
  566. package/app/.next/static/chunks/app/api/cloud/auth/route-6301a4ed902b878a.js +1 -0
  567. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-6301a4ed902b878a.js +1 -0
  568. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-6301a4ed902b878a.js +1 -0
  569. package/app/.next/static/chunks/app/api/cloud/models/alias/route-6301a4ed902b878a.js +1 -0
  570. package/app/.next/static/chunks/app/api/combos/[id]/route-6301a4ed902b878a.js +1 -0
  571. package/app/.next/static/chunks/app/api/combos/metrics/route-6301a4ed902b878a.js +1 -0
  572. package/app/.next/static/chunks/app/api/combos/route-6301a4ed902b878a.js +1 -0
  573. package/app/.next/static/chunks/app/api/combos/test/route-6301a4ed902b878a.js +1 -0
  574. package/app/.next/static/chunks/app/api/compliance/audit-log/route-6301a4ed902b878a.js +1 -0
  575. package/app/.next/static/chunks/app/api/db-backups/export/route-6301a4ed902b878a.js +1 -0
  576. package/app/.next/static/chunks/app/api/db-backups/exportAll/route-6301a4ed902b878a.js +1 -0
  577. package/app/.next/static/chunks/app/api/db-backups/import/route-6301a4ed902b878a.js +1 -0
  578. package/app/.next/static/chunks/app/api/db-backups/route-6301a4ed902b878a.js +1 -0
  579. package/app/.next/static/chunks/app/api/evals/[suiteId]/route-6301a4ed902b878a.js +1 -0
  580. package/app/.next/static/chunks/app/api/evals/route-6301a4ed902b878a.js +1 -0
  581. package/app/.next/static/chunks/app/api/fallback/chains/route-6301a4ed902b878a.js +1 -0
  582. package/app/.next/static/chunks/app/api/init/route-6301a4ed902b878a.js +1 -0
  583. package/app/.next/static/chunks/app/api/keys/[id]/route-6301a4ed902b878a.js +1 -0
  584. package/app/.next/static/chunks/app/api/keys/route-6301a4ed902b878a.js +1 -0
  585. package/app/.next/static/chunks/app/api/logs/console/route-6301a4ed902b878a.js +1 -0
  586. package/app/.next/static/chunks/app/api/models/alias/route-6301a4ed902b878a.js +1 -0
  587. package/app/.next/static/chunks/app/api/models/availability/route-6301a4ed902b878a.js +1 -0
  588. package/app/.next/static/chunks/app/api/models/catalog/route-6301a4ed902b878a.js +1 -0
  589. package/app/.next/static/chunks/app/api/models/route-6301a4ed902b878a.js +1 -0
  590. package/app/.next/static/chunks/app/api/monitoring/health/route-6301a4ed902b878a.js +1 -0
  591. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-6301a4ed902b878a.js +1 -0
  592. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-6301a4ed902b878a.js +1 -0
  593. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-6301a4ed902b878a.js +1 -0
  594. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-6301a4ed902b878a.js +1 -0
  595. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-6301a4ed902b878a.js +1 -0
  596. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-6301a4ed902b878a.js +1 -0
  597. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-6301a4ed902b878a.js +1 -0
  598. package/app/.next/static/chunks/app/api/policies/route-6301a4ed902b878a.js +1 -0
  599. package/app/.next/static/chunks/app/api/pricing/defaults/route-6301a4ed902b878a.js +1 -0
  600. package/app/.next/static/chunks/app/api/pricing/models/route-6301a4ed902b878a.js +1 -0
  601. package/app/.next/static/chunks/app/api/pricing/route-6301a4ed902b878a.js +1 -0
  602. package/app/.next/static/chunks/app/api/provider-metrics/route-6301a4ed902b878a.js +1 -0
  603. package/app/.next/static/chunks/app/api/provider-models/route-6301a4ed902b878a.js +1 -0
  604. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-6301a4ed902b878a.js +1 -0
  605. package/app/.next/static/chunks/app/api/provider-nodes/route-6301a4ed902b878a.js +1 -0
  606. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-6301a4ed902b878a.js +1 -0
  607. package/app/.next/static/chunks/app/api/providers/[id]/models/route-6301a4ed902b878a.js +1 -0
  608. package/app/.next/static/chunks/app/api/providers/[id]/route-6301a4ed902b878a.js +1 -0
  609. package/app/.next/static/chunks/app/api/providers/[id]/test/route-6301a4ed902b878a.js +1 -0
  610. package/app/.next/static/chunks/app/api/providers/client/route-6301a4ed902b878a.js +1 -0
  611. package/app/.next/static/chunks/app/api/providers/route-6301a4ed902b878a.js +1 -0
  612. package/app/.next/static/chunks/app/api/providers/test-batch/route-6301a4ed902b878a.js +1 -0
  613. package/app/.next/static/chunks/app/api/providers/validate/route-6301a4ed902b878a.js +1 -0
  614. package/app/.next/static/chunks/app/api/rate-limit/route-6301a4ed902b878a.js +1 -0
  615. package/app/.next/static/chunks/app/api/rate-limits/route-6301a4ed902b878a.js +1 -0
  616. package/app/.next/static/chunks/app/api/resilience/reset/route-6301a4ed902b878a.js +1 -0
  617. package/app/.next/static/chunks/app/api/resilience/route-6301a4ed902b878a.js +1 -0
  618. package/app/.next/static/chunks/app/api/restart/route-6301a4ed902b878a.js +1 -0
  619. package/app/.next/static/chunks/app/api/sessions/route-6301a4ed902b878a.js +1 -0
  620. package/app/.next/static/chunks/app/api/settings/background-degradation/route-6301a4ed902b878a.js +1 -0
  621. package/app/.next/static/chunks/app/api/settings/combo-defaults/route-6301a4ed902b878a.js +1 -0
  622. package/app/.next/static/chunks/app/api/settings/ip-filter/route-6301a4ed902b878a.js +1 -0
  623. package/app/.next/static/chunks/app/api/settings/model-aliases/route-6301a4ed902b878a.js +1 -0
  624. package/app/.next/static/chunks/app/api/settings/proxy/route-6301a4ed902b878a.js +1 -0
  625. package/app/.next/static/chunks/app/api/settings/proxy/test/route-6301a4ed902b878a.js +1 -0
  626. package/app/.next/static/chunks/app/api/settings/require-login/route-6301a4ed902b878a.js +1 -0
  627. package/app/.next/static/chunks/app/api/settings/route-6301a4ed902b878a.js +1 -0
  628. package/app/.next/static/chunks/app/api/settings/system-prompt/route-6301a4ed902b878a.js +1 -0
  629. package/app/.next/static/chunks/app/api/settings/thinking-budget/route-6301a4ed902b878a.js +1 -0
  630. package/app/.next/static/chunks/app/api/shutdown/route-6301a4ed902b878a.js +1 -0
  631. package/app/.next/static/chunks/app/api/storage/health/route-6301a4ed902b878a.js +1 -0
  632. package/app/.next/static/chunks/app/api/sync/cloud/route-6301a4ed902b878a.js +1 -0
  633. package/app/.next/static/chunks/app/api/sync/initialize/route-6301a4ed902b878a.js +1 -0
  634. package/app/.next/static/chunks/app/api/tags/route-6301a4ed902b878a.js +1 -0
  635. package/app/.next/static/chunks/app/api/telemetry/summary/route-6301a4ed902b878a.js +1 -0
  636. package/app/.next/static/chunks/app/api/token-health/route-6301a4ed902b878a.js +1 -0
  637. package/app/.next/static/chunks/app/api/translator/detect/route-6301a4ed902b878a.js +1 -0
  638. package/app/.next/static/chunks/app/api/translator/history/route-6301a4ed902b878a.js +1 -0
  639. package/app/.next/static/chunks/app/api/translator/load/route-6301a4ed902b878a.js +1 -0
  640. package/app/.next/static/chunks/app/api/translator/save/route-6301a4ed902b878a.js +1 -0
  641. package/app/.next/static/chunks/app/api/translator/send/route-6301a4ed902b878a.js +1 -0
  642. package/app/.next/static/chunks/app/api/translator/translate/route-6301a4ed902b878a.js +1 -0
  643. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-6301a4ed902b878a.js +1 -0
  644. package/app/.next/static/chunks/app/api/usage/analytics/route-6301a4ed902b878a.js +1 -0
  645. package/app/.next/static/chunks/app/api/usage/budget/route-6301a4ed902b878a.js +1 -0
  646. package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-6301a4ed902b878a.js +1 -0
  647. package/app/.next/static/chunks/app/api/usage/call-logs/route-6301a4ed902b878a.js +1 -0
  648. package/app/.next/static/chunks/app/api/usage/history/route-6301a4ed902b878a.js +1 -0
  649. package/app/.next/static/chunks/app/api/usage/logs/route-6301a4ed902b878a.js +1 -0
  650. package/app/.next/static/chunks/app/api/usage/proxy-logs/route-6301a4ed902b878a.js +1 -0
  651. package/app/.next/static/chunks/app/api/usage/request-logs/route-6301a4ed902b878a.js +1 -0
  652. package/app/.next/static/chunks/app/api/v1/api/chat/route-6301a4ed902b878a.js +1 -0
  653. package/app/.next/static/chunks/app/api/v1/audio/speech/route-6301a4ed902b878a.js +1 -0
  654. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-6301a4ed902b878a.js +1 -0
  655. package/app/.next/static/chunks/app/api/v1/chat/completions/route-6301a4ed902b878a.js +1 -0
  656. package/app/.next/static/chunks/app/api/v1/embeddings/route-6301a4ed902b878a.js +1 -0
  657. package/app/.next/static/chunks/app/api/v1/images/generations/route-6301a4ed902b878a.js +1 -0
  658. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-6301a4ed902b878a.js +1 -0
  659. package/app/.next/static/chunks/app/api/v1/messages/route-6301a4ed902b878a.js +1 -0
  660. package/app/.next/static/chunks/app/api/v1/models/route-6301a4ed902b878a.js +1 -0
  661. package/app/.next/static/chunks/app/api/v1/moderations/route-6301a4ed902b878a.js +1 -0
  662. package/app/.next/static/chunks/app/api/v1/music/generations/route-6301a4ed902b878a.js +1 -0
  663. package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-6301a4ed902b878a.js +1 -0
  664. package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-6301a4ed902b878a.js +1 -0
  665. package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-6301a4ed902b878a.js +1 -0
  666. package/app/.next/static/chunks/app/api/v1/rerank/route-6301a4ed902b878a.js +1 -0
  667. package/app/.next/static/chunks/app/api/v1/responses/route-6301a4ed902b878a.js +1 -0
  668. package/app/.next/static/chunks/app/api/v1/route-6301a4ed902b878a.js +1 -0
  669. package/app/.next/static/chunks/app/api/v1/videos/generations/route-6301a4ed902b878a.js +1 -0
  670. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-6301a4ed902b878a.js +1 -0
  671. package/app/.next/static/chunks/app/api/v1beta/models/route-6301a4ed902b878a.js +1 -0
  672. package/app/.next/static/chunks/app/callback/{page-585a53f7dc6a30f1.js → page-0f0ebc0820dd18a5.js} +1 -1
  673. package/app/.next/static/chunks/app/docs/{page-2fe9dcbeb3f738c0.js → page-3658b3f15df3a19e.js} +1 -1
  674. package/app/.next/static/chunks/app/{error-0d59fc4efafbc38c.js → error-f918d9961a2368d3.js} +1 -1
  675. package/app/.next/static/chunks/app/forbidden/page-77657dfa95e61cd8.js +1 -0
  676. package/app/.next/static/chunks/app/forgot-password/page-be3bacc125c30a6b.js +1 -0
  677. package/app/.next/static/chunks/app/global-error-504ff9093e2a997d.js +1 -0
  678. package/app/.next/static/chunks/app/landing/page-75b0c988db383cfc.js +1 -0
  679. package/app/.next/static/chunks/app/{layout-108592eafb959363.js → layout-070972eb026af319.js} +1 -1
  680. package/app/.next/static/chunks/app/login/{page-121c612ee459e7c2.js → page-6c769465e407368f.js} +1 -1
  681. package/app/.next/static/chunks/app/not-found-11b712c853d93172.js +1 -0
  682. package/app/.next/static/chunks/app/page-6301a4ed902b878a.js +1 -0
  683. package/app/.next/static/chunks/app/privacy/{page-2fe9dcbeb3f738c0.js → page-3658b3f15df3a19e.js} +1 -1
  684. package/app/.next/static/chunks/app/terms/{page-2fe9dcbeb3f738c0.js → page-3658b3f15df3a19e.js} +1 -1
  685. package/app/.next/static/chunks/{main-app-c9da11a8061df107.js → main-app-ae230f6bf51a5edb.js} +1 -1
  686. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-6301a4ed902b878a.js +1 -0
  687. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-6301a4ed902b878a.js +1 -0
  688. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-6301a4ed902b878a.js +1 -0
  689. package/app/.next/static/css/bcd1741aee9d39ab.css +1 -0
  690. package/app/package.json +1 -1
  691. package/app/server.js +1 -1
  692. package/package.json +1 -1
  693. package/app/.next/server/chunks/5248.js +0 -1
  694. package/app/.next/server/chunks/5393.js +0 -2
  695. package/app/.next/static/chunks/5846-9e0f1f3afcbfb08c.js +0 -2
  696. package/app/.next/static/chunks/app/(dashboard)/dashboard/analytics/loading-6f1750506292c630.js +0 -1
  697. package/app/.next/static/chunks/app/(dashboard)/dashboard/api-manager/page-1dd4d0c348a7b0a6.js +0 -1
  698. package/app/.next/static/chunks/app/(dashboard)/dashboard/audit-log/page-e5bf8955e7b9a4f5.js +0 -1
  699. package/app/.next/static/chunks/app/(dashboard)/dashboard/cli-tools/page-77ab26722f5c56c7.js +0 -15
  700. package/app/.next/static/chunks/app/(dashboard)/dashboard/endpoint/page-1420c3ca376f1585.js +0 -1
  701. package/app/.next/static/chunks/app/(dashboard)/dashboard/limits/page-f4a2d6d07df5ddc4.js +0 -1
  702. package/app/.next/static/chunks/app/(dashboard)/dashboard/media/page-1d0ca9b5d3eaf7cd.js +0 -1
  703. package/app/.next/static/chunks/app/(dashboard)/dashboard/page-388840686801f3f5.js +0 -1
  704. package/app/.next/static/chunks/app/(dashboard)/dashboard/profile/page-cab2fb7f592d3c36.js +0 -1
  705. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/[id]/page-9c8ffb212f855704.js +0 -1
  706. package/app/.next/static/chunks/app/(dashboard)/dashboard/providers/new/page-31cdb6e15134d8c2.js +0 -1
  707. package/app/.next/static/chunks/app/(dashboard)/dashboard/settings/page-1393d4935fc087cf.js +0 -1
  708. package/app/.next/static/chunks/app/_global-error/page-cab2fb7f592d3c36.js +0 -1
  709. package/app/.next/static/chunks/app/_not-found/page-cab2fb7f592d3c36.js +0 -1
  710. package/app/.next/static/chunks/app/api/auth/login/route-cab2fb7f592d3c36.js +0 -1
  711. package/app/.next/static/chunks/app/api/auth/logout/route-cab2fb7f592d3c36.js +0 -1
  712. package/app/.next/static/chunks/app/api/auth/status/route-cab2fb7f592d3c36.js +0 -1
  713. package/app/.next/static/chunks/app/api/cache/route-cab2fb7f592d3c36.js +0 -1
  714. package/app/.next/static/chunks/app/api/cache/stats/route-cab2fb7f592d3c36.js +0 -1
  715. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-cab2fb7f592d3c36.js +0 -1
  716. package/app/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-cab2fb7f592d3c36.js +0 -1
  717. package/app/.next/static/chunks/app/api/cli-tools/backups/route-cab2fb7f592d3c36.js +0 -1
  718. package/app/.next/static/chunks/app/api/cli-tools/claude-settings/route-cab2fb7f592d3c36.js +0 -1
  719. package/app/.next/static/chunks/app/api/cli-tools/cline-settings/route-cab2fb7f592d3c36.js +0 -1
  720. package/app/.next/static/chunks/app/api/cli-tools/codex-profiles/route-cab2fb7f592d3c36.js +0 -1
  721. package/app/.next/static/chunks/app/api/cli-tools/codex-settings/route-cab2fb7f592d3c36.js +0 -1
  722. package/app/.next/static/chunks/app/api/cli-tools/droid-settings/route-cab2fb7f592d3c36.js +0 -1
  723. package/app/.next/static/chunks/app/api/cli-tools/guide-settings/[toolId]/route-cab2fb7f592d3c36.js +0 -1
  724. package/app/.next/static/chunks/app/api/cli-tools/kilo-settings/route-cab2fb7f592d3c36.js +0 -1
  725. package/app/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-cab2fb7f592d3c36.js +0 -1
  726. package/app/.next/static/chunks/app/api/cli-tools/runtime/[toolId]/route-cab2fb7f592d3c36.js +0 -1
  727. package/app/.next/static/chunks/app/api/cli-tools/status/route-cab2fb7f592d3c36.js +0 -1
  728. package/app/.next/static/chunks/app/api/cloud/auth/route-cab2fb7f592d3c36.js +0 -1
  729. package/app/.next/static/chunks/app/api/cloud/credentials/update/route-cab2fb7f592d3c36.js +0 -1
  730. package/app/.next/static/chunks/app/api/cloud/model/resolve/route-cab2fb7f592d3c36.js +0 -1
  731. package/app/.next/static/chunks/app/api/cloud/models/alias/route-cab2fb7f592d3c36.js +0 -1
  732. package/app/.next/static/chunks/app/api/combos/[id]/route-cab2fb7f592d3c36.js +0 -1
  733. package/app/.next/static/chunks/app/api/combos/metrics/route-cab2fb7f592d3c36.js +0 -1
  734. package/app/.next/static/chunks/app/api/combos/route-cab2fb7f592d3c36.js +0 -1
  735. package/app/.next/static/chunks/app/api/combos/test/route-cab2fb7f592d3c36.js +0 -1
  736. package/app/.next/static/chunks/app/api/compliance/audit-log/route-cab2fb7f592d3c36.js +0 -1
  737. package/app/.next/static/chunks/app/api/db-backups/export/route-cab2fb7f592d3c36.js +0 -1
  738. package/app/.next/static/chunks/app/api/db-backups/exportAll/route-cab2fb7f592d3c36.js +0 -1
  739. package/app/.next/static/chunks/app/api/db-backups/import/route-cab2fb7f592d3c36.js +0 -1
  740. package/app/.next/static/chunks/app/api/db-backups/route-cab2fb7f592d3c36.js +0 -1
  741. package/app/.next/static/chunks/app/api/evals/[suiteId]/route-cab2fb7f592d3c36.js +0 -1
  742. package/app/.next/static/chunks/app/api/evals/route-cab2fb7f592d3c36.js +0 -1
  743. package/app/.next/static/chunks/app/api/fallback/chains/route-cab2fb7f592d3c36.js +0 -1
  744. package/app/.next/static/chunks/app/api/init/route-cab2fb7f592d3c36.js +0 -1
  745. package/app/.next/static/chunks/app/api/keys/[id]/route-cab2fb7f592d3c36.js +0 -1
  746. package/app/.next/static/chunks/app/api/keys/route-cab2fb7f592d3c36.js +0 -1
  747. package/app/.next/static/chunks/app/api/logs/console/route-cab2fb7f592d3c36.js +0 -1
  748. package/app/.next/static/chunks/app/api/models/alias/route-cab2fb7f592d3c36.js +0 -1
  749. package/app/.next/static/chunks/app/api/models/availability/route-cab2fb7f592d3c36.js +0 -1
  750. package/app/.next/static/chunks/app/api/models/catalog/route-cab2fb7f592d3c36.js +0 -1
  751. package/app/.next/static/chunks/app/api/models/route-cab2fb7f592d3c36.js +0 -1
  752. package/app/.next/static/chunks/app/api/monitoring/health/route-cab2fb7f592d3c36.js +0 -1
  753. package/app/.next/static/chunks/app/api/oauth/[provider]/[action]/route-cab2fb7f592d3c36.js +0 -1
  754. package/app/.next/static/chunks/app/api/oauth/cursor/auto-import/route-cab2fb7f592d3c36.js +0 -1
  755. package/app/.next/static/chunks/app/api/oauth/cursor/import/route-cab2fb7f592d3c36.js +0 -1
  756. package/app/.next/static/chunks/app/api/oauth/kiro/auto-import/route-cab2fb7f592d3c36.js +0 -1
  757. package/app/.next/static/chunks/app/api/oauth/kiro/import/route-cab2fb7f592d3c36.js +0 -1
  758. package/app/.next/static/chunks/app/api/oauth/kiro/social-authorize/route-cab2fb7f592d3c36.js +0 -1
  759. package/app/.next/static/chunks/app/api/oauth/kiro/social-exchange/route-cab2fb7f592d3c36.js +0 -1
  760. package/app/.next/static/chunks/app/api/policies/route-cab2fb7f592d3c36.js +0 -1
  761. package/app/.next/static/chunks/app/api/pricing/defaults/route-cab2fb7f592d3c36.js +0 -1
  762. package/app/.next/static/chunks/app/api/pricing/models/route-cab2fb7f592d3c36.js +0 -1
  763. package/app/.next/static/chunks/app/api/pricing/route-cab2fb7f592d3c36.js +0 -1
  764. package/app/.next/static/chunks/app/api/provider-metrics/route-cab2fb7f592d3c36.js +0 -1
  765. package/app/.next/static/chunks/app/api/provider-models/route-cab2fb7f592d3c36.js +0 -1
  766. package/app/.next/static/chunks/app/api/provider-nodes/[id]/route-cab2fb7f592d3c36.js +0 -1
  767. package/app/.next/static/chunks/app/api/provider-nodes/route-cab2fb7f592d3c36.js +0 -1
  768. package/app/.next/static/chunks/app/api/provider-nodes/validate/route-cab2fb7f592d3c36.js +0 -1
  769. package/app/.next/static/chunks/app/api/providers/[id]/models/route-cab2fb7f592d3c36.js +0 -1
  770. package/app/.next/static/chunks/app/api/providers/[id]/route-cab2fb7f592d3c36.js +0 -1
  771. package/app/.next/static/chunks/app/api/providers/[id]/test/route-cab2fb7f592d3c36.js +0 -1
  772. package/app/.next/static/chunks/app/api/providers/client/route-cab2fb7f592d3c36.js +0 -1
  773. package/app/.next/static/chunks/app/api/providers/route-cab2fb7f592d3c36.js +0 -1
  774. package/app/.next/static/chunks/app/api/providers/test-batch/route-cab2fb7f592d3c36.js +0 -1
  775. package/app/.next/static/chunks/app/api/providers/validate/route-cab2fb7f592d3c36.js +0 -1
  776. package/app/.next/static/chunks/app/api/rate-limit/route-cab2fb7f592d3c36.js +0 -1
  777. package/app/.next/static/chunks/app/api/rate-limits/route-cab2fb7f592d3c36.js +0 -1
  778. package/app/.next/static/chunks/app/api/resilience/reset/route-cab2fb7f592d3c36.js +0 -1
  779. package/app/.next/static/chunks/app/api/resilience/route-cab2fb7f592d3c36.js +0 -1
  780. package/app/.next/static/chunks/app/api/restart/route-cab2fb7f592d3c36.js +0 -1
  781. package/app/.next/static/chunks/app/api/sessions/route-cab2fb7f592d3c36.js +0 -1
  782. package/app/.next/static/chunks/app/api/settings/combo-defaults/route-cab2fb7f592d3c36.js +0 -1
  783. package/app/.next/static/chunks/app/api/settings/ip-filter/route-cab2fb7f592d3c36.js +0 -1
  784. package/app/.next/static/chunks/app/api/settings/proxy/route-cab2fb7f592d3c36.js +0 -1
  785. package/app/.next/static/chunks/app/api/settings/proxy/test/route-cab2fb7f592d3c36.js +0 -1
  786. package/app/.next/static/chunks/app/api/settings/require-login/route-cab2fb7f592d3c36.js +0 -1
  787. package/app/.next/static/chunks/app/api/settings/route-cab2fb7f592d3c36.js +0 -1
  788. package/app/.next/static/chunks/app/api/settings/system-prompt/route-cab2fb7f592d3c36.js +0 -1
  789. package/app/.next/static/chunks/app/api/settings/thinking-budget/route-cab2fb7f592d3c36.js +0 -1
  790. package/app/.next/static/chunks/app/api/shutdown/route-cab2fb7f592d3c36.js +0 -1
  791. package/app/.next/static/chunks/app/api/storage/health/route-cab2fb7f592d3c36.js +0 -1
  792. package/app/.next/static/chunks/app/api/sync/cloud/route-cab2fb7f592d3c36.js +0 -1
  793. package/app/.next/static/chunks/app/api/sync/initialize/route-cab2fb7f592d3c36.js +0 -1
  794. package/app/.next/static/chunks/app/api/tags/route-cab2fb7f592d3c36.js +0 -1
  795. package/app/.next/static/chunks/app/api/telemetry/summary/route-cab2fb7f592d3c36.js +0 -1
  796. package/app/.next/static/chunks/app/api/token-health/route-cab2fb7f592d3c36.js +0 -1
  797. package/app/.next/static/chunks/app/api/translator/detect/route-cab2fb7f592d3c36.js +0 -1
  798. package/app/.next/static/chunks/app/api/translator/history/route-cab2fb7f592d3c36.js +0 -1
  799. package/app/.next/static/chunks/app/api/translator/load/route-cab2fb7f592d3c36.js +0 -1
  800. package/app/.next/static/chunks/app/api/translator/save/route-cab2fb7f592d3c36.js +0 -1
  801. package/app/.next/static/chunks/app/api/translator/send/route-cab2fb7f592d3c36.js +0 -1
  802. package/app/.next/static/chunks/app/api/translator/translate/route-cab2fb7f592d3c36.js +0 -1
  803. package/app/.next/static/chunks/app/api/usage/[connectionId]/route-cab2fb7f592d3c36.js +0 -1
  804. package/app/.next/static/chunks/app/api/usage/analytics/route-cab2fb7f592d3c36.js +0 -1
  805. package/app/.next/static/chunks/app/api/usage/budget/route-cab2fb7f592d3c36.js +0 -1
  806. package/app/.next/static/chunks/app/api/usage/call-logs/[id]/route-cab2fb7f592d3c36.js +0 -1
  807. package/app/.next/static/chunks/app/api/usage/call-logs/route-cab2fb7f592d3c36.js +0 -1
  808. package/app/.next/static/chunks/app/api/usage/history/route-cab2fb7f592d3c36.js +0 -1
  809. package/app/.next/static/chunks/app/api/usage/logs/route-cab2fb7f592d3c36.js +0 -1
  810. package/app/.next/static/chunks/app/api/usage/proxy-logs/route-cab2fb7f592d3c36.js +0 -1
  811. package/app/.next/static/chunks/app/api/usage/request-logs/route-cab2fb7f592d3c36.js +0 -1
  812. package/app/.next/static/chunks/app/api/v1/api/chat/route-cab2fb7f592d3c36.js +0 -1
  813. package/app/.next/static/chunks/app/api/v1/audio/speech/route-cab2fb7f592d3c36.js +0 -1
  814. package/app/.next/static/chunks/app/api/v1/audio/transcriptions/route-cab2fb7f592d3c36.js +0 -1
  815. package/app/.next/static/chunks/app/api/v1/chat/completions/route-cab2fb7f592d3c36.js +0 -1
  816. package/app/.next/static/chunks/app/api/v1/embeddings/route-cab2fb7f592d3c36.js +0 -1
  817. package/app/.next/static/chunks/app/api/v1/images/generations/route-cab2fb7f592d3c36.js +0 -1
  818. package/app/.next/static/chunks/app/api/v1/messages/count_tokens/route-cab2fb7f592d3c36.js +0 -1
  819. package/app/.next/static/chunks/app/api/v1/messages/route-cab2fb7f592d3c36.js +0 -1
  820. package/app/.next/static/chunks/app/api/v1/models/route-cab2fb7f592d3c36.js +0 -1
  821. package/app/.next/static/chunks/app/api/v1/moderations/route-cab2fb7f592d3c36.js +0 -1
  822. package/app/.next/static/chunks/app/api/v1/music/generations/route-cab2fb7f592d3c36.js +0 -1
  823. package/app/.next/static/chunks/app/api/v1/providers/[provider]/chat/completions/route-cab2fb7f592d3c36.js +0 -1
  824. package/app/.next/static/chunks/app/api/v1/providers/[provider]/embeddings/route-cab2fb7f592d3c36.js +0 -1
  825. package/app/.next/static/chunks/app/api/v1/providers/[provider]/images/generations/route-cab2fb7f592d3c36.js +0 -1
  826. package/app/.next/static/chunks/app/api/v1/rerank/route-cab2fb7f592d3c36.js +0 -1
  827. package/app/.next/static/chunks/app/api/v1/responses/route-cab2fb7f592d3c36.js +0 -1
  828. package/app/.next/static/chunks/app/api/v1/route-cab2fb7f592d3c36.js +0 -1
  829. package/app/.next/static/chunks/app/api/v1/videos/generations/route-cab2fb7f592d3c36.js +0 -1
  830. package/app/.next/static/chunks/app/api/v1beta/models/[...path]/route-cab2fb7f592d3c36.js +0 -1
  831. package/app/.next/static/chunks/app/api/v1beta/models/route-cab2fb7f592d3c36.js +0 -1
  832. package/app/.next/static/chunks/app/forbidden/page-df886dfa2d5bd9fa.js +0 -1
  833. package/app/.next/static/chunks/app/forgot-password/page-2a495f0b0c653ab4.js +0 -1
  834. package/app/.next/static/chunks/app/global-error-41eef2a698918fc1.js +0 -1
  835. package/app/.next/static/chunks/app/landing/page-9d540ab1716f8e3e.js +0 -1
  836. package/app/.next/static/chunks/app/not-found-1dbd8c3e506fe00f.js +0 -1
  837. package/app/.next/static/chunks/app/page-cab2fb7f592d3c36.js +0 -1
  838. package/app/.next/static/chunks/next/dist/client/components/builtin/app-error-cab2fb7f592d3c36.js +0 -1
  839. package/app/.next/static/chunks/next/dist/client/components/builtin/forbidden-cab2fb7f592d3c36.js +0 -1
  840. package/app/.next/static/chunks/next/dist/client/components/builtin/unauthorized-cab2fb7f592d3c36.js +0 -1
  841. package/app/.next/static/css/b77490a14619ffbb.css +0 -1
  842. package/app/.next/static/ozfkuTtQLl3_rnlOdkSZi/_buildManifest.js +0 -1
  843. /package/app/.next/static/{ozfkuTtQLl3_rnlOdkSZi → a624rqqXG_QtNPqv8ZMWa}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";exports.id=6118,exports.ids=[6118],exports.modules={96118:a=>{a.exports=JSON.parse('{"common":{"save":"Tallenna","cancel":"Peruuta","delete":"Poista","loading":"Ladataan...","error":"Tapahtui virhe","success":"Menestyst\xe4","confirm":"Oletko varma?","refresh":"P\xe4ivit\xe4","close":"Sulje","add":"Lis\xe4\xe4","edit":"Muokkaa","search":"Etsi","back":"Takaisin","next":"Seuraavaksi","submit":"L\xe4het\xe4","reset":"Nollaa","copy":"Kopioi","copied":"Kopioitu!","enabled":"K\xe4yt\xf6ss\xe4","disabled":"Ei k\xe4yt\xf6ss\xe4","active":"Aktiivinen","inactive":"Ei-aktiivinen","noData":"Tietoja ei ole saatavilla","configure":"M\xe4\xe4rit\xe4","manage":"Hallitse","name":"Nimi","actions":"Toiminnot","status":"Tila","type":"Kirjoita","model":"Malli","models":"mallit","provider":"Palveluntarjoaja","account":"Tili","time":"Aika","details":"Yksityiskohdat","created":"Luotu","lastUsed":"Viimeksi k\xe4ytetty","loadMore":"Lataa lis\xe4\xe4","noResults":"Tuloksia ei l\xf6ytynyt","reloadPage":"Lataa sivu uudelleen","connected":"Yhdistetty","disconnected":"Yhteys katkaistu","notConfigured":"Ei m\xe4\xe4ritetty","testConnection":"Testaa yhteys","enable":"Ota k\xe4ytt\xf6\xf6n","disable":"Poista k\xe4yt\xf6st\xe4","columns":"Sarakkeet","newest":"Uusin","oldest":"Vanhin","all":"Kaikki","none":"Ei mit\xe4\xe4n","yes":"Kyll\xe4","no":"Ei","warning":"Varoitus","note":"Huom","free":"Ilmainen","skipToContent":"Siirry sis\xe4lt\xf6\xf6n"},"sidebar":{"home":"Kotiin","dashboard":"Kojelauta","providers":"Palveluntarjoajat","combos":"Yhdistelm\xe4t","usage":"K\xe4ytt\xf6","analytics":"Analytics","costs":"Kustannukset","health":"Terveys","limits":"Rajoitukset ja kiinti\xf6t","cliTools":"CLI-ty\xf6kalut","settings":"Asetukset","translator":"K\xe4\xe4nt\xe4j\xe4","docs":"Asiakirjat","issues":"Ongelmat","endpoint":"P\xe4\xe4tepiste","apiManager":"API Manager","logs":"Lokit","auditLog":"Tarkastusloki","shutdown":"Sammutus","restart":"K\xe4ynnist\xe4 uudelleen","shutdownConfirm":"Suljetaanko OmniRoute?","restartConfirm":"K\xe4ynnistet\xe4\xe4nk\xf6 OmniRoute uudelleen?","version":"v{version}","debug":"Debug","system":"J\xe4rjestelm\xe4","help":"Apua","serverDisconnected":"Palvelin yhteys katkaistu","serverDisconnectedMsg":"V\xe4lityspalvelin on pys\xe4ytetty tai k\xe4ynnistyy uudelleen.","expandSidebar":"Laajenna sivupalkki","collapseSidebar":"Tiivist\xe4 sivupalkki"},"header":{"logout":"Kirjaudu ulos","language":"Kieli","providers":"Palveluntarjoajat","providerDescription":"Hallinnoi AI-palveluntarjoajan yhteyksi\xe4","combos":"Yhdistelm\xe4t","comboDescription":"Malliyhdistelm\xe4t varaosilla","usage":"K\xe4ytt\xf6 ja analytiikka","usageDescription":"Valvo API-k\xe4ytt\xf6\xe4si, tunnuksesi kulutusta ja pyynt\xf6lokeja","analytics":"Analytics","analyticsDescription":"Kaavioita, trendej\xe4 ja arviointitietoja","cliTools":"CLI-ty\xf6kalut","cliToolsDescription":"M\xe4\xe4rit\xe4 CLI-ty\xf6kalut","home":"Kotiin","homeDescription":"Tervetuloa OmniRouteen","endpoint":"P\xe4\xe4tepiste","endpointDescription":"API-p\xe4\xe4tepisteen m\xe4\xe4ritys","settings":"Asetukset","settingsDescription":"Hallinnoi asetuksiasi","openaiCompatible":"OpenAI-yhteensopiva","anthropicCompatible":"Antrooppinen yhteensopiva"},"home":{"quickStart":"Pika-aloitus","quickStartDesc":"P\xe4\xe4set liikkeelle nelj\xe4ss\xe4 vaiheessa. Yhdist\xe4 palveluntarjoajat, reittimallit, tarkkaile kaikkea.","fullDocs":"T\xe4ydelliset asiakirjat","step1Title":"1. Luo API-avain","step1Desc":"Siirry kohtaan <endpoint>Endpoint</endpoint> -> Rekister\xf6idyt avaimet. Luo yksi avain ymp\xe4rist\xf6\xe4 kohden.","step2Title":"2. Yhdist\xe4 palveluntarjoajat","step2Desc":"Lis\xe4\xe4 tilej\xe4 palveluun <providers>Providers</providers>. Tukee OAuthia, API-avainta ja ilmaisia ​​tasoja.","step3Title":"3. Osoita asiakkaasi","step3Desc":"Aseta perus-URL-osoitteeksi {url} IDE- tai API-asiakkaassasi.","step4Title":"4. Valvo ja optimoi","step4Desc":"Seuraa tunnuksia, kustannuksia ja virheit\xe4 <logs>Pyynt\xf6lokeissa</logs> ja <analytics>Analytics</analytics>.","providersOverview":"Palveluntarjoajien yleiskatsaus","configuredOf":"{configured} m\xe4\xe4ritetty {total} k\xe4ytett\xe4viss\xe4 olevasta palveluntarjoajasta","noModelsAvailable":"T\xe4lle tarjoajalle ei ole saatavilla malleja.","configureFirst":"M\xe4\xe4rit\xe4 yhteys ensin kohteessa {providers}","configureProvider":"M\xe4\xe4rit\xe4 Provider","modelAvailable":"{count} malli saatavilla","modelsAvailable":"{count} malleja saatavilla","connectionsActive":"{count} yhteys aktiivinen","connectionsActivePlural":"{count} yhteydet aktiivisia","copyModelName":"Kopioi mallin nimi","documentation":"Dokumentaatio","healthMonitor":"Terveysmittari","reportIssue":"Ilmoita ongelmasta","activeError":"{active} aktiivinen \xb7 {errors} virhe","oauthLabel":"OAuth","apiKeyLabel":"API-avain","requestsShort":"{count} vaatimus","providerModelsTitle":"{provider} - Mallit","copiedModel":"Kopioitu: {model}","aliasLabel":"alias"},"analytics":{"title":"Analytics","overviewDescription":"Tarkkaile sovellusliittym\xe4n k\xe4ytt\xf6tapoja, tunnuksen kulutusta, kustannuksia ja toimintatrendej\xe4 kaikilla palveluntarjoajilla ja malleilla.","evalsDescription":"Testaa ja vahvista LLM-p\xe4\xe4tepisteesi suorittamalla arviointipaketteja. Vertaile mallin laatua, havaitse regressiot ja vertaile viivett\xe4.","overview":"Yleiskatsaus","evals":"Evals"},"apiManager":{"title":"API-avaimet","createKey":"Luo API-avain","key":"Avain","revokeKey":"Peruuta avain","revokeConfirm":"Haluatko varmasti peruuttaa t\xe4m\xe4n API-avaimen?","noKeys":"Ei viel\xe4 API-avaimia","noKeysDesc":"Luo ensimm\xe4inen API-avain p\xe4\xe4tepisteellesi tulevien pyynt\xf6jen todentamiseksi","keyLabel":"Avaimen etiketti","permissions":"K\xe4ytt\xf6oikeudet","expiresAt":"Vanhenee","never":"Ei koskaan","revoke":"Peruuta","showKey":"N\xe4yt\xe4 avain","hideKey":"Piilota avain","copyKey":"Kopioi API-avain","allModels":"Kaikki mallit","selectedModels":"Valitut mallit","readOnly":"Vain luku","fullAccess":"T\xe4ysi p\xe4\xe4sy","keyManagement":"API-avainten hallinta","keyManagementDesc":"Luo ja hallitse API-avaimia p\xe4\xe4tepisteesi pyynt\xf6jen todentamiseksi","totalKeys":"Avaimet yhteens\xe4","restricted":"Rajoitettu","totalRequests":"Pyynt\xf6j\xe4 yhteens\xe4","modelsAvailable":"Mallit saatavilla","registeredKeys":"Rekister\xf6ity avaimet","keysRegistered":"{count} avaimet rekister\xf6ity","keyRegistered":"{count} avain rekister\xf6ity","keysSecurityNote":"Jokainen avain erist\xe4\xe4 k\xe4yt\xf6n seurannan ja voidaan peruuttaa itsen\xe4isesti. Avaimet peitet\xe4\xe4n luomisen j\xe4lkeen turvallisuuden vuoksi.","createFirstKey":"Luo ensimm\xe4inen avaimesi","name":"Nimi","usage":"K\xe4ytt\xf6","created":"Luotu","actions":"Toiminnot","reqs":"vaatimukset","neverUsed":"Ei koskaan k\xe4ytetty","deleteConfirm":"Poistetaanko t\xe4m\xe4 API-avain?","usageTips":"K\xe4ytt\xf6vinkkej\xe4","tipAuth":"K\xe4yt\xe4 API-avaimia Authorization-otsikossa siirtotien\xe4 YOUR_KEY","tipSecure":"Avaimet n\xe4kyv\xe4t vain kerran luomisen aikana – s\xe4ilyt\xe4 ne turvallisesti","tipSeparate":"Luo erilliset avaimet eri asiakkaille tai ymp\xe4rist\xf6ille","tipRestrict":"Rajoita avaimet tiettyihin malleihin parantaaksesi turvallisuutta ja kustannusten hallintaa","keyName":"Avaimen nimi","keyNamePlaceholder":"esim. tuotantoavain, kehitysavain","keyNameDesc":"Valitse kuvaava nimi t\xe4m\xe4n avaimen tarkoituksen tunnistamiseksi","keyCreated":"API-avain luotu","keyCreatedSuccess":"Avain luotu onnistuneesti!","keyCreatedNote":"Kopioi ja tallenna t\xe4m\xe4 avain nyt – sit\xe4 ei n\xe4ytet\xe4 uudelleen.","done":"Valmis","savePermissions":"Tallenna k\xe4ytt\xf6oikeudet","allowAll":"Salli kaikki","restrict":"Rajoita","allowAllInfo":"T\xe4ll\xe4 avaimella p\xe4\xe4see kaikkiin saatavilla oleviin malleihin.","restrictInfo":"T\xe4ll\xe4 avaimella voi k\xe4ytt\xe4\xe4 {selected}/{total} mallia.","selected":"{count} valittu","all":"Kaikki","clear":"Selke\xe4","searchModels":"Hae malleja nimen tai toimittajan mukaan...","noModelsFound":"Malleja ei l\xf6ytynyt","keyNameRequired":"Avaimen nimi vaaditaan","keyNameTooLong":"Avaimen nimess\xe4 saa olla enint\xe4\xe4n {max} merkki\xe4","keyNameInvalid":"Avaimen nimi voi sis\xe4lt\xe4\xe4 vain kirjaimia, numeroita, v\xe4lily\xf6ntej\xe4, yhdysmerkkej\xe4 ja alaviivoja","invalidKeyName":"Virheellinen avaimen nimi","failedCreateKey":"Avaimen luominen ep\xe4onnistui","failedCreateKeyRetry":"Avaimen luominen ep\xe4onnistui. Yrit\xe4 uudelleen.","invalidKeyId":"Virheellinen avaintunnus","failedDeleteKey":"Avaimen poistaminen ep\xe4onnistui","failedDeleteKeyRetry":"Avaimen poistaminen ep\xe4onnistui. Yrit\xe4 uudelleen.","invalidModelsSelection":"Virheellinen mallivalinta","cannotSelectMoreThanModels":"Ei voi valita enemp\xe4\xe4 kuin {max} mallia","failedUpdatePermissions":"K\xe4ytt\xf6oikeuksien p\xe4ivitt\xe4minen ep\xe4onnistui","failedUpdatePermissionsRetry":"K\xe4ytt\xf6oikeuksien p\xe4ivitt\xe4minen ep\xe4onnistui. Yrit\xe4 uudelleen.","unknownProvider":"tuntematon","copyMaskedKey":"Kopioi peitetty avain","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"Viimeisin: {date}","editPermissions":"Muokkaa k\xe4ytt\xf6oikeuksia","deleteKey":"Poista avain","model":"{count} malli","models":"{count} mallit","permissionsTitle":"Luvat: {name}","allowAllDesc":"T\xe4ll\xe4 avaimella p\xe4\xe4see kaikkiin saatavilla oleviin malleihin.","restrictDesc":"T\xe4ll\xe4 avaimella voi k\xe4ytt\xe4\xe4 {selectedCount}/{totalModels} mallia.","selectedCount":"{count} valittu"},"auditLog":{"title":"Tarkastusloki","searchPlaceholder":"Hakutoiminnot...","action":"Toiminta","actor":"n\xe4yttelij\xe4","target":"Kohde","ipAddress":"IP-osoite","timestamp":"Aikaleima","noEntries":"Tarkastusmerkint\xf6j\xe4 ei l\xf6ytynyt","filterByAction":"Suodata toiminnon mukaan...","filterByActor":"Suodata n\xe4yttelij\xe4n mukaan...","filterEntriesAria":"Suodata tarkastuslokin merkinn\xe4t","filterByActionTypeAria":"Suodata toimintotyypin mukaan","filterByActorAria":"Suodata n\xe4yttelij\xe4n mukaan","refreshAuditLogAria":"P\xe4ivit\xe4 tarkastusloki","tableAria":"Tarkastuslokimerkinn\xe4t","failedFetchAuditLog":"Valvontalokin nouto ep\xe4onnistui","notAvailable":"—","description":"Hallinnolliset toimet ja turvallisuustapahtumat","showing":"N\xe4ytet\xe4\xe4n {count} merkint\xe4\xe4 (poikkeama {offset})","previous":"Edellinen"},"cliTools":{"title":"CLI-ty\xf6kalut","noActiveProviders":"Ei aktiivisia palveluntarjoajia","noActiveProvidersDesc":"Lis\xe4\xe4 ja yhdist\xe4 ensin palveluntarjoajat m\xe4\xe4ritt\xe4\xe4ksesi CLI-ty\xf6kalut.","mapModels":"Karttamallit","testConnection":"Testaa yhteys","connectionStatus":"Yhteyden tila","configureEndpoint":"M\xe4\xe4rit\xe4 p\xe4\xe4tepiste","instructions":"Ohjeet","modelMapping":"Mallin kartoitus","baseUrl":"Perus-URL-osoite","apiKey":"API-avain","configured":"M\xe4\xe4ritetty","notConfigured":"Ei m\xe4\xe4ritetty","notInstalled":"Ei asennettu","custom":"Mukautettu","unknown":"Tuntematon","lastSavedAt":"Viimeksi tallennettu: {date}","never":"Ei koskaan","justNow":"juuri nyt","minutesAgoShort":"{count}min sitten","hoursAgoShort":"{count}h sitten","daysAgoShort":"{count}pv sitten","monthsAgoShort":"{count}kk sitten","yearsAgoShort":"{count}v sitten","runtimeCheckFailed":"Ajonaikainen tarkistus ep\xe4onnistui","yourApiKeyPlaceholder":"sinun-api-avain","modelPlaceholder":"toimittaja/mallitunnus","configurationSaved":"M\xe4\xe4ritykset tallennettu onnistuneesti.","failedToSave":"M\xe4\xe4rityksen tallentaminen ep\xe4onnistui.","noApiKeysCreateOne":"Ei API-avaimia – Luo yksi Avaimet-sivulla","defaultOmnirouteKey":"sk_omniroute (oletus)","selectModel":"Valitse Malli","selectModelForAlias":"Valitse malli kohteelle {alias}","selectModelForTool":"Valitse malli kohteelle {tool}","select":"Valitse","clear":"Selke\xe4","comingSoon":"Tulossa pian","checkingRuntime":"Tarkistetaan ajonaikaista tilaa...","guideOnlyIntegration":"Vain ohjeellinen integrointi (ei vaadi paikallista suoritusaikaa)","cliRuntimeDetected":"CLI-ajoaika havaittu ja valmis","cliFoundNotRunnable":"CLI l\xf6ytyi, mutta ei ajettavissa{reason}","cliRuntimeNotDetected":"CLI-ajoaikaa ei havaittu","binary":"Bin\xe4\xe4ri","configPath":"Konfigurointipolku","configPathShort":"Konfig","failedCheckRuntimeStatus":"Ajonaikaisen tilan tarkistaminen ep\xe4onnistui.","copy":"Kopioi","copied":"Kopioitu","copyConfig":"Kopioi kokoonpano","saveConfig":"Tallenna kokoonpano","selectionSaved":"Valinta tallennettu","guide":"Opas","detected":"Havaittu","notReady":"Ei valmis","active":"Aktiivinen","inactive":"Ei-aktiivinen","startMitm":"K\xe4ynnist\xe4 MITM","stopMitm":"Lopeta MITM","mitmStarted":"MITM alkoi onnistuneesti!","mitmStopped":"MITM pys\xe4htyi onnistuneesti!","failedStart":"MITM:n k\xe4ynnist\xe4minen ep\xe4onnistui","failedStop":"MITM:n pys\xe4ytt\xe4minen ep\xe4onnistui","saveMappings":"Tallenna kartoitukset","mappingsSaved":"Kartaukset tallennettu!","failedSaveMappings":"Kartoitusten tallentaminen ep\xe4onnistui","howItWorks":"Miten se toimii:","antigravityHowWorksDesc":"Antigravity l\xe4hett\xe4\xe4 pyynt\xf6j\xe4 Googlen p\xe4\xe4tepisteeseen. MITM sieppaa ja ohjaa ne OmniRouteen.","antigravityStep1":"1. K\xe4ynnist\xe4 MITM reititt\xe4\xe4ksesi pyynn\xf6t OmniRouten kautta.","antigravityStep2Prefix":"2. Lis\xe4\xe4","antigravityStep2Suffix":"hosts-tiedostoon muodossa 127.0.0.1.","antigravityStep3":"3. Avaa Antigravity ja pyynn\xf6t v\xe4litet\xe4\xe4n.","sudoPasswordRequiredTitle":"Sudo-salasana vaaditaan","sudoPasswordHint":"J\xe4rjestelm\xe4nvalvojan salasana tarvitaan hosts-tiedoston ja j\xe4rjestelm\xe4n v\xe4lityspalvelimen asetusten muokkaamiseen.","enterSudoPassword":"Anna sudo-salasana","sudoPasswordRequiredError":"Sudo-salasana vaaditaan.","cancel":"Peruuta","confirm":"Vahvista","settingsApplied":"Asetukset otettu k\xe4ytt\xf6\xf6n onnistuneesti!","failedApplySettings":"Asetusten k\xe4ytt\xf6\xf6notto ep\xe4onnistui","settingsReset":"Asetusten nollaus onnistui!","failedResetSettings":"Asetusten nollaus ep\xe4onnistui","backupRestored":"Varmuuskopio palautettu!","failedRestore":"Palauttaminen ep\xe4onnistui","checkingCli":"Tarkistetaan {tool} CLI...","cliNotRunnable":"{tool} CLI asennettu, mutta ei ajettavissa","cliNotInstalled":"{tool} CLI:t\xe4 ei ole asennettu","cliNotDetected":"{tool} CLI:t\xe4 ei havaittu","cliDetectedReady":"{tool} CLI havaittu ja valmis","cliFoundFailedHealthcheck":"{tool} CLI l\xf6ydettiin, mutta ajonaikainen kuntotarkastus ep\xe4onnistui{reason}.","installCliPrompt":"Asenna {tool} CLI k\xe4ytt\xe4\xe4ksesi t\xe4t\xe4 ominaisuutta.","installCodexPrompt":"Asenna Codex CLI k\xe4ytt\xe4\xe4ksesi automaattista k\xe4ytt\xf6\xf6nottoa.","hide":"Piilota","howToInstall":"Kuinka asentaa","installationGuide":"Asennusopas","platforms":"macOS / Linux / Windows:","afterInstallationRun":"Suorita asennuksen j\xe4lkeen","toVerify":"varmistaaksesi.","current":"Nykyinen","baseUrlPlaceholder":"https://.../v1","resetToDefault":"Palauta oletusarvo","providerModelPlaceholder":"toimittaja/mallitunnus","apply":"K\xe4yt\xe4","reset":"Nollaa","manualConfig":"Manuaalinen konfigurointi","backups":"Varmuuskopiot","configBackups":"M\xe4\xe4ritysten varmuuskopiot","noBackupsYet":"Ei viel\xe4 varmuuskopioita. Varmuuskopiot luodaan automaattisesti ennen jokaista k\xe4ytt\xf6\xf6nottoa tai nollausta.","restore":"Palauta","backupRestoredReloading":"Varmuuskopio palautettu! Ladataan tilaa uudelleen...","failedRestoreBackup":"Varmuuskopion palauttaminen ep\xe4onnistui","applied":"Sovellettu!","failed":"Ep\xe4onnistui","resetDone":"Nollaa!","omnirouteConfiguredOpenAiCompatible":"OmniRoute on m\xe4\xe4ritetty OpenAI-yhteensopivaksi palveluntarjoajaksi","provider":"Palveluntarjoaja","model":"Malli","providers":"Palveluntarjoajat","auth":"Tod","noApiKeysAvailable":"API-avaimia ei ole saatavilla","usingDefaultOmniroute":"Oletuksena: sk_omniroute","updateConfig":"P\xe4ivit\xe4 Config","applyConfig":"K\xe4yt\xe4 konfiguraatiota","noBackupsAvailable":"Varmuuskopioita ei ole saatavilla.","profileSaved":"Profiili \\"{name}\\" tallennettu!","failedSaveProfile":"Profiilin tallennus ep\xe4onnistui","profileActivated":"Profiili aktivoitu!","failedActivateProfile":"Profiilin aktivointi ep\xe4onnistui","profiles":"Profiilit","savedProfiles":"Tallennetut profiilit","noProfilesYet":"Ei viel\xe4 tallennettuja profiileja. Tallenna nykyinen konfiguraatio alla olevaksi profiiliksi.","activate":"Aktivoi","deleteProfile":"Poista profiili","profileNamePlaceholder":"Profiilin nimi (esim. henkil\xf6kohtainen tili)","saveCurrent":"Tallenna nykyinen","codexAuthNotePrefix":"Codex k\xe4ytt\xe4\xe4","codexAuthNoteMiddle":"kanssa","codexAuthNoteSuffix":"Napsauta \\"K\xe4yt\xe4\\" m\xe4\xe4ritt\xe4\xe4ksesi automaattisesti.","claudeManualConfiguration":"Claude CLI - Manuaalinen konfigurointi","codexManualConfiguration":"Codex CLI - Manuaalinen konfigurointi","droidManualConfiguration":"Tehdasdroidi - manuaalinen konfigurointi","openClawManualConfiguration":"Open Claw - Manuaalinen konfigurointi","clineManualConfiguration":"Cline Manuaalinen konfigurointi","kiloManualConfiguration":"Kilo Code Manuaalinen konfigurointi","toolDescriptions":{"antigravity":"Google Antigravity IDE ja MITM","claude":"Antrooppinen Claude Code CLI","codex":"OpenAI Codex CLI","droid":"Tehdas Droid AI Assistant","openclaw":"Avaa Claw AI Assistant","cline":"Cline AI Coding Assistant CLI","kilo":"Kilo Code AI Assistant CLI","cursor":"Cursor AI Code Editor","continue":"Jatka AI Assistantia"},"guides":{"cursor":{"notes":{"0":"T\xe4m\xe4n ominaisuuden k\xe4ytt\xe4minen vaatii Cursor Pro -tilin.","1":"Kohdistin reititt\xe4\xe4 pyynn\xf6t oman palvelimensa kautta, joten paikallista p\xe4\xe4tepistett\xe4 ei tueta. Ota Cloud Endpoint k\xe4ytt\xf6\xf6n asetuksista."},"steps":{"1":{"title":"Avaa Asetukset","desc":"Siirry kohtaan Asetukset -> Mallit"},"2":{"title":"Ota OpenAI API k\xe4ytt\xf6\xf6n","desc":"Ota k\xe4ytt\xf6\xf6n \\"OpenAI API-avain\\" -vaihtoehto"},"3":{"title":"Perus-URL-osoite"},"4":{"title":"API-avain"},"5":{"title":"Lis\xe4\xe4 mukautettu malli","desc":"Napsauta \\"N\xe4yt\xe4 kaikki mallit\\" -> \\"Lis\xe4\xe4 mukautettu malli\\""},"6":{"title":"Valitse Malli"}}},"continue":{"steps":{"1":{"title":"Avaa Config","desc":"Avaa Jatka m\xe4\xe4ritystiedosto"},"2":{"title":"API-avain"},"3":{"title":"Valitse Malli"},"4":{"title":"Lis\xe4\xe4 mallin kokoonpano","desc":"Lis\xe4\xe4 seuraavat kokoonpanot mallien matriisiisi:"}}}}},"combos":{"title":"Yhdistelm\xe4t","description":"Luo mallikomboja painotetulla reitityksell\xe4 ja varatuella","createCombo":"Luo yhdistelm\xe4","editCombo":"Muokkaa yhdistelm\xe4\xe4","deleteCombo":"Poista yhdistelm\xe4","noModels":"Ei malleja","noModelsYet":"Malleja ei ole viel\xe4 lis\xe4tty","addModel":"Lis\xe4\xe4 malli","addModelToCombo":"Lis\xe4\xe4 malli yhdistelm\xe4\xe4n","routingStrategy":"Reititysstrategia","maxRetries":"Max Uudelleenyritykset","timeout":"Aikakatkaisu (ms)","healthcheck":"Terveystarkastus","priority":"Prioriteetti","fallback":"Varaa","roundRobin":"Round Robin","random":"Satunnainen","leastLatency":"Pienin latenssi","comboName":"Yhdistelm\xe4nimi","comboNamePlaceholder":"minun yhdistelm\xe4ni","deleteConfirm":"Poistetaanko t\xe4m\xe4 yhdistelm\xe4?","noCombosYet":"Ei komboja viel\xe4","comboCreated":"Yhdistelm\xe4 luotiin onnistuneesti","comboUpdated":"Yhdistelm\xe4n p\xe4ivitys onnistui","comboDeleted":"Yhdistelm\xe4 poistettu","failedCreate":"Yhdistelm\xe4n luominen ep\xe4onnistui","failedUpdate":"Yhdistelm\xe4n p\xe4ivitt\xe4minen ep\xe4onnistui","errorCreating":"Virhe yhdistelm\xe4n luomisessa","errorUpdating":"Virhe yhdistelm\xe4n p\xe4ivityksess\xe4","errorDeleting":"Virhe yhdistelm\xe4n poistamisessa","testFailed":"Testipyynt\xf6 ep\xe4onnistui","failedToggle":"Yhdistelm\xe4n vaihto ep\xe4onnistui","testResults":"Testitulokset – {name}","resolvedBy":"Ratkaisi:","more":"+{count} lis\xe4\xe4","reqs":"vaatimukset","success":"menestyst\xe4","proxyConfigured":"V\xe4lityspalvelin m\xe4\xe4ritetty","copyComboName":"Kopioi yhdistelm\xe4nimi","enableCombo":"Ota yhdistelm\xe4 k\xe4ytt\xf6\xf6n","disableCombo":"Poista yhdistelm\xe4 k\xe4yt\xf6st\xe4","testCombo":"Testiyhdistelm\xe4","duplicate":"Kopioi","proxyConfig":"V\xe4lityspalvelimen m\xe4\xe4ritys","nameRequired":"Nimi vaaditaan","nameInvalid":"Vain kirjaimet, numerot, -, _, / ja . sallittu","nameHint":"Kirjaimet, numerot, -, _, / ja . sallittu","priorityDesc":"Per\xe4kk\xe4inen palautus: kokeilee ensin mallia 1, sitten 2 jne.","weightedDesc":"Jakaa liikenteen painoprosentin mukaan varauksella","roundRobinDesc":"Py\xf6re\xe4 jakelu: jokainen pyynt\xf6 siirtyy seuraavaan kiertoon malliin","randomDesc":"Yhten\xe4inen satunnainen valinta, sitten takaisin muihin malleihin","leastUsedDesc":"Valitsee mallin, jolla on v\xe4hiten pyynt\xf6j\xe4 ja tasapainottaa kuormitusta ajan my\xf6t\xe4","costOptimizedDesc":"Reitit edullisimpaan malliin ensin hinnoittelun perusteella","models":"Mallit","autoBalance":"Automaattinen tasapainotus","advancedSettings":"Lis\xe4asetukset","retryDelay":"Uudelleenyrityksen viive (ms)","concurrencyPerModel":"Samanaikaisuus / malli","queueTimeout":"Jonon aikakatkaisu (ms)","advancedHint":"J\xe4t\xe4 tyhj\xe4ksi, jos haluat k\xe4ytt\xe4\xe4 yleisi\xe4 oletusasetuksia. N\xe4m\xe4 ohittavat palveluntarjoajakohtaiset asetukset.","moveUp":"Siirr\xe4 yl\xf6s","moveDown":"Siirry alas","removeModel":"Poista","saving":"Tallennetaan...","weighted":"Painotettu","leastUsed":"V\xe4hiten k\xe4ytetty","costOpt":"Kustannus-opt"},"costs":{"title":"Kustannukset","budget":"Budjetti","totalCost":"Kokonaiskustannukset","breakdown":"Kustannusten erittely","noData":"Ei hintatietoja","byModel":"Mallin mukaan","byProvider":"Palveluntarjoajan toimesta"},"endpoint":{"title":"API-p\xe4\xe4tepiste","available":"K\xe4ytett\xe4viss\xe4 olevat p\xe4\xe4tepisteet","cloudProxy":"Pilviv\xe4lityspalvelin","disableConfirm":"Haluatko varmasti poistaa pilviv\xe4lityspalvelimen k\xe4yt\xf6st\xe4?","baseUrl":"Perus-URL-osoite","apiKeyLabel":"API-avain","registeredKeys":"Rekister\xf6ity avaimet","chatCompletions":"Chatin loppuun saattaminen","responses":"Vastaukset","listModels":"Listaa mallit","usingCloudProxy":"Cloud Proxyn k\xe4ytt\xe4minen","usingLocalServer":"Paikallisen palvelimen k\xe4ytt\xf6","machineId":"Koneen tunnus: {id}...","disableCloud":"Poista Cloud k\xe4yt\xf6st\xe4","enableCloud":"Ota Cloud k\xe4ytt\xf6\xf6n","modelsAcrossEndpoints":"{models} mallit {endpoints} p\xe4\xe4tepisteen v\xe4lill\xe4","chatDesc":"Suoratoisto ja ei-striimaus chat kaikkien palveluntarjoajien kanssa","embeddings":"Upotukset","embeddingsDesc":"Tekstin upotukset haku- ja RAG-putkistoja varten","imageGeneration":"Kuvan luominen","imageDesc":"Luo kuvia tekstikehotteista","rerank":"J\xe4rjest\xe4 uudelleen","rerankDesc":"J\xe4rjest\xe4 asiakirjat uudelleen kyselyn osuvuuden mukaan","audioTranscription":"\xc4\xe4nen transkriptio","audioTranscriptionDesc":"Literoi \xe4\xe4nitiedostot tekstiksi (kuiskaus)","textToSpeech":"Tekstist\xe4 puheeksi","textToSpeechDesc":"Muunna teksti luonnolliselta kuulostavaksi puheeksi","moderations":"Moderaatiot","moderationsDesc":"Sis\xe4ll\xf6n moderointi ja turvallisuusluokitus","enableCloudTitle":"Ota Cloud Proxy k\xe4ytt\xf6\xf6n","whatYouGet":"Mit\xe4 saat","cloudBenefitAccess":"K\xe4yt\xe4 sovellusliittym\xe4\xe4si mist\xe4 p\xe4in maailmaa tahansa","cloudBenefitShare":"Jaa p\xe4\xe4tepiste tiimisi kanssa helposti","cloudBenefitPorts":"Ei tarvitse avata portteja tai m\xe4\xe4ritt\xe4\xe4 palomuuria","cloudBenefitEdge":"Nopea maailmanlaajuinen reunaverkko","cloudSessionNote":"Cloud s\xe4ilytt\xe4\xe4 todennusistunnon 1 p\xe4iv\xe4n ajan. Jos sit\xe4 ei k\xe4ytet\xe4, se poistetaan automaattisesti.","cloudUnstableNote":"Pilvi on t\xe4ll\xe4 hetkell\xe4 ep\xe4vakaa Claude Code OAuthin kanssa joissakin tapauksissa.","cloudConnected":"Cloud Proxy yhdistetty!","connectingToCloud":"Yhdistet\xe4\xe4n pilveen...","verifyingConnection":"Vahvistetaan yhteytt\xe4...","connecting":"Yhdistet\xe4\xe4n...","verifying":"Vahvistetaan...","connected":"Yhdistetty!","disableCloudTitle":"Poista Cloud Proxy k\xe4yt\xf6st\xe4","disableWarning":"Kaikki todennusistunnot poistetaan pilvest\xe4.","syncingData":"Synkronoidaan uusimpia tietoja...","disablingCloud":"Poistetaan pilvi k\xe4yt\xf6st\xe4...","syncing":"Synkronoidaan...","disabling":"Poistetaan k\xe4yt\xf6st\xe4...","cloudConnectedVerified":"Cloud Proxy yhdistetty ja vahvistettu!","connectedVerificationPending":"Yhdistetty — vahvistus odottaa","connectedVerificationPendingWithError":"Yhdistetty – vahvistus odottaa: {error}","cloudDisabledSuccess":"Pilvi poistettu k\xe4yt\xf6st\xe4 onnistuneesti","syncedSuccess":"Synkronointi onnistui","failedDisable":"Pilven poistaminen k\xe4yt\xf6st\xe4 ep\xe4onnistui","failedEnable":"Pilven k\xe4ytt\xf6\xf6notto ep\xe4onnistui","cloudRequestTimeout":"Pilvipyynn\xf6n aikakatkaisu","cloudRequestFailed":"Pilvipyynt\xf6 ep\xe4onnistui","cloudWorkerUnreachable":"Pilvity\xf6ntekij\xe4\xe4 ei tavoitettu. Varmista, ett\xe4 pilvipalvelu on k\xe4ynniss\xe4 (npm run dev in /cloud).","connectionFailed":"Yhteys ep\xe4onnistui","syncFailed":"Pilvitietojen synkronointi ep\xe4onnistui","providerModelsTitle":"{provider} – Mallit","noModelsForProvider":"T\xe4lle tarjoajalle ei ole saatavilla malleja.","chat":"Chat","embedding":"Upottaminen","image":"Kuva","custom":"mukautettu","modelsCount":"{count, plural, one {# model} other {# models}}"},"health":{"title":"J\xe4rjestelm\xe4n terveys","description":"OmniRoute-instanssisi reaaliaikainen seuranta","healthy":"Terve","degraded":"Heikentynyt","down":"Alas","uptime":"P\xe4\xe4ll\xe4","memory":"Muisti","memoryRss":"Muisti (RSS)","heap":"Kasa","cpu":"CPU","database":"Tietokanta","version":"Versio","lastCheck":"Viimeinen tarkistus","providerHealth":"Palveluntarjoajan terveys","systemMetrics":"J\xe4rjestelm\xe4n mittarit","tokenHealth":"Token Health","refreshAll":"P\xe4ivit\xe4 kaikki","checkNow":"Tarkista nyt","loadingHealth":"Ladataan terveystietoja…","failedToLoad":"Terveystietojen lataaminen ep\xe4onnistui: {error}","retry":"Yrit\xe4 uudelleen","allOperational":"Kaikki j\xe4rjestelm\xe4t toimivat","issuesDetected":"J\xe4rjestelm\xe4ongelmia havaittu","updatedAt":"P\xe4ivitetty {time}","latency":"Latenssi","latencyP50":"p50","latencyP95":"p95","latencyP99":"p99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"Pyynt\xf6j\xe4 yhteens\xe4","noDataYet":"Ei viel\xe4 dataa","promptCache":"Kehotusv\xe4limuisti","entries":"merkinn\xe4t","hitRate":"Osumaprosentti","hitsMisses":"Osumat / Miss","signatureCache":"Allekirjoitusv\xe4limuisti","signatureDefaults":"Oletukset","signatureTool":"Ty\xf6kalu","signatureFamily":"Perhe","signatureSession":"Istunto","recovering":"Toipumassa","noCBData":"Katkaisijatietoja ei ole saatavilla. Tee ensin pyynt\xf6j\xe4.","providerHealthStatusAria":"Palveluntarjoajan terveydentila","issuesLabel":"Ongelmia havaittu","operational":"Toiminnassa","providers":"Palveluntarjoajat","healthyCount":"{count} terve","nodeVersion":"Solmu {version}","failures":"{count} virhe","failuresPlural":"{count} virheit\xe4","lastFailure":"Viimeinen","rateLimitStatus":"Rate Limit Status","activeLimiters":"{count} aktiivinen rajoitin","activeLimitersPlural":"{count} aktiiviset rajoittimet","queued":"Jonossa","queuedCount":"{count} jonossa","running":"k\xe4ynniss\xe4","runningCount":"{count} k\xe4ynniss\xe4","ok":"OK","activeLockouts":"Aktiiviset lukitukset","resetConfirm":"Nollataanko kaikki katkaisijat terveeseen tilaan? T\xe4m\xe4 tyhjent\xe4\xe4 kaikki virhem\xe4\xe4r\xe4t ja palauttaa kaikki palveluntarjoajat toimintatilaan.","resetAllTitle":"Palauta kaikki katkaisijat terveeseen tilaan","resetting":"Nollataan...","resetAll":"Nollaa kaikki","until":"{time} asti"},"limits":{"title":"Rajoitukset ja kiinti\xf6t","rateLimit":"Rate Limit","remaining":"J\xe4ljell\xe4","requestsPerMinute":"Pyynn\xf6t/min","tokensPerMinute":"Tokenit/min","dailyLimit":"P\xe4ivitt\xe4inen raja"},"logs":{"title":"Lokit","requestLogs":"Pyyd\xe4 lokit","proxyLogs":"V\xe4lityspalvelimen lokit","auditLog":"Tarkastusloki","console":"konsoli","auditLogDesc":"Hallinnolliset toimet ja turvallisuustapahtumat","loading":"Ladataan...","refresh":"P\xe4ivit\xe4","filterByAction":"Suodata toiminnon mukaan...","filterByActor":"Suodata n\xe4yttelij\xe4n mukaan...","filterEntriesAria":"Suodata tarkastuslokin merkinn\xe4t","filterByActionTypeAria":"Suodata toimintotyypin mukaan","filterByActorAria":"Suodata n\xe4yttelij\xe4n mukaan","refreshAuditLogAria":"P\xe4ivit\xe4 tarkastusloki","tableAria":"Tarkastuslokimerkinn\xe4t","failedFetchAuditLog":"Valvontalokin nouto ep\xe4onnistui","showing":"N\xe4ytet\xe4\xe4n {count} merkint\xe4\xe4 (poikkeama {offset})","search":"Etsi","timestamp":"Aikaleima","action":"Toiminta","actor":"n\xe4yttelij\xe4","target":"Kohde","details":"Yksityiskohdat","ipAddress":"IP-osoite","notAvailable":"—","noEntries":"Tarkastuslokimerkint\xf6j\xe4 ei l\xf6ytynyt","previous":"Edellinen","next":"Seuraavaksi"},"onboarding":{"welcome":"Tervetuloa","security":"Turvallisuus","test":"Testaa","ready":"Valmis!","setPassword":"Aseta salasana","addProvider":"Lis\xe4\xe4 ensimm\xe4inen palveluntarjoajasi","getStarted":"Aloita","skip":"Ohita","skipWizard":"Ohita ohjattu toiminto kokonaan","skipPassword":"Ohita salasanan asetus","skipAndContinue":"Ohita ja jatka","passwordLabel":"Salasana","confirmPassword":"Vahvista salasana","enterPassword":"Anna salasana","confirmPasswordPlaceholder":"Vahvista salasana","passwordsMismatch":"Salasanat eiv\xe4t t\xe4sm\xe4\xe4","setupComplete":"Asennus valmis!","goToDashboard":"Siirry kohtaan Dashboard →","welcomeDesc":"OmniRoute on paikallinen AI API -v\xe4lityspalvelin. Se reititt\xe4\xe4 pyynn\xf6t useille teko\xe4lypalveluntarjoajille kuormituksen tasapainottamisen, vikasietoisuuden ja k\xe4yt\xf6n seurannan avulla.","multiProvider":"Multi-Provider","usageTracking":"K\xe4yt\xf6n seuranta","apiKeyMgmt":"API-avainhallinta","securityDesc":"Aseta salasana kojelautasi suojaamiseksi tai ohita toistaiseksi.","providerDesc":"Yhdist\xe4 ensimm\xe4inen AI-palveluntarjoajasi. Voit lis\xe4t\xe4 my\xf6hemmin lis\xe4\xe4.","apiKeyRequired":"API-avain (pakollinen)","customUrlOptional":"Muokattu URL-osoite (valinnainen)","testDesc":"Varmistetaan, ett\xe4 palveluntarjoajayhteytesi toimii.","runTest":"Suorita yhteystesti","testingConnection":"Testataan yhteytt\xe4...","connectionSuccessful":"Yhteys onnistui! Palveluntarjoajasi on valmis.","noProviderFound":"Palveluntarjoajaa ei l\xf6ydy. Voit lis\xe4t\xe4 sellaisen hallintapaneelista my\xf6hemmin.","testFailed":"Testi ep\xe4onnistui, mutta voit m\xe4\xe4ritt\xe4\xe4 t\xe4m\xe4n my\xf6hemmin.","couldNotTest":"Ei pystynyt testaamaan juuri nyt. Voit testata kojelaudalta.","doneDesc":"Kaikki on valmista! OmniRoute-esiintym\xe4si on m\xe4\xe4ritetty ja valmis v\xe4litt\xe4m\xe4\xe4n AI-pyynt\xf6j\xe4.","yourEndpoint":"P\xe4\xe4tepisteesi:","continue":"Jatka","retry":"Yrit\xe4 uudelleen","failedSetPassword":"Salasanan asettaminen ep\xe4onnistui. Yrit\xe4 uudelleen.","failedAddProvider":"Palveluntarjoajan lis\xe4\xe4minen ep\xe4onnistui. Yrit\xe4 uudelleen.","connectionError":"Yhteysvirhe. Yrit\xe4 uudelleen.","provider":"Palveluntarjoaja"},"providers":{"title":"Palveluntarjoajat","addProvider":"Lis\xe4\xe4 palveluntarjoaja","editProvider":"Muokkaa toimittajaa","deleteProvider":"Poista palveluntarjoaja","noProviders":"Palveluntarjoajia ei ole m\xe4\xe4ritetty","modelAvailability":"Mallin saatavuus","accounts":"Tilit","newAccount":"Uusi tili","deleteConfirm":"Haluatko varmasti poistaa t\xe4m\xe4n palveluntarjoajan?","testing":"Testataan...","testConnection":"Testaa yhteys","testSuccess":"Yhteys onnistui","testFailed":"Yhteys ep\xe4onnistui","available":"Saatavilla","cooldown":"J\xe4\xe4hdytys","unavailable":"Ei saatavilla","unknown":"Tuntematon","oauthLabel":"OAuth","compatibleLabel":"Yhteensopiva","chat":"Chat","responses":"Vastaukset","messages":"Viestit","oauthProviders":"OAuth-palveluntarjoajat","freeProviders":"Ilmaiset palveluntarjoajat","apiKeyProviders":"API-avainten tarjoajat","compatibleProviders":"API Key -yhteensopivat palveluntarjoajat","testAll":"Testaa kaikki","testAllOAuth":"Testaa kaikki OAuth-yhteydet","testAllFree":"Testaa kaikki ilmaiset yhteydet","testAllApiKey":"Testaa kaikki API-avainyhteydet","testAllCompatible":"Testaa kaikki yhteensopivat liit\xe4nn\xe4t","connected":"{count} Yhdistetty","errorCount":"{count} Virhe ({code})","errorCountNoCode":"{count} Virhe","noConnections":"Ei yhteyksi\xe4","disabled":"Ei k\xe4yt\xf6ss\xe4","enableProvider":"Ota palveluntarjoaja k\xe4ytt\xf6\xf6n","disableProvider":"Poista palveluntarjoaja k\xe4yt\xf6st\xe4","testResults":"Testitulokset","noCompatibleYet":"Yhteensopivia palveluntarjoajia ei ole viel\xe4 lis\xe4tty","compatibleHint":"K\xe4yt\xe4 yll\xe4 olevia painikkeita lis\xe4t\xe4ksesi OpenAI- tai Anthropic-yhteensopivia p\xe4\xe4tepisteit\xe4","addOpenAICompatible":"Lis\xe4\xe4 OpenAI-yhteensopiva","addAnthropicCompatible":"Lis\xe4\xe4 Anthropic Compatible","addNewProvider":"Lis\xe4\xe4 uusi toimittaja","backToProviders":"Takaisin palveluntarjoajiin","configureNewProvider":"M\xe4\xe4rit\xe4 uusi AI-palveluntarjoaja k\xe4ytett\xe4v\xe4ksi sovelluksissasi.","providerLabel":"Palveluntarjoaja","selectProvider":"Valitse palveluntarjoaja","selectedProvider":"Valittu palveluntarjoaja","authMethod":"Todennusmenetelm\xe4","apiKeyLabel":"API-avain","apiKeyRequired":"API-avain vaaditaan","selectProviderRequired":"Valitse palveluntarjoaja","enterApiKey":"Anna API-avaimesi","apiKeySecure":"API-avaimesi salataan ja tallennetaan turvallisesti.","oauth2Connect":"Yhdist\xe4 OAuth2:een","oauth2Label":"OAuth2","oauth2Desc":"Yhdist\xe4 tilisi OAuth2-todennusta k\xe4ytt\xe4m\xe4ll\xe4.","displayName":"N\xe4ytt\xf6nimi","displayNamePlaceholder":"esim. Production API, Dev Environment","displayNameHint":"Valinnainen. Yst\xe4v\xe4llinen nimi t\xe4m\xe4n kokoonpanon tunnistamiseksi.","active":"Aktiivinen","activeDescription":"Ota t\xe4m\xe4 palveluntarjoaja k\xe4ytt\xf6\xf6n sovelluksissasi","cancel":"Peruuta","createProvider":"Luo palveluntarjoaja","failedCreate":"Palveluntarjoajan luominen ep\xe4onnistui","errorOccurred":"Tapahtui virhe. Yrit\xe4 uudelleen.","modelStatus":"Mallin tila","allModelsOperational":"Kaikki mallit toimivat","modelsWithIssues":"{count} malli(t), joissa on ongelmia","allModelsNormal":"Kaikki mallit reagoivat normaalisti.","cooldownCleared":"J\xe4\xe4hdytys tyhjennetty kohteelle {model}","failedClearCooldown":"J\xe4\xe4hdytyksen tyhjennys ep\xe4onnistui","loadingAvailability":"Ladataan mallin saatavuutta...","clearCooldown":"Selke\xe4","clearing":"Tyhjennet\xe4\xe4n...","until":"{time} asti","providerTestFailed":"Palveluntarjoajan testi ep\xe4onnistui","modeTest":"{mode} Testi","passedCount":"{count} hyv\xe4ksytty","failedCount":"{count} ep\xe4onnistui","testedCount":"{count} testattu","millisecondsAbbr":"{value}ms","okShort":"OK","errorShort":"VIRHE","noActiveConnectionsInGroup":"T\xe4lle ryhm\xe4lle ei l\xf6ytynyt aktiivisia yhteyksi\xe4.","allTestsPassed":"Kaikki {total} testit l\xe4p\xe4isty","testSummary":"{passed}/{total} hyv\xe4ksytty, {failed} ep\xe4onnistui","nameLabel":"Nimi","prefixLabel":"Etuliite","baseUrlLabel":"Perus-URL-osoite","apiTypeLabel":"API-tyyppi","prefixHint":"Pakollinen. Ainutlaatuinen etuliite mallien nimille.","nameHint":"Pakollinen. Yst\xe4v\xe4llinen etiketti t\xe4lle solmulle.","baseUrlHint":"Pakollinen.  Palveluntarjoajan API-perus-URL-osoite.","anthropicPrefixPlaceholder":"ac-prod","openaiPrefixPlaceholder":"oc-prod","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"Vahvista yhteys","validating":"Vahvistetaan...","connectionValid":"Yhteys on voimassa!","connectionFailed":"Yhteys ep\xe4onnistui. Tarkista URL-osoite ja avain.","testKeyLabel":"Testaa API-avain","testKeyPlaceholder":"sk-... (vain vahvistusta varten)","providerNotFound":"Palveluntarjoajaa ei l\xf6ydy","deleteConnectionConfirm":"Poistetaanko t\xe4m\xe4 yhteys?","failedSetAlias":"Aliaksen asettaminen ep\xe4onnistui","failedSaveConnection":"Yhteyden tallentaminen ep\xe4onnistui","failedSaveConnectionRetry":"Yhteyden tallentaminen ep\xe4onnistui. Yrit\xe4 uudelleen.","failedRetestConnection":"Yhteyden uudelleentestaus ep\xe4onnistui","deleteCompatibleNodeConfirm":"Poistetaanko t\xe4m\xe4 {type} Yhteensopiva solmu?","anthropicCompatibleDetails":"Anthropic-yhteensopivat yksityiskohdat","openaiCompatibleDetails":"OpenAI-yhteensopivat tiedot","messagesApi":"Viestit API","responsesApi":"Responses API","chatCompletions":"Chatin loppuun saattaminen","importingModels":"Tuodaan...","importFromModels":"Tuo / mallit","addConnectionToImport":"Lis\xe4\xe4 yhteys ottaaksesi tuonnin k\xe4ytt\xf6\xf6n.","noModelsConfigured":"Ei malleja m\xe4\xe4ritetty","connectionCount":"{count} yhteytt\xe4","fetchingModels":"Haetaan saatavilla olevia malleja...","failedFetchModels":"Mallien nouto ep\xe4onnistui","noModelsFound":"Malleja ei l\xf6ytynyt","importFailed":"Tuonti ep\xe4onnistui","noNewModelsAdded":"Uusia malleja ei lis\xe4tty.","adding":"Lis\xe4t\xe4\xe4n...","importingModelsTitle":"Mallien tuonti","copyModel":"Kopioi malli","removeModel":"Poista malli","rateLimitProtected":"Suojattu","rateLimitUnprotected":"Suojaamaton","enableRateLimitProtection":"Ota nopeusrajoitussuoja k\xe4ytt\xf6\xf6n napsauttamalla","disableRateLimitProtection":"Napsauta poistaaksesi nopeusrajoituksen suojauksen","productionKey":"Tuotantoavain","enterNewApiKey":"Anna uusi API-avain","optional":"Valinnainen","anthropicCompatibleName":"Antrooppinen yhteensopiva","openaiCompatibleName":"OpenAI-yhteensopiva","failedImportModels":"Mallien tuonti ep\xe4onnistui","noModelsReturnedFromEndpoint":"Ei malleja palautettu /models-p\xe4\xe4tepisteest\xe4.","importingModelsProgress":"Tuodaan {current}/{total} mallia...","foundModelsStartingImport":"L\xf6ytyi {count} mallia. Aloitetaan tuontia...","importingModelById":"Tuodaan {modelId}...","importSuccessCount":"{count, plural, one {# model} other {# models}} tuotu onnistuneesti!","noNewModelsAddedExisting":"Uusia malleja ei lis\xe4tty (kaikki on jo olemassa).","importDoneCount":"✓ Valmis! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"Tapahtui odottamaton virhe","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"viestej\xe4","responsesPath":"vastaukset","chatCompletionsPath":"chat / t\xe4ydennykset","add":"Lis\xe4\xe4","edit":"Muokkaa","delete":"Poista","anthropic":"Antrooppinen","openai":"OpenAI","singleConnectionPerCompatible":"Vain yksi yhteys on sallittu yhteensopivaa solmua kohden. Lis\xe4\xe4 toinen solmu, jos tarvitset lis\xe4\xe4 yhteyksi\xe4.","connections":"Liit\xe4nn\xe4t","providerProxyTitleConfigured":"Palveluntarjoajan v\xe4lityspalvelin: {host}","configured":"m\xe4\xe4ritetty","providerProxyConfigureHint":"M\xe4\xe4rit\xe4 v\xe4lityspalvelin kaikille t\xe4m\xe4n palveluntarjoajan yhteyksille","providerProxy":"Palveluntarjoajan v\xe4lityspalvelin","noConnectionsYet":"Ei yhteyksi\xe4 viel\xe4","addFirstConnectionHint":"Aloita lis\xe4\xe4m\xe4ll\xe4 ensimm\xe4inen yhteys","addConnection":"Lis\xe4\xe4 yhteys","availableModels":"Saatavilla olevat mallit","pageAutoRefresh":"Sivu p\xe4ivittyy automaattisesti...","statusDisabled":"pois k\xe4yt\xf6st\xe4","statusConnected":"yhdistetty","statusRuntimeIssue":"ajonaikainen ongelma","statusAuthFailed":"todennus ep\xe4onnistui","statusRateLimited":"hinta rajoitettu","statusNetworkIssue":"verkko-ongelma","statusTestUnsupported":"testi\xe4 ei tueta","statusUnavailable":"ei ole saatavilla","statusFailed":"ep\xe4onnistunut","statusError":"virhe","oauthAccount":"OAuth-tili","errorTypeRuntime":"Paikallinen suoritusaika","errorTypeUpstreamAuth":"Varsinainen todennus","errorTypeMissingCredential":"Tunnustus puuttuu","errorTypeRefreshFailed":"P\xe4ivitys ep\xe4onnistui","errorTypeTokenExpired":"Tunnus on vanhentunut","errorTypeRateLimited":"Hinta rajoitettu","errorTypeUpstreamUnavailable":"Upstream ei saatavilla","errorTypeNetworkError":"Verkkovirhe","errorTypeTestUnsupported":"Testi\xe4 ei tueta","errorTypeUpstreamError":"Virhe yl\xe4virtaan","proxySourceGlobal":"Maailmanlaajuinen","proxySourceProvider":"Palveluntarjoaja","proxySourceKey":"Avain","proxyConfiguredBySource":"V\xe4lityspalvelin ({source}): {host}","autoPriority":"Automaattinen: {priority}","proxy":"V\xe4lityspalvelin","retestAuthentication":"Testaa todennus uudelleen","retest":"Testaa uudelleen","disableConnection":"Poista yhteys k\xe4yt\xf6st\xe4","enableConnection":"Ota yhteys k\xe4ytt\xf6\xf6n","reauthenticateConnection":"Todenna t\xe4m\xe4 yhteys uudelleen","proxyConfig":"V\xe4lityspalvelimen konfigurointi","aliasExistsAlert":"Alias \\"{alias}\\" on jo olemassa. K\xe4yt\xe4 toista mallia tai muokkaa olemassa olevaa aliasta.","openRouterAnyModelHint":"OpenRouter tukee mit\xe4 tahansa mallia. Lis\xe4\xe4 malleja ja luo aliaksia nopeaa k\xe4ytt\xf6\xe4 varten.","modelIdFromOpenRouter":"Mallin tunnus (OpenRouterista)","openRouterModelPlaceholder":"antrooppinen/claude-3-opus","customModels":"Mukautetut mallit","customModelsHint":"Lis\xe4\xe4 mallitunnukset, jotka eiv\xe4t ole oletusluettelossa. N\xe4m\xe4 ovat k\xe4ytett\xe4viss\xe4 reitityst\xe4 varten.","modelId":"Mallin tunnus","customModelPlaceholder":"esim. gpt-4.5-turbo","loading":"Ladataan...","removeCustomModel":"Poista mukautettu malli","noCustomModels":"Mukautettuja malleja ei ole viel\xe4 lis\xe4tty.","allSuggestedAliasesExist":"Kaikki ehdotetut aliakset ovat jo olemassa. Valitse toinen malli tai poista ristiriitaiset aliakset.","failedSaveCustomModel":"Muokatun mallin tallentaminen ep\xe4onnistui","modelAddedSuccess":"Malli {modelId} lis\xe4ttiin onnistuneesti","failedAddModelTryAgain":"Mallin lis\xe4\xe4minen ep\xe4onnistui. Yrit\xe4 uudelleen.","failedSaveImportedModel":"Tuodun mallin tallentaminen mukautettuun tietokantaan ep\xe4onnistui","failedImportModelsTryAgain":"Mallien tuonti ep\xe4onnistui. Yrit\xe4 uudelleen.","failedRemoveModelFromDatabase":"Mallin poistaminen tietokannasta ep\xe4onnistui","modelRemovedSuccess":"Mallin poistaminen onnistui","failedDeleteModelTryAgain":"Mallin poistaminen ep\xe4onnistui. Yrit\xe4 uudelleen.","compatibleModelsDescription":"Lis\xe4\xe4 {type}-yhteensopivia malleja manuaalisesti tai tuo ne /models-p\xe4\xe4tepisteest\xe4.","anthropicCompatibleModelPlaceholder":"claude-3-opus-20240229","openaiCompatibleModelPlaceholder":"gpt-4o","apiKeyValidationFailed":"API-avaimen vahvistus ep\xe4onnistui. Tarkista avaimesi ja yrit\xe4 uudelleen.","addProviderApiKeyTitle":"Lis\xe4\xe4 {provider} API-avain","checking":"Tarkistetaan...","check":"Tarkista","valid":"Voimassa","invalid":"Virheellinen","creating":"Luodaan...","validationChecksAnthropicCompatible":"Vahvistus tarkistaa {provider} vahvistamalla API-avaimen.","validationChecksOpenAiCompatible":"Vahvistus tarkistaa {provider} /models-osoitteen kautta perus-URL-osoitteessasi.","priorityLabel":"Prioriteetti","saving":"Tallennetaan...","save":"Tallenna","editConnection":"Muokkaa yhteytt\xe4","accountName":"Tilin nimi","email":"S\xe4hk\xf6posti","healthCheckMinutes":"Terveystarkastus (min)","healthCheckHint":"Ennakoiva tunnuksen p\xe4ivitysv\xe4li. 0 = pois k\xe4yt\xf6st\xe4.","failedTestConnection":"Yhteyden testaus ep\xe4onnistui","failed":"Ep\xe4onnistui","leaveBlankKeepCurrentApiKey":"J\xe4t\xe4 tyhj\xe4ksi, jos haluat s\xe4ilytt\xe4\xe4 nykyisen API-avaimen.","editCompatibleTitle":"Muokkaa {type} Yhteensopiva","compatibleBaseUrlHint":"K\xe4yt\xe4 perus-URL-osoitetta (p\xe4\xe4ttyy /v1) {type}-yhteensopivalle API:lle.","apiKeyForCheck":"API-avain (tarkistusta varten)","compatibleProdPlaceholder":"{type} Yhteensopiva (tuote)"},"settings":{"title":"Asetukset","general":"Kenraali","security":"Turvallisuus","appearance":"Ulkon\xe4k\xf6","routing":"Reititys","cache":"V\xe4limuisti","resilience":"Joustavuus","systemPrompt":"J\xe4rjestelm\xe4kehote","thinkingBudget":"Miettiv\xe4 budjetti","proxy":"V\xe4lityspalvelin","pricing":"Hinnoittelu","storage":"Varastointi","policies":"K\xe4yt\xe4nn\xf6t","ipFilter":"IP-suodatin","comboDefaults":"Yhdistelm\xe4n oletukset","fallbackChains":"Varaketjut","changePassword":"Vaihda salasana","enablePassword":"Ota salasana k\xe4ytt\xf6\xf6n","darkMode":"Tumma tila","lightMode":"Valotila","systemTheme":"J\xe4rjestelm\xe4n teema","enableCache":"Ota v\xe4limuisti k\xe4ytt\xf6\xf6n","cacheTTL":"V\xe4limuisti TTL","maxCacheSize":"V\xe4limuistin enimm\xe4iskoko","clearCache":"Tyhjenn\xe4 v\xe4limuisti","cacheHits":"V\xe4limuistin osumia","cacheMisses":"V\xe4limuisti puuttuu","hitRate":"Osumaprosentti","cacheEntries":"V\xe4limuistin merkinn\xe4t","circuitBreaker":"Katkaisija","retryPolicy":"Yrit\xe4 uudelleen -k\xe4yt\xe4nt\xf6","maxRetries":"Max Uudelleenyritykset","retryDelay":"Yrit\xe4 uudelleen Viive","timeoutMs":"Aikakatkaisu (ms)","enableSystemPrompt":"Ota j\xe4rjestelm\xe4kehote k\xe4ytt\xf6\xf6n","systemPromptText":"J\xe4rjestelm\xe4kehoteteksti","enableThinking":"Ota ajattelu k\xe4ytt\xf6\xf6n","maxThinkingTokens":"Max Thinking Tokens","enableProxy":"Ota v\xe4lityspalvelin k\xe4ytt\xf6\xf6n","proxyUrl":"V\xe4lityspalvelimen URL-osoite","pricingRates":"Hinnoitteluhinnastomuoto","currentPricing":"Nykyisen hinnoittelun yleiskatsaus","loadingPricing":"Ladataan hintatietoja...","noPricing":"Hintatietoja ei ole saatavilla","input":"Sy\xf6te","output":"L\xe4ht\xf6","cached":"V\xe4limuistissa","reasoning":"P\xe4\xe4ttely","cacheCreation":"V\xe4limuistin luominen","customPricing":"Mukautettu hinnoittelu","databaseSize":"Tietokannan koko","backupDb":"Varmuuskopiointitietokanta","restoreDb":"Palauta tietokanta","exportData":"Vie tiedot","importData":"Tuo tiedot","clearData":"Tyhjenn\xe4 kaikki tiedot","clearDataConfirm":"T\xe4m\xe4 poistaa pysyv\xe4sti kaikki tiedot. Oletko varma?","enableRequestLogs":"Ota pyynt\xf6lokit k\xe4ytt\xf6\xf6n","logRetention":"Lokin s\xe4ilytt\xe4minen","ipWhitelist":"IP valkoinen lista","ipBlacklist":"IP musta lista","addIP":"Lis\xe4\xe4 IP","savedSuccessfully":"Asetukset tallennettu onnistuneesti","ai":"AI","advanced":"Edistynyt","localMode":"Paikallinen tila — Kaikki laitteellesi tallennetut tiedot","settingsSectionsAria":"Asetukset-osiot","switchThemes":"Vaihda vaaleiden ja tummien teemojen v\xe4lill\xe4","themeSelectionAria":"Teeman valinta","themeLight":"Kevyt","themeDark":"Tumma","themeSystem":"J\xe4rjestelm\xe4","hideHealthLogs":"Piilota kuntotarkastuslokit","hideHealthLogsDesc":"Kun P\xc4\xc4LL\xc4, est\xe4 [HealthCheck]-viestit palvelinkonsolissa","promptCache":"Kehotusv\xe4limuisti","flushCache":"Tyhjenn\xe4 v\xe4limuisti","flushing":"Huuhdellaan…","size":"Koko","hits":"Osumat","evictions":"H\xe4\xe4d\xf6t","loadingCacheStats":"Ladataan v\xe4limuistin tilastoja…","globalProxy":"Globaali v\xe4lityspalvelin","globalProxyDesc":"M\xe4\xe4rit\xe4 yleinen l\xe4htev\xe4 v\xe4lityspalvelin kaikille API-kutsuille. Yksitt\xe4iset palveluntarjoajat, yhdistelm\xe4t ja avaimet voivat ohittaa t\xe4m\xe4n.","noGlobalProxy":"Globaalia v\xe4lityspalvelinta ei ole m\xe4\xe4ritetty","globalLabel":"Maailmanlaajuinen","configure":"M\xe4\xe4rit\xe4","globalSystemPrompt":"Globaali j\xe4rjestelm\xe4kehote","systemPromptDesc":"Lis\xe4t\xe4\xe4n kaikkiin v\xe4lityspalvelintason pyynt\xf6ihin","saved":"Tallennettu","systemPromptPlaceholder":"Anna j\xe4rjestelm\xe4kehote lis\xe4t\xe4ksesi kaikkiin pyynt\xf6ihin...","systemPromptHint":"T\xe4m\xe4 kehote liitet\xe4\xe4n jokaisen pyynn\xf6n j\xe4rjestelm\xe4viestiin. K\xe4yt\xe4 yleisi\xe4 ohjeita, turvallisuusohjeita tai vastausten muotoilus\xe4\xe4nt\xf6j\xe4 varten.","chars":"{count} merkki\xe4","thinkingBudgetTitle":"Miettiv\xe4 budjetti","thinkingBudgetDesc":"Hallitse teko\xe4lyn p\xe4\xe4ttelytunnuksen k\xe4ytt\xf6\xe4 kaikissa pyynn\xf6iss\xe4","passthrough":"L\xe4pivienti","passthroughDesc":"Ei muutoksia – asiakas hallitsee ajattelubudjettia","auto":"Auto","autoDesc":"Poista kaikki ajatellut asetukset – anna palveluntarjoajan p\xe4\xe4tt\xe4\xe4","custom":"Mukautettu","customDesc":"Aseta kiinte\xe4 tunnusbudjetti kaikille pyynn\xf6ille","adaptive":"Mukautuva","adaptiveDesc":"Skaalaa budjetti pyynn\xf6n monimutkaisuuden perusteella","effortNone":"Ei mit\xe4\xe4n (0 merkki\xe4)","effortLow":"Matala (1 000 tokenia)","effortMedium":"Keskikokoinen (10 000 merkki\xe4)","effortHigh":"High (128 000 tokenia)","tokenBudget":"Token-budjetti","tokens":"rahakkeita","baseEffortLevel":"Perusponnistuksen taso","adaptiveHint":"Mukautuva tila skaalautuu t\xe4lt\xe4 perustasolta viestim\xe4\xe4r\xe4n, ty\xf6kalun k\xe4yt\xf6n ja kehotteen pituuden perusteella.","requireLogin":"Vaadi kirjautumista","requireLoginDesc":"Kun P\xc4\xc4LL\xc4, kojelauta vaatii salasanan. Kun POIS P\xc4\xc4LT\xc4, k\xe4yt\xe4 ilman kirjautumista.","currentPassword":"Nykyinen salasana","enterCurrentPassword":"Anna nykyinen salasana","newPassword":"Uusi salasana","enterNewPassword":"Sy\xf6t\xe4 uusi salasana","confirmPassword":"Vahvista uusi salasana","confirmPasswordPlaceholder":"Vahvista uusi salasana","passwordsNoMatch":"Salasanat eiv\xe4t t\xe4sm\xe4\xe4","passwordUpdated":"Salasana p\xe4ivitetty onnistuneesti","failedUpdatePassword":"Salasanan p\xe4ivitys ep\xe4onnistui","errorOccurred":"Tapahtui virhe","updatePassword":"P\xe4ivit\xe4 salasana","setPassword":"Aseta salasana","apiEndpointProtection":"API Endpoint Protection","requireAuthModels":"Vaadi API-avain /mallille","requireAuthModelsDesc":"Kun P\xc4\xc4LL\xc4, /v1/models-p\xe4\xe4tepiste palauttaa 404 todentamattomille pyynn\xf6ille. Est\xe4\xe4 valtuuttamattomien k\xe4ytt\xe4jien mallin l\xf6yt\xe4misen.","blockedProviders":"Estetyt palveluntarjoajat","blockedProvidersDesc":"Piilota tietyt toimittajat /v1/models-vastauksesta. Estetyt palveluntarjoajat eiv\xe4t n\xe4y malliluetteloissa.","providersBlocked":"{count} toimittaja(t) estetty /modelsista","blockProviderTitle":"Est\xe4 {provider}","unblockProviderTitle":"Kumoa esto {provider}","routingStrategy":"Reititysstrategia","fillFirst":"T\xe4yt\xe4 ensin","fillFirstDesc":"K\xe4yt\xe4 tilej\xe4 t\xe4rkeysj\xe4rjestyksess\xe4","roundRobin":"Round Robin","roundRobinDesc":"Selaa kaikki tilit l\xe4pi","p2c":"P2C","p2cDesc":"Valitse 2 satunnaista, k\xe4yt\xe4 terveellisemp\xe4\xe4","random":"Satunnainen","randomDesc":"Satunnainen tili jokainen pyynt\xf6","leastUsed":"V\xe4hiten k\xe4ytetty","leastUsedDesc":"Valitse v\xe4hiten k\xe4ytetty tili","costOpt":"Kustannusopt","costOptDesc":"Valitse halvin saatavilla oleva tili","stickyLimit":"Sticky Limit","stickyLimitDesc":"Puhelut tilikohtaisesti ennen vaihtamista","modelAliases":"Mallin aliakset","modelAliasesDesc":"Jokerimerkkikuviot mallien nimien yhdist\xe4miseen • K\xe4yt\xe4 * ja ?","aliasPatternPlaceholder":"claude-sonett-*","aliasTargetPlaceholder":"claude-sonnet-4-20250514","pattern":"kuvio","targetModel":"Kohdemalli","add":"+ Lis\xe4\xe4","session":"Istunto","sessionDetailsAria":"Istunnon tiedot","status":"Tila","authenticated":"Todennettu","guest":"Vieras","loginTime":"Kirjautumisaika","sessionAge":"Istunnon ik\xe4","browser":"Selain","clearLocalData":"Tyhjenn\xe4 paikalliset tiedot","logout":"Kirjaudu ulos","clearLocalDataConfirm":"Poistetaanko kaikki paikalliset tiedot? T\xe4m\xe4 nollaa asetuksesi.","unknown":"Tuntematon","systemActor":"j\xe4rjestelm\xe4","ipAccessControl":"IP Access Control","ipAccessControlDesc":"Est\xe4 tai salli tietyt IP-osoitteet","ipModeDisabled":"Ei k\xe4yt\xf6ss\xe4","ipModeBlacklist":"Musta lista","ipModeWhitelist":"Valkoinen lista","ipModeWhitelistPriority":"WL-prioriteetti","addIpAddress":"Lis\xe4\xe4 IP-osoite","ipAddressPlaceholder":"192.168.1.0/24 tai 10.0.*.*","block":"+ Est\xe4","allow":"+ Salli","blocked":"Estetty ({count})","allowed":"Sallittu ({count})","temporaryBans":"V\xe4liaikaiset kiellot ({count})","minLeft":"{min}m j\xe4ljell\xe4","auditLog":"Tarkastusloki","searchAuditLogs":"Hae valvontalokeja...","failedLoadAuditLog":"Tarkastuslokin lataaminen ep\xe4onnistui","noAuditEvents":"Tarkastustapahtumia ei l\xf6ytynyt","action":"Toiminta","actor":"n\xe4yttelij\xe4","details":"Yksityiskohdat","time":"Aika","fallbackChainsTitle":"Varaketjut","fallbackChainsDesc":"M\xe4\xe4rit\xe4 toimittajan varatilaus mallikohtaisesti","addChain":"+ Lis\xe4\xe4 ketju","modelName":"Mallin nimi","modelNamePlaceholder":"claude-sonnet-4-20250514","providersCommaSeparated":"Palveluntarjoajat (pilkuilla erotettuna, t\xe4rkeysj\xe4rjestyksess\xe4)","providersCommaSeparatedPlaceholder":"antrooppinen, openai, kaksoset","createChain":"Luo ketju","noFallbackChains":"Ei varaketjuja","noFallbackChainsDesc":"Luo ketju toimittajan varatilauksen m\xe4\xe4ritt\xe4miseksi mallille.","loadingFallbackChains":"Ladataan varaketjuja...","deleteChainConfirm":"Poistetaanko varaketju kohteelle \\"{model}\\"?","chainCreated":"Ketju luotu kohteelle {model}","chainDeleted":"Ketju poistettu {model}","failedCreateChain":"Ketjun luominen ep\xe4onnistui","failedDeleteChain":"Ketjun poistaminen ep\xe4onnistui","deleteChain":"Poista ketju","fillModelAndProviders":"T\xe4yt\xe4 mallin nimi ja toimittajat","addAtLeastOneProvider":"Lis\xe4\xe4 v\xe4hint\xe4\xe4n yksi palveluntarjoaja","comboDefaultsTitle":"Yhdistelm\xe4n oletukset","globalComboConfig":"Globaali yhdistelm\xe4kokoonpano","defaultStrategy":"Oletusstrategia","defaultStrategyDesc":"Sovelletaan uusiin komboihin ilman selke\xe4\xe4 strategiaa","comboStrategyAria":"Yhdistelm\xe4strategia","priority":"Prioriteetti","weighted":"Painotettu","maxRetriesLabel":"Max Uudelleenyritykset","retryDelayLabel":"Uudelleenyrityksen viive (ms)","timeoutLabel":"Aikakatkaisu (ms)","healthCheck":"Terveystarkastus","healthCheckDesc":"Tarkista palveluntarjoajan saatavuus etuk\xe4teen","trackMetrics":"Seuraa mittareita","trackMetricsDesc":"Tallenna yhdistelm\xe4kohtaiset pyynt\xf6tiedot","providerOverrides":"Palveluntarjoajan ohitukset","providerOverridesDesc":"Ohita aikakatkaisu ja yrit\xe4 uudelleen palveluntarjoajan mukaan. Palveluntarjoajan asetukset ohittavat yleiset oletukset.","providerMaxRetriesAria":"{provider} enint\xe4\xe4n uudelleenyrityst\xe4","providerTimeoutAria":"{provider} aikakatkaisu ms","removeProviderOverrideAria":"Poista {provider} ohitus","newProviderNamePlaceholder":"esim. google, avaa...","newProviderNameAria":"Uusi palveluntarjoajan nimi","retries":"yritt\xe4\xe4 uudelleen","ms":"ms","saveComboDefaults":"Tallenna yhdistelm\xe4n oletusasetukset","maxNestingDepth":"Suurin pesint\xe4syvyys","concurrencyPerModel":"Samanaikaisuus / malli","queueTimeout":"Jonon aikakatkaisu (ms)","providerProfiles":"Palveluntarjoajan profiilit","providerProfilesDesc":"Erilliset joustavuusasetukset OAuth- (istuntopohjainen) ja API-avaimen (mittari) tarjoajille. OAuth-palveluntarjoajilla on tiukemmat kynnykset alhaisempien nopeusrajojen vuoksi.","oauthProviders":"OAuth-palveluntarjoajat","apiKeyProviders":"API-avainten tarjoajat","transientCooldown":"Ohimenev\xe4 j\xe4\xe4htyminen","rateLimitCooldown":"Rate Limit Cooldown","maxBackoffLevel":"Maksimitaso","cbThreshold":"CB-kynnys","cbResetTime":"CB-nollausaika","rateLimiting":"Rate Limiting","rateLimitingDesc":"API-avainten tarjoajat ovat automaattisesti nopeudeltaan rajoitettuja turvallisilla oletusasetuksilla. Rajat opitaan vastausotsikoista ja mukautuvat ajan my\xf6t\xe4.","defaultSafetyNet":"Oletusturvaverkko","rpm":"RPM","minGap":"Min Gap","maxConcurrent":"Max Samanaikainen","activeLimiters":"Aktiiviset rajoittimet","noActiveLimiters":"Ei viel\xe4 aktiivisia nopeudenrajoittimia.","reservoir":"S\xe4ili\xf6","running":"Juoksemassa","queued":"Jonossa","circuitBreakers":"Katkaisijat","breakerStateClosed":"Suljettu","breakerStateOpen":"Avaa","breakerStateHalfOpen":"Puoliavoin","tripped":"{count} lauennut","healthy":"{count} terve","resetAll":"Nollaa kaikki","noCircuitBreakers":"Katkaisijat eiv\xe4t ole viel\xe4 aktiivisia. Ne luodaan automaattisesti, kun pyynn\xf6t kulkevat yhdistelm\xe4putkilinjan l\xe4pi.","failures":"{count} virhe(\xe4)","policiesLocked":"K\xe4yt\xe4nn\xf6t ja lukitut tunnisteet","allOperational":"Kaikki j\xe4rjestelm\xe4t toimivat – ei lukituksia tai lauenneita katkaisijoita","loadingPolicies":"Ladataan k\xe4yt\xe4nt\xf6j\xe4...","lockedIdentifiers":"Lukitut tunnisteet","unlockedIdentifier":"Avattu: {identifier}","sinceDate":"alkaen {date}","forceUnlock":"Pakota lukitus","unlocking":"Avataan...","failedUnlock":"Lukituksen avaaminen ep\xe4onnistui","failedLoadWithStatus":"Lataus ep\xe4onnistui: {status}","failedLoadResilience":"Resilienssitilan lataaminen ep\xe4onnistui","saveFailed":"Tallennus ep\xe4onnistui","resetFailed":"Nollaus ep\xe4onnistui","loadingResilience":"Ladataan joustavuuden tilaa...","retry":"Yrit\xe4 uudelleen","systemStorage":"J\xe4rjestelm\xe4 ja tallennustila","allDataLocal":"Kaikki tiedot on tallennettu paikallisesti koneellesi","databasePath":"Tietokannan polku","exportDatabase":"Vie tietokanta","exportAll":"Vie kaikki (.tar.gz)","importDatabase":"Tuo tietokanta","confirmDbImport":"Vahvista tietokannan tuonti","confirmDbImportDesc":"T\xe4m\xe4 korvaa kaikki nykyiset tiedot kohteen {file} sis\xe4ll\xf6ll\xe4. Varmuuskopio luodaan automaattisesti ennen tuontia.","yesImport":"Kyll\xe4, tuonti","lastBackup":"Viimeinen varmuuskopio","noBackupYet":"Ei viel\xe4 varmuuskopiota","backupNow":"Varmuuskopioi nyt","backupRestore":"Varmuuskopiointi ja palautus","viewBackups":"N\xe4yt\xe4 varmuuskopiot","hide":"Piilota","backupRetentionDesc":"Tietokannan tilannevedokset luodaan automaattisesti ennen palautusta ja 15 minuutin v\xe4lein tietojen muuttuessa. S\xe4ilytys: 24 tunnin v\xe4lein + 30 p\xe4ivitt\xe4ist\xe4 varmuuskopiota \xe4lykk\xe4\xe4ll\xe4 kierrolla.","loadingBackups":"Ladataan varmuuskopioita...","noBackupsYet":"Varmuuskopioita ei ole viel\xe4 saatavilla. Varmuuskopiot luodaan automaattisesti, kun tiedot muuttuvat.","backupsAvailable":"{count} varmuuskopio(t) saatavilla","refresh":"P\xe4ivit\xe4","confirm":"Vahvista?","yes":"Kyll\xe4","no":"Ei","restore":"Palauta","invalidFileType":"Virheellinen tiedostotyyppi. Vain .sqlite-tiedostot hyv\xe4ksyt\xe4\xe4n.","exportFailed":"Vienti ep\xe4onnistui","exportFailedWithError":"Vienti ep\xe4onnistui: {error}","fullExportFailedWithError":"T\xe4ysi vienti ep\xe4onnistui: {error}","backupCreated":"Varmuuskopio luotu: {file}","restoreSuccess":"Palautettu! {connections} yhteydet, {nodes} solmut, {combos} yhdistelm\xe4t, {apiKeys} API-avaimet.","importSuccess":"Tietokanta tuotu! {connections} yhteydet, {nodes} solmut, {combos} yhdistelm\xe4t, {apiKeys} API-avaimet.","justNow":"juuri nyt","minutesAgo":"{count}min sitten","hoursAgo":"{count}h sitten","daysAgo":"{count}pv sitten","backupReasonManual":"manuaalinen","backupReasonPreRestore":"esipalautus","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"Ei muutoksia edellisen varmuuskopioinnin j\xe4lkeen","backupFailed":"Varmuuskopiointi ep\xe4onnistui","restoreFailed":"Palautus ep\xe4onnistui","importFailed":"Tuonti ep\xe4onnistui","errorDuringRestore":"Palautuksen aikana tapahtui virhe","errorDuringImport":"Tuonnin aikana tapahtui virhe","modelPricing":"Mallin hinnoittelu","modelPricingDesc":"M\xe4\xe4rit\xe4 mallikohtaiset hintahinnat • Kaikki hinnat $/1M tunnuksissa","providers":"Palveluntarjoajat","registry":"Rekisteri","priced":"hinnoiteltu","searchProvidersModels":"Hae palveluntarjoajia tai malleja...","showAll":"N\xe4yt\xe4 kaikki","noProvidersMatch":"Yksik\xe4\xe4n palveluntarjoaja ei vastaa hakuasi.","howPricingWorks":"Kuinka hinnoittelu toimii","cacheWrite":"V\xe4limuistin kirjoitus","unsaved":"tallentamaton","resetDefaults":"Palauta oletukset","saveProvider":"Tallenna palveluntarjoaja","saving":"Tallennetaan...","model":"Malli","models":"mallit","moreProviders":"{count} lis\xe4\xe4 palveluntarjoajia","withPricing":"hinnoittelu m\xe4\xe4ritettyn\xe4","policiesCircuitBreakers":"K\xe4yt\xe4nn\xf6t ja katkaisijat","activeIssuesDetected":"Aktiivisia ongelmia havaittu","off":"Pois p\xe4\xe4lt\xe4","resetPricingConfirm":"Palautetaanko kaikki kohteen {provider} hinnat oletusasetuksiin?","pricingDescInput":"Sy\xf6te: mallille l\xe4hetetyt tunnukset","pricingDescOutput":"Tulos: luotuja merkkej\xe4","pricingDescCached":"V\xe4limuistissa: uudelleen k\xe4ytetty sy\xf6tt\xf6 (~50 % sy\xf6tt\xf6nopeudesta)","pricingDescReasoning":"P\xe4\xe4ttely: ajattelumerkit (palautuu ulostuloon)","pricingDescCacheWrite":"V\xe4limuistin kirjoitus: v\xe4limuistin merkint\xf6jen luominen (palautuu sy\xf6tteeseen)","pricingDescFormula":"Kustannukset = (sy\xf6tt\xf6 \xd7 sy\xf6tt\xf6nopeus) + (tuotos \xd7 l\xe4ht\xf6nopeus) + (v\xe4limuisti \xd7 v\xe4limuistin_nopeus) miljoonaa merkki\xe4 kohden.","pricingSettingsTitle":"Hinnoitteluasetukset","totalModels":"Mallit yhteens\xe4","active":"Aktiivinen","costCalculation":"Kustannuslaskenta","costCalculationDesc":"Kustannukset lasketaan kullekin mallille m\xe4\xe4ritettyjen tunnuksen k\xe4yt\xf6n ja hinnoittelun perusteella.","pricingFormat":"Hinnoittelumuoto","pricingFormatDesc":"Kaikki hinnat ovat $/1M tokeneita (dollaria per miljoonaa rahaketta).","tokenTypes":"Token-tyypit","inputTokenDesc":"Vakiokehotetunnukset","outputTokenDesc":"T\xe4ydennys-/vastaustunnukset","cachedTokenDesc":"V\xe4limuistissa olevat sy\xf6tt\xf6tunnukset (yleens\xe4 50 % sy\xf6tt\xf6nopeudesta)","reasoningTokenDesc":"Erityiset p\xe4\xe4ttely-/ajattelutunnisteet (varaustulosta)","cacheCreationTokenDesc":"V\xe4limuistimerkint\xf6jen luomiseen k\xe4ytetyt tunnukset (varausarvo sy\xf6tt\xf6nopeuteen)","customPricingNote":"Voit ohittaa tiettyjen mallien oletushinnoittelun. Mukautetut ohitukset ovat etusijalla automaattisesti tunnistettuihin hinnoitteluun n\xe4hden.","editPricing":"Muokkaa hinnoittelua","viewFullDetails":"N\xe4yt\xe4 t\xe4ydelliset tiedot"},"translator":{"title":"K\xe4\xe4nt\xe4j\xe4","metaTitle":"K\xe4\xe4nt\xe4j\xe4 leikkikentt\xe4 | OmniRoute","metaDescription":"Tee virheenkorjaus, testaa ja visualisoi API-muotojen k\xe4\xe4nn\xf6kset palveluntarjoajien v\xe4lill\xe4","playgroundTitle":"K\xe4\xe4nt\xe4j\xe4 leikkikentt\xe4","playground":"Leikkipaikka","realtime":"Reaaliaikainen k\xe4\xe4nn\xf6stoiminta","chatTester":"Chatin testaaja","testBench":"Testipenkki","liveMonitor":"Live Monitor","modeDescriptionPlayground":"Liit\xe4 mik\xe4 tahansa API-pyynn\xf6n runko ja katso, kuinka OmniRoute k\xe4\xe4nt\xe4\xe4 sen toimittajamuotojen v\xe4lill\xe4 (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)","modeDescriptionChatTester":"L\xe4het\xe4 todellisia chat-pyynt\xf6j\xe4 OmniRouten kautta ja tarkasta koko meno-paluu: sy\xf6tt\xf6, k\xe4\xe4nnetty pyynt\xf6, palveluntarjoajan vastaus ja k\xe4\xe4nnetty tulos.","modeDescriptionTestBench":"Suorita ennalta m\xe4\xe4ritettyj\xe4 skenaarioita ja vertaile toimittajien ja mallien yhteensopivuutta.","modeDescriptionLiveMonitor":"Katso k\xe4\xe4nn\xf6stapahtumia reaaliajassa, kun pyynn\xf6t kulkevat OmniRouten kautta.","modeDescriptionFallback":"Tee virheenkorjaus, testaa ja visualisoi, kuinka OmniRoute k\xe4\xe4nt\xe4\xe4 API-pyynn\xf6t palveluntarjoajien v\xe4lill\xe4.","recentTranslations":"Viimeaikaiset k\xe4\xe4nn\xf6kset","noTranslations":"Ei viel\xe4 k\xe4\xe4nn\xf6ksi\xe4","source":"l\xe4hde","target":"Kohde","time":"Aika","model":"Malli","status":"Tila","latency":"Latenssi","totalTranslations":"Yhteens\xe4 k\xe4\xe4nn\xf6ksi\xe4","successful":"Onnistunut","errors":"Virheet","avgLatency":"Keskim\xe4\xe4r\xe4inen viive","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"Live - automaattinen p\xe4ivitys","paused":"Keskeytetty","eventsAppearHint":"K\xe4\xe4nn\xf6stapahtumat n\xe4kyv\xe4t t\xe4\xe4ll\xe4, kun pyynn\xf6t kulkevat OmniRouten kautta. K\xe4yt\xe4 mit\xe4 tahansa n\xe4ist\xe4 menetelmist\xe4 tapahtumien luomiseen:","chatTesterTab":"Chat Tester -v\xe4lilehti","testBenchTab":"Testipenkki-v\xe4lilehti","externalApiCalls":"Ulkoiset API-kutsut","ideCliIntegrations":"IDE/CLI-integraatiot","inMemoryNote":"Huomautus: Tapahtumat tallennetaan muistiin ja nollataan, kun palvelin k\xe4ynnistyy uudelleen.","ok":"OK","errorShort":"ERR","formatConverter":"Format Converter","formatConverterDescription":"Liit\xe4 tai kirjoita JSON-pyynn\xf6n leip\xe4teksti. K\xe4\xe4nt\xe4j\xe4 tunnistaa automaattisesti l\xe4hdemuodon ja muuntaa sen kohdemuotoon. K\xe4yt\xe4 t\xe4t\xe4 virheenkorjaukseen, kuinka OmniRoute k\xe4\xe4nt\xe4\xe4 pyynn\xf6t muotojen v\xe4lill\xe4 (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).","input":"Sy\xf6te","output":"L\xe4ht\xf6","auto":"Auto","swapFormats":"Vaihda formaatteja","translateAction":"K\xe4\xe4nn\xe4","clear":"Selke\xe4","inputPlaceholder":"Liit\xe4 pyynn\xf6n teksti t\xe4h\xe4n tai valitse malli alta...","exampleTemplates":"Esimerkkimalleja","exampleTemplatesHint":"- Napsauta ladataksesi","templateLoadHint":"Malli lataa pyynn\xf6n muodossa {format}. Muuta l\xe4hdemuotoa ladataksesi eri muodossa.","compatibilityTester":"Yhteensopivuuden testaaja","compatibilityReport":"Yhteensopivuusraportti","testBenchDescription":"Suorita ennalta m\xe4\xe4ritettyj\xe4 skenaarioita (Simple Chat, Tool Calling jne.) varmistaaksesi k\xe4\xe4nn\xf6ksen ja palveluntarjoajan yhteensopivuuden. Valitse l\xe4hdemuoto ja kohdetoimittaja ja suorita sitten kaikki testit n\xe4hd\xe4ksesi yhteensopivuusprosentti. K\xe4yt\xe4 t\xe4t\xe4 selvitt\xe4\xe4ksesi, mitk\xe4 ominaisuudet toimivat eri palveluntarjoajien v\xe4lill\xe4.","targetProvider":"Kohdetoimittaja","runAllTests":"Suorita kaikki testit","runTest":"Suorita testi","reRun":"Suorita uudelleen","running":"Juoksemassa...","passed":"l\xe4p\xe4issyt","failed":"ep\xe4onnistunut","passedIconLabel":"✅ L\xe4p\xe4isty","chunks":"paloina","scenarioSimpleChat":"Yksinkertainen chat","scenarioToolCalling":"Ty\xf6kalun kutsuminen","scenarioMultiTurn":"Monikierros","scenarioThinking":"Ajatteleminen","scenarioSystemPrompt":"J\xe4rjestelm\xe4kehote","scenarioStreaming":"Suoratoisto","templateNames":{"simple-chat":"Yksinkertainen chat","tool-calling":"Ty\xf6kalun kutsuminen","multi-turn":"Monikierros","thinking":"Ajatteleminen","system-prompt":"J\xe4rjestelm\xe4kehote","streaming":"Suoratoisto"},"templateDescriptions":{"simple-chat":"Perustekstiviesti","tool-calling":"Toiminnon/ty\xf6kalun kutsuminen","multi-turn":"Keskustelua historian kanssa","thinking":"Laajennettu ajattelu/p\xe4\xe4ttely","system-prompt":"Monimutkaiset j\xe4rjestelm\xe4ohjeet","streaming":"SSE-suoratoistopyynt\xf6"},"templatePayloads":{"simpleChat":{"system":"Olet avulias avustaja.","userGreeting":"Hei! Miten voit t\xe4n\xe4\xe4n?"},"toolCalling":{"userWeather":"Millainen s\xe4\xe4 on S\xe3o Paulossa?","toolDescription":"Hanki nykyisen sijainnin s\xe4\xe4","cityNameDescription":"Kaupungin nimi"},"multiTurn":{"system":"Olet koodausassistentti.","userInitial":"Kirjoita funktio taulukon lajittelemiseksi Pythonissa.","assistantExample":"T\xe4ss\xe4 on yksinkertainen lajittelutoiminto:\\n\\n``` python\\ndef sort_array(arr):\\n palautus lajiteltuna(arr)\\n```","userFollowUp":"J\xe4rjest\xe4 se nyt laskevaan j\xe4rjestykseen."},"thinking":{"question":"Mik\xe4 on 100 ensimm\xe4isen alkuluvun summa?"},"systemPrompt":{"systemInstruction":"Olet hajautettuihin j\xe4rjestelmiin erikoistunut vanhempi ohjelmistosuunnittelija. Vastaa kysymyksiin ytimekk\xe4\xe4sti k\xe4ytt\xe4m\xe4ll\xe4 alan parhaita k\xe4yt\xe4nt\xf6j\xe4. Anna aina koodiesimerkkej\xe4 tarvittaessa. Muotoile vastauksesi k\xe4ytt\xe4m\xe4ll\xe4 markdownia.","question":"Kuinka otan k\xe4ytt\xf6\xf6n katkaisijakuvion?"},"streaming":{"prompt":"Kerro minulle lyhyt tarina robotista, joka oppii maalaamaan."}},"openaiCompatibleLabel":"OpenAI-yhteensopiva","anthropicCompatibleLabel":"Antrooppinen yhteensopiva","noTemplateForFormat":"Ei mallia t\xe4lle muodolle","translationFailed":"K\xe4\xe4nn\xf6s ep\xe4onnistui: {error}","pipelineDebugger":"Pipeline Debugger","translationPipeline":"K\xe4\xe4nn\xf6sputki","pipelineVisualization":"Putkilinjan visualisointi","pipelineVisualizationHint":"L\xe4het\xe4 viesti n\xe4hd\xe4ksesi, kuinka pyynt\xf6si etenee tunnistuksen → k\xe4\xe4nn\xf6s → palveluntarjoajan puhelun kautta.","chatTesterDescription":"L\xe4het\xe4 viestej\xe4 tietyss\xe4 asiakasmuodossa ja tarkista k\xe4\xe4nn\xf6sputken jokainen vaihe.","chatTesterFlow":"Asiakaspyynt\xf6 → muodon tunnistus → OpenAI-v\xe4litaso → tarjoajan muoto → vastaus","clickStepToInspect":"Napsauta mit\xe4 tahansa vaihetta tarkistaaksesi tiedot siin\xe4 vaiheessa.","clientFormat":"Asiakasmuoto","provider":"Palveluntarjoaja","modelPlaceholder":"Valitse tai kirjoita mallin nimi...","sendMessageToSeePipeline":"L\xe4het\xe4 viesti n\xe4hd\xe4ksesi k\xe4\xe4nn\xf6sputken","chatMessageHintPrefix":"Viestisi muotoillaan muodossa a","chatMessageHintSuffix":"pyynt\xf6, k\xe4\xe4nnet\xe4\xe4n putken kautta ja l\xe4hetet\xe4\xe4n valitulle palveluntarjoajalle.","youWithFormat":"Sin\xe4 ({format})","assistant":"Assistant","typeMessage":"Kirjoita viesti...","send":"L\xe4het\xe4","clientRequest":"Asiakaspyynt\xf6","clientRequestDescription":"Pyynn\xf6n elin sellaisena kuin asiakkaasi sen l\xe4hett\xe4isi","formatDetected":"Muoto havaittu","formatDetectedDescription":"OmniRoute tunnistaa automaattisesti API-muodon pyynt\xf6rakenteesta","openaiIntermediate":"OpenAI Intermediate","openaiIntermediateDescription":"Kaikki muodot normalisoidaan ensin OpenAI-muotoon (yleinen silta)","providerFormat":"Tarjoajan muoto","providerFormatDescription":"OpenAI-muoto k\xe4\xe4nnet\xe4\xe4n palveluntarjoajan alkuper\xe4iseen muotoon","providerResponse":"Palveluntarjoajan vastaus","providerResponseRawDescription":"Raaka vastaus palveluntarjoajan API:lta","providerResponseSseDescription":"Raaka SSE-stream palveluntarjoajan sovellusliittym\xe4st\xe4","unexpectedError":"Tapahtui odottamaton virhe","error":"Virhe","errorMessage":"Virhe: {message}","requestFailed":"Pyynt\xf6 ep\xe4onnistui","noTextExtracted":"(Ei teksti\xe4 poimittu)","liveMonitorDescriptionPrefix":"N\xe4ytt\xe4\xe4 k\xe4\xe4nn\xf6stapahtumat, kun API-kutsut kulkevat OmniRouten kautta. Tapahtumat tulevat muistin puskurista (palautuu uudelleenk\xe4ynnistyksen yhteydess\xe4). K\xe4yt\xe4","liveMonitorDescriptionSuffix":"tai ulkoisia API-kutsuja tapahtumien luomiseksi."},"usage":{"title":"K\xe4ytt\xf6","loggerTab":"Kirjaaja","proxyTab":"V\xe4lityspalvelin","budgetManagement":"Budjetin hallinta","budgetSaved":"Budjettirajat tallennettu","budgetSaveFailed":"Budjetin s\xe4\xe4st\xe4minen ep\xe4onnistui","loadingBudgetData":"Ladataan budjettitietoja...","noApiKeysTitle":"Ei API-avaimia","noApiKeysDescription":"Lis\xe4\xe4 ensin API-avaimet budjettirajojen m\xe4\xe4ritt\xe4miseksi.","apiKey":"API-avain","todaysSpend":"P\xe4iv\xe4n kulutus","thisMonth":"T\xe4ss\xe4 kuussa","setLimits":"Aseta rajat","dailyLimitUsd":"P\xe4ivitt\xe4inen raja (USD)","monthlyLimitUsd":"Kuukausiraja (USD)","warningThresholdPercent":"Varoituskynnys (%)","dailyLimitPlaceholder":"esim. 5.00","monthlyLimitPlaceholder":"esim. 50.00","warningThresholdPlaceholder":"80","saveLimits":"Tallenna rajoitukset","budgetOk":"Budjetti OK – {remaining} j\xe4ljell\xe4","budgetExceeded":"Budjetti ylitetty – pyynn\xf6t voidaan est\xe4\xe4","totalRequests":"Pyynt\xf6j\xe4 yhteens\xe4","noDataYet":"Ei viel\xe4 dataa","latency":"Latenssi","latencyP50":"p50","latencyP95":"p95","latencyP99":"p99","promptCache":"Kehotusv\xe4limuisti","systemHealth":"J\xe4rjestelm\xe4n terveys","entries":"merkinn\xe4t","activeCount":"{count} aktiivinen","openCircuitBreakersDetected":"Katkaisijat havaittu","hitRate":"Osumaprosentti","hitsMisses":"Osumat / Miss","circuitBreakers":"Katkaisijat","lockedIPs":"Lukitut IP:t","lockoutsAutoRefreshHint":"Mallikohtaiset nopeusrajoitukset • Automaattinen p\xe4ivitys 10s","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} j\xe4ljell\xe4","howItWorks":"Miten se toimii","howItWorksSubtitle":"Opi kuinka arvioinnit vahvistavat LLM-vastauksesi","define":"M\xe4\xe4rit\xe4","defineStepDescription":"Luo testitapauksia, joissa on sy\xf6tt\xf6kehotteita ja odotettuja tulosehtoja k\xe4ytt\xe4m\xe4ll\xe4 strategioita, kuten sis\xe4lt\xe4\xe4, regex tai tarkka vastaavuus.","run":"Juokse","runStepDescription":"Suorita testitapauksia LLM-p\xe4\xe4tepisteit\xe4si vastaan OmniRouten kautta. Jokainen tapaus l\xe4hetet\xe4\xe4n todellisena API-pyynt\xf6n\xe4.","evaluate":"Arvioi","evaluateStepDescription":"Vastauksia verrataan odotettuihin kriteereihin. Katso kunkin tapauksen hyv\xe4ksynt\xe4/hylk\xe4ys viivemittareiden ja yksityiskohtaisen palautteen avulla.","evalSuites":"Arviointisviitit","evalSuitesHint":"Napsauta sarjaa tarkastellaksesi testitapauksia ja suorita sitten LLM-p\xe4\xe4tepisteiden arvioiminen","evalsLoading":"Ladataan eval-sviittej\xe4...","noEvalSuitesFound":"Eval Suitesta ei l\xf6ytynyt","noEvalSuitesDescription":"Eval-sarjat voidaan m\xe4\xe4ritt\xe4\xe4 API:n kautta tai koodilla. He testaavat mallin tuloksia odotettujen tulosten kanssa k\xe4ytt\xe4m\xe4ll\xe4 strategioita, kuten sis\xe4lt\xe4\xe4, regex, tarkka vastaavuus ja mukautetut funktiot.","columnCase":"Asia","columnStatus":"Tila","columnLatency":"Latenssi","columnDetails":"Yksityiskohdat","columnModel":"Malli","columnStrategy":"strategia","columnExpected":"Odotettu","statsSuites":"Sviitit","statsTestCases":"Testitapaukset","statsModels":"Mallit","statsCoverage":"Kattavuus","statsStrategiesCount":"{count} strategioita","evaluationStrategies":"Arviointistrategiat","modelsUnderTest":"Mallit testattavana","searchSuitesPlaceholder":"Etsi sviittej\xe4...","passSuffix":"pass","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"Juokse Eval","runningProgress":"K\xe4ynniss\xe4 {current}/{total}...","passRate":"l\xe4p\xe4isyaste","summaryBreakdown":"{passed} hyv\xe4ksytty \xb7 {failed} ep\xe4onnistui \xb7 {total} yhteens\xe4","passedIconLabel":"✅ L\xe4p\xe4isty","failedIconLabel":"❌ Ep\xe4onnistui","detailsContains":"Sis\xe4lt\xe4\xe4: \\"{term}\\"","detailsRegex":"Regex: {pattern}","detailsExpected":"Odotettu: \\"{expected}\\"","noResultsYet":"Ei tuloksia viel\xe4","testCasesCount":"Testitapaukset ({count})","noTestCasesDefined":"Testitapauksia ei ole m\xe4\xe4ritelty","runEvalHint":"Napsauta \\"Suorita Eval\\" suorittaaksesi kaikki tapaukset LLM-p\xe4\xe4tepisteellesi. Jokainen testi l\xe4hett\xe4\xe4 oikean pyynn\xf6n OmniRouten kautta.","notifyNoTestCases":"T\xe4lle sarjalle ei ole m\xe4\xe4ritetty testitapauksia","notifyAllCasesPassed":"Kaikki {total} tapausta ohitettu ✅","notifySomeCasesFailed":"{passed}/{total} hyv\xe4ksytty, {failed} ep\xe4onnistui","notifyEvalRunFailed":"Eval-juoksu ep\xe4onnistui","notifyEvalTitle":"Arvosana: {name}","modelEvals":"Mallin arvioinnit","evalsHeroDescription":"Testaa ja vahvista LLM-p\xe4\xe4tepisteesi suorittamalla ennalta m\xe4\xe4ritettyj\xe4 arviointipaketteja. Jokainen sarja sis\xe4lt\xe4\xe4 testitapauksia, jotka l\xe4hett\xe4v\xe4t todellisia kehotteita OmniRouten kautta ja vertaavat vastauksia odotettuihin kriteereihin – auttaen sinua havaitsemaan regressioita, vertailla malleja ja varmistamaan vastausten laadun eri tarjoajien v\xe4lill\xe4.","qualityValidation":"Laadun validointi","modelComparison":"Mallin vertailu","regressionDetection":"Regression havaitseminen","latencyBenchmarks":"Viiveen vertailuarvot","modelLockouts":"Mallin lukitukset","noLockouts":"T\xe4ll\xe4 hetkell\xe4 ei ole lukittuja malleja","activeSessions":"Aktiiviset istunnot","noSessions":"Ei aktiivisia istuntoja","sessionsHint":"Istunnot n\xe4kyv\xe4t v\xe4lityspalvelimen kautta kulkevien pyynt\xf6jen aikana","sessionsTrackedHint":"Seurataan sormenj\xe4lkien pyyt\xe4misell\xe4 • Automaattinen p\xe4ivitys 5s","session":"Istunto","age":"Ik\xe4","requests":"Pyynn\xf6t","connection":"Yhteys","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}s","durationMinutesShort":"{value}m","durationHoursShort":"{value}h","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"Palveluntarjoajan rajoitukset","noProviders":"Ei yhdistettyj\xe4 palveluntarjoajia","connectProvidersForQuota":"Muodosta yhteys palveluntarjoajiin OAuthin avulla seurataksesi API-kiinti\xf6rajoja ja k\xe4ytt\xf6\xe4.","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"(suodatettu kohteesta {count})","autoRefresh":"Automaattinen p\xe4ivitys","refreshAll":"P\xe4ivit\xe4 kaikki","loadingQuotas":"Ladataan...","account":"Tili","modelQuotas":"Mallikiinti\xf6t","lastUsed":"Viimeksi k\xe4ytetty","actions":"Toiminnot","refreshQuota":"P\xe4ivit\xe4 kiinti\xf6","today":"T\xe4n\xe4\xe4n","tomorrow":"Huomenna","dayTimeFormat":"{day}, {time}","inDuration":"kohteessa {duration}","notApplicable":"Ei k\xe4yt\xf6ss\xe4","rawPlanWithValue":"Raakasuunnitelma: {plan}","noPlanFromProvider":"Ei suunnitelmaa palveluntarjoajalta","noQuotaData":"Ei kiinti\xf6tietoja","noQuotaDataAvailable":"Kiinti\xf6tietoja ei ole saatavilla","noAccountsForTierFilter":"Tasosuodattimelle ei l\xf6ytynyt tilej\xe4","tierAll":"Kaikki","tierEnterprise":"Yritys","tierTeam":"Joukkue","tierBusiness":"Business","tierUltra":"Ultra","tierPro":"Pro","tierPlus":"Plus","tierFree":"Ilmainen","tierUnknown":"Tuntematon"},"modals":{"waitingAuth":"Odotetaan valtuutusta","verificationUrl":"Vahvistus-URL","yourCode":"Koodisi","remoteAccess":"Et\xe4k\xe4ytt\xf6:","connectedSuccess":"Yhdistetty onnistuneesti!","connectionFailed":"Yhteys ep\xe4onnistui","chooseAuthMethod":"Valitse todennustapasi:","awsBuilderId":"AWS Builder ID","awsIamIdentity":"AWS IAM Identity Center","googleAccount":"Google-tili","githubAccount":"GitHub-tili","importToken":"Tuo tunnus","pasteToken":"Liit\xe4 p\xe4ivitystunnus Kiro IDE:st\xe4.","awsRegion":"AWS-alue","autoDetecting":"Tunnistetaan automaattisesti...","readingFromCache":"Lukee AWS SSO -v\xe4limuistista","readingFromCursor":"Lukeminen Cursor IDE -tietokannasta","initializing":"Alustetaan...","pricingConfig":"Hinnoitteluasetukset","loadingPricing":"Ladataan hintatietoja...","pricingRatesFormat":"Hinnoitteluhinnastomuoto","noPricingData":"Hintatietoja ei ole saatavilla","noModelsFound":"Malleja ei l\xf6ytynyt"},"loggers":{"allProviders":"Kaikki palveluntarjoajat","allModels":"Kaikki mallit","allAccounts":"Kaikki tilit","allApiKeys":"Kaikki API-avaimet","allTypes":"Kaikki tyypit","allLevels":"Kaikki tasot","modelAZ":"Malli A-Z","modelZA":"Malli Z-A","loadingLogs":"Ladataan lokeja...","loadingProxyLogs":"Ladataan v\xe4lityspalvelimen lokeja...","noLogEntries":"Lokimerkint\xf6j\xe4 ei l\xf6ytynyt","noPayloadData":"T\xe4lle lokimerkinn\xe4lle ei ole saatavilla hy\xf6tykuormatietoja.","proxyEvent":"V\xe4lityspalvelintapahtuma","proxy":"V\xe4lityspalvelin","level":"Taso","directNative":"Suora (natiivi)","combo":"Yhdistelm\xe4","inputTokens":"Min\xe4:","outputTokens":"O:"},"stats":{"usageOverview":"K\xe4ytt\xf6katsaus","outputTokens":"Tulostustunnukset","totalCost":"Kokonaiskustannukset","usageByModel":"K\xe4ytt\xf6 mallin mukaan","usageByAccount":"K\xe4ytt\xf6 tilikohtaisesti","failedToLoad":"K\xe4ytt\xf6tilastojen lataaminen ep\xe4onnistui.","tokenHealth":"Token Health","totalOAuth":"Yhteens\xe4 OAuth","healthy":"Terve","warning":"Varoitus","errored":"Virheellinen","lastCheck":"Viimeinen tarkistus","noData":"Ei dataa","share":"Jaa","unableToLoad":"J\xe4rjestelm\xe4n mittareita ei voi ladata","product":"Tuote","resources":"Resurssit","company":"Yritys"},"auth":{"welcome":"Tervetuloa","signIn":"Kirjaudu sis\xe4\xe4n","enterPassword":"Anna salasanasi jatkaaksesi","password":"Salasana","unifiedProxy":"Unified AI API Proxy","unifiedAiApiProxy":"Unified AI API Proxy","unifiedAiApiProxyDesc":"Reitit\xe4 pyynn\xf6t useille teko\xe4lypalveluntarjoajille yhden p\xe4\xe4tepisteen kautta. Kuormituksen tasapainotus, vikasieto ja k\xe4yt\xf6n seuranta sis\xe4\xe4nrakennettu.","passwordNotEnabled":"Salasanasuojaus ei ole k\xe4yt\xf6ss\xe4","loading":"Ladataan...","invalidPassword":"Virheellinen salasana","errorOccurredRetry":"Tapahtui virhe. Yrit\xe4 uudelleen.","configureInstance":"M\xe4\xe4ritet\xe4\xe4n OmniRoute-esiintym\xe4si","runOnboardingWizard":"M\xe4\xe4rit\xe4 salasanasi ja yhdist\xe4 ensimm\xe4inen teko\xe4lypalveluntarjoajasi suorittamalla ohjattu k\xe4ytt\xf6\xf6nottotoiminto.","startOnboarding":"Aloita perehtyminen","secureYourInstance":"Suojaa tapauksesi","setPasswordDescription":"Aseta salasana suojataksesi kojelautaasi ja suojataksesi API-p\xe4\xe4tepisteesi luvattomalta k\xe4yt\xf6lt\xe4.","configurePassword":"M\xe4\xe4rit\xe4 salasana","continue":"Jatka","windowWillClose":"T\xe4m\xe4 ikkuna sulkeutuu automaattisesti...","closeTabNow":"Voit sulkea t\xe4m\xe4n v\xe4lilehden nyt.","copyUrlManual":"Kopioi URL-osoite osoitepalkista ja liit\xe4 se sovellukseen.","accessDeniedDescription":"Sinulla ei ole lupaa k\xe4ytt\xe4\xe4 t\xe4t\xe4 resurssia. Tarkista API-avaimesi tai ota yhteytt\xe4 j\xe4rjestelm\xe4nvalvojaan.","goToDashboard":"Siirry Dashboardiin","featureMultiProviderTitle":"Multi-Provider","featureMultiProviderDesc":"OpenAI, Anthropic, Google ja paljon muuta","featureLoadBalancingTitle":"Kuorman tasapainotus","featureLoadBalancingDesc":"Jaa pyynn\xf6t \xe4lykk\xe4\xe4sti","featureUsageTrackingTitle":"K\xe4yt\xf6n seuranta","featureUsageTrackingDesc":"Valvo kustannuksia ja tokeneja","resetPassword":"Palauta salasana","resetDescription":"Valitse menetelm\xe4 hallintapaneelin k\xe4ytt\xf6oikeuden palauttamiseksi","stopServer":"Pys\xe4yt\xe4 OmniRoute-palvelin","processing":"K\xe4sitell\xe4\xe4n...","pleaseWait":"Odota, kun saamme valtuutuksen valmiiksi.","authSuccess":"Valtuutus onnistui!","copyUrl":"Kopioi t\xe4m\xe4 URL-osoite","accessDenied":"P\xe4\xe4sy kielletty","methodCliTitle":"Tapa 1: CLI-nollaus","methodCliDescription":"Suorita seuraava komento palvelimella, jossa OmniRoute on k\xe4ynniss\xe4:","methodCliHint":"T\xe4m\xe4 kehottaa sinua asettamaan uuden salasanan. Palvelin on ensin pys\xe4ytett\xe4v\xe4.","methodManualTitle":"Tapa 2: Manuaalinen nollaus","methodManualDescription":"Poista salasana tietokannasta ja aseta uusi salasana k\xe4ynnistyksen yhteydess\xe4:","setPasswordInYour":"Aseta uusi salasana omaan","fileLabelSuffix":"tiedosto:","newPasswordPlaceholder":"your_new_password","deleteSettingsFile":"Poista","orRemovePasswordHashField":"tai poista salasanaHash-kentt\xe4","restartServerWithNewPassword":"K\xe4ynnist\xe4 palvelin uudelleen - se k\xe4ytt\xe4\xe4 uutta salasanaa","backToLogin":"Takaisin kirjautumiseen","forgotPassword":"Unohditko salasanan?"},"landing":{"brandName":"OmniRoute","navigateHome":"Navigoi kotiin","toggleMenu":"Vaihda valikkoa","featuresLink":"Ominaisuudet","docsLink":"Asiakirjat","github":"GitHub","versionLive":"v1.0 on nyt julkaistu","oneEndpoint":"Yksi p\xe4\xe4tepiste","allProviders":"Kaikki AI-palveluntarjoajat","heroDescription":"AI-p\xe4\xe4tepisteen v\xe4lityspalvelin web-hallintapaneelilla – CLIProxyAPI:n JavaScript-portti. Toimii saumattomasti Claude Coden, OpenAI Codexin, Clinen, RooCoden ja muiden CLI-ty\xf6kalujen kanssa.","getStarted":"Aloita","viewOnGithub":"Katso GitHubissa","powerfulFeatures":"Tehokkaat ominaisuudet","featuresSubtitle":"Kaikki mit\xe4 tarvitset AI-infrastruktuurin hallintaan yhdess\xe4 paikassa, mittakaavassa rakennettu.","featureUnifiedEndpointTitle":"Yhten\xe4inen p\xe4\xe4tepiste","featureUnifiedEndpointDesc":"P\xe4\xe4set kaikkiin palveluntarjoajiin yhden standardin API-URL-osoitteen kautta.","featureEasySetupTitle":"Helppo asennus","featureEasySetupDesc":"P\xe4\xe4set k\xe4yntiin muutamassa minuutissa npx-komennolla.","featureModelFallbackTitle":"Mallin takaisku","featureModelFallbackDesc":"Vaihda automaattisesti palveluntarjoajaa vikatilanteen tai korkean viiveen sattuessa.","featureUsageTrackingTitle":"K\xe4yt\xf6n seuranta","featureUsageTrackingDesc":"Yksityiskohtainen analytiikka ja kustannusseuranta kaikissa malleissa.","featureOAuthApiKeysTitle":"OAuth- ja API-avaimet","featureOAuthApiKeysDesc":"Hallitse tunnistetietoja turvallisesti yhdess\xe4 holvissa.","featureCloudSyncTitle":"Cloud Sync","featureCloudSyncDesc":"Synkronoi m\xe4\xe4ritykset eri laitteiden v\xe4lill\xe4 v\xe4litt\xf6m\xe4sti.","featureCliSupportTitle":"CLI-tuki","featureCliSupportDesc":"Toimii Claude Coden, Codexin, Clinen, Cursorin ja muiden kanssa.","featureDashboardTitle":"Kojelauta","featureDashboardDesc":"Visuaalinen kojelauta reaaliaikaista liikenneanalyysi\xe4 varten.","howItWorks":"Kuinka OmniRoute toimii","howItWorksDescription":"Tiedot kulkevat saumattomasti sovelluksestasi \xe4lykk\xe4\xe4n reitityskerroksen kautta ty\xf6si parhaalle toimittajalle.","howItWorksStep1Title":"1. CLI ja SDK:t","howItWorksStep1Description":"Pyynt\xf6si alkavat suosikkity\xf6kaluistasi tai yhdistetyst\xe4 SDK:sta. Vaihda vain perus-URL-osoite.","howItWorksStep2Title":"2. OmniRoute Hub","howItWorksStep2Description":"Moottorimme analysoi kehotteen, tarkistaa palveluntarjoajan kunnon ja reitit pienimm\xe4n viiveen tai kustannusten varalta.","howItWorksStep3Title":"3. AI-palveluntarjoajat","howItWorksStep3Description":"OpenAI, Anthropic, Gemini tai muut t\xe4ytt\xe4v\xe4t pyynn\xf6n v\xe4litt\xf6m\xe4sti.","getStartedIn30Seconds":"Aloita 30 sekunnissa","getStartedDescription":"Asenna OmniRoute, m\xe4\xe4rit\xe4 palveluntarjoajasi web-hallintapaneelin kautta ja aloita AI-pyynt\xf6jen reititt\xe4minen.","installOmniRoute":"Asenna OmniRoute","installStepDescription":"Suorita npx-komento k\xe4ynnist\xe4\xe4ksesi palvelimen v\xe4litt\xf6m\xe4sti","openDashboard":"Avaa Dashboard","openDashboardStepDescription":"M\xe4\xe4rit\xe4 palveluntarjoajat ja API-avaimet verkkok\xe4ytt\xf6liittym\xe4n kautta","routeRequests":"Reittipyynn\xf6t","routeRequestsStepDescription":"Osoita CLI-ty\xf6kalusi osoitteeseen {endpoint}","terminal":"terminaali","copy":"Kopioi","copied":"✓ Kopioitu","startingOmniRoute":"OmniRoute aloitetaan...","serverRunningOnLabel":"Palvelin k\xe4ynniss\xe4","dashboardLabel":"Kojelauta","readyToRoute":"Valmiina reittiin! ✓","configureProvidersNote":"\uD83D\uDCDD M\xe4\xe4rit\xe4 palveluntarjoajat kojelaudassa tai k\xe4yt\xe4 ymp\xe4rist\xf6muuttujia","dataLocation":"Tietojen sijainti:","dataLocationMacLinux":" macOS/Linux:","dataLocationWindows":" Windows:","product":"Tuote","dashboardLink":"Kojelauta","changelog":"Muutosloki","resources":"Resurssit","documentation":"Dokumentaatio","npm":"NPM","legal":"Laillinen","mitLicense":"MIT-lisenssi","footerTagline":"Teko\xe4lyn sukupolven yhten\xe4inen p\xe4\xe4tepiste. Yhdist\xe4, reitit\xe4 ja hallitse teko\xe4lypalveluntarjoajiasi helposti.","copyright":"\xa9 {year} OmniRoute. Kaikki oikeudet pid\xe4tet\xe4\xe4n.","flowToolClaudeCode":"Claude Code","flowToolOpenAICodex":"OpenAI Codex","flowToolCline":"Cline","flowToolCursor":"Kursori","flowProviderOpenAI":"OpenAI","flowProviderAnthropic":"Antrooppinen","flowProviderGemini":"Kaksoset","flowProviderGithubCopilot":"GitHub Copilot","interactiveDiagram":"Interaktiivinen kaavio n\xe4kyy ty\xf6p\xf6yd\xe4ll\xe4","ctaTitle":"Oletko valmis yksinkertaistamaan teko\xe4ly-infrastruktuuriasi?","ctaDescription":"Liity kehitt\xe4jien joukkoon, jotka virtaviivaistavat teko\xe4lyintegraatiotaan OmniRouten avulla. Avoin l\xe4hdekoodi ja ilmainen aloittaa.","startFree":"Aloita ilmaiseksi","readDocumentation":"Lue dokumentaatio"},"docs":{"title":"Dokumentaatio","quickStart":"Pika-aloitus","features":"Ominaisuudet","supportedProviders":"Tuetut palveluntarjoajat","supportedProvidersToc":"Palveluntarjoajat","commonUseCases":"Yleiset k\xe4ytt\xf6tapaukset","clientCompatibility":"Asiakasyhteensopivuus","apiReference":"API-viite","method":"menetelm\xe4","path":"Polku","notes":"Huomautuksia","modelPrefixes":"Mallin etuliitteet","prefix":"Etuliite","troubleshooting":"Vianetsint\xe4","supportsChat":"Tukee sek\xe4 chat- ett\xe4 vastausp\xe4\xe4tepisteit\xe4.","oauthAutoRefresh":"OAuth-yhteys automaattisella tunnuksen p\xe4ivityksell\xe4.","fullStreaming":"T\xe4ysi suoratoistotuki kaikille malleille.","docsLabel":"Asiakirjat","docsHeroDescription":"Teko\xe4lyyhdysk\xe4yt\xe4v\xe4 usean palveluntarjoajan LLM:ille. Yksi p\xe4\xe4tepiste OpenAI:lle, Anthropicille, Geminille, GitHub Copilotille, Claude Codelle, Cursorille ja yli 20 muulle palveluntarjoajalle.","openDashboard":"Avaa Dashboard","endpointPage":"P\xe4\xe4tepistesivu","github":"GitHub","reportIssue":"Ilmoita ongelmasta","onThisPage":"T\xe4ll\xe4 sivulla","documentationVersion":"Dokumentaatio - v{version}","quickStartStep1Title":"1. Asenna ja suorita","quickStartStep1Prefix":"Juokse","quickStartStep1Middle":"tai kloonaa GitHubista ja aja","quickStartStep2Title":"2. Luo API-avain","quickStartStep2Text":"Siirry kohtaan P\xe4\xe4tepiste -> Rekister\xf6idyt avaimet. Luo yksi avain ymp\xe4rist\xf6\xe4 kohden.","quickStartStep3Title":"3. Yhdist\xe4 palveluntarjoajat","quickStartStep3Text":"Lis\xe4\xe4 palveluntarjoajan tilej\xe4 OAuth-kirjautumisen, API-avaimen tai vapaan tason automaattisen yhteyden avulla.","quickStartStep4Title":"4. Aseta asiakaskannan URL-osoite","quickStartStep4Prefix":"Osoita IDE- tai API-asiakkaasi","quickStartStep4Suffix":"K\xe4yt\xe4 esimerkiksi palveluntarjoajan etuliitett\xe4","featureRoutingTitle":"Usean palveluntarjoajan reititys","featureRoutingText":"Reitit\xe4 pyynn\xf6t yli 30 teko\xe4lypalveluntarjoajalle yhden OpenAI-yhteensopivan p\xe4\xe4tepisteen kautta. Tukee chat-, vastaus-, \xe4\xe4ni- ja kuvasovellusliittymi\xe4.","featureCombosTitle":"Yhdistelm\xe4t ja tasapainotus","featureCombosText":"Luo mallikomboja varaketjuilla ja tasapainotusstrategioilla: round-robin, prioriteetti, satunnainen, v\xe4hiten k\xe4ytetty ja kustannusoptimoitu.","featureUsageTitle":"K\xe4yt\xf6n ja kustannusten seuranta","featureUsageText":"Reaaliaikainen tunnuksen laskenta, kustannuslaskenta palveluntarjoaja-/mallikohtaisesti ja yksityiskohtainen k\xe4ytt\xf6erittely API-avaimen ja tilin mukaan.","featureAnalyticsTitle":"Analyticsin hallintapaneeli","featureAnalyticsText":"Visuaalinen analytiikka, jossa on kaavioita pyynn\xf6ist\xe4, tunnuksista, virheist\xe4, viiveest\xe4, kustannuksista ja mallin suosiosta ajan mittaan.","featureHealthTitle":"Terveyden seuranta","featureHealthText":"Live-terveystarkastukset, palveluntarjoajan tila, katkaisijatilat ja automaattinen nopeusrajan tunnistus eksponentiaalisella per\xe4\xe4ntymisell\xe4.","featureCliTitle":"CLI-ty\xf6kalut","featureCliText":"Hallitse IDE-m\xe4\xe4rityksi\xe4, vie/tuo varmuuskopioita, etsi koodeksiprofiileja ja m\xe4\xe4rit\xe4 asetuksia kojelaudalta.","featureSecurityTitle":"Turvallisuus ja k\xe4yt\xe4nn\xf6t","featureSecurityText":"API-avaimen todennus, IP-suodatus, pikasy\xf6tt\xf6suoja, toimialueen k\xe4yt\xe4nn\xf6t, istunnon hallinta ja tarkastusloki.","featureCloudSyncTitle":"Cloud Sync","featureCloudSyncText":"Synkronoi kokoonpanosi Cloudflare Workersin kanssa, jotta voit k\xe4ytt\xe4\xe4 et\xe4k\xe4ytt\xf6\xe4 salatuilla tunnistetiedoilla ja automaattisella virheensiirrolla.","providersAcrossConnectionTypes":"{count} palveluntarjoajia kolmessa yhteystyypiss\xe4.","manageProviders":"Hallinnoi palveluntarjoajia","providersCount":"{count} palveluntarjoajat","providerTypeFree":"Ilmainen taso","providerTypeOAuth":"OAuth","providerTypeApiKey":"API-avain","useCaseSingleEndpointTitle":"Yksi p\xe4\xe4tepiste useille palveluntarjoajille","useCaseSingleEndpointText":"Osoita asiakkaat yhteen perus-URL-osoitteeseen ja reitit\xe4 mallien etuliite (esimerkiksi: gh/, cc/, kr/, openai/).","useCaseFallbackTitle":"Vara- ja mallinvaihto komboilla","useCaseFallbackText":"Luo yhdistelm\xe4malleja Dashboardissa ja pid\xe4 asiakkaan kokoonpano vakaana, kun toimittajat vaihtuvat sis\xe4isesti.","useCaseUsageVisibilityTitle":"K\xe4ytt\xf6, hinta ja virheenkorjauksen n\xe4kyvyys","useCaseUsageVisibilityText":"Seuraa tunnuksia ja kustannuksia palveluntarjoajan, tilin ja API-avaimen mukaan K\xe4ytt\xf6- ja Analytics-v\xe4lilehdill\xe4.","clientCherryStudioTitle":"Cherry Studio","baseUrlLabel":"Perus-URL-osoite","chatEndpointLabel":"Keskustelun p\xe4\xe4tepiste","modelRecommendationLabel":"Mallisuositus: selke\xe4 etuliite","clientCodexTitle":"Codex / GitHub Copilot -mallit","clientCodexBullet1":"K\xe4yt\xe4 mallitunnuksia kanssa","clientCodexBullet2":"Codex-perheen mallit reititt\xe4v\xe4t automaattisesti kohteeseen","clientCodexBullet3":"Ei-Codex-mallit jatkavat toimintaansa","clientCursorTitle":"Kohdistin IDE","clientCursorBullet1":"K\xe4yt\xe4","clientCursorBullet1Suffix":"etuliite kohdistinmalleille.","clientCursorBullet2":"OAuth-yhteys - kirjaudu sis\xe4\xe4n Palveluntarjoajat-sivulta.","clientClaudeTitle":"Claude Code / Antigravitaatio","clientClaudeBullet1Prefix":"K\xe4yt\xe4","clientClaudeBullet1Middle":"(Claude) tai","clientClaudeBullet1Suffix":"(Antigravity) etuliite.","endpointChatNote":"OpenAI-yhteensopiva chat-p\xe4\xe4tepiste (oletus).","endpointResponsesNote":"Responses API-p\xe4\xe4tepiste (Codex, o-sarja).","endpointModelsNote":"Malliluettelo kaikille liitetyille palveluntarjoajille.","endpointAudioNote":"\xc4\xe4nen transkriptio (Deepgram, AssemblyAI).","endpointImagesNote":"Kuvan luominen (NanoBanana).","endpointRewriteChatNote":"Uudelleenkirjoitusapuohjelma asiakkaille ilman /v1.","endpointRewriteResponsesNote":"Uudelleenkirjoitusapuohjelma vastauksille ilman /v1.","endpointRewriteModelsNote":"Uudelleenkirjoitusapuohjelma mallin etsinn\xe4ss\xe4 ilman /v1:t\xe4.","modelPrefixesDescriptionStart":"K\xe4yt\xe4 toimittajan etuliitett\xe4 ennen mallin nime\xe4 reititt\xe4\xe4ksesi tietylle toimittajalle. Esimerkki:","modelPrefixesDescriptionEnd":"reitit GitHub Copilotiin.","provider":"Palveluntarjoaja","type":"Kirjoita","troubleshootingModelRouting":"Jos asiakas ep\xe4onnistuu mallin reitityksess\xe4, k\xe4yt\xe4 nimenomaista tarjoaja/malli (esimerkiksi: gh/gpt-5.1-codex).","troubleshootingAmbiguousModels":"Jos saat ep\xe4selvi\xe4 mallivirheit\xe4, valitse toimittajan etuliite paljaan mallitunnuksen sijaan.","troubleshootingCodexFamily":"S\xe4ilyt\xe4 GitHub Codex -perheen mallien mallina muodossa gh/<codex-model>; reititin valitsee / vastaa automaattisesti.","troubleshootingTestConnection":"K\xe4yt\xe4 Dashboard > Providers > Test Connection ennen testaamista IDE:ist\xe4 tai ulkoisista asiakkaista.","troubleshootingCircuitBreaker":"Jos palveluntarjoaja n\xe4ytt\xe4\xe4 katkaisijan auki, odota j\xe4\xe4htymist\xe4 tai katso lis\xe4tietoja Terveys-sivulta.","troubleshootingOAuth":"OAuth-palveluntarjoajat todenna uudelleen, jos tunnukset vanhenevat. Tarkista palveluntarjoajan kortin tilailmaisin."},"legal":{"privacyPolicy":"Tietosuojak\xe4yt\xe4nt\xf6","termsOfService":"Palveluehdot","providerConfigurations":"Palveluntarjoajan m\xe4\xe4ritykset","apiKeys":"API-avaimet","usageLogs":"K\xe4ytt\xf6lokit","applicationSettings":"Sovellusasetukset","viewExportAnalytics":"Tarkastele ja vie k\xe4ytt\xf6analytiikkaa","clearHistory":"Tyhjenn\xe4 k\xe4ytt\xf6historia milloin tahansa","configureRetention":"M\xe4\xe4rit\xe4 lokin s\xe4ilytysk\xe4yt\xe4nn\xf6t","backupRestore":"Varmuuskopioi ja palauta tietokanta","privacyMetadataTitle":"Tietosuojak\xe4yt\xe4nt\xf6 | OmniRoute","privacyMetadataDescription":"OmniRoute AI API -v\xe4lityspalvelimen reitittimen tietosuojak\xe4yt\xe4nt\xf6.","termsMetadataTitle":"Palveluehdot | OmniRoute","termsMetadataDescription":"OmniRoute AI API -v\xe4lityspalvelimen reitittimen k\xe4ytt\xf6ehdot.","backToHome":"Takaisin kotiin","lastUpdated":"Viimeksi p\xe4ivitetty: {date}","policyLastUpdatedDate":"13. helmikuuta 2026","listSeparator":"-","questionsVisit":"Kysymyksi\xe4? Vieraile meill\xe4","githubRepository":"GitHub-arkisto","privacySection1Title":"1. Local-First Architecture","privacySection1Text":"OmniRoute on suunniteltu paikalliseksi sovellukseksi. Kaikki tietojen k\xe4sittely ja tallennus tapahtuu kokonaan koneessasi. Ei ole keskitetty\xe4 palvelinta, joka ker\xe4\xe4 tietojasi.","privacySection2Title":"2. Tallentamamme tiedot","privacyDataStoredIn":"Seuraavat tiedot on tallennettu paikallisesti","privacyDataProviderConfigurationsDesc":"yhteyden URL-osoitteet, palveluntarjoajan tyypit ja prioriteettiasetukset","privacyDataApiKeysDesc":"salattu ja tallennettu paikallisesti AI-palveluntarjoajien todennusta varten","privacyDataUsageLogsDesc":"pyynt\xf6jen m\xe4\xe4r\xe4t, tunnuksen k\xe4ytt\xf6, mallien nimet, aikaleimat ja vastausajat","privacyDataApplicationSettingsDesc":"teemaasetukset, reititysstrategia ja yhdistelm\xe4kokoonpanot","privacySection3Title":"3. Ei telemetriaa","privacySection3Text":"OmniRoute ei ker\xe4\xe4 telemetria-, analytiikka- tai virheraportteja. Tietoja ei l\xe4hetet\xe4 meille tai millek\xe4\xe4n kolmannelle osapuolelle. K\xe4ytt\xf6mallisi, API-kutsusi ja kokoonpanosi pysyv\xe4t t\xe4ysin yksityisin\xe4.","privacySection4Title":"4. Kolmannen osapuolen teko\xe4lypalveluntarjoajat","privacySection4Text":"Kun soitat API-kutsuja OmniRouten kautta, pyynt\xf6si v\xe4litet\xe4\xe4n m\xe4\xe4ritt\xe4millesi teko\xe4lypalveluntarjoajille (esimerkiksi OpenAI, Anthropic, Google). N\xe4ill\xe4 palveluntarjoajilla on omat tietosuojak\xe4yt\xe4nt\xf6ns\xe4, jotka s\xe4\xe4telev\xe4t, kuinka he k\xe4sittelev\xe4t tietojasi. Tarkista:","privacyOpenAiPolicy":"OpenAI:n tietosuojak\xe4yt\xe4nt\xf6","privacyAnthropicPolicy":"Antrooppinen tietosuojak\xe4yt\xe4nt\xf6","privacyGooglePolicy":"Googlen tietosuojak\xe4yt\xe4nt\xf6","privacySection5Title":"5. Cloud Sync (valinnainen)","privacySection5Text":"Jos otat valinnaisen pilvisynkronointiominaisuuden k\xe4ytt\xf6\xf6n, palveluntarjoajan m\xe4\xe4ritykset ja API-avaimet voidaan l\xe4hett\xe4\xe4 m\xe4\xe4ritettyyn pilvip\xe4\xe4tepisteeseen. T\xe4m\xe4 ominaisuus on oletuksena pois k\xe4yt\xf6st\xe4 ja vaatii nimenomaisen osallistumisen.","privacySection6Title":"6. Kirjautuminen","privacyLoggingIntro":"Pyynt\xf6lokit voidaan m\xe4\xe4ritt\xe4\xe4 kojelaudan asetuksista. Voit:","privacySection7Title":"7. Sinun oikeutesi","privacySection7TextStart":"Koska kaikki tiedot tallennetaan paikallisesti, sinulla on t\xe4ysi hallinta. Voit poistaa tietosi milloin tahansa poistamalla","privacySection7TextEnd":"hakemistosta tai k\xe4ytt\xe4m\xe4ll\xe4 tietokannan varmuuskopiointi- ja palautustoimintoja kojelaudassa.","termsSection1Title":"1. Yleiskatsaus","termsSection1Text":"OmniRoute on paikallinen ensimm\xe4inen AI API -v\xe4lityspalvelin, joka toimii kokonaan koneessasi. Se reititt\xe4\xe4 pyynn\xf6t useille teko\xe4lypalveluntarjoajille kuormituksen tasapainottamisen, vikasietoisuuden ja k\xe4yt\xf6n seurannan avulla.","termsSection2Title":"2. K\xe4ytt\xe4j\xe4n velvollisuudet","termsResponsibilityApiKeys":"Olet yksin vastuussa omien API-avainten ja valtuustietojen hallinnasta kolmannen osapuolen AI-palveluntarjoajille (OpenAI, Anthropic, Google jne.).","termsResponsibilityCompliance":"Sinun on noudatettava jokaisen teko\xe4lyn palveluntarjoajan, jonka API:ta k\xe4yt\xe4t OmniRouten kautta, k\xe4ytt\xf6ehtoja.","termsResponsibilitySecurity":"Olet vastuussa paikallisen OmniRoute-asennuksesi turvallisuudesta, mukaan lukien salasanan asettamisesta ja verkkoon p\xe4\xe4syn rajoittamisesta.","termsSection3Title":"3. Kuinka se toimii","termsSection3Text":"OmniRoute toimii v\xe4litt\xe4j\xe4n\xe4. OmniRouteen l\xe4hetetyt API-kutsut k\xe4\xe4nnet\xe4\xe4n ja v\xe4litet\xe4\xe4n m\xe4\xe4ritetyille teko\xe4lypalveluntarjoajille. OmniRoute ei muuta pyynt\xf6jesi tai vastaustesi sis\xe4lt\xf6\xe4 tarvittavan protokollan k\xe4\xe4nn\xf6ksen lis\xe4ksi.","termsSection4Title":"4. Tietojen k\xe4sittely","termsDataStoredLocally":"Kaikki tiedot tallennetaan paikallisesti koneellesi SQLite-tietokantaan.","termsNoTransmission":"OmniRoute ei l\xe4het\xe4 mit\xe4\xe4n tietoja ulkoisille palvelimille, ellet ota pilvisynkronointiominaisuuksia erikseen k\xe4ytt\xf6\xf6n.","termsDataLocationText":"K\xe4ytt\xf6lokit, API-avaimet ja m\xe4\xe4ritykset tallennetaan","termsSection5Title":"5. Vastuuvapauslauseke","termsSection5Text":"OmniRoute toimitetaan \\"sellaisenaan\\" ilman mink\xe4\xe4nlaista takuuta. Emme ole vastuussa kustannuksista, jotka aiheutuvat API:n k\xe4yt\xf6st\xe4, palveluh\xe4iri\xf6ist\xe4 tai tietojen katoamisesta. Pid\xe4 aina varmuuskopiot asetuksistasi.","termsSection6Title":"6. Avoin l\xe4hdekoodi","termsSection6Text":"OmniRoute on avoimen l\xe4hdekoodin ohjelmisto. Voit vapaasti tarkastaa, muokata ja jakaa sit\xe4 sen lisenssiehtojen mukaisesti."}}')}};
1
+ "use strict";exports.id=6118,exports.ids=[6118],exports.modules={96118:a=>{a.exports=JSON.parse('{"common":{"save":"Tallenna","cancel":"Peruuta","delete":"Poista","loading":"Ladataan...","error":"Tapahtui virhe","success":"Menestyst\xe4","confirm":"Oletko varma?","refresh":"P\xe4ivit\xe4","close":"Sulje","add":"Lis\xe4\xe4","edit":"Muokkaa","search":"Etsi","back":"Takaisin","next":"Seuraavaksi","submit":"L\xe4het\xe4","reset":"Nollaa","copy":"Kopioi","copied":"Kopioitu!","enabled":"K\xe4yt\xf6ss\xe4","disabled":"Ei k\xe4yt\xf6ss\xe4","active":"Aktiivinen","inactive":"Ei-aktiivinen","noData":"Tietoja ei ole saatavilla","configure":"M\xe4\xe4rit\xe4","manage":"Hallitse","name":"Nimi","actions":"Toiminnot","status":"Tila","type":"Kirjoita","model":"Malli","models":"mallit","provider":"Palveluntarjoaja","account":"Tili","time":"Aika","details":"Yksityiskohdat","created":"Luotu","lastUsed":"Viimeksi k\xe4ytetty","loadMore":"Lataa lis\xe4\xe4","noResults":"Tuloksia ei l\xf6ytynyt","reloadPage":"Lataa sivu uudelleen","connected":"Yhdistetty","disconnected":"Yhteys katkaistu","notConfigured":"Ei m\xe4\xe4ritetty","testConnection":"Testaa yhteys","enable":"Ota k\xe4ytt\xf6\xf6n","disable":"Poista k\xe4yt\xf6st\xe4","columns":"Sarakkeet","newest":"Uusin","oldest":"Vanhin","all":"Kaikki","none":"Ei mit\xe4\xe4n","yes":"Kyll\xe4","no":"Ei","warning":"Varoitus","note":"Huom","free":"Ilmainen","skipToContent":"Siirry sis\xe4lt\xf6\xf6n"},"sidebar":{"home":"Kotiin","dashboard":"Kojelauta","providers":"Palveluntarjoajat","combos":"Yhdistelm\xe4t","usage":"K\xe4ytt\xf6","analytics":"Analytics","costs":"Kustannukset","health":"Terveys","limits":"Rajoitukset ja kiinti\xf6t","cliTools":"CLI-ty\xf6kalut","settings":"Asetukset","translator":"K\xe4\xe4nt\xe4j\xe4","docs":"Asiakirjat","issues":"Ongelmat","endpoint":"P\xe4\xe4tepiste","apiManager":"API Manager","logs":"Lokit","auditLog":"Tarkastusloki","shutdown":"Sammutus","restart":"K\xe4ynnist\xe4 uudelleen","shutdownConfirm":"Suljetaanko OmniRoute?","restartConfirm":"K\xe4ynnistet\xe4\xe4nk\xf6 OmniRoute uudelleen?","version":"v{version}","debug":"Debug","system":"J\xe4rjestelm\xe4","help":"Apua","serverDisconnected":"Palvelin yhteys katkaistu","serverDisconnectedMsg":"V\xe4lityspalvelin on pys\xe4ytetty tai k\xe4ynnistyy uudelleen.","expandSidebar":"Laajenna sivupalkki","collapseSidebar":"Tiivist\xe4 sivupalkki"},"header":{"logout":"Kirjaudu ulos","language":"Kieli","providers":"Palveluntarjoajat","providerDescription":"Hallinnoi AI-palveluntarjoajan yhteyksi\xe4","combos":"Yhdistelm\xe4t","comboDescription":"Malliyhdistelm\xe4t varaosilla","usage":"K\xe4ytt\xf6 ja analytiikka","usageDescription":"Valvo API-k\xe4ytt\xf6\xe4si, tunnuksesi kulutusta ja pyynt\xf6lokeja","analytics":"Analytics","analyticsDescription":"Kaavioita, trendej\xe4 ja arviointitietoja","cliTools":"CLI-ty\xf6kalut","cliToolsDescription":"M\xe4\xe4rit\xe4 CLI-ty\xf6kalut","home":"Kotiin","homeDescription":"Tervetuloa OmniRouteen","endpoint":"P\xe4\xe4tepiste","endpointDescription":"API-p\xe4\xe4tepisteen m\xe4\xe4ritys","settings":"Asetukset","settingsDescription":"Hallinnoi asetuksiasi","openaiCompatible":"OpenAI-yhteensopiva","anthropicCompatible":"Antrooppinen yhteensopiva"},"home":{"quickStart":"Pika-aloitus","quickStartDesc":"P\xe4\xe4set liikkeelle nelj\xe4ss\xe4 vaiheessa. Yhdist\xe4 palveluntarjoajat, reittimallit, tarkkaile kaikkea.","fullDocs":"T\xe4ydelliset asiakirjat","step1Title":"1. Luo API-avain","step1Desc":"Siirry kohtaan <endpoint>Endpoint</endpoint> -> Rekister\xf6idyt avaimet. Luo yksi avain ymp\xe4rist\xf6\xe4 kohden.","step2Title":"2. Yhdist\xe4 palveluntarjoajat","step2Desc":"Lis\xe4\xe4 tilej\xe4 palveluun <providers>Providers</providers>. Tukee OAuthia, API-avainta ja ilmaisia ​​tasoja.","step3Title":"3. Osoita asiakkaasi","step3Desc":"Aseta perus-URL-osoitteeksi {url} IDE- tai API-asiakkaassasi.","step4Title":"4. Valvo ja optimoi","step4Desc":"Seuraa tunnuksia, kustannuksia ja virheit\xe4 <logs>Pyynt\xf6lokeissa</logs> ja <analytics>Analytics</analytics>.","providersOverview":"Palveluntarjoajien yleiskatsaus","configuredOf":"{configured} m\xe4\xe4ritetty {total} k\xe4ytett\xe4viss\xe4 olevasta palveluntarjoajasta","noModelsAvailable":"T\xe4lle tarjoajalle ei ole saatavilla malleja.","configureFirst":"M\xe4\xe4rit\xe4 yhteys ensin kohteessa {providers}","configureProvider":"M\xe4\xe4rit\xe4 Provider","modelAvailable":"{count} malli saatavilla","modelsAvailable":"{count} malleja saatavilla","connectionsActive":"{count} yhteys aktiivinen","connectionsActivePlural":"{count} yhteydet aktiivisia","copyModelName":"Kopioi mallin nimi","documentation":"Dokumentaatio","healthMonitor":"Terveysmittari","reportIssue":"Ilmoita ongelmasta","activeError":"{active} aktiivinen \xb7 {errors} virhe","oauthLabel":"OAuth","apiKeyLabel":"API-avain","requestsShort":"{count} vaatimus","providerModelsTitle":"{provider} - Mallit","copiedModel":"Kopioitu: {model}","aliasLabel":"alias"},"analytics":{"title":"Analytics","overviewDescription":"Tarkkaile sovellusliittym\xe4n k\xe4ytt\xf6tapoja, tunnuksen kulutusta, kustannuksia ja toimintatrendej\xe4 kaikilla palveluntarjoajilla ja malleilla.","evalsDescription":"Testaa ja vahvista LLM-p\xe4\xe4tepisteesi suorittamalla arviointipaketteja. Vertaile mallin laatua, havaitse regressiot ja vertaile viivett\xe4.","overview":"Yleiskatsaus","evals":"Evals"},"apiManager":{"title":"API-avaimet","createKey":"Luo API-avain","key":"Avain","revokeKey":"Peruuta avain","revokeConfirm":"Haluatko varmasti peruuttaa t\xe4m\xe4n API-avaimen?","noKeys":"Ei viel\xe4 API-avaimia","noKeysDesc":"Luo ensimm\xe4inen API-avain p\xe4\xe4tepisteellesi tulevien pyynt\xf6jen todentamiseksi","keyLabel":"Avaimen etiketti","permissions":"K\xe4ytt\xf6oikeudet","expiresAt":"Vanhenee","never":"Ei koskaan","revoke":"Peruuta","showKey":"N\xe4yt\xe4 avain","hideKey":"Piilota avain","copyKey":"Kopioi API-avain","allModels":"Kaikki mallit","selectedModels":"Valitut mallit","readOnly":"Vain luku","fullAccess":"T\xe4ysi p\xe4\xe4sy","keyManagement":"API-avainten hallinta","keyManagementDesc":"Luo ja hallitse API-avaimia p\xe4\xe4tepisteesi pyynt\xf6jen todentamiseksi","totalKeys":"Avaimet yhteens\xe4","restricted":"Rajoitettu","totalRequests":"Pyynt\xf6j\xe4 yhteens\xe4","modelsAvailable":"Mallit saatavilla","registeredKeys":"Rekister\xf6ity avaimet","keysRegistered":"{count} avaimet rekister\xf6ity","keyRegistered":"{count} avain rekister\xf6ity","keysSecurityNote":"Jokainen avain erist\xe4\xe4 k\xe4yt\xf6n seurannan ja voidaan peruuttaa itsen\xe4isesti. Avaimet peitet\xe4\xe4n luomisen j\xe4lkeen turvallisuuden vuoksi.","createFirstKey":"Luo ensimm\xe4inen avaimesi","name":"Nimi","usage":"K\xe4ytt\xf6","created":"Luotu","actions":"Toiminnot","reqs":"vaatimukset","neverUsed":"Ei koskaan k\xe4ytetty","deleteConfirm":"Poistetaanko t\xe4m\xe4 API-avain?","usageTips":"K\xe4ytt\xf6vinkkej\xe4","tipAuth":"K\xe4yt\xe4 API-avaimia Authorization-otsikossa siirtotien\xe4 YOUR_KEY","tipSecure":"Avaimet n\xe4kyv\xe4t vain kerran luomisen aikana – s\xe4ilyt\xe4 ne turvallisesti","tipSeparate":"Luo erilliset avaimet eri asiakkaille tai ymp\xe4rist\xf6ille","tipRestrict":"Rajoita avaimet tiettyihin malleihin parantaaksesi turvallisuutta ja kustannusten hallintaa","keyName":"Avaimen nimi","keyNamePlaceholder":"esim. tuotantoavain, kehitysavain","keyNameDesc":"Valitse kuvaava nimi t\xe4m\xe4n avaimen tarkoituksen tunnistamiseksi","keyCreated":"API-avain luotu","keyCreatedSuccess":"Avain luotu onnistuneesti!","keyCreatedNote":"Kopioi ja tallenna t\xe4m\xe4 avain nyt – sit\xe4 ei n\xe4ytet\xe4 uudelleen.","done":"Valmis","savePermissions":"Tallenna k\xe4ytt\xf6oikeudet","allowAll":"Salli kaikki","restrict":"Rajoita","allowAllInfo":"T\xe4ll\xe4 avaimella p\xe4\xe4see kaikkiin saatavilla oleviin malleihin.","restrictInfo":"T\xe4ll\xe4 avaimella voi k\xe4ytt\xe4\xe4 {selected}/{total} mallia.","selected":"{count} valittu","all":"Kaikki","clear":"Selke\xe4","searchModels":"Hae malleja nimen tai toimittajan mukaan...","noModelsFound":"Malleja ei l\xf6ytynyt","keyNameRequired":"Avaimen nimi vaaditaan","keyNameTooLong":"Avaimen nimess\xe4 saa olla enint\xe4\xe4n {max} merkki\xe4","keyNameInvalid":"Avaimen nimi voi sis\xe4lt\xe4\xe4 vain kirjaimia, numeroita, v\xe4lily\xf6ntej\xe4, yhdysmerkkej\xe4 ja alaviivoja","invalidKeyName":"Virheellinen avaimen nimi","failedCreateKey":"Avaimen luominen ep\xe4onnistui","failedCreateKeyRetry":"Avaimen luominen ep\xe4onnistui. Yrit\xe4 uudelleen.","invalidKeyId":"Virheellinen avaintunnus","failedDeleteKey":"Avaimen poistaminen ep\xe4onnistui","failedDeleteKeyRetry":"Avaimen poistaminen ep\xe4onnistui. Yrit\xe4 uudelleen.","invalidModelsSelection":"Virheellinen mallivalinta","cannotSelectMoreThanModels":"Ei voi valita enemp\xe4\xe4 kuin {max} mallia","failedUpdatePermissions":"K\xe4ytt\xf6oikeuksien p\xe4ivitt\xe4minen ep\xe4onnistui","failedUpdatePermissionsRetry":"K\xe4ytt\xf6oikeuksien p\xe4ivitt\xe4minen ep\xe4onnistui. Yrit\xe4 uudelleen.","unknownProvider":"tuntematon","copyMaskedKey":"Kopioi peitetty avain","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"Viimeisin: {date}","editPermissions":"Muokkaa k\xe4ytt\xf6oikeuksia","deleteKey":"Poista avain","model":"{count} malli","models":"{count} mallit","permissionsTitle":"Luvat: {name}","allowAllDesc":"T\xe4ll\xe4 avaimella p\xe4\xe4see kaikkiin saatavilla oleviin malleihin.","restrictDesc":"T\xe4ll\xe4 avaimella voi k\xe4ytt\xe4\xe4 {selectedCount}/{totalModels} mallia.","selectedCount":"{count} valittu"},"auditLog":{"title":"Tarkastusloki","searchPlaceholder":"Hakutoiminnot...","action":"Toiminta","actor":"n\xe4yttelij\xe4","target":"Kohde","ipAddress":"IP-osoite","timestamp":"Aikaleima","noEntries":"Tarkastusmerkint\xf6j\xe4 ei l\xf6ytynyt","filterByAction":"Suodata toiminnon mukaan...","filterByActor":"Suodata n\xe4yttelij\xe4n mukaan...","filterEntriesAria":"Suodata tarkastuslokin merkinn\xe4t","filterByActionTypeAria":"Suodata toimintotyypin mukaan","filterByActorAria":"Suodata n\xe4yttelij\xe4n mukaan","refreshAuditLogAria":"P\xe4ivit\xe4 tarkastusloki","tableAria":"Tarkastuslokimerkinn\xe4t","failedFetchAuditLog":"Valvontalokin nouto ep\xe4onnistui","notAvailable":"—","description":"Hallinnolliset toimet ja turvallisuustapahtumat","showing":"N\xe4ytet\xe4\xe4n {count} merkint\xe4\xe4 (poikkeama {offset})","previous":"Edellinen"},"cliTools":{"title":"CLI-ty\xf6kalut","noActiveProviders":"Ei aktiivisia palveluntarjoajia","noActiveProvidersDesc":"Lis\xe4\xe4 ja yhdist\xe4 ensin palveluntarjoajat m\xe4\xe4ritt\xe4\xe4ksesi CLI-ty\xf6kalut.","mapModels":"Karttamallit","testConnection":"Testaa yhteys","connectionStatus":"Yhteyden tila","configureEndpoint":"M\xe4\xe4rit\xe4 p\xe4\xe4tepiste","instructions":"Ohjeet","modelMapping":"Mallin kartoitus","baseUrl":"Perus-URL-osoite","apiKey":"API-avain","configured":"M\xe4\xe4ritetty","notConfigured":"Ei m\xe4\xe4ritetty","notInstalled":"Ei asennettu","custom":"Mukautettu","unknown":"Tuntematon","lastSavedAt":"Viimeksi tallennettu: {date}","never":"Ei koskaan","justNow":"juuri nyt","minutesAgoShort":"{count}min sitten","hoursAgoShort":"{count}h sitten","daysAgoShort":"{count}pv sitten","monthsAgoShort":"{count}kk sitten","yearsAgoShort":"{count}v sitten","runtimeCheckFailed":"Ajonaikainen tarkistus ep\xe4onnistui","yourApiKeyPlaceholder":"sinun-api-avain","modelPlaceholder":"toimittaja/mallitunnus","configurationSaved":"M\xe4\xe4ritykset tallennettu onnistuneesti.","failedToSave":"M\xe4\xe4rityksen tallentaminen ep\xe4onnistui.","noApiKeysCreateOne":"Ei API-avaimia – Luo yksi Avaimet-sivulla","defaultOmnirouteKey":"sk_omniroute (oletus)","selectModel":"Valitse Malli","selectModelForAlias":"Valitse malli kohteelle {alias}","selectModelForTool":"Valitse malli kohteelle {tool}","select":"Valitse","clear":"Selke\xe4","comingSoon":"Tulossa pian","checkingRuntime":"Tarkistetaan ajonaikaista tilaa...","guideOnlyIntegration":"Vain ohjeellinen integrointi (ei vaadi paikallista suoritusaikaa)","cliRuntimeDetected":"CLI-ajoaika havaittu ja valmis","cliFoundNotRunnable":"CLI l\xf6ytyi, mutta ei ajettavissa{reason}","cliRuntimeNotDetected":"CLI-ajoaikaa ei havaittu","binary":"Bin\xe4\xe4ri","configPath":"Konfigurointipolku","configPathShort":"Konfig","failedCheckRuntimeStatus":"Ajonaikaisen tilan tarkistaminen ep\xe4onnistui.","copy":"Kopioi","copied":"Kopioitu","copyConfig":"Kopioi kokoonpano","saveConfig":"Tallenna kokoonpano","selectionSaved":"Valinta tallennettu","guide":"Opas","detected":"Havaittu","notReady":"Ei valmis","active":"Aktiivinen","inactive":"Ei-aktiivinen","startMitm":"K\xe4ynnist\xe4 MITM","stopMitm":"Lopeta MITM","mitmStarted":"MITM alkoi onnistuneesti!","mitmStopped":"MITM pys\xe4htyi onnistuneesti!","failedStart":"MITM:n k\xe4ynnist\xe4minen ep\xe4onnistui","failedStop":"MITM:n pys\xe4ytt\xe4minen ep\xe4onnistui","saveMappings":"Tallenna kartoitukset","mappingsSaved":"Kartaukset tallennettu!","failedSaveMappings":"Kartoitusten tallentaminen ep\xe4onnistui","howItWorks":"Miten se toimii:","antigravityHowWorksDesc":"Antigravity l\xe4hett\xe4\xe4 pyynt\xf6j\xe4 Googlen p\xe4\xe4tepisteeseen. MITM sieppaa ja ohjaa ne OmniRouteen.","antigravityStep1":"1. K\xe4ynnist\xe4 MITM reititt\xe4\xe4ksesi pyynn\xf6t OmniRouten kautta.","antigravityStep2Prefix":"2. Lis\xe4\xe4","antigravityStep2Suffix":"hosts-tiedostoon muodossa 127.0.0.1.","antigravityStep3":"3. Avaa Antigravity ja pyynn\xf6t v\xe4litet\xe4\xe4n.","sudoPasswordRequiredTitle":"Sudo-salasana vaaditaan","sudoPasswordHint":"J\xe4rjestelm\xe4nvalvojan salasana tarvitaan hosts-tiedoston ja j\xe4rjestelm\xe4n v\xe4lityspalvelimen asetusten muokkaamiseen.","enterSudoPassword":"Anna sudo-salasana","sudoPasswordRequiredError":"Sudo-salasana vaaditaan.","cancel":"Peruuta","confirm":"Vahvista","settingsApplied":"Asetukset otettu k\xe4ytt\xf6\xf6n onnistuneesti!","failedApplySettings":"Asetusten k\xe4ytt\xf6\xf6notto ep\xe4onnistui","settingsReset":"Asetusten nollaus onnistui!","failedResetSettings":"Asetusten nollaus ep\xe4onnistui","backupRestored":"Varmuuskopio palautettu!","failedRestore":"Palauttaminen ep\xe4onnistui","checkingCli":"Tarkistetaan {tool} CLI...","cliNotRunnable":"{tool} CLI asennettu, mutta ei ajettavissa","cliNotInstalled":"{tool} CLI:t\xe4 ei ole asennettu","cliNotDetected":"{tool} CLI:t\xe4 ei havaittu","cliDetectedReady":"{tool} CLI havaittu ja valmis","cliFoundFailedHealthcheck":"{tool} CLI l\xf6ydettiin, mutta ajonaikainen kuntotarkastus ep\xe4onnistui{reason}.","installCliPrompt":"Asenna {tool} CLI k\xe4ytt\xe4\xe4ksesi t\xe4t\xe4 ominaisuutta.","installCodexPrompt":"Asenna Codex CLI k\xe4ytt\xe4\xe4ksesi automaattista k\xe4ytt\xf6\xf6nottoa.","hide":"Piilota","howToInstall":"Kuinka asentaa","installationGuide":"Asennusopas","platforms":"macOS / Linux / Windows:","afterInstallationRun":"Suorita asennuksen j\xe4lkeen","toVerify":"varmistaaksesi.","current":"Nykyinen","baseUrlPlaceholder":"https://.../v1","resetToDefault":"Palauta oletusarvo","providerModelPlaceholder":"toimittaja/mallitunnus","apply":"K\xe4yt\xe4","reset":"Nollaa","manualConfig":"Manuaalinen konfigurointi","backups":"Varmuuskopiot","configBackups":"M\xe4\xe4ritysten varmuuskopiot","noBackupsYet":"Ei viel\xe4 varmuuskopioita. Varmuuskopiot luodaan automaattisesti ennen jokaista k\xe4ytt\xf6\xf6nottoa tai nollausta.","restore":"Palauta","backupRestoredReloading":"Varmuuskopio palautettu! Ladataan tilaa uudelleen...","failedRestoreBackup":"Varmuuskopion palauttaminen ep\xe4onnistui","applied":"Sovellettu!","failed":"Ep\xe4onnistui","resetDone":"Nollaa!","omnirouteConfiguredOpenAiCompatible":"OmniRoute on m\xe4\xe4ritetty OpenAI-yhteensopivaksi palveluntarjoajaksi","provider":"Palveluntarjoaja","model":"Malli","providers":"Palveluntarjoajat","auth":"Tod","noApiKeysAvailable":"API-avaimia ei ole saatavilla","usingDefaultOmniroute":"Oletuksena: sk_omniroute","updateConfig":"P\xe4ivit\xe4 Config","applyConfig":"K\xe4yt\xe4 konfiguraatiota","noBackupsAvailable":"Varmuuskopioita ei ole saatavilla.","profileSaved":"Profiili \\"{name}\\" tallennettu!","failedSaveProfile":"Profiilin tallennus ep\xe4onnistui","profileActivated":"Profiili aktivoitu!","failedActivateProfile":"Profiilin aktivointi ep\xe4onnistui","profiles":"Profiilit","savedProfiles":"Tallennetut profiilit","noProfilesYet":"Ei viel\xe4 tallennettuja profiileja. Tallenna nykyinen konfiguraatio alla olevaksi profiiliksi.","activate":"Aktivoi","deleteProfile":"Poista profiili","profileNamePlaceholder":"Profiilin nimi (esim. henkil\xf6kohtainen tili)","saveCurrent":"Tallenna nykyinen","codexAuthNotePrefix":"Codex k\xe4ytt\xe4\xe4","codexAuthNoteMiddle":"kanssa","codexAuthNoteSuffix":"Napsauta \\"K\xe4yt\xe4\\" m\xe4\xe4ritt\xe4\xe4ksesi automaattisesti.","claudeManualConfiguration":"Claude CLI - Manuaalinen konfigurointi","codexManualConfiguration":"Codex CLI - Manuaalinen konfigurointi","droidManualConfiguration":"Tehdasdroidi - manuaalinen konfigurointi","openClawManualConfiguration":"Open Claw - Manuaalinen konfigurointi","clineManualConfiguration":"Cline Manuaalinen konfigurointi","kiloManualConfiguration":"Kilo Code Manuaalinen konfigurointi","toolDescriptions":{"antigravity":"Google Antigravity IDE ja MITM","claude":"Antrooppinen Claude Code CLI","codex":"OpenAI Codex CLI","droid":"Tehdas Droid AI Assistant","openclaw":"Avaa Claw AI Assistant","cline":"Cline AI Coding Assistant CLI","kilo":"Kilo Code AI Assistant CLI","cursor":"Cursor AI Code Editor","continue":"Jatka AI Assistantia"},"guides":{"cursor":{"notes":{"0":"T\xe4m\xe4n ominaisuuden k\xe4ytt\xe4minen vaatii Cursor Pro -tilin.","1":"Kohdistin reititt\xe4\xe4 pyynn\xf6t oman palvelimensa kautta, joten paikallista p\xe4\xe4tepistett\xe4 ei tueta. Ota Cloud Endpoint k\xe4ytt\xf6\xf6n asetuksista."},"steps":{"1":{"title":"Avaa Asetukset","desc":"Siirry kohtaan Asetukset -> Mallit"},"2":{"title":"Ota OpenAI API k\xe4ytt\xf6\xf6n","desc":"Ota k\xe4ytt\xf6\xf6n \\"OpenAI API-avain\\" -vaihtoehto"},"3":{"title":"Perus-URL-osoite"},"4":{"title":"API-avain"},"5":{"title":"Lis\xe4\xe4 mukautettu malli","desc":"Napsauta \\"N\xe4yt\xe4 kaikki mallit\\" -> \\"Lis\xe4\xe4 mukautettu malli\\""},"6":{"title":"Valitse Malli"}}},"continue":{"steps":{"1":{"title":"Avaa Config","desc":"Avaa Jatka m\xe4\xe4ritystiedosto"},"2":{"title":"API-avain"},"3":{"title":"Valitse Malli"},"4":{"title":"Lis\xe4\xe4 mallin kokoonpano","desc":"Lis\xe4\xe4 seuraavat kokoonpanot mallien matriisiisi:"}}}}},"combos":{"title":"Yhdistelm\xe4t","description":"Luo mallikomboja painotetulla reitityksell\xe4 ja varatuella","createCombo":"Luo yhdistelm\xe4","editCombo":"Muokkaa yhdistelm\xe4\xe4","deleteCombo":"Poista yhdistelm\xe4","noModels":"Ei malleja","noModelsYet":"Malleja ei ole viel\xe4 lis\xe4tty","addModel":"Lis\xe4\xe4 malli","addModelToCombo":"Lis\xe4\xe4 malli yhdistelm\xe4\xe4n","routingStrategy":"Reititysstrategia","maxRetries":"Max Uudelleenyritykset","timeout":"Aikakatkaisu (ms)","healthcheck":"Terveystarkastus","priority":"Prioriteetti","fallback":"Varaa","roundRobin":"Round Robin","random":"Satunnainen","leastLatency":"Pienin latenssi","comboName":"Yhdistelm\xe4nimi","comboNamePlaceholder":"minun yhdistelm\xe4ni","deleteConfirm":"Poistetaanko t\xe4m\xe4 yhdistelm\xe4?","noCombosYet":"Ei komboja viel\xe4","comboCreated":"Yhdistelm\xe4 luotiin onnistuneesti","comboUpdated":"Yhdistelm\xe4n p\xe4ivitys onnistui","comboDeleted":"Yhdistelm\xe4 poistettu","failedCreate":"Yhdistelm\xe4n luominen ep\xe4onnistui","failedUpdate":"Yhdistelm\xe4n p\xe4ivitt\xe4minen ep\xe4onnistui","errorCreating":"Virhe yhdistelm\xe4n luomisessa","errorUpdating":"Virhe yhdistelm\xe4n p\xe4ivityksess\xe4","errorDeleting":"Virhe yhdistelm\xe4n poistamisessa","testFailed":"Testipyynt\xf6 ep\xe4onnistui","failedToggle":"Yhdistelm\xe4n vaihto ep\xe4onnistui","testResults":"Testitulokset – {name}","resolvedBy":"Ratkaisi:","more":"+{count} lis\xe4\xe4","reqs":"vaatimukset","success":"menestyst\xe4","proxyConfigured":"V\xe4lityspalvelin m\xe4\xe4ritetty","copyComboName":"Kopioi yhdistelm\xe4nimi","enableCombo":"Ota yhdistelm\xe4 k\xe4ytt\xf6\xf6n","disableCombo":"Poista yhdistelm\xe4 k\xe4yt\xf6st\xe4","testCombo":"Testiyhdistelm\xe4","duplicate":"Kopioi","proxyConfig":"V\xe4lityspalvelimen m\xe4\xe4ritys","nameRequired":"Nimi vaaditaan","nameInvalid":"Vain kirjaimet, numerot, -, _, / ja . sallittu","nameHint":"Kirjaimet, numerot, -, _, / ja . sallittu","priorityDesc":"Per\xe4kk\xe4inen palautus: kokeilee ensin mallia 1, sitten 2 jne.","weightedDesc":"Jakaa liikenteen painoprosentin mukaan varauksella","roundRobinDesc":"Py\xf6re\xe4 jakelu: jokainen pyynt\xf6 siirtyy seuraavaan kiertoon malliin","randomDesc":"Yhten\xe4inen satunnainen valinta, sitten takaisin muihin malleihin","leastUsedDesc":"Valitsee mallin, jolla on v\xe4hiten pyynt\xf6j\xe4 ja tasapainottaa kuormitusta ajan my\xf6t\xe4","costOptimizedDesc":"Reitit edullisimpaan malliin ensin hinnoittelun perusteella","models":"Mallit","autoBalance":"Automaattinen tasapainotus","advancedSettings":"Lis\xe4asetukset","retryDelay":"Uudelleenyrityksen viive (ms)","concurrencyPerModel":"Samanaikaisuus / malli","queueTimeout":"Jonon aikakatkaisu (ms)","advancedHint":"J\xe4t\xe4 tyhj\xe4ksi, jos haluat k\xe4ytt\xe4\xe4 yleisi\xe4 oletusasetuksia. N\xe4m\xe4 ohittavat palveluntarjoajakohtaiset asetukset.","moveUp":"Siirr\xe4 yl\xf6s","moveDown":"Siirry alas","removeModel":"Poista","saving":"Tallennetaan...","weighted":"Painotettu","leastUsed":"V\xe4hiten k\xe4ytetty","costOpt":"Kustannus-opt"},"costs":{"title":"Kustannukset","budget":"Budjetti","totalCost":"Kokonaiskustannukset","breakdown":"Kustannusten erittely","noData":"Ei hintatietoja","byModel":"Mallin mukaan","byProvider":"Palveluntarjoajan toimesta"},"endpoint":{"title":"API-p\xe4\xe4tepiste","available":"K\xe4ytett\xe4viss\xe4 olevat p\xe4\xe4tepisteet","cloudProxy":"Pilviv\xe4lityspalvelin","disableConfirm":"Haluatko varmasti poistaa pilviv\xe4lityspalvelimen k\xe4yt\xf6st\xe4?","baseUrl":"Perus-URL-osoite","apiKeyLabel":"API-avain","registeredKeys":"Rekister\xf6ity avaimet","chatCompletions":"Chatin loppuun saattaminen","responses":"Vastaukset","listModels":"Listaa mallit","usingCloudProxy":"Cloud Proxyn k\xe4ytt\xe4minen","usingLocalServer":"Paikallisen palvelimen k\xe4ytt\xf6","machineId":"Koneen tunnus: {id}...","disableCloud":"Poista Cloud k\xe4yt\xf6st\xe4","enableCloud":"Ota Cloud k\xe4ytt\xf6\xf6n","modelsAcrossEndpoints":"{models} mallit {endpoints} p\xe4\xe4tepisteen v\xe4lill\xe4","chatDesc":"Suoratoisto ja ei-striimaus chat kaikkien palveluntarjoajien kanssa","embeddings":"Upotukset","embeddingsDesc":"Tekstin upotukset haku- ja RAG-putkistoja varten","imageGeneration":"Kuvan luominen","imageDesc":"Luo kuvia tekstikehotteista","rerank":"J\xe4rjest\xe4 uudelleen","rerankDesc":"J\xe4rjest\xe4 asiakirjat uudelleen kyselyn osuvuuden mukaan","audioTranscription":"\xc4\xe4nen transkriptio","audioTranscriptionDesc":"Literoi \xe4\xe4nitiedostot tekstiksi (kuiskaus)","textToSpeech":"Tekstist\xe4 puheeksi","textToSpeechDesc":"Muunna teksti luonnolliselta kuulostavaksi puheeksi","moderations":"Moderaatiot","moderationsDesc":"Sis\xe4ll\xf6n moderointi ja turvallisuusluokitus","enableCloudTitle":"Ota Cloud Proxy k\xe4ytt\xf6\xf6n","whatYouGet":"Mit\xe4 saat","cloudBenefitAccess":"K\xe4yt\xe4 sovellusliittym\xe4\xe4si mist\xe4 p\xe4in maailmaa tahansa","cloudBenefitShare":"Jaa p\xe4\xe4tepiste tiimisi kanssa helposti","cloudBenefitPorts":"Ei tarvitse avata portteja tai m\xe4\xe4ritt\xe4\xe4 palomuuria","cloudBenefitEdge":"Nopea maailmanlaajuinen reunaverkko","cloudSessionNote":"Cloud s\xe4ilytt\xe4\xe4 todennusistunnon 1 p\xe4iv\xe4n ajan. Jos sit\xe4 ei k\xe4ytet\xe4, se poistetaan automaattisesti.","cloudUnstableNote":"Pilvi on t\xe4ll\xe4 hetkell\xe4 ep\xe4vakaa Claude Code OAuthin kanssa joissakin tapauksissa.","cloudConnected":"Cloud Proxy yhdistetty!","connectingToCloud":"Yhdistet\xe4\xe4n pilveen...","verifyingConnection":"Vahvistetaan yhteytt\xe4...","connecting":"Yhdistet\xe4\xe4n...","verifying":"Vahvistetaan...","connected":"Yhdistetty!","disableCloudTitle":"Poista Cloud Proxy k\xe4yt\xf6st\xe4","disableWarning":"Kaikki todennusistunnot poistetaan pilvest\xe4.","syncingData":"Synkronoidaan uusimpia tietoja...","disablingCloud":"Poistetaan pilvi k\xe4yt\xf6st\xe4...","syncing":"Synkronoidaan...","disabling":"Poistetaan k\xe4yt\xf6st\xe4...","cloudConnectedVerified":"Cloud Proxy yhdistetty ja vahvistettu!","connectedVerificationPending":"Yhdistetty — vahvistus odottaa","connectedVerificationPendingWithError":"Yhdistetty – vahvistus odottaa: {error}","cloudDisabledSuccess":"Pilvi poistettu k\xe4yt\xf6st\xe4 onnistuneesti","syncedSuccess":"Synkronointi onnistui","failedDisable":"Pilven poistaminen k\xe4yt\xf6st\xe4 ep\xe4onnistui","failedEnable":"Pilven k\xe4ytt\xf6\xf6notto ep\xe4onnistui","cloudRequestTimeout":"Pilvipyynn\xf6n aikakatkaisu","cloudRequestFailed":"Pilvipyynt\xf6 ep\xe4onnistui","cloudWorkerUnreachable":"Pilvity\xf6ntekij\xe4\xe4 ei tavoitettu. Varmista, ett\xe4 pilvipalvelu on k\xe4ynniss\xe4 (npm run dev in /cloud).","connectionFailed":"Yhteys ep\xe4onnistui","syncFailed":"Pilvitietojen synkronointi ep\xe4onnistui","providerModelsTitle":"{provider} – Mallit","noModelsForProvider":"T\xe4lle tarjoajalle ei ole saatavilla malleja.","chat":"Chat","embedding":"Upottaminen","image":"Kuva","custom":"mukautettu","modelsCount":"{count, plural, one {# model} other {# models}}","responsesDesc":"OpenAI Responses API for Codex and advanced agentic workflows","listModelsDesc":"List all available models across all connected providers","settingsApi":"Settings API","settingsApiDesc":"Read and modify OmniRoute configuration via API","categoryCore":"Ydin-API:t","categoryMedia":"Media & Monimuotoinen","categoryUtility":"Apuohjelmat & Hallinta"},"health":{"title":"J\xe4rjestelm\xe4n terveys","description":"OmniRoute-instanssisi reaaliaikainen seuranta","healthy":"Terve","degraded":"Heikentynyt","down":"Alas","uptime":"P\xe4\xe4ll\xe4","memory":"Muisti","memoryRss":"Muisti (RSS)","heap":"Kasa","cpu":"CPU","database":"Tietokanta","version":"Versio","lastCheck":"Viimeinen tarkistus","providerHealth":"Palveluntarjoajan terveys","systemMetrics":"J\xe4rjestelm\xe4n mittarit","tokenHealth":"Token Health","refreshAll":"P\xe4ivit\xe4 kaikki","checkNow":"Tarkista nyt","loadingHealth":"Ladataan terveystietoja…","failedToLoad":"Terveystietojen lataaminen ep\xe4onnistui: {error}","retry":"Yrit\xe4 uudelleen","allOperational":"Kaikki j\xe4rjestelm\xe4t toimivat","issuesDetected":"J\xe4rjestelm\xe4ongelmia havaittu","updatedAt":"P\xe4ivitetty {time}","latency":"Latenssi","latencyP50":"p50","latencyP95":"p95","latencyP99":"p99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"Pyynt\xf6j\xe4 yhteens\xe4","noDataYet":"Ei viel\xe4 dataa","promptCache":"Kehotusv\xe4limuisti","entries":"merkinn\xe4t","hitRate":"Osumaprosentti","hitsMisses":"Osumat / Miss","signatureCache":"Allekirjoitusv\xe4limuisti","signatureDefaults":"Oletukset","signatureTool":"Ty\xf6kalu","signatureFamily":"Perhe","signatureSession":"Istunto","recovering":"Toipumassa","noCBData":"Katkaisijatietoja ei ole saatavilla. Tee ensin pyynt\xf6j\xe4.","providerHealthStatusAria":"Palveluntarjoajan terveydentila","issuesLabel":"Ongelmia havaittu","operational":"Toiminnassa","providers":"Palveluntarjoajat","healthyCount":"{count} terve","nodeVersion":"Solmu {version}","failures":"{count} virhe","failuresPlural":"{count} virheit\xe4","lastFailure":"Viimeinen","rateLimitStatus":"Rate Limit Status","activeLimiters":"{count} aktiivinen rajoitin","activeLimitersPlural":"{count} aktiiviset rajoittimet","queued":"Jonossa","queuedCount":"{count} jonossa","running":"k\xe4ynniss\xe4","runningCount":"{count} k\xe4ynniss\xe4","ok":"OK","activeLockouts":"Aktiiviset lukitukset","resetConfirm":"Nollataanko kaikki katkaisijat terveeseen tilaan? T\xe4m\xe4 tyhjent\xe4\xe4 kaikki virhem\xe4\xe4r\xe4t ja palauttaa kaikki palveluntarjoajat toimintatilaan.","resetAllTitle":"Palauta kaikki katkaisijat terveeseen tilaan","resetting":"Nollataan...","resetAll":"Nollaa kaikki","until":"{time} asti"},"limits":{"title":"Rajoitukset ja kiinti\xf6t","rateLimit":"Rate Limit","remaining":"J\xe4ljell\xe4","requestsPerMinute":"Pyynn\xf6t/min","tokensPerMinute":"Tokenit/min","dailyLimit":"P\xe4ivitt\xe4inen raja"},"logs":{"title":"Lokit","requestLogs":"Pyyd\xe4 lokit","proxyLogs":"V\xe4lityspalvelimen lokit","auditLog":"Tarkastusloki","console":"konsoli","auditLogDesc":"Hallinnolliset toimet ja turvallisuustapahtumat","loading":"Ladataan...","refresh":"P\xe4ivit\xe4","filterByAction":"Suodata toiminnon mukaan...","filterByActor":"Suodata n\xe4yttelij\xe4n mukaan...","filterEntriesAria":"Suodata tarkastuslokin merkinn\xe4t","filterByActionTypeAria":"Suodata toimintotyypin mukaan","filterByActorAria":"Suodata n\xe4yttelij\xe4n mukaan","refreshAuditLogAria":"P\xe4ivit\xe4 tarkastusloki","tableAria":"Tarkastuslokimerkinn\xe4t","failedFetchAuditLog":"Valvontalokin nouto ep\xe4onnistui","showing":"N\xe4ytet\xe4\xe4n {count} merkint\xe4\xe4 (poikkeama {offset})","search":"Etsi","timestamp":"Aikaleima","action":"Toiminta","actor":"n\xe4yttelij\xe4","target":"Kohde","details":"Yksityiskohdat","ipAddress":"IP-osoite","notAvailable":"—","noEntries":"Tarkastuslokimerkint\xf6j\xe4 ei l\xf6ytynyt","previous":"Edellinen","next":"Seuraavaksi"},"onboarding":{"welcome":"Tervetuloa","security":"Turvallisuus","test":"Testaa","ready":"Valmis!","setPassword":"Aseta salasana","addProvider":"Lis\xe4\xe4 ensimm\xe4inen palveluntarjoajasi","getStarted":"Aloita","skip":"Ohita","skipWizard":"Ohita ohjattu toiminto kokonaan","skipPassword":"Ohita salasanan asetus","skipAndContinue":"Ohita ja jatka","passwordLabel":"Salasana","confirmPassword":"Vahvista salasana","enterPassword":"Anna salasana","confirmPasswordPlaceholder":"Vahvista salasana","passwordsMismatch":"Salasanat eiv\xe4t t\xe4sm\xe4\xe4","setupComplete":"Asennus valmis!","goToDashboard":"Siirry kohtaan Dashboard →","welcomeDesc":"OmniRoute on paikallinen AI API -v\xe4lityspalvelin. Se reititt\xe4\xe4 pyynn\xf6t useille teko\xe4lypalveluntarjoajille kuormituksen tasapainottamisen, vikasietoisuuden ja k\xe4yt\xf6n seurannan avulla.","multiProvider":"Multi-Provider","usageTracking":"K\xe4yt\xf6n seuranta","apiKeyMgmt":"API-avainhallinta","securityDesc":"Aseta salasana kojelautasi suojaamiseksi tai ohita toistaiseksi.","providerDesc":"Yhdist\xe4 ensimm\xe4inen AI-palveluntarjoajasi. Voit lis\xe4t\xe4 my\xf6hemmin lis\xe4\xe4.","apiKeyRequired":"API-avain (pakollinen)","customUrlOptional":"Muokattu URL-osoite (valinnainen)","testDesc":"Varmistetaan, ett\xe4 palveluntarjoajayhteytesi toimii.","runTest":"Suorita yhteystesti","testingConnection":"Testataan yhteytt\xe4...","connectionSuccessful":"Yhteys onnistui! Palveluntarjoajasi on valmis.","noProviderFound":"Palveluntarjoajaa ei l\xf6ydy. Voit lis\xe4t\xe4 sellaisen hallintapaneelista my\xf6hemmin.","testFailed":"Testi ep\xe4onnistui, mutta voit m\xe4\xe4ritt\xe4\xe4 t\xe4m\xe4n my\xf6hemmin.","couldNotTest":"Ei pystynyt testaamaan juuri nyt. Voit testata kojelaudalta.","doneDesc":"Kaikki on valmista! OmniRoute-esiintym\xe4si on m\xe4\xe4ritetty ja valmis v\xe4litt\xe4m\xe4\xe4n AI-pyynt\xf6j\xe4.","yourEndpoint":"P\xe4\xe4tepisteesi:","continue":"Jatka","retry":"Yrit\xe4 uudelleen","failedSetPassword":"Salasanan asettaminen ep\xe4onnistui. Yrit\xe4 uudelleen.","failedAddProvider":"Palveluntarjoajan lis\xe4\xe4minen ep\xe4onnistui. Yrit\xe4 uudelleen.","connectionError":"Yhteysvirhe. Yrit\xe4 uudelleen.","provider":"Palveluntarjoaja"},"providers":{"title":"Palveluntarjoajat","addProvider":"Lis\xe4\xe4 palveluntarjoaja","editProvider":"Muokkaa toimittajaa","deleteProvider":"Poista palveluntarjoaja","noProviders":"Palveluntarjoajia ei ole m\xe4\xe4ritetty","modelAvailability":"Mallin saatavuus","accounts":"Tilit","newAccount":"Uusi tili","deleteConfirm":"Haluatko varmasti poistaa t\xe4m\xe4n palveluntarjoajan?","testing":"Testataan...","testConnection":"Testaa yhteys","testSuccess":"Yhteys onnistui","testFailed":"Yhteys ep\xe4onnistui","available":"Saatavilla","cooldown":"J\xe4\xe4hdytys","unavailable":"Ei saatavilla","unknown":"Tuntematon","oauthLabel":"OAuth","compatibleLabel":"Yhteensopiva","chat":"Chat","responses":"Vastaukset","messages":"Viestit","oauthProviders":"OAuth-palveluntarjoajat","freeProviders":"Ilmaiset palveluntarjoajat","apiKeyProviders":"API-avainten tarjoajat","compatibleProviders":"API Key -yhteensopivat palveluntarjoajat","testAll":"Testaa kaikki","testAllOAuth":"Testaa kaikki OAuth-yhteydet","testAllFree":"Testaa kaikki ilmaiset yhteydet","testAllApiKey":"Testaa kaikki API-avainyhteydet","testAllCompatible":"Testaa kaikki yhteensopivat liit\xe4nn\xe4t","connected":"{count} Yhdistetty","errorCount":"{count} Virhe ({code})","errorCountNoCode":"{count} Virhe","noConnections":"Ei yhteyksi\xe4","disabled":"Ei k\xe4yt\xf6ss\xe4","enableProvider":"Ota palveluntarjoaja k\xe4ytt\xf6\xf6n","disableProvider":"Poista palveluntarjoaja k\xe4yt\xf6st\xe4","testResults":"Testitulokset","noCompatibleYet":"Yhteensopivia palveluntarjoajia ei ole viel\xe4 lis\xe4tty","compatibleHint":"K\xe4yt\xe4 yll\xe4 olevia painikkeita lis\xe4t\xe4ksesi OpenAI- tai Anthropic-yhteensopivia p\xe4\xe4tepisteit\xe4","addOpenAICompatible":"Lis\xe4\xe4 OpenAI-yhteensopiva","addAnthropicCompatible":"Lis\xe4\xe4 Anthropic Compatible","addNewProvider":"Lis\xe4\xe4 uusi toimittaja","backToProviders":"Takaisin palveluntarjoajiin","configureNewProvider":"M\xe4\xe4rit\xe4 uusi AI-palveluntarjoaja k\xe4ytett\xe4v\xe4ksi sovelluksissasi.","providerLabel":"Palveluntarjoaja","selectProvider":"Valitse palveluntarjoaja","selectedProvider":"Valittu palveluntarjoaja","authMethod":"Todennusmenetelm\xe4","apiKeyLabel":"API-avain","apiKeyRequired":"API-avain vaaditaan","selectProviderRequired":"Valitse palveluntarjoaja","enterApiKey":"Anna API-avaimesi","apiKeySecure":"API-avaimesi salataan ja tallennetaan turvallisesti.","oauth2Connect":"Yhdist\xe4 OAuth2:een","oauth2Label":"OAuth2","oauth2Desc":"Yhdist\xe4 tilisi OAuth2-todennusta k\xe4ytt\xe4m\xe4ll\xe4.","displayName":"N\xe4ytt\xf6nimi","displayNamePlaceholder":"esim. Production API, Dev Environment","displayNameHint":"Valinnainen. Yst\xe4v\xe4llinen nimi t\xe4m\xe4n kokoonpanon tunnistamiseksi.","active":"Aktiivinen","activeDescription":"Ota t\xe4m\xe4 palveluntarjoaja k\xe4ytt\xf6\xf6n sovelluksissasi","cancel":"Peruuta","createProvider":"Luo palveluntarjoaja","failedCreate":"Palveluntarjoajan luominen ep\xe4onnistui","errorOccurred":"Tapahtui virhe. Yrit\xe4 uudelleen.","modelStatus":"Mallin tila","allModelsOperational":"Kaikki mallit toimivat","modelsWithIssues":"{count} malli(t), joissa on ongelmia","allModelsNormal":"Kaikki mallit reagoivat normaalisti.","cooldownCleared":"J\xe4\xe4hdytys tyhjennetty kohteelle {model}","failedClearCooldown":"J\xe4\xe4hdytyksen tyhjennys ep\xe4onnistui","loadingAvailability":"Ladataan mallin saatavuutta...","clearCooldown":"Selke\xe4","clearing":"Tyhjennet\xe4\xe4n...","until":"{time} asti","providerTestFailed":"Palveluntarjoajan testi ep\xe4onnistui","modeTest":"{mode} Testi","passedCount":"{count} hyv\xe4ksytty","failedCount":"{count} ep\xe4onnistui","testedCount":"{count} testattu","millisecondsAbbr":"{value}ms","okShort":"OK","errorShort":"VIRHE","noActiveConnectionsInGroup":"T\xe4lle ryhm\xe4lle ei l\xf6ytynyt aktiivisia yhteyksi\xe4.","allTestsPassed":"Kaikki {total} testit l\xe4p\xe4isty","testSummary":"{passed}/{total} hyv\xe4ksytty, {failed} ep\xe4onnistui","nameLabel":"Nimi","prefixLabel":"Etuliite","baseUrlLabel":"Perus-URL-osoite","apiTypeLabel":"API-tyyppi","prefixHint":"Pakollinen. Ainutlaatuinen etuliite mallien nimille.","nameHint":"Pakollinen. Yst\xe4v\xe4llinen etiketti t\xe4lle solmulle.","baseUrlHint":"Pakollinen.  Palveluntarjoajan API-perus-URL-osoite.","anthropicPrefixPlaceholder":"ac-prod","openaiPrefixPlaceholder":"oc-prod","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"Vahvista yhteys","validating":"Vahvistetaan...","connectionValid":"Yhteys on voimassa!","connectionFailed":"Yhteys ep\xe4onnistui. Tarkista URL-osoite ja avain.","testKeyLabel":"Testaa API-avain","testKeyPlaceholder":"sk-... (vain vahvistusta varten)","providerNotFound":"Palveluntarjoajaa ei l\xf6ydy","deleteConnectionConfirm":"Poistetaanko t\xe4m\xe4 yhteys?","failedSetAlias":"Aliaksen asettaminen ep\xe4onnistui","failedSaveConnection":"Yhteyden tallentaminen ep\xe4onnistui","failedSaveConnectionRetry":"Yhteyden tallentaminen ep\xe4onnistui. Yrit\xe4 uudelleen.","failedRetestConnection":"Yhteyden uudelleentestaus ep\xe4onnistui","deleteCompatibleNodeConfirm":"Poistetaanko t\xe4m\xe4 {type} Yhteensopiva solmu?","anthropicCompatibleDetails":"Anthropic-yhteensopivat yksityiskohdat","openaiCompatibleDetails":"OpenAI-yhteensopivat tiedot","messagesApi":"Viestit API","responsesApi":"Responses API","chatCompletions":"Chatin loppuun saattaminen","importingModels":"Tuodaan...","importFromModels":"Tuo / mallit","addConnectionToImport":"Lis\xe4\xe4 yhteys ottaaksesi tuonnin k\xe4ytt\xf6\xf6n.","noModelsConfigured":"Ei malleja m\xe4\xe4ritetty","connectionCount":"{count} yhteytt\xe4","fetchingModels":"Haetaan saatavilla olevia malleja...","failedFetchModels":"Mallien nouto ep\xe4onnistui","noModelsFound":"Malleja ei l\xf6ytynyt","importFailed":"Tuonti ep\xe4onnistui","noNewModelsAdded":"Uusia malleja ei lis\xe4tty.","adding":"Lis\xe4t\xe4\xe4n...","importingModelsTitle":"Mallien tuonti","copyModel":"Kopioi malli","removeModel":"Poista malli","rateLimitProtected":"Suojattu","rateLimitUnprotected":"Suojaamaton","enableRateLimitProtection":"Ota nopeusrajoitussuoja k\xe4ytt\xf6\xf6n napsauttamalla","disableRateLimitProtection":"Napsauta poistaaksesi nopeusrajoituksen suojauksen","productionKey":"Tuotantoavain","enterNewApiKey":"Anna uusi API-avain","optional":"Valinnainen","anthropicCompatibleName":"Antrooppinen yhteensopiva","openaiCompatibleName":"OpenAI-yhteensopiva","failedImportModels":"Mallien tuonti ep\xe4onnistui","noModelsReturnedFromEndpoint":"Ei malleja palautettu /models-p\xe4\xe4tepisteest\xe4.","importingModelsProgress":"Tuodaan {current}/{total} mallia...","foundModelsStartingImport":"L\xf6ytyi {count} mallia. Aloitetaan tuontia...","importingModelById":"Tuodaan {modelId}...","importSuccessCount":"{count, plural, one {# model} other {# models}} tuotu onnistuneesti!","noNewModelsAddedExisting":"Uusia malleja ei lis\xe4tty (kaikki on jo olemassa).","importDoneCount":"✓ Valmis! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"Tapahtui odottamaton virhe","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"viestej\xe4","responsesPath":"vastaukset","chatCompletionsPath":"chat / t\xe4ydennykset","add":"Lis\xe4\xe4","edit":"Muokkaa","delete":"Poista","anthropic":"Antrooppinen","openai":"OpenAI","singleConnectionPerCompatible":"Vain yksi yhteys on sallittu yhteensopivaa solmua kohden. Lis\xe4\xe4 toinen solmu, jos tarvitset lis\xe4\xe4 yhteyksi\xe4.","connections":"Liit\xe4nn\xe4t","providerProxyTitleConfigured":"Palveluntarjoajan v\xe4lityspalvelin: {host}","configured":"m\xe4\xe4ritetty","providerProxyConfigureHint":"M\xe4\xe4rit\xe4 v\xe4lityspalvelin kaikille t\xe4m\xe4n palveluntarjoajan yhteyksille","providerProxy":"Palveluntarjoajan v\xe4lityspalvelin","noConnectionsYet":"Ei yhteyksi\xe4 viel\xe4","addFirstConnectionHint":"Aloita lis\xe4\xe4m\xe4ll\xe4 ensimm\xe4inen yhteys","addConnection":"Lis\xe4\xe4 yhteys","availableModels":"Saatavilla olevat mallit","pageAutoRefresh":"Sivu p\xe4ivittyy automaattisesti...","statusDisabled":"pois k\xe4yt\xf6st\xe4","statusConnected":"yhdistetty","statusRuntimeIssue":"ajonaikainen ongelma","statusAuthFailed":"todennus ep\xe4onnistui","statusRateLimited":"hinta rajoitettu","statusNetworkIssue":"verkko-ongelma","statusTestUnsupported":"testi\xe4 ei tueta","statusUnavailable":"ei ole saatavilla","statusFailed":"ep\xe4onnistunut","statusError":"virhe","oauthAccount":"OAuth-tili","errorTypeRuntime":"Paikallinen suoritusaika","errorTypeUpstreamAuth":"Varsinainen todennus","errorTypeMissingCredential":"Tunnustus puuttuu","errorTypeRefreshFailed":"P\xe4ivitys ep\xe4onnistui","errorTypeTokenExpired":"Tunnus on vanhentunut","errorTypeRateLimited":"Hinta rajoitettu","errorTypeUpstreamUnavailable":"Upstream ei saatavilla","errorTypeNetworkError":"Verkkovirhe","errorTypeTestUnsupported":"Testi\xe4 ei tueta","errorTypeUpstreamError":"Virhe yl\xe4virtaan","proxySourceGlobal":"Maailmanlaajuinen","proxySourceProvider":"Palveluntarjoaja","proxySourceKey":"Avain","proxyConfiguredBySource":"V\xe4lityspalvelin ({source}): {host}","autoPriority":"Automaattinen: {priority}","proxy":"V\xe4lityspalvelin","retestAuthentication":"Testaa todennus uudelleen","retest":"Testaa uudelleen","disableConnection":"Poista yhteys k\xe4yt\xf6st\xe4","enableConnection":"Ota yhteys k\xe4ytt\xf6\xf6n","reauthenticateConnection":"Todenna t\xe4m\xe4 yhteys uudelleen","proxyConfig":"V\xe4lityspalvelimen konfigurointi","aliasExistsAlert":"Alias \\"{alias}\\" on jo olemassa. K\xe4yt\xe4 toista mallia tai muokkaa olemassa olevaa aliasta.","openRouterAnyModelHint":"OpenRouter tukee mit\xe4 tahansa mallia. Lis\xe4\xe4 malleja ja luo aliaksia nopeaa k\xe4ytt\xf6\xe4 varten.","modelIdFromOpenRouter":"Mallin tunnus (OpenRouterista)","openRouterModelPlaceholder":"antrooppinen/claude-3-opus","customModels":"Mukautetut mallit","customModelsHint":"Lis\xe4\xe4 mallitunnukset, jotka eiv\xe4t ole oletusluettelossa. N\xe4m\xe4 ovat k\xe4ytett\xe4viss\xe4 reitityst\xe4 varten.","modelId":"Mallin tunnus","customModelPlaceholder":"esim. gpt-4.5-turbo","loading":"Ladataan...","removeCustomModel":"Poista mukautettu malli","noCustomModels":"Mukautettuja malleja ei ole viel\xe4 lis\xe4tty.","allSuggestedAliasesExist":"Kaikki ehdotetut aliakset ovat jo olemassa. Valitse toinen malli tai poista ristiriitaiset aliakset.","failedSaveCustomModel":"Muokatun mallin tallentaminen ep\xe4onnistui","modelAddedSuccess":"Malli {modelId} lis\xe4ttiin onnistuneesti","failedAddModelTryAgain":"Mallin lis\xe4\xe4minen ep\xe4onnistui. Yrit\xe4 uudelleen.","failedSaveImportedModel":"Tuodun mallin tallentaminen mukautettuun tietokantaan ep\xe4onnistui","failedImportModelsTryAgain":"Mallien tuonti ep\xe4onnistui. Yrit\xe4 uudelleen.","failedRemoveModelFromDatabase":"Mallin poistaminen tietokannasta ep\xe4onnistui","modelRemovedSuccess":"Mallin poistaminen onnistui","failedDeleteModelTryAgain":"Mallin poistaminen ep\xe4onnistui. Yrit\xe4 uudelleen.","compatibleModelsDescription":"Lis\xe4\xe4 {type}-yhteensopivia malleja manuaalisesti tai tuo ne /models-p\xe4\xe4tepisteest\xe4.","anthropicCompatibleModelPlaceholder":"claude-3-opus-20240229","openaiCompatibleModelPlaceholder":"gpt-4o","apiKeyValidationFailed":"API-avaimen vahvistus ep\xe4onnistui. Tarkista avaimesi ja yrit\xe4 uudelleen.","addProviderApiKeyTitle":"Lis\xe4\xe4 {provider} API-avain","checking":"Tarkistetaan...","check":"Tarkista","valid":"Voimassa","invalid":"Virheellinen","creating":"Luodaan...","validationChecksAnthropicCompatible":"Vahvistus tarkistaa {provider} vahvistamalla API-avaimen.","validationChecksOpenAiCompatible":"Vahvistus tarkistaa {provider} /models-osoitteen kautta perus-URL-osoitteessasi.","priorityLabel":"Prioriteetti","saving":"Tallennetaan...","save":"Tallenna","editConnection":"Muokkaa yhteytt\xe4","accountName":"Tilin nimi","email":"S\xe4hk\xf6posti","healthCheckMinutes":"Terveystarkastus (min)","healthCheckHint":"Ennakoiva tunnuksen p\xe4ivitysv\xe4li. 0 = pois k\xe4yt\xf6st\xe4.","failedTestConnection":"Yhteyden testaus ep\xe4onnistui","failed":"Ep\xe4onnistui","leaveBlankKeepCurrentApiKey":"J\xe4t\xe4 tyhj\xe4ksi, jos haluat s\xe4ilytt\xe4\xe4 nykyisen API-avaimen.","editCompatibleTitle":"Muokkaa {type} Yhteensopiva","compatibleBaseUrlHint":"K\xe4yt\xe4 perus-URL-osoitetta (p\xe4\xe4ttyy /v1) {type}-yhteensopivalle API:lle.","apiKeyForCheck":"API-avain (tarkistusta varten)","compatibleProdPlaceholder":"{type} Yhteensopiva (tuote)"},"settings":{"title":"Asetukset","general":"Kenraali","security":"Turvallisuus","appearance":"Ulkon\xe4k\xf6","routing":"Reititys","cache":"V\xe4limuisti","resilience":"Joustavuus","systemPrompt":"J\xe4rjestelm\xe4kehote","thinkingBudget":"Miettiv\xe4 budjetti","proxy":"V\xe4lityspalvelin","pricing":"Hinnoittelu","storage":"Varastointi","policies":"K\xe4yt\xe4nn\xf6t","ipFilter":"IP-suodatin","comboDefaults":"Yhdistelm\xe4n oletukset","fallbackChains":"Varaketjut","changePassword":"Vaihda salasana","enablePassword":"Ota salasana k\xe4ytt\xf6\xf6n","darkMode":"Tumma tila","lightMode":"Valotila","systemTheme":"J\xe4rjestelm\xe4n teema","enableCache":"Ota v\xe4limuisti k\xe4ytt\xf6\xf6n","cacheTTL":"V\xe4limuisti TTL","maxCacheSize":"V\xe4limuistin enimm\xe4iskoko","clearCache":"Tyhjenn\xe4 v\xe4limuisti","cacheHits":"V\xe4limuistin osumia","cacheMisses":"V\xe4limuisti puuttuu","hitRate":"Osumaprosentti","cacheEntries":"V\xe4limuistin merkinn\xe4t","circuitBreaker":"Katkaisija","retryPolicy":"Yrit\xe4 uudelleen -k\xe4yt\xe4nt\xf6","maxRetries":"Max Uudelleenyritykset","retryDelay":"Yrit\xe4 uudelleen Viive","timeoutMs":"Aikakatkaisu (ms)","enableSystemPrompt":"Ota j\xe4rjestelm\xe4kehote k\xe4ytt\xf6\xf6n","systemPromptText":"J\xe4rjestelm\xe4kehoteteksti","enableThinking":"Ota ajattelu k\xe4ytt\xf6\xf6n","maxThinkingTokens":"Max Thinking Tokens","enableProxy":"Ota v\xe4lityspalvelin k\xe4ytt\xf6\xf6n","proxyUrl":"V\xe4lityspalvelimen URL-osoite","pricingRates":"Hinnoitteluhinnastomuoto","currentPricing":"Nykyisen hinnoittelun yleiskatsaus","loadingPricing":"Ladataan hintatietoja...","noPricing":"Hintatietoja ei ole saatavilla","input":"Sy\xf6te","output":"L\xe4ht\xf6","cached":"V\xe4limuistissa","reasoning":"P\xe4\xe4ttely","cacheCreation":"V\xe4limuistin luominen","customPricing":"Mukautettu hinnoittelu","databaseSize":"Tietokannan koko","backupDb":"Varmuuskopiointitietokanta","restoreDb":"Palauta tietokanta","exportData":"Vie tiedot","importData":"Tuo tiedot","clearData":"Tyhjenn\xe4 kaikki tiedot","clearDataConfirm":"T\xe4m\xe4 poistaa pysyv\xe4sti kaikki tiedot. Oletko varma?","enableRequestLogs":"Ota pyynt\xf6lokit k\xe4ytt\xf6\xf6n","logRetention":"Lokin s\xe4ilytt\xe4minen","ipWhitelist":"IP valkoinen lista","ipBlacklist":"IP musta lista","addIP":"Lis\xe4\xe4 IP","savedSuccessfully":"Asetukset tallennettu onnistuneesti","ai":"AI","advanced":"Edistynyt","localMode":"Paikallinen tila — Kaikki laitteellesi tallennetut tiedot","settingsSectionsAria":"Asetukset-osiot","switchThemes":"Vaihda vaaleiden ja tummien teemojen v\xe4lill\xe4","themeSelectionAria":"Teeman valinta","themeLight":"Kevyt","themeDark":"Tumma","themeSystem":"J\xe4rjestelm\xe4","hideHealthLogs":"Piilota kuntotarkastuslokit","hideHealthLogsDesc":"Kun P\xc4\xc4LL\xc4, est\xe4 [HealthCheck]-viestit palvelinkonsolissa","promptCache":"Kehotusv\xe4limuisti","flushCache":"Tyhjenn\xe4 v\xe4limuisti","flushing":"Huuhdellaan…","size":"Koko","hits":"Osumat","evictions":"H\xe4\xe4d\xf6t","loadingCacheStats":"Ladataan v\xe4limuistin tilastoja…","globalProxy":"Globaali v\xe4lityspalvelin","globalProxyDesc":"M\xe4\xe4rit\xe4 yleinen l\xe4htev\xe4 v\xe4lityspalvelin kaikille API-kutsuille. Yksitt\xe4iset palveluntarjoajat, yhdistelm\xe4t ja avaimet voivat ohittaa t\xe4m\xe4n.","noGlobalProxy":"Globaalia v\xe4lityspalvelinta ei ole m\xe4\xe4ritetty","globalLabel":"Maailmanlaajuinen","configure":"M\xe4\xe4rit\xe4","globalSystemPrompt":"Globaali j\xe4rjestelm\xe4kehote","systemPromptDesc":"Lis\xe4t\xe4\xe4n kaikkiin v\xe4lityspalvelintason pyynt\xf6ihin","saved":"Tallennettu","systemPromptPlaceholder":"Anna j\xe4rjestelm\xe4kehote lis\xe4t\xe4ksesi kaikkiin pyynt\xf6ihin...","systemPromptHint":"T\xe4m\xe4 kehote liitet\xe4\xe4n jokaisen pyynn\xf6n j\xe4rjestelm\xe4viestiin. K\xe4yt\xe4 yleisi\xe4 ohjeita, turvallisuusohjeita tai vastausten muotoilus\xe4\xe4nt\xf6j\xe4 varten.","chars":"{count} merkki\xe4","thinkingBudgetTitle":"Miettiv\xe4 budjetti","thinkingBudgetDesc":"Hallitse teko\xe4lyn p\xe4\xe4ttelytunnuksen k\xe4ytt\xf6\xe4 kaikissa pyynn\xf6iss\xe4","passthrough":"L\xe4pivienti","passthroughDesc":"Ei muutoksia – asiakas hallitsee ajattelubudjettia","auto":"Auto","autoDesc":"Poista kaikki ajatellut asetukset – anna palveluntarjoajan p\xe4\xe4tt\xe4\xe4","custom":"Mukautettu","customDesc":"Aseta kiinte\xe4 tunnusbudjetti kaikille pyynn\xf6ille","adaptive":"Mukautuva","adaptiveDesc":"Skaalaa budjetti pyynn\xf6n monimutkaisuuden perusteella","effortNone":"Ei mit\xe4\xe4n (0 merkki\xe4)","effortLow":"Matala (1 000 tokenia)","effortMedium":"Keskikokoinen (10 000 merkki\xe4)","effortHigh":"High (128 000 tokenia)","tokenBudget":"Token-budjetti","tokens":"rahakkeita","baseEffortLevel":"Perusponnistuksen taso","adaptiveHint":"Mukautuva tila skaalautuu t\xe4lt\xe4 perustasolta viestim\xe4\xe4r\xe4n, ty\xf6kalun k\xe4yt\xf6n ja kehotteen pituuden perusteella.","requireLogin":"Vaadi kirjautumista","requireLoginDesc":"Kun P\xc4\xc4LL\xc4, kojelauta vaatii salasanan. Kun POIS P\xc4\xc4LT\xc4, k\xe4yt\xe4 ilman kirjautumista.","currentPassword":"Nykyinen salasana","enterCurrentPassword":"Anna nykyinen salasana","newPassword":"Uusi salasana","enterNewPassword":"Sy\xf6t\xe4 uusi salasana","confirmPassword":"Vahvista uusi salasana","confirmPasswordPlaceholder":"Vahvista uusi salasana","passwordsNoMatch":"Salasanat eiv\xe4t t\xe4sm\xe4\xe4","passwordUpdated":"Salasana p\xe4ivitetty onnistuneesti","failedUpdatePassword":"Salasanan p\xe4ivitys ep\xe4onnistui","errorOccurred":"Tapahtui virhe","updatePassword":"P\xe4ivit\xe4 salasana","setPassword":"Aseta salasana","apiEndpointProtection":"API Endpoint Protection","requireAuthModels":"Vaadi API-avain /mallille","requireAuthModelsDesc":"Kun P\xc4\xc4LL\xc4, /v1/models-p\xe4\xe4tepiste palauttaa 404 todentamattomille pyynn\xf6ille. Est\xe4\xe4 valtuuttamattomien k\xe4ytt\xe4jien mallin l\xf6yt\xe4misen.","blockedProviders":"Estetyt palveluntarjoajat","blockedProvidersDesc":"Piilota tietyt toimittajat /v1/models-vastauksesta. Estetyt palveluntarjoajat eiv\xe4t n\xe4y malliluetteloissa.","providersBlocked":"{count} toimittaja(t) estetty /modelsista","blockProviderTitle":"Est\xe4 {provider}","unblockProviderTitle":"Kumoa esto {provider}","routingStrategy":"Reititysstrategia","fillFirst":"T\xe4yt\xe4 ensin","fillFirstDesc":"K\xe4yt\xe4 tilej\xe4 t\xe4rkeysj\xe4rjestyksess\xe4","roundRobin":"Round Robin","roundRobinDesc":"Selaa kaikki tilit l\xe4pi","p2c":"P2C","p2cDesc":"Valitse 2 satunnaista, k\xe4yt\xe4 terveellisemp\xe4\xe4","random":"Satunnainen","randomDesc":"Satunnainen tili jokainen pyynt\xf6","leastUsed":"V\xe4hiten k\xe4ytetty","leastUsedDesc":"Valitse v\xe4hiten k\xe4ytetty tili","costOpt":"Kustannusopt","costOptDesc":"Valitse halvin saatavilla oleva tili","stickyLimit":"Sticky Limit","stickyLimitDesc":"Puhelut tilikohtaisesti ennen vaihtamista","modelAliases":"Mallin aliakset","modelAliasesDesc":"Jokerimerkkikuviot mallien nimien yhdist\xe4miseen • K\xe4yt\xe4 * ja ?","aliasPatternPlaceholder":"claude-sonett-*","aliasTargetPlaceholder":"claude-sonnet-4-20250514","pattern":"kuvio","targetModel":"Kohdemalli","add":"+ Lis\xe4\xe4","session":"Istunto","sessionDetailsAria":"Istunnon tiedot","status":"Tila","authenticated":"Todennettu","guest":"Vieras","loginTime":"Kirjautumisaika","sessionAge":"Istunnon ik\xe4","browser":"Selain","clearLocalData":"Tyhjenn\xe4 paikalliset tiedot","logout":"Kirjaudu ulos","clearLocalDataConfirm":"Poistetaanko kaikki paikalliset tiedot? T\xe4m\xe4 nollaa asetuksesi.","unknown":"Tuntematon","systemActor":"j\xe4rjestelm\xe4","ipAccessControl":"IP Access Control","ipAccessControlDesc":"Est\xe4 tai salli tietyt IP-osoitteet","ipModeDisabled":"Ei k\xe4yt\xf6ss\xe4","ipModeBlacklist":"Musta lista","ipModeWhitelist":"Valkoinen lista","ipModeWhitelistPriority":"WL-prioriteetti","addIpAddress":"Lis\xe4\xe4 IP-osoite","ipAddressPlaceholder":"192.168.1.0/24 tai 10.0.*.*","block":"+ Est\xe4","allow":"+ Salli","blocked":"Estetty ({count})","allowed":"Sallittu ({count})","temporaryBans":"V\xe4liaikaiset kiellot ({count})","minLeft":"{min}m j\xe4ljell\xe4","auditLog":"Tarkastusloki","searchAuditLogs":"Hae valvontalokeja...","failedLoadAuditLog":"Tarkastuslokin lataaminen ep\xe4onnistui","noAuditEvents":"Tarkastustapahtumia ei l\xf6ytynyt","action":"Toiminta","actor":"n\xe4yttelij\xe4","details":"Yksityiskohdat","time":"Aika","fallbackChainsTitle":"Varaketjut","fallbackChainsDesc":"M\xe4\xe4rit\xe4 toimittajan varatilaus mallikohtaisesti","addChain":"+ Lis\xe4\xe4 ketju","modelName":"Mallin nimi","modelNamePlaceholder":"claude-sonnet-4-20250514","providersCommaSeparated":"Palveluntarjoajat (pilkuilla erotettuna, t\xe4rkeysj\xe4rjestyksess\xe4)","providersCommaSeparatedPlaceholder":"antrooppinen, openai, kaksoset","createChain":"Luo ketju","noFallbackChains":"Ei varaketjuja","noFallbackChainsDesc":"Luo ketju toimittajan varatilauksen m\xe4\xe4ritt\xe4miseksi mallille.","loadingFallbackChains":"Ladataan varaketjuja...","deleteChainConfirm":"Poistetaanko varaketju kohteelle \\"{model}\\"?","chainCreated":"Ketju luotu kohteelle {model}","chainDeleted":"Ketju poistettu {model}","failedCreateChain":"Ketjun luominen ep\xe4onnistui","failedDeleteChain":"Ketjun poistaminen ep\xe4onnistui","deleteChain":"Poista ketju","fillModelAndProviders":"T\xe4yt\xe4 mallin nimi ja toimittajat","addAtLeastOneProvider":"Lis\xe4\xe4 v\xe4hint\xe4\xe4n yksi palveluntarjoaja","comboDefaultsTitle":"Yhdistelm\xe4n oletukset","globalComboConfig":"Globaali yhdistelm\xe4kokoonpano","defaultStrategy":"Oletusstrategia","defaultStrategyDesc":"Sovelletaan uusiin komboihin ilman selke\xe4\xe4 strategiaa","comboStrategyAria":"Yhdistelm\xe4strategia","priority":"Prioriteetti","weighted":"Painotettu","maxRetriesLabel":"Max Uudelleenyritykset","retryDelayLabel":"Uudelleenyrityksen viive (ms)","timeoutLabel":"Aikakatkaisu (ms)","healthCheck":"Terveystarkastus","healthCheckDesc":"Tarkista palveluntarjoajan saatavuus etuk\xe4teen","trackMetrics":"Seuraa mittareita","trackMetricsDesc":"Tallenna yhdistelm\xe4kohtaiset pyynt\xf6tiedot","providerOverrides":"Palveluntarjoajan ohitukset","providerOverridesDesc":"Ohita aikakatkaisu ja yrit\xe4 uudelleen palveluntarjoajan mukaan. Palveluntarjoajan asetukset ohittavat yleiset oletukset.","providerMaxRetriesAria":"{provider} enint\xe4\xe4n uudelleenyrityst\xe4","providerTimeoutAria":"{provider} aikakatkaisu ms","removeProviderOverrideAria":"Poista {provider} ohitus","newProviderNamePlaceholder":"esim. google, avaa...","newProviderNameAria":"Uusi palveluntarjoajan nimi","retries":"yritt\xe4\xe4 uudelleen","ms":"ms","saveComboDefaults":"Tallenna yhdistelm\xe4n oletusasetukset","maxNestingDepth":"Suurin pesint\xe4syvyys","concurrencyPerModel":"Samanaikaisuus / malli","queueTimeout":"Jonon aikakatkaisu (ms)","providerProfiles":"Palveluntarjoajan profiilit","providerProfilesDesc":"Erilliset joustavuusasetukset OAuth- (istuntopohjainen) ja API-avaimen (mittari) tarjoajille. OAuth-palveluntarjoajilla on tiukemmat kynnykset alhaisempien nopeusrajojen vuoksi.","oauthProviders":"OAuth-palveluntarjoajat","apiKeyProviders":"API-avainten tarjoajat","transientCooldown":"Ohimenev\xe4 j\xe4\xe4htyminen","rateLimitCooldown":"Rate Limit Cooldown","maxBackoffLevel":"Maksimitaso","cbThreshold":"CB-kynnys","cbResetTime":"CB-nollausaika","rateLimiting":"Rate Limiting","rateLimitingDesc":"API-avainten tarjoajat ovat automaattisesti nopeudeltaan rajoitettuja turvallisilla oletusasetuksilla. Rajat opitaan vastausotsikoista ja mukautuvat ajan my\xf6t\xe4.","defaultSafetyNet":"Oletusturvaverkko","rpm":"RPM","minGap":"Min Gap","maxConcurrent":"Max Samanaikainen","activeLimiters":"Aktiiviset rajoittimet","noActiveLimiters":"Ei viel\xe4 aktiivisia nopeudenrajoittimia.","reservoir":"S\xe4ili\xf6","running":"Juoksemassa","queued":"Jonossa","circuitBreakers":"Katkaisijat","breakerStateClosed":"Suljettu","breakerStateOpen":"Avaa","breakerStateHalfOpen":"Puoliavoin","tripped":"{count} lauennut","healthy":"{count} terve","resetAll":"Nollaa kaikki","noCircuitBreakers":"Katkaisijat eiv\xe4t ole viel\xe4 aktiivisia. Ne luodaan automaattisesti, kun pyynn\xf6t kulkevat yhdistelm\xe4putkilinjan l\xe4pi.","failures":"{count} virhe(\xe4)","policiesLocked":"K\xe4yt\xe4nn\xf6t ja lukitut tunnisteet","allOperational":"Kaikki j\xe4rjestelm\xe4t toimivat – ei lukituksia tai lauenneita katkaisijoita","loadingPolicies":"Ladataan k\xe4yt\xe4nt\xf6j\xe4...","lockedIdentifiers":"Lukitut tunnisteet","unlockedIdentifier":"Avattu: {identifier}","sinceDate":"alkaen {date}","forceUnlock":"Pakota lukitus","unlocking":"Avataan...","failedUnlock":"Lukituksen avaaminen ep\xe4onnistui","failedLoadWithStatus":"Lataus ep\xe4onnistui: {status}","failedLoadResilience":"Resilienssitilan lataaminen ep\xe4onnistui","saveFailed":"Tallennus ep\xe4onnistui","resetFailed":"Nollaus ep\xe4onnistui","loadingResilience":"Ladataan joustavuuden tilaa...","retry":"Yrit\xe4 uudelleen","systemStorage":"J\xe4rjestelm\xe4 ja tallennustila","allDataLocal":"Kaikki tiedot on tallennettu paikallisesti koneellesi","databasePath":"Tietokannan polku","exportDatabase":"Vie tietokanta","exportAll":"Vie kaikki (.tar.gz)","importDatabase":"Tuo tietokanta","confirmDbImport":"Vahvista tietokannan tuonti","confirmDbImportDesc":"T\xe4m\xe4 korvaa kaikki nykyiset tiedot kohteen {file} sis\xe4ll\xf6ll\xe4. Varmuuskopio luodaan automaattisesti ennen tuontia.","yesImport":"Kyll\xe4, tuonti","lastBackup":"Viimeinen varmuuskopio","noBackupYet":"Ei viel\xe4 varmuuskopiota","backupNow":"Varmuuskopioi nyt","backupRestore":"Varmuuskopiointi ja palautus","viewBackups":"N\xe4yt\xe4 varmuuskopiot","hide":"Piilota","backupRetentionDesc":"Tietokannan tilannevedokset luodaan automaattisesti ennen palautusta ja 15 minuutin v\xe4lein tietojen muuttuessa. S\xe4ilytys: 24 tunnin v\xe4lein + 30 p\xe4ivitt\xe4ist\xe4 varmuuskopiota \xe4lykk\xe4\xe4ll\xe4 kierrolla.","loadingBackups":"Ladataan varmuuskopioita...","noBackupsYet":"Varmuuskopioita ei ole viel\xe4 saatavilla. Varmuuskopiot luodaan automaattisesti, kun tiedot muuttuvat.","backupsAvailable":"{count} varmuuskopio(t) saatavilla","refresh":"P\xe4ivit\xe4","confirm":"Vahvista?","yes":"Kyll\xe4","no":"Ei","restore":"Palauta","invalidFileType":"Virheellinen tiedostotyyppi. Vain .sqlite-tiedostot hyv\xe4ksyt\xe4\xe4n.","exportFailed":"Vienti ep\xe4onnistui","exportFailedWithError":"Vienti ep\xe4onnistui: {error}","fullExportFailedWithError":"T\xe4ysi vienti ep\xe4onnistui: {error}","backupCreated":"Varmuuskopio luotu: {file}","restoreSuccess":"Palautettu! {connections} yhteydet, {nodes} solmut, {combos} yhdistelm\xe4t, {apiKeys} API-avaimet.","importSuccess":"Tietokanta tuotu! {connections} yhteydet, {nodes} solmut, {combos} yhdistelm\xe4t, {apiKeys} API-avaimet.","justNow":"juuri nyt","minutesAgo":"{count}min sitten","hoursAgo":"{count}h sitten","daysAgo":"{count}pv sitten","backupReasonManual":"manuaalinen","backupReasonPreRestore":"esipalautus","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"Ei muutoksia edellisen varmuuskopioinnin j\xe4lkeen","backupFailed":"Varmuuskopiointi ep\xe4onnistui","restoreFailed":"Palautus ep\xe4onnistui","importFailed":"Tuonti ep\xe4onnistui","errorDuringRestore":"Palautuksen aikana tapahtui virhe","errorDuringImport":"Tuonnin aikana tapahtui virhe","modelPricing":"Mallin hinnoittelu","modelPricingDesc":"M\xe4\xe4rit\xe4 mallikohtaiset hintahinnat • Kaikki hinnat $/1M tunnuksissa","providers":"Palveluntarjoajat","registry":"Rekisteri","priced":"hinnoiteltu","searchProvidersModels":"Hae palveluntarjoajia tai malleja...","showAll":"N\xe4yt\xe4 kaikki","noProvidersMatch":"Yksik\xe4\xe4n palveluntarjoaja ei vastaa hakuasi.","howPricingWorks":"Kuinka hinnoittelu toimii","cacheWrite":"V\xe4limuistin kirjoitus","unsaved":"tallentamaton","resetDefaults":"Palauta oletukset","saveProvider":"Tallenna palveluntarjoaja","saving":"Tallennetaan...","model":"Malli","models":"mallit","moreProviders":"{count} lis\xe4\xe4 palveluntarjoajia","withPricing":"hinnoittelu m\xe4\xe4ritettyn\xe4","policiesCircuitBreakers":"K\xe4yt\xe4nn\xf6t ja katkaisijat","activeIssuesDetected":"Aktiivisia ongelmia havaittu","off":"Pois p\xe4\xe4lt\xe4","resetPricingConfirm":"Palautetaanko kaikki kohteen {provider} hinnat oletusasetuksiin?","pricingDescInput":"Sy\xf6te: mallille l\xe4hetetyt tunnukset","pricingDescOutput":"Tulos: luotuja merkkej\xe4","pricingDescCached":"V\xe4limuistissa: uudelleen k\xe4ytetty sy\xf6tt\xf6 (~50 % sy\xf6tt\xf6nopeudesta)","pricingDescReasoning":"P\xe4\xe4ttely: ajattelumerkit (palautuu ulostuloon)","pricingDescCacheWrite":"V\xe4limuistin kirjoitus: v\xe4limuistin merkint\xf6jen luominen (palautuu sy\xf6tteeseen)","pricingDescFormula":"Kustannukset = (sy\xf6tt\xf6 \xd7 sy\xf6tt\xf6nopeus) + (tuotos \xd7 l\xe4ht\xf6nopeus) + (v\xe4limuisti \xd7 v\xe4limuistin_nopeus) miljoonaa merkki\xe4 kohden.","pricingSettingsTitle":"Hinnoitteluasetukset","totalModels":"Mallit yhteens\xe4","active":"Aktiivinen","costCalculation":"Kustannuslaskenta","costCalculationDesc":"Kustannukset lasketaan kullekin mallille m\xe4\xe4ritettyjen tunnuksen k\xe4yt\xf6n ja hinnoittelun perusteella.","pricingFormat":"Hinnoittelumuoto","pricingFormatDesc":"Kaikki hinnat ovat $/1M tokeneita (dollaria per miljoonaa rahaketta).","tokenTypes":"Token-tyypit","inputTokenDesc":"Vakiokehotetunnukset","outputTokenDesc":"T\xe4ydennys-/vastaustunnukset","cachedTokenDesc":"V\xe4limuistissa olevat sy\xf6tt\xf6tunnukset (yleens\xe4 50 % sy\xf6tt\xf6nopeudesta)","reasoningTokenDesc":"Erityiset p\xe4\xe4ttely-/ajattelutunnisteet (varaustulosta)","cacheCreationTokenDesc":"V\xe4limuistimerkint\xf6jen luomiseen k\xe4ytetyt tunnukset (varausarvo sy\xf6tt\xf6nopeuteen)","customPricingNote":"Voit ohittaa tiettyjen mallien oletushinnoittelun. Mukautetut ohitukset ovat etusijalla automaattisesti tunnistettuihin hinnoitteluun n\xe4hden.","editPricing":"Muokkaa hinnoittelua","viewFullDetails":"N\xe4yt\xe4 t\xe4ydelliset tiedot","modelAliasesTitle":"Mallialias","addCustomAlias":"Lis\xe4\xe4 Mukautettu Alias","deprecatedModelId":"Vanhentunut malli-ID","newModelId":"Uusi malli-ID","customAliases":"Mukautetut Aliakset","builtInAliases":"Sis\xe4\xe4nrakennetut Aliakset","backgroundDegradationTitle":"Taustaty\xf6 Degradointi","backgroundDegradationDesc":"Tunnistaa automaattisesti taustaty\xf6t (otsikot, yhteenvedot) ja ohjaa halvempiin malleihin","enableDegradation":"Ota Taustadegraadointi K\xe4ytt\xf6\xf6n","enableDegradationHint":"Kun k\xe4yt\xf6ss\xe4, taustaty\xf6t kuten otsikoiden luominen ja yhteenvedot ohjataan automaattisesti halvempiin malleihin","tasksDetected":"Teht\xe4v\xe4t tunnistettu","degradationMap":"Mallin Degradaatiokartta","premiumModel":"Premium-malli","cheapModel":"Halpa malli","detectionPatterns":"Tunnistusmallit","newPattern":"esim. \\"luo otsikko\\""},"translator":{"title":"K\xe4\xe4nt\xe4j\xe4","metaTitle":"K\xe4\xe4nt\xe4j\xe4 leikkikentt\xe4 | OmniRoute","metaDescription":"Tee virheenkorjaus, testaa ja visualisoi API-muotojen k\xe4\xe4nn\xf6kset palveluntarjoajien v\xe4lill\xe4","playgroundTitle":"K\xe4\xe4nt\xe4j\xe4 leikkikentt\xe4","playground":"Leikkipaikka","realtime":"Reaaliaikainen k\xe4\xe4nn\xf6stoiminta","chatTester":"Chatin testaaja","testBench":"Testipenkki","liveMonitor":"Live Monitor","modeDescriptionPlayground":"Liit\xe4 mik\xe4 tahansa API-pyynn\xf6n runko ja katso, kuinka OmniRoute k\xe4\xe4nt\xe4\xe4 sen toimittajamuotojen v\xe4lill\xe4 (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)","modeDescriptionChatTester":"L\xe4het\xe4 todellisia chat-pyynt\xf6j\xe4 OmniRouten kautta ja tarkasta koko meno-paluu: sy\xf6tt\xf6, k\xe4\xe4nnetty pyynt\xf6, palveluntarjoajan vastaus ja k\xe4\xe4nnetty tulos.","modeDescriptionTestBench":"Suorita ennalta m\xe4\xe4ritettyj\xe4 skenaarioita ja vertaile toimittajien ja mallien yhteensopivuutta.","modeDescriptionLiveMonitor":"Katso k\xe4\xe4nn\xf6stapahtumia reaaliajassa, kun pyynn\xf6t kulkevat OmniRouten kautta.","modeDescriptionFallback":"Tee virheenkorjaus, testaa ja visualisoi, kuinka OmniRoute k\xe4\xe4nt\xe4\xe4 API-pyynn\xf6t palveluntarjoajien v\xe4lill\xe4.","recentTranslations":"Viimeaikaiset k\xe4\xe4nn\xf6kset","noTranslations":"Ei viel\xe4 k\xe4\xe4nn\xf6ksi\xe4","source":"l\xe4hde","target":"Kohde","time":"Aika","model":"Malli","status":"Tila","latency":"Latenssi","totalTranslations":"Yhteens\xe4 k\xe4\xe4nn\xf6ksi\xe4","successful":"Onnistunut","errors":"Virheet","avgLatency":"Keskim\xe4\xe4r\xe4inen viive","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"Live - automaattinen p\xe4ivitys","paused":"Keskeytetty","eventsAppearHint":"K\xe4\xe4nn\xf6stapahtumat n\xe4kyv\xe4t t\xe4\xe4ll\xe4, kun pyynn\xf6t kulkevat OmniRouten kautta. K\xe4yt\xe4 mit\xe4 tahansa n\xe4ist\xe4 menetelmist\xe4 tapahtumien luomiseen:","chatTesterTab":"Chat Tester -v\xe4lilehti","testBenchTab":"Testipenkki-v\xe4lilehti","externalApiCalls":"Ulkoiset API-kutsut","ideCliIntegrations":"IDE/CLI-integraatiot","inMemoryNote":"Huomautus: Tapahtumat tallennetaan muistiin ja nollataan, kun palvelin k\xe4ynnistyy uudelleen.","ok":"OK","errorShort":"ERR","formatConverter":"Format Converter","formatConverterDescription":"Liit\xe4 tai kirjoita JSON-pyynn\xf6n leip\xe4teksti. K\xe4\xe4nt\xe4j\xe4 tunnistaa automaattisesti l\xe4hdemuodon ja muuntaa sen kohdemuotoon. K\xe4yt\xe4 t\xe4t\xe4 virheenkorjaukseen, kuinka OmniRoute k\xe4\xe4nt\xe4\xe4 pyynn\xf6t muotojen v\xe4lill\xe4 (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).","input":"Sy\xf6te","output":"L\xe4ht\xf6","auto":"Auto","swapFormats":"Vaihda formaatteja","translateAction":"K\xe4\xe4nn\xe4","clear":"Selke\xe4","inputPlaceholder":"Liit\xe4 pyynn\xf6n teksti t\xe4h\xe4n tai valitse malli alta...","exampleTemplates":"Esimerkkimalleja","exampleTemplatesHint":"- Napsauta ladataksesi","templateLoadHint":"Malli lataa pyynn\xf6n muodossa {format}. Muuta l\xe4hdemuotoa ladataksesi eri muodossa.","compatibilityTester":"Yhteensopivuuden testaaja","compatibilityReport":"Yhteensopivuusraportti","testBenchDescription":"Suorita ennalta m\xe4\xe4ritettyj\xe4 skenaarioita (Simple Chat, Tool Calling jne.) varmistaaksesi k\xe4\xe4nn\xf6ksen ja palveluntarjoajan yhteensopivuuden. Valitse l\xe4hdemuoto ja kohdetoimittaja ja suorita sitten kaikki testit n\xe4hd\xe4ksesi yhteensopivuusprosentti. K\xe4yt\xe4 t\xe4t\xe4 selvitt\xe4\xe4ksesi, mitk\xe4 ominaisuudet toimivat eri palveluntarjoajien v\xe4lill\xe4.","targetProvider":"Kohdetoimittaja","runAllTests":"Suorita kaikki testit","runTest":"Suorita testi","reRun":"Suorita uudelleen","running":"Juoksemassa...","passed":"l\xe4p\xe4issyt","failed":"ep\xe4onnistunut","passedIconLabel":"✅ L\xe4p\xe4isty","chunks":"paloina","scenarioSimpleChat":"Yksinkertainen chat","scenarioToolCalling":"Ty\xf6kalun kutsuminen","scenarioMultiTurn":"Monikierros","scenarioThinking":"Ajatteleminen","scenarioSystemPrompt":"J\xe4rjestelm\xe4kehote","scenarioStreaming":"Suoratoisto","templateNames":{"simple-chat":"Yksinkertainen chat","tool-calling":"Ty\xf6kalun kutsuminen","multi-turn":"Monikierros","thinking":"Ajatteleminen","system-prompt":"J\xe4rjestelm\xe4kehote","streaming":"Suoratoisto"},"templateDescriptions":{"simple-chat":"Perustekstiviesti","tool-calling":"Toiminnon/ty\xf6kalun kutsuminen","multi-turn":"Keskustelua historian kanssa","thinking":"Laajennettu ajattelu/p\xe4\xe4ttely","system-prompt":"Monimutkaiset j\xe4rjestelm\xe4ohjeet","streaming":"SSE-suoratoistopyynt\xf6"},"templatePayloads":{"simpleChat":{"system":"Olet avulias avustaja.","userGreeting":"Hei! Miten voit t\xe4n\xe4\xe4n?"},"toolCalling":{"userWeather":"Millainen s\xe4\xe4 on S\xe3o Paulossa?","toolDescription":"Hanki nykyisen sijainnin s\xe4\xe4","cityNameDescription":"Kaupungin nimi"},"multiTurn":{"system":"Olet koodausassistentti.","userInitial":"Kirjoita funktio taulukon lajittelemiseksi Pythonissa.","assistantExample":"T\xe4ss\xe4 on yksinkertainen lajittelutoiminto:\\n\\n``` python\\ndef sort_array(arr):\\n palautus lajiteltuna(arr)\\n```","userFollowUp":"J\xe4rjest\xe4 se nyt laskevaan j\xe4rjestykseen."},"thinking":{"question":"Mik\xe4 on 100 ensimm\xe4isen alkuluvun summa?"},"systemPrompt":{"systemInstruction":"Olet hajautettuihin j\xe4rjestelmiin erikoistunut vanhempi ohjelmistosuunnittelija. Vastaa kysymyksiin ytimekk\xe4\xe4sti k\xe4ytt\xe4m\xe4ll\xe4 alan parhaita k\xe4yt\xe4nt\xf6j\xe4. Anna aina koodiesimerkkej\xe4 tarvittaessa. Muotoile vastauksesi k\xe4ytt\xe4m\xe4ll\xe4 markdownia.","question":"Kuinka otan k\xe4ytt\xf6\xf6n katkaisijakuvion?"},"streaming":{"prompt":"Kerro minulle lyhyt tarina robotista, joka oppii maalaamaan."}},"openaiCompatibleLabel":"OpenAI-yhteensopiva","anthropicCompatibleLabel":"Antrooppinen yhteensopiva","noTemplateForFormat":"Ei mallia t\xe4lle muodolle","translationFailed":"K\xe4\xe4nn\xf6s ep\xe4onnistui: {error}","pipelineDebugger":"Pipeline Debugger","translationPipeline":"K\xe4\xe4nn\xf6sputki","pipelineVisualization":"Putkilinjan visualisointi","pipelineVisualizationHint":"L\xe4het\xe4 viesti n\xe4hd\xe4ksesi, kuinka pyynt\xf6si etenee tunnistuksen → k\xe4\xe4nn\xf6s → palveluntarjoajan puhelun kautta.","chatTesterDescription":"L\xe4het\xe4 viestej\xe4 tietyss\xe4 asiakasmuodossa ja tarkista k\xe4\xe4nn\xf6sputken jokainen vaihe.","chatTesterFlow":"Asiakaspyynt\xf6 → muodon tunnistus → OpenAI-v\xe4litaso → tarjoajan muoto → vastaus","clickStepToInspect":"Napsauta mit\xe4 tahansa vaihetta tarkistaaksesi tiedot siin\xe4 vaiheessa.","clientFormat":"Asiakasmuoto","provider":"Palveluntarjoaja","modelPlaceholder":"Valitse tai kirjoita mallin nimi...","sendMessageToSeePipeline":"L\xe4het\xe4 viesti n\xe4hd\xe4ksesi k\xe4\xe4nn\xf6sputken","chatMessageHintPrefix":"Viestisi muotoillaan muodossa a","chatMessageHintSuffix":"pyynt\xf6, k\xe4\xe4nnet\xe4\xe4n putken kautta ja l\xe4hetet\xe4\xe4n valitulle palveluntarjoajalle.","youWithFormat":"Sin\xe4 ({format})","assistant":"Assistant","typeMessage":"Kirjoita viesti...","send":"L\xe4het\xe4","clientRequest":"Asiakaspyynt\xf6","clientRequestDescription":"Pyynn\xf6n elin sellaisena kuin asiakkaasi sen l\xe4hett\xe4isi","formatDetected":"Muoto havaittu","formatDetectedDescription":"OmniRoute tunnistaa automaattisesti API-muodon pyynt\xf6rakenteesta","openaiIntermediate":"OpenAI Intermediate","openaiIntermediateDescription":"Kaikki muodot normalisoidaan ensin OpenAI-muotoon (yleinen silta)","providerFormat":"Tarjoajan muoto","providerFormatDescription":"OpenAI-muoto k\xe4\xe4nnet\xe4\xe4n palveluntarjoajan alkuper\xe4iseen muotoon","providerResponse":"Palveluntarjoajan vastaus","providerResponseRawDescription":"Raaka vastaus palveluntarjoajan API:lta","providerResponseSseDescription":"Raaka SSE-stream palveluntarjoajan sovellusliittym\xe4st\xe4","unexpectedError":"Tapahtui odottamaton virhe","error":"Virhe","errorMessage":"Virhe: {message}","requestFailed":"Pyynt\xf6 ep\xe4onnistui","noTextExtracted":"(Ei teksti\xe4 poimittu)","liveMonitorDescriptionPrefix":"N\xe4ytt\xe4\xe4 k\xe4\xe4nn\xf6stapahtumat, kun API-kutsut kulkevat OmniRouten kautta. Tapahtumat tulevat muistin puskurista (palautuu uudelleenk\xe4ynnistyksen yhteydess\xe4). K\xe4yt\xe4","liveMonitorDescriptionSuffix":"tai ulkoisia API-kutsuja tapahtumien luomiseksi."},"usage":{"title":"K\xe4ytt\xf6","loggerTab":"Kirjaaja","proxyTab":"V\xe4lityspalvelin","budgetManagement":"Budjetin hallinta","budgetSaved":"Budjettirajat tallennettu","budgetSaveFailed":"Budjetin s\xe4\xe4st\xe4minen ep\xe4onnistui","loadingBudgetData":"Ladataan budjettitietoja...","noApiKeysTitle":"Ei API-avaimia","noApiKeysDescription":"Lis\xe4\xe4 ensin API-avaimet budjettirajojen m\xe4\xe4ritt\xe4miseksi.","apiKey":"API-avain","todaysSpend":"P\xe4iv\xe4n kulutus","thisMonth":"T\xe4ss\xe4 kuussa","setLimits":"Aseta rajat","dailyLimitUsd":"P\xe4ivitt\xe4inen raja (USD)","monthlyLimitUsd":"Kuukausiraja (USD)","warningThresholdPercent":"Varoituskynnys (%)","dailyLimitPlaceholder":"esim. 5.00","monthlyLimitPlaceholder":"esim. 50.00","warningThresholdPlaceholder":"80","saveLimits":"Tallenna rajoitukset","budgetOk":"Budjetti OK – {remaining} j\xe4ljell\xe4","budgetExceeded":"Budjetti ylitetty – pyynn\xf6t voidaan est\xe4\xe4","totalRequests":"Pyynt\xf6j\xe4 yhteens\xe4","noDataYet":"Ei viel\xe4 dataa","latency":"Latenssi","latencyP50":"p50","latencyP95":"p95","latencyP99":"p99","promptCache":"Kehotusv\xe4limuisti","systemHealth":"J\xe4rjestelm\xe4n terveys","entries":"merkinn\xe4t","activeCount":"{count} aktiivinen","openCircuitBreakersDetected":"Katkaisijat havaittu","hitRate":"Osumaprosentti","hitsMisses":"Osumat / Miss","circuitBreakers":"Katkaisijat","lockedIPs":"Lukitut IP:t","lockoutsAutoRefreshHint":"Mallikohtaiset nopeusrajoitukset • Automaattinen p\xe4ivitys 10s","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} j\xe4ljell\xe4","howItWorks":"Miten se toimii","howItWorksSubtitle":"Opi kuinka arvioinnit vahvistavat LLM-vastauksesi","define":"M\xe4\xe4rit\xe4","defineStepDescription":"Luo testitapauksia, joissa on sy\xf6tt\xf6kehotteita ja odotettuja tulosehtoja k\xe4ytt\xe4m\xe4ll\xe4 strategioita, kuten sis\xe4lt\xe4\xe4, regex tai tarkka vastaavuus.","run":"Juokse","runStepDescription":"Suorita testitapauksia LLM-p\xe4\xe4tepisteit\xe4si vastaan OmniRouten kautta. Jokainen tapaus l\xe4hetet\xe4\xe4n todellisena API-pyynt\xf6n\xe4.","evaluate":"Arvioi","evaluateStepDescription":"Vastauksia verrataan odotettuihin kriteereihin. Katso kunkin tapauksen hyv\xe4ksynt\xe4/hylk\xe4ys viivemittareiden ja yksityiskohtaisen palautteen avulla.","evalSuites":"Arviointisviitit","evalSuitesHint":"Napsauta sarjaa tarkastellaksesi testitapauksia ja suorita sitten LLM-p\xe4\xe4tepisteiden arvioiminen","evalsLoading":"Ladataan eval-sviittej\xe4...","noEvalSuitesFound":"Eval Suitesta ei l\xf6ytynyt","noEvalSuitesDescription":"Eval-sarjat voidaan m\xe4\xe4ritt\xe4\xe4 API:n kautta tai koodilla. He testaavat mallin tuloksia odotettujen tulosten kanssa k\xe4ytt\xe4m\xe4ll\xe4 strategioita, kuten sis\xe4lt\xe4\xe4, regex, tarkka vastaavuus ja mukautetut funktiot.","columnCase":"Asia","columnStatus":"Tila","columnLatency":"Latenssi","columnDetails":"Yksityiskohdat","columnModel":"Malli","columnStrategy":"strategia","columnExpected":"Odotettu","statsSuites":"Sviitit","statsTestCases":"Testitapaukset","statsModels":"Mallit","statsCoverage":"Kattavuus","statsStrategiesCount":"{count} strategioita","evaluationStrategies":"Arviointistrategiat","modelsUnderTest":"Mallit testattavana","searchSuitesPlaceholder":"Etsi sviittej\xe4...","passSuffix":"pass","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"Juokse Eval","runningProgress":"K\xe4ynniss\xe4 {current}/{total}...","passRate":"l\xe4p\xe4isyaste","summaryBreakdown":"{passed} hyv\xe4ksytty \xb7 {failed} ep\xe4onnistui \xb7 {total} yhteens\xe4","passedIconLabel":"✅ L\xe4p\xe4isty","failedIconLabel":"❌ Ep\xe4onnistui","detailsContains":"Sis\xe4lt\xe4\xe4: \\"{term}\\"","detailsRegex":"Regex: {pattern}","detailsExpected":"Odotettu: \\"{expected}\\"","noResultsYet":"Ei tuloksia viel\xe4","testCasesCount":"Testitapaukset ({count})","noTestCasesDefined":"Testitapauksia ei ole m\xe4\xe4ritelty","runEvalHint":"Napsauta \\"Suorita Eval\\" suorittaaksesi kaikki tapaukset LLM-p\xe4\xe4tepisteellesi. Jokainen testi l\xe4hett\xe4\xe4 oikean pyynn\xf6n OmniRouten kautta.","notifyNoTestCases":"T\xe4lle sarjalle ei ole m\xe4\xe4ritetty testitapauksia","notifyAllCasesPassed":"Kaikki {total} tapausta ohitettu ✅","notifySomeCasesFailed":"{passed}/{total} hyv\xe4ksytty, {failed} ep\xe4onnistui","notifyEvalRunFailed":"Eval-juoksu ep\xe4onnistui","notifyEvalTitle":"Arvosana: {name}","modelEvals":"Mallin arvioinnit","evalsHeroDescription":"Testaa ja vahvista LLM-p\xe4\xe4tepisteesi suorittamalla ennalta m\xe4\xe4ritettyj\xe4 arviointipaketteja. Jokainen sarja sis\xe4lt\xe4\xe4 testitapauksia, jotka l\xe4hett\xe4v\xe4t todellisia kehotteita OmniRouten kautta ja vertaavat vastauksia odotettuihin kriteereihin – auttaen sinua havaitsemaan regressioita, vertailla malleja ja varmistamaan vastausten laadun eri tarjoajien v\xe4lill\xe4.","qualityValidation":"Laadun validointi","modelComparison":"Mallin vertailu","regressionDetection":"Regression havaitseminen","latencyBenchmarks":"Viiveen vertailuarvot","modelLockouts":"Mallin lukitukset","noLockouts":"T\xe4ll\xe4 hetkell\xe4 ei ole lukittuja malleja","activeSessions":"Aktiiviset istunnot","noSessions":"Ei aktiivisia istuntoja","sessionsHint":"Istunnot n\xe4kyv\xe4t v\xe4lityspalvelimen kautta kulkevien pyynt\xf6jen aikana","sessionsTrackedHint":"Seurataan sormenj\xe4lkien pyyt\xe4misell\xe4 • Automaattinen p\xe4ivitys 5s","session":"Istunto","age":"Ik\xe4","requests":"Pyynn\xf6t","connection":"Yhteys","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}s","durationMinutesShort":"{value}m","durationHoursShort":"{value}h","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"Palveluntarjoajan rajoitukset","noProviders":"Ei yhdistettyj\xe4 palveluntarjoajia","connectProvidersForQuota":"Muodosta yhteys palveluntarjoajiin OAuthin avulla seurataksesi API-kiinti\xf6rajoja ja k\xe4ytt\xf6\xe4.","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"(suodatettu kohteesta {count})","autoRefresh":"Automaattinen p\xe4ivitys","refreshAll":"P\xe4ivit\xe4 kaikki","loadingQuotas":"Ladataan...","account":"Tili","modelQuotas":"Mallikiinti\xf6t","lastUsed":"Viimeksi k\xe4ytetty","actions":"Toiminnot","refreshQuota":"P\xe4ivit\xe4 kiinti\xf6","today":"T\xe4n\xe4\xe4n","tomorrow":"Huomenna","dayTimeFormat":"{day}, {time}","inDuration":"kohteessa {duration}","notApplicable":"Ei k\xe4yt\xf6ss\xe4","rawPlanWithValue":"Raakasuunnitelma: {plan}","noPlanFromProvider":"Ei suunnitelmaa palveluntarjoajalta","noQuotaData":"Ei kiinti\xf6tietoja","noQuotaDataAvailable":"Kiinti\xf6tietoja ei ole saatavilla","noAccountsForTierFilter":"Tasosuodattimelle ei l\xf6ytynyt tilej\xe4","tierAll":"Kaikki","tierEnterprise":"Yritys","tierTeam":"Joukkue","tierBusiness":"Business","tierUltra":"Ultra","tierPro":"Pro","tierPlus":"Plus","tierFree":"Ilmainen","tierUnknown":"Tuntematon"},"modals":{"waitingAuth":"Odotetaan valtuutusta","verificationUrl":"Vahvistus-URL","yourCode":"Koodisi","remoteAccess":"Et\xe4k\xe4ytt\xf6:","connectedSuccess":"Yhdistetty onnistuneesti!","connectionFailed":"Yhteys ep\xe4onnistui","chooseAuthMethod":"Valitse todennustapasi:","awsBuilderId":"AWS Builder ID","awsIamIdentity":"AWS IAM Identity Center","googleAccount":"Google-tili","githubAccount":"GitHub-tili","importToken":"Tuo tunnus","pasteToken":"Liit\xe4 p\xe4ivitystunnus Kiro IDE:st\xe4.","awsRegion":"AWS-alue","autoDetecting":"Tunnistetaan automaattisesti...","readingFromCache":"Lukee AWS SSO -v\xe4limuistista","readingFromCursor":"Lukeminen Cursor IDE -tietokannasta","initializing":"Alustetaan...","pricingConfig":"Hinnoitteluasetukset","loadingPricing":"Ladataan hintatietoja...","pricingRatesFormat":"Hinnoitteluhinnastomuoto","noPricingData":"Hintatietoja ei ole saatavilla","noModelsFound":"Malleja ei l\xf6ytynyt"},"loggers":{"allProviders":"Kaikki palveluntarjoajat","allModels":"Kaikki mallit","allAccounts":"Kaikki tilit","allApiKeys":"Kaikki API-avaimet","allTypes":"Kaikki tyypit","allLevels":"Kaikki tasot","modelAZ":"Malli A-Z","modelZA":"Malli Z-A","loadingLogs":"Ladataan lokeja...","loadingProxyLogs":"Ladataan v\xe4lityspalvelimen lokeja...","noLogEntries":"Lokimerkint\xf6j\xe4 ei l\xf6ytynyt","noPayloadData":"T\xe4lle lokimerkinn\xe4lle ei ole saatavilla hy\xf6tykuormatietoja.","proxyEvent":"V\xe4lityspalvelintapahtuma","proxy":"V\xe4lityspalvelin","level":"Taso","directNative":"Suora (natiivi)","combo":"Yhdistelm\xe4","inputTokens":"Min\xe4:","outputTokens":"O:"},"stats":{"usageOverview":"K\xe4ytt\xf6katsaus","outputTokens":"Tulostustunnukset","totalCost":"Kokonaiskustannukset","usageByModel":"K\xe4ytt\xf6 mallin mukaan","usageByAccount":"K\xe4ytt\xf6 tilikohtaisesti","failedToLoad":"K\xe4ytt\xf6tilastojen lataaminen ep\xe4onnistui.","tokenHealth":"Token Health","totalOAuth":"Yhteens\xe4 OAuth","healthy":"Terve","warning":"Varoitus","errored":"Virheellinen","lastCheck":"Viimeinen tarkistus","noData":"Ei dataa","share":"Jaa","unableToLoad":"J\xe4rjestelm\xe4n mittareita ei voi ladata","product":"Tuote","resources":"Resurssit","company":"Yritys"},"auth":{"welcome":"Tervetuloa","signIn":"Kirjaudu sis\xe4\xe4n","enterPassword":"Anna salasanasi jatkaaksesi","password":"Salasana","unifiedProxy":"Unified AI API Proxy","unifiedAiApiProxy":"Unified AI API Proxy","unifiedAiApiProxyDesc":"Reitit\xe4 pyynn\xf6t useille teko\xe4lypalveluntarjoajille yhden p\xe4\xe4tepisteen kautta. Kuormituksen tasapainotus, vikasieto ja k\xe4yt\xf6n seuranta sis\xe4\xe4nrakennettu.","passwordNotEnabled":"Salasanasuojaus ei ole k\xe4yt\xf6ss\xe4","loading":"Ladataan...","invalidPassword":"Virheellinen salasana","errorOccurredRetry":"Tapahtui virhe. Yrit\xe4 uudelleen.","configureInstance":"M\xe4\xe4ritet\xe4\xe4n OmniRoute-esiintym\xe4si","runOnboardingWizard":"M\xe4\xe4rit\xe4 salasanasi ja yhdist\xe4 ensimm\xe4inen teko\xe4lypalveluntarjoajasi suorittamalla ohjattu k\xe4ytt\xf6\xf6nottotoiminto.","startOnboarding":"Aloita perehtyminen","secureYourInstance":"Suojaa tapauksesi","setPasswordDescription":"Aseta salasana suojataksesi kojelautaasi ja suojataksesi API-p\xe4\xe4tepisteesi luvattomalta k\xe4yt\xf6lt\xe4.","configurePassword":"M\xe4\xe4rit\xe4 salasana","continue":"Jatka","windowWillClose":"T\xe4m\xe4 ikkuna sulkeutuu automaattisesti...","closeTabNow":"Voit sulkea t\xe4m\xe4n v\xe4lilehden nyt.","copyUrlManual":"Kopioi URL-osoite osoitepalkista ja liit\xe4 se sovellukseen.","accessDeniedDescription":"Sinulla ei ole lupaa k\xe4ytt\xe4\xe4 t\xe4t\xe4 resurssia. Tarkista API-avaimesi tai ota yhteytt\xe4 j\xe4rjestelm\xe4nvalvojaan.","goToDashboard":"Siirry Dashboardiin","featureMultiProviderTitle":"Multi-Provider","featureMultiProviderDesc":"OpenAI, Anthropic, Google ja paljon muuta","featureLoadBalancingTitle":"Kuorman tasapainotus","featureLoadBalancingDesc":"Jaa pyynn\xf6t \xe4lykk\xe4\xe4sti","featureUsageTrackingTitle":"K\xe4yt\xf6n seuranta","featureUsageTrackingDesc":"Valvo kustannuksia ja tokeneja","resetPassword":"Palauta salasana","resetDescription":"Valitse menetelm\xe4 hallintapaneelin k\xe4ytt\xf6oikeuden palauttamiseksi","stopServer":"Pys\xe4yt\xe4 OmniRoute-palvelin","processing":"K\xe4sitell\xe4\xe4n...","pleaseWait":"Odota, kun saamme valtuutuksen valmiiksi.","authSuccess":"Valtuutus onnistui!","copyUrl":"Kopioi t\xe4m\xe4 URL-osoite","accessDenied":"P\xe4\xe4sy kielletty","methodCliTitle":"Tapa 1: CLI-nollaus","methodCliDescription":"Suorita seuraava komento palvelimella, jossa OmniRoute on k\xe4ynniss\xe4:","methodCliHint":"T\xe4m\xe4 kehottaa sinua asettamaan uuden salasanan. Palvelin on ensin pys\xe4ytett\xe4v\xe4.","methodManualTitle":"Tapa 2: Manuaalinen nollaus","methodManualDescription":"Poista salasana tietokannasta ja aseta uusi salasana k\xe4ynnistyksen yhteydess\xe4:","setPasswordInYour":"Aseta uusi salasana omaan","fileLabelSuffix":"tiedosto:","newPasswordPlaceholder":"your_new_password","deleteSettingsFile":"Poista","orRemovePasswordHashField":"tai poista salasanaHash-kentt\xe4","restartServerWithNewPassword":"K\xe4ynnist\xe4 palvelin uudelleen - se k\xe4ytt\xe4\xe4 uutta salasanaa","backToLogin":"Takaisin kirjautumiseen","forgotPassword":"Unohditko salasanan?"},"landing":{"brandName":"OmniRoute","navigateHome":"Navigoi kotiin","toggleMenu":"Vaihda valikkoa","featuresLink":"Ominaisuudet","docsLink":"Asiakirjat","github":"GitHub","versionLive":"v1.0 on nyt julkaistu","oneEndpoint":"Yksi p\xe4\xe4tepiste","allProviders":"Kaikki AI-palveluntarjoajat","heroDescription":"AI-p\xe4\xe4tepisteen v\xe4lityspalvelin web-hallintapaneelilla – CLIProxyAPI:n JavaScript-portti. Toimii saumattomasti Claude Coden, OpenAI Codexin, Clinen, RooCoden ja muiden CLI-ty\xf6kalujen kanssa.","getStarted":"Aloita","viewOnGithub":"Katso GitHubissa","powerfulFeatures":"Tehokkaat ominaisuudet","featuresSubtitle":"Kaikki mit\xe4 tarvitset AI-infrastruktuurin hallintaan yhdess\xe4 paikassa, mittakaavassa rakennettu.","featureUnifiedEndpointTitle":"Yhten\xe4inen p\xe4\xe4tepiste","featureUnifiedEndpointDesc":"P\xe4\xe4set kaikkiin palveluntarjoajiin yhden standardin API-URL-osoitteen kautta.","featureEasySetupTitle":"Helppo asennus","featureEasySetupDesc":"P\xe4\xe4set k\xe4yntiin muutamassa minuutissa npx-komennolla.","featureModelFallbackTitle":"Mallin takaisku","featureModelFallbackDesc":"Vaihda automaattisesti palveluntarjoajaa vikatilanteen tai korkean viiveen sattuessa.","featureUsageTrackingTitle":"K\xe4yt\xf6n seuranta","featureUsageTrackingDesc":"Yksityiskohtainen analytiikka ja kustannusseuranta kaikissa malleissa.","featureOAuthApiKeysTitle":"OAuth- ja API-avaimet","featureOAuthApiKeysDesc":"Hallitse tunnistetietoja turvallisesti yhdess\xe4 holvissa.","featureCloudSyncTitle":"Cloud Sync","featureCloudSyncDesc":"Synkronoi m\xe4\xe4ritykset eri laitteiden v\xe4lill\xe4 v\xe4litt\xf6m\xe4sti.","featureCliSupportTitle":"CLI-tuki","featureCliSupportDesc":"Toimii Claude Coden, Codexin, Clinen, Cursorin ja muiden kanssa.","featureDashboardTitle":"Kojelauta","featureDashboardDesc":"Visuaalinen kojelauta reaaliaikaista liikenneanalyysi\xe4 varten.","howItWorks":"Kuinka OmniRoute toimii","howItWorksDescription":"Tiedot kulkevat saumattomasti sovelluksestasi \xe4lykk\xe4\xe4n reitityskerroksen kautta ty\xf6si parhaalle toimittajalle.","howItWorksStep1Title":"1. CLI ja SDK:t","howItWorksStep1Description":"Pyynt\xf6si alkavat suosikkity\xf6kaluistasi tai yhdistetyst\xe4 SDK:sta. Vaihda vain perus-URL-osoite.","howItWorksStep2Title":"2. OmniRoute Hub","howItWorksStep2Description":"Moottorimme analysoi kehotteen, tarkistaa palveluntarjoajan kunnon ja reitit pienimm\xe4n viiveen tai kustannusten varalta.","howItWorksStep3Title":"3. AI-palveluntarjoajat","howItWorksStep3Description":"OpenAI, Anthropic, Gemini tai muut t\xe4ytt\xe4v\xe4t pyynn\xf6n v\xe4litt\xf6m\xe4sti.","getStartedIn30Seconds":"Aloita 30 sekunnissa","getStartedDescription":"Asenna OmniRoute, m\xe4\xe4rit\xe4 palveluntarjoajasi web-hallintapaneelin kautta ja aloita AI-pyynt\xf6jen reititt\xe4minen.","installOmniRoute":"Asenna OmniRoute","installStepDescription":"Suorita npx-komento k\xe4ynnist\xe4\xe4ksesi palvelimen v\xe4litt\xf6m\xe4sti","openDashboard":"Avaa Dashboard","openDashboardStepDescription":"M\xe4\xe4rit\xe4 palveluntarjoajat ja API-avaimet verkkok\xe4ytt\xf6liittym\xe4n kautta","routeRequests":"Reittipyynn\xf6t","routeRequestsStepDescription":"Osoita CLI-ty\xf6kalusi osoitteeseen {endpoint}","terminal":"terminaali","copy":"Kopioi","copied":"✓ Kopioitu","startingOmniRoute":"OmniRoute aloitetaan...","serverRunningOnLabel":"Palvelin k\xe4ynniss\xe4","dashboardLabel":"Kojelauta","readyToRoute":"Valmiina reittiin! ✓","configureProvidersNote":"\uD83D\uDCDD M\xe4\xe4rit\xe4 palveluntarjoajat kojelaudassa tai k\xe4yt\xe4 ymp\xe4rist\xf6muuttujia","dataLocation":"Tietojen sijainti:","dataLocationMacLinux":" macOS/Linux:","dataLocationWindows":" Windows:","product":"Tuote","dashboardLink":"Kojelauta","changelog":"Muutosloki","resources":"Resurssit","documentation":"Dokumentaatio","npm":"NPM","legal":"Laillinen","mitLicense":"MIT-lisenssi","footerTagline":"Teko\xe4lyn sukupolven yhten\xe4inen p\xe4\xe4tepiste. Yhdist\xe4, reitit\xe4 ja hallitse teko\xe4lypalveluntarjoajiasi helposti.","copyright":"\xa9 {year} OmniRoute. Kaikki oikeudet pid\xe4tet\xe4\xe4n.","flowToolClaudeCode":"Claude Code","flowToolOpenAICodex":"OpenAI Codex","flowToolCline":"Cline","flowToolCursor":"Kursori","flowProviderOpenAI":"OpenAI","flowProviderAnthropic":"Antrooppinen","flowProviderGemini":"Kaksoset","flowProviderGithubCopilot":"GitHub Copilot","interactiveDiagram":"Interaktiivinen kaavio n\xe4kyy ty\xf6p\xf6yd\xe4ll\xe4","ctaTitle":"Oletko valmis yksinkertaistamaan teko\xe4ly-infrastruktuuriasi?","ctaDescription":"Liity kehitt\xe4jien joukkoon, jotka virtaviivaistavat teko\xe4lyintegraatiotaan OmniRouten avulla. Avoin l\xe4hdekoodi ja ilmainen aloittaa.","startFree":"Aloita ilmaiseksi","readDocumentation":"Lue dokumentaatio"},"docs":{"title":"Dokumentaatio","quickStart":"Pika-aloitus","features":"Ominaisuudet","supportedProviders":"Tuetut palveluntarjoajat","supportedProvidersToc":"Palveluntarjoajat","commonUseCases":"Yleiset k\xe4ytt\xf6tapaukset","clientCompatibility":"Asiakasyhteensopivuus","apiReference":"API-viite","method":"menetelm\xe4","path":"Polku","notes":"Huomautuksia","modelPrefixes":"Mallin etuliitteet","prefix":"Etuliite","troubleshooting":"Vianetsint\xe4","supportsChat":"Tukee sek\xe4 chat- ett\xe4 vastausp\xe4\xe4tepisteit\xe4.","oauthAutoRefresh":"OAuth-yhteys automaattisella tunnuksen p\xe4ivityksell\xe4.","fullStreaming":"T\xe4ysi suoratoistotuki kaikille malleille.","docsLabel":"Asiakirjat","docsHeroDescription":"Teko\xe4lyyhdysk\xe4yt\xe4v\xe4 usean palveluntarjoajan LLM:ille. Yksi p\xe4\xe4tepiste OpenAI:lle, Anthropicille, Geminille, GitHub Copilotille, Claude Codelle, Cursorille ja yli 20 muulle palveluntarjoajalle.","openDashboard":"Avaa Dashboard","endpointPage":"P\xe4\xe4tepistesivu","github":"GitHub","reportIssue":"Ilmoita ongelmasta","onThisPage":"T\xe4ll\xe4 sivulla","documentationVersion":"Dokumentaatio - v{version}","quickStartStep1Title":"1. Asenna ja suorita","quickStartStep1Prefix":"Juokse","quickStartStep1Middle":"tai kloonaa GitHubista ja aja","quickStartStep2Title":"2. Luo API-avain","quickStartStep2Text":"Siirry kohtaan P\xe4\xe4tepiste -> Rekister\xf6idyt avaimet. Luo yksi avain ymp\xe4rist\xf6\xe4 kohden.","quickStartStep3Title":"3. Yhdist\xe4 palveluntarjoajat","quickStartStep3Text":"Lis\xe4\xe4 palveluntarjoajan tilej\xe4 OAuth-kirjautumisen, API-avaimen tai vapaan tason automaattisen yhteyden avulla.","quickStartStep4Title":"4. Aseta asiakaskannan URL-osoite","quickStartStep4Prefix":"Osoita IDE- tai API-asiakkaasi","quickStartStep4Suffix":"K\xe4yt\xe4 esimerkiksi palveluntarjoajan etuliitett\xe4","featureRoutingTitle":"Usean palveluntarjoajan reititys","featureRoutingText":"Reitit\xe4 pyynn\xf6t yli 30 teko\xe4lypalveluntarjoajalle yhden OpenAI-yhteensopivan p\xe4\xe4tepisteen kautta. Tukee chat-, vastaus-, \xe4\xe4ni- ja kuvasovellusliittymi\xe4.","featureCombosTitle":"Yhdistelm\xe4t ja tasapainotus","featureCombosText":"Luo mallikomboja varaketjuilla ja tasapainotusstrategioilla: round-robin, prioriteetti, satunnainen, v\xe4hiten k\xe4ytetty ja kustannusoptimoitu.","featureUsageTitle":"K\xe4yt\xf6n ja kustannusten seuranta","featureUsageText":"Reaaliaikainen tunnuksen laskenta, kustannuslaskenta palveluntarjoaja-/mallikohtaisesti ja yksityiskohtainen k\xe4ytt\xf6erittely API-avaimen ja tilin mukaan.","featureAnalyticsTitle":"Analyticsin hallintapaneeli","featureAnalyticsText":"Visuaalinen analytiikka, jossa on kaavioita pyynn\xf6ist\xe4, tunnuksista, virheist\xe4, viiveest\xe4, kustannuksista ja mallin suosiosta ajan mittaan.","featureHealthTitle":"Terveyden seuranta","featureHealthText":"Live-terveystarkastukset, palveluntarjoajan tila, katkaisijatilat ja automaattinen nopeusrajan tunnistus eksponentiaalisella per\xe4\xe4ntymisell\xe4.","featureCliTitle":"CLI-ty\xf6kalut","featureCliText":"Hallitse IDE-m\xe4\xe4rityksi\xe4, vie/tuo varmuuskopioita, etsi koodeksiprofiileja ja m\xe4\xe4rit\xe4 asetuksia kojelaudalta.","featureSecurityTitle":"Turvallisuus ja k\xe4yt\xe4nn\xf6t","featureSecurityText":"API-avaimen todennus, IP-suodatus, pikasy\xf6tt\xf6suoja, toimialueen k\xe4yt\xe4nn\xf6t, istunnon hallinta ja tarkastusloki.","featureCloudSyncTitle":"Cloud Sync","featureCloudSyncText":"Synkronoi kokoonpanosi Cloudflare Workersin kanssa, jotta voit k\xe4ytt\xe4\xe4 et\xe4k\xe4ytt\xf6\xe4 salatuilla tunnistetiedoilla ja automaattisella virheensiirrolla.","providersAcrossConnectionTypes":"{count} palveluntarjoajia kolmessa yhteystyypiss\xe4.","manageProviders":"Hallinnoi palveluntarjoajia","providersCount":"{count} palveluntarjoajat","providerTypeFree":"Ilmainen taso","providerTypeOAuth":"OAuth","providerTypeApiKey":"API-avain","useCaseSingleEndpointTitle":"Yksi p\xe4\xe4tepiste useille palveluntarjoajille","useCaseSingleEndpointText":"Osoita asiakkaat yhteen perus-URL-osoitteeseen ja reitit\xe4 mallien etuliite (esimerkiksi: gh/, cc/, kr/, openai/).","useCaseFallbackTitle":"Vara- ja mallinvaihto komboilla","useCaseFallbackText":"Luo yhdistelm\xe4malleja Dashboardissa ja pid\xe4 asiakkaan kokoonpano vakaana, kun toimittajat vaihtuvat sis\xe4isesti.","useCaseUsageVisibilityTitle":"K\xe4ytt\xf6, hinta ja virheenkorjauksen n\xe4kyvyys","useCaseUsageVisibilityText":"Seuraa tunnuksia ja kustannuksia palveluntarjoajan, tilin ja API-avaimen mukaan K\xe4ytt\xf6- ja Analytics-v\xe4lilehdill\xe4.","clientCherryStudioTitle":"Cherry Studio","baseUrlLabel":"Perus-URL-osoite","chatEndpointLabel":"Keskustelun p\xe4\xe4tepiste","modelRecommendationLabel":"Mallisuositus: selke\xe4 etuliite","clientCodexTitle":"Codex / GitHub Copilot -mallit","clientCodexBullet1":"K\xe4yt\xe4 mallitunnuksia kanssa","clientCodexBullet2":"Codex-perheen mallit reititt\xe4v\xe4t automaattisesti kohteeseen","clientCodexBullet3":"Ei-Codex-mallit jatkavat toimintaansa","clientCursorTitle":"Kohdistin IDE","clientCursorBullet1":"K\xe4yt\xe4","clientCursorBullet1Suffix":"etuliite kohdistinmalleille.","clientCursorBullet2":"OAuth-yhteys - kirjaudu sis\xe4\xe4n Palveluntarjoajat-sivulta.","clientClaudeTitle":"Claude Code / Antigravitaatio","clientClaudeBullet1Prefix":"K\xe4yt\xe4","clientClaudeBullet1Middle":"(Claude) tai","clientClaudeBullet1Suffix":"(Antigravity) etuliite.","endpointChatNote":"OpenAI-yhteensopiva chat-p\xe4\xe4tepiste (oletus).","endpointResponsesNote":"Responses API-p\xe4\xe4tepiste (Codex, o-sarja).","endpointModelsNote":"Malliluettelo kaikille liitetyille palveluntarjoajille.","endpointAudioNote":"\xc4\xe4nen transkriptio (Deepgram, AssemblyAI).","endpointImagesNote":"Kuvan luominen (NanoBanana).","endpointRewriteChatNote":"Uudelleenkirjoitusapuohjelma asiakkaille ilman /v1.","endpointRewriteResponsesNote":"Uudelleenkirjoitusapuohjelma vastauksille ilman /v1.","endpointRewriteModelsNote":"Uudelleenkirjoitusapuohjelma mallin etsinn\xe4ss\xe4 ilman /v1:t\xe4.","modelPrefixesDescriptionStart":"K\xe4yt\xe4 toimittajan etuliitett\xe4 ennen mallin nime\xe4 reititt\xe4\xe4ksesi tietylle toimittajalle. Esimerkki:","modelPrefixesDescriptionEnd":"reitit GitHub Copilotiin.","provider":"Palveluntarjoaja","type":"Kirjoita","troubleshootingModelRouting":"Jos asiakas ep\xe4onnistuu mallin reitityksess\xe4, k\xe4yt\xe4 nimenomaista tarjoaja/malli (esimerkiksi: gh/gpt-5.1-codex).","troubleshootingAmbiguousModels":"Jos saat ep\xe4selvi\xe4 mallivirheit\xe4, valitse toimittajan etuliite paljaan mallitunnuksen sijaan.","troubleshootingCodexFamily":"S\xe4ilyt\xe4 GitHub Codex -perheen mallien mallina muodossa gh/<codex-model>; reititin valitsee / vastaa automaattisesti.","troubleshootingTestConnection":"K\xe4yt\xe4 Dashboard > Providers > Test Connection ennen testaamista IDE:ist\xe4 tai ulkoisista asiakkaista.","troubleshootingCircuitBreaker":"Jos palveluntarjoaja n\xe4ytt\xe4\xe4 katkaisijan auki, odota j\xe4\xe4htymist\xe4 tai katso lis\xe4tietoja Terveys-sivulta.","troubleshootingOAuth":"OAuth-palveluntarjoajat todenna uudelleen, jos tunnukset vanhenevat. Tarkista palveluntarjoajan kortin tilailmaisin."},"legal":{"privacyPolicy":"Tietosuojak\xe4yt\xe4nt\xf6","termsOfService":"Palveluehdot","providerConfigurations":"Palveluntarjoajan m\xe4\xe4ritykset","apiKeys":"API-avaimet","usageLogs":"K\xe4ytt\xf6lokit","applicationSettings":"Sovellusasetukset","viewExportAnalytics":"Tarkastele ja vie k\xe4ytt\xf6analytiikkaa","clearHistory":"Tyhjenn\xe4 k\xe4ytt\xf6historia milloin tahansa","configureRetention":"M\xe4\xe4rit\xe4 lokin s\xe4ilytysk\xe4yt\xe4nn\xf6t","backupRestore":"Varmuuskopioi ja palauta tietokanta","privacyMetadataTitle":"Tietosuojak\xe4yt\xe4nt\xf6 | OmniRoute","privacyMetadataDescription":"OmniRoute AI API -v\xe4lityspalvelimen reitittimen tietosuojak\xe4yt\xe4nt\xf6.","termsMetadataTitle":"Palveluehdot | OmniRoute","termsMetadataDescription":"OmniRoute AI API -v\xe4lityspalvelimen reitittimen k\xe4ytt\xf6ehdot.","backToHome":"Takaisin kotiin","lastUpdated":"Viimeksi p\xe4ivitetty: {date}","policyLastUpdatedDate":"13. helmikuuta 2026","listSeparator":"-","questionsVisit":"Kysymyksi\xe4? Vieraile meill\xe4","githubRepository":"GitHub-arkisto","privacySection1Title":"1. Local-First Architecture","privacySection1Text":"OmniRoute on suunniteltu paikalliseksi sovellukseksi. Kaikki tietojen k\xe4sittely ja tallennus tapahtuu kokonaan koneessasi. Ei ole keskitetty\xe4 palvelinta, joka ker\xe4\xe4 tietojasi.","privacySection2Title":"2. Tallentamamme tiedot","privacyDataStoredIn":"Seuraavat tiedot on tallennettu paikallisesti","privacyDataProviderConfigurationsDesc":"yhteyden URL-osoitteet, palveluntarjoajan tyypit ja prioriteettiasetukset","privacyDataApiKeysDesc":"salattu ja tallennettu paikallisesti AI-palveluntarjoajien todennusta varten","privacyDataUsageLogsDesc":"pyynt\xf6jen m\xe4\xe4r\xe4t, tunnuksen k\xe4ytt\xf6, mallien nimet, aikaleimat ja vastausajat","privacyDataApplicationSettingsDesc":"teemaasetukset, reititysstrategia ja yhdistelm\xe4kokoonpanot","privacySection3Title":"3. Ei telemetriaa","privacySection3Text":"OmniRoute ei ker\xe4\xe4 telemetria-, analytiikka- tai virheraportteja. Tietoja ei l\xe4hetet\xe4 meille tai millek\xe4\xe4n kolmannelle osapuolelle. K\xe4ytt\xf6mallisi, API-kutsusi ja kokoonpanosi pysyv\xe4t t\xe4ysin yksityisin\xe4.","privacySection4Title":"4. Kolmannen osapuolen teko\xe4lypalveluntarjoajat","privacySection4Text":"Kun soitat API-kutsuja OmniRouten kautta, pyynt\xf6si v\xe4litet\xe4\xe4n m\xe4\xe4ritt\xe4millesi teko\xe4lypalveluntarjoajille (esimerkiksi OpenAI, Anthropic, Google). N\xe4ill\xe4 palveluntarjoajilla on omat tietosuojak\xe4yt\xe4nt\xf6ns\xe4, jotka s\xe4\xe4telev\xe4t, kuinka he k\xe4sittelev\xe4t tietojasi. Tarkista:","privacyOpenAiPolicy":"OpenAI:n tietosuojak\xe4yt\xe4nt\xf6","privacyAnthropicPolicy":"Antrooppinen tietosuojak\xe4yt\xe4nt\xf6","privacyGooglePolicy":"Googlen tietosuojak\xe4yt\xe4nt\xf6","privacySection5Title":"5. Cloud Sync (valinnainen)","privacySection5Text":"Jos otat valinnaisen pilvisynkronointiominaisuuden k\xe4ytt\xf6\xf6n, palveluntarjoajan m\xe4\xe4ritykset ja API-avaimet voidaan l\xe4hett\xe4\xe4 m\xe4\xe4ritettyyn pilvip\xe4\xe4tepisteeseen. T\xe4m\xe4 ominaisuus on oletuksena pois k\xe4yt\xf6st\xe4 ja vaatii nimenomaisen osallistumisen.","privacySection6Title":"6. Kirjautuminen","privacyLoggingIntro":"Pyynt\xf6lokit voidaan m\xe4\xe4ritt\xe4\xe4 kojelaudan asetuksista. Voit:","privacySection7Title":"7. Sinun oikeutesi","privacySection7TextStart":"Koska kaikki tiedot tallennetaan paikallisesti, sinulla on t\xe4ysi hallinta. Voit poistaa tietosi milloin tahansa poistamalla","privacySection7TextEnd":"hakemistosta tai k\xe4ytt\xe4m\xe4ll\xe4 tietokannan varmuuskopiointi- ja palautustoimintoja kojelaudassa.","termsSection1Title":"1. Yleiskatsaus","termsSection1Text":"OmniRoute on paikallinen ensimm\xe4inen AI API -v\xe4lityspalvelin, joka toimii kokonaan koneessasi. Se reititt\xe4\xe4 pyynn\xf6t useille teko\xe4lypalveluntarjoajille kuormituksen tasapainottamisen, vikasietoisuuden ja k\xe4yt\xf6n seurannan avulla.","termsSection2Title":"2. K\xe4ytt\xe4j\xe4n velvollisuudet","termsResponsibilityApiKeys":"Olet yksin vastuussa omien API-avainten ja valtuustietojen hallinnasta kolmannen osapuolen AI-palveluntarjoajille (OpenAI, Anthropic, Google jne.).","termsResponsibilityCompliance":"Sinun on noudatettava jokaisen teko\xe4lyn palveluntarjoajan, jonka API:ta k\xe4yt\xe4t OmniRouten kautta, k\xe4ytt\xf6ehtoja.","termsResponsibilitySecurity":"Olet vastuussa paikallisen OmniRoute-asennuksesi turvallisuudesta, mukaan lukien salasanan asettamisesta ja verkkoon p\xe4\xe4syn rajoittamisesta.","termsSection3Title":"3. Kuinka se toimii","termsSection3Text":"OmniRoute toimii v\xe4litt\xe4j\xe4n\xe4. OmniRouteen l\xe4hetetyt API-kutsut k\xe4\xe4nnet\xe4\xe4n ja v\xe4litet\xe4\xe4n m\xe4\xe4ritetyille teko\xe4lypalveluntarjoajille. OmniRoute ei muuta pyynt\xf6jesi tai vastaustesi sis\xe4lt\xf6\xe4 tarvittavan protokollan k\xe4\xe4nn\xf6ksen lis\xe4ksi.","termsSection4Title":"4. Tietojen k\xe4sittely","termsDataStoredLocally":"Kaikki tiedot tallennetaan paikallisesti koneellesi SQLite-tietokantaan.","termsNoTransmission":"OmniRoute ei l\xe4het\xe4 mit\xe4\xe4n tietoja ulkoisille palvelimille, ellet ota pilvisynkronointiominaisuuksia erikseen k\xe4ytt\xf6\xf6n.","termsDataLocationText":"K\xe4ytt\xf6lokit, API-avaimet ja m\xe4\xe4ritykset tallennetaan","termsSection5Title":"5. Vastuuvapauslauseke","termsSection5Text":"OmniRoute toimitetaan \\"sellaisenaan\\" ilman mink\xe4\xe4nlaista takuuta. Emme ole vastuussa kustannuksista, jotka aiheutuvat API:n k\xe4yt\xf6st\xe4, palveluh\xe4iri\xf6ist\xe4 tai tietojen katoamisesta. Pid\xe4 aina varmuuskopiot asetuksistasi.","termsSection6Title":"6. Avoin l\xe4hdekoodi","termsSection6Text":"OmniRoute on avoimen l\xe4hdekoodin ohjelmisto. Voit vapaasti tarkastaa, muokata ja jakaa sit\xe4 sen lisenssiehtojen mukaisesti."}}')}};