dify/web/i18n/th-TH/app-api.json
Jyong 79116d8c4b feat(knowledge-fs): scope dataset API keys by knowledge base type
Legacy knowledge bases (`datasets`) and KnowledgeFS spaces
(`knowledge_fs_control_spaces`) live in different tables, so a dataset API
key binding could only ever name a legacy dataset and the KnowledgeFS service
API never consulted bindings at all: a key scoped to specific knowledge bases
still reached every KnowledgeFS space in the workspace.

- Bindings carry a `resource_type` (`dataset` | `knowledge_fs_space`) and a
  nullable `control_space_id` (migration 9a4e7d1c2b60, existing rows stay
  `dataset`), with a CHECK that exactly one id column matches the type.
- `dataset_api_key_service` exposes the key scope by kind, validates and
  binds KnowledgeFS spaces (tenant-owned, not deleting/deleted), and cleans up
  keys scoped only to a space when its deletion is requested. The orphan-key
  cleanup is now NULL-safe so a space binding keeps a key alive.
- Legacy dataset routes only honour `dataset` bindings; the KnowledgeFS
  authorization service only honours `knowledge_fs_space` bindings and raises
  a scope error that the service API maps to 403 (unknown keys stay 401).
- Console key creation accepts `knowledge_space_ids`; list/create responses
  return them next to `dataset_ids`.
- The web scope picker lists KnowledgeFS spaces alongside legacy datasets
  when KnowledgeFS is enabled and submits the ids by kind; the scope column
  counts both.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015zw5G5SX3HmVfnZof6YWAc
2026-09-03 05:59:39 -04:00

37 lines
2.9 KiB
JSON

{
"actionMsg.deleteConfirmTips": "การดําเนินการนี้ไม่สามารถยกเลิกได้",
"actionMsg.deleteConfirmTitle": "ลบคีย์ลับนี้?",
"actionMsg.ok": "ตกลง, ได้",
"apiKeyModal.addKnowledgeBase": "เพิ่มฐานความรู้",
"apiKeyModal.addSubtitle": "สร้างกุญแจ API ใหม่เพื่อเข้าถึง API ของฐานความรู้",
"apiKeyModal.addTitle": "เพิ่มกุญแจ API",
"apiKeyModal.apiSecretKey": "คีย์ API",
"apiKeyModal.apiSecretKeyTips": "เพื่อป้องกันการละเมิด API ให้ปกป้องคีย์ API ของคุณ หลีกเลี่ยงการใช้เป็นข้อความธรรมดาในโค้ดส่วนหน้า :)",
"apiKeyModal.createNewSecretKey": "สร้างคีย์ลับใหม่",
"apiKeyModal.created": "สร้าง",
"apiKeyModal.generateTips": "เก็บกุญแจนี้ไว้ในที่ปลอดภัยและเข้าถึงได้",
"apiKeyModal.knowledgeBaseAccess": "การเข้าถึงฐานความรู้",
"apiKeyModal.knowledgeSpaceBadge": "KnowledgeFS",
"apiKeyModal.lastUsed": "ใช้ล่าสุด",
"apiKeyModal.noKnowledgeBasesSelected": "ยังไม่ได้เลือกฐานความรู้",
"apiKeyModal.pickerKnowledgeSpaces": "ฐานความรู้ KnowledgeFS",
"apiKeyModal.pickerLegacyDatasets": "ฐานความรู้แบบเดิม",
"apiKeyModal.scope": "ขอบเขต",
"apiKeyModal.scopeAllDatasets": "ฐานความรู้ทั้งหมด",
"apiKeyModal.scopeAllDatasetsTip": "กุญแจนี้สามารถเข้าถึงฐานความรู้ทั้งหมดในพื้นที่ทำงาน",
"apiKeyModal.scopeCount": "ฐานความรู้ {{count}} รายการ",
"apiKeyModal.scopeSpecificDatasets": "ฐานความรู้ที่ระบุ",
"apiKeyModal.scopeSpecificDatasetsTip": "กุญแจนี้สามารถเข้าถึงเฉพาะฐานความรู้ที่คุณเลือกเท่านั้น",
"apiKeyModal.searchKnowledgeBases": "ค้นหาฐานความรู้",
"apiKeyModal.secretKey": "กุญแจลับ",
"apiKeyModal.selectedKnowledgeBases": "ฐานความรู้ที่เลือก",
"apiKeyModal.selectedKnowledgeBasesCount": "ฐานความรู้ที่เลือก ({{count}})",
"copied": "คัด ลอก",
"copy": "ลอก",
"loading": "การโหลด",
"never": "ไม่เคย",
"pause": "หยุด",
"play": "เล่น",
"playing": "เล่น"
}