omniroute 3.3.6 → 3.3.7

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 (156) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/build-manifest.json +2 -2
  3. package/app/.next/prerender-manifest.json +3 -3
  4. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  5. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/audit/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/cache/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/_global-error.html +2 -2
  42. package/app/.next/server/app/_global-error.rsc +1 -1
  43. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  44. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  45. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  46. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  47. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  48. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/api/system/version/route.js.nft.json +1 -1
  50. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  62. package/app/.next/server/chunks/[root-of-the-server]__46e00e59._.js +1 -1
  63. package/app/.next/server/chunks/[root-of-the-server]__6e52619e._.js +1 -1
  64. package/app/.next/server/chunks/[root-of-the-server]__7ace0fcd._.js +1 -1
  65. package/app/.next/server/chunks/[root-of-the-server]__950558b8._.js +1 -1
  66. package/app/.next/server/chunks/[root-of-the-server]__9698d25e._.js +1 -1
  67. package/app/.next/server/chunks/[root-of-the-server]__a32d3818._.js +1 -1
  68. package/app/.next/server/chunks/[root-of-the-server]__bc251fbe._.js +1 -1
  69. package/app/.next/server/chunks/[root-of-the-server]__d5a064d5._.js +1 -1
  70. package/app/.next/server/chunks/_05c48915._.js +1 -1
  71. package/app/.next/server/chunks/_06515a8a._.js +1 -1
  72. package/app/.next/server/chunks/_2115d8de._.js +1 -1
  73. package/app/.next/server/chunks/_3ac953eb._.js +1 -1
  74. package/app/.next/server/chunks/_4b8fd853._.js +1 -1
  75. package/app/.next/server/chunks/_68683848._.js +1 -1
  76. package/app/.next/server/chunks/_ee9b677b._.js +1 -1
  77. package/app/.next/server/chunks/ssr/[root-of-the-server]__9ef96d20._.js +1 -1
  78. package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
  79. package/app/.next/server/chunks/ssr/src_i18n_messages_ar_json_e1d5145b._.js +1 -1
  80. package/app/.next/server/chunks/ssr/src_i18n_messages_bg_json_34495a0f._.js +1 -1
  81. package/app/.next/server/chunks/ssr/src_i18n_messages_cs_json_db6f9ebc._.js +1 -1
  82. package/app/.next/server/chunks/ssr/src_i18n_messages_da_json_7500ed02._.js +1 -1
  83. package/app/.next/server/chunks/ssr/src_i18n_messages_de_json_b2a40318._.js +1 -1
  84. package/app/.next/server/chunks/ssr/src_i18n_messages_es_json_82775c4a._.js +1 -1
  85. package/app/.next/server/chunks/ssr/src_i18n_messages_fi_json_dcc6745e._.js +1 -1
  86. package/app/.next/server/chunks/ssr/src_i18n_messages_fr_json_fe904570._.js +1 -1
  87. package/app/.next/server/chunks/ssr/src_i18n_messages_he_json_3e3c1e1b._.js +1 -1
  88. package/app/.next/server/chunks/ssr/src_i18n_messages_hi_json_83a0b9e5._.js +1 -1
  89. package/app/.next/server/chunks/ssr/src_i18n_messages_hu_json_651e00d3._.js +1 -1
  90. package/app/.next/server/chunks/ssr/src_i18n_messages_id_json_725d4a34._.js +1 -1
  91. package/app/.next/server/chunks/ssr/src_i18n_messages_in_json_2d7cd177._.js +1 -1
  92. package/app/.next/server/chunks/ssr/src_i18n_messages_it_json_e23882ae._.js +1 -1
  93. package/app/.next/server/chunks/ssr/src_i18n_messages_ja_json_fc6af4d8._.js +1 -1
  94. package/app/.next/server/chunks/ssr/src_i18n_messages_ko_json_0ffdbdc6._.js +1 -1
  95. package/app/.next/server/chunks/ssr/src_i18n_messages_ms_json_610df819._.js +1 -1
  96. package/app/.next/server/chunks/ssr/src_i18n_messages_nl_json_55ad1507._.js +1 -1
  97. package/app/.next/server/chunks/ssr/src_i18n_messages_no_json_9f484a8c._.js +1 -1
  98. package/app/.next/server/chunks/ssr/src_i18n_messages_phi_json_871ece45._.js +1 -1
  99. package/app/.next/server/chunks/ssr/src_i18n_messages_pl_json_79d0be4b._.js +1 -1
  100. package/app/.next/server/chunks/ssr/src_i18n_messages_pt-BR_json_e7b9e8db._.js +1 -1
  101. package/app/.next/server/chunks/ssr/src_i18n_messages_pt_json_2fc13a82._.js +1 -1
  102. package/app/.next/server/chunks/ssr/src_i18n_messages_ro_json_d1a5f5ee._.js +1 -1
  103. package/app/.next/server/chunks/ssr/src_i18n_messages_ru_json_9d7a9dfe._.js +1 -1
  104. package/app/.next/server/chunks/ssr/src_i18n_messages_sk_json_1c5bff4a._.js +1 -1
  105. package/app/.next/server/chunks/ssr/src_i18n_messages_sv_json_e8ae9f28._.js +1 -1
  106. package/app/.next/server/chunks/ssr/src_i18n_messages_th_json_6ed546bd._.js +1 -1
  107. package/app/.next/server/chunks/ssr/src_i18n_messages_tr_json_c8d78b01._.js +1 -1
  108. package/app/.next/server/chunks/ssr/src_i18n_messages_uk-UA_json_c72cdf08._.js +1 -1
  109. package/app/.next/server/chunks/ssr/src_i18n_messages_vi_json_03ec9dfd._.js +1 -1
  110. package/app/.next/server/pages/500.html +2 -2
  111. package/app/.next/server/server-reference-manifest.js +1 -1
  112. package/app/.next/server/server-reference-manifest.json +1 -1
  113. package/app/.next/static/chunks/{b9999bd9d2b99bf6.js → d3c3a9266158d9b0.js} +1 -1
  114. package/app/CHANGELOG.md +19 -1
  115. package/app/docs/openapi.yaml +1 -1
  116. package/app/open-sse/handlers/responseTranslator.ts +1 -1
  117. package/app/open-sse/package.json +1 -1
  118. package/app/package-lock.json +3 -3
  119. package/app/package.json +1 -1
  120. package/app/src/i18n/messages/ar.json +2 -1
  121. package/app/src/i18n/messages/bg.json +2 -1
  122. package/app/src/i18n/messages/cs.json +2 -1
  123. package/app/src/i18n/messages/da.json +2 -1
  124. package/app/src/i18n/messages/de.json +2 -1
  125. package/app/src/i18n/messages/es.json +2 -1
  126. package/app/src/i18n/messages/fi.json +2 -1
  127. package/app/src/i18n/messages/fr.json +2 -1
  128. package/app/src/i18n/messages/he.json +2 -1
  129. package/app/src/i18n/messages/hi.json +2 -1
  130. package/app/src/i18n/messages/hu.json +2 -1
  131. package/app/src/i18n/messages/id.json +2 -1
  132. package/app/src/i18n/messages/in.json +2 -1
  133. package/app/src/i18n/messages/it.json +2 -1
  134. package/app/src/i18n/messages/ja.json +2 -1
  135. package/app/src/i18n/messages/ko.json +2 -1
  136. package/app/src/i18n/messages/ms.json +2 -1
  137. package/app/src/i18n/messages/nl.json +2 -1
  138. package/app/src/i18n/messages/no.json +2 -1
  139. package/app/src/i18n/messages/phi.json +2 -1
  140. package/app/src/i18n/messages/pl.json +2 -1
  141. package/app/src/i18n/messages/pt-BR.json +2 -1
  142. package/app/src/i18n/messages/pt.json +2 -1
  143. package/app/src/i18n/messages/ro.json +2 -1
  144. package/app/src/i18n/messages/ru.json +2 -1
  145. package/app/src/i18n/messages/sk.json +2 -1
  146. package/app/src/i18n/messages/sv.json +2 -1
  147. package/app/src/i18n/messages/th.json +2 -1
  148. package/app/src/i18n/messages/tr.json +2 -1
  149. package/app/src/i18n/messages/uk-UA.json +2 -1
  150. package/app/src/i18n/messages/vi.json +2 -1
  151. package/app/src/shared/services/opencodeConfig.ts +14 -13
  152. package/app/tests/unit/t40-opencode-cli-tools-integration.test.mjs +5 -5
  153. package/package.json +1 -1
  154. /package/app/.next/static/{1ny0VWnN2mDf-NnjRzXAY → NYBYaP3-LK80ViNPwi7dC}/_buildManifest.js +0 -0
  155. /package/app/.next/static/{1ny0VWnN2mDf-NnjRzXAY → NYBYaP3-LK80ViNPwi7dC}/_clientMiddlewareManifest.json +0 -0
  156. /package/app/.next/static/{1ny0VWnN2mDf-NnjRzXAY → NYBYaP3-LK80ViNPwi7dC}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[516441,a=>{a.v(JSON.parse('{"common":{"save":"บันทึก","cancel":"ยกเลิก","delete":"ลบ","loading":"กำลังโหลด...","error":"เกิดข้อผิดพลาด","success":"ความสำเร็จ","confirm":"คุณแน่ใจเหรอ?","refresh":"รีเฟรช","close":"ปิด","add":"เพิ่ม","edit":"แก้ไข","search":"ค้นหา","back":"กลับ","next":"ถัดไป","submit":"ส่ง","reset":"รีเซ็ต","copy":"คัดลอก","copied":"คัดลอก!","enabled":"เปิดใช้งานแล้ว","disabled":"ปิดการใช้งาน","active":"ใช้งานอยู่","inactive":"ไม่ได้ใช้งาน","noData":"ไม่มีข้อมูล","configure":"กำหนดค่า","manage":"จัดการ","name":"ชื่อ","actions":"การดำเนินการ","status":"สถานะ","type":"ประเภท","model":"รุ่น","models":"โมเดล","provider":"ผู้ให้บริการ","account":"บัญชี","time":"เวลา","details":"รายละเอียด","created":"สร้างแล้ว","lastUsed":"ใช้ล่าสุด","loadMore":"โหลดเพิ่มเติม","noResults":"ไม่พบผลลัพธ์","reloadPage":"โหลดหน้าซ้ำ","connected":"เชื่อมต่อแล้ว","disconnected":"ตัดการเชื่อมต่อแล้ว","notConfigured":"ไม่ได้กำหนดค่า","testConnection":"ทดสอบการเชื่อมต่อ","enable":"เปิดใช้งาน","disable":"ปิดการใช้งาน","columns":"คอลัมน์","newest":"ใหม่ล่าสุด","oldest":"เก่าแก่ที่สุด","all":"ทั้งหมด","none":"ไม่มี","yes":"ใช่","no":"ไม่","warning":"คำเตือน","note":"หมายเหตุ","free":"ฟรี","skipToContent":"ข้ามไปที่เนื้อหา","maintenanceServerIssues":"Server is experiencing issues. Some features may be unavailable.","maintenanceServerUnreachable":"Server is unreachable. Reconnecting...","accept":"ยอมรับ","accountId":"รหัสบัญชี","alias":"นามแฝง","apiKeyId":"รหัสคีย์ API","apiKeyName":"ชื่อคีย์ API","apiKeySecret":"ความลับของคีย์ API","authorization":"การอนุญาต","content-type":"ประเภทเนื้อหา","content-length":"ความยาวของเนื้อหา","cookie":"คุกกี้","file":"ไฟล์","host":"โฮสต์","id":"บัตรประจำตัวประชาชน","import":"นำเข้า","limit":"ขีดจำกัด","offset":"ออฟเซ็ต","open":"เปิด","origin":"ต้นกำเนิด","promptTokens":"โทเค็นพร้อมท์","completionTokens":"โทเค็นการสำเร็จ","totalTokens":"โทเค็นทั้งหมด","rawModel":"โมเดลดิบ","scope":"ขอบเขต","skill":"ทักษะ","sortBy":"เรียงตาม","sortOrder":"เรียงลำดับ","tab":"แท็บ","text":"ข้อความ","textarea":"พื้นที่ข้อความ","tool":"เครื่องมือ","toolId":"รหัสเครื่องมือ","web":"เว็บ","whereUsed":"ใช้ที่ไหน","whitelist":"ไวท์ลิสต์","blacklist":"บัญชีดำ","resolve":"แก้ไข","force":"บังคับ","base64url":"URL Base64","hex":"ฐานสิบหก","range":"พิสัย","component":"ส่วนประกอบ","redirect_uri":"เปลี่ยนเส้นทาง URI","idempotency-key":"คีย์ Idempotency","error_description":"คำอธิบายข้อผิดพลาด","code":"รหัส","compatible":"เข้ากันได้","chat-completions":"เสร็จสิ้นการแชท","oauth":"OAuth","auth_token":"โทเค็นการรับรองความถูกต้อง","crypto":"การเข้ารหัสลับ","hours":"ชั่วโมง","selfsigned":"ลงนามด้วยตนเอง","proxy_id":"รหัสพร็อกซี","proxyId":"รหัสพร็อกซี","connectionId":"รหัสการเชื่อมต่อ","resolveConnectionId":"แก้ไขรหัสการเชื่อมต่อ","resolve_connection_id":"แก้ไขรหัสการเชื่อมต่อ","scope_id":"รหัสขอบเขต","scopeId":"รหัสขอบเขต","jwtSecret":"ความลับเจดับเบิ้ลยูที","keytar":"คีย์ตาร์","better-sqlite3":"ดีกว่า-sqlite3","undici":"อูนดิ","builder-id":"รหัสผู้สร้าง","musicDesc":"คำอธิบายเพลง","musicGeneration":"ดนตรีเจเนอเรชั่น","idc":"ไอดีซี","cloud-status-changed":"สถานะคลาวด์เปลี่ยนไป","where_used":"ใช้ที่ไหน","windowMs":"หน้าต่าง (มิลลิวินาที)","social-github":"GitHub","social-google":"กูเกิล","TOOL_ALLOWLIST":"รายการที่อนุญาตของเครื่องมือ","TOOL_DENYLIST":"รายการเครื่องมือที่ปฏิเสธ","Failed to save pricing":"บันทึกราคาไม่สำเร็จ","Failed to reset pricing":"ไม่สามารถรีเซ็ตราคาได้","apikey":"คีย์ API","http":"HTTP"},"sidebar":{"home":"บ้าน","dashboard":"แดชบอร์ด","providers":"ผู้ให้บริการ","combos":"คอมโบ","usage":"การใช้งาน","analytics":"การวิเคราะห์","costs":"ค่าใช้จ่าย","health":"สุขภาพ","limits":"ขีดจำกัดและโควต้า","cliTools":"เครื่องมือ CLI","media":"สื่อ","settings":"การตั้งค่า","translator":"นักแปล","docs":"เอกสาร","issues":"ประเด็นต่างๆ","apiManager":"ผู้จัดการ API","logs":"บันทึก","auditLog":"บันทึกการตรวจสอบ","shutdown":"ปิดเครื่อง","restart":"รีสตาร์ท","shutdownConfirm":"ปิด OmniRoute หรือไม่?","restartConfirm":"รีสตาร์ท OmniRoute หรือไม่","version":"v{version}","debug":"ดีบัก","system":"ระบบ","help":"ช่วยด้วย","serverDisconnected":"เซิร์ฟเวอร์ถูกตัดการเชื่อมต่อ","serverDisconnectedMsg":"พร็อกซีเซิร์ฟเวอร์ถูกหยุดหรือกำลังรีสตาร์ท","expandSidebar":"ขยายแถบด้านข้าง","collapseSidebar":"ยุบแถบด้านข้าง","themes":"ธีมส์","presetColors":"สียอดนิยม","createTheme":"สร้างธีม","chooseColor":"เลือกหนึ่งสี","themeCoral":"ปะการัง","themeBlue":"สีฟ้า","themeRed":"สีแดง","themeGreen":"สีเขียว","themeViolet":"Violet","themeOrange":"Orange","themeCyan":"Cyan","endpoints":"จุดปลายทาง","playground":"Playground","agents":"เอเจนต์","cliToolsShort":"เครื่องมือ","autoCombo":"Auto Combo","searchTools":"Search Tools","cache":"Cache","cacheShort":"Cache"},"themesPage":{"title":"ธีมส์","description":"Choose a preset theme or create your own with a single color","presetColors":"สียอดนิยม","customTheme":"Custom theme","customThemeDesc":"Click create theme and pick one color","createTheme":"สร้างธีม","activePreset":"Active theme"},"header":{"logout":"ออกจากระบบ","language":"ภาษา","providers":"ผู้ให้บริการ","providerDescription":"จัดการการเชื่อมต่อผู้ให้บริการ AI ของคุณ","combos":"คอมโบ","comboDescription":"คอมโบโมเดลพร้อมทางเลือกสำรอง","usage":"การใช้งานและการวิเคราะห์","usageDescription":"ตรวจสอบการใช้งาน API การใช้โทเค็น และบันทึกคำขอของคุณ","analytics":"การวิเคราะห์","analyticsDescription":"แผนภูมิ แนวโน้ม และข้อมูลเชิงลึกในการประเมิน","cliTools":"เครื่องมือ CLI","cliToolsDescription":"กำหนดค่าเครื่องมือ CLI","home":"บ้าน","homeDescription":"ยินดีต้อนรับสู่ OmniRoute","endpoint":"Endpoints","endpointDescription":"Manage proxy endpoints, MCP, A2A, and API endpoints","settings":"การตั้งค่า","settingsDescription":"จัดการการตั้งค่าของคุณ","openaiCompatible":"รองรับ OpenAI","anthropicCompatible":"เข้ากันได้กับมานุษยวิทยา","media":"Media","mediaDescription":"Generate images, videos, and music","themes":"ธีมส์","themesDescription":"Choose a color theme for the whole dashboard panel","mcp":"MCP","mcpDescription":"Model Context Protocol server management and tools","a2a":"A2A","a2aDescription":"Agent-to-Agent protocol tasks and observability"},"home":{"quickStart":"เริ่มต้นอย่างรวดเร็ว","quickStartDesc":"เริ่มต้นใช้งานใน 4 ขั้นตอน เชื่อมต่อผู้ให้บริการ โมเดลเส้นทาง ตรวจสอบทุกอย่าง","fullDocs":"เอกสารฉบับเต็ม","step1Title":"1. สร้างคีย์ API","step1Desc":"ไปที่ <endpoint>Endpoint</endpoint> -> คีย์ที่ลงทะเบียน สร้างหนึ่งคีย์ต่อสภาพแวดล้อม","step2Title":"2. เชื่อมต่อผู้ให้บริการ","step2Desc":"เพิ่มบัญชีใน <providers>Providers</providers> รองรับ OAuth, คีย์ API และระดับฟรี","step3Title":"3. ชี้แนะลูกค้าของคุณ","step3Desc":"ตั้งค่า URL พื้นฐานเป็น {url} ใน IDE หรือไคลเอ็นต์ API ของคุณ","step4Title":"4. ตรวจสอบและเพิ่มประสิทธิภาพ","step4Desc":"ติดตามโทเค็น ต้นทุน และข้อผิดพลาดใน <logs>บันทึกคำขอ</logs> และ <analytics>Analytics</analytics>","providersOverview":"ภาพรวมผู้ให้บริการ","configuredOf":"{configured} กำหนดค่าจากผู้ให้บริการที่พร้อมใช้งาน {total}","noModelsAvailable":"ไม่มีรุ่นสำหรับผู้ให้บริการรายนี้","configureFirst":"กำหนดค่าการเชื่อมต่อก่อนใน {providers}","configureProvider":"กำหนดค่าผู้ให้บริการ","modelAvailable":"{count} มีโมเดลให้เลือก","modelsAvailable":"{count} มีรุ่นให้เลือก","connectionsActive":"{count} การเชื่อมต่อทำงานอยู่","connectionsActivePlural":"{count} การเชื่อมต่อทำงานอยู่","copyModelName":"คัดลอกชื่อรุ่น","documentation":"เอกสารประกอบ","healthMonitor":"การตรวจสุขภาพ","reportIssue":"รายงานปัญหา","activeError":"{active} ใช้งานอยู่ · ข้อผิดพลาด {errors}","oauthLabel":"OAuth","apiKeyLabel":"คีย์ API","requestsShort":"{count} ความต้องการ","providerModelsTitle":"{provider} - โมเดล","copiedModel":"คัดลอก: {model}","aliasLabel":"นามแฝง","updateNow":"อัปเดตทันที","updating":"กำลังอัปเดต...","updateAvailableDesc":"มีเวอร์ชันใหม่ให้ใช้งานแล้ว คลิกเพื่ออัปเดต","updateStarted":"เริ่มการอัพเดต..."},"analytics":{"title":"การวิเคราะห์","overviewDescription":"ตรวจสอบรูปแบบการใช้งาน API การใช้โทเค็น ต้นทุน และแนวโน้มกิจกรรมของผู้ให้บริการและโมเดลทั้งหมด","evalsDescription":"เรียกใช้ชุดการประเมินผลเพื่อทดสอบและตรวจสอบความถูกต้องของตำแหน่งข้อมูล LLM ของคุณ เปรียบเทียบคุณภาพของโมเดล ตรวจจับการถดถอย และเวลาแฝงของเกณฑ์มาตรฐาน","overview":"ภาพรวม","evals":"เอวาลส์"},"apiManager":{"title":"คีย์ API","createKey":"สร้างคีย์ API","key":"คีย์","revokeKey":"เพิกถอนคีย์","revokeConfirm":"คุณแน่ใจหรือไม่ว่าต้องการเพิกถอนคีย์ API นี้","noKeys":"ยังไม่มีคีย์ API","noKeysDesc":"สร้างคีย์ API แรกของคุณเพื่อตรวจสอบสิทธิ์คำขอไปยังตำแหน่งข้อมูลของคุณ","keyLabel":"ป้ายกำกับที่สำคัญ","permissions":"สิทธิ์","expiresAt":"หมดอายุ","never":"ไม่เคย","revoke":"เพิกถอน","showKey":"แสดงคีย์","hideKey":"ซ่อนคีย์","copyKey":"คัดลอกคีย์ API","allModels":"ทุกรุ่น","selectedModels":"รุ่นที่เลือก","readOnly":"อ่านอย่างเดียว","fullAccess":"การเข้าถึงแบบเต็ม","keyManagement":"การจัดการคีย์ API","keyManagementDesc":"สร้างและจัดการคีย์ API สำหรับการตรวจสอบคำขอไปยังปลายทางของคุณ","totalKeys":"คีย์ทั้งหมด","restricted":"ถูกจำกัด","totalRequests":"คำขอทั้งหมด","modelsAvailable":"รุ่นที่มีจำหน่าย","registeredKeys":"คีย์ที่ลงทะเบียน","keysRegistered":"ลงทะเบียน {count} คีย์แล้ว","keyRegistered":"ลงทะเบียนคีย์ {count} แล้ว","keysSecurityNote":"แต่ละคีย์จะแยกการติดตามการใช้งานและสามารถเพิกถอนได้โดยอิสระ คีย์จะถูกปกปิดหลังจากสร้างเพื่อความปลอดภัย","createFirstKey":"สร้างคีย์แรกของคุณ","name":"ชื่อ","usage":"การใช้งาน","created":"สร้างแล้ว","actions":"การดำเนินการ","reqs":"ความต้องการ","neverUsed":"ไม่เคยใช้","deleteConfirm":"ลบคีย์ API นี้ใช่ไหม","usageTips":"เคล็ดลับการใช้งาน","tipAuth":"ใช้คีย์ API ในส่วนหัวการอนุญาตเป็น Bearer YOUR_KEY","tipSecure":"ในระหว่างการสร้างคีย์จะแสดงเพียงครั้งเดียว — เก็บไว้อย่างปลอดภัย","tipSeparate":"สร้างคีย์แยกต่างหากสำหรับไคลเอนต์หรือสภาพแวดล้อมที่แตกต่างกัน","tipRestrict":"จำกัดคีย์ไว้ที่รุ่นเฉพาะเพื่อความปลอดภัยและการควบคุมต้นทุนที่ดีขึ้น","keyName":"ชื่อคีย์","keyNamePlaceholder":"เช่น คีย์การผลิต คีย์การพัฒนา","keyNameDesc":"เลือกชื่อที่สื่อความหมายเพื่อระบุวัตถุประสงค์ของคีย์นี้","keyCreated":"สร้างคีย์ API แล้ว","keyCreatedSuccess":"สร้างคีย์สำเร็จแล้ว!","keyCreatedNote":"คัดลอกและจัดเก็บคีย์นี้ทันที ซึ่งจะไม่แสดงอีก","done":"เสร็จแล้ว","savePermissions":"บันทึกสิทธิ์","allowAll":"อนุญาตทั้งหมด","restrict":"จำกัด","allowAllInfo":"กุญแจนี้เข้าได้ทุกรุ่น","restrictInfo":"คีย์นี้สามารถเข้าถึงโมเดล {selected} จาก {total}","selected":"{count} เลือกแล้ว","all":"ทั้งหมด","clear":"ชัดเจน","searchModels":"ค้นหารุ่นตามชื่อหรือผู้ให้บริการ...","noModelsFound":"ไม่พบรุ่น","keyNameRequired":"ต้องระบุชื่อคีย์","keyNameTooLong":"ชื่อคีย์ต้องมีอักขระ {max} ตัวหรือน้อยกว่า","keyNameInvalid":"ชื่อคีย์มีได้เฉพาะตัวอักษร ตัวเลข ช่องว่าง ขีดกลาง และขีดล่างเท่านั้น","invalidKeyName":"ชื่อคีย์ไม่ถูกต้อง","failedCreateKey":"ไม่สามารถสร้างคีย์ได้","failedCreateKeyRetry":"ไม่สามารถสร้างคีย์ได้ โปรดลองอีกครั้ง","invalidKeyId":"รหัสคีย์ไม่ถูกต้อง","failedDeleteKey":"ลบคีย์ไม่สำเร็จ","failedDeleteKeyRetry":"ลบคีย์ไม่สำเร็จ โปรดลองอีกครั้ง","invalidModelsSelection":"การเลือกรุ่นไม่ถูกต้อง","cannotSelectMoreThanModels":"ไม่สามารถเลือกมากกว่า {max} รุ่น","failedUpdatePermissions":"ไม่สามารถอัปเดตการอนุญาต","failedUpdatePermissionsRetry":"ไม่สามารถอัปเดตการอนุญาต โปรดลองอีกครั้ง","unknownProvider":"ไม่ทราบ","copyMaskedKey":"คัดลอกคีย์ที่ปกปิด","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"ล่าสุด: {date}","editPermissions":"แก้ไขสิทธิ์","deleteKey":"ลบคีย์","model":"{count} โมเดล","models":"{count} โมเดล","permissionsTitle":"สิทธิ์: {name}","allowAllDesc":"กุญแจนี้เข้าได้ทุกรุ่น","restrictDesc":"คีย์นี้สามารถเข้าถึงโมเดล {selectedCount} จาก {totalModels}","selectedCount":"{count} เลือกแล้ว","autoResolve":"Auto-Resolve","autoResolveDesc":"Auto-resolve ambiguous model names to native provider for this API key.","keyActive":"Key Active","keyActiveDesc":"Enable or disable this API key. Disabled keys are immediately rejected with 403.","accessSchedule":"Access Schedule","accessScheduleDesc":"Restrict access to specific hours and days of the week.","scheduleFrom":"From","scheduleUntil":"Until","scheduleDays":"Days","scheduleTimezone":"Timezone","scheduleTimezoneHint":"Use IANA timezone names, e.g. America/New_York, Europe/Berlin","scheduleActive":"Schedule","disabled":"Disabled","daySun":"Sun","dayMon":"Mon","dayTue":"Tue","dayWed":"Wed","dayThu":"Thu","dayFri":"Fri","daySat":"Sat","keyOnlyAvailableAtCreation":"Full key available only at creation time — copy it when you first create the key"},"auditLog":{"title":"บันทึกการตรวจสอบ","searchPlaceholder":"การดำเนินการค้นหา...","action":"การดำเนินการ","actor":"นักแสดง","target":"เป้าหมาย","ipAddress":"ที่อยู่ IP","timestamp":"การประทับเวลา","noEntries":"ไม่พบรายการตรวจสอบ","filterByAction":"กรองตามการกระทำ...","filterByActor":"กรองตามนักแสดง...","filterEntriesAria":"กรองรายการบันทึกการตรวจสอบ","filterByActionTypeAria":"กรองตามประเภทการกระทำ","filterByActorAria":"กรองตามนักแสดง","refreshAuditLogAria":"รีเฟรชบันทึกการตรวจสอบ","tableAria":"รายการบันทึกการตรวจสอบ","failedFetchAuditLog":"ดึงข้อมูลบันทึกการตรวจสอบไม่สำเร็จ","notAvailable":"—","description":"การดำเนินการด้านการดูแลระบบและเหตุการณ์ด้านความปลอดภัย","showing":"กำลังแสดงรายการ {count} (ออฟเซ็ต {offset})","previous":"ก่อนหน้า"},"media":{"title":"สนามทดลองสื่อ","subtitle":"สร้างภาพ วิดีโอ และเพลง","model":"Model","prompt":"Prompt","generate":"สร้าง","generating":"Generating...","loadingModels":"Loading available models...","noModels":"No models available. Configure providers with media capabilities first.","error":"Generation Failed","result":"Result","imageDescription":"Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.","videoDescription":"Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.","musicDescription":"Compose music using Stable Audio Open or MusicGen via ComfyUI."},"cliTools":{"title":"เครื่องมือ CLI","noActiveProviders":"ไม่มีผู้ให้บริการที่ใช้งานอยู่","noActiveProvidersDesc":"โปรดเพิ่มและเชื่อมต่อผู้ให้บริการก่อนเพื่อกำหนดค่าเครื่องมือ CLI","mapModels":"โมเดลแผนที่","testConnection":"ทดสอบการเชื่อมต่อ","connectionStatus":"สถานะการเชื่อมต่อ","configureEndpoint":"กำหนดค่าจุดสิ้นสุด","instructions":"คำแนะนำ","modelMapping":"การทำแผนที่โมเดล","baseUrl":"URL ฐาน","apiKey":"คีย์ API","configured":"กำหนดค่าแล้ว","notConfigured":"ไม่ได้กำหนดค่า","notInstalled":"ไม่ได้ติดตั้ง","custom":"กำหนดเอง","unknown":"ไม่ทราบ","lastSavedAt":"บันทึกล่าสุด: {date}","never":"ไม่เคย","justNow":"แค่ตอนนี้","minutesAgoShort":"{count}นาทีที่แล้ว","hoursAgoShort":"{count}ชม. ที่แล้ว","daysAgoShort":"{count}d ที่แล้ว","monthsAgoShort":"{count}เดือนที่แล้ว","yearsAgoShort":"{count}ปีที่แล้ว","runtimeCheckFailed":"การตรวจสอบรันไทม์ล้มเหลว","yourApiKeyPlaceholder":"รหัส API ของคุณ","modelPlaceholder":"ผู้ให้บริการ/รหัสรุ่น","configurationSaved":"บันทึกการกำหนดค่าเรียบร้อยแล้ว","failedToSave":"บันทึกการกำหนดค่าไม่สำเร็จ","noApiKeysCreateOne":"ไม่มีคีย์ API - สร้างคีย์ในหน้าคีย์","defaultOmnirouteKey":"sk_omniroute (ค่าเริ่มต้น)","selectModel":"เลือกรุ่น","selectModelForAlias":"เลือกรุ่นสำหรับ {alias}","selectModelForTool":"เลือกรุ่นสำหรับ {tool}","select":"เลือก","clear":"ชัดเจน","comingSoon":"เร็วๆ นี้","checkingRuntime":"กำลังตรวจสอบสถานะรันไทม์...","guideOnlyIntegration":"การบูรณาการเฉพาะคำแนะนำ (ไม่ต้องใช้รันไทม์ในเครื่อง)","cliRuntimeDetected":"ตรวจพบรันไทม์ CLI และพร้อมใช้งาน","cliFoundNotRunnable":"พบ CLI แต่ไม่สามารถรันได้{reason}","cliRuntimeNotDetected":"ตรวจไม่พบรันไทม์ของ CLI","binary":"ไบนารี่","configPath":"เส้นทางการกำหนดค่า","configPathShort":"การกำหนดค่า","failedCheckRuntimeStatus":"ไม่สามารถตรวจสอบสถานะรันไทม์ได้","copy":"คัดลอก","copied":"คัดลอกแล้ว","copyConfig":"คัดลอกการกำหนดค่า","saveConfig":"บันทึกการกำหนดค่า","selectionSaved":"บันทึกการเลือกแล้ว","guide":"คู่มือ","detected":"ตรวจพบ","notReady":"ไม่พร้อม","active":"ใช้งานอยู่","inactive":"ไม่ได้ใช้งาน","startMitm":"เริ่ม MITM","stopMitm":"หยุด MITM","mitmStarted":"MITM เริ่มต้นได้สำเร็จ!","mitmStopped":"MITM หยุดสำเร็จแล้ว!","failedStart":"ไม่สามารถเริ่ม MITM","failedStop":"ไม่สามารถหยุด MITM","saveMappings":"บันทึกการแมป","mappingsSaved":"บันทึกการแมปแล้ว!","failedSaveMappings":"ไม่สามารถบันทึกการแมป","howItWorks":"มันทำงานอย่างไร:","antigravityHowWorksDesc":"Antigravity ส่งคำขอไปยังปลายทางของ Google MITM สกัดกั้นและเปลี่ยนเส้นทางไปยัง OmniRoute","antigravityStep1":"1. เริ่ม MITM เพื่อกำหนดเส้นทางคำขอผ่าน OmniRoute","antigravityStep2Prefix":"2. เพิ่ม","antigravityStep2Suffix":"ไปยังไฟล์โฮสต์ของคุณเป็น 127.0.0.1","antigravityStep3":"3. เปิด Antigravity และคำขอจะถูกส่งผ่านพรอกซี","sudoPasswordRequiredTitle":"ต้องใช้รหัสผ่าน Sudo","sudoPasswordHint":"ต้องใช้รหัสผ่านผู้ดูแลระบบเพื่อแก้ไขไฟล์โฮสต์และการตั้งค่าพร็อกซีระบบ","enterSudoPassword":"ป้อนรหัสผ่าน sudo","sudoPasswordRequiredError":"ต้องใช้รหัสผ่าน Sudo","cancel":"ยกเลิก","confirm":"ยืนยัน","settingsApplied":"ใช้การตั้งค่าเรียบร้อยแล้ว!","failedApplySettings":"ล้มเหลวในการใช้การตั้งค่า","settingsReset":"รีเซ็ตการตั้งค่าเรียบร้อยแล้ว!","failedResetSettings":"ไม่สามารถรีเซ็ตการตั้งค่าได้","backupRestored":"กู้คืนข้อมูลสำรองแล้ว!","failedRestore":"ไม่สามารถกู้คืนได้","checkingCli":"กำลังตรวจสอบ {tool} CLI...","cliNotRunnable":"{tool} ติดตั้ง CLI แล้ว แต่ไม่สามารถรันได้","cliNotInstalled":"{tool} ไม่ได้ติดตั้ง CLI","cliNotDetected":"{tool} ตรวจไม่พบ CLI","cliDetectedReady":"{tool} CLI ตรวจพบและพร้อมใช้งาน","cliFoundFailedHealthcheck":"{tool} พบ CLI แต่การตรวจสอบสุขภาพรันไทม์ล้มเหลว{reason}","installCliPrompt":"โปรดติดตั้ง {tool} CLI เพื่อใช้คุณลักษณะนี้","installCodexPrompt":"โปรดติดตั้ง Codex CLI เพื่อใช้คุณสมบัติการใช้งานอัตโนมัติ","hide":"ซ่อน","howToInstall":"วิธีการติดตั้ง","installationGuide":"คู่มือการติดตั้ง","platforms":"macOS / ลินุกซ์ / วินโดวส์:","afterInstallationRun":"หลังการติดตั้งให้รัน","toVerify":"เพื่อตรวจสอบ","current":"ปัจจุบัน","baseUrlPlaceholder":"https://.../v1","resetToDefault":"รีเซ็ตเป็นค่าเริ่มต้น","providerModelPlaceholder":"ผู้ให้บริการ/รหัสรุ่น","apply":"สมัคร","reset":"รีเซ็ต","manualConfig":"การกำหนดค่าด้วยตนเอง","backups":"การสำรองข้อมูล","configBackups":"กำหนดค่าการสำรองข้อมูล","noBackupsYet":"ยังไม่มีการสำรองข้อมูล การสำรองข้อมูลจะถูกสร้างขึ้นโดยอัตโนมัติก่อนนำไปใช้หรือรีเซ็ตแต่ละครั้ง","restore":"คืนค่า","backupRestoredReloading":"กู้คืนข้อมูลสำรองแล้ว! กำลังโหลดสถานะ...","failedRestoreBackup":"ไม่สามารถกู้คืนข้อมูลสำรองได้","applied":"สมัครแล้ว!","failed":"ล้มเหลว","resetDone":"รีเซ็ต!","omnirouteConfiguredOpenAiCompatible":"OmniRoute ได้รับการกำหนดค่าให้เป็นผู้ให้บริการที่รองรับ OpenAI","provider":"ผู้ให้บริการ","model":"รุ่น","providers":"ผู้ให้บริการ","auth":"การรับรองความถูกต้อง","noApiKeysAvailable":"ไม่มีคีย์ API ที่พร้อมใช้งาน","usingDefaultOmniroute":"ใช้ค่าเริ่มต้น: sk_omniroute","updateConfig":"อัปเดตการกำหนดค่า","applyConfig":"ใช้การกำหนดค่า","noBackupsAvailable":"ไม่มีการสำรองข้อมูล","profileSaved":"บันทึกโปรไฟล์ \\"{name}\\" แล้ว!","failedSaveProfile":"ไม่สามารถบันทึกโปรไฟล์ได้","profileActivated":"เปิดใช้งานโปรไฟล์แล้ว!","failedActivateProfile":"ไม่สามารถเปิดใช้งานโปรไฟล์ได้","profiles":"โปรไฟล์","savedProfiles":"โปรไฟล์ที่บันทึกไว้","noProfilesYet":"ยังไม่มีการบันทึกโปรไฟล์ บันทึกการกำหนดค่าปัจจุบันเป็นโปรไฟล์ด้านล่าง","activate":"เปิดใช้งาน","deleteProfile":"ลบโปรไฟล์","profileNamePlaceholder":"ชื่อโปรไฟล์ (เช่น บัญชีส่วนตัว)","saveCurrent":"บันทึกปัจจุบัน","codexAuthNotePrefix":"การใช้โคเด็กซ์","codexAuthNoteMiddle":"ด้วย","codexAuthNoteSuffix":"คลิก \\"ใช้\\" เพื่อกำหนดค่าอัตโนมัติ","claudeManualConfiguration":"Claude CLI - การกำหนดค่าด้วยตนเอง","codexManualConfiguration":"Codex CLI - การกำหนดค่าด้วยตนเอง","droidManualConfiguration":"Factory Droid - การกำหนดค่าด้วยตนเอง","openClawManualConfiguration":"Open Claw - การกำหนดค่าด้วยตนเอง","clineManualConfiguration":"การกำหนดค่าด้วยตนเองของไคลน์","kiloManualConfiguration":"การกำหนดค่าด้วยตนเองของรหัสกิโล","toolDescriptions":{"antigravity":"Google ต้านแรงโน้มถ่วง IDE พร้อม MITM","claude":"รหัสมานุษยวิทยา Claude CLI","codex":"OpenAI Codex CLI","droid":"ผู้ช่วย AI จากโรงงาน Droid","openclaw":"เปิดผู้ช่วย AI ของ Claw","cline":"Cline AI ผู้ช่วยเข้ารหัส CLI","kilo":"กิโลโค้ด AI Assistant CLI","cursor":"ตัวแก้ไขรหัสเคอร์เซอร์ AI","continue":"ดำเนินการต่อผู้ช่วย AI","opencode":"OpenCode AI coding agent (Terminal)","kiro":"Amazon Kiro — AI-powered IDE","windsurf":"Windsurf AI Code Editor","copilot":"GitHub Copilot AI Assistant"},"guides":{"cursor":{"notes":{"0":"ต้องใช้บัญชี Cursor Pro เพื่อใช้คุณสมบัตินี้","1":"เคอร์เซอร์กำหนดเส้นทางคำขอผ่านเซิร์ฟเวอร์ของตัวเอง ดังนั้นจึงไม่รองรับจุดสิ้นสุดในเครื่อง โปรดเปิดใช้งาน Cloud Endpoint ในการตั้งค่า"},"steps":{"1":{"title":"เปิดการตั้งค่า","desc":"ไปที่การตั้งค่า -> โมเดล"},"2":{"title":"เปิดใช้งาน OpenAI API","desc":"เปิดใช้งานตัวเลือก \\"คีย์ OpenAI API\\""},"3":{"title":"URL ฐาน"},"4":{"title":"คีย์ API"},"5":{"title":"เพิ่มโมเดลที่กำหนดเอง","desc":"คลิก \\"ดูโมเดลทั้งหมด\\" -> \\"เพิ่มโมเดลที่กำหนดเอง\\""},"6":{"title":"เลือกรุ่น"}}},"continue":{"steps":{"1":{"title":"เปิดการกำหนดค่า","desc":"เปิดไฟล์การกำหนดค่าดำเนินการต่อ"},"2":{"title":"คีย์ API"},"3":{"title":"เลือกรุ่น"},"4":{"title":"เพิ่มการกำหนดค่าโมเดล","desc":"เพิ่มการกำหนดค่าต่อไปนี้ให้กับอาร์เรย์โมเดลของคุณ:"}},"notes":{"0":"ใช้ไฟล์กำหนดค่า JSON ต่อไป"}},"opencode":{"steps":{"1":{"title":"Install OpenCode","desc":"Install via npm: npm install -g opencode-ai"},"2":{"title":"API Key"},"3":{"title":"Set Base URL","desc":"opencode config set baseUrl {{baseUrl}}"},"4":{"title":"Select Model"}},"notes":{"0":"OpenCode ต้องมีการกำหนดค่าคีย์ API","1":"ตั้งค่า URL พื้นฐานเป็นจุดสิ้นสุด OmniRoute ของคุณ"}},"kiro":{"steps":{"1":{"title":"Open Kiro Settings","desc":"Go to Settings → AI Provider"},"2":{"title":"Base URL","desc":"Paste your OmniRoute endpoint URL"},"3":{"title":"API Key"},"4":{"title":"Select Model"}},"notes":{"0":"Kiro ต้องการบัญชี Amazon"}}},"mitmHowWorksDesc":"{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.","mitmStep1":"1. Start MITM to route requests through OmniRoute.","mitmStep2Prefix":"2. Add","mitmStep2Suffix":"to your hosts file as 127.0.0.1.","mitmStep3":"3. Open {toolName} and requests will be proxied.","whenToUseLabel":"เมื่อจะใช้","openToolDocs":"เปิดเอกสารเครื่องมือ","toolUseCases":{"claude":"ใช้เมื่อคุณต้องการเวิร์กโฟลว์การวางแผนที่แข็งแกร่งและรีแฟคเตอร์หลายไฟล์แบบยาวด้วย Claude Code","codex":"ใช้เมื่อทีมของคุณได้รับมาตรฐานในโฟลว์ OpenAI Codex CLI และการตรวจสอบสิทธิ์ตามโปรไฟล์","droid":"ใช้เมื่อคุณต้องการเอเจนต์เทอร์มินัลน้ำหนักเบาที่เน้นไปที่การเขียนโค้ดที่รวดเร็วและลูปการดำเนินการคำสั่ง","openclaw":"ใช้เมื่อคุณต้องการเอเจนต์การเข้ารหัสสไตล์ Open Claw แต่กำหนดเส้นทางผ่านนโยบาย OmniRoute","cline":"ใช้เมื่อคุณกำหนดค่าเอเจนต์การเขียนโค้ดภายในโปรแกรมแก้ไข และต้องการการตั้งค่าที่แนะนำด้วยโมเดล OmniRoute","kilo":"ใช้เมื่อเวิร์กโฟลว์ของคุณขึ้นอยู่กับคำสั่ง Kilo Code และการแก้ไขซ้ำอย่างรวดเร็ว","cursor":"ใช้เมื่อเขียนโค้ดในเคอร์เซอร์และคุณต้องการโมเดลที่เข้ากันได้กับ OpenAI แบบกำหนดเองผ่าน OmniRoute","continue":"ใช้เมื่อเรียกใช้ดำเนินการต่อใน IDE และคุณต้องกำหนดค่าผู้ให้บริการที่ใช้ JSON แบบพกพา","opencode":"ใช้เมื่อคุณต้องการเรียกใช้ Terminal-Native Agent และใช้สคริปต์อัตโนมัติผ่าน OpenCode","kiro":"ใช้เมื่อรวม Kiro และควบคุมการกำหนดเส้นทางโมเดลจากส่วนกลางจาก OmniRoute","antigravity":"ใช้เมื่อต้องสกัดกั้นการรับส่งข้อมูล Antigravity/Kiro ผ่าน MITM และกำหนดเส้นทางไปยัง OmniRoute","copilot":"ใช้เมื่อคุณต้องการ UX รูปแบบการแชทของ Copilot ในขณะที่บังคับใช้คีย์ OmniRoute และกฎการกำหนดเส้นทาง"}},"combos":{"title":"คอมโบ","description":"สร้างโมเดลคอมโบด้วยการกำหนดเส้นทางแบบถ่วงน้ำหนักและการสนับสนุนทางเลือก","createCombo":"สร้างคอมโบ","editCombo":"แก้ไขคอมโบ","deleteCombo":"ลบคอมโบ","noModels":"ไม่มีรุ่น","noModelsYet":"ยังไม่มีโมเดลเพิ่ม","addModel":"เพิ่มรุ่น","addModelToCombo":"เพิ่มโมเดลลงในคอมโบ","routingStrategy":"กลยุทธ์การกำหนดเส้นทาง","maxRetries":"ลองใหม่สูงสุด","timeout":"หมดเวลา (มิลลิวินาที)","healthcheck":"ตรวจสุขภาพ","priority":"ลำดับความสำคัญ","fallback":"ทางเลือกสำรอง","roundRobin":"ตัวกลม โรบิน","random":"สุ่ม","leastLatency":"เวลาแฝงน้อยที่สุด","comboName":"ชื่อคอมโบ","comboNamePlaceholder":"คำสั่งผสมของฉัน","deleteConfirm":"ลบคอมโบนี้ใช่ไหม","noCombosYet":"ยังไม่มีคอมโบ","comboCreated":"สร้างคอมโบสำเร็จแล้ว","comboUpdated":"อัปเดตคอมโบเรียบร้อยแล้ว","comboDeleted":"ลบคอมโบแล้ว","failedCreate":"ไม่สามารถสร้างคอมโบได้","failedUpdate":"ไม่สามารถอัปเดตคอมโบได้","errorCreating":"เกิดข้อผิดพลาดในการสร้างคอมโบ","errorUpdating":"เกิดข้อผิดพลาดในการอัปเดตคอมโบ","errorDeleting":"เกิดข้อผิดพลาดในการลบคำสั่งผสม","testFailed":"คำขอทดสอบล้มเหลว","failedToggle":"ไม่สามารถสลับคำสั่งผสมได้","testResults":"ผลการทดสอบ — {name}","resolvedBy":"แก้ไขโดย:","more":"+{count} เพิ่มเติม","reqs":"ความต้องการ","success":"ความสำเร็จ","proxyConfigured":"กำหนดค่าพร็อกซีแล้ว","copyComboName":"คัดลอกชื่อคำสั่งผสม","enableCombo":"เปิดใช้งานคอมโบ","disableCombo":"ปิดการใช้งานคอมโบ","testCombo":"ทดสอบคอมโบ","duplicate":"ทำซ้ำ","proxyConfig":"การกำหนดค่าพร็อกซี","nameRequired":"ต้องระบุชื่อ","nameInvalid":"เฉพาะตัวอักษร ตัวเลข -, _, / และ ได้รับอนุญาต","nameHint":"ตัวอักษร ตัวเลข -, _, / และ ได้รับอนุญาต","priorityDesc":"ทางเลือกสำรองตามลำดับ: ลองใช้โมเดล 1 ก่อน จากนั้นจึงใช้ 2 เป็นต้น","weightedDesc":"กระจายการรับส่งข้อมูลตามเปอร์เซ็นต์น้ำหนักพร้อมทางเลือกสำรอง","roundRobinDesc":"การกระจายแบบวงกลม: แต่ละคำขอจะส่งไปยังโมเดลถัดไปที่หมุนเวียนกัน","randomDesc":"การเลือกแบบสุ่มแบบสม่ำเสมอ จากนั้นจึงย้อนกลับไปยังโมเดลที่เหลือ","leastUsedDesc":"เลือกโมเดลที่มีคำขอน้อยที่สุด โดยจะปรับสมดุลการโหลดเมื่อเวลาผ่านไป","costOptimizedDesc":"กำหนดเส้นทางไปยังรุ่นที่ถูกที่สุดก่อนตามราคา","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each model once before reshuffling","models":"โมเดล","autoBalance":"ปรับสมดุลอัตโนมัติ","advancedSettings":"การตั้งค่าขั้นสูง","retryDelay":"ความล่าช้าในการลองอีกครั้ง (มิลลิวินาที)","concurrencyPerModel":"เห็นพ้องต้องกัน / รุ่น","queueTimeout":"คิวหมดเวลา (มิลลิวินาที)","advancedHint":"เว้นว่างไว้เพื่อใช้ค่าเริ่มต้นสากล เหล่านี้จะแทนที่การตั้งค่าต่อผู้ให้บริการ","moveUp":"เลื่อนขึ้น","moveDown":"เลื่อนลง","removeModel":"ลบ","saving":"กำลังบันทึก...","weighted":"ถ่วงน้ำหนัก","leastUsed":"ใช้น้อยที่สุด","costOpt":"ต้นทุน-การเลือก","strategyGuideTitle":"How to use this strategy","strategyGuideWhen":"When to use","strategyGuideAvoid":"Avoid when","strategyGuideExample":"Example","strategyGuide":{"priority":{"when":"You have one preferred model and only want fallback on failure.","avoid":"You need request distribution across models.","example":"Primary coding model with cheaper backup for outages."},"weighted":{"when":"You need controlled traffic split across models.","avoid":"You cannot maintain accurate weights over time.","example":"80% stable model + 20% canary model rollout."},"round-robin":{"when":"You want predictable and even distribution.","avoid":"Models differ too much in latency or cost.","example":"Same model on multiple accounts to spread throughput."},"random":{"when":"You want simple distribution with minimal setup.","avoid":"You need strict traffic guarantees.","example":"Quick prototyping with equivalent models."},"least-used":{"when":"You want adaptive balancing based on live demand.","avoid":"Traffic is too low to benefit from usage balancing.","example":"Mixed workloads where one model often gets overloaded."},"cost-optimized":{"when":"Cost reduction is your top priority.","avoid":"Pricing data is missing or outdated.","example":"Background or batch jobs where lower cost is preferred."}},"advancedHelp":{"maxRetries":"How many retries are attempted before failing a request.","retryDelay":"Initial wait between retries. Higher values reduce burst pressure.","timeout":"Maximum request duration before aborting.","healthcheck":"Skips unhealthy models/providers from routing decisions.","concurrencyPerModel":"Max simultaneous requests allowed per model in round-robin.","queueTimeout":"How long a request can wait in queue before timing out."},"templatesTitle":"Quick templates","templatesDescription":"Apply a starting profile, then adjust models and config.","templateApply":"Apply template","templateHighAvailability":"High availability","templateHighAvailabilityDesc":"Priority routing with health checks and safe retries.","templateCostSaver":"Cost saver","templateCostSaverDesc":"Cost-optimized routing for budget-first workloads.","templateBalanced":"Balanced load","templateBalancedDesc":"Least-used routing to spread demand over time.","usageGuideHide":"Hide","usageGuideDontShowAgain":"Don\'t show again","usageGuideShow":"Show guide","quickTestTitle":"Combo ready to validate","quickTestDescription":"Run a test now to confirm fallback and latency behavior.","testNow":"Test now","pricingCoverage":"Pricing coverage","pricingCoverageHint":"Cost-optimized works best when all combo models have pricing.","pricingAvailable":"Pricing available","pricingMissing":"No pricing","pricingAvailableShort":"priced","pricingMissingShort":"no-price","warningRoundRobinSingleModel":"Round-robin is most useful with at least 2 models.","warningCostOptimizedPartialPricing":"Only {priced} of {total} models have pricing. Routing may be partially cost-aware.","warningCostOptimizedNoPricing":"No pricing data found for this combo. Cost-optimized may route unexpectedly.","readinessTitle":"พร้อมที่จะบันทึกแล้วหรือยัง?","readinessDescription":"ตรวจสอบรายการตรวจสอบก่อนที่จะสร้างหรืออัปเดตคำสั่งผสมนี้","readinessCheckName":"ชื่อคำสั่งผสมถูกต้อง","readinessCheckModels":"เลือกอย่างน้อยหนึ่งรุ่น","readinessCheckWeights":"ยอดรวมถ่วงน้ำหนักคือ 100%","readinessCheckWeightsOptional":"ไม่จำเป็นต้องมีกฎน้ำหนัก","readinessCheckPricing":"มีข้อมูลราคาอยู่","readinessCheckPricingOptional":"ไม่จำเป็นต้องมีกฎการกำหนดราคา","saveBlockedTitle":"บันทึกจะถูกบล็อกจนกว่ารายการต่อไปนี้จะได้รับการแก้ไข:","saveBlockName":"กำหนดชื่อคอมโบ","saveBlockModels":"เพิ่มอย่างน้อยหนึ่งรุ่น","saveBlockWeighted":"ตั้งค่าน้ำหนักเป็น 100% (ปัจจุบัน: {total}%)","saveBlockPricing":"เพิ่มราคาสำหรับรุ่นอย่างน้อยหนึ่งรุ่นหรือเลือกกลยุทธ์อื่น","recommendationsLabel":"Recommended setup","applyRecommendations":"Apply recommendations","recommendationsUpdated":"Recommendations updated for {strategy}.","recommendationsApplied":"Recommendations applied to this combo.","strategyRecommendations":{"priority":{"title":"Fail-safe baseline","description":"Use one primary model and keep fallback chain short and reliable.","tip1":"Put your most reliable model first.","tip2":"Keep 1-2 backup models with similar quality.","tip3":"Use safe retries to absorb transient provider failures."},"weighted":{"title":"Controlled traffic split","description":"Great for canary rollouts and gradual migration between models.","tip1":"Start with conservative split like 90/10.","tip2":"Keep the total at 100% and auto-balance after changes.","tip3":"Monitor success and latency before increasing canary weight."},"round-robin":{"title":"Predictable load sharing","description":"Best when models are equivalent and you need smooth distribution.","tip1":"Use at least 2 models.","tip2":"Set concurrency limits to avoid burst overload.","tip3":"Use queue timeout to fail fast under saturation."},"random":{"title":"Quick spread with low setup","description":"Use when you need simple distribution without strict guarantees.","tip1":"Use models with similar latency profiles.","tip2":"Keep retries enabled to absorb random misses.","tip3":"Prefer this for experimentation, not strict SLAs."},"least-used":{"title":"Adaptive balancing","description":"Routes to less-used models to reduce hotspots over time.","tip1":"Works better under continuous traffic.","tip2":"Combine with health checks for safer balancing.","tip3":"Track per-model usage to validate distribution gains."},"cost-optimized":{"title":"Budget-first routing","description":"Routes to lower-cost models when pricing metadata is available.","tip1":"Ensure pricing coverage for all selected models.","tip2":"Keep a quality fallback for hard prompts.","tip3":"Use for batch/background jobs where cost is the main KPI."}},"templateFreeStack":"Free Stack ($0)","templateFreeStackDesc":"Round-robin across all free providers: Kiro (Claude), iFlow (5 models), Qwen (4 models), Gemini CLI. Zero cost, never stops coding."},"costs":{"title":"ค่าใช้จ่าย","budget":"งบประมาณ","totalCost":"ต้นทุนรวม","breakdown":"การแจกแจงต้นทุน","noData":"ไม่มีข้อมูลค่าใช้จ่าย","byModel":"โดยรุ่น","byProvider":"โดยผู้ให้บริการ"},"endpoint":{"title":"จุดสิ้นสุด API","available":"จุดสิ้นสุดที่มีอยู่","cloudProxy":"พร็อกซีคลาวด์","disableConfirm":"คุณแน่ใจหรือไม่ว่าต้องการปิดใช้งานพร็อกซีระบบคลาวด์","baseUrl":"URL ฐาน","apiKeyLabel":"คีย์ API","registeredKeys":"คีย์ที่ลงทะเบียน","chatCompletions":"เสร็จสิ้นการแชท","responses":"คำตอบ","listModels":"รายการโมเดล","usingCloudProxy":"การใช้พร็อกซีคลาวด์","usingLocalServer":"การใช้เซิร์ฟเวอร์ท้องถิ่น","machineId":"หมายเลขเครื่อง: {id}...","disableCloud":"ปิดการใช้งานคลาวด์","enableCloud":"เปิดใช้งานคลาวด์","modelsAcrossEndpoints":"{models} โมเดลข้ามจุดสิ้นสุด {endpoints}","chatDesc":"การแชทแบบสตรีมมิงและไม่สตรีมกับผู้ให้บริการทั้งหมด","embeddings":"การฝัง","embeddingsDesc":"การฝังข้อความสำหรับการค้นหาและไปป์ไลน์ RAG","imageGeneration":"การสร้างภาพ","imageDesc":"สร้างภาพจากข้อความแจ้ง","rerank":"จัดอันดับใหม่","rerankDesc":"จัดอันดับเอกสารใหม่ตามความเกี่ยวข้องกับแบบสอบถาม","audioTranscription":"การถอดเสียง","audioTranscriptionDesc":"ถอดเสียงไฟล์เสียงเป็นข้อความ (กระซิบ)","textToSpeech":"ข้อความเป็นคำพูด","textToSpeechDesc":"แปลงข้อความเป็นคำพูดที่ฟังดูเป็นธรรมชาติ","moderations":"การกลั่นกรอง","moderationsDesc":"การกลั่นกรองเนื้อหาและการจำแนกความปลอดภัย","responsesDesc":"OpenAI Responses API สำหรับ Codex และเวิร์กโฟลว์เอเจนต์ขั้นสูง","listModelsDesc":"แสดงรายการโมเดลที่ใช้ได้ทั้งหมดจากผู้ให้บริการที่เชื่อมต่อ","settingsApiDesc":"อ่านและแก้ไขการกำหนดค่า OmniRoute ผ่าน API","settingsApi":"Settings API","categoryCore":"API หลัก","categoryMedia":"สื่อและมัลติโมดอล","categoryUtility":"ยูทิลิตี้และการจัดการ","enableCloudTitle":"เปิดใช้งานพร็อกซีคลาวด์","whatYouGet":"สิ่งที่คุณจะได้รับ","cloudBenefitAccess":"เข้าถึง API ของคุณได้จากทุกที่ในโลก","cloudBenefitShare":"แบ่งปันตำแหน่งข้อมูลกับทีมของคุณได้อย่างง่ายดาย","cloudBenefitPorts":"ไม่จำเป็นต้องเปิดพอร์ตหรือกำหนดค่าไฟร์วอลล์","cloudBenefitEdge":"เครือข่าย Edge ระดับโลกที่รวดเร็ว","cloudSessionNote":"คลาวด์จะเก็บเซสชันการตรวจสอบสิทธิ์ของคุณไว้เป็นเวลา 1 วัน หากไม่ได้ใช้ก็จะถูกลบโดยอัตโนมัติ","cloudUnstableNote":"ขณะนี้ระบบคลาวด์ไม่เสถียรด้วย Claude Code OAuth ในบางกรณี","cloudConnected":"เชื่อมต่อพร็อกซีคลาวด์แล้ว!","connectingToCloud":"กำลังเชื่อมต่อกับคลาวด์...","verifyingConnection":"กำลังยืนยันการเชื่อมต่อ...","connecting":"กำลังเชื่อมต่อ...","verifying":"กำลังยืนยัน...","connected":"เชื่อมต่อแล้ว!","disableCloudTitle":"ปิดการใช้งานพร็อกซีคลาวด์","disableWarning":"เซสชันการตรวจสอบสิทธิ์ทั้งหมดจะถูกลบออกจากระบบคลาวด์","syncingData":"กำลังซิงค์ข้อมูลล่าสุด...","disablingCloud":"กำลังปิดใช้งานระบบคลาวด์...","syncing":"กำลังซิงค์...","disabling":"กำลังปิดการใช้งาน...","cloudConnectedVerified":"เชื่อมต่อและยืนยัน Cloud Proxy แล้ว!","connectedVerificationPending":"เชื่อมต่อแล้ว — อยู่ระหว่างการยืนยัน","connectedVerificationPendingWithError":"เชื่อมต่อแล้ว — รอการยืนยัน: {error}","cloudDisabledSuccess":"ปิดการใช้งานคลาวด์เรียบร้อยแล้ว","syncedSuccess":"ซิงค์เรียบร้อยแล้ว","failedDisable":"ไม่สามารถปิดการใช้งานระบบคลาวด์","failedEnable":"ไม่สามารถเปิดใช้งานระบบคลาวด์","cloudRequestTimeout":"หมดเวลาคำขอคลาวด์","cloudRequestFailed":"คำขอคลาวด์ล้มเหลว","cloudWorkerUnreachable":"ไม่สามารถเข้าถึงผู้ปฏิบัติงานบนคลาวด์ ตรวจสอบให้แน่ใจว่าบริการคลาวด์กำลังทำงานอยู่ (npm run dev in /cloud)","connectionFailed":"การเชื่อมต่อล้มเหลว","syncFailed":"ไม่สามารถซิงค์ข้อมูลบนคลาวด์","providerModelsTitle":"{provider} — โมเดล","noModelsForProvider":"ไม่มีรุ่นสำหรับผู้ให้บริการรายนี้","chat":"แชท","embedding":"การฝัง","image":"รูปภาพ","custom":"กำหนดเอง","modelsCount":"{count, plural, one {# model} other {# models}}","sectionTitle":"Integration Surface","sectionDescription":"OpenAI-compatible APIs and operational protocol endpoints","tabApis":"OpenAI-compatible APIs","tabProtocols":"Protocols","tabsAria":"Endpoint sections","protocolsTitle":"Protocols","protocolsDescription":"MCP and A2A are first-class endpoints with dedicated observability and controls.","mcpCardTitle":"MCP Server","mcpCardDescription":"Model Context Protocol over stdio","a2aCardTitle":"A2A Server","a2aCardDescription":"Agent2Agent JSON-RPC endpoint","protocolToolsLabel":"Tools","protocolTasksLabel":"Tasks","protocolActiveStreamsLabel":"Active streams","protocolLastActivity":"Last activity","quickStart":"Quick Start","openMcpDashboard":"Open MCP management","openA2aDashboard":"Open A2A management","mcpQuickStartTitle":"MCP Quick Start","mcpQuickStartStep1":"Run the MCP server via `omniroute --mcp`.","mcpQuickStartStep2":"Configure your MCP client to connect over stdio transport.","mcpQuickStartStep3":"Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.","a2aQuickStartTitle":"A2A Quick Start","a2aQuickStartStep1":"Discover the agent card at `/.well-known/agent.json`.","a2aQuickStartStep2":"Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.","a2aQuickStartStep3":"Track and control tasks using `tasks/get` and `tasks/cancel`.","completionsLegacy":"Completions (Legacy)","completionsLegacyDesc":"Legacy OpenAI text completions — accepts both prompt string and messages array format","categorySearch":"Search & Discovery","webSearch":"Web Search","webSearchDesc":"Unified web search across multiple providers with automatic failover and caching","searchProvider":"Search Provider","searchProviderDesc":"This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected."},"mcpDashboard":{"loading":"Loading MCP dashboard...","activate":"activate","deactivate":"deactivate","confirmSwitchCombo":"Confirm {action} combo \\"{combo}\\"?","switchComboFailed":"Failed to switch combo state.","switchComboSuccess":"Combo \\"{combo}\\" updated.","confirmApplyProfile":"Apply resilience profile \\"{profile}\\"?","applyProfileFailed":"Failed to apply resilience profile.","applyProfileSuccess":"Profile \\"{profile}\\" applied.","confirmResetBreakers":"Reset all circuit breakers?","resetBreakersFailed":"Failed to reset circuit breakers.","resetBreakersSuccess":"Circuit breakers reset.","processStatus":"Process status","online":"Online","offline":"Offline","pid":"PID","sessionUptime":"Session uptime","lastHeartbeat":"Last heartbeat","activity24h":"Activity (24h)","totalCalls":"Total calls","successRate":"Success rate","avgLatency":"Avg latency","topTools":"Top tools","noToolCalls24h":"No tool calls in the last 24 hours.","runtimeDetails":"Runtime details","transport":"Transport","scopesEnforced":"Scopes enforced","yes":"yes","no":"no","lastCall":"Last call","heartbeatPath":"Heartbeat path","operationalControls":"Operational controls","switchCombo":"Switch combo","inactive":"inactive","active":"active","activateCombo":"Activate combo","deactivateCombo":"Deactivate combo","applyResilienceProfile":"Apply resilience profile","profileAggressive":"aggressive","profileBalanced":"balanced","profileConservative":"conservative","applyProfile":"Apply profile","resetCircuitBreakers":"Reset circuit breakers","resetCircuitBreakersHelp":"Clears current breaker state and failure counters for providers.","resetAllBreakers":"Reset all breakers","toolsAndScopes":"Tools and scopes","tableTool":"Tool","tableScopes":"Scopes","tablePhase":"Phase","tableAudit":"Audit","auditLog":"Audit log","auditSummary":"Calls: {total} | page {page} of {totalPages}","allTools":"All tools","allResults":"All results","success":"Success","failure":"Failure","apiKeyIdPlaceholder":"apiKeyId","loadingAuditEntries":"Loading audit entries...","noAuditEntriesForFilters":"No audit entries found for current filters.","tableTimestamp":"Timestamp","tableDuration":"Duration","tableResult":"ผลลัพธ์","tableApiKey":"คีย์เอพีไอ","failed":"ล้มเหลว","previous":"ก่อนหน้า","next":"ต่อไป"},"a2aDashboard":{"loading":"กำลังโหลดแดชบอร์ด A2A...","confirmCancelTask":"ยกเลิกงาน {taskId}?","cancelTaskFailed":"ยกเลิกงานไม่สำเร็จ","cancelTaskSuccess":"งาน {taskId} ถูกยกเลิก","smokeSendFailed":"message/send smoke test failed.","smokeSendSuccessWithTask":"message/send ok (task {taskId}).","smokeSendSuccess":"message/send ok.","smokeStreamFailed":"message/stream smoke test failed.","smokeStreamSuccessWithTask":"message/stream ok (task {taskId}{stateSuffix}).","smokeStreamNoTaskId":"message/stream finished without task id.","health":"Health","ok":"ok","totalTasks":"Total tasks","activeStreams":"Active streams","lastTask":"Last task","taskStateOverview":"Task state overview","state":{"submitted":"submitted","working":"working","completed":"completed","failed":"ล้มเหลว","cancelled":"cancelled"},"agentCard":"Agent card","version":"Version","url":"URL","capabilities":"Capabilities","agentCardNotAvailable":"Agent card not available.","quickValidation":"Quick validation","quickValidationDescription":"Executes smoke calls through the live `/a2a` endpoint.","runMessageSend":"Run message/send","runMessageStream":"Run message/stream","taskManagement":"Task management","taskSummary":"{total} tasks | page {page} of {totalPages}","allStates":"all","allSkills":"all skills","loadingTasks":"Loading tasks...","noTasksForFilters":"No tasks found for current filters.","tableTask":"Task","tableSkill":"Skill","tableState":"State","tableUpdated":"Updated","tableActions":"Actions","view":"View","cancel":"Cancel","previous":"ก่อนหน้า","next":"ต่อไป","taskDetail":"Task detail","close":"Close","metadata":"Metadata","events":"Events","artifacts":"Artifacts"},"health":{"title":"สุขภาพของระบบ","description":"การตรวจสอบอินสแตนซ์ OmniRoute ของคุณแบบเรียลไทม์","healthy":"ดีต่อสุขภาพ","degraded":"เสื่อมโทรม","down":"ลง","uptime":"เวลาทำงาน","memory":"หน่วยความจำ","memoryRss":"หน่วยความจำ (RSS)","heap":"กอง","cpu":"ซีพียู","database":"ฐานข้อมูล","version":"เวอร์ชัน","lastCheck":"ตรวจสอบครั้งสุดท้าย","providerHealth":"สุขภาพของผู้ให้บริการ","systemMetrics":"ตัวชี้วัดของระบบ","tokenHealth":"โทเค็นสุขภาพ","refreshAll":"รีเฟรชทั้งหมด","checkNow":"ตรวจสอบตอนนี้","loadingHealth":"กำลังโหลดข้อมูลสุขภาพ...","failedToLoad":"ไม่สามารถโหลดข้อมูลสุขภาพ: {error}","retry":"ลองอีกครั้ง","allOperational":"ใช้งานได้ทุกระบบ","issuesDetected":"ตรวจพบปัญหาของระบบ","updatedAt":"อัปเดต {time}","latency":"เวลาแฝง","latencyP50":"หน้า 50","latencyP95":"หน้า 95","latencyP99":"หน้า 99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"คำขอทั้งหมด","noDataYet":"ยังไม่มีข้อมูล","promptCache":"แคชพร้อมท์","entries":"รายการ","hitRate":"อัตราการเข้าชม","hitsMisses":"ฮิต / พลาด","signatureCache":"แคชลายเซ็น","signatureDefaults":"ค่าเริ่มต้น","signatureTool":"เครื่องมือ","signatureFamily":"ครอบครัว","signatureSession":"เซสชัน","recovering":"กำลังฟื้นตัว","noCBData":"ไม่มีข้อมูลเซอร์กิตเบรกเกอร์ ทำการร้องขอบางอย่างก่อน","providerHealthStatusAria":"สถานะสุขภาพของผู้ให้บริการ","issuesLabel":"ตรวจพบปัญหา","operational":"การดำเนินงาน","providers":"ผู้ให้บริการ","healthyCount":"{count} สุขภาพแข็งแรง","nodeVersion":"โหนด {version}","failures":"{count} ล้มเหลว","failuresPlural":"{count} ล้มเหลว","lastFailure":"สุดท้าย","rateLimitStatus":"สถานะการจำกัดอัตรา","activeLimiters":"{count} ตัวจำกัดที่ใช้งานอยู่","activeLimitersPlural":"{count} ตัวจำกัดที่ใช้งานอยู่","queued":"เข้าคิว","queuedCount":"{count} เข้าคิวแล้ว","running":"วิ่ง","runningCount":"{count} กำลังวิ่งอยู่","ok":"ตกลง","activeLockouts":"การล็อกที่ใช้งานอยู่","resetConfirm":"รีเซ็ตเซอร์กิตเบรกเกอร์ทั้งหมดเป็นสถานะปกติหรือไม่ การดำเนินการนี้จะล้างจำนวนความล้มเหลวทั้งหมดและกู้คืนผู้ให้บริการทั้งหมดกลับสู่สถานะการปฏิบัติงาน","resetAllTitle":"รีเซ็ตเบรกเกอร์วงจรทั้งหมดให้อยู่ในสถานะปกติ","resetting":"กำลังรีเซ็ต...","resetAll":"รีเซ็ตทั้งหมด","until":"จนถึง {time}","activeProviders":"{count} active","monitoredProviders":"{count} monitored","configuredProvidersLabel":"กำหนดค่าในแดชบอร์ด","configuredProvidersHint":"ผู้ให้บริการที่มีข้อมูลรับรองบันทึกไว้ใน /dashboard/providers โดยไม่คำนึงถึงสถานะรันไทม์","activeProvidersHint":"ผู้ให้บริการที่กำหนดค่าไว้เปิดใช้งานอยู่สำหรับการร้องขอการกำหนดเส้นทาง","monitoredProvidersHint":"ผู้ให้บริการในปัจจุบันได้รับการติดตามโดยเครื่องตรวจสุขภาพของเซอร์กิตเบรกเกอร์"},"limits":{"title":"ขีดจำกัดและโควต้า","rateLimit":"ขีดจำกัดอัตรา","remaining":"ที่เหลืออยู่","requestsPerMinute":"คำขอ/นาที","tokensPerMinute":"โทเค็น/นาที","dailyLimit":"ขีดจำกัดรายวัน"},"logs":{"title":"บันทึก","requestLogs":"ขอบันทึก","proxyLogs":"บันทึกพร็อกซี","auditLog":"บันทึกการตรวจสอบ","console":"คอนโซล","auditLogDesc":"การดำเนินการด้านการดูแลระบบและเหตุการณ์ด้านความปลอดภัย","loading":"กำลังโหลด...","refresh":"รีเฟรช","filterByAction":"กรองตามการกระทำ...","filterByActor":"กรองตามนักแสดง...","filterEntriesAria":"กรองรายการบันทึกการตรวจสอบ","filterByActionTypeAria":"กรองตามประเภทการกระทำ","filterByActorAria":"กรองตามนักแสดง","refreshAuditLogAria":"รีเฟรชบันทึกการตรวจสอบ","tableAria":"รายการบันทึกการตรวจสอบ","failedFetchAuditLog":"ดึงข้อมูลบันทึกการตรวจสอบไม่สำเร็จ","showing":"กำลังแสดงรายการ {count} (ออฟเซ็ต {offset})","search":"ค้นหา","timestamp":"การประทับเวลา","action":"การดำเนินการ","actor":"นักแสดง","target":"เป้าหมาย","details":"รายละเอียด","ipAddress":"ที่อยู่ IP","notAvailable":"—","noEntries":"ไม่พบรายการบันทึกการตรวจสอบ","previous":"ก่อนหน้า","next":"ถัดไป"},"onboarding":{"welcome":"ยินดีต้อนรับ","security":"ความปลอดภัย","test":"ทดสอบ","ready":"พร้อม!","setPassword":"ตั้งรหัสผ่าน","addProvider":"เพิ่มผู้ให้บริการรายแรกของคุณ","getStarted":"เริ่มต้นเลย","skip":"ข้าม","skipWizard":"ข้ามวิซาร์ดไปเลย","skipPassword":"ข้ามการตั้งค่ารหัสผ่าน","skipAndContinue":"ข้ามและดำเนินการต่อ","passwordLabel":"รหัสผ่าน","confirmPassword":"ยืนยันรหัสผ่าน","enterPassword":"ใส่รหัสผ่าน","confirmPasswordPlaceholder":"ยืนยันรหัสผ่าน","passwordsMismatch":"รหัสผ่านไม่ตรงกัน","setupComplete":"ตั้งค่าเสร็จสมบูรณ์!","goToDashboard":"ไปที่แดชบอร์ด →","welcomeDesc":"OmniRoute คือพร็อกซี AI API ในพื้นที่ของคุณ โดยกำหนดเส้นทางคำขอไปยังผู้ให้บริการ AI หลายรายด้วยการปรับสมดุลโหลด การเฟลโอเวอร์ และการติดตามการใช้งาน","multiProvider":"ผู้ให้บริการหลายราย","usageTracking":"การติดตามการใช้งาน","apiKeyMgmt":"การจัดการคีย์ API","securityDesc":"ตั้งรหัสผ่านเพื่อปกป้องแดชบอร์ดของคุณ หรือข้ามไปก่อน","providerDesc":"เชื่อมต่อผู้ให้บริการ AI รายแรกของคุณ คุณสามารถเพิ่มมากขึ้นในภายหลัง","apiKeyRequired":"คีย์ API (จำเป็น)","customUrlOptional":"URL ที่กำหนดเอง (ไม่บังคับ)","testDesc":"มาตรวจสอบการเชื่อมต่อผู้ให้บริการของคุณใช้งานได้","runTest":"เรียกใช้การทดสอบการเชื่อมต่อ","testingConnection":"กำลังทดสอบการเชื่อมต่อ...","connectionSuccessful":"การเชื่อมต่อสำเร็จ! ผู้ให้บริการของคุณพร้อมแล้ว","noProviderFound":"ไม่พบผู้ให้บริการ คุณสามารถเพิ่มได้จากแดชบอร์ดในภายหลัง","testFailed":"การทดสอบล้มเหลว แต่คุณสามารถกำหนดค่าได้ในภายหลัง","couldNotTest":"ไม่สามารถทดสอบได้ในขณะนี้ คุณสามารถทดสอบได้จากแดชบอร์ด","doneDesc":"คุณพร้อมแล้ว! อินสแตนซ์ OmniRoute ของคุณได้รับการกำหนดค่าและพร้อมที่จะส่งคำขอ AI ของพร็อกซี","yourEndpoint":"ปลายทางของคุณ:","continue":"ดำเนินการต่อ","retry":"ลองอีกครั้ง","failedSetPassword":"ไม่สามารถตั้งรหัสผ่านได้ ลองอีกครั้ง","failedAddProvider":"ไม่สามารถเพิ่มผู้ให้บริการ ลองอีกครั้ง","connectionError":"ข้อผิดพลาดในการเชื่อมต่อ โปรดลองอีกครั้ง","provider":"ผู้ให้บริการ"},"providers":{"title":"ผู้ให้บริการ","addProvider":"เพิ่มผู้ให้บริการ","editProvider":"แก้ไขผู้ให้บริการ","deleteProvider":"ลบผู้ให้บริการ","noProviders":"ไม่มีการกำหนดค่าผู้ให้บริการ","modelAvailability":"ความพร้อมของรุ่น","accounts":"บัญชี","newAccount":"บัญชีใหม่","deleteConfirm":"คุณแน่ใจหรือไม่ว่าต้องการลบผู้ให้บริการรายนี้","testing":"กำลังทดสอบ...","testConnection":"ทดสอบการเชื่อมต่อ","testSuccess":"การเชื่อมต่อสำเร็จ","testFailed":"การเชื่อมต่อล้มเหลว","available":"มีจำหน่าย","cooldown":"คูลดาวน์","unavailable":"ไม่พร้อมใช้งาน","unknown":"ไม่ทราบ","oauthLabel":"OAuth","compatibleLabel":"เข้ากันได้","chat":"แชท","responses":"คำตอบ","messages":"ข้อความ","oauthProviders":"ผู้ให้บริการ OAuth","freeProviders":"ผู้ให้บริการฟรี","apiKeyProviders":"ผู้ให้บริการคีย์ API","compatibleProviders":"ผู้ให้บริการที่เข้ากันได้กับคีย์ API","testAll":"ทดสอบทั้งหมด","testAllOAuth":"ทดสอบการเชื่อมต่อ OAuth ทั้งหมด","testAllFree":"ทดสอบการเชื่อมต่อฟรีทั้งหมด","testAllApiKey":"ทดสอบการเชื่อมต่อคีย์ API ทั้งหมด","testAllCompatible":"ทดสอบการเชื่อมต่อที่เข้ากันได้ทั้งหมด","connected":"{count} เชื่อมต่อแล้ว","errorCount":"{count} ข้อผิดพลาด ({code})","errorCountNoCode":"{count} เกิดข้อผิดพลาด","noConnections":"ไม่มีการเชื่อมต่อ","disabled":"ปิดการใช้งาน","enableProvider":"เปิดใช้งานผู้ให้บริการ","disableProvider":"ปิดการใช้งานผู้ให้บริการ","testResults":"ผลการทดสอบ","noCompatibleYet":"ยังไม่มีการเพิ่มผู้ให้บริการที่เข้ากันได้","compatibleHint":"ใช้ปุ่มด้านบนเพื่อเพิ่มตำแหน่งข้อมูลที่รองรับ OpenAI หรือ Anthropic","addOpenAICompatible":"เพิ่มการรองรับ OpenAI","addAnthropicCompatible":"เพิ่มความเข้ากันได้ทางมานุษยวิทยา","addNewProvider":"เพิ่มผู้ให้บริการใหม่","backToProviders":"กลับไปที่ผู้ให้บริการ","configureNewProvider":"กำหนดค่าผู้ให้บริการ AI ใหม่เพื่อใช้กับแอปพลิเคชันของคุณ","providerLabel":"ผู้ให้บริการ","selectProvider":"เลือกผู้ให้บริการ","selectedProvider":"ผู้ให้บริการที่เลือก","authMethod":"วิธีการรับรองความถูกต้อง","apiKeyLabel":"คีย์ API","apiKeyRequired":"จำเป็นต้องมีคีย์ API","selectProviderRequired":"โปรดเลือกผู้ให้บริการ","enterApiKey":"ป้อนคีย์ API ของคุณ","apiKeySecure":"รหัส API ของคุณจะถูกเข้ารหัสและเก็บไว้อย่างปลอดภัย","oauth2Connect":"เชื่อมต่อกับ OAuth2","oauth2Label":"OAuth2","oauth2Desc":"เชื่อมต่อบัญชีของคุณโดยใช้การตรวจสอบสิทธิ์ OAuth2","displayName":"ชื่อที่แสดง","displayNamePlaceholder":"เช่น Production API, Dev Environment","displayNameHint":"ไม่จำเป็น ชื่อที่จำง่ายเพื่อระบุการกำหนดค่านี้","active":"ใช้งานอยู่","activeDescription":"เปิดใช้งานผู้ให้บริการรายนี้เพื่อใช้ในแอปพลิเคชันของคุณ","cancel":"ยกเลิก","createProvider":"สร้างผู้ให้บริการ","failedCreate":"ไม่สามารถสร้างผู้ให้บริการได้","errorOccurred":"เกิดข้อผิดพลาด โปรดลองอีกครั้ง","modelStatus":"สถานะโมเดล","allModelsOperational":"ใช้งานได้ทุกรุ่น","modelsWithIssues":"{count} โมเดลที่มีปัญหา","allModelsNormal":"ทุกรุ่นตอบสนองได้ปกติ","cooldownCleared":"ล้างคูลดาวน์แล้วสำหรับ {model}","failedClearCooldown":"ไม่สามารถล้างคูลดาวน์ได้","loadingAvailability":"กำลังโหลดรุ่นที่มีจำหน่าย...","clearCooldown":"ชัดเจน","clearing":"กำลังล้างข้อมูล...","until":"จนถึง {time}","providerTestFailed":"การทดสอบผู้ให้บริการล้มเหลว","modeTest":"{mode} ทดสอบ","passedCount":"{count} ผ่านไป","failedCount":"{count} ล้มเหลว","testedCount":"{count} ทดสอบแล้ว","millisecondsAbbr":"{value}ms","okShort":"ตกลง","errorShort":"ข้อผิดพลาด","noActiveConnectionsInGroup":"ไม่พบการเชื่อมต่อที่ใช้งานอยู่สำหรับกลุ่มนี้","allTestsPassed":"ผ่านการทดสอบ {total} ทั้งหมด","testSummary":"{passed}/{total} ผ่านไป {failed} ล้มเหลว","nameLabel":"ชื่อ","prefixLabel":"คำนำหน้า","baseUrlLabel":"URL ฐาน","apiTypeLabel":"ประเภทเอพีไอ","prefixHint":"จำเป็น คำนำหน้าเฉพาะสำหรับชื่อรุ่น","nameHint":"จำเป็น ป้ายกำกับที่เป็นมิตรสำหรับโหนดนี้","baseUrlHint":"จำเป็น  URL ฐาน API ของผู้ให้บริการ","anthropicPrefixPlaceholder":"ac-ผลิตภัณฑ์","openaiPrefixPlaceholder":"oc-ผลิตภัณฑ์","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"ตรวจสอบการเชื่อมต่อ","validating":"กำลังตรวจสอบ...","connectionValid":"การเชื่อมต่อถูกต้อง!","connectionFailed":"การเชื่อมต่อล้มเหลว ตรวจสอบ URL และรหัส","testKeyLabel":"ทดสอบคีย์ API","testKeyPlaceholder":"sk-... (สำหรับการตรวจสอบเท่านั้น)","providerNotFound":"ไม่พบผู้ให้บริการ","deleteConnectionConfirm":"ลบการเชื่อมต่อนี้ใช่ไหม","failedSetAlias":"ไม่สามารถตั้งชื่อแทนได้","failedSaveConnection":"ไม่สามารถบันทึกการเชื่อมต่อ","failedSaveConnectionRetry":"ไม่สามารถบันทึกการเชื่อมต่อ โปรดลองอีกครั้ง","failedRetestConnection":"ล้มเหลวในการทดสอบการเชื่อมต่ออีกครั้ง","deleteCompatibleNodeConfirm":"ลบโหนดที่เข้ากันได้ {type} นี้หรือไม่","anthropicCompatibleDetails":"รายละเอียดที่เข้ากันได้กับมานุษยวิทยา","openaiCompatibleDetails":"รายละเอียดที่เข้ากันได้กับ OpenAI","messagesApi":"API ข้อความ","responsesApi":"API การตอบสนอง","chatCompletions":"เสร็จสิ้นการแชท","importingModels":"กำลังนำเข้า...","importFromModels":"นำเข้าจาก /models","clearAllModels":"ล้างทุกรุ่น","clearAllModelsConfirm":"คุณแน่ใจหรือไม่ว่าต้องการลบโมเดลทั้งหมดสำหรับผู้ให้บริการรายนี้ สิ่งนี้ไม่สามารถยกเลิกได้","clearAllModelsSuccess":"เคลียร์ทุกรุ่น","clearAllModelsFailed":"ไม่สามารถล้างโมเดลได้","addConnectionToImport":"เพิ่มการเชื่อมต่อเพื่อเปิดใช้งานการนำเข้า","noModelsConfigured":"ไม่มีโมเดลที่กำหนดค่าไว้","connectionCount":"{count} การเชื่อมต่อ","fetchingModels":"กำลังเรียกรุ่นที่มีจำหน่าย...","failedFetchModels":"ดึงข้อมูลโมเดลไม่สำเร็จ","noModelsFound":"ไม่พบรุ่น","importFailed":"การนำเข้าล้มเหลว","noNewModelsAdded":"ไม่มีการเพิ่มโมเดลใหม่","adding":"กำลังเพิ่ม...","importingModelsTitle":"การนำเข้าโมเดล","copyModel":"คัดลอกโมเดล","removeModel":"ลบโมเดล","rateLimitProtected":"ได้รับการคุ้มครอง","rateLimitUnprotected":"ไม่มีการป้องกัน","enableRateLimitProtection":"คลิกเพื่อเปิดใช้งานการป้องกันขีดจำกัดอัตรา","disableRateLimitProtection":"คลิกเพื่อปิดใช้งานการป้องกันขีดจำกัดอัตรา","productionKey":"รหัสการผลิต","enterNewApiKey":"ป้อนคีย์ API ใหม่","optional":"ไม่จำเป็น","anthropicCompatibleName":"เข้ากันได้กับมานุษยวิทยา","openaiCompatibleName":"รองรับ OpenAI","failedImportModels":"ไม่สามารถนำเข้าโมเดลได้","noModelsReturnedFromEndpoint":"ไม่มีโมเดลที่ส่งคืนจากปลายทาง /models","importingModelsProgress":"กำลังนำเข้าโมเดล {current} จาก {total}...","foundModelsStartingImport":"พบ {count} โมเดล กำลังเริ่มนำเข้า...","importingModelById":"กำลังนำเข้า {modelId}...","importSuccessCount":"นำเข้า {count, plural, one {# model} other {# models}} สำเร็จแล้ว!","noNewModelsAddedExisting":"ไม่มีการเพิ่มโมเดลใหม่ (มีอยู่แล้วทั้งหมด)","importDoneCount":"✓ เสร็จแล้ว! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"เกิดข้อผิดพลาดที่ไม่คาดคิด","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"ข้อความ","responsesPath":"การตอบสนอง","chatCompletionsPath":"แชท/เสร็จสิ้น","add":"เพิ่ม","edit":"แก้ไข","delete":"ลบ","anthropic":"มานุษยวิทยา","openai":"OpenAI","singleConnectionPerCompatible":"อนุญาตให้เชื่อมต่อได้เพียงครั้งเดียวต่อโหนดที่เข้ากันได้ เพิ่มโหนดอื่นหากคุณต้องการการเชื่อมต่อเพิ่มเติม","connections":"การเชื่อมต่อ","providerProxyTitleConfigured":"พร็อกซีผู้ให้บริการ: {host}","configured":"กำหนดค่าแล้ว","providerProxyConfigureHint":"กำหนดค่าพร็อกซีสำหรับการเชื่อมต่อทั้งหมดของผู้ให้บริการรายนี้","providerProxy":"พร็อกซีของผู้ให้บริการ","noConnectionsYet":"ยังไม่มีการเชื่อมต่อ","addFirstConnectionHint":"เพิ่มการเชื่อมต่อครั้งแรกของคุณเพื่อเริ่มต้น","addConnection":"เพิ่มการเชื่อมต่อ","availableModels":"รุ่นที่มีจำหน่าย","pageAutoRefresh":"หน้าจะรีเฟรชอัตโนมัติ...","statusDisabled":"ปิดการใช้งาน","statusConnected":"เชื่อมต่อแล้ว","statusRuntimeIssue":"ปัญหารันไทม์","statusAuthFailed":"การตรวจสอบสิทธิ์ล้มเหลว","statusRateLimited":"อัตราจำกัด","statusNetworkIssue":"ปัญหาเครือข่าย","statusTestUnsupported":"ไม่รองรับการทดสอบ","statusUnavailable":"ไม่พร้อมใช้งาน","statusFailed":"ล้มเหลว","statusError":"ข้อผิดพลาด","oauthAccount":"บัญชี OAuth","errorTypeRuntime":"รันไทม์ท้องถิ่น","errorTypeUpstreamAuth":"การรับรองความถูกต้องต้นน้ำ","errorTypeMissingCredential":"ข้อมูลรับรองหายไป","errorTypeRefreshFailed":"รีเฟรชล้มเหลว","errorTypeTokenExpired":"โทเค็นหมดอายุ","errorTypeRateLimited":"อัตราจำกัด","errorTypeUpstreamUnavailable":"อัปสตรีมไม่พร้อมใช้งาน","errorTypeNetworkError":"ข้อผิดพลาดของเครือข่าย","errorTypeTestUnsupported":"ไม่รองรับการทดสอบ","errorTypeUpstreamError":"ข้อผิดพลาดต้นน้ำ","proxySourceGlobal":"ทั่วโลก","proxySourceProvider":"ผู้ให้บริการ","proxySourceKey":"คีย์","proxyConfiguredBySource":"พร็อกซี ({source}): {host}","autoPriority":"อัตโนมัติ: {priority}","proxy":"หนังสือมอบฉันทะ","retestAuthentication":"ทดสอบการรับรองความถูกต้องอีกครั้ง","retest":"ทดสอบซ้ำ","disableConnection":"ปิดการใช้งานการเชื่อมต่อ","enableConnection":"เปิดใช้งานการเชื่อมต่อ","reauthenticateConnection":"ตรวจสอบการเชื่อมต่อนี้อีกครั้ง","proxyConfig":"การกำหนดค่าพร็อกซี","aliasExistsAlert":"มีนามแฝง \\"{alias}\\" อยู่แล้ว โปรดใช้โมเดลอื่นหรือแก้ไขนามแฝงที่มีอยู่","openRouterAnyModelHint":"OpenRouter รองรับทุกรุ่น เพิ่มโมเดลและสร้างนามแฝงเพื่อการเข้าถึงที่รวดเร็ว","modelIdFromOpenRouter":"รหัสรุ่น (จาก OpenRouter)","openRouterModelPlaceholder":"มานุษยวิทยา / Claude-3-opus","customModels":"โมเดลที่กำหนดเอง","customModelsHint":"เพิ่มรหัสรุ่นที่ไม่ได้อยู่ในรายการเริ่มต้น สิ่งเหล่านี้จะพร้อมใช้งานสำหรับการกำหนดเส้นทาง","modelId":"รหัสรุ่น","customModelPlaceholder":"เช่น gpt-4.5-เทอร์โบ","loading":"กำลังโหลด...","removeCustomModel":"ลบโมเดลที่กำหนดเอง","noCustomModels":"ยังไม่มีการเพิ่มโมเดลที่กำหนดเอง","allSuggestedAliasesExist":"มีนามแฝงที่แนะนำทั้งหมดอยู่แล้ว โปรดเลือกรุ่นอื่นหรือลบนามแฝงที่ขัดแย้งกัน","failedSaveCustomModel":"บันทึกโมเดลที่กำหนดเองไม่สำเร็จ","modelAddedSuccess":"เพิ่มโมเดล {modelId} สำเร็จแล้ว","failedAddModelTryAgain":"ไม่สามารถเพิ่มโมเดล โปรดลองอีกครั้ง","failedSaveImportedModel":"ไม่สามารถบันทึกแบบจำลองที่นำเข้าไปยังฐานข้อมูลที่กำหนดเอง","failedImportModelsTryAgain":"ไม่สามารถนำเข้าโมเดลได้ โปรดลองอีกครั้ง","failedRemoveModelFromDatabase":"ไม่สามารถลบโมเดลออกจากฐานข้อมูล","modelRemovedSuccess":"ลบโมเดลสำเร็จแล้ว","failedDeleteModelTryAgain":"ลบโมเดลไม่สำเร็จ โปรดลองอีกครั้ง","compatibleModelsDescription":"เพิ่มโมเดลที่เข้ากันได้กับ {type} ด้วยตนเองหรือนำเข้าจากตำแหน่งข้อมูล /models","anthropicCompatibleModelPlaceholder":"คลอด-3-บทประพันธ์-20240229","openaiCompatibleModelPlaceholder":"GPT-4o","apiKeyValidationFailed":"การตรวจสอบคีย์ API ล้มเหลว โปรดตรวจสอบรหัสของคุณแล้วลองอีกครั้ง","addProviderApiKeyTitle":"เพิ่ม {provider} คีย์ API","checking":"กำลังตรวจสอบ...","check":"ตรวจสอบ","valid":"ถูกต้อง","invalid":"ไม่ถูกต้อง","creating":"กำลังสร้าง...","validationChecksAnthropicCompatible":"การตรวจสอบความถูกต้องจะตรวจสอบ {provider} โดยการตรวจสอบคีย์ API","validationChecksOpenAiCompatible":"การตรวจสอบความถูกต้องจะตรวจสอบ {provider} ผ่าน /models บน URL ฐานของคุณ","priorityLabel":"ลำดับความสำคัญ","saving":"กำลังบันทึก...","save":"บันทึก","editConnection":"แก้ไขการเชื่อมต่อ","accountName":"ชื่อบัญชี","email":"อีเมล","healthCheckMinutes":"ตรวจสุขภาพ (ขั้นต่ำ)","healthCheckHint":"ช่วงเวลาการรีเฟรชโทเค็นเชิงรุก 0 = ปิดการใช้งาน","groupLabel":"Environment","groupPlaceholder":"e.g. eKaizen, Personal","failedTestConnection":"ทดสอบการเชื่อมต่อไม่สำเร็จ","failed":"ล้มเหลว","leaveBlankKeepCurrentApiKey":"เว้นว่างไว้เพื่อเก็บคีย์ API ปัจจุบันไว้","editCompatibleTitle":"แก้ไข {type} เข้ากันได้","compatibleBaseUrlHint":"Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.","apiKeyForCheck":"คีย์ API (สำหรับการตรวจสอบ)","compatibleProdPlaceholder":"{type} เข้ากันได้ (ผลิตภัณฑ์)","providerTestTimeout":"Provider test timed out — too many connections to test at once","advancedSettings":"Advanced Settings","chatPathLabel":"Chat Endpoint Path","chatPathPlaceholder":"/chat/completions","chatPathHint":"Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)","modelsPathLabel":"Models Endpoint Path","modelsPathPlaceholder":"/models","modelsPathHint":"Custom models path for validation (e.g. /v4/models)","builtInModels":"Built-in models","builtInModelsHint":"Registry models for this provider. Use the pencil to set compatibility options.","normalizeToolCallIdLabel":"Normalize tool call IDs to 9 characters (e.g. Mistral)","preserveDeveloperRoleLabel":"Keep OpenAI Responses developer role (do not map to system)","compatAdjustmentsTitle":"Compatibility","compatButtonLabel":"Compatibility","compatToolIdShort":"Tool ID 9","compatDeveloperShort":"Developer role","compatDoNotPreserveDeveloper":"Do not preserve developer role","compatBadgeNoPreserve":"No preserve","compatProtocolLabel":"Client request protocol","compatProtocolHint":"These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).","compatProtocolOpenAI":"OpenAI Chat Completions","compatProtocolOpenAIResponses":"OpenAI Responses API","compatProtocolClaude":"Anthropic Messages","tokenRefreshed":"Token refreshed successfully","tokenRefreshFailed":"Token refresh failed","compatBadgeUpstreamHeaders":"Headers","compatUpstreamAddRow":"Add header","compatUpstreamHeaderName":"Header name","compatUpstreamHeaderValue":"Value","compatUpstreamHeadersHint":"High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.","compatUpstreamHeadersLabel":"Extra upstream headers","compatUpstreamRemoveRow":"Remove row","autoSync":"ซิงค์อัตโนมัติ","autoSyncTooltip":"รีเฟรชรายการโมเดลโดยอัตโนมัติทุกๆ 24 ชั่วโมง (กำหนดค่าได้ผ่าน MODEL_SYNC_INTERVAL_HOURS)","autoSyncEnabled":"เปิดใช้งานการซิงค์อัตโนมัติ — โมเดลจะรีเฟรชเป็นระยะ","autoSyncDisabled":"ปิดใช้งานการซิงค์อัตโนมัติแล้ว","autoSyncToggleFailed":"ไม่สามารถสลับการซิงค์อัตโนมัติ","allModelsAlreadyImported":"นำเข้าโมเดลทั้งหมดแล้ว","noNewModelsToImport":"ไม่มีโมเดลใหม่ที่จะนำเข้า — โมเดลทั้งหมดมีอยู่แล้วในรีจิสทรีหรือรายการโมเดลที่กำหนดเอง","skippingExistingModels":"ข้าม {count} โมเดลที่มีอยู่"},"settings":{"title":"การตั้งค่า","general":"ทั่วไป","security":"ความปลอดภัย","appearance":"ลักษณะที่ปรากฏ","routing":"การกำหนดเส้นทาง","cache":"แคช","resilience":"ความยืดหยุ่น","systemPrompt":"พร้อมท์ระบบ","thinkingBudget":"คิดงบประมาณ","proxy":"หนังสือมอบฉันทะ","pricing":"ราคา","storage":"ที่เก็บของ","policies":"นโยบาย","ipFilter":"ตัวกรองไอพี","comboDefaults":"ค่าเริ่มต้นคอมโบ","fallbackChains":"โซ่สำรอง","changePassword":"เปลี่ยนรหัสผ่าน","enablePassword":"เปิดใช้งานรหัสผ่าน","darkMode":"โหมดมืด","lightMode":"โหมดแสง","systemTheme":"ธีมของระบบ","enableCache":"เปิดใช้งานแคช","cacheTTL":"แคช TTL","maxCacheSize":"ขนาดแคชสูงสุด","clearCache":"ล้างแคช","cacheHits":"การเข้าชมแคช","cacheMisses":"แคชพลาด","hitRate":"อัตราการเข้าชม","cacheEntries":"รายการแคช","circuitBreaker":"เบรกเกอร์","retryPolicy":"นโยบายการลองอีกครั้ง","maxRetries":"ลองใหม่สูงสุด","retryDelay":"ลองล่าช้าอีกครั้ง","timeoutMs":"หมดเวลา (มิลลิวินาที)","enableSystemPrompt":"เปิดใช้งานพร้อมท์ระบบ","systemPromptText":"ข้อความแจ้งของระบบ","enableThinking":"เปิดใช้งานการคิด","maxThinkingTokens":"โทเค็นการคิดสูงสุด","enableProxy":"เปิดใช้งานพร็อกซี","proxyUrl":"URL พร็อกซี","pricingRates":"รูปแบบอัตราราคา","currentPricing":"ภาพรวมราคาปัจจุบัน","loadingPricing":"กำลังโหลดข้อมูลราคา...","noPricing":"ไม่มีข้อมูลราคา","input":"อินพุต","output":"เอาท์พุต","cached":"แคช","reasoning":"การใช้เหตุผล","cacheCreation":"การสร้างแคช","customPricing":"ราคาที่กำหนดเอง","databaseSize":"ขนาดฐานข้อมูล","backupDb":"ฐานข้อมูลสำรอง","restoreDb":"กู้คืนฐานข้อมูล","exportData":"ส่งออกข้อมูล","importData":"นำเข้าข้อมูล","clearData":"ล้างข้อมูลทั้งหมด","clearDataConfirm":"การดำเนินการนี้จะลบข้อมูลทั้งหมดอย่างถาวร คุณแน่ใจเหรอ?","enableRequestLogs":"เปิดใช้งานบันทึกคำขอ","logRetention":"การเก็บรักษาบันทึก","ipWhitelist":"รายการ IP ที่อนุญาต","ipBlacklist":"บัญชีดำไอพี","addIP":"เพิ่มไอพี","savedSuccessfully":"บันทึกการตั้งค่าเรียบร้อยแล้ว","ai":"เอไอ","advanced":"ขั้นสูง","localMode":"โหมดท้องถิ่น — ข้อมูลทั้งหมดที่จัดเก็บไว้ในเครื่องของคุณ","settingsSectionsAria":"ส่วนการตั้งค่า","switchThemes":"สลับระหว่างธีมสว่างและธีมมืด","themeSelectionAria":"การเลือกธีม","themeLight":"เบา","themeDark":"มืด","themeSystem":"ระบบ","hideHealthLogs":"ซ่อนบันทึกการตรวจสุขภาพ","hideHealthLogsDesc":"เมื่อเปิด ให้ระงับข้อความ [HealthCheck] ในคอนโซลเซิร์ฟเวอร์","themeAccent":"สีธีม","themeAccentDesc":"เลือกสีสำเร็จรูปหรือสร้างธีมของคุณเองด้วยสีเดียว","themeCreate":"สร้างธีม","themeCustom":"ธีมกำหนดเอง","themeBlue":"น้ำเงิน","themeRed":"แดง","themeGreen":"เขียว","themeViolet":"ม่วง","themeOrange":"ส้ม","themeCyan":"ไซแอน","promptCache":"แคชพร้อมท์","flushCache":"ล้างแคช","flushing":"กำลังฟลัชชิง…","size":"ขนาด","hits":"ฮิต","evictions":"การขับไล่","loadingCacheStats":"กำลังโหลดสถิติแคช...","globalProxy":"พร็อกซีทั่วโลก","globalProxyDesc":"กำหนดค่าพร็อกซีขาออกส่วนกลางสำหรับการเรียก API ทั้งหมด ผู้ให้บริการแต่ละราย คอมโบ และคีย์สามารถแทนที่สิ่งนี้ได้","noGlobalProxy":"ไม่มีการกำหนดค่าพร็อกซีส่วนกลาง","globalLabel":"ทั่วโลก","configure":"กำหนดค่า","globalSystemPrompt":"พร้อมท์ระบบทั่วโลก","systemPromptDesc":"แทรกเข้าไปในคำขอทั้งหมดในระดับพร็อกซี","saved":"บันทึกแล้ว","systemPromptPlaceholder":"เข้าสู่ระบบพร้อมท์ให้แทรกคำขอทั้งหมด...","systemPromptHint":"พรอมต์นี้ถูกเพิ่มไว้หน้าข้อความระบบของทุกคำขอ ใช้สำหรับคำแนะนำสากล หลักเกณฑ์ด้านความปลอดภัย หรือกฎการจัดรูปแบบการตอบกลับ","chars":"{count} ตัวอักษร","thinkingBudgetTitle":"คิดงบประมาณ","thinkingBudgetDesc":"ควบคุมการใช้โทเค็นการให้เหตุผลของ AI ในคำขอทั้งหมด","passthrough":"ทะลุผ่าน","passthroughDesc":"ไม่มีการเปลี่ยนแปลง — ลูกค้าควบคุมงบประมาณการคิด","auto":"อัตโนมัติ","autoDesc":"ยกเลิกการกำหนดค่าการคิดทั้งหมด — ให้ผู้ให้บริการตัดสินใจ","custom":"กำหนดเอง","customDesc":"กำหนดงบประมาณโทเค็นคงที่สำหรับคำขอทั้งหมด","adaptive":"ปรับตัวได้","adaptiveDesc":"ปรับขนาดงบประมาณตามความซับซ้อนของคำขอ","effortNone":"ไม่มี (0 โทเค็น)","effortLow":"ต่ำ (โทเค็น 1K)","effortMedium":"ปานกลาง (โทเค็น 10,000)","effortHigh":"สูง (โทเค็น 128K)","tokenBudget":"งบประมาณโทเค็น","tokens":"โทเค็น","baseEffortLevel":"ระดับความพยายามพื้นฐาน","adaptiveHint":"โหมดการปรับเปลี่ยนจะปรับขนาดจากระดับพื้นฐานนี้โดยอิงตามจำนวนข้อความ การใช้เครื่องมือ และความยาวข้อความแจ้ง","requireLogin":"จำเป็นต้องเข้าสู่ระบบ","requireLoginDesc":"เมื่อเปิด แดชบอร์ดต้องใช้รหัสผ่าน เมื่อปิด ให้เข้าถึงโดยไม่ต้องเข้าสู่ระบบ","currentPassword":"รหัสผ่านปัจจุบัน","enterCurrentPassword":"ป้อนรหัสผ่านปัจจุบัน","newPassword":"รหัสผ่านใหม่","enterNewPassword":"ป้อนรหัสผ่านใหม่","confirmPassword":"ยืนยันรหัสผ่านใหม่","confirmPasswordPlaceholder":"ยืนยันรหัสผ่านใหม่","passwordsNoMatch":"รหัสผ่านไม่ตรงกัน","passwordUpdated":"อัปเดตรหัสผ่านเรียบร้อยแล้ว","failedUpdatePassword":"ไม่สามารถอัปเดตรหัสผ่าน","errorOccurred":"เกิดข้อผิดพลาด","updatePassword":"อัปเดตรหัสผ่าน","setPassword":"ตั้งรหัสผ่าน","apiEndpointProtection":"การป้องกันปลายทาง API","requireAuthModels":"ต้องใช้คีย์ API สำหรับ /models","requireAuthModelsDesc":"เมื่อเปิด ตำแหน่งข้อมูล /v1/models จะส่งคืน 404 สำหรับคำขอที่ไม่ได้รับการรับรองความถูกต้อง ป้องกันการค้นพบโมเดลโดยผู้ใช้ที่ไม่ได้รับอนุญาต","blockedProviders":"ผู้ให้บริการที่ถูกบล็อก","blockedProvidersDesc":"ซ่อนผู้ให้บริการเฉพาะจากการตอบกลับ /v1/models ผู้ให้บริการที่ถูกบล็อกจะไม่ปรากฏในรายการโมเดล","providersBlocked":"{count} ผู้ให้บริการถูกบล็อกจาก /models","blockProviderTitle":"บล็อก {provider}","unblockProviderTitle":"เลิกบล็อก {provider}","routingStrategy":"กลยุทธ์การกำหนดเส้นทาง","fillFirst":"เติมก่อน","fillFirstDesc":"ใช้บัญชีตามลำดับความสำคัญ","roundRobin":"ตัวกลม โรบิน","roundRobinDesc":"หมุนเวียนไปตามบัญชีทั้งหมด","p2c":"พีทูซี","p2cDesc":"สุ่มเลือก 2 อัน ใช้อันที่ดีต่อสุขภาพกว่า","random":"สุ่ม","randomDesc":"บัญชีสุ่มแต่ละคำขอ","leastUsed":"ใช้น้อยที่สุด","leastUsedDesc":"เลือกบัญชีที่ใช้ล่าสุดน้อยที่สุด","costOpt":"การเลือกใช้ต้นทุน","costOptDesc":"ต้องการบัญชีที่ถูกที่สุด","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each account once before reshuffling","stickyLimit":"ขีด จำกัด เหนียว","stickyLimitDesc":"โทรต่อบัญชีก่อนที่จะเปลี่ยน","modelAliases":"นามแฝงของโมเดล","modelAliasesTitle":"นามแฝงโมเดล","modelAliasesDesc":"รูปแบบไวด์การ์ดเพื่อทำการแมปชื่อโมเดลใหม่ • ใช้ * และ ?","addCustomAlias":"เพิ่มนามแฝงที่กำหนดเอง","deprecatedModelId":"ID โมเดลที่เลิกใช้","newModelId":"ID โมเดลใหม่","customAliases":"นามแฝงที่กำหนดเอง","builtInAliases":"นามแฝงในตัว","backgroundDegradationTitle":"การลดระดับงานพื้นหลัง","backgroundDegradationDesc":"ตรวจจับงานพื้นหลังโดยอัตโนมัติ (ชื่อเรื่อง, สรุป) และเปลี่ยนเส้นทางไปยังโมเดลที่ถูกกว่า","enableDegradation":"เปิดใช้งานการลดระดับงานพื้นหลัง","enableDegradationHint":"เมื่อเปิดใช้งาน งานพื้นหลังเช่นการสร้างชื่อเรื่องและสรุปจะถูกเปลี่ยนเส้นทางไปยังโมเดลที่ถูกกว่าโดยอัตโนมัติ","tasksDetected":"งานที่ตรวจพบ","degradationMap":"แผนผังการลดระดับโมเดล","premiumModel":"โมเดลพรีเมียม","cheapModel":"โมเดลราคาถูก","detectionPatterns":"รูปแบบการตรวจจับ","newPattern":"เช่น \\"สร้างชื่อเรื่อง\\"","aliasPatternPlaceholder":"คลอด-โคลง-*","aliasTargetPlaceholder":"คลอด-โคลง-4-20250514","pattern":"รูปแบบ","targetModel":"โมเดลเป้าหมาย","add":"+ เพิ่ม","session":"เซสชัน","sessionDetailsAria":"รายละเอียดเซสชัน","status":"สถานะ","authenticated":"รับรองความถูกต้อง","guest":"แขก","loginTime":"เวลาเข้าสู่ระบบ","sessionAge":"อายุเซสชัน","browser":"เบราว์เซอร์","clearLocalData":"ล้างข้อมูลในเครื่อง","logout":"ออกจากระบบ","clearLocalDataConfirm":"ล้างข้อมูลในเครื่องทั้งหมดไหม นี่จะรีเซ็ตการตั้งค่าของคุณ","unknown":"ไม่ทราบ","systemActor":"ระบบ","ipAccessControl":"การควบคุมการเข้าถึงไอพี","ipAccessControlDesc":"บล็อกหรืออนุญาตที่อยู่ IP ที่ระบุ","ipModeDisabled":"ปิดการใช้งาน","ipModeBlacklist":"บัญชีดำ","ipModeWhitelist":"ไวท์ลิสต์","ipModeWhitelistPriority":"ลำดับความสำคัญ WL","addIpAddress":"เพิ่มที่อยู่ IP","ipAddressPlaceholder":"192.168.1.0/24 หรือ 10.0.*.*","block":"+ บล็อก","allow":"+ อนุญาต","blocked":"ถูกบล็อก ({count})","allowed":"อนุญาต ({count})","temporaryBans":"การแบนชั่วคราว ({count})","minLeft":"เหลืออีก {min} นาที","auditLog":"บันทึกการตรวจสอบ","searchAuditLogs":"ค้นหาบันทึกการตรวจสอบ...","failedLoadAuditLog":"โหลดบันทึกการตรวจสอบไม่สำเร็จ","noAuditEvents":"ไม่พบกิจกรรมการตรวจสอบ","action":"การดำเนินการ","actor":"นักแสดง","details":"รายละเอียด","time":"เวลา","fallbackChainsTitle":"โซ่สำรอง","fallbackChainsDesc":"กำหนดลำดับสำรองของผู้ให้บริการต่อรุ่น","addChain":"+ เพิ่มห่วงโซ่","modelName":"ชื่อรุ่น","modelNamePlaceholder":"คลอด-โคลง-4-20250514","providersCommaSeparated":"ผู้ให้บริการ (คั่นด้วยเครื่องหมายจุลภาค เรียงตามลำดับความสำคัญ)","providersCommaSeparatedPlaceholder":"มานุษยวิทยา openai ราศีเมถุน","createChain":"สร้างเชน","noFallbackChains":"ไม่มีโซ่ทางเลือก","noFallbackChainsDesc":"สร้างห่วงโซ่เพื่อกำหนดลำดับทางเลือกของผู้ให้บริการสำหรับโมเดล","loadingFallbackChains":"กำลังโหลดเชนสำรอง...","deleteChainConfirm":"ลบเชนทางเลือกสำหรับ \\"{model}\\" หรือไม่","chainCreated":"เชนที่สร้างขึ้นสำหรับ {model}","chainDeleted":"ลบเชนสำหรับ {model} แล้ว","failedCreateChain":"ไม่สามารถสร้างเชนได้","failedDeleteChain":"ลบเชนไม่สำเร็จ","deleteChain":"ลบห่วงโซ่","fillModelAndProviders":"กรุณากรอกชื่อรุ่นและผู้ให้บริการ","addAtLeastOneProvider":"เพิ่มผู้ให้บริการอย่างน้อยหนึ่งราย","comboDefaultsTitle":"ค่าเริ่มต้นคอมโบ","globalComboConfig":"การกำหนดค่าคอมโบทั่วโลก","defaultStrategy":"กลยุทธ์เริ่มต้น","defaultStrategyDesc":"นำไปใช้กับคอมโบใหม่โดยไม่มีกลยุทธ์ที่ชัดเจน","comboStrategyAria":"กลยุทธ์คอมโบ","priority":"ลำดับความสำคัญ","weighted":"ถ่วงน้ำหนัก","maxRetriesLabel":"ลองใหม่สูงสุด","retryDelayLabel":"ความล่าช้าในการลองอีกครั้ง (มิลลิวินาที)","timeoutLabel":"หมดเวลา (มิลลิวินาที)","healthCheck":"ตรวจสุขภาพ","healthCheckDesc":"ตรวจสอบความพร้อมของผู้ให้บริการล่วงหน้า","trackMetrics":"ติดตามตัวชี้วัด","trackMetricsDesc":"บันทึกเมตริกคำขอต่อคอมโบ","providerOverrides":"การแทนที่ผู้ให้บริการ","providerOverridesDesc":"แทนที่การหมดเวลาและลองใหม่ตามผู้ให้บริการ การตั้งค่าผู้ให้บริการจะแทนที่ค่าเริ่มต้นสากล","providerMaxRetriesAria":"{provider} ลองใหม่สูงสุด","providerTimeoutAria":"{provider} หมดเวลา มิลลิวินาที","removeProviderOverrideAria":"ลบการแทนที่ {provider} ออก","newProviderNamePlaceholder":"เช่น google, openai...","newProviderNameAria":"ชื่อผู้ให้บริการใหม่","retries":"ลองอีกครั้ง","ms":"นางสาว","saveComboDefaults":"บันทึกค่าเริ่มต้นคอมโบ","maxNestingDepth":"ความลึกของการซ้อนสูงสุด","concurrencyPerModel":"เห็นพ้องต้องกัน / รุ่น","queueTimeout":"คิวหมดเวลา (มิลลิวินาที)","providerProfiles":"โปรไฟล์ผู้ให้บริการ","providerProfilesDesc":"แยกการตั้งค่าความยืดหยุ่นสำหรับผู้ให้บริการ OAuth (ตามเซสชัน) และคีย์ API (แบบมิเตอร์) ผู้ให้บริการ OAuth มีเกณฑ์ที่เข้มงวดมากขึ้นเนื่องจากมีขีดจำกัดอัตราที่ต่ำกว่า","oauthProviders":"ผู้ให้บริการ OAuth","apiKeyProviders":"ผู้ให้บริการคีย์ API","transientCooldown":"คูลดาวน์ชั่วคราว","rateLimitCooldown":"คูลดาวน์จำกัดอัตรา","maxBackoffLevel":"ระดับการถอยกลับสูงสุด","cbThreshold":"เกณฑ์ CB","cbResetTime":"เวลารีเซ็ต CB","rateLimiting":"การจำกัดอัตรา","rateLimitingDesc":"ผู้ให้บริการคีย์ API จะถูกจำกัดอัตราโดยอัตโนมัติด้วยค่าเริ่มต้นที่ปลอดภัย เรียนรู้ขีดจำกัดจากส่วนหัวการตอบกลับและปรับเปลี่ยนเมื่อเวลาผ่านไป","defaultSafetyNet":"เครือข่ายความปลอดภัยเริ่มต้น","rpm":"รอบต่อนาที","minGap":"มิน กาป","maxConcurrent":"แม็กซ์พร้อมกัน","activeLimiters":"ตัวจำกัดที่ใช้งานอยู่","noActiveLimiters":"ยังไม่มีการจำกัดอัตราที่ใช้งานอยู่","reservoir":"อ่างเก็บน้ำ","running":"วิ่ง","queued":"เข้าคิว","circuitBreakers":"เซอร์กิตเบรกเกอร์","breakerStateClosed":"ปิดแล้ว","breakerStateOpen":"เปิด","breakerStateHalfOpen":"ครึ่งเปิด","tripped":"{count} สะดุด","healthy":"{count} สุขภาพแข็งแรง","resetAll":"รีเซ็ตทั้งหมด","noCircuitBreakers":"ยังไม่มีเซอร์กิตเบรกเกอร์ทำงาน พวกเขาจะถูกสร้างขึ้นโดยอัตโนมัติเมื่อมีการร้องขอไหลผ่านไปป์ไลน์คำสั่งผสม","failures":"{count} ล้มเหลว","policiesLocked":"นโยบายและตัวระบุที่ถูกล็อค","allOperational":"ใช้งานได้ทุกระบบ — ไม่มีการล็อกหรือเบรกเกอร์สะดุด","loadingPolicies":"กำลังโหลดนโยบาย...","lockedIdentifiers":"ตัวระบุที่ถูกล็อค","unlockedIdentifier":"ปลดล็อคแล้ว: {identifier}","sinceDate":"ตั้งแต่ {date}","forceUnlock":"บังคับปลดล็อค","unlocking":"กำลังปลดล็อค...","failedUnlock":"ปลดล็อคไม่สำเร็จ","failedLoadWithStatus":"ไม่สามารถโหลด: {status}","failedLoadResilience":"ไม่สามารถโหลดสถานะความยืดหยุ่นได้","saveFailed":"บันทึกล้มเหลว","resetFailed":"การรีเซ็ตล้มเหลว","loadingResilience":"กำลังโหลดสถานะความยืดหยุ่น...","retry":"ลองอีกครั้ง","systemStorage":"ระบบและการจัดเก็บ","allDataLocal":"ข้อมูลทั้งหมดที่จัดเก็บไว้ในเครื่องของคุณ","databasePath":"เส้นทางฐานข้อมูล","exportDatabase":"ส่งออกฐานข้อมูล","exportAll":"ส่งออกทั้งหมด (.tar.gz)","importDatabase":"นำเข้าฐานข้อมูล","confirmDbImport":"ยืนยันการนำเข้าฐานข้อมูล","confirmDbImportDesc":"สิ่งนี้จะแทนที่ข้อมูลปัจจุบันทั้งหมดด้วยเนื้อหาจาก {file} ข้อมูลสำรองจะถูกสร้างขึ้นโดยอัตโนมัติก่อนการนำเข้า","yesImport":"ใช่ นำเข้า","lastBackup":"การสำรองข้อมูลครั้งสุดท้าย","noBackupYet":"ยังไม่มีการสำรองข้อมูล","backupNow":"สำรองข้อมูลทันที","backupRestore":"สำรองและกู้คืน","viewBackups":"ดูข้อมูลสำรอง","hide":"ซ่อน","backupRetentionDesc":"สแน็ปช็อตฐานข้อมูลจะถูกสร้างขึ้นโดยอัตโนมัติก่อนการกู้คืนและทุกๆ 15 นาทีเมื่อข้อมูลเปลี่ยนแปลง การเก็บรักษา: การสำรองข้อมูล 24 ชั่วโมง + 30 รายวันพร้อมการหมุนเวียนอัจฉริยะ","loadingBackups":"กำลังโหลดข้อมูลสำรอง...","noBackupsYet":"ยังไม่มีข้อมูลสำรอง การสำรองข้อมูลจะถูกสร้างขึ้นโดยอัตโนมัติเมื่อข้อมูลมีการเปลี่ยนแปลง","backupsAvailable":"{count} มีการสำรองข้อมูลแล้ว","refresh":"รีเฟรช","confirm":"ยืนยัน?","yes":"ใช่","no":"ไม่","restore":"คืนค่า","invalidFileType":"ประเภทไฟล์ไม่ถูกต้อง ยอมรับเฉพาะไฟล์ .sqlite เท่านั้น","exportFailed":"การส่งออกล้มเหลว","exportFailedWithError":"การส่งออกล้มเหลว: {error}","fullExportFailedWithError":"การส่งออกแบบเต็มล้มเหลว: {error}","backupCreated":"สร้างข้อมูลสำรองแล้ว: {file}","restoreSuccess":"ฟื้นแล้ว! การเชื่อมต่อ {connections}, โหนด {nodes}, คอมโบ {combos}, คีย์ {apiKeys} API","importSuccess":"นำเข้าฐานข้อมูลแล้ว! การเชื่อมต่อ {connections}, โหนด {nodes}, คอมโบ {combos}, คีย์ {apiKeys} API","justNow":"แค่ตอนนี้","minutesAgo":"{count}นาทีที่แล้ว","hoursAgo":"{count}ชม. ที่แล้ว","daysAgo":"{count}d ที่แล้ว","backupReasonManual":"คู่มือ","backupReasonPreRestore":"คืนค่าล่วงหน้า","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"ไม่มีการเปลี่ยนแปลงตั้งแต่การสำรองข้อมูลครั้งล่าสุด","backupFailed":"การสำรองข้อมูลล้มเหลว","restoreFailed":"การคืนค่าล้มเหลว","importFailed":"การนำเข้าล้มเหลว","errorDuringRestore":"เกิดข้อผิดพลาดระหว่างการคืนค่า","errorDuringImport":"เกิดข้อผิดพลาดระหว่างการนำเข้า","modelPricing":"ราคารุ่น","modelPricingDesc":"กำหนดอัตราต้นทุนต่อรุ่น • อัตราทั้งหมดในโทเค็น $/1M","providers":"ผู้ให้บริการ","registry":"ทะเบียน","priced":"ราคา","searchProvidersModels":"ค้นหาผู้ให้บริการหรือรุ่น...","showAll":"แสดงทั้งหมด","noProvidersMatch":"ไม่มีผู้ให้บริการที่ตรงกับการค้นหาของคุณ","howPricingWorks":"วิธีการทำงานของการกำหนดราคา","cacheWrite":"แคชเขียน","unsaved":"ไม่ได้บันทึก","resetDefaults":"รีเซ็ตค่าเริ่มต้น","saveProvider":"บันทึกผู้ให้บริการ","saving":"กำลังบันทึก...","model":"รุ่น","models":"โมเดล","moreProviders":"{count} ผู้ให้บริการเพิ่มเติม","withPricing":"โดยมีการกำหนดราคาไว้","policiesCircuitBreakers":"นโยบายและเซอร์กิตเบรกเกอร์","activeIssuesDetected":"ตรวจพบปัญหาที่ทำงานอยู่","off":"ปิด","resetPricingConfirm":"รีเซ็ตราคาทั้งหมดสำหรับ {provider} เป็นค่าเริ่มต้นหรือไม่","pricingDescInput":"อินพุต: โทเค็นที่ส่งไปยังโมเดล","pricingDescOutput":"เอาท์พุต: โทเค็นที่สร้างขึ้น","pricingDescCached":"แคช: อินพุตที่นำกลับมาใช้ใหม่ (~ 50% ของอัตราการอินพุต)","pricingDescReasoning":"การใช้เหตุผล: โทเค็นการคิด (ถอยกลับไปที่เอาต์พุต)","pricingDescCacheWrite":"การเขียนแคช: การสร้างรายการแคช (ถอยกลับไปที่อินพุต)","pricingDescFormula":"ราคา = (input × input_rate) + (output × output_rate) + (cached × cached_rate) ต่อล้านโทเค็น","pricingSettingsTitle":"การตั้งค่าราคา","totalModels":"โมเดลทั้งหมด","active":"ใช้งานอยู่","costCalculation":"การคำนวณต้นทุน","costCalculationDesc":"ต้นทุนจะคำนวณตามการใช้โทเค็นและอัตราราคาที่กำหนดค่าไว้สำหรับแต่ละรุ่น","pricingFormat":"รูปแบบการตั้งราคา","pricingFormatDesc":"อัตราทั้งหมดอยู่ในโทเค็น $/1M (ดอลลาร์ต่อโทเค็นหนึ่งล้าน)","tokenTypes":"ประเภทโทเค็น","inputTokenDesc":"โทเค็นพร้อมท์มาตรฐาน","outputTokenDesc":"โทเค็นการเสร็จสิ้น/การตอบกลับ","cachedTokenDesc":"โทเค็นอินพุตที่แคชไว้ (โดยทั่วไปคือ 50% ของอัตราการอินพุต)","reasoningTokenDesc":"โทเค็นการใช้เหตุผล/การคิดพิเศษ (ทางเลือกกลับไปยังอัตราผลลัพธ์)","cacheCreationTokenDesc":"โทเค็นที่ใช้ในการสร้างรายการแคช (สำรองไปยังอัตราการป้อนข้อมูล)","customPricingNote":"คุณสามารถแทนที่ราคาเริ่มต้นสำหรับรุ่นเฉพาะได้ การแทนที่แบบกำหนดเองจะมีลำดับความสำคัญมากกว่าการกำหนดราคาที่ตรวจพบอัตโนมัติ","editPricing":"แก้ไขราคา","viewFullDetails":"ดูรายละเอียดทั้งหมด","themeCoral":"คอรัล","cliFingerprint":"CLI Fingerprint Matching","cliFingerprintDesc":"Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.","cliFingerprintEnabled":"{count} provider(s) with CLI fingerprint active","enableFingerprintTitle":"Enable fingerprint for {provider}","disableFingerprintTitle":"Disable fingerprint for {provider}","routingAdvancedGuideTitle":"คำแนะนำการกำหนดเส้นทางขั้นสูง","routingAdvancedGuideHint1":"ใช้ Fill First เพื่อลำดับความสำคัญที่คาดการณ์ได้ Round Robin เพื่อความยุติธรรม และ P2C เพื่อความยืดหยุ่นในการตอบสนอง","routingAdvancedGuideHint2":"หากผู้ให้บริการมีคุณภาพ/ต้นทุนแตกต่างกัน ให้เริ่มด้วยการเลือกต้นทุนสำหรับงานเบื้องหลังและใช้งานน้อยที่สุดสำหรับการสึกหรอที่สมดุล","comboDefaultsGuideTitle":"วิธีปรับแต่งค่าเริ่มต้นคอมโบ","comboDefaultsGuideHint1":"พยายามลองใหม่ให้ต่ำในกระแสเวลาแฝงต่ำ เพิ่มการหมดเวลาเฉพาะสำหรับงานที่ใช้เวลานานเท่านั้น","comboDefaultsGuideHint2":"ใช้การแทนที่ผู้ให้บริการเมื่อผู้ให้บริการรายหนึ่งต้องการพฤติกรรมการหมดเวลา/การลองใหม่ที่แตกต่างไปจากค่าเริ่มต้นส่วนกลาง"},"translator":{"title":"นักแปล","metaTitle":"สนามเด็กเล่นนักแปล | OmniRoute","metaDescription":"ดีบัก ทดสอบ และแสดงภาพการแปลรูปแบบ API ระหว่างผู้ให้บริการ","playgroundTitle":"สนามเด็กเล่นนักแปล","playground":"สนามเด็กเล่น","realtime":"กิจกรรมการแปลแบบเรียลไทม์","chatTester":"ผู้ทดสอบการแชท","testBench":"ม้านั่งทดสอบ","liveMonitor":"การตรวจสอบสด","modeDescriptionPlayground":"วางเนื้อหาคำขอ API ใดๆ และดูว่า OmniRoute แปลระหว่างรูปแบบของผู้ให้บริการอย่างไร (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)","modeDescriptionChatTester":"ส่งคำขอแชทจริงผ่าน OmniRoute และตรวจสอบการเดินทางไปกลับทั้งหมด: อินพุต คำขอที่แปล การตอบกลับของผู้ให้บริการ และเอาต์พุตที่แปล","modeDescriptionTestBench":"เรียกใช้สถานการณ์ที่กำหนดไว้ล่วงหน้าและเปรียบเทียบความเข้ากันได้ระหว่างผู้ให้บริการและรุ่นต่างๆ","modeDescriptionLiveMonitor":"ดูกิจกรรมการแปลแบบเรียลไทม์เมื่อมีคำขอไหลผ่าน OmniRoute","modeDescriptionFallback":"แก้ไขข้อบกพร่อง ทดสอบ และเห็นภาพว่า OmniRoute แปลคำขอ API ระหว่างผู้ให้บริการอย่างไร","recentTranslations":"การแปลล่าสุด","noTranslations":"ยังไม่มีคำแปล","source":"แหล่งที่มา","target":"เป้าหมาย","time":"เวลา","model":"รุ่น","status":"สถานะ","latency":"เวลาแฝง","totalTranslations":"การแปลทั้งหมด","successful":"ประสบความสำเร็จ","errors":"ข้อผิดพลาด","avgLatency":"เวลาแฝงเฉลี่ย","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"ถ่ายทอดสด — รีเฟรชอัตโนมัติ","paused":"หยุดชั่วคราว","eventsAppearHint":"กิจกรรมการแปลจะปรากฏที่นี่เมื่อมีการร้องขอผ่าน OmniRoute ใช้วิธีใดวิธีหนึ่งเหล่านี้เพื่อสร้างเหตุการณ์:","chatTesterTab":"แท็บเครื่องมือทดสอบการแชท","testBenchTab":"แท็บม้านั่งทดสอบ","externalApiCalls":"การเรียก API ภายนอก","ideCliIntegrations":"การบูรณาการ IDE/CLI","inMemoryNote":"หมายเหตุ: เหตุการณ์จะถูกจัดเก็บไว้ในหน่วยความจำและรีเซ็ตเมื่อเซิร์ฟเวอร์รีสตาร์ท","ok":"ตกลง","errorShort":"ผิดพลาด","formatConverter":"ตัวแปลงรูปแบบ","formatConverterDescription":"วางหรือพิมพ์เนื้อหาคำขอ JSON นักแปลจะตรวจจับรูปแบบต้นฉบับโดยอัตโนมัติและแปลงเป็นรูปแบบเป้าหมาย ใช้สิ่งนี้เพื่อแก้ไขวิธีที่ OmniRoute แปลคำขอระหว่างรูปแบบต่างๆ (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)","input":"อินพุต","output":"เอาท์พุต","auto":"อัตโนมัติ","swapFormats":"สลับรูปแบบ","translateAction":"แปล","clear":"ชัดเจน","inputPlaceholder":"วางเนื้อหาคำขอที่นี่หรือเลือกเทมเพลตด้านล่าง...","exampleTemplates":"เทมเพลตตัวอย่าง","exampleTemplatesHint":"— คลิกเพื่อโหลด","templateLoadHint":"เทมเพลตโหลดคำขอในรูปแบบ {format} เปลี่ยนรูปแบบต้นฉบับเพื่อโหลดในรูปแบบอื่น","compatibilityTester":"เครื่องทดสอบความเข้ากันได้","compatibilityReport":"รายงานความเข้ากันได้","testBenchDescription":"เรียกใช้สถานการณ์ที่กำหนดไว้ล่วงหน้า (Simple Chat, Tool Calling ฯลฯ) เพื่อตรวจสอบการแปลและความเข้ากันได้ของผู้ให้บริการ เลือกรูปแบบต้นทางและผู้ให้บริการเป้าหมาย จากนั้นทำการทดสอบทั้งหมดเพื่อดูเปอร์เซ็นต์ความเข้ากันได้ ใช้สิ่งนี้เพื่อค้นหาฟีเจอร์ที่ใช้ได้กับผู้ให้บริการ","targetProvider":"ผู้ให้บริการเป้าหมาย","runAllTests":"เรียกใช้การทดสอบทั้งหมด","runTest":"รันการทดสอบ","reRun":"วิ่งอีกครั้ง","running":"กำลังวิ่ง...","passed":"ผ่านไป","failed":"ล้มเหลว","passedIconLabel":"✅ผ่าน","chunks":"ชิ้น","scenarioSimpleChat":"แชทง่ายๆ","scenarioToolCalling":"การเรียกเครื่องมือ","scenarioMultiTurn":"หลายเลี้ยว","scenarioThinking":"กำลังคิด","scenarioSystemPrompt":"พร้อมท์ระบบ","scenarioStreaming":"สตรีมมิ่ง","templateNames":{"simple-chat":"แชทง่ายๆ","tool-calling":"การเรียกเครื่องมือ","multi-turn":"หลายเลี้ยว","thinking":"กำลังคิด","system-prompt":"พร้อมท์ระบบ","streaming":"สตรีมมิ่ง"},"templateDescriptions":{"simple-chat":"ข้อความพื้นฐาน","tool-calling":"การเรียกใช้ฟังก์ชัน/เครื่องมือ","multi-turn":"การสนทนากับประวัติศาสตร์","thinking":"ขยายการคิด/การใช้เหตุผล","system-prompt":"คำแนะนำระบบที่ซับซ้อน","streaming":"คำขอสตรีม SSE"},"templatePayloads":{"simpleChat":{"system":"คุณเป็นผู้ช่วยที่เป็นประโยชน์","userGreeting":"สวัสดี! วันนี้คุณเป็นอย่างไรบ้าง?"},"toolCalling":{"userWeather":"สภาพอากาศในเซาเปาโลเป็นอย่างไร?","toolDescription":"รับสภาพอากาศปัจจุบันสำหรับสถานที่","cityNameDescription":"ชื่อเมือง"},"multiTurn":{"system":"คุณเป็นผู้ช่วยเขียนโค้ด","userInitial":"เขียนฟังก์ชันเพื่อจัดเรียงอาร์เรย์ใน Python","assistantExample":"ต่อไปนี้เป็นฟังก์ชันการเรียงลำดับอย่างง่าย:\\n\\n```หลาม\\ndef sort_array(arr):\\n กลับเรียงลำดับ(arr)\\n```","userFollowUp":"ตอนนี้ให้เรียงลำดับจากมากไปน้อย"},"thinking":{"question":"ผลรวมของจำนวนเฉพาะ 100 ตัวแรกเป็นเท่าใด?"},"systemPrompt":{"systemInstruction":"คุณเป็นวิศวกรซอฟต์แวร์อาวุโสที่เชี่ยวชาญด้านระบบแบบกระจาย ตอบคำถามอย่างกระชับโดยใช้แนวทางปฏิบัติที่ดีที่สุดในอุตสาหกรรม ให้ตัวอย่างโค้ดเสมอเมื่อเกี่ยวข้อง จัดรูปแบบคำตอบของคุณโดยใช้มาร์กดาวน์","question":"ฉันจะใช้รูปแบบเซอร์กิตเบรกเกอร์ได้อย่างไร"},"streaming":{"prompt":"เล่าเรื่องสั้นเกี่ยวกับหุ่นยนต์ที่หัดวาดภาพให้ฉันฟังหน่อย"}},"openaiCompatibleLabel":"รองรับ OpenAI","anthropicCompatibleLabel":"เข้ากันได้กับมานุษยวิทยา","noTemplateForFormat":"ไม่มีเทมเพลตสำหรับรูปแบบนี้","translationFailed":"การแปลล้มเหลว: {error}","pipelineDebugger":"ไปป์ไลน์ดีบักเกอร์","translationPipeline":"ไปป์ไลน์การแปล","pipelineVisualization":"การแสดงภาพไปป์ไลน์","pipelineVisualizationHint":"ส่งข้อความเพื่อดูว่าคำขอของคุณดำเนินการผ่านการตรวจหา → การแปล → การโทรของผู้ให้บริการอย่างไร","chatTesterDescription":"ส่งข้อความเป็นรูปแบบไคลเอนต์เฉพาะและตรวจสอบแต่ละขั้นตอนของไปป์ไลน์การแปล","chatTesterFlow":"คำขอของลูกค้า → การตรวจจับรูปแบบ → OpenAI Intermediate → รูปแบบผู้ให้บริการ → การตอบสนอง","clickStepToInspect":"คลิกขั้นตอนใดก็ได้เพื่อตรวจสอบข้อมูลในขั้นตอนนั้น","clientFormat":"รูปแบบไคลเอนต์","provider":"ผู้ให้บริการ","modelPlaceholder":"เลือกหรือพิมพ์ชื่อรุ่น...","sendMessageToSeePipeline":"ส่งข้อความเพื่อดูไปป์ไลน์การแปล","chatMessageHintPrefix":"ข้อความของคุณจะถูกจัดรูปแบบเป็น","chatMessageHintSuffix":"คำขอ แปลผ่านไปป์ไลน์ และส่งไปยังผู้ให้บริการที่เลือก","youWithFormat":"คุณ ({format})","assistant":"ผู้ช่วย","typeMessage":"พิมพ์ข้อความ...","send":"ส่ง","clientRequest":"คำขอของลูกค้า","clientRequestDescription":"เนื้อหาคำขอตามที่ลูกค้าของคุณจะส่ง","formatDetected":"ตรวจพบรูปแบบ","formatDetectedDescription":"OmniRoute ตรวจจับรูปแบบ API จากโครงสร้างคำขอโดยอัตโนมัติ","openaiIntermediate":"OpenAI ระดับกลาง","openaiIntermediateDescription":"รูปแบบทั้งหมดจะถูกทำให้เป็นมาตรฐานเป็นรูปแบบ OpenAI ก่อน (สะพานสากล)","providerFormat":"รูปแบบผู้ให้บริการ","providerFormatDescription":"รูปแบบ OpenAI ได้รับการแปลเป็นรูปแบบดั้งเดิมของผู้ให้บริการ","providerResponse":"การตอบสนองของผู้ให้บริการ","providerResponseRawDescription":"การตอบสนองดิบจาก API ของผู้ให้บริการ","providerResponseSseDescription":"สตรีม SSE แบบดิบจาก API ของผู้ให้บริการ","unexpectedError":"เกิดข้อผิดพลาดที่ไม่คาดคิด","error":"เกิดข้อผิดพลาด","errorMessage":"ข้อผิดพลาด: {message}","requestFailed":"คำขอล้มเหลว","noTextExtracted":"(ไม่มีการแยกข้อความ)","liveMonitorDescriptionPrefix":"แสดงเหตุการณ์การแปลเมื่อมีการเรียก API ไหลผ่าน OmniRoute เหตุการณ์มาจากบัฟเฟอร์ในหน่วยความจำ (รีเซ็ตเมื่อรีสตาร์ท) ใช้","liveMonitorDescriptionSuffix":"หรือการเรียก API ภายนอกเพื่อสร้างเหตุการณ์"},"usage":{"title":"การใช้งาน","loggerTab":"คนตัดไม้","proxyTab":"หนังสือมอบฉันทะ","budgetManagement":"การจัดการงบประมาณ","budgetSaved":"บันทึกขีดจำกัดงบประมาณแล้ว","budgetSaveFailed":"ไม่สามารถบันทึกงบประมาณได้","loadingBudgetData":"กำลังโหลดข้อมูลงบประมาณ...","noApiKeysTitle":"ไม่มีคีย์ API","noApiKeysDescription":"เพิ่มคีย์ API ก่อนเพื่อตั้งค่าขีดจำกัดงบประมาณ","apiKey":"คีย์ API","todaysSpend":"การใช้จ่ายวันนี้","thisMonth":"เดือนนี้","setLimits":"ตั้งค่าขีดจำกัด","dailyLimitUsd":"ขีดจำกัดรายวัน (USD)","monthlyLimitUsd":"ขีดจำกัดรายเดือน (USD)","warningThresholdPercent":"เกณฑ์การเตือน (%)","dailyLimitPlaceholder":"เช่น 5.00 น","monthlyLimitPlaceholder":"เช่น 50.00 น","warningThresholdPlaceholder":"80","saveLimits":"บันทึกขีดจำกัด","budgetOk":"งบประมาณตกลง — เหลือ {remaining}","budgetExceeded":"เกินงบประมาณ — คำขออาจถูกบล็อก","totalRequests":"คำขอทั้งหมด","noDataYet":"ยังไม่มีข้อมูล","latency":"เวลาแฝง","latencyP50":"หน้า 50","latencyP95":"หน้า 95","latencyP99":"หน้า 99","promptCache":"แคชพร้อมท์","systemHealth":"สุขภาพของระบบ","entries":"รายการ","activeCount":"{count} ใช้งานอยู่","openCircuitBreakersDetected":"ตรวจพบเบรกเกอร์วงจรเปิด","hitRate":"อัตราการเข้าชม","hitsMisses":"ฮิต / พลาด","circuitBreakers":"เซอร์กิตเบรกเกอร์","lockedIPs":"IP ที่ถูกล็อค","lockoutsAutoRefreshHint":"การล็อคขีดจำกัดอัตราต่อรุ่น • รีเฟรชอัตโนมัติ 10 วินาที","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} เหลือแล้ว","howItWorks":"มันทำงานอย่างไร","howItWorksSubtitle":"เรียนรู้ว่าการประเมินผลตรวจสอบการตอบสนอง LLM ของคุณอย่างไร","define":"กำหนด","defineStepDescription":"สร้างกรณีทดสอบพร้อมข้อความแจ้งอินพุตและเกณฑ์ผลลัพธ์ที่คาดหวังโดยใช้กลยุทธ์ เช่น ประกอบด้วย regex หรือการจับคู่แบบตรงทั้งหมด","run":"วิ่ง","runStepDescription":"ดำเนินการกรณีทดสอบกับตำแหน่งข้อมูล LLM ของคุณผ่าน OmniRoute แต่ละกรณีจะถูกส่งเป็นคำขอ API จริง","evaluate":"ประเมินผล","evaluateStepDescription":"คำตอบจะถูกเปรียบเทียบกับเกณฑ์ที่คาดหวัง ดูผ่าน/ไม่ผ่านสำหรับแต่ละกรณีพร้อมตัววัดเวลาแฝงและข้อเสนอแนะโดยละเอียด","evalSuites":"ห้องประเมินผล","evalSuitesHint":"คลิกชุดเพื่อดูกรณีทดสอบ จากนั้นเรียกใช้เพื่อประเมินตำแหน่งข้อมูล LLM ของคุณ","evalsLoading":"กำลังโหลดห้องสวีท eval...","noEvalSuitesFound":"ไม่พบห้องสวีท Eval","noEvalSuitesDescription":"ชุด Eval สามารถกำหนดได้ผ่าน API หรือในโค้ด พวกเขาทดสอบผลลัพธ์ของโมเดลกับผลลัพธ์ที่คาดหวังโดยใช้กลยุทธ์ต่างๆ เช่น ประกอบด้วย regex การจับคู่แบบตรงทั้งหมด และฟังก์ชันที่กำหนดเอง","columnCase":"กรณี","columnStatus":"สถานะ","columnLatency":"เวลาแฝง","columnDetails":"รายละเอียด","columnModel":"รุ่น","columnStrategy":"กลยุทธ์","columnExpected":"คาดว่า","statsSuites":"ห้องสวีท","statsTestCases":"กรณีทดสอบ","statsModels":"โมเดล","statsCoverage":"ความคุ้มครอง","statsStrategiesCount":"{count} กลยุทธ์","evaluationStrategies":"กลยุทธ์การประเมินผล","modelsUnderTest":"รุ่นภายใต้การทดสอบ","searchSuitesPlaceholder":"ค้นหาห้องชุด...","passSuffix":"ผ่าน","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"วิ่งเอวาล","runningProgress":"กำลังรัน {current}/{total}...","passRate":"อัตราการผ่าน","summaryBreakdown":"{passed} ผ่านไป · {failed} ล้มเหลว · รวม {total}","passedIconLabel":"✅ผ่าน","failedIconLabel":"❌ล้มเหลว","detailsContains":"ประกอบด้วย: \\"{term}\\"","detailsRegex":"Regex: {pattern}","detailsExpected":"ต้องการ: \\"{expected}\\"","noResultsYet":"ยังไม่มีผลลัพธ์","testCasesCount":"กรณีทดสอบ ({count})","noTestCasesDefined":"ไม่มีการกำหนดกรณีทดสอบ","runEvalHint":"คลิก \\"เรียกใช้การประเมิน\\" เพื่อดำเนินการทุกกรณีกับตำแหน่งข้อมูล LLM ของคุณ การทดสอบแต่ละครั้งจะส่งคำขอจริงผ่าน OmniRoute","notifyNoTestCases":"ไม่มีกรณีทดสอบที่กำหนดไว้สำหรับชุดนี้","notifyAllCasesPassed":"{total} เคสทั้งหมดผ่าน ✅","notifySomeCasesFailed":"{passed}/{total} ผ่านไป {failed} ล้มเหลว","notifyEvalRunFailed":"การเรียกใช้การประเมินล้มเหลว","notifyEvalTitle":"คะแนน: {name}","modelEvals":"การประเมินแบบจำลอง","evalsHeroDescription":"ทดสอบและตรวจสอบตำแหน่งข้อมูล LLM ของคุณโดยเรียกใช้ชุดการประเมินที่กำหนดไว้ล่วงหน้า แต่ละชุดมีกรณีทดสอบที่ส่งข้อความแจ้งจริงผ่าน OmniRoute และเปรียบเทียบการตอบสนองกับเกณฑ์ที่คาดหวัง — ช่วยให้คุณตรวจจับการถดถอย เปรียบเทียบแบบจำลอง และรับประกันคุณภาพการตอบสนองระหว่างผู้ให้บริการ","qualityValidation":"การตรวจสอบคุณภาพ","modelComparison":"การเปรียบเทียบแบบจำลอง","regressionDetection":"การตรวจจับการถดถอย","latencyBenchmarks":"เกณฑ์มาตรฐานความหน่วง","modelLockouts":"การล็อคโมเดล","noLockouts":"ไม่มีโมเดลที่ถูกล็อคอยู่ในขณะนี้","activeSessions":"เซสชันที่ใช้งานอยู่","noSessions":"ไม่มีเซสชันที่ใช้งานอยู่","sessionsHint":"เซสชันปรากฏเป็นคำขอที่ไหลผ่านพร็อกซี","sessionsTrackedHint":"ติดตามผ่านการร้องขอลายนิ้วมือ • รีเฟรชอัตโนมัติ 5 วินาที","session":"เซสชัน","age":"อายุ","requests":"คำขอ","connection":"การเชื่อมต่อ","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}วินาที","durationMinutesShort":"{value}ม","durationHoursShort":"{value}ชม","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"ข้อจำกัดของผู้ให้บริการ","noProviders":"ไม่มีผู้ให้บริการที่เชื่อมต่อ","connectProvidersForQuota":"เชื่อมต่อกับผู้ให้บริการด้วย OAuth เพื่อติดตามขีดจำกัดโควต้า API และการใช้งานของคุณ","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"(กรองจาก {count})","autoRefresh":"รีเฟรชอัตโนมัติ","refreshAll":"รีเฟรชทั้งหมด","loadingQuotas":"กำลังโหลด...","account":"บัญชี","modelQuotas":"โควต้าโมเดล","lastUsed":"ใช้ล่าสุด","actions":"การดำเนินการ","refreshQuota":"รีเฟรชโควต้า","today":"วันนี้","tomorrow":"พรุ่งนี้","dayTimeFormat":"{day}, {time}","inDuration":"ใน {duration}","notApplicable":"ไม่มี","rawPlanWithValue":"แผนดิบ: {plan}","noPlanFromProvider":"ไม่มีแผนจากผู้ให้บริการ","noQuotaData":"ไม่มีข้อมูลโควต้า","ungrouped":"Ungrouped","viewFlat":"Flat","viewByEnvironment":"By Environment","noQuotaDataAvailable":"ไม่มีข้อมูลโควต้า","noAccountsForTierFilter":"ไม่พบบัญชีสำหรับตัวกรองระดับ","tierAll":"ทั้งหมด","tierEnterprise":"องค์กร","tierTeam":"ทีม","tierBusiness":"ธุรกิจ","tierUltra":"อัลตร้า","tierPro":"โปร","tierPlus":"บวก","tierFree":"ฟรี","tierUnknown":"ไม่ทราบ"},"modals":{"waitingAuth":"รอการอนุญาต","verificationUrl":"URL การยืนยัน","yourCode":"รหัสของคุณ","remoteAccess":"การเข้าถึงระยะไกล:","connectedSuccess":"เชื่อมต่อสำเร็จ!","connectionFailed":"การเชื่อมต่อล้มเหลว","chooseAuthMethod":"เลือกวิธีการรับรองความถูกต้องของคุณ:","awsBuilderId":"รหัสตัวสร้าง AWS","awsIamIdentity":"ศูนย์ข้อมูลประจำตัว AWS IAM","googleAccount":"บัญชี Google","githubAccount":"บัญชี GitHub","importToken":"นำเข้าโทเค็น","pasteToken":"วางโทเค็นการรีเฟรชจาก Kiro IDE","awsRegion":"ภูมิภาค AWS","autoDetecting":"กำลังตรวจจับโทเค็นอัตโนมัติ...","readingFromCache":"อ่านจากแคช AWS SSO","readingFromCursor":"อ่านจากฐานข้อมูล Cursor IDE","initializing":"กำลังเริ่มต้น...","pricingConfig":"การกำหนดค่าราคา","loadingPricing":"กำลังโหลดข้อมูลราคา...","pricingRatesFormat":"รูปแบบอัตราราคา","noPricingData":"ไม่มีข้อมูลราคา","noModelsFound":"ไม่พบรุ่น"},"loggers":{"allProviders":"ผู้ให้บริการทั้งหมด","allModels":"ทุกรุ่น","allAccounts":"บัญชีทั้งหมด","allApiKeys":"คีย์ API ทั้งหมด","allTypes":"ทุกประเภท","allLevels":"ทุกระดับ","modelAZ":"รุ่น A-Z","modelZA":"รุ่น Z-A","loadingLogs":"กำลังโหลดบันทึก...","loadingProxyLogs":"กำลังโหลดบันทึกพร็อกซี...","noLogEntries":"ไม่พบรายการบันทึก","noPayloadData":"ไม่มีข้อมูลเพย์โหลดสำหรับรายการบันทึกนี้","proxyEvent":"เหตุการณ์พร็อกซี","proxy":"หนังสือมอบฉันทะ","level":"ระดับ","directNative":"โดยตรง (เนทีฟ)","combo":"คอมโบ","inputTokens":"ฉัน:","outputTokens":"โอ้:"},"stats":{"usageOverview":"ภาพรวมการใช้งาน","outputTokens":"โทเค็นเอาท์พุต","totalCost":"ต้นทุนรวม","usageByModel":"การใช้งานตามรุ่น","usageByAccount":"การใช้งานตามบัญชี","failedToLoad":"โหลดสถิติการใช้งานไม่สำเร็จ","tokenHealth":"โทเค็นสุขภาพ","totalOAuth":"OAuth ทั้งหมด","healthy":"ดีต่อสุขภาพ","warning":"คำเตือน","errored":"เกิดข้อผิดพลาด","lastCheck":"ตรวจสอบครั้งสุดท้าย","noData":"ไม่มีข้อมูล","share":"แบ่งปัน","unableToLoad":"ไม่สามารถโหลดเมตริกของระบบได้","product":"สินค้า","resources":"ทรัพยากร","company":"บริษัท"},"auth":{"welcome":"ยินดีต้อนรับ","signIn":"เข้าสู่ระบบ","enterPassword":"ป้อนรหัสผ่านของคุณเพื่อดำเนินการต่อ","password":"รหัสผ่าน","unifiedProxy":"พร็อกซี AI API แบบรวม","unifiedAiApiProxy":"พร็อกซี AI API แบบรวม","unifiedAiApiProxyDesc":"กำหนดเส้นทางคำขอไปยังผู้ให้บริการ AI หลายรายผ่านจุดสิ้นสุดเดียว โหลดบาลานซ์ การเฟลโอเวอร์ และการติดตามการใช้งานในตัว","passwordNotEnabled":"ไม่ได้เปิดใช้งานการป้องกันด้วยรหัสผ่าน","loading":"กำลังโหลด...","invalidPassword":"รหัสผ่านไม่ถูกต้อง","errorOccurredRetry":"เกิดข้อผิดพลาด โปรดลองอีกครั้ง","configureInstance":"มากำหนดค่าอินสแตนซ์ OmniRoute ของคุณกันดีกว่า","runOnboardingWizard":"เรียกใช้ตัวช่วยสร้างการเริ่มต้นใช้งานเพื่อตั้งค่ารหัสผ่านของคุณและเชื่อมต่อกับผู้ให้บริการ AI รายแรกของคุณ","startOnboarding":"เริ่มการเริ่มต้นใช้งาน","secureYourInstance":"รักษาความปลอดภัยให้กับอินสแตนซ์ของคุณ","setPasswordDescription":"ตั้งรหัสผ่านเพื่อปกป้องแดชบอร์ดของคุณและรักษาความปลอดภัยจุดสิ้นสุด API ของคุณจากการเข้าถึงที่ไม่ได้รับอนุญาต","configurePassword":"กำหนดค่ารหัสผ่าน","continue":"ดำเนินการต่อ","windowWillClose":"หน้าต่างนี้จะปิดโดยอัตโนมัติ...","closeTabNow":"คุณสามารถปิดแท็บนี้ได้ทันที","copyUrlManual":"โปรดคัดลอก URL จากแถบที่อยู่และวางลงในแอปพลิเคชัน","accessDeniedDescription":"คุณไม่ได้รับอนุญาตให้เข้าถึงทรัพยากรนี้ ตรวจสอบคีย์ API ของคุณหรือติดต่อผู้ดูแลระบบ","goToDashboard":"ไปที่แดชบอร์ด","featureMultiProviderTitle":"ผู้ให้บริการหลายราย","featureMultiProviderDesc":"OpenAI, มานุษยวิทยา, Google และอื่นๆ","featureLoadBalancingTitle":"โหลดบาลานซ์","featureLoadBalancingDesc":"กระจายคำขออย่างชาญฉลาด","featureUsageTrackingTitle":"การติดตามการใช้งาน","featureUsageTrackingDesc":"ตรวจสอบต้นทุนและโทเค็น","resetPassword":"รีเซ็ตรหัสผ่าน","resetDescription":"เลือกวิธีในการกู้คืนการเข้าถึงแดชบอร์ดของคุณ","stopServer":"หยุดเซิร์ฟเวอร์ OmniRoute","processing":"กำลังประมวลผล...","pleaseWait":"โปรดรอในขณะที่เราดำเนินการอนุมัติให้เสร็จสิ้น","authSuccess":"การอนุญาตสำเร็จ!","copyUrl":"คัดลอก URL นี้","accessDenied":"การเข้าถึงถูกปฏิเสธ","methodCliTitle":"วิธีที่ 1: รีเซ็ต CLI","methodCliDescription":"รันคำสั่งต่อไปนี้บนเซิร์ฟเวอร์ที่ OmniRoute กำลังทำงานอยู่:","methodCliHint":"สิ่งนี้จะแจ้งให้คุณตั้งรหัสผ่านใหม่ เซิร์ฟเวอร์จะต้องถูกหยุดก่อน","methodManualTitle":"วิธีที่ 2: รีเซ็ตด้วยตนเอง","methodManualDescription":"ลบรหัสผ่านออกจากฐานข้อมูลและตั้งรหัสผ่านใหม่เมื่อเริ่มต้นระบบ:","setPasswordInYour":"ตั้งรหัสผ่านใหม่ในของคุณ","fileLabelSuffix":"ไฟล์:","newPasswordPlaceholder":"your_new_password","deleteSettingsFile":"ลบ","orRemovePasswordHashField":"หรือลบฟิลด์รหัสผ่านแฮช","restartServerWithNewPassword":"รีสตาร์ทเซิร์ฟเวอร์ - จะใช้รหัสผ่านใหม่","backToLogin":"กลับไปที่เข้าสู่ระบบ","forgotPassword":"ลืมรหัสผ่าน?","defaultPasswordHint":"Default password: 123456 (unless INITIAL_PASSWORD was set)","Authorization":"การอนุญาต","Content-Disposition":"การจัดการเนื้อหา","waitingForAuthorization":"กำลังรอการอนุญาต...","waitingForGoogleAuthorization":"กำลังรอการอนุญาตจาก Google...","waitingForOpenAIAuthorization":"กำลังรอการอนุญาต OpenAI...","waitingForAntigravityAuthorization":"กำลังรอการอนุญาตต้านแรงโน้มถ่วง...","waitingForIFlowAuthorization":"กำลังรอการอนุญาตจาก iFlow...","exchangingCodeForTokens":"การเปลี่ยนรหัสเป็นโทเค็น..."},"landing":{"brandName":"OmniRoute","navigateHome":"นำทางไปที่บ้าน","toggleMenu":"สลับเมนู","featuresLink":"คุณสมบัติ","docsLink":"เอกสาร","github":"GitHub","versionLive":"v1.0 ใช้งานได้แล้ว","oneEndpoint":"จุดสิ้นสุดหนึ่งสำหรับ","allProviders":"ผู้ให้บริการ AI ทั้งหมด","heroDescription":"พร็อกซีปลายทาง AI พร้อมเว็บแดชบอร์ด - พอร์ต JavaScript ของ CLIProxyAPI ทำงานได้อย่างราบรื่นกับ Claude Code, OpenAI Codex, Cline, RooCode และเครื่องมือ CLI อื่นๆ","getStarted":"เริ่มต้นเลย","viewOnGithub":"ดูบน GitHub","powerfulFeatures":"คุณสมบัติอันทรงพลัง","featuresSubtitle":"ทุกสิ่งที่คุณต้องการในการจัดการโครงสร้างพื้นฐาน AI ของคุณในที่เดียว สร้างขึ้นเพื่อรองรับขนาด","featureUnifiedEndpointTitle":"จุดสิ้นสุดแบบรวม","featureUnifiedEndpointDesc":"เข้าถึงผู้ให้บริการทั้งหมดผ่าน URL API มาตรฐานเดียว","featureEasySetupTitle":"ติดตั้งง่าย","featureEasySetupDesc":"เริ่มต้นใช้งานภายในไม่กี่นาทีด้วยคำสั่ง npx","featureModelFallbackTitle":"โมเดลสำรอง","featureModelFallbackDesc":"สลับผู้ให้บริการโดยอัตโนมัติเมื่อเกิดความล้มเหลวหรือเวลาแฝงสูง","featureUsageTrackingTitle":"การติดตามการใช้งาน","featureUsageTrackingDesc":"การวิเคราะห์โดยละเอียดและการตรวจสอบต้นทุนในทุกรุ่น","featureOAuthApiKeysTitle":"OAuth และคีย์ API","featureOAuthApiKeysDesc":"จัดการข้อมูลรับรองอย่างปลอดภัยในห้องนิรภัยเดียว","featureCloudSyncTitle":"การซิงค์บนคลาวด์","featureCloudSyncDesc":"ซิงค์การกำหนดค่าของคุณระหว่างอุปกรณ์ต่างๆ ได้ทันที","featureCliSupportTitle":"การสนับสนุน CLI","featureCliSupportDesc":"ใช้งานได้กับ Claude Code, Codex, Cline, Cursor และอื่นๆ","featureDashboardTitle":"แดชบอร์ด","featureDashboardDesc":"แดชบอร์ดแบบภาพสำหรับการวิเคราะห์ปริมาณข้อมูลแบบเรียลไทม์","howItWorks":"OmniRoute ทำงานอย่างไร","howItWorksDescription":"ข้อมูลจะไหลอย่างราบรื่นจากแอปพลิเคชันของคุณผ่านเลเยอร์การกำหนดเส้นทางอัจฉริยะของเราไปยังผู้ให้บริการที่ดีที่สุดสำหรับงาน","howItWorksStep1Title":"1. CLI และ SDK","howItWorksStep1Description":"คำขอของคุณเริ่มต้นจากเครื่องมือที่คุณชื่นชอบหรือ SDK แบบรวมของเรา เพียงเปลี่ยน URL ฐาน","howItWorksStep2Title":"2. ศูนย์กลาง OmniRoute","howItWorksStep2Description":"กลไกของเราจะวิเคราะห์พร้อมท์ ตรวจสอบความสมบูรณ์ของผู้ให้บริการ และเส้นทางเพื่อดูเวลาแฝงหรือต้นทุนที่ต่ำที่สุด","howItWorksStep3Title":"3. ผู้ให้บริการ AI","howItWorksStep3Description":"คำขอนี้ดำเนินการโดย OpenAI, Anthropic, Gemini หรืออื่นๆ ทันที","getStartedIn30Seconds":"เริ่มต้นใน 30 วินาที","getStartedDescription":"ติดตั้ง OmniRoute กำหนดค่าผู้ให้บริการของคุณผ่านแดชบอร์ดเว็บ และเริ่มกำหนดเส้นทางคำขอ AI","installOmniRoute":"ติดตั้ง OmniRoute","installStepDescription":"รันคำสั่ง npx เพื่อเริ่มเซิร์ฟเวอร์ทันที","openDashboard":"เปิดแดชบอร์ด","openDashboardStepDescription":"กำหนดค่าผู้ให้บริการและคีย์ API ผ่านทางเว็บอินเตอร์เฟส","routeRequests":"คำขอเส้นทาง","routeRequestsStepDescription":"ชี้เครื่องมือ CLI ของคุณไปที่ {endpoint}","terminal":"สถานีปลายทาง","copy":"คัดลอก","copied":"✓ คัดลอกแล้ว","startingOmniRoute":"กำลังเริ่ม OmniRoute...","serverRunningOnLabel":"เซิร์ฟเวอร์กำลังทำงานอยู่","dashboardLabel":"แดชบอร์ด","readyToRoute":"พร้อมลุย! ✓","configureProvidersNote":"แปลก กำหนดค่าผู้ให้บริการในแดชบอร์ดหรือใช้ตัวแปรสภาพแวดล้อม","dataLocation":"ตำแหน่งข้อมูล:","dataLocationMacLinux":" macOS/ลินุกซ์:","dataLocationWindows":" หน้าต่าง:","product":"สินค้า","dashboardLink":"แดชบอร์ด","changelog":"บันทึกการเปลี่ยนแปลง","resources":"ทรัพยากร","documentation":"เอกสารประกอบ","npm":"เอ็นพีเอ็ม","legal":"กฎหมาย","mitLicense":"ใบอนุญาตเอ็มไอที","footerTagline":"จุดสิ้นสุดแบบรวมสำหรับการสร้าง AI เชื่อมต่อ กำหนดเส้นทาง และจัดการผู้ให้บริการ AI ของคุณได้อย่างง่ายดาย","copyright":"© {year} OmniRoute สงวนลิขสิทธิ์.","flowToolClaudeCode":"คล็อด โค้ด","flowToolOpenAICodex":"OpenAI Codex","flowToolCline":"ไคลน์","flowToolCursor":"เคอร์เซอร์","flowProviderOpenAI":"OpenAI","flowProviderAnthropic":"มานุษยวิทยา","flowProviderGemini":"ราศีเมถุน","flowProviderGithubCopilot":"นักบิน GitHub","interactiveDiagram":"แผนภาพเชิงโต้ตอบที่มองเห็นได้บนเดสก์ท็อป","ctaTitle":"พร้อมที่จะลดความซับซ้อนของโครงสร้างพื้นฐาน AI ของคุณแล้วหรือยัง?","ctaDescription":"เข้าร่วมกับนักพัฒนาที่กำลังปรับปรุงการบูรณาการ AI กับ OmniRoute โอเพ่นซอร์สและเริ่มต้นได้ฟรี","startFree":"เริ่มฟรี","readDocumentation":"อ่านเอกสารประกอบ"},"docs":{"title":"เอกสารประกอบ","quickStart":"เริ่มต้นอย่างรวดเร็ว","features":"คุณสมบัติ","supportedProviders":"ผู้ให้บริการที่รองรับ","supportedProvidersToc":"ผู้ให้บริการ","commonUseCases":"กรณีการใช้งานทั่วไป","clientCompatibility":"ความเข้ากันได้ของไคลเอ็นต์","protocolsToc":"Protocols","apiReference":"การอ้างอิง API","method":"วิธีการ","path":"เส้นทาง","notes":"หมายเหตุ","modelPrefixes":"คำนำหน้าโมเดล","prefix":"คำนำหน้า","troubleshooting":"การแก้ไขปัญหา","supportsChat":"รองรับทั้งปลายทางการแชทและการตอบกลับ","oauthAutoRefresh":"การเชื่อมต่อ OAuth พร้อมการรีเฟรชโทเค็นอัตโนมัติ","fullStreaming":"รองรับการสตรีมมิ่งเต็มรูปแบบสำหรับทุกรุ่น","docsLabel":"เอกสาร","docsHeroDescription":"เกตเวย์ AI สำหรับ LLM ที่มีผู้ให้บริการหลายราย จุดสิ้นสุดเดียวสำหรับ OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor และผู้ให้บริการอีกกว่า 20 ราย","openDashboard":"เปิดแดชบอร์ด","endpointPage":"หน้าจุดสิ้นสุด","github":"GitHub","reportIssue":"รายงานปัญหา","onThisPage":"บนหน้านี้","documentationVersion":"เอกสารประกอบ - v{version}","quickStartStep1Title":"1. ติดตั้งและรัน","quickStartStep1Prefix":"วิ่ง","quickStartStep1Middle":"หรือโคลนจาก GitHub แล้วรัน","quickStartStep2Title":"2. สร้างคีย์ API","quickStartStep2Text":"ไปที่จุดสิ้นสุด -> คีย์ที่ลงทะเบียน สร้างหนึ่งคีย์ต่อสภาพแวดล้อม","quickStartStep3Title":"3. เชื่อมต่อผู้ให้บริการ","quickStartStep3Text":"เพิ่มบัญชีผู้ให้บริการผ่านการเข้าสู่ระบบ OAuth, คีย์ API หรือการเชื่อมต่ออัตโนมัติระดับฟรี","quickStartStep4Title":"4. ตั้งค่า URL ฐานลูกค้า","quickStartStep4Prefix":"ชี้ IDE หรือไคลเอ็นต์ API ของคุณไปที่","quickStartStep4Suffix":"ใช้คำนำหน้าผู้ให้บริการ เป็นต้น","featureRoutingTitle":"การกำหนดเส้นทางผู้ให้บริการหลายราย","featureRoutingText":"กำหนดเส้นทางคำขอไปยังผู้ให้บริการ AI กว่า 30 รายผ่านจุดสิ้นสุดที่เข้ากันได้กับ OpenAI จุดเดียว รองรับ API การแชท การตอบกลับ เสียง และรูปภาพ","featureCombosTitle":"คอมโบและการปรับสมดุล","featureCombosText":"สร้างโมเดลคอมโบด้วยห่วงโซ่ทางเลือกและกลยุทธ์การปรับสมดุล: การหมุนเวียนแบบวนซ้ำ ลำดับความสำคัญ สุ่ม ใช้น้อยที่สุด และปรับต้นทุนให้เหมาะสม","featureUsageTitle":"การใช้งานและการติดตามต้นทุน","featureUsageText":"การนับโทเค็นแบบเรียลไทม์ การคำนวณต้นทุนต่อผู้ให้บริการ/โมเดล และรายละเอียดการใช้งานโดยละเอียดตามคีย์ API และบัญชี","featureAnalyticsTitle":"แดชบอร์ดการวิเคราะห์","featureAnalyticsText":"การวิเคราะห์ด้วยภาพพร้อมแผนภูมิสำหรับคำขอ โทเค็น ข้อผิดพลาด เวลาแฝง ต้นทุน และความนิยมของโมเดลในช่วงเวลาหนึ่ง","featureHealthTitle":"การตรวจติดตามสุขภาพ","featureHealthText":"การตรวจสอบสุขภาพแบบเรียลไทม์ สถานะของผู้ให้บริการ สถานะเซอร์กิตเบรกเกอร์ และการตรวจจับขีดจำกัดอัตราอัตโนมัติพร้อมการถอยกลับแบบเอ็กซ์โพเนนเชียล","featureCliTitle":"เครื่องมือ CLI","featureCliText":"จัดการการกำหนดค่า IDE, ส่งออก/นำเข้าข้อมูลสำรอง, ค้นหาโปรไฟล์ Codex และกำหนดการตั้งค่าจากแดชบอร์ด","featureSecurityTitle":"ความปลอดภัยและนโยบาย","featureSecurityText":"การรับรองความถูกต้องของคีย์ API, การกรอง IP, การป้องกันการแทรกทันที, นโยบายโดเมน, การจัดการเซสชัน และการบันทึกการตรวจสอบ","featureCloudSyncTitle":"การซิงค์บนคลาวด์","featureCloudSyncText":"ซิงค์การกำหนดค่าของคุณกับ Cloudflare Workers เพื่อการเข้าถึงระยะไกลด้วยข้อมูลประจำตัวที่เข้ารหัสและการเฟลโอเวอร์อัตโนมัติ","providersAcrossConnectionTypes":"{count} ผู้ให้บริการผ่านการเชื่อมต่อสามประเภท","manageProviders":"จัดการผู้ให้บริการ","providersCount":"{count} ผู้ให้บริการ","providerTypeFree":"ฟรีเทียร์","providerTypeOAuth":"OAuth","providerTypeApiKey":"คีย์ API","useCaseSingleEndpointTitle":"จุดสิ้นสุดเดียวสำหรับผู้ให้บริการหลายราย","useCaseSingleEndpointText":"ชี้ไคลเอ็นต์ไปที่ URL ฐานเดียวและกำหนดเส้นทางตามคำนำหน้าโมเดล (เช่น gh/, cc/, kr/, openai/)","useCaseFallbackTitle":"ทางเลือกและการสลับโมเดลด้วยคอมโบ","useCaseFallbackText":"สร้างโมเดลคอมโบในแดชบอร์ดและรักษาการกำหนดค่าไคลเอนต์ให้เสถียรในขณะที่ผู้ให้บริการหมุนเวียนภายใน","useCaseUsageVisibilityTitle":"การใช้งาน ต้นทุน และการมองเห็นการแก้ไขข้อบกพร่อง","useCaseUsageVisibilityText":"ติดตามโทเค็นและค่าใช้จ่ายตามผู้ให้บริการ บัญชี และคีย์ API ในแท็บการใช้งานและการวิเคราะห์","clientCherryStudioTitle":"เชอร์รี่ สตูดิโอ","baseUrlLabel":"URL ฐาน","chatEndpointLabel":"จุดสิ้นสุดการแชท","modelRecommendationLabel":"คำแนะนำโมเดล: คำนำหน้าที่ชัดเจน","clientCodexTitle":"โมเดล Codex / GitHub Copilot","clientCodexBullet1":"ใช้รหัสรุ่นด้วย","clientCodexBullet2":"โมเดลตระกูล Codex กำหนดเส้นทางอัตโนมัติไปยัง","clientCodexBullet3":"โมเดลที่ไม่ใช่ Codex ยังคงดำเนินต่อไป","clientCursorTitle":"เคอร์เซอร์ IDE","clientCursorBullet1":"ใช้","clientCursorBullet1Suffix":"คำนำหน้าสำหรับโมเดลเคอร์เซอร์","clientCursorBullet2":"การเชื่อมต่อ OAuth - เข้าสู่ระบบจากหน้าผู้ให้บริการ","clientClaudeTitle":"คล็อดโค้ด/ต้านแรงโน้มถ่วง","clientClaudeBullet1Prefix":"ใช้","clientClaudeBullet1Middle":"(คลอดด์) หรือ","clientClaudeBullet1Suffix":"(ต้านแรงโน้มถ่วง) คำนำหน้า","protocolsTitle":"Protocols: MCP & A2A","protocolsDescription":"OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.","protocolMcpTitle":"MCP (Model Context Protocol)","protocolMcpDesc":"Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.","protocolMcpStep1":"Start MCP transport with `omniroute --mcp`.","protocolMcpStep2":"Point your MCP client to stdio transport.","protocolMcpStep3":"Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.","protocolA2aTitle":"A2A (Agent2Agent)","protocolA2aDesc":"Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.","protocolA2aStep1":"Read `/.well-known/agent.json` for agent discovery.","protocolA2aStep2":"Send `message/send` or `message/stream` requests to `POST /a2a`.","protocolA2aStep3":"Manage task lifecycle with `tasks/get` and `tasks/cancel`.","protocolTroubleshootingTitle":"Protocol Troubleshooting","protocolTroubleshooting1":"If MCP status is offline, verify the stdio process is running and heartbeat file is updating.","protocolTroubleshooting2":"If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.","protocolTroubleshooting3":"Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.","endpointChatNote":"จุดสิ้นสุดการแชทที่เข้ากันได้กับ OpenAI (ค่าเริ่มต้น)","endpointResponsesNote":"จุดสิ้นสุด API การตอบกลับ (Codex, o-series)","endpointModelsNote":"แค็ตตาล็อกโมเดลสำหรับผู้ให้บริการที่เชื่อมต่อทั้งหมด","endpointAudioNote":"การถอดเสียง (Deepgram, AssemblyAI)","endpointImagesNote":"การสร้างภาพ (NanoBanana)","endpointRewriteChatNote":"เขียนตัวช่วยใหม่สำหรับลูกค้าที่ไม่มี /v1","endpointRewriteResponsesNote":"เขียนตัวช่วยใหม่สำหรับการตอบกลับโดยไม่มี /v1","endpointRewriteModelsNote":"เขียนตัวช่วยใหม่สำหรับการค้นหาโมเดลโดยไม่มี /v1","modelPrefixesDescriptionStart":"ใช้คำนำหน้าผู้ให้บริการก่อนชื่อรุ่นเพื่อกำหนดเส้นทางไปยังผู้ให้บริการเฉพาะ ตัวอย่าง:","modelPrefixesDescriptionEnd":"เส้นทางไปยัง GitHub Copilot","provider":"ผู้ให้บริการ","type":"ประเภท","troubleshootingModelRouting":"หากไคลเอ็นต์ล้มเหลวด้วยการกำหนดเส้นทางโมเดล ให้ใช้ผู้ให้บริการ/โมเดลที่ชัดเจน (เช่น gh/gpt-5.1-codex)","troubleshootingAmbiguousModels":"หากคุณได้รับข้อผิดพลาดโมเดลที่ไม่ชัดเจน ให้เลือกคำนำหน้าผู้ให้บริการแทนรหัสโมเดลเปล่า","troubleshootingCodexFamily":"สำหรับโมเดลตระกูล GitHub Codex ให้เก็บโมเดลเป็น gh/codex-model; เราเตอร์เลือก / ตอบสนองโดยอัตโนมัติ","troubleshootingTestConnection":"ใช้แดชบอร์ด > ผู้ให้บริการ > ทดสอบการเชื่อมต่อ ก่อนการทดสอบจาก IDE หรือไคลเอนต์ภายนอก","troubleshootingCircuitBreaker":"หากผู้ให้บริการแสดงเซอร์กิตเบรกเกอร์เปิดอยู่ ให้รอคูลดาวน์หรือตรวจสอบหน้าสุขภาพเพื่อดูรายละเอียด","troubleshootingOAuth":"สำหรับผู้ให้บริการ OAuth ให้ตรวจสอบสิทธิ์อีกครั้งหากโทเค็นหมดอายุ ตรวจสอบตัวบ่งชี้สถานะบัตรผู้ให้บริการ","managementApiReference":"Management API Reference","managementApiDescription":"Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.","mgmtProxiesListNote":"List saved proxy registry items (supports pagination).","mgmtProxiesCreateNote":"Create a reusable proxy item in the registry.","mgmtProxiesHealthNote":"Get 24h/rolling health metrics per saved proxy from proxy logs.","mgmtProxiesBulkAssignNote":"Assign or clear one proxy across many scope IDs in one request.","mgmtAssignmentsListNote":"List proxy assignments by scope, scope_id, or proxy_id.","mgmtAssignmentsUpdateNote":"Assign or clear proxy for global/provider/account/combo scope.","mgmtLegacyMigrationNote":"Import legacy proxyConfig maps into registry assignments.","endpointSpeechNote":"การสร้างข้อความเป็นคำพูด (ElevenLabs, OpenAI TTS)","endpointEmbeddingsNote":"การสร้างการฝังข้อความ (OpenAI, Cohere, Voyage)"},"legal":{"privacyPolicy":"นโยบายความเป็นส่วนตัว","termsOfService":"ข้อกำหนดในการให้บริการ","providerConfigurations":"การกำหนดค่าของผู้ให้บริการ","apiKeys":"คีย์ API","usageLogs":"บันทึกการใช้งาน","applicationSettings":"การตั้งค่าแอปพลิเคชัน","viewExportAnalytics":"ดูและส่งออกการวิเคราะห์การใช้งาน","clearHistory":"ล้างประวัติการใช้งานได้ตลอดเวลา","configureRetention":"กำหนดค่านโยบายการเก็บรักษาบันทึก","backupRestore":"สำรองและกู้คืนฐานข้อมูลของคุณ","privacyMetadataTitle":"นโยบายความเป็นส่วนตัว | OmniRoute","privacyMetadataDescription":"นโยบายความเป็นส่วนตัวสำหรับเราเตอร์พร็อกซี OmniRoute AI API","termsMetadataTitle":"เงื่อนไขการให้บริการ | OmniRoute","termsMetadataDescription":"ข้อกำหนดในการให้บริการสำหรับเราเตอร์พร็อกซี OmniRoute AI API","backToHome":"กลับบ้าน","lastUpdated":"อัปเดตล่าสุด: {date}","policyLastUpdatedDate":"13 กุมภาพันธ์ 2569","listSeparator":"-","questionsVisit":"มีคำถาม? เยี่ยมชมของเรา","githubRepository":"พื้นที่เก็บข้อมูล GitHub","privacySection1Title":"1. สถาปัตยกรรมท้องถิ่นแห่งแรก","privacySection1Text":"OmniRoute ได้รับการออกแบบให้เป็นแอปพลิเคชั่นแรกในท้องถิ่น การประมวลผลและการจัดเก็บข้อมูลทั้งหมดเกิดขึ้นบนเครื่องของคุณทั้งหมด ไม่มีเซิร์ฟเวอร์ส่วนกลางที่รวบรวมข้อมูลของคุณ","privacySection2Title":"2. ข้อมูลที่เราจัดเก็บ","privacyDataStoredIn":"ข้อมูลต่อไปนี้ถูกจัดเก็บไว้ในเครื่อง","privacyDataProviderConfigurationsDesc":"URL การเชื่อมต่อ ประเภทผู้ให้บริการ และการตั้งค่าลำดับความสำคัญ","privacyDataApiKeysDesc":"เข้ารหัสและจัดเก็บไว้ในเครื่องเพื่อตรวจสอบสิทธิ์กับผู้ให้บริการ AI","privacyDataUsageLogsDesc":"จำนวนคำขอ การใช้โทเค็น ชื่อโมเดล การประทับเวลา และเวลาตอบสนอง","privacyDataApplicationSettingsDesc":"การตั้งค่าธีม กลยุทธ์การกำหนดเส้นทาง และการกำหนดค่าคอมโบ","privacySection3Title":"3. ไม่มีการวัดและส่งข้อมูลทางไกล","privacySection3Text":"OmniRoute ไม่รวบรวมการวัดและส่งข้อมูลทางไกล การวิเคราะห์ หรือรายงานข้อขัดข้อง ไม่มีการส่งข้อมูลถึงเราหรือบุคคลที่สาม รูปแบบการใช้งาน การเรียก API และการกำหนดค่าของคุณยังคงเป็นส่วนตัวโดยสมบูรณ์","privacySection4Title":"4. ผู้ให้บริการ AI บุคคลที่สาม","privacySection4Text":"เมื่อคุณทำการเรียก API ผ่าน OmniRoute คำขอของคุณจะถูกส่งต่อไปยังผู้ให้บริการ AI ที่คุณกำหนดค่าไว้ (เช่น OpenAI, Anthropic, Google) ผู้ให้บริการเหล่านี้มีนโยบายความเป็นส่วนตัวของตนเองที่ควบคุมวิธีจัดการข้อมูลของคุณ โปรดตรวจสอบ:","privacyOpenAiPolicy":"นโยบายความเป็นส่วนตัวของ OpenAI","privacyAnthropicPolicy":"นโยบายความเป็นส่วนตัวด้านมานุษยวิทยา","privacyGooglePolicy":"นโยบายความเป็นส่วนตัวของ Google","privacySection5Title":"5. Cloud Sync (ไม่บังคับ)","privacySection5Text":"หากคุณเปิดใช้งานคุณสมบัติเสริมการซิงค์บนคลาวด์ การกำหนดค่าผู้ให้บริการและคีย์ API อาจถูกส่งไปยังจุดสิ้นสุดบนคลาวด์ที่กำหนดค่าไว้ คุณลักษณะนี้ถูกปิดใช้งานโดยค่าเริ่มต้น และจำเป็นต้องเลือกใช้อย่างชัดเจน","privacySection6Title":"6. การบันทึก","privacyLoggingIntro":"บันทึกคำขอสามารถกำหนดค่าได้ผ่านการตั้งค่าแดชบอร์ด คุณสามารถ:","privacySection7Title":"7. สิทธิ์ของคุณ","privacySection7TextStart":"เนื่องจากข้อมูลทั้งหมดถูกจัดเก็บไว้ในเครื่อง คุณจึงสามารถควบคุมได้อย่างเต็มที่ คุณสามารถลบข้อมูลของคุณได้ตลอดเวลาโดยการลบ","privacySection7TextEnd":"ไดเร็กทอรีหรือใช้คุณสมบัติการสำรองและกู้คืนฐานข้อมูลในแดชบอร์ด","termsSection1Title":"1. ภาพรวม","termsSection1Text":"OmniRoute เป็นเราเตอร์พร็อกซี AI API ตัวแรกในเครื่องที่ทำงานบนเครื่องของคุณทั้งหมด โดยกำหนดเส้นทางคำขอไปยังผู้ให้บริการ AI หลายรายด้วยการปรับสมดุลโหลด การเฟลโอเวอร์ และการติดตามการใช้งาน","termsSection2Title":"2. ความรับผิดชอบของผู้ใช้","termsResponsibilityApiKeys":"คุณมีหน้าที่รับผิดชอบแต่เพียงผู้เดียวในการจัดการคีย์ API และข้อมูลรับรองของคุณเองสำหรับผู้ให้บริการ AI บุคคลที่สาม (OpenAI, Anthropic, Google ฯลฯ)","termsResponsibilityCompliance":"คุณต้องปฏิบัติตามข้อกำหนดในการให้บริการของผู้ให้บริการ AI แต่ละรายซึ่งมี API ที่คุณเข้าถึงผ่าน OmniRoute","termsResponsibilitySecurity":"คุณต้องรับผิดชอบต่อความปลอดภัยของการติดตั้ง OmniRoute ในพื้นที่ของคุณ รวมถึงการตั้งรหัสผ่านและการจำกัดการเข้าถึงเครือข่าย","termsSection3Title":"3. มันทำงานอย่างไร","termsSection3Text":"OmniRoute ทำหน้าที่เป็นพร็อกซีตัวกลาง การเรียก API ที่ส่งไปยัง OmniRoute จะถูกแปลและส่งต่อไปยังผู้ให้บริการ AI ที่กำหนดค่าไว้ของคุณ OmniRoute จะไม่แก้ไขเนื้อหาคำขอหรือการตอบกลับของคุณนอกเหนือจากการแปลโปรโตคอลที่จำเป็น","termsSection4Title":"4. การจัดการข้อมูล","termsDataStoredLocally":"ข้อมูลทั้งหมดจะถูกจัดเก็บไว้ในเครื่องของคุณในฐานข้อมูล SQLite","termsNoTransmission":"OmniRoute จะไม่ส่งข้อมูลใดๆ ไปยังเซิร์ฟเวอร์ภายนอก เว้นแต่คุณจะเปิดใช้งานคุณสมบัติการซิงค์บนคลาวด์อย่างชัดเจน","termsDataLocationText":"บันทึกการใช้งาน คีย์ API และการกำหนดค่าจะถูกจัดเก็บไว้ใน","termsSection5Title":"5. ข้อจำกัดความรับผิดชอบ","termsSection5Text":"OmniRoute มีให้ \\"ตามสภาพ\\" โดยไม่มีการรับประกันใดๆ เราจะไม่รับผิดชอบต่อค่าใช้จ่ายใดๆ ที่เกิดขึ้นจากการใช้ API การหยุดชะงักของบริการ หรือการสูญหายของข้อมูล สำรองข้อมูลการกำหนดค่าของคุณไว้เสมอ","termsSection6Title":"6. โอเพ่นซอร์ส","termsSection6Text":"OmniRoute เป็นซอฟต์แวร์โอเพ่นซอร์ส คุณมีอิสระที่จะตรวจสอบ แก้ไข และแจกจ่ายภายใต้เงื่อนไขของใบอนุญาต"},"endpoints":{"tabProxy":"Endpoint Proxy","tabApiEndpoints":"API Endpoints","apiEndpointsTitle":"API Endpoints","apiEndpointsDescription":"Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.","comingSoon":"Coming Soon","plannedFeatures":"Planned Features","featureRestApi":"REST API endpoint catalog with interactive documentation","featureWebhooks":"Webhook configuration and event subscriptions","featureSwagger":"OpenAPI / Swagger spec auto-generation","featureAuth":"API key and OAuth scope management per endpoint"},"agents":{"title":"CLI Agents","description":"Discover installed CLI agents on your system. Add custom agents for auto-detection.","refresh":"Refresh","installed":"Installed","notFound":"Not Found","builtIn":"Built-in","custom":"Custom","remove":"Remove","addCustomAgent":"Add Custom Agent","addCustomAgentDesc":"Register any CLI tool for detection. It will be scanned automatically on refresh.","agentName":"Agent Name","binaryName":"Binary Name","versionCommand":"Version Command","spawnArgs":"Spawn Args","addAgent":"Add Agent","scanning":"Scanning system for CLI agents...","opencodeIntegration":"OpenCode Integration","opencodeDetected":"opencode {version} detected","opencodeDesc":"Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.","downloadConfig":"Download {file}","downloaded":"Downloaded!","setupGuideTitle":"Setup guide","openCliTools":"Open CLI Tools","setupGuideDetectCliTitle":"Detect installed CLIs","setupGuideDetectCliDesc":"Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.","setupGuideCustomAgentTitle":"Register custom binary","setupGuideCustomAgentDesc":"Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.","setupGuideCommandMissingTitle":"Fix \'command not found\'","setupGuideCommandMissingDesc":"Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh."},"autoCombo":{"title":"Auto-Combo Engine","statusNormal":"Normal","statusIncident":"Incident Mode","modePack":"Mode Pack","providerScores":"Provider Scores","noAutoCombo":"No auto-combo configured.","excludedProviders":"Excluded Providers","noExclusions":"No providers currently excluded.","factorQuota":"Quota","factorHealth":"Health","factorCost":"Cost","factorLatency":"Latency","factorTaskFit":"Task Fit","factorStability":"Stability","factorTierPriority":"Tier Priority","factorTierPriorityDesc":"Prefers accounts with higher quota tiers (Ultra/Pro over Free)","scoreFactorBreakdown":"Scoring Factors","modePackShipFast":"Ship Fast","modePackCostSaver":"Cost Saver","modePackQualityFirst":"Quality First","modePackOfflineFriendly":"Offline Friendly"},"search":{"searchQuery":"Search Query","searchResults":"Search Results","cachedResult":"Cached","searchCost":"Cost","searchTools":"Search Tools","searchToolsDesc":"Advanced search testing with provider comparison","compareProviders":"Compare Providers","rerankResults":"Rerank Results","searchHistory":"Search History","urlOverlap":"URL Overlap","noSearchProviders":"No search providers configured. Add providers in Settings.","noRerankModels":"No rerank model available","webSearch":"Web Search","provider":"Provider","searchType":"Search Type","maxResults":"Max Results","filters":"Filters","country":"Country","language":"Language","timeRange":"Time Range","includeDomains":"Include Domains","excludeDomains":"Exclude Domains","safeSearch":"Safe Search","formatted":"Formatted","rawJson":"JSON","cacheMiss":"cache miss","cacheHit":"cache hit","latency":"Latency","cost":"Cost","results":"Results","rerank":"Rerank","rerankModel":"Rerank Model","positionDelta":"Position Change","emptyState":"Send a search query to see results","safeSearchOff":"Off","safeSearchModerate":"Moderate","safeSearchStrict":"Strict","queryPlaceholder":"Enter search query...","providerAuto":"auto (cheapest)","searchTypeWeb":"web","searchTypeNews":"news","optionAny":"any","timeRangeDay":"Past day","timeRangeWeek":"Past week","timeRangeMonth":"Past month","timeRangeYear":"Past year","domainPlaceholder":"example.com","requestTimedOut":"Request timed out ({seconds}s)","networkError":"Network error"},"templateNames":{"simple-chat":"แชทง่ายๆ","streaming":"สตรีมมิ่ง","system-prompt":"พร้อมท์ระบบ","thinking":"กำลังคิด","tool-calling":"การเรียกเครื่องมือ","multi-turn":"หลายเลี้ยว"},"templateDescriptions":{"simple-chat":"เทมเพลตการแชทพื้นฐานพร้อมข้อความระบบ","streaming":"เทมเพลตสำหรับการตอบกลับแบบสตรีม","system-prompt":"เทมเพลตพร้อมแจ้งระบบแบบกำหนดเอง","thinking":"เทมเพลตพร้อมงบประมาณการใช้เหตุผล/การคิด","tool-calling":"เทมเพลตสำหรับการเรียกใช้เครื่องมือ/ฟังก์ชัน","multi-turn":"เทมเพลตสำหรับการสนทนาหลายรอบ"},"templatePayloads":{"simpleChat":{"system":"คุณเป็นผู้ช่วย AI ที่เป็นประโยชน์","userGreeting":"สวัสดี! วันนี้ฉันจะช่วยคุณได้อย่างไร?"},"streaming":{"prompt":"เขียนเรื่องราวเกี่ยวกับ"},"systemPrompt":{"question":"ความหมายของชีวิตคืออะไร?","systemInstruction":"ให้คำตอบที่รอบคอบและมีปรัชญา"},"thinking":{"question":"อธิบายการคำนวณควอนตัม"},"toolCalling":{"cityNameDescription":"ชื่อเมืองที่จะเรียกสภาพอากาศ","toolDescription":"รับสภาพอากาศปัจจุบันสำหรับสถานที่","userWeather":"สภาพอากาศในโตเกียวเป็นอย่างไร?"},"multiTurn":{"system":"คุณเป็นผู้ช่วยที่เป็นประโยชน์","assistantExample":"เรายินดีที่จะช่วยเหลือคุณในเรื่องนั้น","userInitial":"ฉันต้องการความช่วยเหลือเกี่ยวกับ","userFollowUp":"คุณช่วยอธิบายรายละเอียดเกี่ยวกับเรื่องนั้นได้ไหม?"}},"cache":{"title":"Cache Management","description":"Monitor and manage semantic response cache, hit rates, and token savings.","refresh":"Refresh","clearAll":"Clear All","memoryEntries":"Memory Entries","dbEntries":"DB Entries","cacheHits":"Cache Hits","tokensSaved":"Tokens Saved","hitRate":"Hit Rate","performance":"Cache Performance","behavior":"Cache Behavior","idempotency":"Idempotency Layer","clearSuccess":"Cache cleared. {count} expired entries removed.","clearError":"Failed to clear cache.","unavailable":"Cache unavailable","unavailableDesc":"Could not fetch cache statistics. Make sure the server is running.","memoryEntriesSub":"In-memory LRU","dbEntriesSub":"Persisted (SQLite)","cacheHitsSub":"of {total} total","tokensSavedSub":"Estimated from hits","autoRefresh":"Auto-refreshes every {seconds}s","hits":"Hits","misses":"Misses","total":"Total","behaviorDeterministic":"Only non-streaming requests with temperature=0 are cached.","behaviorBypass":"Bypass with header {header}.","behaviorTwoTier":"Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).","behaviorTtl":"Default TTL: 30 minutes. Configure via {envVar}.","activeDedupKeys":"Active Dedup Keys","dedupWindow":"Dedup Window"}}'))}];
1
+ module.exports=[516441,a=>{a.v(JSON.parse('{"common":{"save":"บันทึก","cancel":"ยกเลิก","delete":"ลบ","loading":"กำลังโหลด...","error":"เกิดข้อผิดพลาด","success":"ความสำเร็จ","confirm":"คุณแน่ใจเหรอ?","refresh":"รีเฟรช","close":"ปิด","add":"เพิ่ม","edit":"แก้ไข","search":"ค้นหา","back":"กลับ","next":"ถัดไป","submit":"ส่ง","reset":"รีเซ็ต","copy":"คัดลอก","copied":"คัดลอก!","enabled":"เปิดใช้งานแล้ว","disabled":"ปิดการใช้งาน","active":"ใช้งานอยู่","inactive":"ไม่ได้ใช้งาน","noData":"ไม่มีข้อมูล","configure":"กำหนดค่า","manage":"จัดการ","name":"ชื่อ","actions":"การดำเนินการ","status":"สถานะ","type":"ประเภท","model":"รุ่น","models":"โมเดล","provider":"ผู้ให้บริการ","account":"บัญชี","time":"เวลา","details":"รายละเอียด","created":"สร้างแล้ว","lastUsed":"ใช้ล่าสุด","loadMore":"โหลดเพิ่มเติม","noResults":"ไม่พบผลลัพธ์","reloadPage":"โหลดหน้าซ้ำ","connected":"เชื่อมต่อแล้ว","disconnected":"ตัดการเชื่อมต่อแล้ว","notConfigured":"ไม่ได้กำหนดค่า","testConnection":"ทดสอบการเชื่อมต่อ","enable":"เปิดใช้งาน","disable":"ปิดการใช้งาน","columns":"คอลัมน์","newest":"ใหม่ล่าสุด","oldest":"เก่าแก่ที่สุด","all":"ทั้งหมด","none":"ไม่มี","yes":"ใช่","no":"ไม่","warning":"คำเตือน","note":"หมายเหตุ","free":"ฟรี","skipToContent":"ข้ามไปที่เนื้อหา","maintenanceServerIssues":"Server is experiencing issues. Some features may be unavailable.","maintenanceServerUnreachable":"Server is unreachable. Reconnecting...","accept":"ยอมรับ","accountId":"รหัสบัญชี","alias":"นามแฝง","apiKeyId":"รหัสคีย์ API","apiKeyName":"ชื่อคีย์ API","apiKeySecret":"ความลับของคีย์ API","authorization":"การอนุญาต","content-type":"ประเภทเนื้อหา","content-length":"ความยาวของเนื้อหา","cookie":"คุกกี้","file":"ไฟล์","host":"โฮสต์","id":"บัตรประจำตัวประชาชน","import":"นำเข้า","limit":"ขีดจำกัด","offset":"ออฟเซ็ต","open":"เปิด","origin":"ต้นกำเนิด","promptTokens":"โทเค็นพร้อมท์","completionTokens":"โทเค็นการสำเร็จ","totalTokens":"โทเค็นทั้งหมด","rawModel":"โมเดลดิบ","scope":"ขอบเขต","skill":"ทักษะ","sortBy":"เรียงตาม","sortOrder":"เรียงลำดับ","tab":"แท็บ","text":"ข้อความ","textarea":"พื้นที่ข้อความ","tool":"เครื่องมือ","toolId":"รหัสเครื่องมือ","web":"เว็บ","whereUsed":"ใช้ที่ไหน","whitelist":"ไวท์ลิสต์","blacklist":"บัญชีดำ","resolve":"แก้ไข","force":"บังคับ","base64url":"URL Base64","hex":"ฐานสิบหก","range":"พิสัย","component":"ส่วนประกอบ","redirect_uri":"เปลี่ยนเส้นทาง URI","idempotency-key":"คีย์ Idempotency","error_description":"คำอธิบายข้อผิดพลาด","code":"รหัส","compatible":"เข้ากันได้","chat-completions":"เสร็จสิ้นการแชท","oauth":"OAuth","auth_token":"โทเค็นการรับรองความถูกต้อง","crypto":"การเข้ารหัสลับ","hours":"ชั่วโมง","selfsigned":"ลงนามด้วยตนเอง","proxy_id":"รหัสพร็อกซี","proxyId":"รหัสพร็อกซี","connectionId":"รหัสการเชื่อมต่อ","resolveConnectionId":"แก้ไขรหัสการเชื่อมต่อ","resolve_connection_id":"แก้ไขรหัสการเชื่อมต่อ","scope_id":"รหัสขอบเขต","scopeId":"รหัสขอบเขต","jwtSecret":"ความลับเจดับเบิ้ลยูที","keytar":"คีย์ตาร์","better-sqlite3":"ดีกว่า-sqlite3","undici":"อูนดิ","builder-id":"รหัสผู้สร้าง","musicDesc":"คำอธิบายเพลง","musicGeneration":"ดนตรีเจเนอเรชั่น","idc":"ไอดีซี","cloud-status-changed":"สถานะคลาวด์เปลี่ยนไป","where_used":"ใช้ที่ไหน","windowMs":"หน้าต่าง (มิลลิวินาที)","social-github":"GitHub","social-google":"กูเกิล","TOOL_ALLOWLIST":"รายการที่อนุญาตของเครื่องมือ","TOOL_DENYLIST":"รายการเครื่องมือที่ปฏิเสธ","Failed to save pricing":"บันทึกราคาไม่สำเร็จ","Failed to reset pricing":"ไม่สามารถรีเซ็ตราคาได้","apikey":"คีย์ API","http":"HTTP"},"sidebar":{"home":"บ้าน","dashboard":"แดชบอร์ด","providers":"ผู้ให้บริการ","combos":"คอมโบ","usage":"การใช้งาน","analytics":"การวิเคราะห์","costs":"ค่าใช้จ่าย","health":"สุขภาพ","limits":"ขีดจำกัดและโควต้า","cliTools":"เครื่องมือ CLI","media":"สื่อ","settings":"การตั้งค่า","translator":"นักแปล","docs":"เอกสาร","issues":"ประเด็นต่างๆ","apiManager":"ผู้จัดการ API","logs":"บันทึก","auditLog":"บันทึกการตรวจสอบ","shutdown":"ปิดเครื่อง","restart":"รีสตาร์ท","shutdownConfirm":"ปิด OmniRoute หรือไม่?","restartConfirm":"รีสตาร์ท OmniRoute หรือไม่","version":"v{version}","debug":"ดีบัก","system":"ระบบ","help":"ช่วยด้วย","serverDisconnected":"เซิร์ฟเวอร์ถูกตัดการเชื่อมต่อ","serverDisconnectedMsg":"พร็อกซีเซิร์ฟเวอร์ถูกหยุดหรือกำลังรีสตาร์ท","expandSidebar":"ขยายแถบด้านข้าง","collapseSidebar":"ยุบแถบด้านข้าง","themes":"ธีมส์","presetColors":"สียอดนิยม","createTheme":"สร้างธีม","chooseColor":"เลือกหนึ่งสี","themeCoral":"ปะการัง","themeBlue":"สีฟ้า","themeRed":"สีแดง","themeGreen":"สีเขียว","themeViolet":"Violet","themeOrange":"Orange","themeCyan":"Cyan","endpoints":"จุดปลายทาง","playground":"Playground","agents":"เอเจนต์","cliToolsShort":"เครื่องมือ","autoCombo":"Auto Combo","searchTools":"Search Tools","cache":"Cache","cacheShort":"Cache"},"themesPage":{"title":"ธีมส์","description":"Choose a preset theme or create your own with a single color","presetColors":"สียอดนิยม","customTheme":"Custom theme","customThemeDesc":"Click create theme and pick one color","createTheme":"สร้างธีม","activePreset":"Active theme"},"header":{"logout":"ออกจากระบบ","language":"ภาษา","providers":"ผู้ให้บริการ","providerDescription":"จัดการการเชื่อมต่อผู้ให้บริการ AI ของคุณ","combos":"คอมโบ","comboDescription":"คอมโบโมเดลพร้อมทางเลือกสำรอง","usage":"การใช้งานและการวิเคราะห์","usageDescription":"ตรวจสอบการใช้งาน API การใช้โทเค็น และบันทึกคำขอของคุณ","analytics":"การวิเคราะห์","analyticsDescription":"แผนภูมิ แนวโน้ม และข้อมูลเชิงลึกในการประเมิน","cliTools":"เครื่องมือ CLI","cliToolsDescription":"กำหนดค่าเครื่องมือ CLI","home":"บ้าน","homeDescription":"ยินดีต้อนรับสู่ OmniRoute","endpoint":"Endpoints","endpointDescription":"Manage proxy endpoints, MCP, A2A, and API endpoints","settings":"การตั้งค่า","settingsDescription":"จัดการการตั้งค่าของคุณ","openaiCompatible":"รองรับ OpenAI","anthropicCompatible":"เข้ากันได้กับมานุษยวิทยา","media":"Media","mediaDescription":"Generate images, videos, and music","themes":"ธีมส์","themesDescription":"Choose a color theme for the whole dashboard panel","mcp":"MCP","mcpDescription":"Model Context Protocol server management and tools","a2a":"A2A","a2aDescription":"Agent-to-Agent protocol tasks and observability"},"home":{"quickStart":"เริ่มต้นอย่างรวดเร็ว","quickStartDesc":"เริ่มต้นใช้งานใน 4 ขั้นตอน เชื่อมต่อผู้ให้บริการ โมเดลเส้นทาง ตรวจสอบทุกอย่าง","fullDocs":"เอกสารฉบับเต็ม","step1Title":"1. สร้างคีย์ API","step1Desc":"ไปที่ <endpoint>Endpoint</endpoint> -> คีย์ที่ลงทะเบียน สร้างหนึ่งคีย์ต่อสภาพแวดล้อม","step2Title":"2. เชื่อมต่อผู้ให้บริการ","step2Desc":"เพิ่มบัญชีใน <providers>Providers</providers> รองรับ OAuth, คีย์ API และระดับฟรี","step3Title":"3. ชี้แนะลูกค้าของคุณ","step3Desc":"ตั้งค่า URL พื้นฐานเป็น {url} ใน IDE หรือไคลเอ็นต์ API ของคุณ","step4Title":"4. ตรวจสอบและเพิ่มประสิทธิภาพ","step4Desc":"ติดตามโทเค็น ต้นทุน และข้อผิดพลาดใน <logs>บันทึกคำขอ</logs> และ <analytics>Analytics</analytics>","providersOverview":"ภาพรวมผู้ให้บริการ","configuredOf":"{configured} กำหนดค่าจากผู้ให้บริการที่พร้อมใช้งาน {total}","noModelsAvailable":"ไม่มีรุ่นสำหรับผู้ให้บริการรายนี้","configureFirst":"กำหนดค่าการเชื่อมต่อก่อนใน {providers}","configureProvider":"กำหนดค่าผู้ให้บริการ","modelAvailable":"{count} มีโมเดลให้เลือก","modelsAvailable":"{count} มีรุ่นให้เลือก","connectionsActive":"{count} การเชื่อมต่อทำงานอยู่","connectionsActivePlural":"{count} การเชื่อมต่อทำงานอยู่","copyModelName":"คัดลอกชื่อรุ่น","documentation":"เอกสารประกอบ","healthMonitor":"การตรวจสุขภาพ","reportIssue":"รายงานปัญหา","activeError":"{active} ใช้งานอยู่ · ข้อผิดพลาด {errors}","oauthLabel":"OAuth","apiKeyLabel":"คีย์ API","requestsShort":"{count} ความต้องการ","providerModelsTitle":"{provider} - โมเดล","copiedModel":"คัดลอก: {model}","aliasLabel":"นามแฝง","updateNow":"อัปเดตทันที","updating":"กำลังอัปเดต...","updateAvailableDesc":"มีเวอร์ชันใหม่ให้ใช้งานแล้ว คลิกเพื่ออัปเดต","updateStarted":"เริ่มการอัพเดต..."},"analytics":{"title":"การวิเคราะห์","overviewDescription":"ตรวจสอบรูปแบบการใช้งาน API การใช้โทเค็น ต้นทุน และแนวโน้มกิจกรรมของผู้ให้บริการและโมเดลทั้งหมด","evalsDescription":"เรียกใช้ชุดการประเมินผลเพื่อทดสอบและตรวจสอบความถูกต้องของตำแหน่งข้อมูล LLM ของคุณ เปรียบเทียบคุณภาพของโมเดล ตรวจจับการถดถอย และเวลาแฝงของเกณฑ์มาตรฐาน","overview":"ภาพรวม","evals":"เอวาลส์"},"apiManager":{"title":"คีย์ API","createKey":"สร้างคีย์ API","key":"คีย์","revokeKey":"เพิกถอนคีย์","revokeConfirm":"คุณแน่ใจหรือไม่ว่าต้องการเพิกถอนคีย์ API นี้","noKeys":"ยังไม่มีคีย์ API","noKeysDesc":"สร้างคีย์ API แรกของคุณเพื่อตรวจสอบสิทธิ์คำขอไปยังตำแหน่งข้อมูลของคุณ","keyLabel":"ป้ายกำกับที่สำคัญ","permissions":"สิทธิ์","expiresAt":"หมดอายุ","never":"ไม่เคย","revoke":"เพิกถอน","showKey":"แสดงคีย์","hideKey":"ซ่อนคีย์","copyKey":"คัดลอกคีย์ API","allModels":"ทุกรุ่น","selectedModels":"รุ่นที่เลือก","readOnly":"อ่านอย่างเดียว","fullAccess":"การเข้าถึงแบบเต็ม","keyManagement":"การจัดการคีย์ API","keyManagementDesc":"สร้างและจัดการคีย์ API สำหรับการตรวจสอบคำขอไปยังปลายทางของคุณ","totalKeys":"คีย์ทั้งหมด","restricted":"ถูกจำกัด","totalRequests":"คำขอทั้งหมด","modelsAvailable":"รุ่นที่มีจำหน่าย","registeredKeys":"คีย์ที่ลงทะเบียน","keysRegistered":"ลงทะเบียน {count} คีย์แล้ว","keyRegistered":"ลงทะเบียนคีย์ {count} แล้ว","keysSecurityNote":"แต่ละคีย์จะแยกการติดตามการใช้งานและสามารถเพิกถอนได้โดยอิสระ คีย์จะถูกปกปิดหลังจากสร้างเพื่อความปลอดภัย","createFirstKey":"สร้างคีย์แรกของคุณ","name":"ชื่อ","usage":"การใช้งาน","created":"สร้างแล้ว","actions":"การดำเนินการ","reqs":"ความต้องการ","neverUsed":"ไม่เคยใช้","deleteConfirm":"ลบคีย์ API นี้ใช่ไหม","usageTips":"เคล็ดลับการใช้งาน","tipAuth":"ใช้คีย์ API ในส่วนหัวการอนุญาตเป็น Bearer YOUR_KEY","tipSecure":"ในระหว่างการสร้างคีย์จะแสดงเพียงครั้งเดียว — เก็บไว้อย่างปลอดภัย","tipSeparate":"สร้างคีย์แยกต่างหากสำหรับไคลเอนต์หรือสภาพแวดล้อมที่แตกต่างกัน","tipRestrict":"จำกัดคีย์ไว้ที่รุ่นเฉพาะเพื่อความปลอดภัยและการควบคุมต้นทุนที่ดีขึ้น","keyName":"ชื่อคีย์","keyNamePlaceholder":"เช่น คีย์การผลิต คีย์การพัฒนา","keyNameDesc":"เลือกชื่อที่สื่อความหมายเพื่อระบุวัตถุประสงค์ของคีย์นี้","keyCreated":"สร้างคีย์ API แล้ว","keyCreatedSuccess":"สร้างคีย์สำเร็จแล้ว!","keyCreatedNote":"คัดลอกและจัดเก็บคีย์นี้ทันที ซึ่งจะไม่แสดงอีก","done":"เสร็จแล้ว","savePermissions":"บันทึกสิทธิ์","allowAll":"อนุญาตทั้งหมด","restrict":"จำกัด","allowAllInfo":"กุญแจนี้เข้าได้ทุกรุ่น","restrictInfo":"คีย์นี้สามารถเข้าถึงโมเดล {selected} จาก {total}","selected":"{count} เลือกแล้ว","all":"ทั้งหมด","clear":"ชัดเจน","searchModels":"ค้นหารุ่นตามชื่อหรือผู้ให้บริการ...","noModelsFound":"ไม่พบรุ่น","keyNameRequired":"ต้องระบุชื่อคีย์","keyNameTooLong":"ชื่อคีย์ต้องมีอักขระ {max} ตัวหรือน้อยกว่า","keyNameInvalid":"ชื่อคีย์มีได้เฉพาะตัวอักษร ตัวเลข ช่องว่าง ขีดกลาง และขีดล่างเท่านั้น","invalidKeyName":"ชื่อคีย์ไม่ถูกต้อง","failedCreateKey":"ไม่สามารถสร้างคีย์ได้","failedCreateKeyRetry":"ไม่สามารถสร้างคีย์ได้ โปรดลองอีกครั้ง","invalidKeyId":"รหัสคีย์ไม่ถูกต้อง","failedDeleteKey":"ลบคีย์ไม่สำเร็จ","failedDeleteKeyRetry":"ลบคีย์ไม่สำเร็จ โปรดลองอีกครั้ง","invalidModelsSelection":"การเลือกรุ่นไม่ถูกต้อง","cannotSelectMoreThanModels":"ไม่สามารถเลือกมากกว่า {max} รุ่น","failedUpdatePermissions":"ไม่สามารถอัปเดตการอนุญาต","failedUpdatePermissionsRetry":"ไม่สามารถอัปเดตการอนุญาต โปรดลองอีกครั้ง","unknownProvider":"ไม่ทราบ","copyMaskedKey":"คัดลอกคีย์ที่ปกปิด","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"ล่าสุด: {date}","editPermissions":"แก้ไขสิทธิ์","deleteKey":"ลบคีย์","model":"{count} โมเดล","models":"{count} โมเดล","permissionsTitle":"สิทธิ์: {name}","allowAllDesc":"กุญแจนี้เข้าได้ทุกรุ่น","restrictDesc":"คีย์นี้สามารถเข้าถึงโมเดล {selectedCount} จาก {totalModels}","selectedCount":"{count} เลือกแล้ว","autoResolve":"Auto-Resolve","autoResolveDesc":"Auto-resolve ambiguous model names to native provider for this API key.","keyActive":"Key Active","keyActiveDesc":"Enable or disable this API key. Disabled keys are immediately rejected with 403.","accessSchedule":"Access Schedule","accessScheduleDesc":"Restrict access to specific hours and days of the week.","scheduleFrom":"From","scheduleUntil":"Until","scheduleDays":"Days","scheduleTimezone":"Timezone","scheduleTimezoneHint":"Use IANA timezone names, e.g. America/New_York, Europe/Berlin","scheduleActive":"Schedule","disabled":"Disabled","daySun":"Sun","dayMon":"Mon","dayTue":"Tue","dayWed":"Wed","dayThu":"Thu","dayFri":"Fri","daySat":"Sat","keyOnlyAvailableAtCreation":"Full key available only at creation time — copy it when you first create the key"},"auditLog":{"title":"บันทึกการตรวจสอบ","searchPlaceholder":"การดำเนินการค้นหา...","action":"การดำเนินการ","actor":"นักแสดง","target":"เป้าหมาย","ipAddress":"ที่อยู่ IP","timestamp":"การประทับเวลา","noEntries":"ไม่พบรายการตรวจสอบ","filterByAction":"กรองตามการกระทำ...","filterByActor":"กรองตามนักแสดง...","filterEntriesAria":"กรองรายการบันทึกการตรวจสอบ","filterByActionTypeAria":"กรองตามประเภทการกระทำ","filterByActorAria":"กรองตามนักแสดง","refreshAuditLogAria":"รีเฟรชบันทึกการตรวจสอบ","tableAria":"รายการบันทึกการตรวจสอบ","failedFetchAuditLog":"ดึงข้อมูลบันทึกการตรวจสอบไม่สำเร็จ","notAvailable":"—","description":"การดำเนินการด้านการดูแลระบบและเหตุการณ์ด้านความปลอดภัย","showing":"กำลังแสดงรายการ {count} (ออฟเซ็ต {offset})","previous":"ก่อนหน้า"},"media":{"title":"สนามทดลองสื่อ","subtitle":"สร้างภาพ วิดีโอ และเพลง","model":"Model","prompt":"Prompt","generate":"สร้าง","generating":"Generating...","loadingModels":"Loading available models...","noModels":"No models available. Configure providers with media capabilities first.","error":"Generation Failed","result":"Result","imageDescription":"Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.","videoDescription":"Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.","musicDescription":"Compose music using Stable Audio Open or MusicGen via ComfyUI."},"cliTools":{"title":"เครื่องมือ CLI","noActiveProviders":"ไม่มีผู้ให้บริการที่ใช้งานอยู่","noActiveProvidersDesc":"โปรดเพิ่มและเชื่อมต่อผู้ให้บริการก่อนเพื่อกำหนดค่าเครื่องมือ CLI","mapModels":"โมเดลแผนที่","testConnection":"ทดสอบการเชื่อมต่อ","connectionStatus":"สถานะการเชื่อมต่อ","configureEndpoint":"กำหนดค่าจุดสิ้นสุด","instructions":"คำแนะนำ","modelMapping":"การทำแผนที่โมเดล","baseUrl":"URL ฐาน","apiKey":"คีย์ API","configured":"กำหนดค่าแล้ว","notConfigured":"ไม่ได้กำหนดค่า","notInstalled":"ไม่ได้ติดตั้ง","custom":"กำหนดเอง","unknown":"ไม่ทราบ","lastSavedAt":"บันทึกล่าสุด: {date}","never":"ไม่เคย","justNow":"แค่ตอนนี้","minutesAgoShort":"{count}นาทีที่แล้ว","hoursAgoShort":"{count}ชม. ที่แล้ว","daysAgoShort":"{count}d ที่แล้ว","monthsAgoShort":"{count}เดือนที่แล้ว","yearsAgoShort":"{count}ปีที่แล้ว","runtimeCheckFailed":"การตรวจสอบรันไทม์ล้มเหลว","yourApiKeyPlaceholder":"รหัส API ของคุณ","modelPlaceholder":"ผู้ให้บริการ/รหัสรุ่น","configurationSaved":"บันทึกการกำหนดค่าเรียบร้อยแล้ว","failedToSave":"บันทึกการกำหนดค่าไม่สำเร็จ","noApiKeysCreateOne":"ไม่มีคีย์ API - สร้างคีย์ในหน้าคีย์","defaultOmnirouteKey":"sk_omniroute (ค่าเริ่มต้น)","selectModel":"เลือกรุ่น","selectModelForAlias":"เลือกรุ่นสำหรับ {alias}","selectModelForTool":"เลือกรุ่นสำหรับ {tool}","select":"เลือก","clear":"ชัดเจน","comingSoon":"เร็วๆ นี้","checkingRuntime":"กำลังตรวจสอบสถานะรันไทม์...","guideOnlyIntegration":"การบูรณาการเฉพาะคำแนะนำ (ไม่ต้องใช้รันไทม์ในเครื่อง)","cliRuntimeDetected":"ตรวจพบรันไทม์ CLI และพร้อมใช้งาน","cliFoundNotRunnable":"พบ CLI แต่ไม่สามารถรันได้{reason}","cliRuntimeNotDetected":"ตรวจไม่พบรันไทม์ของ CLI","binary":"ไบนารี่","configPath":"เส้นทางการกำหนดค่า","configPathShort":"การกำหนดค่า","failedCheckRuntimeStatus":"ไม่สามารถตรวจสอบสถานะรันไทม์ได้","copy":"คัดลอก","copied":"คัดลอกแล้ว","copyConfig":"คัดลอกการกำหนดค่า","saveConfig":"บันทึกการกำหนดค่า","selectionSaved":"บันทึกการเลือกแล้ว","guide":"คู่มือ","detected":"ตรวจพบ","notReady":"ไม่พร้อม","active":"ใช้งานอยู่","inactive":"ไม่ได้ใช้งาน","startMitm":"เริ่ม MITM","stopMitm":"หยุด MITM","mitmStarted":"MITM เริ่มต้นได้สำเร็จ!","mitmStopped":"MITM หยุดสำเร็จแล้ว!","failedStart":"ไม่สามารถเริ่ม MITM","failedStop":"ไม่สามารถหยุด MITM","saveMappings":"บันทึกการแมป","mappingsSaved":"บันทึกการแมปแล้ว!","failedSaveMappings":"ไม่สามารถบันทึกการแมป","howItWorks":"มันทำงานอย่างไร:","antigravityHowWorksDesc":"Antigravity ส่งคำขอไปยังปลายทางของ Google MITM สกัดกั้นและเปลี่ยนเส้นทางไปยัง OmniRoute","antigravityStep1":"1. เริ่ม MITM เพื่อกำหนดเส้นทางคำขอผ่าน OmniRoute","antigravityStep2Prefix":"2. เพิ่ม","antigravityStep2Suffix":"ไปยังไฟล์โฮสต์ของคุณเป็น 127.0.0.1","antigravityStep3":"3. เปิด Antigravity และคำขอจะถูกส่งผ่านพรอกซี","sudoPasswordRequiredTitle":"ต้องใช้รหัสผ่าน Sudo","sudoPasswordHint":"ต้องใช้รหัสผ่านผู้ดูแลระบบเพื่อแก้ไขไฟล์โฮสต์และการตั้งค่าพร็อกซีระบบ","enterSudoPassword":"ป้อนรหัสผ่าน sudo","sudoPasswordRequiredError":"ต้องใช้รหัสผ่าน Sudo","cancel":"ยกเลิก","confirm":"ยืนยัน","settingsApplied":"ใช้การตั้งค่าเรียบร้อยแล้ว!","failedApplySettings":"ล้มเหลวในการใช้การตั้งค่า","settingsReset":"รีเซ็ตการตั้งค่าเรียบร้อยแล้ว!","failedResetSettings":"ไม่สามารถรีเซ็ตการตั้งค่าได้","backupRestored":"กู้คืนข้อมูลสำรองแล้ว!","failedRestore":"ไม่สามารถกู้คืนได้","checkingCli":"กำลังตรวจสอบ {tool} CLI...","cliNotRunnable":"{tool} ติดตั้ง CLI แล้ว แต่ไม่สามารถรันได้","cliNotInstalled":"{tool} ไม่ได้ติดตั้ง CLI","cliNotDetected":"{tool} ตรวจไม่พบ CLI","cliDetectedReady":"{tool} CLI ตรวจพบและพร้อมใช้งาน","cliFoundFailedHealthcheck":"{tool} พบ CLI แต่การตรวจสอบสุขภาพรันไทม์ล้มเหลว{reason}","installCliPrompt":"โปรดติดตั้ง {tool} CLI เพื่อใช้คุณลักษณะนี้","installCodexPrompt":"โปรดติดตั้ง Codex CLI เพื่อใช้คุณสมบัติการใช้งานอัตโนมัติ","hide":"ซ่อน","howToInstall":"วิธีการติดตั้ง","installationGuide":"คู่มือการติดตั้ง","platforms":"macOS / ลินุกซ์ / วินโดวส์:","afterInstallationRun":"หลังการติดตั้งให้รัน","toVerify":"เพื่อตรวจสอบ","current":"ปัจจุบัน","baseUrlPlaceholder":"https://.../v1","resetToDefault":"รีเซ็ตเป็นค่าเริ่มต้น","providerModelPlaceholder":"ผู้ให้บริการ/รหัสรุ่น","apply":"สมัคร","reset":"รีเซ็ต","manualConfig":"การกำหนดค่าด้วยตนเอง","backups":"การสำรองข้อมูล","configBackups":"กำหนดค่าการสำรองข้อมูล","noBackupsYet":"ยังไม่มีการสำรองข้อมูล การสำรองข้อมูลจะถูกสร้างขึ้นโดยอัตโนมัติก่อนนำไปใช้หรือรีเซ็ตแต่ละครั้ง","restore":"คืนค่า","backupRestoredReloading":"กู้คืนข้อมูลสำรองแล้ว! กำลังโหลดสถานะ...","failedRestoreBackup":"ไม่สามารถกู้คืนข้อมูลสำรองได้","applied":"สมัครแล้ว!","failed":"ล้มเหลว","resetDone":"รีเซ็ต!","omnirouteConfiguredOpenAiCompatible":"OmniRoute ได้รับการกำหนดค่าให้เป็นผู้ให้บริการที่รองรับ OpenAI","provider":"ผู้ให้บริการ","model":"รุ่น","providers":"ผู้ให้บริการ","auth":"การรับรองความถูกต้อง","noApiKeysAvailable":"ไม่มีคีย์ API ที่พร้อมใช้งาน","usingDefaultOmniroute":"ใช้ค่าเริ่มต้น: sk_omniroute","updateConfig":"อัปเดตการกำหนดค่า","applyConfig":"ใช้การกำหนดค่า","noBackupsAvailable":"ไม่มีการสำรองข้อมูล","profileSaved":"บันทึกโปรไฟล์ \\"{name}\\" แล้ว!","failedSaveProfile":"ไม่สามารถบันทึกโปรไฟล์ได้","profileActivated":"เปิดใช้งานโปรไฟล์แล้ว!","failedActivateProfile":"ไม่สามารถเปิดใช้งานโปรไฟล์ได้","profiles":"โปรไฟล์","savedProfiles":"โปรไฟล์ที่บันทึกไว้","noProfilesYet":"ยังไม่มีการบันทึกโปรไฟล์ บันทึกการกำหนดค่าปัจจุบันเป็นโปรไฟล์ด้านล่าง","activate":"เปิดใช้งาน","deleteProfile":"ลบโปรไฟล์","profileNamePlaceholder":"ชื่อโปรไฟล์ (เช่น บัญชีส่วนตัว)","saveCurrent":"บันทึกปัจจุบัน","codexAuthNotePrefix":"การใช้โคเด็กซ์","codexAuthNoteMiddle":"ด้วย","codexAuthNoteSuffix":"คลิก \\"ใช้\\" เพื่อกำหนดค่าอัตโนมัติ","claudeManualConfiguration":"Claude CLI - การกำหนดค่าด้วยตนเอง","codexManualConfiguration":"Codex CLI - การกำหนดค่าด้วยตนเอง","droidManualConfiguration":"Factory Droid - การกำหนดค่าด้วยตนเอง","openClawManualConfiguration":"Open Claw - การกำหนดค่าด้วยตนเอง","clineManualConfiguration":"การกำหนดค่าด้วยตนเองของไคลน์","kiloManualConfiguration":"การกำหนดค่าด้วยตนเองของรหัสกิโล","toolDescriptions":{"antigravity":"Google ต้านแรงโน้มถ่วง IDE พร้อม MITM","claude":"รหัสมานุษยวิทยา Claude CLI","codex":"OpenAI Codex CLI","droid":"ผู้ช่วย AI จากโรงงาน Droid","openclaw":"เปิดผู้ช่วย AI ของ Claw","cline":"Cline AI ผู้ช่วยเข้ารหัส CLI","kilo":"กิโลโค้ด AI Assistant CLI","cursor":"ตัวแก้ไขรหัสเคอร์เซอร์ AI","continue":"ดำเนินการต่อผู้ช่วย AI","opencode":"OpenCode AI coding agent (Terminal)","kiro":"Amazon Kiro — AI-powered IDE","windsurf":"Windsurf AI Code Editor","copilot":"GitHub Copilot AI Assistant"},"guides":{"cursor":{"notes":{"0":"ต้องใช้บัญชี Cursor Pro เพื่อใช้คุณสมบัตินี้","1":"เคอร์เซอร์กำหนดเส้นทางคำขอผ่านเซิร์ฟเวอร์ของตัวเอง ดังนั้นจึงไม่รองรับจุดสิ้นสุดในเครื่อง โปรดเปิดใช้งาน Cloud Endpoint ในการตั้งค่า"},"steps":{"1":{"title":"เปิดการตั้งค่า","desc":"ไปที่การตั้งค่า -> โมเดล"},"2":{"title":"เปิดใช้งาน OpenAI API","desc":"เปิดใช้งานตัวเลือก \\"คีย์ OpenAI API\\""},"3":{"title":"URL ฐาน"},"4":{"title":"คีย์ API"},"5":{"title":"เพิ่มโมเดลที่กำหนดเอง","desc":"คลิก \\"ดูโมเดลทั้งหมด\\" -> \\"เพิ่มโมเดลที่กำหนดเอง\\""},"6":{"title":"เลือกรุ่น"}}},"continue":{"steps":{"1":{"title":"เปิดการกำหนดค่า","desc":"เปิดไฟล์การกำหนดค่าดำเนินการต่อ"},"2":{"title":"คีย์ API"},"3":{"title":"เลือกรุ่น"},"4":{"title":"เพิ่มการกำหนดค่าโมเดล","desc":"เพิ่มการกำหนดค่าต่อไปนี้ให้กับอาร์เรย์โมเดลของคุณ:"}},"notes":{"0":"ใช้ไฟล์กำหนดค่า JSON ต่อไป"}},"opencode":{"steps":{"1":{"title":"Install OpenCode","desc":"Install via npm: npm install -g opencode-ai"},"2":{"title":"API Key"},"3":{"title":"Set Base URL","desc":"opencode config set baseUrl {{baseUrl}}"},"4":{"title":"Select Model"}},"notes":{"0":"OpenCode ต้องมีการกำหนดค่าคีย์ API","1":"ตั้งค่า URL พื้นฐานเป็นจุดสิ้นสุด OmniRoute ของคุณ"}},"kiro":{"steps":{"1":{"title":"Open Kiro Settings","desc":"Go to Settings → AI Provider"},"2":{"title":"Base URL","desc":"Paste your OmniRoute endpoint URL"},"3":{"title":"API Key"},"4":{"title":"Select Model"}},"notes":{"0":"Kiro ต้องการบัญชี Amazon"}}},"mitmHowWorksDesc":"{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.","mitmStep1":"1. Start MITM to route requests through OmniRoute.","mitmStep2Prefix":"2. Add","mitmStep2Suffix":"to your hosts file as 127.0.0.1.","mitmStep3":"3. Open {toolName} and requests will be proxied.","whenToUseLabel":"เมื่อจะใช้","openToolDocs":"เปิดเอกสารเครื่องมือ","toolUseCases":{"claude":"ใช้เมื่อคุณต้องการเวิร์กโฟลว์การวางแผนที่แข็งแกร่งและรีแฟคเตอร์หลายไฟล์แบบยาวด้วย Claude Code","codex":"ใช้เมื่อทีมของคุณได้รับมาตรฐานในโฟลว์ OpenAI Codex CLI และการตรวจสอบสิทธิ์ตามโปรไฟล์","droid":"ใช้เมื่อคุณต้องการเอเจนต์เทอร์มินัลน้ำหนักเบาที่เน้นไปที่การเขียนโค้ดที่รวดเร็วและลูปการดำเนินการคำสั่ง","openclaw":"ใช้เมื่อคุณต้องการเอเจนต์การเข้ารหัสสไตล์ Open Claw แต่กำหนดเส้นทางผ่านนโยบาย OmniRoute","cline":"ใช้เมื่อคุณกำหนดค่าเอเจนต์การเขียนโค้ดภายในโปรแกรมแก้ไข และต้องการการตั้งค่าที่แนะนำด้วยโมเดล OmniRoute","kilo":"ใช้เมื่อเวิร์กโฟลว์ของคุณขึ้นอยู่กับคำสั่ง Kilo Code และการแก้ไขซ้ำอย่างรวดเร็ว","cursor":"ใช้เมื่อเขียนโค้ดในเคอร์เซอร์และคุณต้องการโมเดลที่เข้ากันได้กับ OpenAI แบบกำหนดเองผ่าน OmniRoute","continue":"ใช้เมื่อเรียกใช้ดำเนินการต่อใน IDE และคุณต้องกำหนดค่าผู้ให้บริการที่ใช้ JSON แบบพกพา","opencode":"ใช้เมื่อคุณต้องการเรียกใช้ Terminal-Native Agent และใช้สคริปต์อัตโนมัติผ่าน OpenCode","kiro":"ใช้เมื่อรวม Kiro และควบคุมการกำหนดเส้นทางโมเดลจากส่วนกลางจาก OmniRoute","antigravity":"ใช้เมื่อต้องสกัดกั้นการรับส่งข้อมูล Antigravity/Kiro ผ่าน MITM และกำหนดเส้นทางไปยัง OmniRoute","copilot":"ใช้เมื่อคุณต้องการ UX รูปแบบการแชทของ Copilot ในขณะที่บังคับใช้คีย์ OmniRoute และกฎการกำหนดเส้นทาง"}},"combos":{"title":"คอมโบ","description":"สร้างโมเดลคอมโบด้วยการกำหนดเส้นทางแบบถ่วงน้ำหนักและการสนับสนุนทางเลือก","createCombo":"สร้างคอมโบ","editCombo":"แก้ไขคอมโบ","deleteCombo":"ลบคอมโบ","noModels":"ไม่มีรุ่น","noModelsYet":"ยังไม่มีโมเดลเพิ่ม","addModel":"เพิ่มรุ่น","addModelToCombo":"เพิ่มโมเดลลงในคอมโบ","routingStrategy":"กลยุทธ์การกำหนดเส้นทาง","maxRetries":"ลองใหม่สูงสุด","timeout":"หมดเวลา (มิลลิวินาที)","healthcheck":"ตรวจสุขภาพ","priority":"ลำดับความสำคัญ","fallback":"ทางเลือกสำรอง","roundRobin":"ตัวกลม โรบิน","random":"สุ่ม","leastLatency":"เวลาแฝงน้อยที่สุด","comboName":"ชื่อคอมโบ","comboNamePlaceholder":"คำสั่งผสมของฉัน","deleteConfirm":"ลบคอมโบนี้ใช่ไหม","noCombosYet":"ยังไม่มีคอมโบ","comboCreated":"สร้างคอมโบสำเร็จแล้ว","comboUpdated":"อัปเดตคอมโบเรียบร้อยแล้ว","comboDeleted":"ลบคอมโบแล้ว","failedCreate":"ไม่สามารถสร้างคอมโบได้","failedUpdate":"ไม่สามารถอัปเดตคอมโบได้","errorCreating":"เกิดข้อผิดพลาดในการสร้างคอมโบ","errorUpdating":"เกิดข้อผิดพลาดในการอัปเดตคอมโบ","errorDeleting":"เกิดข้อผิดพลาดในการลบคำสั่งผสม","testFailed":"คำขอทดสอบล้มเหลว","failedToggle":"ไม่สามารถสลับคำสั่งผสมได้","testResults":"ผลการทดสอบ — {name}","resolvedBy":"แก้ไขโดย:","more":"+{count} เพิ่มเติม","reqs":"ความต้องการ","success":"ความสำเร็จ","proxyConfigured":"กำหนดค่าพร็อกซีแล้ว","copyComboName":"คัดลอกชื่อคำสั่งผสม","enableCombo":"เปิดใช้งานคอมโบ","disableCombo":"ปิดการใช้งานคอมโบ","testCombo":"ทดสอบคอมโบ","duplicate":"ทำซ้ำ","proxyConfig":"การกำหนดค่าพร็อกซี","nameRequired":"ต้องระบุชื่อ","nameInvalid":"เฉพาะตัวอักษร ตัวเลข -, _, / และ ได้รับอนุญาต","nameHint":"ตัวอักษร ตัวเลข -, _, / และ ได้รับอนุญาต","priorityDesc":"ทางเลือกสำรองตามลำดับ: ลองใช้โมเดล 1 ก่อน จากนั้นจึงใช้ 2 เป็นต้น","weightedDesc":"กระจายการรับส่งข้อมูลตามเปอร์เซ็นต์น้ำหนักพร้อมทางเลือกสำรอง","roundRobinDesc":"การกระจายแบบวงกลม: แต่ละคำขอจะส่งไปยังโมเดลถัดไปที่หมุนเวียนกัน","randomDesc":"การเลือกแบบสุ่มแบบสม่ำเสมอ จากนั้นจึงย้อนกลับไปยังโมเดลที่เหลือ","leastUsedDesc":"เลือกโมเดลที่มีคำขอน้อยที่สุด โดยจะปรับสมดุลการโหลดเมื่อเวลาผ่านไป","costOptimizedDesc":"กำหนดเส้นทางไปยังรุ่นที่ถูกที่สุดก่อนตามราคา","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each model once before reshuffling","models":"โมเดล","autoBalance":"ปรับสมดุลอัตโนมัติ","advancedSettings":"การตั้งค่าขั้นสูง","retryDelay":"ความล่าช้าในการลองอีกครั้ง (มิลลิวินาที)","concurrencyPerModel":"เห็นพ้องต้องกัน / รุ่น","queueTimeout":"คิวหมดเวลา (มิลลิวินาที)","advancedHint":"เว้นว่างไว้เพื่อใช้ค่าเริ่มต้นสากล เหล่านี้จะแทนที่การตั้งค่าต่อผู้ให้บริการ","moveUp":"เลื่อนขึ้น","moveDown":"เลื่อนลง","removeModel":"ลบ","saving":"กำลังบันทึก...","weighted":"ถ่วงน้ำหนัก","leastUsed":"ใช้น้อยที่สุด","costOpt":"ต้นทุน-การเลือก","strategyGuideTitle":"How to use this strategy","strategyGuideWhen":"When to use","strategyGuideAvoid":"Avoid when","strategyGuideExample":"Example","strategyGuide":{"priority":{"when":"You have one preferred model and only want fallback on failure.","avoid":"You need request distribution across models.","example":"Primary coding model with cheaper backup for outages."},"weighted":{"when":"You need controlled traffic split across models.","avoid":"You cannot maintain accurate weights over time.","example":"80% stable model + 20% canary model rollout."},"round-robin":{"when":"You want predictable and even distribution.","avoid":"Models differ too much in latency or cost.","example":"Same model on multiple accounts to spread throughput."},"random":{"when":"You want simple distribution with minimal setup.","avoid":"You need strict traffic guarantees.","example":"Quick prototyping with equivalent models."},"least-used":{"when":"You want adaptive balancing based on live demand.","avoid":"Traffic is too low to benefit from usage balancing.","example":"Mixed workloads where one model often gets overloaded."},"cost-optimized":{"when":"Cost reduction is your top priority.","avoid":"Pricing data is missing or outdated.","example":"Background or batch jobs where lower cost is preferred."}},"advancedHelp":{"maxRetries":"How many retries are attempted before failing a request.","retryDelay":"Initial wait between retries. Higher values reduce burst pressure.","timeout":"Maximum request duration before aborting.","healthcheck":"Skips unhealthy models/providers from routing decisions.","concurrencyPerModel":"Max simultaneous requests allowed per model in round-robin.","queueTimeout":"How long a request can wait in queue before timing out."},"templatesTitle":"Quick templates","templatesDescription":"Apply a starting profile, then adjust models and config.","templateApply":"Apply template","templateHighAvailability":"High availability","templateHighAvailabilityDesc":"Priority routing with health checks and safe retries.","templateCostSaver":"Cost saver","templateCostSaverDesc":"Cost-optimized routing for budget-first workloads.","templateBalanced":"Balanced load","templateBalancedDesc":"Least-used routing to spread demand over time.","usageGuideHide":"Hide","usageGuideDontShowAgain":"Don\'t show again","usageGuideShow":"Show guide","quickTestTitle":"Combo ready to validate","quickTestDescription":"Run a test now to confirm fallback and latency behavior.","testNow":"Test now","pricingCoverage":"Pricing coverage","pricingCoverageHint":"Cost-optimized works best when all combo models have pricing.","pricingAvailable":"Pricing available","pricingMissing":"No pricing","pricingAvailableShort":"priced","pricingMissingShort":"no-price","warningRoundRobinSingleModel":"Round-robin is most useful with at least 2 models.","warningCostOptimizedPartialPricing":"Only {priced} of {total} models have pricing. Routing may be partially cost-aware.","warningCostOptimizedNoPricing":"No pricing data found for this combo. Cost-optimized may route unexpectedly.","readinessTitle":"พร้อมที่จะบันทึกแล้วหรือยัง?","readinessDescription":"ตรวจสอบรายการตรวจสอบก่อนที่จะสร้างหรืออัปเดตคำสั่งผสมนี้","readinessCheckName":"ชื่อคำสั่งผสมถูกต้อง","readinessCheckModels":"เลือกอย่างน้อยหนึ่งรุ่น","readinessCheckWeights":"ยอดรวมถ่วงน้ำหนักคือ 100%","readinessCheckWeightsOptional":"ไม่จำเป็นต้องมีกฎน้ำหนัก","readinessCheckPricing":"มีข้อมูลราคาอยู่","readinessCheckPricingOptional":"ไม่จำเป็นต้องมีกฎการกำหนดราคา","saveBlockedTitle":"บันทึกจะถูกบล็อกจนกว่ารายการต่อไปนี้จะได้รับการแก้ไข:","saveBlockName":"กำหนดชื่อคอมโบ","saveBlockModels":"เพิ่มอย่างน้อยหนึ่งรุ่น","saveBlockWeighted":"ตั้งค่าน้ำหนักเป็น 100% (ปัจจุบัน: {total}%)","saveBlockPricing":"เพิ่มราคาสำหรับรุ่นอย่างน้อยหนึ่งรุ่นหรือเลือกกลยุทธ์อื่น","recommendationsLabel":"Recommended setup","applyRecommendations":"Apply recommendations","recommendationsUpdated":"Recommendations updated for {strategy}.","recommendationsApplied":"Recommendations applied to this combo.","strategyRecommendations":{"priority":{"title":"Fail-safe baseline","description":"Use one primary model and keep fallback chain short and reliable.","tip1":"Put your most reliable model first.","tip2":"Keep 1-2 backup models with similar quality.","tip3":"Use safe retries to absorb transient provider failures."},"weighted":{"title":"Controlled traffic split","description":"Great for canary rollouts and gradual migration between models.","tip1":"Start with conservative split like 90/10.","tip2":"Keep the total at 100% and auto-balance after changes.","tip3":"Monitor success and latency before increasing canary weight."},"round-robin":{"title":"Predictable load sharing","description":"Best when models are equivalent and you need smooth distribution.","tip1":"Use at least 2 models.","tip2":"Set concurrency limits to avoid burst overload.","tip3":"Use queue timeout to fail fast under saturation."},"random":{"title":"Quick spread with low setup","description":"Use when you need simple distribution without strict guarantees.","tip1":"Use models with similar latency profiles.","tip2":"Keep retries enabled to absorb random misses.","tip3":"Prefer this for experimentation, not strict SLAs."},"least-used":{"title":"Adaptive balancing","description":"Routes to less-used models to reduce hotspots over time.","tip1":"Works better under continuous traffic.","tip2":"Combine with health checks for safer balancing.","tip3":"Track per-model usage to validate distribution gains."},"cost-optimized":{"title":"Budget-first routing","description":"Routes to lower-cost models when pricing metadata is available.","tip1":"Ensure pricing coverage for all selected models.","tip2":"Keep a quality fallback for hard prompts.","tip3":"Use for batch/background jobs where cost is the main KPI."}},"templateFreeStack":"Free Stack ($0)","templateFreeStackDesc":"Round-robin across all free providers: Kiro (Claude), iFlow (5 models), Qwen (4 models), Gemini CLI. Zero cost, never stops coding."},"costs":{"title":"ค่าใช้จ่าย","budget":"งบประมาณ","totalCost":"ต้นทุนรวม","breakdown":"การแจกแจงต้นทุน","noData":"ไม่มีข้อมูลค่าใช้จ่าย","byModel":"โดยรุ่น","byProvider":"โดยผู้ให้บริการ"},"endpoint":{"title":"จุดสิ้นสุด API","available":"จุดสิ้นสุดที่มีอยู่","cloudProxy":"พร็อกซีคลาวด์","disableConfirm":"คุณแน่ใจหรือไม่ว่าต้องการปิดใช้งานพร็อกซีระบบคลาวด์","baseUrl":"URL ฐาน","apiKeyLabel":"คีย์ API","registeredKeys":"คีย์ที่ลงทะเบียน","chatCompletions":"เสร็จสิ้นการแชท","responses":"คำตอบ","listModels":"รายการโมเดล","usingCloudProxy":"การใช้พร็อกซีคลาวด์","usingLocalServer":"การใช้เซิร์ฟเวอร์ท้องถิ่น","machineId":"หมายเลขเครื่อง: {id}...","disableCloud":"ปิดการใช้งานคลาวด์","enableCloud":"เปิดใช้งานคลาวด์","modelsAcrossEndpoints":"{models} โมเดลข้ามจุดสิ้นสุด {endpoints}","chatDesc":"การแชทแบบสตรีมมิงและไม่สตรีมกับผู้ให้บริการทั้งหมด","embeddings":"การฝัง","embeddingsDesc":"การฝังข้อความสำหรับการค้นหาและไปป์ไลน์ RAG","imageGeneration":"การสร้างภาพ","imageDesc":"สร้างภาพจากข้อความแจ้ง","rerank":"จัดอันดับใหม่","rerankDesc":"จัดอันดับเอกสารใหม่ตามความเกี่ยวข้องกับแบบสอบถาม","audioTranscription":"การถอดเสียง","audioTranscriptionDesc":"ถอดเสียงไฟล์เสียงเป็นข้อความ (กระซิบ)","textToSpeech":"ข้อความเป็นคำพูด","textToSpeechDesc":"แปลงข้อความเป็นคำพูดที่ฟังดูเป็นธรรมชาติ","moderations":"การกลั่นกรอง","moderationsDesc":"การกลั่นกรองเนื้อหาและการจำแนกความปลอดภัย","responsesDesc":"OpenAI Responses API สำหรับ Codex และเวิร์กโฟลว์เอเจนต์ขั้นสูง","listModelsDesc":"แสดงรายการโมเดลที่ใช้ได้ทั้งหมดจากผู้ให้บริการที่เชื่อมต่อ","settingsApiDesc":"อ่านและแก้ไขการกำหนดค่า OmniRoute ผ่าน API","settingsApi":"Settings API","categoryCore":"API หลัก","categoryMedia":"สื่อและมัลติโมดอล","categoryUtility":"ยูทิลิตี้และการจัดการ","enableCloudTitle":"เปิดใช้งานพร็อกซีคลาวด์","whatYouGet":"สิ่งที่คุณจะได้รับ","cloudBenefitAccess":"เข้าถึง API ของคุณได้จากทุกที่ในโลก","cloudBenefitShare":"แบ่งปันตำแหน่งข้อมูลกับทีมของคุณได้อย่างง่ายดาย","cloudBenefitPorts":"ไม่จำเป็นต้องเปิดพอร์ตหรือกำหนดค่าไฟร์วอลล์","cloudBenefitEdge":"เครือข่าย Edge ระดับโลกที่รวดเร็ว","cloudSessionNote":"คลาวด์จะเก็บเซสชันการตรวจสอบสิทธิ์ของคุณไว้เป็นเวลา 1 วัน หากไม่ได้ใช้ก็จะถูกลบโดยอัตโนมัติ","cloudUnstableNote":"ขณะนี้ระบบคลาวด์ไม่เสถียรด้วย Claude Code OAuth ในบางกรณี","cloudConnected":"เชื่อมต่อพร็อกซีคลาวด์แล้ว!","connectingToCloud":"กำลังเชื่อมต่อกับคลาวด์...","verifyingConnection":"กำลังยืนยันการเชื่อมต่อ...","connecting":"กำลังเชื่อมต่อ...","verifying":"กำลังยืนยัน...","connected":"เชื่อมต่อแล้ว!","disableCloudTitle":"ปิดการใช้งานพร็อกซีคลาวด์","disableWarning":"เซสชันการตรวจสอบสิทธิ์ทั้งหมดจะถูกลบออกจากระบบคลาวด์","syncingData":"กำลังซิงค์ข้อมูลล่าสุด...","disablingCloud":"กำลังปิดใช้งานระบบคลาวด์...","syncing":"กำลังซิงค์...","disabling":"กำลังปิดการใช้งาน...","cloudConnectedVerified":"เชื่อมต่อและยืนยัน Cloud Proxy แล้ว!","connectedVerificationPending":"เชื่อมต่อแล้ว — อยู่ระหว่างการยืนยัน","connectedVerificationPendingWithError":"เชื่อมต่อแล้ว — รอการยืนยัน: {error}","cloudDisabledSuccess":"ปิดการใช้งานคลาวด์เรียบร้อยแล้ว","syncedSuccess":"ซิงค์เรียบร้อยแล้ว","failedDisable":"ไม่สามารถปิดการใช้งานระบบคลาวด์","failedEnable":"ไม่สามารถเปิดใช้งานระบบคลาวด์","cloudRequestTimeout":"หมดเวลาคำขอคลาวด์","cloudRequestFailed":"คำขอคลาวด์ล้มเหลว","cloudWorkerUnreachable":"ไม่สามารถเข้าถึงผู้ปฏิบัติงานบนคลาวด์ ตรวจสอบให้แน่ใจว่าบริการคลาวด์กำลังทำงานอยู่ (npm run dev in /cloud)","connectionFailed":"การเชื่อมต่อล้มเหลว","syncFailed":"ไม่สามารถซิงค์ข้อมูลบนคลาวด์","providerModelsTitle":"{provider} — โมเดล","noModelsForProvider":"ไม่มีรุ่นสำหรับผู้ให้บริการรายนี้","chat":"แชท","embedding":"การฝัง","image":"รูปภาพ","custom":"กำหนดเอง","modelsCount":"{count, plural, one {# model} other {# models}}","sectionTitle":"Integration Surface","sectionDescription":"OpenAI-compatible APIs and operational protocol endpoints","tabApis":"OpenAI-compatible APIs","tabProtocols":"Protocols","tabsAria":"Endpoint sections","protocolsTitle":"Protocols","protocolsDescription":"MCP and A2A are first-class endpoints with dedicated observability and controls.","mcpCardTitle":"MCP Server","mcpCardDescription":"Model Context Protocol over stdio","a2aCardTitle":"A2A Server","a2aCardDescription":"Agent2Agent JSON-RPC endpoint","protocolToolsLabel":"Tools","protocolTasksLabel":"Tasks","protocolActiveStreamsLabel":"Active streams","protocolLastActivity":"Last activity","quickStart":"Quick Start","openMcpDashboard":"Open MCP management","openA2aDashboard":"Open A2A management","mcpQuickStartTitle":"MCP Quick Start","mcpQuickStartStep1":"Run the MCP server via `omniroute --mcp`.","mcpQuickStartStep2":"Configure your MCP client to connect over stdio transport.","mcpQuickStartStep3":"Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.","a2aQuickStartTitle":"A2A Quick Start","a2aQuickStartStep1":"Discover the agent card at `/.well-known/agent.json`.","a2aQuickStartStep2":"Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.","a2aQuickStartStep3":"Track and control tasks using `tasks/get` and `tasks/cancel`.","completionsLegacy":"Completions (Legacy)","completionsLegacyDesc":"Legacy OpenAI text completions — accepts both prompt string and messages array format","categorySearch":"Search & Discovery","webSearch":"Web Search","webSearchDesc":"Unified web search across multiple providers with automatic failover and caching","searchProvider":"Search Provider","searchProviderDesc":"This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.","cloudflaredUrlNotice":"Creates a temporary Cloudflare Quick Tunnel. The URL changes after every restart."},"mcpDashboard":{"loading":"Loading MCP dashboard...","activate":"activate","deactivate":"deactivate","confirmSwitchCombo":"Confirm {action} combo \\"{combo}\\"?","switchComboFailed":"Failed to switch combo state.","switchComboSuccess":"Combo \\"{combo}\\" updated.","confirmApplyProfile":"Apply resilience profile \\"{profile}\\"?","applyProfileFailed":"Failed to apply resilience profile.","applyProfileSuccess":"Profile \\"{profile}\\" applied.","confirmResetBreakers":"Reset all circuit breakers?","resetBreakersFailed":"Failed to reset circuit breakers.","resetBreakersSuccess":"Circuit breakers reset.","processStatus":"Process status","online":"Online","offline":"Offline","pid":"PID","sessionUptime":"Session uptime","lastHeartbeat":"Last heartbeat","activity24h":"Activity (24h)","totalCalls":"Total calls","successRate":"Success rate","avgLatency":"Avg latency","topTools":"Top tools","noToolCalls24h":"No tool calls in the last 24 hours.","runtimeDetails":"Runtime details","transport":"Transport","scopesEnforced":"Scopes enforced","yes":"yes","no":"no","lastCall":"Last call","heartbeatPath":"Heartbeat path","operationalControls":"Operational controls","switchCombo":"Switch combo","inactive":"inactive","active":"active","activateCombo":"Activate combo","deactivateCombo":"Deactivate combo","applyResilienceProfile":"Apply resilience profile","profileAggressive":"aggressive","profileBalanced":"balanced","profileConservative":"conservative","applyProfile":"Apply profile","resetCircuitBreakers":"Reset circuit breakers","resetCircuitBreakersHelp":"Clears current breaker state and failure counters for providers.","resetAllBreakers":"Reset all breakers","toolsAndScopes":"Tools and scopes","tableTool":"Tool","tableScopes":"Scopes","tablePhase":"Phase","tableAudit":"Audit","auditLog":"Audit log","auditSummary":"Calls: {total} | page {page} of {totalPages}","allTools":"All tools","allResults":"All results","success":"Success","failure":"Failure","apiKeyIdPlaceholder":"apiKeyId","loadingAuditEntries":"Loading audit entries...","noAuditEntriesForFilters":"No audit entries found for current filters.","tableTimestamp":"Timestamp","tableDuration":"Duration","tableResult":"ผลลัพธ์","tableApiKey":"คีย์เอพีไอ","failed":"ล้มเหลว","previous":"ก่อนหน้า","next":"ต่อไป"},"a2aDashboard":{"loading":"กำลังโหลดแดชบอร์ด A2A...","confirmCancelTask":"ยกเลิกงาน {taskId}?","cancelTaskFailed":"ยกเลิกงานไม่สำเร็จ","cancelTaskSuccess":"งาน {taskId} ถูกยกเลิก","smokeSendFailed":"message/send smoke test failed.","smokeSendSuccessWithTask":"message/send ok (task {taskId}).","smokeSendSuccess":"message/send ok.","smokeStreamFailed":"message/stream smoke test failed.","smokeStreamSuccessWithTask":"message/stream ok (task {taskId}{stateSuffix}).","smokeStreamNoTaskId":"message/stream finished without task id.","health":"Health","ok":"ok","totalTasks":"Total tasks","activeStreams":"Active streams","lastTask":"Last task","taskStateOverview":"Task state overview","state":{"submitted":"submitted","working":"working","completed":"completed","failed":"ล้มเหลว","cancelled":"cancelled"},"agentCard":"Agent card","version":"Version","url":"URL","capabilities":"Capabilities","agentCardNotAvailable":"Agent card not available.","quickValidation":"Quick validation","quickValidationDescription":"Executes smoke calls through the live `/a2a` endpoint.","runMessageSend":"Run message/send","runMessageStream":"Run message/stream","taskManagement":"Task management","taskSummary":"{total} tasks | page {page} of {totalPages}","allStates":"all","allSkills":"all skills","loadingTasks":"Loading tasks...","noTasksForFilters":"No tasks found for current filters.","tableTask":"Task","tableSkill":"Skill","tableState":"State","tableUpdated":"Updated","tableActions":"Actions","view":"View","cancel":"Cancel","previous":"ก่อนหน้า","next":"ต่อไป","taskDetail":"Task detail","close":"Close","metadata":"Metadata","events":"Events","artifacts":"Artifacts"},"health":{"title":"สุขภาพของระบบ","description":"การตรวจสอบอินสแตนซ์ OmniRoute ของคุณแบบเรียลไทม์","healthy":"ดีต่อสุขภาพ","degraded":"เสื่อมโทรม","down":"ลง","uptime":"เวลาทำงาน","memory":"หน่วยความจำ","memoryRss":"หน่วยความจำ (RSS)","heap":"กอง","cpu":"ซีพียู","database":"ฐานข้อมูล","version":"เวอร์ชัน","lastCheck":"ตรวจสอบครั้งสุดท้าย","providerHealth":"สุขภาพของผู้ให้บริการ","systemMetrics":"ตัวชี้วัดของระบบ","tokenHealth":"โทเค็นสุขภาพ","refreshAll":"รีเฟรชทั้งหมด","checkNow":"ตรวจสอบตอนนี้","loadingHealth":"กำลังโหลดข้อมูลสุขภาพ...","failedToLoad":"ไม่สามารถโหลดข้อมูลสุขภาพ: {error}","retry":"ลองอีกครั้ง","allOperational":"ใช้งานได้ทุกระบบ","issuesDetected":"ตรวจพบปัญหาของระบบ","updatedAt":"อัปเดต {time}","latency":"เวลาแฝง","latencyP50":"หน้า 50","latencyP95":"หน้า 95","latencyP99":"หน้า 99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"คำขอทั้งหมด","noDataYet":"ยังไม่มีข้อมูล","promptCache":"แคชพร้อมท์","entries":"รายการ","hitRate":"อัตราการเข้าชม","hitsMisses":"ฮิต / พลาด","signatureCache":"แคชลายเซ็น","signatureDefaults":"ค่าเริ่มต้น","signatureTool":"เครื่องมือ","signatureFamily":"ครอบครัว","signatureSession":"เซสชัน","recovering":"กำลังฟื้นตัว","noCBData":"ไม่มีข้อมูลเซอร์กิตเบรกเกอร์ ทำการร้องขอบางอย่างก่อน","providerHealthStatusAria":"สถานะสุขภาพของผู้ให้บริการ","issuesLabel":"ตรวจพบปัญหา","operational":"การดำเนินงาน","providers":"ผู้ให้บริการ","healthyCount":"{count} สุขภาพแข็งแรง","nodeVersion":"โหนด {version}","failures":"{count} ล้มเหลว","failuresPlural":"{count} ล้มเหลว","lastFailure":"สุดท้าย","rateLimitStatus":"สถานะการจำกัดอัตรา","activeLimiters":"{count} ตัวจำกัดที่ใช้งานอยู่","activeLimitersPlural":"{count} ตัวจำกัดที่ใช้งานอยู่","queued":"เข้าคิว","queuedCount":"{count} เข้าคิวแล้ว","running":"วิ่ง","runningCount":"{count} กำลังวิ่งอยู่","ok":"ตกลง","activeLockouts":"การล็อกที่ใช้งานอยู่","resetConfirm":"รีเซ็ตเซอร์กิตเบรกเกอร์ทั้งหมดเป็นสถานะปกติหรือไม่ การดำเนินการนี้จะล้างจำนวนความล้มเหลวทั้งหมดและกู้คืนผู้ให้บริการทั้งหมดกลับสู่สถานะการปฏิบัติงาน","resetAllTitle":"รีเซ็ตเบรกเกอร์วงจรทั้งหมดให้อยู่ในสถานะปกติ","resetting":"กำลังรีเซ็ต...","resetAll":"รีเซ็ตทั้งหมด","until":"จนถึง {time}","activeProviders":"{count} active","monitoredProviders":"{count} monitored","configuredProvidersLabel":"กำหนดค่าในแดชบอร์ด","configuredProvidersHint":"ผู้ให้บริการที่มีข้อมูลรับรองบันทึกไว้ใน /dashboard/providers โดยไม่คำนึงถึงสถานะรันไทม์","activeProvidersHint":"ผู้ให้บริการที่กำหนดค่าไว้เปิดใช้งานอยู่สำหรับการร้องขอการกำหนดเส้นทาง","monitoredProvidersHint":"ผู้ให้บริการในปัจจุบันได้รับการติดตามโดยเครื่องตรวจสุขภาพของเซอร์กิตเบรกเกอร์"},"limits":{"title":"ขีดจำกัดและโควต้า","rateLimit":"ขีดจำกัดอัตรา","remaining":"ที่เหลืออยู่","requestsPerMinute":"คำขอ/นาที","tokensPerMinute":"โทเค็น/นาที","dailyLimit":"ขีดจำกัดรายวัน"},"logs":{"title":"บันทึก","requestLogs":"ขอบันทึก","proxyLogs":"บันทึกพร็อกซี","auditLog":"บันทึกการตรวจสอบ","console":"คอนโซล","auditLogDesc":"การดำเนินการด้านการดูแลระบบและเหตุการณ์ด้านความปลอดภัย","loading":"กำลังโหลด...","refresh":"รีเฟรช","filterByAction":"กรองตามการกระทำ...","filterByActor":"กรองตามนักแสดง...","filterEntriesAria":"กรองรายการบันทึกการตรวจสอบ","filterByActionTypeAria":"กรองตามประเภทการกระทำ","filterByActorAria":"กรองตามนักแสดง","refreshAuditLogAria":"รีเฟรชบันทึกการตรวจสอบ","tableAria":"รายการบันทึกการตรวจสอบ","failedFetchAuditLog":"ดึงข้อมูลบันทึกการตรวจสอบไม่สำเร็จ","showing":"กำลังแสดงรายการ {count} (ออฟเซ็ต {offset})","search":"ค้นหา","timestamp":"การประทับเวลา","action":"การดำเนินการ","actor":"นักแสดง","target":"เป้าหมาย","details":"รายละเอียด","ipAddress":"ที่อยู่ IP","notAvailable":"—","noEntries":"ไม่พบรายการบันทึกการตรวจสอบ","previous":"ก่อนหน้า","next":"ถัดไป"},"onboarding":{"welcome":"ยินดีต้อนรับ","security":"ความปลอดภัย","test":"ทดสอบ","ready":"พร้อม!","setPassword":"ตั้งรหัสผ่าน","addProvider":"เพิ่มผู้ให้บริการรายแรกของคุณ","getStarted":"เริ่มต้นเลย","skip":"ข้าม","skipWizard":"ข้ามวิซาร์ดไปเลย","skipPassword":"ข้ามการตั้งค่ารหัสผ่าน","skipAndContinue":"ข้ามและดำเนินการต่อ","passwordLabel":"รหัสผ่าน","confirmPassword":"ยืนยันรหัสผ่าน","enterPassword":"ใส่รหัสผ่าน","confirmPasswordPlaceholder":"ยืนยันรหัสผ่าน","passwordsMismatch":"รหัสผ่านไม่ตรงกัน","setupComplete":"ตั้งค่าเสร็จสมบูรณ์!","goToDashboard":"ไปที่แดชบอร์ด →","welcomeDesc":"OmniRoute คือพร็อกซี AI API ในพื้นที่ของคุณ โดยกำหนดเส้นทางคำขอไปยังผู้ให้บริการ AI หลายรายด้วยการปรับสมดุลโหลด การเฟลโอเวอร์ และการติดตามการใช้งาน","multiProvider":"ผู้ให้บริการหลายราย","usageTracking":"การติดตามการใช้งาน","apiKeyMgmt":"การจัดการคีย์ API","securityDesc":"ตั้งรหัสผ่านเพื่อปกป้องแดชบอร์ดของคุณ หรือข้ามไปก่อน","providerDesc":"เชื่อมต่อผู้ให้บริการ AI รายแรกของคุณ คุณสามารถเพิ่มมากขึ้นในภายหลัง","apiKeyRequired":"คีย์ API (จำเป็น)","customUrlOptional":"URL ที่กำหนดเอง (ไม่บังคับ)","testDesc":"มาตรวจสอบการเชื่อมต่อผู้ให้บริการของคุณใช้งานได้","runTest":"เรียกใช้การทดสอบการเชื่อมต่อ","testingConnection":"กำลังทดสอบการเชื่อมต่อ...","connectionSuccessful":"การเชื่อมต่อสำเร็จ! ผู้ให้บริการของคุณพร้อมแล้ว","noProviderFound":"ไม่พบผู้ให้บริการ คุณสามารถเพิ่มได้จากแดชบอร์ดในภายหลัง","testFailed":"การทดสอบล้มเหลว แต่คุณสามารถกำหนดค่าได้ในภายหลัง","couldNotTest":"ไม่สามารถทดสอบได้ในขณะนี้ คุณสามารถทดสอบได้จากแดชบอร์ด","doneDesc":"คุณพร้อมแล้ว! อินสแตนซ์ OmniRoute ของคุณได้รับการกำหนดค่าและพร้อมที่จะส่งคำขอ AI ของพร็อกซี","yourEndpoint":"ปลายทางของคุณ:","continue":"ดำเนินการต่อ","retry":"ลองอีกครั้ง","failedSetPassword":"ไม่สามารถตั้งรหัสผ่านได้ ลองอีกครั้ง","failedAddProvider":"ไม่สามารถเพิ่มผู้ให้บริการ ลองอีกครั้ง","connectionError":"ข้อผิดพลาดในการเชื่อมต่อ โปรดลองอีกครั้ง","provider":"ผู้ให้บริการ"},"providers":{"title":"ผู้ให้บริการ","addProvider":"เพิ่มผู้ให้บริการ","editProvider":"แก้ไขผู้ให้บริการ","deleteProvider":"ลบผู้ให้บริการ","noProviders":"ไม่มีการกำหนดค่าผู้ให้บริการ","modelAvailability":"ความพร้อมของรุ่น","accounts":"บัญชี","newAccount":"บัญชีใหม่","deleteConfirm":"คุณแน่ใจหรือไม่ว่าต้องการลบผู้ให้บริการรายนี้","testing":"กำลังทดสอบ...","testConnection":"ทดสอบการเชื่อมต่อ","testSuccess":"การเชื่อมต่อสำเร็จ","testFailed":"การเชื่อมต่อล้มเหลว","available":"มีจำหน่าย","cooldown":"คูลดาวน์","unavailable":"ไม่พร้อมใช้งาน","unknown":"ไม่ทราบ","oauthLabel":"OAuth","compatibleLabel":"เข้ากันได้","chat":"แชท","responses":"คำตอบ","messages":"ข้อความ","oauthProviders":"ผู้ให้บริการ OAuth","freeProviders":"ผู้ให้บริการฟรี","apiKeyProviders":"ผู้ให้บริการคีย์ API","compatibleProviders":"ผู้ให้บริการที่เข้ากันได้กับคีย์ API","testAll":"ทดสอบทั้งหมด","testAllOAuth":"ทดสอบการเชื่อมต่อ OAuth ทั้งหมด","testAllFree":"ทดสอบการเชื่อมต่อฟรีทั้งหมด","testAllApiKey":"ทดสอบการเชื่อมต่อคีย์ API ทั้งหมด","testAllCompatible":"ทดสอบการเชื่อมต่อที่เข้ากันได้ทั้งหมด","connected":"{count} เชื่อมต่อแล้ว","errorCount":"{count} ข้อผิดพลาด ({code})","errorCountNoCode":"{count} เกิดข้อผิดพลาด","noConnections":"ไม่มีการเชื่อมต่อ","disabled":"ปิดการใช้งาน","enableProvider":"เปิดใช้งานผู้ให้บริการ","disableProvider":"ปิดการใช้งานผู้ให้บริการ","testResults":"ผลการทดสอบ","noCompatibleYet":"ยังไม่มีการเพิ่มผู้ให้บริการที่เข้ากันได้","compatibleHint":"ใช้ปุ่มด้านบนเพื่อเพิ่มตำแหน่งข้อมูลที่รองรับ OpenAI หรือ Anthropic","addOpenAICompatible":"เพิ่มการรองรับ OpenAI","addAnthropicCompatible":"เพิ่มความเข้ากันได้ทางมานุษยวิทยา","addNewProvider":"เพิ่มผู้ให้บริการใหม่","backToProviders":"กลับไปที่ผู้ให้บริการ","configureNewProvider":"กำหนดค่าผู้ให้บริการ AI ใหม่เพื่อใช้กับแอปพลิเคชันของคุณ","providerLabel":"ผู้ให้บริการ","selectProvider":"เลือกผู้ให้บริการ","selectedProvider":"ผู้ให้บริการที่เลือก","authMethod":"วิธีการรับรองความถูกต้อง","apiKeyLabel":"คีย์ API","apiKeyRequired":"จำเป็นต้องมีคีย์ API","selectProviderRequired":"โปรดเลือกผู้ให้บริการ","enterApiKey":"ป้อนคีย์ API ของคุณ","apiKeySecure":"รหัส API ของคุณจะถูกเข้ารหัสและเก็บไว้อย่างปลอดภัย","oauth2Connect":"เชื่อมต่อกับ OAuth2","oauth2Label":"OAuth2","oauth2Desc":"เชื่อมต่อบัญชีของคุณโดยใช้การตรวจสอบสิทธิ์ OAuth2","displayName":"ชื่อที่แสดง","displayNamePlaceholder":"เช่น Production API, Dev Environment","displayNameHint":"ไม่จำเป็น ชื่อที่จำง่ายเพื่อระบุการกำหนดค่านี้","active":"ใช้งานอยู่","activeDescription":"เปิดใช้งานผู้ให้บริการรายนี้เพื่อใช้ในแอปพลิเคชันของคุณ","cancel":"ยกเลิก","createProvider":"สร้างผู้ให้บริการ","failedCreate":"ไม่สามารถสร้างผู้ให้บริการได้","errorOccurred":"เกิดข้อผิดพลาด โปรดลองอีกครั้ง","modelStatus":"สถานะโมเดล","allModelsOperational":"ใช้งานได้ทุกรุ่น","modelsWithIssues":"{count} โมเดลที่มีปัญหา","allModelsNormal":"ทุกรุ่นตอบสนองได้ปกติ","cooldownCleared":"ล้างคูลดาวน์แล้วสำหรับ {model}","failedClearCooldown":"ไม่สามารถล้างคูลดาวน์ได้","loadingAvailability":"กำลังโหลดรุ่นที่มีจำหน่าย...","clearCooldown":"ชัดเจน","clearing":"กำลังล้างข้อมูล...","until":"จนถึง {time}","providerTestFailed":"การทดสอบผู้ให้บริการล้มเหลว","modeTest":"{mode} ทดสอบ","passedCount":"{count} ผ่านไป","failedCount":"{count} ล้มเหลว","testedCount":"{count} ทดสอบแล้ว","millisecondsAbbr":"{value}ms","okShort":"ตกลง","errorShort":"ข้อผิดพลาด","noActiveConnectionsInGroup":"ไม่พบการเชื่อมต่อที่ใช้งานอยู่สำหรับกลุ่มนี้","allTestsPassed":"ผ่านการทดสอบ {total} ทั้งหมด","testSummary":"{passed}/{total} ผ่านไป {failed} ล้มเหลว","nameLabel":"ชื่อ","prefixLabel":"คำนำหน้า","baseUrlLabel":"URL ฐาน","apiTypeLabel":"ประเภทเอพีไอ","prefixHint":"จำเป็น คำนำหน้าเฉพาะสำหรับชื่อรุ่น","nameHint":"จำเป็น ป้ายกำกับที่เป็นมิตรสำหรับโหนดนี้","baseUrlHint":"จำเป็น  URL ฐาน API ของผู้ให้บริการ","anthropicPrefixPlaceholder":"ac-ผลิตภัณฑ์","openaiPrefixPlaceholder":"oc-ผลิตภัณฑ์","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"ตรวจสอบการเชื่อมต่อ","validating":"กำลังตรวจสอบ...","connectionValid":"การเชื่อมต่อถูกต้อง!","connectionFailed":"การเชื่อมต่อล้มเหลว ตรวจสอบ URL และรหัส","testKeyLabel":"ทดสอบคีย์ API","testKeyPlaceholder":"sk-... (สำหรับการตรวจสอบเท่านั้น)","providerNotFound":"ไม่พบผู้ให้บริการ","deleteConnectionConfirm":"ลบการเชื่อมต่อนี้ใช่ไหม","failedSetAlias":"ไม่สามารถตั้งชื่อแทนได้","failedSaveConnection":"ไม่สามารถบันทึกการเชื่อมต่อ","failedSaveConnectionRetry":"ไม่สามารถบันทึกการเชื่อมต่อ โปรดลองอีกครั้ง","failedRetestConnection":"ล้มเหลวในการทดสอบการเชื่อมต่ออีกครั้ง","deleteCompatibleNodeConfirm":"ลบโหนดที่เข้ากันได้ {type} นี้หรือไม่","anthropicCompatibleDetails":"รายละเอียดที่เข้ากันได้กับมานุษยวิทยา","openaiCompatibleDetails":"รายละเอียดที่เข้ากันได้กับ OpenAI","messagesApi":"API ข้อความ","responsesApi":"API การตอบสนอง","chatCompletions":"เสร็จสิ้นการแชท","importingModels":"กำลังนำเข้า...","importFromModels":"นำเข้าจาก /models","clearAllModels":"ล้างทุกรุ่น","clearAllModelsConfirm":"คุณแน่ใจหรือไม่ว่าต้องการลบโมเดลทั้งหมดสำหรับผู้ให้บริการรายนี้ สิ่งนี้ไม่สามารถยกเลิกได้","clearAllModelsSuccess":"เคลียร์ทุกรุ่น","clearAllModelsFailed":"ไม่สามารถล้างโมเดลได้","addConnectionToImport":"เพิ่มการเชื่อมต่อเพื่อเปิดใช้งานการนำเข้า","noModelsConfigured":"ไม่มีโมเดลที่กำหนดค่าไว้","connectionCount":"{count} การเชื่อมต่อ","fetchingModels":"กำลังเรียกรุ่นที่มีจำหน่าย...","failedFetchModels":"ดึงข้อมูลโมเดลไม่สำเร็จ","noModelsFound":"ไม่พบรุ่น","importFailed":"การนำเข้าล้มเหลว","noNewModelsAdded":"ไม่มีการเพิ่มโมเดลใหม่","adding":"กำลังเพิ่ม...","importingModelsTitle":"การนำเข้าโมเดล","copyModel":"คัดลอกโมเดล","removeModel":"ลบโมเดล","rateLimitProtected":"ได้รับการคุ้มครอง","rateLimitUnprotected":"ไม่มีการป้องกัน","enableRateLimitProtection":"คลิกเพื่อเปิดใช้งานการป้องกันขีดจำกัดอัตรา","disableRateLimitProtection":"คลิกเพื่อปิดใช้งานการป้องกันขีดจำกัดอัตรา","productionKey":"รหัสการผลิต","enterNewApiKey":"ป้อนคีย์ API ใหม่","optional":"ไม่จำเป็น","anthropicCompatibleName":"เข้ากันได้กับมานุษยวิทยา","openaiCompatibleName":"รองรับ OpenAI","failedImportModels":"ไม่สามารถนำเข้าโมเดลได้","noModelsReturnedFromEndpoint":"ไม่มีโมเดลที่ส่งคืนจากปลายทาง /models","importingModelsProgress":"กำลังนำเข้าโมเดล {current} จาก {total}...","foundModelsStartingImport":"พบ {count} โมเดล กำลังเริ่มนำเข้า...","importingModelById":"กำลังนำเข้า {modelId}...","importSuccessCount":"นำเข้า {count, plural, one {# model} other {# models}} สำเร็จแล้ว!","noNewModelsAddedExisting":"ไม่มีการเพิ่มโมเดลใหม่ (มีอยู่แล้วทั้งหมด)","importDoneCount":"✓ เสร็จแล้ว! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"เกิดข้อผิดพลาดที่ไม่คาดคิด","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"ข้อความ","responsesPath":"การตอบสนอง","chatCompletionsPath":"แชท/เสร็จสิ้น","add":"เพิ่ม","edit":"แก้ไข","delete":"ลบ","anthropic":"มานุษยวิทยา","openai":"OpenAI","singleConnectionPerCompatible":"อนุญาตให้เชื่อมต่อได้เพียงครั้งเดียวต่อโหนดที่เข้ากันได้ เพิ่มโหนดอื่นหากคุณต้องการการเชื่อมต่อเพิ่มเติม","connections":"การเชื่อมต่อ","providerProxyTitleConfigured":"พร็อกซีผู้ให้บริการ: {host}","configured":"กำหนดค่าแล้ว","providerProxyConfigureHint":"กำหนดค่าพร็อกซีสำหรับการเชื่อมต่อทั้งหมดของผู้ให้บริการรายนี้","providerProxy":"พร็อกซีของผู้ให้บริการ","noConnectionsYet":"ยังไม่มีการเชื่อมต่อ","addFirstConnectionHint":"เพิ่มการเชื่อมต่อครั้งแรกของคุณเพื่อเริ่มต้น","addConnection":"เพิ่มการเชื่อมต่อ","availableModels":"รุ่นที่มีจำหน่าย","pageAutoRefresh":"หน้าจะรีเฟรชอัตโนมัติ...","statusDisabled":"ปิดการใช้งาน","statusConnected":"เชื่อมต่อแล้ว","statusRuntimeIssue":"ปัญหารันไทม์","statusAuthFailed":"การตรวจสอบสิทธิ์ล้มเหลว","statusRateLimited":"อัตราจำกัด","statusNetworkIssue":"ปัญหาเครือข่าย","statusTestUnsupported":"ไม่รองรับการทดสอบ","statusUnavailable":"ไม่พร้อมใช้งาน","statusFailed":"ล้มเหลว","statusError":"ข้อผิดพลาด","oauthAccount":"บัญชี OAuth","errorTypeRuntime":"รันไทม์ท้องถิ่น","errorTypeUpstreamAuth":"การรับรองความถูกต้องต้นน้ำ","errorTypeMissingCredential":"ข้อมูลรับรองหายไป","errorTypeRefreshFailed":"รีเฟรชล้มเหลว","errorTypeTokenExpired":"โทเค็นหมดอายุ","errorTypeRateLimited":"อัตราจำกัด","errorTypeUpstreamUnavailable":"อัปสตรีมไม่พร้อมใช้งาน","errorTypeNetworkError":"ข้อผิดพลาดของเครือข่าย","errorTypeTestUnsupported":"ไม่รองรับการทดสอบ","errorTypeUpstreamError":"ข้อผิดพลาดต้นน้ำ","proxySourceGlobal":"ทั่วโลก","proxySourceProvider":"ผู้ให้บริการ","proxySourceKey":"คีย์","proxyConfiguredBySource":"พร็อกซี ({source}): {host}","autoPriority":"อัตโนมัติ: {priority}","proxy":"หนังสือมอบฉันทะ","retestAuthentication":"ทดสอบการรับรองความถูกต้องอีกครั้ง","retest":"ทดสอบซ้ำ","disableConnection":"ปิดการใช้งานการเชื่อมต่อ","enableConnection":"เปิดใช้งานการเชื่อมต่อ","reauthenticateConnection":"ตรวจสอบการเชื่อมต่อนี้อีกครั้ง","proxyConfig":"การกำหนดค่าพร็อกซี","aliasExistsAlert":"มีนามแฝง \\"{alias}\\" อยู่แล้ว โปรดใช้โมเดลอื่นหรือแก้ไขนามแฝงที่มีอยู่","openRouterAnyModelHint":"OpenRouter รองรับทุกรุ่น เพิ่มโมเดลและสร้างนามแฝงเพื่อการเข้าถึงที่รวดเร็ว","modelIdFromOpenRouter":"รหัสรุ่น (จาก OpenRouter)","openRouterModelPlaceholder":"มานุษยวิทยา / Claude-3-opus","customModels":"โมเดลที่กำหนดเอง","customModelsHint":"เพิ่มรหัสรุ่นที่ไม่ได้อยู่ในรายการเริ่มต้น สิ่งเหล่านี้จะพร้อมใช้งานสำหรับการกำหนดเส้นทาง","modelId":"รหัสรุ่น","customModelPlaceholder":"เช่น gpt-4.5-เทอร์โบ","loading":"กำลังโหลด...","removeCustomModel":"ลบโมเดลที่กำหนดเอง","noCustomModels":"ยังไม่มีการเพิ่มโมเดลที่กำหนดเอง","allSuggestedAliasesExist":"มีนามแฝงที่แนะนำทั้งหมดอยู่แล้ว โปรดเลือกรุ่นอื่นหรือลบนามแฝงที่ขัดแย้งกัน","failedSaveCustomModel":"บันทึกโมเดลที่กำหนดเองไม่สำเร็จ","modelAddedSuccess":"เพิ่มโมเดล {modelId} สำเร็จแล้ว","failedAddModelTryAgain":"ไม่สามารถเพิ่มโมเดล โปรดลองอีกครั้ง","failedSaveImportedModel":"ไม่สามารถบันทึกแบบจำลองที่นำเข้าไปยังฐานข้อมูลที่กำหนดเอง","failedImportModelsTryAgain":"ไม่สามารถนำเข้าโมเดลได้ โปรดลองอีกครั้ง","failedRemoveModelFromDatabase":"ไม่สามารถลบโมเดลออกจากฐานข้อมูล","modelRemovedSuccess":"ลบโมเดลสำเร็จแล้ว","failedDeleteModelTryAgain":"ลบโมเดลไม่สำเร็จ โปรดลองอีกครั้ง","compatibleModelsDescription":"เพิ่มโมเดลที่เข้ากันได้กับ {type} ด้วยตนเองหรือนำเข้าจากตำแหน่งข้อมูล /models","anthropicCompatibleModelPlaceholder":"คลอด-3-บทประพันธ์-20240229","openaiCompatibleModelPlaceholder":"GPT-4o","apiKeyValidationFailed":"การตรวจสอบคีย์ API ล้มเหลว โปรดตรวจสอบรหัสของคุณแล้วลองอีกครั้ง","addProviderApiKeyTitle":"เพิ่ม {provider} คีย์ API","checking":"กำลังตรวจสอบ...","check":"ตรวจสอบ","valid":"ถูกต้อง","invalid":"ไม่ถูกต้อง","creating":"กำลังสร้าง...","validationChecksAnthropicCompatible":"การตรวจสอบความถูกต้องจะตรวจสอบ {provider} โดยการตรวจสอบคีย์ API","validationChecksOpenAiCompatible":"การตรวจสอบความถูกต้องจะตรวจสอบ {provider} ผ่าน /models บน URL ฐานของคุณ","priorityLabel":"ลำดับความสำคัญ","saving":"กำลังบันทึก...","save":"บันทึก","editConnection":"แก้ไขการเชื่อมต่อ","accountName":"ชื่อบัญชี","email":"อีเมล","healthCheckMinutes":"ตรวจสุขภาพ (ขั้นต่ำ)","healthCheckHint":"ช่วงเวลาการรีเฟรชโทเค็นเชิงรุก 0 = ปิดการใช้งาน","groupLabel":"Environment","groupPlaceholder":"e.g. eKaizen, Personal","failedTestConnection":"ทดสอบการเชื่อมต่อไม่สำเร็จ","failed":"ล้มเหลว","leaveBlankKeepCurrentApiKey":"เว้นว่างไว้เพื่อเก็บคีย์ API ปัจจุบันไว้","editCompatibleTitle":"แก้ไข {type} เข้ากันได้","compatibleBaseUrlHint":"Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.","apiKeyForCheck":"คีย์ API (สำหรับการตรวจสอบ)","compatibleProdPlaceholder":"{type} เข้ากันได้ (ผลิตภัณฑ์)","providerTestTimeout":"Provider test timed out — too many connections to test at once","advancedSettings":"Advanced Settings","chatPathLabel":"Chat Endpoint Path","chatPathPlaceholder":"/chat/completions","chatPathHint":"Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)","modelsPathLabel":"Models Endpoint Path","modelsPathPlaceholder":"/models","modelsPathHint":"Custom models path for validation (e.g. /v4/models)","builtInModels":"Built-in models","builtInModelsHint":"Registry models for this provider. Use the pencil to set compatibility options.","normalizeToolCallIdLabel":"Normalize tool call IDs to 9 characters (e.g. Mistral)","preserveDeveloperRoleLabel":"Keep OpenAI Responses developer role (do not map to system)","compatAdjustmentsTitle":"Compatibility","compatButtonLabel":"Compatibility","compatToolIdShort":"Tool ID 9","compatDeveloperShort":"Developer role","compatDoNotPreserveDeveloper":"Do not preserve developer role","compatBadgeNoPreserve":"No preserve","compatProtocolLabel":"Client request protocol","compatProtocolHint":"These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).","compatProtocolOpenAI":"OpenAI Chat Completions","compatProtocolOpenAIResponses":"OpenAI Responses API","compatProtocolClaude":"Anthropic Messages","tokenRefreshed":"Token refreshed successfully","tokenRefreshFailed":"Token refresh failed","compatBadgeUpstreamHeaders":"Headers","compatUpstreamAddRow":"Add header","compatUpstreamHeaderName":"Header name","compatUpstreamHeaderValue":"Value","compatUpstreamHeadersHint":"High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.","compatUpstreamHeadersLabel":"Extra upstream headers","compatUpstreamRemoveRow":"Remove row","autoSync":"ซิงค์อัตโนมัติ","autoSyncTooltip":"รีเฟรชรายการโมเดลโดยอัตโนมัติทุกๆ 24 ชั่วโมง (กำหนดค่าได้ผ่าน MODEL_SYNC_INTERVAL_HOURS)","autoSyncEnabled":"เปิดใช้งานการซิงค์อัตโนมัติ — โมเดลจะรีเฟรชเป็นระยะ","autoSyncDisabled":"ปิดใช้งานการซิงค์อัตโนมัติแล้ว","autoSyncToggleFailed":"ไม่สามารถสลับการซิงค์อัตโนมัติ","allModelsAlreadyImported":"นำเข้าโมเดลทั้งหมดแล้ว","noNewModelsToImport":"ไม่มีโมเดลใหม่ที่จะนำเข้า — โมเดลทั้งหมดมีอยู่แล้วในรีจิสทรีหรือรายการโมเดลที่กำหนดเอง","skippingExistingModels":"ข้าม {count} โมเดลที่มีอยู่"},"settings":{"title":"การตั้งค่า","general":"ทั่วไป","security":"ความปลอดภัย","appearance":"ลักษณะที่ปรากฏ","routing":"การกำหนดเส้นทาง","cache":"แคช","resilience":"ความยืดหยุ่น","systemPrompt":"พร้อมท์ระบบ","thinkingBudget":"คิดงบประมาณ","proxy":"หนังสือมอบฉันทะ","pricing":"ราคา","storage":"ที่เก็บของ","policies":"นโยบาย","ipFilter":"ตัวกรองไอพี","comboDefaults":"ค่าเริ่มต้นคอมโบ","fallbackChains":"โซ่สำรอง","changePassword":"เปลี่ยนรหัสผ่าน","enablePassword":"เปิดใช้งานรหัสผ่าน","darkMode":"โหมดมืด","lightMode":"โหมดแสง","systemTheme":"ธีมของระบบ","enableCache":"เปิดใช้งานแคช","cacheTTL":"แคช TTL","maxCacheSize":"ขนาดแคชสูงสุด","clearCache":"ล้างแคช","cacheHits":"การเข้าชมแคช","cacheMisses":"แคชพลาด","hitRate":"อัตราการเข้าชม","cacheEntries":"รายการแคช","circuitBreaker":"เบรกเกอร์","retryPolicy":"นโยบายการลองอีกครั้ง","maxRetries":"ลองใหม่สูงสุด","retryDelay":"ลองล่าช้าอีกครั้ง","timeoutMs":"หมดเวลา (มิลลิวินาที)","enableSystemPrompt":"เปิดใช้งานพร้อมท์ระบบ","systemPromptText":"ข้อความแจ้งของระบบ","enableThinking":"เปิดใช้งานการคิด","maxThinkingTokens":"โทเค็นการคิดสูงสุด","enableProxy":"เปิดใช้งานพร็อกซี","proxyUrl":"URL พร็อกซี","pricingRates":"รูปแบบอัตราราคา","currentPricing":"ภาพรวมราคาปัจจุบัน","loadingPricing":"กำลังโหลดข้อมูลราคา...","noPricing":"ไม่มีข้อมูลราคา","input":"อินพุต","output":"เอาท์พุต","cached":"แคช","reasoning":"การใช้เหตุผล","cacheCreation":"การสร้างแคช","customPricing":"ราคาที่กำหนดเอง","databaseSize":"ขนาดฐานข้อมูล","backupDb":"ฐานข้อมูลสำรอง","restoreDb":"กู้คืนฐานข้อมูล","exportData":"ส่งออกข้อมูล","importData":"นำเข้าข้อมูล","clearData":"ล้างข้อมูลทั้งหมด","clearDataConfirm":"การดำเนินการนี้จะลบข้อมูลทั้งหมดอย่างถาวร คุณแน่ใจเหรอ?","enableRequestLogs":"เปิดใช้งานบันทึกคำขอ","logRetention":"การเก็บรักษาบันทึก","ipWhitelist":"รายการ IP ที่อนุญาต","ipBlacklist":"บัญชีดำไอพี","addIP":"เพิ่มไอพี","savedSuccessfully":"บันทึกการตั้งค่าเรียบร้อยแล้ว","ai":"เอไอ","advanced":"ขั้นสูง","localMode":"โหมดท้องถิ่น — ข้อมูลทั้งหมดที่จัดเก็บไว้ในเครื่องของคุณ","settingsSectionsAria":"ส่วนการตั้งค่า","switchThemes":"สลับระหว่างธีมสว่างและธีมมืด","themeSelectionAria":"การเลือกธีม","themeLight":"เบา","themeDark":"มืด","themeSystem":"ระบบ","hideHealthLogs":"ซ่อนบันทึกการตรวจสุขภาพ","hideHealthLogsDesc":"เมื่อเปิด ให้ระงับข้อความ [HealthCheck] ในคอนโซลเซิร์ฟเวอร์","themeAccent":"สีธีม","themeAccentDesc":"เลือกสีสำเร็จรูปหรือสร้างธีมของคุณเองด้วยสีเดียว","themeCreate":"สร้างธีม","themeCustom":"ธีมกำหนดเอง","themeBlue":"น้ำเงิน","themeRed":"แดง","themeGreen":"เขียว","themeViolet":"ม่วง","themeOrange":"ส้ม","themeCyan":"ไซแอน","promptCache":"แคชพร้อมท์","flushCache":"ล้างแคช","flushing":"กำลังฟลัชชิง…","size":"ขนาด","hits":"ฮิต","evictions":"การขับไล่","loadingCacheStats":"กำลังโหลดสถิติแคช...","globalProxy":"พร็อกซีทั่วโลก","globalProxyDesc":"กำหนดค่าพร็อกซีขาออกส่วนกลางสำหรับการเรียก API ทั้งหมด ผู้ให้บริการแต่ละราย คอมโบ และคีย์สามารถแทนที่สิ่งนี้ได้","noGlobalProxy":"ไม่มีการกำหนดค่าพร็อกซีส่วนกลาง","globalLabel":"ทั่วโลก","configure":"กำหนดค่า","globalSystemPrompt":"พร้อมท์ระบบทั่วโลก","systemPromptDesc":"แทรกเข้าไปในคำขอทั้งหมดในระดับพร็อกซี","saved":"บันทึกแล้ว","systemPromptPlaceholder":"เข้าสู่ระบบพร้อมท์ให้แทรกคำขอทั้งหมด...","systemPromptHint":"พรอมต์นี้ถูกเพิ่มไว้หน้าข้อความระบบของทุกคำขอ ใช้สำหรับคำแนะนำสากล หลักเกณฑ์ด้านความปลอดภัย หรือกฎการจัดรูปแบบการตอบกลับ","chars":"{count} ตัวอักษร","thinkingBudgetTitle":"คิดงบประมาณ","thinkingBudgetDesc":"ควบคุมการใช้โทเค็นการให้เหตุผลของ AI ในคำขอทั้งหมด","passthrough":"ทะลุผ่าน","passthroughDesc":"ไม่มีการเปลี่ยนแปลง — ลูกค้าควบคุมงบประมาณการคิด","auto":"อัตโนมัติ","autoDesc":"ยกเลิกการกำหนดค่าการคิดทั้งหมด — ให้ผู้ให้บริการตัดสินใจ","custom":"กำหนดเอง","customDesc":"กำหนดงบประมาณโทเค็นคงที่สำหรับคำขอทั้งหมด","adaptive":"ปรับตัวได้","adaptiveDesc":"ปรับขนาดงบประมาณตามความซับซ้อนของคำขอ","effortNone":"ไม่มี (0 โทเค็น)","effortLow":"ต่ำ (โทเค็น 1K)","effortMedium":"ปานกลาง (โทเค็น 10,000)","effortHigh":"สูง (โทเค็น 128K)","tokenBudget":"งบประมาณโทเค็น","tokens":"โทเค็น","baseEffortLevel":"ระดับความพยายามพื้นฐาน","adaptiveHint":"โหมดการปรับเปลี่ยนจะปรับขนาดจากระดับพื้นฐานนี้โดยอิงตามจำนวนข้อความ การใช้เครื่องมือ และความยาวข้อความแจ้ง","requireLogin":"จำเป็นต้องเข้าสู่ระบบ","requireLoginDesc":"เมื่อเปิด แดชบอร์ดต้องใช้รหัสผ่าน เมื่อปิด ให้เข้าถึงโดยไม่ต้องเข้าสู่ระบบ","currentPassword":"รหัสผ่านปัจจุบัน","enterCurrentPassword":"ป้อนรหัสผ่านปัจจุบัน","newPassword":"รหัสผ่านใหม่","enterNewPassword":"ป้อนรหัสผ่านใหม่","confirmPassword":"ยืนยันรหัสผ่านใหม่","confirmPasswordPlaceholder":"ยืนยันรหัสผ่านใหม่","passwordsNoMatch":"รหัสผ่านไม่ตรงกัน","passwordUpdated":"อัปเดตรหัสผ่านเรียบร้อยแล้ว","failedUpdatePassword":"ไม่สามารถอัปเดตรหัสผ่าน","errorOccurred":"เกิดข้อผิดพลาด","updatePassword":"อัปเดตรหัสผ่าน","setPassword":"ตั้งรหัสผ่าน","apiEndpointProtection":"การป้องกันปลายทาง API","requireAuthModels":"ต้องใช้คีย์ API สำหรับ /models","requireAuthModelsDesc":"เมื่อเปิด ตำแหน่งข้อมูล /v1/models จะส่งคืน 404 สำหรับคำขอที่ไม่ได้รับการรับรองความถูกต้อง ป้องกันการค้นพบโมเดลโดยผู้ใช้ที่ไม่ได้รับอนุญาต","blockedProviders":"ผู้ให้บริการที่ถูกบล็อก","blockedProvidersDesc":"ซ่อนผู้ให้บริการเฉพาะจากการตอบกลับ /v1/models ผู้ให้บริการที่ถูกบล็อกจะไม่ปรากฏในรายการโมเดล","providersBlocked":"{count} ผู้ให้บริการถูกบล็อกจาก /models","blockProviderTitle":"บล็อก {provider}","unblockProviderTitle":"เลิกบล็อก {provider}","routingStrategy":"กลยุทธ์การกำหนดเส้นทาง","fillFirst":"เติมก่อน","fillFirstDesc":"ใช้บัญชีตามลำดับความสำคัญ","roundRobin":"ตัวกลม โรบิน","roundRobinDesc":"หมุนเวียนไปตามบัญชีทั้งหมด","p2c":"พีทูซี","p2cDesc":"สุ่มเลือก 2 อัน ใช้อันที่ดีต่อสุขภาพกว่า","random":"สุ่ม","randomDesc":"บัญชีสุ่มแต่ละคำขอ","leastUsed":"ใช้น้อยที่สุด","leastUsedDesc":"เลือกบัญชีที่ใช้ล่าสุดน้อยที่สุด","costOpt":"การเลือกใช้ต้นทุน","costOptDesc":"ต้องการบัญชีที่ถูกที่สุด","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each account once before reshuffling","stickyLimit":"ขีด จำกัด เหนียว","stickyLimitDesc":"โทรต่อบัญชีก่อนที่จะเปลี่ยน","modelAliases":"นามแฝงของโมเดล","modelAliasesTitle":"นามแฝงโมเดล","modelAliasesDesc":"รูปแบบไวด์การ์ดเพื่อทำการแมปชื่อโมเดลใหม่ • ใช้ * และ ?","addCustomAlias":"เพิ่มนามแฝงที่กำหนดเอง","deprecatedModelId":"ID โมเดลที่เลิกใช้","newModelId":"ID โมเดลใหม่","customAliases":"นามแฝงที่กำหนดเอง","builtInAliases":"นามแฝงในตัว","backgroundDegradationTitle":"การลดระดับงานพื้นหลัง","backgroundDegradationDesc":"ตรวจจับงานพื้นหลังโดยอัตโนมัติ (ชื่อเรื่อง, สรุป) และเปลี่ยนเส้นทางไปยังโมเดลที่ถูกกว่า","enableDegradation":"เปิดใช้งานการลดระดับงานพื้นหลัง","enableDegradationHint":"เมื่อเปิดใช้งาน งานพื้นหลังเช่นการสร้างชื่อเรื่องและสรุปจะถูกเปลี่ยนเส้นทางไปยังโมเดลที่ถูกกว่าโดยอัตโนมัติ","tasksDetected":"งานที่ตรวจพบ","degradationMap":"แผนผังการลดระดับโมเดล","premiumModel":"โมเดลพรีเมียม","cheapModel":"โมเดลราคาถูก","detectionPatterns":"รูปแบบการตรวจจับ","newPattern":"เช่น \\"สร้างชื่อเรื่อง\\"","aliasPatternPlaceholder":"คลอด-โคลง-*","aliasTargetPlaceholder":"คลอด-โคลง-4-20250514","pattern":"รูปแบบ","targetModel":"โมเดลเป้าหมาย","add":"+ เพิ่ม","session":"เซสชัน","sessionDetailsAria":"รายละเอียดเซสชัน","status":"สถานะ","authenticated":"รับรองความถูกต้อง","guest":"แขก","loginTime":"เวลาเข้าสู่ระบบ","sessionAge":"อายุเซสชัน","browser":"เบราว์เซอร์","clearLocalData":"ล้างข้อมูลในเครื่อง","logout":"ออกจากระบบ","clearLocalDataConfirm":"ล้างข้อมูลในเครื่องทั้งหมดไหม นี่จะรีเซ็ตการตั้งค่าของคุณ","unknown":"ไม่ทราบ","systemActor":"ระบบ","ipAccessControl":"การควบคุมการเข้าถึงไอพี","ipAccessControlDesc":"บล็อกหรืออนุญาตที่อยู่ IP ที่ระบุ","ipModeDisabled":"ปิดการใช้งาน","ipModeBlacklist":"บัญชีดำ","ipModeWhitelist":"ไวท์ลิสต์","ipModeWhitelistPriority":"ลำดับความสำคัญ WL","addIpAddress":"เพิ่มที่อยู่ IP","ipAddressPlaceholder":"192.168.1.0/24 หรือ 10.0.*.*","block":"+ บล็อก","allow":"+ อนุญาต","blocked":"ถูกบล็อก ({count})","allowed":"อนุญาต ({count})","temporaryBans":"การแบนชั่วคราว ({count})","minLeft":"เหลืออีก {min} นาที","auditLog":"บันทึกการตรวจสอบ","searchAuditLogs":"ค้นหาบันทึกการตรวจสอบ...","failedLoadAuditLog":"โหลดบันทึกการตรวจสอบไม่สำเร็จ","noAuditEvents":"ไม่พบกิจกรรมการตรวจสอบ","action":"การดำเนินการ","actor":"นักแสดง","details":"รายละเอียด","time":"เวลา","fallbackChainsTitle":"โซ่สำรอง","fallbackChainsDesc":"กำหนดลำดับสำรองของผู้ให้บริการต่อรุ่น","addChain":"+ เพิ่มห่วงโซ่","modelName":"ชื่อรุ่น","modelNamePlaceholder":"คลอด-โคลง-4-20250514","providersCommaSeparated":"ผู้ให้บริการ (คั่นด้วยเครื่องหมายจุลภาค เรียงตามลำดับความสำคัญ)","providersCommaSeparatedPlaceholder":"มานุษยวิทยา openai ราศีเมถุน","createChain":"สร้างเชน","noFallbackChains":"ไม่มีโซ่ทางเลือก","noFallbackChainsDesc":"สร้างห่วงโซ่เพื่อกำหนดลำดับทางเลือกของผู้ให้บริการสำหรับโมเดล","loadingFallbackChains":"กำลังโหลดเชนสำรอง...","deleteChainConfirm":"ลบเชนทางเลือกสำหรับ \\"{model}\\" หรือไม่","chainCreated":"เชนที่สร้างขึ้นสำหรับ {model}","chainDeleted":"ลบเชนสำหรับ {model} แล้ว","failedCreateChain":"ไม่สามารถสร้างเชนได้","failedDeleteChain":"ลบเชนไม่สำเร็จ","deleteChain":"ลบห่วงโซ่","fillModelAndProviders":"กรุณากรอกชื่อรุ่นและผู้ให้บริการ","addAtLeastOneProvider":"เพิ่มผู้ให้บริการอย่างน้อยหนึ่งราย","comboDefaultsTitle":"ค่าเริ่มต้นคอมโบ","globalComboConfig":"การกำหนดค่าคอมโบทั่วโลก","defaultStrategy":"กลยุทธ์เริ่มต้น","defaultStrategyDesc":"นำไปใช้กับคอมโบใหม่โดยไม่มีกลยุทธ์ที่ชัดเจน","comboStrategyAria":"กลยุทธ์คอมโบ","priority":"ลำดับความสำคัญ","weighted":"ถ่วงน้ำหนัก","maxRetriesLabel":"ลองใหม่สูงสุด","retryDelayLabel":"ความล่าช้าในการลองอีกครั้ง (มิลลิวินาที)","timeoutLabel":"หมดเวลา (มิลลิวินาที)","healthCheck":"ตรวจสุขภาพ","healthCheckDesc":"ตรวจสอบความพร้อมของผู้ให้บริการล่วงหน้า","trackMetrics":"ติดตามตัวชี้วัด","trackMetricsDesc":"บันทึกเมตริกคำขอต่อคอมโบ","providerOverrides":"การแทนที่ผู้ให้บริการ","providerOverridesDesc":"แทนที่การหมดเวลาและลองใหม่ตามผู้ให้บริการ การตั้งค่าผู้ให้บริการจะแทนที่ค่าเริ่มต้นสากล","providerMaxRetriesAria":"{provider} ลองใหม่สูงสุด","providerTimeoutAria":"{provider} หมดเวลา มิลลิวินาที","removeProviderOverrideAria":"ลบการแทนที่ {provider} ออก","newProviderNamePlaceholder":"เช่น google, openai...","newProviderNameAria":"ชื่อผู้ให้บริการใหม่","retries":"ลองอีกครั้ง","ms":"นางสาว","saveComboDefaults":"บันทึกค่าเริ่มต้นคอมโบ","maxNestingDepth":"ความลึกของการซ้อนสูงสุด","concurrencyPerModel":"เห็นพ้องต้องกัน / รุ่น","queueTimeout":"คิวหมดเวลา (มิลลิวินาที)","providerProfiles":"โปรไฟล์ผู้ให้บริการ","providerProfilesDesc":"แยกการตั้งค่าความยืดหยุ่นสำหรับผู้ให้บริการ OAuth (ตามเซสชัน) และคีย์ API (แบบมิเตอร์) ผู้ให้บริการ OAuth มีเกณฑ์ที่เข้มงวดมากขึ้นเนื่องจากมีขีดจำกัดอัตราที่ต่ำกว่า","oauthProviders":"ผู้ให้บริการ OAuth","apiKeyProviders":"ผู้ให้บริการคีย์ API","transientCooldown":"คูลดาวน์ชั่วคราว","rateLimitCooldown":"คูลดาวน์จำกัดอัตรา","maxBackoffLevel":"ระดับการถอยกลับสูงสุด","cbThreshold":"เกณฑ์ CB","cbResetTime":"เวลารีเซ็ต CB","rateLimiting":"การจำกัดอัตรา","rateLimitingDesc":"ผู้ให้บริการคีย์ API จะถูกจำกัดอัตราโดยอัตโนมัติด้วยค่าเริ่มต้นที่ปลอดภัย เรียนรู้ขีดจำกัดจากส่วนหัวการตอบกลับและปรับเปลี่ยนเมื่อเวลาผ่านไป","defaultSafetyNet":"เครือข่ายความปลอดภัยเริ่มต้น","rpm":"รอบต่อนาที","minGap":"มิน กาป","maxConcurrent":"แม็กซ์พร้อมกัน","activeLimiters":"ตัวจำกัดที่ใช้งานอยู่","noActiveLimiters":"ยังไม่มีการจำกัดอัตราที่ใช้งานอยู่","reservoir":"อ่างเก็บน้ำ","running":"วิ่ง","queued":"เข้าคิว","circuitBreakers":"เซอร์กิตเบรกเกอร์","breakerStateClosed":"ปิดแล้ว","breakerStateOpen":"เปิด","breakerStateHalfOpen":"ครึ่งเปิด","tripped":"{count} สะดุด","healthy":"{count} สุขภาพแข็งแรง","resetAll":"รีเซ็ตทั้งหมด","noCircuitBreakers":"ยังไม่มีเซอร์กิตเบรกเกอร์ทำงาน พวกเขาจะถูกสร้างขึ้นโดยอัตโนมัติเมื่อมีการร้องขอไหลผ่านไปป์ไลน์คำสั่งผสม","failures":"{count} ล้มเหลว","policiesLocked":"นโยบายและตัวระบุที่ถูกล็อค","allOperational":"ใช้งานได้ทุกระบบ — ไม่มีการล็อกหรือเบรกเกอร์สะดุด","loadingPolicies":"กำลังโหลดนโยบาย...","lockedIdentifiers":"ตัวระบุที่ถูกล็อค","unlockedIdentifier":"ปลดล็อคแล้ว: {identifier}","sinceDate":"ตั้งแต่ {date}","forceUnlock":"บังคับปลดล็อค","unlocking":"กำลังปลดล็อค...","failedUnlock":"ปลดล็อคไม่สำเร็จ","failedLoadWithStatus":"ไม่สามารถโหลด: {status}","failedLoadResilience":"ไม่สามารถโหลดสถานะความยืดหยุ่นได้","saveFailed":"บันทึกล้มเหลว","resetFailed":"การรีเซ็ตล้มเหลว","loadingResilience":"กำลังโหลดสถานะความยืดหยุ่น...","retry":"ลองอีกครั้ง","systemStorage":"ระบบและการจัดเก็บ","allDataLocal":"ข้อมูลทั้งหมดที่จัดเก็บไว้ในเครื่องของคุณ","databasePath":"เส้นทางฐานข้อมูล","exportDatabase":"ส่งออกฐานข้อมูล","exportAll":"ส่งออกทั้งหมด (.tar.gz)","importDatabase":"นำเข้าฐานข้อมูล","confirmDbImport":"ยืนยันการนำเข้าฐานข้อมูล","confirmDbImportDesc":"สิ่งนี้จะแทนที่ข้อมูลปัจจุบันทั้งหมดด้วยเนื้อหาจาก {file} ข้อมูลสำรองจะถูกสร้างขึ้นโดยอัตโนมัติก่อนการนำเข้า","yesImport":"ใช่ นำเข้า","lastBackup":"การสำรองข้อมูลครั้งสุดท้าย","noBackupYet":"ยังไม่มีการสำรองข้อมูล","backupNow":"สำรองข้อมูลทันที","backupRestore":"สำรองและกู้คืน","viewBackups":"ดูข้อมูลสำรอง","hide":"ซ่อน","backupRetentionDesc":"สแน็ปช็อตฐานข้อมูลจะถูกสร้างขึ้นโดยอัตโนมัติก่อนการกู้คืนและทุกๆ 15 นาทีเมื่อข้อมูลเปลี่ยนแปลง การเก็บรักษา: การสำรองข้อมูล 24 ชั่วโมง + 30 รายวันพร้อมการหมุนเวียนอัจฉริยะ","loadingBackups":"กำลังโหลดข้อมูลสำรอง...","noBackupsYet":"ยังไม่มีข้อมูลสำรอง การสำรองข้อมูลจะถูกสร้างขึ้นโดยอัตโนมัติเมื่อข้อมูลมีการเปลี่ยนแปลง","backupsAvailable":"{count} มีการสำรองข้อมูลแล้ว","refresh":"รีเฟรช","confirm":"ยืนยัน?","yes":"ใช่","no":"ไม่","restore":"คืนค่า","invalidFileType":"ประเภทไฟล์ไม่ถูกต้อง ยอมรับเฉพาะไฟล์ .sqlite เท่านั้น","exportFailed":"การส่งออกล้มเหลว","exportFailedWithError":"การส่งออกล้มเหลว: {error}","fullExportFailedWithError":"การส่งออกแบบเต็มล้มเหลว: {error}","backupCreated":"สร้างข้อมูลสำรองแล้ว: {file}","restoreSuccess":"ฟื้นแล้ว! การเชื่อมต่อ {connections}, โหนด {nodes}, คอมโบ {combos}, คีย์ {apiKeys} API","importSuccess":"นำเข้าฐานข้อมูลแล้ว! การเชื่อมต่อ {connections}, โหนด {nodes}, คอมโบ {combos}, คีย์ {apiKeys} API","justNow":"แค่ตอนนี้","minutesAgo":"{count}นาทีที่แล้ว","hoursAgo":"{count}ชม. ที่แล้ว","daysAgo":"{count}d ที่แล้ว","backupReasonManual":"คู่มือ","backupReasonPreRestore":"คืนค่าล่วงหน้า","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"ไม่มีการเปลี่ยนแปลงตั้งแต่การสำรองข้อมูลครั้งล่าสุด","backupFailed":"การสำรองข้อมูลล้มเหลว","restoreFailed":"การคืนค่าล้มเหลว","importFailed":"การนำเข้าล้มเหลว","errorDuringRestore":"เกิดข้อผิดพลาดระหว่างการคืนค่า","errorDuringImport":"เกิดข้อผิดพลาดระหว่างการนำเข้า","modelPricing":"ราคารุ่น","modelPricingDesc":"กำหนดอัตราต้นทุนต่อรุ่น • อัตราทั้งหมดในโทเค็น $/1M","providers":"ผู้ให้บริการ","registry":"ทะเบียน","priced":"ราคา","searchProvidersModels":"ค้นหาผู้ให้บริการหรือรุ่น...","showAll":"แสดงทั้งหมด","noProvidersMatch":"ไม่มีผู้ให้บริการที่ตรงกับการค้นหาของคุณ","howPricingWorks":"วิธีการทำงานของการกำหนดราคา","cacheWrite":"แคชเขียน","unsaved":"ไม่ได้บันทึก","resetDefaults":"รีเซ็ตค่าเริ่มต้น","saveProvider":"บันทึกผู้ให้บริการ","saving":"กำลังบันทึก...","model":"รุ่น","models":"โมเดล","moreProviders":"{count} ผู้ให้บริการเพิ่มเติม","withPricing":"โดยมีการกำหนดราคาไว้","policiesCircuitBreakers":"นโยบายและเซอร์กิตเบรกเกอร์","activeIssuesDetected":"ตรวจพบปัญหาที่ทำงานอยู่","off":"ปิด","resetPricingConfirm":"รีเซ็ตราคาทั้งหมดสำหรับ {provider} เป็นค่าเริ่มต้นหรือไม่","pricingDescInput":"อินพุต: โทเค็นที่ส่งไปยังโมเดล","pricingDescOutput":"เอาท์พุต: โทเค็นที่สร้างขึ้น","pricingDescCached":"แคช: อินพุตที่นำกลับมาใช้ใหม่ (~ 50% ของอัตราการอินพุต)","pricingDescReasoning":"การใช้เหตุผล: โทเค็นการคิด (ถอยกลับไปที่เอาต์พุต)","pricingDescCacheWrite":"การเขียนแคช: การสร้างรายการแคช (ถอยกลับไปที่อินพุต)","pricingDescFormula":"ราคา = (input × input_rate) + (output × output_rate) + (cached × cached_rate) ต่อล้านโทเค็น","pricingSettingsTitle":"การตั้งค่าราคา","totalModels":"โมเดลทั้งหมด","active":"ใช้งานอยู่","costCalculation":"การคำนวณต้นทุน","costCalculationDesc":"ต้นทุนจะคำนวณตามการใช้โทเค็นและอัตราราคาที่กำหนดค่าไว้สำหรับแต่ละรุ่น","pricingFormat":"รูปแบบการตั้งราคา","pricingFormatDesc":"อัตราทั้งหมดอยู่ในโทเค็น $/1M (ดอลลาร์ต่อโทเค็นหนึ่งล้าน)","tokenTypes":"ประเภทโทเค็น","inputTokenDesc":"โทเค็นพร้อมท์มาตรฐาน","outputTokenDesc":"โทเค็นการเสร็จสิ้น/การตอบกลับ","cachedTokenDesc":"โทเค็นอินพุตที่แคชไว้ (โดยทั่วไปคือ 50% ของอัตราการอินพุต)","reasoningTokenDesc":"โทเค็นการใช้เหตุผล/การคิดพิเศษ (ทางเลือกกลับไปยังอัตราผลลัพธ์)","cacheCreationTokenDesc":"โทเค็นที่ใช้ในการสร้างรายการแคช (สำรองไปยังอัตราการป้อนข้อมูล)","customPricingNote":"คุณสามารถแทนที่ราคาเริ่มต้นสำหรับรุ่นเฉพาะได้ การแทนที่แบบกำหนดเองจะมีลำดับความสำคัญมากกว่าการกำหนดราคาที่ตรวจพบอัตโนมัติ","editPricing":"แก้ไขราคา","viewFullDetails":"ดูรายละเอียดทั้งหมด","themeCoral":"คอรัล","cliFingerprint":"CLI Fingerprint Matching","cliFingerprintDesc":"Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.","cliFingerprintEnabled":"{count} provider(s) with CLI fingerprint active","enableFingerprintTitle":"Enable fingerprint for {provider}","disableFingerprintTitle":"Disable fingerprint for {provider}","routingAdvancedGuideTitle":"คำแนะนำการกำหนดเส้นทางขั้นสูง","routingAdvancedGuideHint1":"ใช้ Fill First เพื่อลำดับความสำคัญที่คาดการณ์ได้ Round Robin เพื่อความยุติธรรม และ P2C เพื่อความยืดหยุ่นในการตอบสนอง","routingAdvancedGuideHint2":"หากผู้ให้บริการมีคุณภาพ/ต้นทุนแตกต่างกัน ให้เริ่มด้วยการเลือกต้นทุนสำหรับงานเบื้องหลังและใช้งานน้อยที่สุดสำหรับการสึกหรอที่สมดุล","comboDefaultsGuideTitle":"วิธีปรับแต่งค่าเริ่มต้นคอมโบ","comboDefaultsGuideHint1":"พยายามลองใหม่ให้ต่ำในกระแสเวลาแฝงต่ำ เพิ่มการหมดเวลาเฉพาะสำหรับงานที่ใช้เวลานานเท่านั้น","comboDefaultsGuideHint2":"ใช้การแทนที่ผู้ให้บริการเมื่อผู้ให้บริการรายหนึ่งต้องการพฤติกรรมการหมดเวลา/การลองใหม่ที่แตกต่างไปจากค่าเริ่มต้นส่วนกลาง"},"translator":{"title":"นักแปล","metaTitle":"สนามเด็กเล่นนักแปล | OmniRoute","metaDescription":"ดีบัก ทดสอบ และแสดงภาพการแปลรูปแบบ API ระหว่างผู้ให้บริการ","playgroundTitle":"สนามเด็กเล่นนักแปล","playground":"สนามเด็กเล่น","realtime":"กิจกรรมการแปลแบบเรียลไทม์","chatTester":"ผู้ทดสอบการแชท","testBench":"ม้านั่งทดสอบ","liveMonitor":"การตรวจสอบสด","modeDescriptionPlayground":"วางเนื้อหาคำขอ API ใดๆ และดูว่า OmniRoute แปลระหว่างรูปแบบของผู้ให้บริการอย่างไร (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)","modeDescriptionChatTester":"ส่งคำขอแชทจริงผ่าน OmniRoute และตรวจสอบการเดินทางไปกลับทั้งหมด: อินพุต คำขอที่แปล การตอบกลับของผู้ให้บริการ และเอาต์พุตที่แปล","modeDescriptionTestBench":"เรียกใช้สถานการณ์ที่กำหนดไว้ล่วงหน้าและเปรียบเทียบความเข้ากันได้ระหว่างผู้ให้บริการและรุ่นต่างๆ","modeDescriptionLiveMonitor":"ดูกิจกรรมการแปลแบบเรียลไทม์เมื่อมีคำขอไหลผ่าน OmniRoute","modeDescriptionFallback":"แก้ไขข้อบกพร่อง ทดสอบ และเห็นภาพว่า OmniRoute แปลคำขอ API ระหว่างผู้ให้บริการอย่างไร","recentTranslations":"การแปลล่าสุด","noTranslations":"ยังไม่มีคำแปล","source":"แหล่งที่มา","target":"เป้าหมาย","time":"เวลา","model":"รุ่น","status":"สถานะ","latency":"เวลาแฝง","totalTranslations":"การแปลทั้งหมด","successful":"ประสบความสำเร็จ","errors":"ข้อผิดพลาด","avgLatency":"เวลาแฝงเฉลี่ย","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"ถ่ายทอดสด — รีเฟรชอัตโนมัติ","paused":"หยุดชั่วคราว","eventsAppearHint":"กิจกรรมการแปลจะปรากฏที่นี่เมื่อมีการร้องขอผ่าน OmniRoute ใช้วิธีใดวิธีหนึ่งเหล่านี้เพื่อสร้างเหตุการณ์:","chatTesterTab":"แท็บเครื่องมือทดสอบการแชท","testBenchTab":"แท็บม้านั่งทดสอบ","externalApiCalls":"การเรียก API ภายนอก","ideCliIntegrations":"การบูรณาการ IDE/CLI","inMemoryNote":"หมายเหตุ: เหตุการณ์จะถูกจัดเก็บไว้ในหน่วยความจำและรีเซ็ตเมื่อเซิร์ฟเวอร์รีสตาร์ท","ok":"ตกลง","errorShort":"ผิดพลาด","formatConverter":"ตัวแปลงรูปแบบ","formatConverterDescription":"วางหรือพิมพ์เนื้อหาคำขอ JSON นักแปลจะตรวจจับรูปแบบต้นฉบับโดยอัตโนมัติและแปลงเป็นรูปแบบเป้าหมาย ใช้สิ่งนี้เพื่อแก้ไขวิธีที่ OmniRoute แปลคำขอระหว่างรูปแบบต่างๆ (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)","input":"อินพุต","output":"เอาท์พุต","auto":"อัตโนมัติ","swapFormats":"สลับรูปแบบ","translateAction":"แปล","clear":"ชัดเจน","inputPlaceholder":"วางเนื้อหาคำขอที่นี่หรือเลือกเทมเพลตด้านล่าง...","exampleTemplates":"เทมเพลตตัวอย่าง","exampleTemplatesHint":"— คลิกเพื่อโหลด","templateLoadHint":"เทมเพลตโหลดคำขอในรูปแบบ {format} เปลี่ยนรูปแบบต้นฉบับเพื่อโหลดในรูปแบบอื่น","compatibilityTester":"เครื่องทดสอบความเข้ากันได้","compatibilityReport":"รายงานความเข้ากันได้","testBenchDescription":"เรียกใช้สถานการณ์ที่กำหนดไว้ล่วงหน้า (Simple Chat, Tool Calling ฯลฯ) เพื่อตรวจสอบการแปลและความเข้ากันได้ของผู้ให้บริการ เลือกรูปแบบต้นทางและผู้ให้บริการเป้าหมาย จากนั้นทำการทดสอบทั้งหมดเพื่อดูเปอร์เซ็นต์ความเข้ากันได้ ใช้สิ่งนี้เพื่อค้นหาฟีเจอร์ที่ใช้ได้กับผู้ให้บริการ","targetProvider":"ผู้ให้บริการเป้าหมาย","runAllTests":"เรียกใช้การทดสอบทั้งหมด","runTest":"รันการทดสอบ","reRun":"วิ่งอีกครั้ง","running":"กำลังวิ่ง...","passed":"ผ่านไป","failed":"ล้มเหลว","passedIconLabel":"✅ผ่าน","chunks":"ชิ้น","scenarioSimpleChat":"แชทง่ายๆ","scenarioToolCalling":"การเรียกเครื่องมือ","scenarioMultiTurn":"หลายเลี้ยว","scenarioThinking":"กำลังคิด","scenarioSystemPrompt":"พร้อมท์ระบบ","scenarioStreaming":"สตรีมมิ่ง","templateNames":{"simple-chat":"แชทง่ายๆ","tool-calling":"การเรียกเครื่องมือ","multi-turn":"หลายเลี้ยว","thinking":"กำลังคิด","system-prompt":"พร้อมท์ระบบ","streaming":"สตรีมมิ่ง"},"templateDescriptions":{"simple-chat":"ข้อความพื้นฐาน","tool-calling":"การเรียกใช้ฟังก์ชัน/เครื่องมือ","multi-turn":"การสนทนากับประวัติศาสตร์","thinking":"ขยายการคิด/การใช้เหตุผล","system-prompt":"คำแนะนำระบบที่ซับซ้อน","streaming":"คำขอสตรีม SSE"},"templatePayloads":{"simpleChat":{"system":"คุณเป็นผู้ช่วยที่เป็นประโยชน์","userGreeting":"สวัสดี! วันนี้คุณเป็นอย่างไรบ้าง?"},"toolCalling":{"userWeather":"สภาพอากาศในเซาเปาโลเป็นอย่างไร?","toolDescription":"รับสภาพอากาศปัจจุบันสำหรับสถานที่","cityNameDescription":"ชื่อเมือง"},"multiTurn":{"system":"คุณเป็นผู้ช่วยเขียนโค้ด","userInitial":"เขียนฟังก์ชันเพื่อจัดเรียงอาร์เรย์ใน Python","assistantExample":"ต่อไปนี้เป็นฟังก์ชันการเรียงลำดับอย่างง่าย:\\n\\n```หลาม\\ndef sort_array(arr):\\n กลับเรียงลำดับ(arr)\\n```","userFollowUp":"ตอนนี้ให้เรียงลำดับจากมากไปน้อย"},"thinking":{"question":"ผลรวมของจำนวนเฉพาะ 100 ตัวแรกเป็นเท่าใด?"},"systemPrompt":{"systemInstruction":"คุณเป็นวิศวกรซอฟต์แวร์อาวุโสที่เชี่ยวชาญด้านระบบแบบกระจาย ตอบคำถามอย่างกระชับโดยใช้แนวทางปฏิบัติที่ดีที่สุดในอุตสาหกรรม ให้ตัวอย่างโค้ดเสมอเมื่อเกี่ยวข้อง จัดรูปแบบคำตอบของคุณโดยใช้มาร์กดาวน์","question":"ฉันจะใช้รูปแบบเซอร์กิตเบรกเกอร์ได้อย่างไร"},"streaming":{"prompt":"เล่าเรื่องสั้นเกี่ยวกับหุ่นยนต์ที่หัดวาดภาพให้ฉันฟังหน่อย"}},"openaiCompatibleLabel":"รองรับ OpenAI","anthropicCompatibleLabel":"เข้ากันได้กับมานุษยวิทยา","noTemplateForFormat":"ไม่มีเทมเพลตสำหรับรูปแบบนี้","translationFailed":"การแปลล้มเหลว: {error}","pipelineDebugger":"ไปป์ไลน์ดีบักเกอร์","translationPipeline":"ไปป์ไลน์การแปล","pipelineVisualization":"การแสดงภาพไปป์ไลน์","pipelineVisualizationHint":"ส่งข้อความเพื่อดูว่าคำขอของคุณดำเนินการผ่านการตรวจหา → การแปล → การโทรของผู้ให้บริการอย่างไร","chatTesterDescription":"ส่งข้อความเป็นรูปแบบไคลเอนต์เฉพาะและตรวจสอบแต่ละขั้นตอนของไปป์ไลน์การแปล","chatTesterFlow":"คำขอของลูกค้า → การตรวจจับรูปแบบ → OpenAI Intermediate → รูปแบบผู้ให้บริการ → การตอบสนอง","clickStepToInspect":"คลิกขั้นตอนใดก็ได้เพื่อตรวจสอบข้อมูลในขั้นตอนนั้น","clientFormat":"รูปแบบไคลเอนต์","provider":"ผู้ให้บริการ","modelPlaceholder":"เลือกหรือพิมพ์ชื่อรุ่น...","sendMessageToSeePipeline":"ส่งข้อความเพื่อดูไปป์ไลน์การแปล","chatMessageHintPrefix":"ข้อความของคุณจะถูกจัดรูปแบบเป็น","chatMessageHintSuffix":"คำขอ แปลผ่านไปป์ไลน์ และส่งไปยังผู้ให้บริการที่เลือก","youWithFormat":"คุณ ({format})","assistant":"ผู้ช่วย","typeMessage":"พิมพ์ข้อความ...","send":"ส่ง","clientRequest":"คำขอของลูกค้า","clientRequestDescription":"เนื้อหาคำขอตามที่ลูกค้าของคุณจะส่ง","formatDetected":"ตรวจพบรูปแบบ","formatDetectedDescription":"OmniRoute ตรวจจับรูปแบบ API จากโครงสร้างคำขอโดยอัตโนมัติ","openaiIntermediate":"OpenAI ระดับกลาง","openaiIntermediateDescription":"รูปแบบทั้งหมดจะถูกทำให้เป็นมาตรฐานเป็นรูปแบบ OpenAI ก่อน (สะพานสากล)","providerFormat":"รูปแบบผู้ให้บริการ","providerFormatDescription":"รูปแบบ OpenAI ได้รับการแปลเป็นรูปแบบดั้งเดิมของผู้ให้บริการ","providerResponse":"การตอบสนองของผู้ให้บริการ","providerResponseRawDescription":"การตอบสนองดิบจาก API ของผู้ให้บริการ","providerResponseSseDescription":"สตรีม SSE แบบดิบจาก API ของผู้ให้บริการ","unexpectedError":"เกิดข้อผิดพลาดที่ไม่คาดคิด","error":"เกิดข้อผิดพลาด","errorMessage":"ข้อผิดพลาด: {message}","requestFailed":"คำขอล้มเหลว","noTextExtracted":"(ไม่มีการแยกข้อความ)","liveMonitorDescriptionPrefix":"แสดงเหตุการณ์การแปลเมื่อมีการเรียก API ไหลผ่าน OmniRoute เหตุการณ์มาจากบัฟเฟอร์ในหน่วยความจำ (รีเซ็ตเมื่อรีสตาร์ท) ใช้","liveMonitorDescriptionSuffix":"หรือการเรียก API ภายนอกเพื่อสร้างเหตุการณ์"},"usage":{"title":"การใช้งาน","loggerTab":"คนตัดไม้","proxyTab":"หนังสือมอบฉันทะ","budgetManagement":"การจัดการงบประมาณ","budgetSaved":"บันทึกขีดจำกัดงบประมาณแล้ว","budgetSaveFailed":"ไม่สามารถบันทึกงบประมาณได้","loadingBudgetData":"กำลังโหลดข้อมูลงบประมาณ...","noApiKeysTitle":"ไม่มีคีย์ API","noApiKeysDescription":"เพิ่มคีย์ API ก่อนเพื่อตั้งค่าขีดจำกัดงบประมาณ","apiKey":"คีย์ API","todaysSpend":"การใช้จ่ายวันนี้","thisMonth":"เดือนนี้","setLimits":"ตั้งค่าขีดจำกัด","dailyLimitUsd":"ขีดจำกัดรายวัน (USD)","monthlyLimitUsd":"ขีดจำกัดรายเดือน (USD)","warningThresholdPercent":"เกณฑ์การเตือน (%)","dailyLimitPlaceholder":"เช่น 5.00 น","monthlyLimitPlaceholder":"เช่น 50.00 น","warningThresholdPlaceholder":"80","saveLimits":"บันทึกขีดจำกัด","budgetOk":"งบประมาณตกลง — เหลือ {remaining}","budgetExceeded":"เกินงบประมาณ — คำขออาจถูกบล็อก","totalRequests":"คำขอทั้งหมด","noDataYet":"ยังไม่มีข้อมูล","latency":"เวลาแฝง","latencyP50":"หน้า 50","latencyP95":"หน้า 95","latencyP99":"หน้า 99","promptCache":"แคชพร้อมท์","systemHealth":"สุขภาพของระบบ","entries":"รายการ","activeCount":"{count} ใช้งานอยู่","openCircuitBreakersDetected":"ตรวจพบเบรกเกอร์วงจรเปิด","hitRate":"อัตราการเข้าชม","hitsMisses":"ฮิต / พลาด","circuitBreakers":"เซอร์กิตเบรกเกอร์","lockedIPs":"IP ที่ถูกล็อค","lockoutsAutoRefreshHint":"การล็อคขีดจำกัดอัตราต่อรุ่น • รีเฟรชอัตโนมัติ 10 วินาที","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} เหลือแล้ว","howItWorks":"มันทำงานอย่างไร","howItWorksSubtitle":"เรียนรู้ว่าการประเมินผลตรวจสอบการตอบสนอง LLM ของคุณอย่างไร","define":"กำหนด","defineStepDescription":"สร้างกรณีทดสอบพร้อมข้อความแจ้งอินพุตและเกณฑ์ผลลัพธ์ที่คาดหวังโดยใช้กลยุทธ์ เช่น ประกอบด้วย regex หรือการจับคู่แบบตรงทั้งหมด","run":"วิ่ง","runStepDescription":"ดำเนินการกรณีทดสอบกับตำแหน่งข้อมูล LLM ของคุณผ่าน OmniRoute แต่ละกรณีจะถูกส่งเป็นคำขอ API จริง","evaluate":"ประเมินผล","evaluateStepDescription":"คำตอบจะถูกเปรียบเทียบกับเกณฑ์ที่คาดหวัง ดูผ่าน/ไม่ผ่านสำหรับแต่ละกรณีพร้อมตัววัดเวลาแฝงและข้อเสนอแนะโดยละเอียด","evalSuites":"ห้องประเมินผล","evalSuitesHint":"คลิกชุดเพื่อดูกรณีทดสอบ จากนั้นเรียกใช้เพื่อประเมินตำแหน่งข้อมูล LLM ของคุณ","evalsLoading":"กำลังโหลดห้องสวีท eval...","noEvalSuitesFound":"ไม่พบห้องสวีท Eval","noEvalSuitesDescription":"ชุด Eval สามารถกำหนดได้ผ่าน API หรือในโค้ด พวกเขาทดสอบผลลัพธ์ของโมเดลกับผลลัพธ์ที่คาดหวังโดยใช้กลยุทธ์ต่างๆ เช่น ประกอบด้วย regex การจับคู่แบบตรงทั้งหมด และฟังก์ชันที่กำหนดเอง","columnCase":"กรณี","columnStatus":"สถานะ","columnLatency":"เวลาแฝง","columnDetails":"รายละเอียด","columnModel":"รุ่น","columnStrategy":"กลยุทธ์","columnExpected":"คาดว่า","statsSuites":"ห้องสวีท","statsTestCases":"กรณีทดสอบ","statsModels":"โมเดล","statsCoverage":"ความคุ้มครอง","statsStrategiesCount":"{count} กลยุทธ์","evaluationStrategies":"กลยุทธ์การประเมินผล","modelsUnderTest":"รุ่นภายใต้การทดสอบ","searchSuitesPlaceholder":"ค้นหาห้องชุด...","passSuffix":"ผ่าน","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"วิ่งเอวาล","runningProgress":"กำลังรัน {current}/{total}...","passRate":"อัตราการผ่าน","summaryBreakdown":"{passed} ผ่านไป · {failed} ล้มเหลว · รวม {total}","passedIconLabel":"✅ผ่าน","failedIconLabel":"❌ล้มเหลว","detailsContains":"ประกอบด้วย: \\"{term}\\"","detailsRegex":"Regex: {pattern}","detailsExpected":"ต้องการ: \\"{expected}\\"","noResultsYet":"ยังไม่มีผลลัพธ์","testCasesCount":"กรณีทดสอบ ({count})","noTestCasesDefined":"ไม่มีการกำหนดกรณีทดสอบ","runEvalHint":"คลิก \\"เรียกใช้การประเมิน\\" เพื่อดำเนินการทุกกรณีกับตำแหน่งข้อมูล LLM ของคุณ การทดสอบแต่ละครั้งจะส่งคำขอจริงผ่าน OmniRoute","notifyNoTestCases":"ไม่มีกรณีทดสอบที่กำหนดไว้สำหรับชุดนี้","notifyAllCasesPassed":"{total} เคสทั้งหมดผ่าน ✅","notifySomeCasesFailed":"{passed}/{total} ผ่านไป {failed} ล้มเหลว","notifyEvalRunFailed":"การเรียกใช้การประเมินล้มเหลว","notifyEvalTitle":"คะแนน: {name}","modelEvals":"การประเมินแบบจำลอง","evalsHeroDescription":"ทดสอบและตรวจสอบตำแหน่งข้อมูล LLM ของคุณโดยเรียกใช้ชุดการประเมินที่กำหนดไว้ล่วงหน้า แต่ละชุดมีกรณีทดสอบที่ส่งข้อความแจ้งจริงผ่าน OmniRoute และเปรียบเทียบการตอบสนองกับเกณฑ์ที่คาดหวัง — ช่วยให้คุณตรวจจับการถดถอย เปรียบเทียบแบบจำลอง และรับประกันคุณภาพการตอบสนองระหว่างผู้ให้บริการ","qualityValidation":"การตรวจสอบคุณภาพ","modelComparison":"การเปรียบเทียบแบบจำลอง","regressionDetection":"การตรวจจับการถดถอย","latencyBenchmarks":"เกณฑ์มาตรฐานความหน่วง","modelLockouts":"การล็อคโมเดล","noLockouts":"ไม่มีโมเดลที่ถูกล็อคอยู่ในขณะนี้","activeSessions":"เซสชันที่ใช้งานอยู่","noSessions":"ไม่มีเซสชันที่ใช้งานอยู่","sessionsHint":"เซสชันปรากฏเป็นคำขอที่ไหลผ่านพร็อกซี","sessionsTrackedHint":"ติดตามผ่านการร้องขอลายนิ้วมือ • รีเฟรชอัตโนมัติ 5 วินาที","session":"เซสชัน","age":"อายุ","requests":"คำขอ","connection":"การเชื่อมต่อ","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}วินาที","durationMinutesShort":"{value}ม","durationHoursShort":"{value}ชม","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"ข้อจำกัดของผู้ให้บริการ","noProviders":"ไม่มีผู้ให้บริการที่เชื่อมต่อ","connectProvidersForQuota":"เชื่อมต่อกับผู้ให้บริการด้วย OAuth เพื่อติดตามขีดจำกัดโควต้า API และการใช้งานของคุณ","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"(กรองจาก {count})","autoRefresh":"รีเฟรชอัตโนมัติ","refreshAll":"รีเฟรชทั้งหมด","loadingQuotas":"กำลังโหลด...","account":"บัญชี","modelQuotas":"โควต้าโมเดล","lastUsed":"ใช้ล่าสุด","actions":"การดำเนินการ","refreshQuota":"รีเฟรชโควต้า","today":"วันนี้","tomorrow":"พรุ่งนี้","dayTimeFormat":"{day}, {time}","inDuration":"ใน {duration}","notApplicable":"ไม่มี","rawPlanWithValue":"แผนดิบ: {plan}","noPlanFromProvider":"ไม่มีแผนจากผู้ให้บริการ","noQuotaData":"ไม่มีข้อมูลโควต้า","ungrouped":"Ungrouped","viewFlat":"Flat","viewByEnvironment":"By Environment","noQuotaDataAvailable":"ไม่มีข้อมูลโควต้า","noAccountsForTierFilter":"ไม่พบบัญชีสำหรับตัวกรองระดับ","tierAll":"ทั้งหมด","tierEnterprise":"องค์กร","tierTeam":"ทีม","tierBusiness":"ธุรกิจ","tierUltra":"อัลตร้า","tierPro":"โปร","tierPlus":"บวก","tierFree":"ฟรี","tierUnknown":"ไม่ทราบ"},"modals":{"waitingAuth":"รอการอนุญาต","verificationUrl":"URL การยืนยัน","yourCode":"รหัสของคุณ","remoteAccess":"การเข้าถึงระยะไกล:","connectedSuccess":"เชื่อมต่อสำเร็จ!","connectionFailed":"การเชื่อมต่อล้มเหลว","chooseAuthMethod":"เลือกวิธีการรับรองความถูกต้องของคุณ:","awsBuilderId":"รหัสตัวสร้าง AWS","awsIamIdentity":"ศูนย์ข้อมูลประจำตัว AWS IAM","googleAccount":"บัญชี Google","githubAccount":"บัญชี GitHub","importToken":"นำเข้าโทเค็น","pasteToken":"วางโทเค็นการรีเฟรชจาก Kiro IDE","awsRegion":"ภูมิภาค AWS","autoDetecting":"กำลังตรวจจับโทเค็นอัตโนมัติ...","readingFromCache":"อ่านจากแคช AWS SSO","readingFromCursor":"อ่านจากฐานข้อมูล Cursor IDE","initializing":"กำลังเริ่มต้น...","pricingConfig":"การกำหนดค่าราคา","loadingPricing":"กำลังโหลดข้อมูลราคา...","pricingRatesFormat":"รูปแบบอัตราราคา","noPricingData":"ไม่มีข้อมูลราคา","noModelsFound":"ไม่พบรุ่น"},"loggers":{"allProviders":"ผู้ให้บริการทั้งหมด","allModels":"ทุกรุ่น","allAccounts":"บัญชีทั้งหมด","allApiKeys":"คีย์ API ทั้งหมด","allTypes":"ทุกประเภท","allLevels":"ทุกระดับ","modelAZ":"รุ่น A-Z","modelZA":"รุ่น Z-A","loadingLogs":"กำลังโหลดบันทึก...","loadingProxyLogs":"กำลังโหลดบันทึกพร็อกซี...","noLogEntries":"ไม่พบรายการบันทึก","noPayloadData":"ไม่มีข้อมูลเพย์โหลดสำหรับรายการบันทึกนี้","proxyEvent":"เหตุการณ์พร็อกซี","proxy":"หนังสือมอบฉันทะ","level":"ระดับ","directNative":"โดยตรง (เนทีฟ)","combo":"คอมโบ","inputTokens":"ฉัน:","outputTokens":"โอ้:"},"stats":{"usageOverview":"ภาพรวมการใช้งาน","outputTokens":"โทเค็นเอาท์พุต","totalCost":"ต้นทุนรวม","usageByModel":"การใช้งานตามรุ่น","usageByAccount":"การใช้งานตามบัญชี","failedToLoad":"โหลดสถิติการใช้งานไม่สำเร็จ","tokenHealth":"โทเค็นสุขภาพ","totalOAuth":"OAuth ทั้งหมด","healthy":"ดีต่อสุขภาพ","warning":"คำเตือน","errored":"เกิดข้อผิดพลาด","lastCheck":"ตรวจสอบครั้งสุดท้าย","noData":"ไม่มีข้อมูล","share":"แบ่งปัน","unableToLoad":"ไม่สามารถโหลดเมตริกของระบบได้","product":"สินค้า","resources":"ทรัพยากร","company":"บริษัท"},"auth":{"welcome":"ยินดีต้อนรับ","signIn":"เข้าสู่ระบบ","enterPassword":"ป้อนรหัสผ่านของคุณเพื่อดำเนินการต่อ","password":"รหัสผ่าน","unifiedProxy":"พร็อกซี AI API แบบรวม","unifiedAiApiProxy":"พร็อกซี AI API แบบรวม","unifiedAiApiProxyDesc":"กำหนดเส้นทางคำขอไปยังผู้ให้บริการ AI หลายรายผ่านจุดสิ้นสุดเดียว โหลดบาลานซ์ การเฟลโอเวอร์ และการติดตามการใช้งานในตัว","passwordNotEnabled":"ไม่ได้เปิดใช้งานการป้องกันด้วยรหัสผ่าน","loading":"กำลังโหลด...","invalidPassword":"รหัสผ่านไม่ถูกต้อง","errorOccurredRetry":"เกิดข้อผิดพลาด โปรดลองอีกครั้ง","configureInstance":"มากำหนดค่าอินสแตนซ์ OmniRoute ของคุณกันดีกว่า","runOnboardingWizard":"เรียกใช้ตัวช่วยสร้างการเริ่มต้นใช้งานเพื่อตั้งค่ารหัสผ่านของคุณและเชื่อมต่อกับผู้ให้บริการ AI รายแรกของคุณ","startOnboarding":"เริ่มการเริ่มต้นใช้งาน","secureYourInstance":"รักษาความปลอดภัยให้กับอินสแตนซ์ของคุณ","setPasswordDescription":"ตั้งรหัสผ่านเพื่อปกป้องแดชบอร์ดของคุณและรักษาความปลอดภัยจุดสิ้นสุด API ของคุณจากการเข้าถึงที่ไม่ได้รับอนุญาต","configurePassword":"กำหนดค่ารหัสผ่าน","continue":"ดำเนินการต่อ","windowWillClose":"หน้าต่างนี้จะปิดโดยอัตโนมัติ...","closeTabNow":"คุณสามารถปิดแท็บนี้ได้ทันที","copyUrlManual":"โปรดคัดลอก URL จากแถบที่อยู่และวางลงในแอปพลิเคชัน","accessDeniedDescription":"คุณไม่ได้รับอนุญาตให้เข้าถึงทรัพยากรนี้ ตรวจสอบคีย์ API ของคุณหรือติดต่อผู้ดูแลระบบ","goToDashboard":"ไปที่แดชบอร์ด","featureMultiProviderTitle":"ผู้ให้บริการหลายราย","featureMultiProviderDesc":"OpenAI, มานุษยวิทยา, Google และอื่นๆ","featureLoadBalancingTitle":"โหลดบาลานซ์","featureLoadBalancingDesc":"กระจายคำขออย่างชาญฉลาด","featureUsageTrackingTitle":"การติดตามการใช้งาน","featureUsageTrackingDesc":"ตรวจสอบต้นทุนและโทเค็น","resetPassword":"รีเซ็ตรหัสผ่าน","resetDescription":"เลือกวิธีในการกู้คืนการเข้าถึงแดชบอร์ดของคุณ","stopServer":"หยุดเซิร์ฟเวอร์ OmniRoute","processing":"กำลังประมวลผล...","pleaseWait":"โปรดรอในขณะที่เราดำเนินการอนุมัติให้เสร็จสิ้น","authSuccess":"การอนุญาตสำเร็จ!","copyUrl":"คัดลอก URL นี้","accessDenied":"การเข้าถึงถูกปฏิเสธ","methodCliTitle":"วิธีที่ 1: รีเซ็ต CLI","methodCliDescription":"รันคำสั่งต่อไปนี้บนเซิร์ฟเวอร์ที่ OmniRoute กำลังทำงานอยู่:","methodCliHint":"สิ่งนี้จะแจ้งให้คุณตั้งรหัสผ่านใหม่ เซิร์ฟเวอร์จะต้องถูกหยุดก่อน","methodManualTitle":"วิธีที่ 2: รีเซ็ตด้วยตนเอง","methodManualDescription":"ลบรหัสผ่านออกจากฐานข้อมูลและตั้งรหัสผ่านใหม่เมื่อเริ่มต้นระบบ:","setPasswordInYour":"ตั้งรหัสผ่านใหม่ในของคุณ","fileLabelSuffix":"ไฟล์:","newPasswordPlaceholder":"your_new_password","deleteSettingsFile":"ลบ","orRemovePasswordHashField":"หรือลบฟิลด์รหัสผ่านแฮช","restartServerWithNewPassword":"รีสตาร์ทเซิร์ฟเวอร์ - จะใช้รหัสผ่านใหม่","backToLogin":"กลับไปที่เข้าสู่ระบบ","forgotPassword":"ลืมรหัสผ่าน?","defaultPasswordHint":"Default password: 123456 (unless INITIAL_PASSWORD was set)","Authorization":"การอนุญาต","Content-Disposition":"การจัดการเนื้อหา","waitingForAuthorization":"กำลังรอการอนุญาต...","waitingForGoogleAuthorization":"กำลังรอการอนุญาตจาก Google...","waitingForOpenAIAuthorization":"กำลังรอการอนุญาต OpenAI...","waitingForAntigravityAuthorization":"กำลังรอการอนุญาตต้านแรงโน้มถ่วง...","waitingForIFlowAuthorization":"กำลังรอการอนุญาตจาก iFlow...","exchangingCodeForTokens":"การเปลี่ยนรหัสเป็นโทเค็น..."},"landing":{"brandName":"OmniRoute","navigateHome":"นำทางไปที่บ้าน","toggleMenu":"สลับเมนู","featuresLink":"คุณสมบัติ","docsLink":"เอกสาร","github":"GitHub","versionLive":"v1.0 ใช้งานได้แล้ว","oneEndpoint":"จุดสิ้นสุดหนึ่งสำหรับ","allProviders":"ผู้ให้บริการ AI ทั้งหมด","heroDescription":"พร็อกซีปลายทาง AI พร้อมเว็บแดชบอร์ด - พอร์ต JavaScript ของ CLIProxyAPI ทำงานได้อย่างราบรื่นกับ Claude Code, OpenAI Codex, Cline, RooCode และเครื่องมือ CLI อื่นๆ","getStarted":"เริ่มต้นเลย","viewOnGithub":"ดูบน GitHub","powerfulFeatures":"คุณสมบัติอันทรงพลัง","featuresSubtitle":"ทุกสิ่งที่คุณต้องการในการจัดการโครงสร้างพื้นฐาน AI ของคุณในที่เดียว สร้างขึ้นเพื่อรองรับขนาด","featureUnifiedEndpointTitle":"จุดสิ้นสุดแบบรวม","featureUnifiedEndpointDesc":"เข้าถึงผู้ให้บริการทั้งหมดผ่าน URL API มาตรฐานเดียว","featureEasySetupTitle":"ติดตั้งง่าย","featureEasySetupDesc":"เริ่มต้นใช้งานภายในไม่กี่นาทีด้วยคำสั่ง npx","featureModelFallbackTitle":"โมเดลสำรอง","featureModelFallbackDesc":"สลับผู้ให้บริการโดยอัตโนมัติเมื่อเกิดความล้มเหลวหรือเวลาแฝงสูง","featureUsageTrackingTitle":"การติดตามการใช้งาน","featureUsageTrackingDesc":"การวิเคราะห์โดยละเอียดและการตรวจสอบต้นทุนในทุกรุ่น","featureOAuthApiKeysTitle":"OAuth และคีย์ API","featureOAuthApiKeysDesc":"จัดการข้อมูลรับรองอย่างปลอดภัยในห้องนิรภัยเดียว","featureCloudSyncTitle":"การซิงค์บนคลาวด์","featureCloudSyncDesc":"ซิงค์การกำหนดค่าของคุณระหว่างอุปกรณ์ต่างๆ ได้ทันที","featureCliSupportTitle":"การสนับสนุน CLI","featureCliSupportDesc":"ใช้งานได้กับ Claude Code, Codex, Cline, Cursor และอื่นๆ","featureDashboardTitle":"แดชบอร์ด","featureDashboardDesc":"แดชบอร์ดแบบภาพสำหรับการวิเคราะห์ปริมาณข้อมูลแบบเรียลไทม์","howItWorks":"OmniRoute ทำงานอย่างไร","howItWorksDescription":"ข้อมูลจะไหลอย่างราบรื่นจากแอปพลิเคชันของคุณผ่านเลเยอร์การกำหนดเส้นทางอัจฉริยะของเราไปยังผู้ให้บริการที่ดีที่สุดสำหรับงาน","howItWorksStep1Title":"1. CLI และ SDK","howItWorksStep1Description":"คำขอของคุณเริ่มต้นจากเครื่องมือที่คุณชื่นชอบหรือ SDK แบบรวมของเรา เพียงเปลี่ยน URL ฐาน","howItWorksStep2Title":"2. ศูนย์กลาง OmniRoute","howItWorksStep2Description":"กลไกของเราจะวิเคราะห์พร้อมท์ ตรวจสอบความสมบูรณ์ของผู้ให้บริการ และเส้นทางเพื่อดูเวลาแฝงหรือต้นทุนที่ต่ำที่สุด","howItWorksStep3Title":"3. ผู้ให้บริการ AI","howItWorksStep3Description":"คำขอนี้ดำเนินการโดย OpenAI, Anthropic, Gemini หรืออื่นๆ ทันที","getStartedIn30Seconds":"เริ่มต้นใน 30 วินาที","getStartedDescription":"ติดตั้ง OmniRoute กำหนดค่าผู้ให้บริการของคุณผ่านแดชบอร์ดเว็บ และเริ่มกำหนดเส้นทางคำขอ AI","installOmniRoute":"ติดตั้ง OmniRoute","installStepDescription":"รันคำสั่ง npx เพื่อเริ่มเซิร์ฟเวอร์ทันที","openDashboard":"เปิดแดชบอร์ด","openDashboardStepDescription":"กำหนดค่าผู้ให้บริการและคีย์ API ผ่านทางเว็บอินเตอร์เฟส","routeRequests":"คำขอเส้นทาง","routeRequestsStepDescription":"ชี้เครื่องมือ CLI ของคุณไปที่ {endpoint}","terminal":"สถานีปลายทาง","copy":"คัดลอก","copied":"✓ คัดลอกแล้ว","startingOmniRoute":"กำลังเริ่ม OmniRoute...","serverRunningOnLabel":"เซิร์ฟเวอร์กำลังทำงานอยู่","dashboardLabel":"แดชบอร์ด","readyToRoute":"พร้อมลุย! ✓","configureProvidersNote":"แปลก กำหนดค่าผู้ให้บริการในแดชบอร์ดหรือใช้ตัวแปรสภาพแวดล้อม","dataLocation":"ตำแหน่งข้อมูล:","dataLocationMacLinux":" macOS/ลินุกซ์:","dataLocationWindows":" หน้าต่าง:","product":"สินค้า","dashboardLink":"แดชบอร์ด","changelog":"บันทึกการเปลี่ยนแปลง","resources":"ทรัพยากร","documentation":"เอกสารประกอบ","npm":"เอ็นพีเอ็ม","legal":"กฎหมาย","mitLicense":"ใบอนุญาตเอ็มไอที","footerTagline":"จุดสิ้นสุดแบบรวมสำหรับการสร้าง AI เชื่อมต่อ กำหนดเส้นทาง และจัดการผู้ให้บริการ AI ของคุณได้อย่างง่ายดาย","copyright":"© {year} OmniRoute สงวนลิขสิทธิ์.","flowToolClaudeCode":"คล็อด โค้ด","flowToolOpenAICodex":"OpenAI Codex","flowToolCline":"ไคลน์","flowToolCursor":"เคอร์เซอร์","flowProviderOpenAI":"OpenAI","flowProviderAnthropic":"มานุษยวิทยา","flowProviderGemini":"ราศีเมถุน","flowProviderGithubCopilot":"นักบิน GitHub","interactiveDiagram":"แผนภาพเชิงโต้ตอบที่มองเห็นได้บนเดสก์ท็อป","ctaTitle":"พร้อมที่จะลดความซับซ้อนของโครงสร้างพื้นฐาน AI ของคุณแล้วหรือยัง?","ctaDescription":"เข้าร่วมกับนักพัฒนาที่กำลังปรับปรุงการบูรณาการ AI กับ OmniRoute โอเพ่นซอร์สและเริ่มต้นได้ฟรี","startFree":"เริ่มฟรี","readDocumentation":"อ่านเอกสารประกอบ"},"docs":{"title":"เอกสารประกอบ","quickStart":"เริ่มต้นอย่างรวดเร็ว","features":"คุณสมบัติ","supportedProviders":"ผู้ให้บริการที่รองรับ","supportedProvidersToc":"ผู้ให้บริการ","commonUseCases":"กรณีการใช้งานทั่วไป","clientCompatibility":"ความเข้ากันได้ของไคลเอ็นต์","protocolsToc":"Protocols","apiReference":"การอ้างอิง API","method":"วิธีการ","path":"เส้นทาง","notes":"หมายเหตุ","modelPrefixes":"คำนำหน้าโมเดล","prefix":"คำนำหน้า","troubleshooting":"การแก้ไขปัญหา","supportsChat":"รองรับทั้งปลายทางการแชทและการตอบกลับ","oauthAutoRefresh":"การเชื่อมต่อ OAuth พร้อมการรีเฟรชโทเค็นอัตโนมัติ","fullStreaming":"รองรับการสตรีมมิ่งเต็มรูปแบบสำหรับทุกรุ่น","docsLabel":"เอกสาร","docsHeroDescription":"เกตเวย์ AI สำหรับ LLM ที่มีผู้ให้บริการหลายราย จุดสิ้นสุดเดียวสำหรับ OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor และผู้ให้บริการอีกกว่า 20 ราย","openDashboard":"เปิดแดชบอร์ด","endpointPage":"หน้าจุดสิ้นสุด","github":"GitHub","reportIssue":"รายงานปัญหา","onThisPage":"บนหน้านี้","documentationVersion":"เอกสารประกอบ - v{version}","quickStartStep1Title":"1. ติดตั้งและรัน","quickStartStep1Prefix":"วิ่ง","quickStartStep1Middle":"หรือโคลนจาก GitHub แล้วรัน","quickStartStep2Title":"2. สร้างคีย์ API","quickStartStep2Text":"ไปที่จุดสิ้นสุด -> คีย์ที่ลงทะเบียน สร้างหนึ่งคีย์ต่อสภาพแวดล้อม","quickStartStep3Title":"3. เชื่อมต่อผู้ให้บริการ","quickStartStep3Text":"เพิ่มบัญชีผู้ให้บริการผ่านการเข้าสู่ระบบ OAuth, คีย์ API หรือการเชื่อมต่ออัตโนมัติระดับฟรี","quickStartStep4Title":"4. ตั้งค่า URL ฐานลูกค้า","quickStartStep4Prefix":"ชี้ IDE หรือไคลเอ็นต์ API ของคุณไปที่","quickStartStep4Suffix":"ใช้คำนำหน้าผู้ให้บริการ เป็นต้น","featureRoutingTitle":"การกำหนดเส้นทางผู้ให้บริการหลายราย","featureRoutingText":"กำหนดเส้นทางคำขอไปยังผู้ให้บริการ AI กว่า 30 รายผ่านจุดสิ้นสุดที่เข้ากันได้กับ OpenAI จุดเดียว รองรับ API การแชท การตอบกลับ เสียง และรูปภาพ","featureCombosTitle":"คอมโบและการปรับสมดุล","featureCombosText":"สร้างโมเดลคอมโบด้วยห่วงโซ่ทางเลือกและกลยุทธ์การปรับสมดุล: การหมุนเวียนแบบวนซ้ำ ลำดับความสำคัญ สุ่ม ใช้น้อยที่สุด และปรับต้นทุนให้เหมาะสม","featureUsageTitle":"การใช้งานและการติดตามต้นทุน","featureUsageText":"การนับโทเค็นแบบเรียลไทม์ การคำนวณต้นทุนต่อผู้ให้บริการ/โมเดล และรายละเอียดการใช้งานโดยละเอียดตามคีย์ API และบัญชี","featureAnalyticsTitle":"แดชบอร์ดการวิเคราะห์","featureAnalyticsText":"การวิเคราะห์ด้วยภาพพร้อมแผนภูมิสำหรับคำขอ โทเค็น ข้อผิดพลาด เวลาแฝง ต้นทุน และความนิยมของโมเดลในช่วงเวลาหนึ่ง","featureHealthTitle":"การตรวจติดตามสุขภาพ","featureHealthText":"การตรวจสอบสุขภาพแบบเรียลไทม์ สถานะของผู้ให้บริการ สถานะเซอร์กิตเบรกเกอร์ และการตรวจจับขีดจำกัดอัตราอัตโนมัติพร้อมการถอยกลับแบบเอ็กซ์โพเนนเชียล","featureCliTitle":"เครื่องมือ CLI","featureCliText":"จัดการการกำหนดค่า IDE, ส่งออก/นำเข้าข้อมูลสำรอง, ค้นหาโปรไฟล์ Codex และกำหนดการตั้งค่าจากแดชบอร์ด","featureSecurityTitle":"ความปลอดภัยและนโยบาย","featureSecurityText":"การรับรองความถูกต้องของคีย์ API, การกรอง IP, การป้องกันการแทรกทันที, นโยบายโดเมน, การจัดการเซสชัน และการบันทึกการตรวจสอบ","featureCloudSyncTitle":"การซิงค์บนคลาวด์","featureCloudSyncText":"ซิงค์การกำหนดค่าของคุณกับ Cloudflare Workers เพื่อการเข้าถึงระยะไกลด้วยข้อมูลประจำตัวที่เข้ารหัสและการเฟลโอเวอร์อัตโนมัติ","providersAcrossConnectionTypes":"{count} ผู้ให้บริการผ่านการเชื่อมต่อสามประเภท","manageProviders":"จัดการผู้ให้บริการ","providersCount":"{count} ผู้ให้บริการ","providerTypeFree":"ฟรีเทียร์","providerTypeOAuth":"OAuth","providerTypeApiKey":"คีย์ API","useCaseSingleEndpointTitle":"จุดสิ้นสุดเดียวสำหรับผู้ให้บริการหลายราย","useCaseSingleEndpointText":"ชี้ไคลเอ็นต์ไปที่ URL ฐานเดียวและกำหนดเส้นทางตามคำนำหน้าโมเดล (เช่น gh/, cc/, kr/, openai/)","useCaseFallbackTitle":"ทางเลือกและการสลับโมเดลด้วยคอมโบ","useCaseFallbackText":"สร้างโมเดลคอมโบในแดชบอร์ดและรักษาการกำหนดค่าไคลเอนต์ให้เสถียรในขณะที่ผู้ให้บริการหมุนเวียนภายใน","useCaseUsageVisibilityTitle":"การใช้งาน ต้นทุน และการมองเห็นการแก้ไขข้อบกพร่อง","useCaseUsageVisibilityText":"ติดตามโทเค็นและค่าใช้จ่ายตามผู้ให้บริการ บัญชี และคีย์ API ในแท็บการใช้งานและการวิเคราะห์","clientCherryStudioTitle":"เชอร์รี่ สตูดิโอ","baseUrlLabel":"URL ฐาน","chatEndpointLabel":"จุดสิ้นสุดการแชท","modelRecommendationLabel":"คำแนะนำโมเดล: คำนำหน้าที่ชัดเจน","clientCodexTitle":"โมเดล Codex / GitHub Copilot","clientCodexBullet1":"ใช้รหัสรุ่นด้วย","clientCodexBullet2":"โมเดลตระกูล Codex กำหนดเส้นทางอัตโนมัติไปยัง","clientCodexBullet3":"โมเดลที่ไม่ใช่ Codex ยังคงดำเนินต่อไป","clientCursorTitle":"เคอร์เซอร์ IDE","clientCursorBullet1":"ใช้","clientCursorBullet1Suffix":"คำนำหน้าสำหรับโมเดลเคอร์เซอร์","clientCursorBullet2":"การเชื่อมต่อ OAuth - เข้าสู่ระบบจากหน้าผู้ให้บริการ","clientClaudeTitle":"คล็อดโค้ด/ต้านแรงโน้มถ่วง","clientClaudeBullet1Prefix":"ใช้","clientClaudeBullet1Middle":"(คลอดด์) หรือ","clientClaudeBullet1Suffix":"(ต้านแรงโน้มถ่วง) คำนำหน้า","protocolsTitle":"Protocols: MCP & A2A","protocolsDescription":"OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.","protocolMcpTitle":"MCP (Model Context Protocol)","protocolMcpDesc":"Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.","protocolMcpStep1":"Start MCP transport with `omniroute --mcp`.","protocolMcpStep2":"Point your MCP client to stdio transport.","protocolMcpStep3":"Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.","protocolA2aTitle":"A2A (Agent2Agent)","protocolA2aDesc":"Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.","protocolA2aStep1":"Read `/.well-known/agent.json` for agent discovery.","protocolA2aStep2":"Send `message/send` or `message/stream` requests to `POST /a2a`.","protocolA2aStep3":"Manage task lifecycle with `tasks/get` and `tasks/cancel`.","protocolTroubleshootingTitle":"Protocol Troubleshooting","protocolTroubleshooting1":"If MCP status is offline, verify the stdio process is running and heartbeat file is updating.","protocolTroubleshooting2":"If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.","protocolTroubleshooting3":"Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.","endpointChatNote":"จุดสิ้นสุดการแชทที่เข้ากันได้กับ OpenAI (ค่าเริ่มต้น)","endpointResponsesNote":"จุดสิ้นสุด API การตอบกลับ (Codex, o-series)","endpointModelsNote":"แค็ตตาล็อกโมเดลสำหรับผู้ให้บริการที่เชื่อมต่อทั้งหมด","endpointAudioNote":"การถอดเสียง (Deepgram, AssemblyAI)","endpointImagesNote":"การสร้างภาพ (NanoBanana)","endpointRewriteChatNote":"เขียนตัวช่วยใหม่สำหรับลูกค้าที่ไม่มี /v1","endpointRewriteResponsesNote":"เขียนตัวช่วยใหม่สำหรับการตอบกลับโดยไม่มี /v1","endpointRewriteModelsNote":"เขียนตัวช่วยใหม่สำหรับการค้นหาโมเดลโดยไม่มี /v1","modelPrefixesDescriptionStart":"ใช้คำนำหน้าผู้ให้บริการก่อนชื่อรุ่นเพื่อกำหนดเส้นทางไปยังผู้ให้บริการเฉพาะ ตัวอย่าง:","modelPrefixesDescriptionEnd":"เส้นทางไปยัง GitHub Copilot","provider":"ผู้ให้บริการ","type":"ประเภท","troubleshootingModelRouting":"หากไคลเอ็นต์ล้มเหลวด้วยการกำหนดเส้นทางโมเดล ให้ใช้ผู้ให้บริการ/โมเดลที่ชัดเจน (เช่น gh/gpt-5.1-codex)","troubleshootingAmbiguousModels":"หากคุณได้รับข้อผิดพลาดโมเดลที่ไม่ชัดเจน ให้เลือกคำนำหน้าผู้ให้บริการแทนรหัสโมเดลเปล่า","troubleshootingCodexFamily":"สำหรับโมเดลตระกูล GitHub Codex ให้เก็บโมเดลเป็น gh/codex-model; เราเตอร์เลือก / ตอบสนองโดยอัตโนมัติ","troubleshootingTestConnection":"ใช้แดชบอร์ด > ผู้ให้บริการ > ทดสอบการเชื่อมต่อ ก่อนการทดสอบจาก IDE หรือไคลเอนต์ภายนอก","troubleshootingCircuitBreaker":"หากผู้ให้บริการแสดงเซอร์กิตเบรกเกอร์เปิดอยู่ ให้รอคูลดาวน์หรือตรวจสอบหน้าสุขภาพเพื่อดูรายละเอียด","troubleshootingOAuth":"สำหรับผู้ให้บริการ OAuth ให้ตรวจสอบสิทธิ์อีกครั้งหากโทเค็นหมดอายุ ตรวจสอบตัวบ่งชี้สถานะบัตรผู้ให้บริการ","managementApiReference":"Management API Reference","managementApiDescription":"Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.","mgmtProxiesListNote":"List saved proxy registry items (supports pagination).","mgmtProxiesCreateNote":"Create a reusable proxy item in the registry.","mgmtProxiesHealthNote":"Get 24h/rolling health metrics per saved proxy from proxy logs.","mgmtProxiesBulkAssignNote":"Assign or clear one proxy across many scope IDs in one request.","mgmtAssignmentsListNote":"List proxy assignments by scope, scope_id, or proxy_id.","mgmtAssignmentsUpdateNote":"Assign or clear proxy for global/provider/account/combo scope.","mgmtLegacyMigrationNote":"Import legacy proxyConfig maps into registry assignments.","endpointSpeechNote":"การสร้างข้อความเป็นคำพูด (ElevenLabs, OpenAI TTS)","endpointEmbeddingsNote":"การสร้างการฝังข้อความ (OpenAI, Cohere, Voyage)"},"legal":{"privacyPolicy":"นโยบายความเป็นส่วนตัว","termsOfService":"ข้อกำหนดในการให้บริการ","providerConfigurations":"การกำหนดค่าของผู้ให้บริการ","apiKeys":"คีย์ API","usageLogs":"บันทึกการใช้งาน","applicationSettings":"การตั้งค่าแอปพลิเคชัน","viewExportAnalytics":"ดูและส่งออกการวิเคราะห์การใช้งาน","clearHistory":"ล้างประวัติการใช้งานได้ตลอดเวลา","configureRetention":"กำหนดค่านโยบายการเก็บรักษาบันทึก","backupRestore":"สำรองและกู้คืนฐานข้อมูลของคุณ","privacyMetadataTitle":"นโยบายความเป็นส่วนตัว | OmniRoute","privacyMetadataDescription":"นโยบายความเป็นส่วนตัวสำหรับเราเตอร์พร็อกซี OmniRoute AI API","termsMetadataTitle":"เงื่อนไขการให้บริการ | OmniRoute","termsMetadataDescription":"ข้อกำหนดในการให้บริการสำหรับเราเตอร์พร็อกซี OmniRoute AI API","backToHome":"กลับบ้าน","lastUpdated":"อัปเดตล่าสุด: {date}","policyLastUpdatedDate":"13 กุมภาพันธ์ 2569","listSeparator":"-","questionsVisit":"มีคำถาม? เยี่ยมชมของเรา","githubRepository":"พื้นที่เก็บข้อมูล GitHub","privacySection1Title":"1. สถาปัตยกรรมท้องถิ่นแห่งแรก","privacySection1Text":"OmniRoute ได้รับการออกแบบให้เป็นแอปพลิเคชั่นแรกในท้องถิ่น การประมวลผลและการจัดเก็บข้อมูลทั้งหมดเกิดขึ้นบนเครื่องของคุณทั้งหมด ไม่มีเซิร์ฟเวอร์ส่วนกลางที่รวบรวมข้อมูลของคุณ","privacySection2Title":"2. ข้อมูลที่เราจัดเก็บ","privacyDataStoredIn":"ข้อมูลต่อไปนี้ถูกจัดเก็บไว้ในเครื่อง","privacyDataProviderConfigurationsDesc":"URL การเชื่อมต่อ ประเภทผู้ให้บริการ และการตั้งค่าลำดับความสำคัญ","privacyDataApiKeysDesc":"เข้ารหัสและจัดเก็บไว้ในเครื่องเพื่อตรวจสอบสิทธิ์กับผู้ให้บริการ AI","privacyDataUsageLogsDesc":"จำนวนคำขอ การใช้โทเค็น ชื่อโมเดล การประทับเวลา และเวลาตอบสนอง","privacyDataApplicationSettingsDesc":"การตั้งค่าธีม กลยุทธ์การกำหนดเส้นทาง และการกำหนดค่าคอมโบ","privacySection3Title":"3. ไม่มีการวัดและส่งข้อมูลทางไกล","privacySection3Text":"OmniRoute ไม่รวบรวมการวัดและส่งข้อมูลทางไกล การวิเคราะห์ หรือรายงานข้อขัดข้อง ไม่มีการส่งข้อมูลถึงเราหรือบุคคลที่สาม รูปแบบการใช้งาน การเรียก API และการกำหนดค่าของคุณยังคงเป็นส่วนตัวโดยสมบูรณ์","privacySection4Title":"4. ผู้ให้บริการ AI บุคคลที่สาม","privacySection4Text":"เมื่อคุณทำการเรียก API ผ่าน OmniRoute คำขอของคุณจะถูกส่งต่อไปยังผู้ให้บริการ AI ที่คุณกำหนดค่าไว้ (เช่น OpenAI, Anthropic, Google) ผู้ให้บริการเหล่านี้มีนโยบายความเป็นส่วนตัวของตนเองที่ควบคุมวิธีจัดการข้อมูลของคุณ โปรดตรวจสอบ:","privacyOpenAiPolicy":"นโยบายความเป็นส่วนตัวของ OpenAI","privacyAnthropicPolicy":"นโยบายความเป็นส่วนตัวด้านมานุษยวิทยา","privacyGooglePolicy":"นโยบายความเป็นส่วนตัวของ Google","privacySection5Title":"5. Cloud Sync (ไม่บังคับ)","privacySection5Text":"หากคุณเปิดใช้งานคุณสมบัติเสริมการซิงค์บนคลาวด์ การกำหนดค่าผู้ให้บริการและคีย์ API อาจถูกส่งไปยังจุดสิ้นสุดบนคลาวด์ที่กำหนดค่าไว้ คุณลักษณะนี้ถูกปิดใช้งานโดยค่าเริ่มต้น และจำเป็นต้องเลือกใช้อย่างชัดเจน","privacySection6Title":"6. การบันทึก","privacyLoggingIntro":"บันทึกคำขอสามารถกำหนดค่าได้ผ่านการตั้งค่าแดชบอร์ด คุณสามารถ:","privacySection7Title":"7. สิทธิ์ของคุณ","privacySection7TextStart":"เนื่องจากข้อมูลทั้งหมดถูกจัดเก็บไว้ในเครื่อง คุณจึงสามารถควบคุมได้อย่างเต็มที่ คุณสามารถลบข้อมูลของคุณได้ตลอดเวลาโดยการลบ","privacySection7TextEnd":"ไดเร็กทอรีหรือใช้คุณสมบัติการสำรองและกู้คืนฐานข้อมูลในแดชบอร์ด","termsSection1Title":"1. ภาพรวม","termsSection1Text":"OmniRoute เป็นเราเตอร์พร็อกซี AI API ตัวแรกในเครื่องที่ทำงานบนเครื่องของคุณทั้งหมด โดยกำหนดเส้นทางคำขอไปยังผู้ให้บริการ AI หลายรายด้วยการปรับสมดุลโหลด การเฟลโอเวอร์ และการติดตามการใช้งาน","termsSection2Title":"2. ความรับผิดชอบของผู้ใช้","termsResponsibilityApiKeys":"คุณมีหน้าที่รับผิดชอบแต่เพียงผู้เดียวในการจัดการคีย์ API และข้อมูลรับรองของคุณเองสำหรับผู้ให้บริการ AI บุคคลที่สาม (OpenAI, Anthropic, Google ฯลฯ)","termsResponsibilityCompliance":"คุณต้องปฏิบัติตามข้อกำหนดในการให้บริการของผู้ให้บริการ AI แต่ละรายซึ่งมี API ที่คุณเข้าถึงผ่าน OmniRoute","termsResponsibilitySecurity":"คุณต้องรับผิดชอบต่อความปลอดภัยของการติดตั้ง OmniRoute ในพื้นที่ของคุณ รวมถึงการตั้งรหัสผ่านและการจำกัดการเข้าถึงเครือข่าย","termsSection3Title":"3. มันทำงานอย่างไร","termsSection3Text":"OmniRoute ทำหน้าที่เป็นพร็อกซีตัวกลาง การเรียก API ที่ส่งไปยัง OmniRoute จะถูกแปลและส่งต่อไปยังผู้ให้บริการ AI ที่กำหนดค่าไว้ของคุณ OmniRoute จะไม่แก้ไขเนื้อหาคำขอหรือการตอบกลับของคุณนอกเหนือจากการแปลโปรโตคอลที่จำเป็น","termsSection4Title":"4. การจัดการข้อมูล","termsDataStoredLocally":"ข้อมูลทั้งหมดจะถูกจัดเก็บไว้ในเครื่องของคุณในฐานข้อมูล SQLite","termsNoTransmission":"OmniRoute จะไม่ส่งข้อมูลใดๆ ไปยังเซิร์ฟเวอร์ภายนอก เว้นแต่คุณจะเปิดใช้งานคุณสมบัติการซิงค์บนคลาวด์อย่างชัดเจน","termsDataLocationText":"บันทึกการใช้งาน คีย์ API และการกำหนดค่าจะถูกจัดเก็บไว้ใน","termsSection5Title":"5. ข้อจำกัดความรับผิดชอบ","termsSection5Text":"OmniRoute มีให้ \\"ตามสภาพ\\" โดยไม่มีการรับประกันใดๆ เราจะไม่รับผิดชอบต่อค่าใช้จ่ายใดๆ ที่เกิดขึ้นจากการใช้ API การหยุดชะงักของบริการ หรือการสูญหายของข้อมูล สำรองข้อมูลการกำหนดค่าของคุณไว้เสมอ","termsSection6Title":"6. โอเพ่นซอร์ส","termsSection6Text":"OmniRoute เป็นซอฟต์แวร์โอเพ่นซอร์ส คุณมีอิสระที่จะตรวจสอบ แก้ไข และแจกจ่ายภายใต้เงื่อนไขของใบอนุญาต"},"endpoints":{"tabProxy":"Endpoint Proxy","tabApiEndpoints":"API Endpoints","apiEndpointsTitle":"API Endpoints","apiEndpointsDescription":"Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.","comingSoon":"Coming Soon","plannedFeatures":"Planned Features","featureRestApi":"REST API endpoint catalog with interactive documentation","featureWebhooks":"Webhook configuration and event subscriptions","featureSwagger":"OpenAPI / Swagger spec auto-generation","featureAuth":"API key and OAuth scope management per endpoint"},"agents":{"title":"CLI Agents","description":"Discover installed CLI agents on your system. Add custom agents for auto-detection.","refresh":"Refresh","installed":"Installed","notFound":"Not Found","builtIn":"Built-in","custom":"Custom","remove":"Remove","addCustomAgent":"Add Custom Agent","addCustomAgentDesc":"Register any CLI tool for detection. It will be scanned automatically on refresh.","agentName":"Agent Name","binaryName":"Binary Name","versionCommand":"Version Command","spawnArgs":"Spawn Args","addAgent":"Add Agent","scanning":"Scanning system for CLI agents...","opencodeIntegration":"OpenCode Integration","opencodeDetected":"opencode {version} detected","opencodeDesc":"Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.","downloadConfig":"Download {file}","downloaded":"Downloaded!","setupGuideTitle":"Setup guide","openCliTools":"Open CLI Tools","setupGuideDetectCliTitle":"Detect installed CLIs","setupGuideDetectCliDesc":"Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.","setupGuideCustomAgentTitle":"Register custom binary","setupGuideCustomAgentDesc":"Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.","setupGuideCommandMissingTitle":"Fix \'command not found\'","setupGuideCommandMissingDesc":"Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh."},"autoCombo":{"title":"Auto-Combo Engine","statusNormal":"Normal","statusIncident":"Incident Mode","modePack":"Mode Pack","providerScores":"Provider Scores","noAutoCombo":"No auto-combo configured.","excludedProviders":"Excluded Providers","noExclusions":"No providers currently excluded.","factorQuota":"Quota","factorHealth":"Health","factorCost":"Cost","factorLatency":"Latency","factorTaskFit":"Task Fit","factorStability":"Stability","factorTierPriority":"Tier Priority","factorTierPriorityDesc":"Prefers accounts with higher quota tiers (Ultra/Pro over Free)","scoreFactorBreakdown":"Scoring Factors","modePackShipFast":"Ship Fast","modePackCostSaver":"Cost Saver","modePackQualityFirst":"Quality First","modePackOfflineFriendly":"Offline Friendly"},"search":{"searchQuery":"Search Query","searchResults":"Search Results","cachedResult":"Cached","searchCost":"Cost","searchTools":"Search Tools","searchToolsDesc":"Advanced search testing with provider comparison","compareProviders":"Compare Providers","rerankResults":"Rerank Results","searchHistory":"Search History","urlOverlap":"URL Overlap","noSearchProviders":"No search providers configured. Add providers in Settings.","noRerankModels":"No rerank model available","webSearch":"Web Search","provider":"Provider","searchType":"Search Type","maxResults":"Max Results","filters":"Filters","country":"Country","language":"Language","timeRange":"Time Range","includeDomains":"Include Domains","excludeDomains":"Exclude Domains","safeSearch":"Safe Search","formatted":"Formatted","rawJson":"JSON","cacheMiss":"cache miss","cacheHit":"cache hit","latency":"Latency","cost":"Cost","results":"Results","rerank":"Rerank","rerankModel":"Rerank Model","positionDelta":"Position Change","emptyState":"Send a search query to see results","safeSearchOff":"Off","safeSearchModerate":"Moderate","safeSearchStrict":"Strict","queryPlaceholder":"Enter search query...","providerAuto":"auto (cheapest)","searchTypeWeb":"web","searchTypeNews":"news","optionAny":"any","timeRangeDay":"Past day","timeRangeWeek":"Past week","timeRangeMonth":"Past month","timeRangeYear":"Past year","domainPlaceholder":"example.com","requestTimedOut":"Request timed out ({seconds}s)","networkError":"Network error"},"templateNames":{"simple-chat":"แชทง่ายๆ","streaming":"สตรีมมิ่ง","system-prompt":"พร้อมท์ระบบ","thinking":"กำลังคิด","tool-calling":"การเรียกเครื่องมือ","multi-turn":"หลายเลี้ยว"},"templateDescriptions":{"simple-chat":"เทมเพลตการแชทพื้นฐานพร้อมข้อความระบบ","streaming":"เทมเพลตสำหรับการตอบกลับแบบสตรีม","system-prompt":"เทมเพลตพร้อมแจ้งระบบแบบกำหนดเอง","thinking":"เทมเพลตพร้อมงบประมาณการใช้เหตุผล/การคิด","tool-calling":"เทมเพลตสำหรับการเรียกใช้เครื่องมือ/ฟังก์ชัน","multi-turn":"เทมเพลตสำหรับการสนทนาหลายรอบ"},"templatePayloads":{"simpleChat":{"system":"คุณเป็นผู้ช่วย AI ที่เป็นประโยชน์","userGreeting":"สวัสดี! วันนี้ฉันจะช่วยคุณได้อย่างไร?"},"streaming":{"prompt":"เขียนเรื่องราวเกี่ยวกับ"},"systemPrompt":{"question":"ความหมายของชีวิตคืออะไร?","systemInstruction":"ให้คำตอบที่รอบคอบและมีปรัชญา"},"thinking":{"question":"อธิบายการคำนวณควอนตัม"},"toolCalling":{"cityNameDescription":"ชื่อเมืองที่จะเรียกสภาพอากาศ","toolDescription":"รับสภาพอากาศปัจจุบันสำหรับสถานที่","userWeather":"สภาพอากาศในโตเกียวเป็นอย่างไร?"},"multiTurn":{"system":"คุณเป็นผู้ช่วยที่เป็นประโยชน์","assistantExample":"เรายินดีที่จะช่วยเหลือคุณในเรื่องนั้น","userInitial":"ฉันต้องการความช่วยเหลือเกี่ยวกับ","userFollowUp":"คุณช่วยอธิบายรายละเอียดเกี่ยวกับเรื่องนั้นได้ไหม?"}},"cache":{"title":"Cache Management","description":"Monitor and manage semantic response cache, hit rates, and token savings.","refresh":"Refresh","clearAll":"Clear All","memoryEntries":"Memory Entries","dbEntries":"DB Entries","cacheHits":"Cache Hits","tokensSaved":"Tokens Saved","hitRate":"Hit Rate","performance":"Cache Performance","behavior":"Cache Behavior","idempotency":"Idempotency Layer","clearSuccess":"Cache cleared. {count} expired entries removed.","clearError":"Failed to clear cache.","unavailable":"Cache unavailable","unavailableDesc":"Could not fetch cache statistics. Make sure the server is running.","memoryEntriesSub":"In-memory LRU","dbEntriesSub":"Persisted (SQLite)","cacheHitsSub":"of {total} total","tokensSavedSub":"Estimated from hits","autoRefresh":"Auto-refreshes every {seconds}s","hits":"Hits","misses":"Misses","total":"Total","behaviorDeterministic":"Only non-streaming requests with temperature=0 are cached.","behaviorBypass":"Bypass with header {header}.","behaviorTwoTier":"Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).","behaviorTtl":"Default TTL: 30 minutes. Configure via {envVar}.","activeDedupKeys":"Active Dedup Keys","dedupWindow":"Dedup Window"}}'))}];
2
2
 
3
3
  //# sourceMappingURL=src_i18n_messages_th_json_6ed546bd._.js.map