Files
ulleo 21961e2d03 feat(i18n): add Thai (th-TH) language support
Frontend:
- Add frontend/src/i18n/th-TH.json (913 keys, full parity with zh-CN)
- Register th-TH in i18n entry with native element-plus-secondary Thai locale
- Add Thai option to language selectors, legacy th_TH alias mapping,
  and browser locale detection (th* -> th-TH)
- Add common.thai label to all existing locale files

Backend:
- Add backend/locales/th-TH.json (177 keys)
- Accept th-TH in language whitelist, schema regex, and MCP question
- Map th* to Thai language name in LLM prompt language selection
- Apply question language to guess-question prompt template
2026-09-20 17:05:35 +08:00

210 lines
16 KiB
JSON

{
"i18n_default_workspace": "พื้นที่ทำงานเริ่มต้น",
"i18n_ds_name_exist": "ชื่อนี้มีอยู่แล้ว",
"i18n_concat_admin": "โปรดติดต่อผู้ดูแลระบบ!",
"i18n_exist": "{msg} มีอยู่แล้ว!",
"i18n_name": "ชื่อ",
"i18n_not_exist": "{msg} ไม่มีอยู่!",
"i18n_error": "{key} ผิดพลาด!",
"i18n_miss_args": "ขาดพารามิเตอร์ {key}!",
"i18n_format_invalid": "รูปแบบ {key} ไม่ถูกต้อง!",
"i18n_login": {
"account_pwd_error": "บัญชีหรือรหัสผ่านไม่ถูกต้อง!",
"no_associated_ws": "ไม่มีพื้นที่ทำงานที่เชื่อมโยง {msg}",
"user_disable": "บัญชีถูกปิดใช้งาน {msg}",
"origin_error": "วิธีเข้าสู่ระบบไม่ถูกต้อง",
"prohibit_auto_create": "ห้ามสร้างผู้ใช้โดยอัตโนมัติ โปรดซิงค์ผู้ใช้ก่อน",
"no_platform_user": "ไม่พบบัญชี โปรดซิงค์ผู้ใช้ก่อน",
"new_pwd_is_initial": "รหัสผ่านใหม่ต้องไม่เป็นรหัสผ่านเริ่มต้น"
},
"i18n_user": {
"account": "บัญชี",
"email": "อีเมล",
"password": "รหัสผ่าน",
"language_not_support": "ระบบไม่รองรับภาษา [{key}]!",
"ws_miss": "ผู้ใช้ปัจจุบันไม่ได้อยู่ในพื้นที่ทำงาน [{ws}]!",
"name": "ชื่อ",
"status": "สถานะผู้ใช้",
"origin": "แหล่งที่มาของผู้ใช้",
"workspace": "พื้นที่ทำงาน",
"role": "บทบาท",
"platform_user_id": "รหัสประจำตัวผู้ใช้ภายนอก",
"administrator": "ผู้ดูแลระบบ",
"ordinary_member": "สมาชิกทั่วไป",
"status_enabled": "เปิดใช้งานแล้ว",
"status_disabled": "ปิดใช้งานแล้ว",
"local_creation": "สร้างในระบบ"
},
"i18n_ws": {
"title": "พื้นที่ทำงาน"
},
"i18n_permission": {
"only_admin": "รองรับเฉพาะผู้ดูแลระบบเท่านั้น!",
"no_permission": "ไม่มีสิทธิ์เรียกใช้ {url}{msg}",
"authenticate_invalid": "การยืนยันตัวตนไม่ถูกต้อง【{msg}】",
"token_expired": "Token หมดอายุแล้ว",
"only_ws_admin": "รองรับเฉพาะผู้ดูแลพื้นที่ทำงานเท่านั้น!",
"permission_resource_limit": "ไม่มีสิทธิ์ดำเนินการ หรือไม่พบทรัพยากร!"
},
"i18n_llm": {
"validate_error": "ตรวจสอบไม่สำเร็จ [{msg}]",
"delete_default_error": "ไม่สามารถลบโมเดลเริ่มต้นได้ [{key}]!",
"miss_default": "ยังไม่ได้กำหนดค่าโมเดลภาษาขนาดใหญ่เริ่มต้น"
},
"i18n_ds_invalid": "การเชื่อมต่อแหล่งข้อมูลไม่ถูกต้อง",
"i18n_ds_upload_error": "อัปโหลดไฟล์ล้มเหลว",
"i18n_embedded": {
"invalid_origin": "ตรวจสอบโดเมนไม่สำเร็จ【{origin}】",
"missing_sign": "ขาดลายเซ็นการฝัง (SQLBOT-EMBEDDED-SIGN) จึงไม่สามารถยืนยันตัวตนผู้ฝังได้",
"assistant_id_mismatch": "รหัสผู้ช่วยในลายเซ็นไม่ตรงกับคำขอปัจจุบัน จึงไม่สามารถยืนยันตัวตนผู้ฝังได้",
"missing_origin": "หน้าเว็บปัจจุบันขาดข้อมูลแหล่งที่มา (Origin/Referer) จึงไม่สามารถยืนยันตัวตนผู้ฝังได้",
"target_origin_mismatch": "โดเมนต้นทางในลายเซ็นไม่ตรงกับโดเมนของหน้าเว็บปัจจุบัน จึงไม่สามารถยืนยันตัวตนผู้ฝังได้",
"invalid_sign": "ลายเซ็นการฝังไม่ถูกต้องหรือเสียหาย จึงไม่สามารถยืนยันตัวตนผู้ฝังได้",
"sign_time_expired": "ความล่าช้าในการซิงค์ระหว่างเซิร์ฟเวอร์ (SQLBot) กับหน้าเว็บปัจจุบัน (ฝั่งผู้ฝัง) เกิน 10 วินาที ทำให้การเชื่อมต่อขาดหาย",
"sign_time_invalid": "รูปแบบเวลาในลายเซ็นไม่ถูกต้อง จึงไม่สามารถยืนยันตัวตนผู้ฝังได้",
"automation_tool_detected": "ตรวจพบการเข้าถึงด้วยเครื่องมืออัตโนมัติ จึงบล็อกการฝัง",
"user_agent_mismatch": "ตัวระบุเบราว์เซอร์ในลายเซ็นไม่ตรงกับคำขอปัจจุบัน จึงบล็อกการฝัง",
"timezone_mismatch": "ข้อมูลเขตเวลาในลายเซ็นไม่สอดคล้องกับเวลาในลายเซ็น จึงบล็อกการฝัง"
},
"i18n_chat": {
"record_id_in_mcp": "รหัสการตอบกลับ: "
},
"i18n_terminology": {
"terminology_not_exists": "ไม่พบคำศัพท์นี้",
"datasource_cannot_be_none": "แหล่งข้อมูลต้องไม่ว่าง",
"cannot_be_repeated": "ชื่อคำศัพท์และคำพ้องความหมายต้องไม่ซ้ำกัน",
"exists_in_db": "ชื่อคำศัพท์และคำพ้องความหมายมีอยู่แล้ว",
"term_name": "ชื่อคำศัพท์",
"term_description": "คำอธิบายคำศัพท์",
"effective_data_sources": "แหล่งข้อมูลที่มีผล",
"all_data_sources": "แหล่งข้อมูลทั้งหมด",
"synonyms": "คำพ้องความหมาย",
"term_name_template": "ชื่อคำศัพท์ (จำเป็น)",
"term_description_template": "คำอธิบายคำศัพท์ (จำเป็น)",
"effective_data_sources_template": "แหล่งข้อมูลที่มีผล (รองรับหลายรายการ คั่นด้วย \",\")",
"all_data_sources_template": "แหล่งข้อมูลทั้งหมด (Y: ใช้กับแหล่งข้อมูลทั้งหมด, N: ใช้กับแหล่งข้อมูลที่ระบุ)",
"synonyms_template": "คำพ้องความหมาย (รองรับหลายรายการ คั่นด้วย \",\")",
"term_name_template_example_1": "คำศัพท์ 1",
"term_description_template_example_1": "คำอธิบายคำศัพท์ 1",
"effective_data_sources_template_example_1": "แหล่งข้อมูลที่มีผล 1, แหล่งข้อมูลที่มีผล 2",
"synonyms_template_example_1": "คำพ้องความหมาย 1, คำพ้องความหมาย 2",
"term_name_template_example_2": "คำศัพท์ 2",
"term_description_template_example_2": "คำอธิบายคำศัพท์ 2",
"synonyms_template_example_2": "คำพ้องความหมาย 3",
"word_cannot_be_empty": "ชื่อคำศัพท์ต้องไม่ว่าง",
"description_cannot_be_empty": "คำอธิบายคำศัพท์ต้องไม่ว่าง",
"datasource_not_found": "ไม่พบแหล่งข้อมูล"
},
"i18n_data_training": {
"datasource_list_is_not_found": "ไม่พบรายการแหล่งข้อมูล",
"datasource_id_not_found": "ไม่พบรหัสแหล่งข้อมูล: {key}",
"datasource_cannot_be_none": "แหล่งข้อมูลต้องไม่ว่าง",
"datasource_assistant_cannot_be_none": "แหล่งข้อมูลและแอปพลิเคชันขั้นสูงต้องไม่ว่างทั้งคู่",
"data_training_not_exists": "ไม่พบตัวอย่างนี้",
"exists_in_db": "คำถามนี้มีอยู่แล้ว",
"data_training": "คลังตัวอย่าง SQL",
"problem_description": "คำอธิบายปัญหา",
"sample_sql": "ตัวอย่าง SQL",
"effective_data_sources": "แหล่งข้อมูลที่มีผล",
"advanced_application": "แอปพลิเคชันขั้นสูง",
"problem_description_template": "คำอธิบายปัญหา (จำเป็น)",
"sample_sql_template": "ตัวอย่าง SQL (จำเป็น)",
"effective_data_sources_template": "แหล่งข้อมูลที่มีผล",
"advanced_application_template": "แอปพลิเคชันขั้นสูง",
"problem_description_template_example": "สอบถาม ID ทั้งหมดในตาราง TEST",
"effective_data_sources_template_example": "แหล่งข้อมูลที่มีผล 1",
"advanced_application_template_example": "ชื่อแอปพลิเคชันขั้นสูงที่มีผล",
"error_info": "ข้อมูลข้อผิดพลาด",
"question_cannot_be_empty": "คำถามต้องไม่ว่าง",
"description_cannot_be_empty": "ตัวอย่าง SQL ต้องไม่ว่าง",
"datasource_not_found": "ไม่พบแหล่งข้อมูล",
"advanced_application_not_found": "ไม่พบแอปพลิเคชันขั้นสูง"
},
"i18n_custom_prompt": {
"exists_in_db": "ชื่อเทมเพลตมีอยู่แล้ว",
"not_exists": "ไม่พบเทมเพลตนี้",
"prompt_word_name": "ชื่อพรอมป์ต์",
"prompt_word_content": "เนื้อหาพรอมป์ต์",
"effective_data_sources": "แหล่งข้อมูลที่มีผล",
"all_data_sources": "แหล่งข้อมูลทั้งหมด",
"prompt_word_name_template": "ชื่อพรอมป์ต์ (จำเป็น)",
"prompt_word_content_template": "เนื้อหาพรอมป์ต์ (จำเป็น)",
"effective_data_sources_template": "แหล่งข้อมูลที่มีผล (รองรับหลายรายการ คั่นด้วย \",\")",
"all_data_sources_template": "แหล่งข้อมูลทั้งหมด (Y: ใช้กับแหล่งข้อมูลทั้งหมด, N: ใช้กับแหล่งข้อมูลที่ระบุ)",
"prompt_word_name_template_example1": "พรอมป์ต์ 1",
"prompt_word_content_template_example1": "อธิบายพรอมป์ต์ของคุณโดยละเอียด",
"effective_data_sources_template_example1": "แหล่งข้อมูลที่มีผล 1, แหล่งข้อมูลที่มีผล 2",
"prompt_word_name_template_example2": "พรอมป์ต์ 2",
"prompt_word_content_template_example2": "อธิบายพรอมป์ต์ของคุณโดยละเอียด",
"name_cannot_be_empty": "ชื่อต้องไม่ว่าง",
"prompt_cannot_be_empty": "เนื้อหาพรอมป์ต์ต้องไม่ว่าง",
"type_cannot_be_empty": "ชนิดต้องไม่ว่าง",
"datasource_not_found": "ไม่พบแหล่งข้อมูล",
"datasource_cannot_be_none": "แหล่งข้อมูลต้องไม่ว่าง"
},
"i18n_excel_export": {
"data_is_empty": "ข้อมูลในตารางว่าง ไม่สามารถส่งออกข้อมูลได้"
},
"i18n_excel_import": {
"col_num_not_match": "จำนวนคอลัมน์ในไฟล์ EXCEL ไม่ตรงกัน"
},
"i18n_authentication": {
"record_not_exist": "ไม่พบระเบียน {msg} โปรดบันทึกก่อน!"
},
"i18n_audit": {
"success": "สำเร็จ",
"failed": "ล้มเหลว",
"system_log": "บันทึกการดำเนินการ",
"operation_type_name": "ชนิดการดำเนินการ",
"operation_detail_info": "รายละเอียดการดำเนินการ",
"user_name": "ผู้ดำเนินการ",
"oid_name": "พื้นที่ทำงาน",
"operation_status_name": "สถานะการดำเนินการ",
"error_message": "ข้อมูลข้อผิดพลาด",
"ip_address": "ที่อยู่ IP",
"create_time": "เวลาที่ดำเนินการ",
"chat": "สอบถามข้อมูลอัจฉริยะ",
"datasource": "แหล่งข้อมูล",
"dashboard": "แดชบอร์ด",
"member": "สมาชิก",
"permission": "สิทธิ์",
"terminology": "คำศัพท์",
"data_training": "คลังตัวอย่าง SQL",
"prompt_words": "พรอมป์ต์",
"user": "ผู้ใช้",
"workspace": "พื้นที่ทำงาน",
"ai_model": "โมเดล AI",
"application": "แอปพลิเคชัน",
"theme": "การตั้งค่ารูปลักษณ์",
"create": "สร้าง",
"delete": "ลบ",
"update": "อัปเดต",
"edit": "แก้ไข",
"login": "เข้าสู่ระบบ",
"export": "ส่งออก",
"import": "นำเข้า",
"add": "เพิ่ม",
"create_or_update": "เปลี่ยนแปลง",
"api_key": "API Key",
"params_setting": "การกำหนดค่าพารามิเตอร์",
"rules": "กฎสิทธิ์",
"log_setting": "การยืนยันตัวตนเข้าสู่ระบบ",
"setting": "ตั้งค่า",
"system_management": "การจัดการระบบ",
"opt_log": "บันทึกการดำเนินการ",
"prediction": "การคาดการณ์ข้อมูล",
"analysis": "การวิเคราะห์ข้อมูล",
"reset_pwd": "รีเซ็ตรหัสผ่าน",
"update_pwd": "อัปเดตรหัสผ่าน",
"update_status": "อัปเดตสถานะ",
"update_table_relation": "เปลี่ยนแปลงความสัมพันธ์ระหว่างตาราง"
},
"i18n_table_not_exist": "ไม่พบตารางปัจจุบัน",
"i18n_variable": {
"name_exist": "ชื่อตัวแปรมีอยู่แล้ว",
"name": "ชื่อ",
"account": "บัญชี",
"email": "อีเมล"
}
}