const thTH = { sidebar: { home: 'หน้าแรก', extensions: 'ส่วนขยาย', installedPlugins: 'ที่ติดตั้งแล้ว', pluginMarket: 'ตลาดปลั๊กอิน', mcpServers: 'เซิร์ฟเวอร์ MCP', addExtension: 'เพิ่มส่วนขยาย', pluginPages: 'หน้าปลั๊กอิน', pluginPagesTooltip: 'หน้าเว็บที่จัดทำโดยปลั๊กอินที่ติดตั้ง', quickStart: 'เริ่มต้นอย่างรวดเร็ว', scrollToBottom: 'เลื่อนไปด้านล่าง', editionCommunity: 'รุ่นชุมชน', editionCloud: 'Cloud', }, common: { login: 'เข้าสู่ระบบ', logout: 'ออกจากระบบ', accountOptions: 'การตั้งค่า', account: 'บัญชี', integration: 'การเชื่อมต่อ', email: 'อีเมล', password: 'รหัสผ่าน', welcome: 'ยินดีต้อนรับกลับสู่ LangBot 👋', continueToLogin: 'เข้าสู่ระบบเพื่อดำเนินการต่อ', loginSuccess: 'เข้าสู่ระบบสำเร็จ', loginFailed: 'เข้าสู่ระบบล้มเหลว กรุณาตรวจสอบอีเมลและรหัสผ่าน', loginLoadError: 'ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์', loginLoadErrorDesc: 'ไม่สามารถเชื่อมต่อกับแบ็กเอนด์ LangBot ได้ กรุณาตรวจสอบว่าบริการกำลังทำงานอยู่แล้วลองใหม่อีกครั้ง', retry: 'ลองใหม่', enterEmail: 'กรอกที่อยู่อีเมล', enterPassword: 'กรอกรหัสผ่าน', invalidEmail: 'กรุณากรอกที่อยู่อีเมลที่ถูกต้อง', emptyPassword: 'กรุณากรอกรหัสผ่าน', language: 'ภาษา', helpDocs: 'ขอความช่วยเหลือ', featureRequest: 'ขอฟีเจอร์ใหม่', starOnGitHub: 'ให้ดาวบน GitHub', joinDiscord: 'เข้าร่วม Discord', create: 'สร้าง', edit: 'แก้ไข', delete: 'ลบ', add: 'เพิ่ม', select: 'เลือก', skill: 'สกิล', cancel: 'ยกเลิก', submit: 'ส่ง', error: 'ข้อผิดพลาด', success: 'สำเร็จ', save: 'บันทึก', saving: 'กำลังบันทึก...', recommend: 'แนะนำ', start: 'เริ่ม', confirm: 'ยืนยัน', confirmDelete: 'ยืนยันการลบ', deleteConfirmation: 'คุณแน่ใจหรือไม่ว่าต้องการลบสิ่งนี้?', selectOption: 'เลือกตัวเลือก', selectPreset: 'เลือกค่าที่ตั้งไว้', required: 'จำเป็น', enable: 'เปิดใช้งาน', name: 'ชื่อ', description: 'คำอธิบาย', icon: 'ไอคอน', close: 'ปิด', deleteSuccess: 'ลบสำเร็จ', deleteError: 'ลบล้มเหลว: ', addRound: 'เพิ่มรอบ', copy: 'คัดลอก', copySuccess: 'คัดลอกสำเร็จ', copyFailed: 'คัดลอกล้มเหลว', test: 'ทดสอบ', forgotPassword: 'ลืมรหัสผ่าน?', agreementNotice: 'การดำเนินการต่อแสดงว่าคุณยอมรับ', termsOfService: 'ข้อกำหนดการให้บริการ', privacyPolicy: 'นโยบายความเป็นส่วนตัว', and: 'และ', dataCollectionPolicy: 'นโยบายการเก็บรวบรวมข้อมูล', dataCollectionPolicyUrl: 'https://link.langbot.app/en/docs/data-policy', loading: 'กำลังโหลด...', fieldRequired: 'ช่องนี้จำเป็นต้องกรอก', or: 'หรือ', loginWithSpace: 'เข้าสู่ระบบด้วยบัญชี LangBot', spaceLoginRecommended: 'แนะนำ: ใช้ API โมเดลที่เสถียรอย่างเป็นทางการและบริการคลาวด์', loginLocal: 'เข้าสู่ระบบด้วยบัญชีท้องถิ่น', loginWithPassword: 'เข้าสู่ระบบด้วยรหัสผ่าน', spaceLoginTitle: 'เข้าสู่ระบบด้วย Space', spaceLoginDescription: 'สแกน QR code หรือเข้าชมลิงก์ด้านล่างเพื่อยืนยันสิทธิ์', spaceLoginUserCode: 'รหัสของคุณ', spaceLoginExpires: 'รหัสจะหมดอายุใน {{seconds}} วินาที', spaceLoginWaiting: 'กำลังรอการยืนยันสิทธิ์...', spaceLoginSuccess: 'ยืนยันสิทธิ์สำเร็จ', spaceLoginFailed: 'เข้าสู่ระบบ Space ล้มเหลว', spaceLoginExpired: 'รหัสยืนยันหมดอายุแล้ว กรุณาลองใหม่', spaceLoginCancel: 'ยกเลิก', spaceLoginVisitLink: 'เข้าชมลิงก์', spaceLoginProcessing: 'กำลังเข้าสู่ระบบด้วย Space', spaceLoginProcessingDescription: 'กรุณารอสักครู่ขณะดำเนินการเข้าสู่ระบบ...', spaceLoginSuccessDescription: 'กำลังเปลี่ยนเส้นทางไปยัง LangBot...', spaceLoginError: 'เข้าสู่ระบบล้มเหลว', spaceLoginNoCode: 'ไม่พบรหัสยืนยันสิทธิ์', backToLogin: 'กลับไปหน้าเข้าสู่ระบบ', backToHome: 'กลับไปหน้าแรก', spaceAccountCannotChangePassword: 'บัญชี Space ไม่สามารถเปลี่ยนรหัสผ่านได้ที่นี่', theme: 'ธีม', changePassword: 'เปลี่ยนรหัสผ่าน', currentPassword: 'รหัสผ่านปัจจุบัน', newPassword: 'รหัสผ่านใหม่', confirmNewPassword: 'ยืนยันรหัสผ่านใหม่', enterCurrentPassword: 'กรอกรหัสผ่านปัจจุบัน', enterNewPassword: 'กรอกรหัสผ่านใหม่', enterConfirmPassword: 'ยืนยันรหัสผ่านใหม่', currentPasswordRequired: 'กรุณากรอกรหัสผ่านปัจจุบัน', newPasswordRequired: 'กรุณากรอกรหัสผ่านใหม่', confirmPasswordRequired: 'กรุณายืนยันรหัสผ่าน', passwordsDoNotMatch: 'รหัสผ่านไม่ตรงกัน', changePasswordSuccess: 'เปลี่ยนรหัสผ่านสำเร็จ', changePasswordFailed: 'เปลี่ยนรหัสผ่านล้มเหลว กรุณาตรวจสอบรหัสผ่านปัจจุบัน', apiIntegration: 'การเชื่อมต่อ API', apiIntegrationDescription: 'จัดการ API key และ webhook สำหรับการเข้าถึงจากภายนอก', apiKeys: 'คีย์ API', manageApiIntegration: 'จัดการการเชื่อมต่อ API', manageApiKeys: 'จัดการคีย์ API', createApiKey: 'สร้างคีย์ API', apiKeyName: 'ชื่อคีย์ API', apiKeyDescription: 'คำอธิบายคีย์ API', apiKeyValue: 'ค่าคีย์ API', apiKeyCreated: 'สร้างคีย์ API สำเร็จ', apiKeyDeleted: 'ลบคีย์ API สำเร็จ', apiKeyDeleteConfirm: 'คุณแน่ใจหรือไม่ว่าต้องการลบคีย์ API นี้?', apiKeyNameRequired: 'กรุณากรอกชื่อคีย์ API', copyApiKey: 'คัดลอกคีย์ API', apiKeyCopied: 'คัดลอกคีย์ API ไปยังคลิปบอร์ดแล้ว', noApiKeys: 'ยังไม่มีคีย์ API ที่กำหนดค่า', apiKeyHint: 'คีย์ API ช่วยให้ระบบภายนอกสามารถเข้าถึง API บริการของ LangBot ได้', mcpTab: 'MCP', mcpHint: 'LangBot exposes an MCP (Model Context Protocol) server so AI agents can manage this instance. It uses the same API keys as the Service API.', mcpEndpoint: 'MCP Endpoint', mcpAuthTitle: 'Authentication', mcpAuthDesc: 'Authenticate with any API key from the API Keys tab, sent as a header:', mcpGlobalKeyNote: 'You can also set a global API key in config.yaml (api.global_api_key) to use without logging in.', mcpClientConfigTitle: 'Example MCP client config', webhooks: 'Webhooks', createWebhook: 'สร้าง Webhook', webhookName: 'ชื่อ Webhook', webhookUrl: 'URL ของ Webhook', webhookDescription: 'คำอธิบาย Webhook', webhookEnabled: 'เปิดใช้งาน', webhookCreated: 'สร้าง Webhook สำเร็จ', webhookDeleted: 'ลบ Webhook สำเร็จ', webhookDeleteConfirm: 'คุณแน่ใจหรือไม่ว่าต้องการลบ Webhook นี้?', webhookNameRequired: 'กรุณากรอกชื่อ Webhook', webhookUrlRequired: 'กรุณากรอก URL ของ Webhook', noWebhooks: 'ยังไม่มี Webhook ที่กำหนดค่า', webhookHint: 'Webhooks ช่วยให้ LangBot สามารถส่งเหตุการณ์ข้อความส่วนตัวและกลุ่มไปยังระบบภายนอกได้', actions: 'การดำเนินการ', apiKeyCreatedMessage: 'กรุณาคัดลอกคีย์ API นี้ หากปุ่มไม่ทำงาน กรุณาคัดลอกด้วยตนเอง', none: 'ไม่มี', more: 'เพิ่มเติม ({{count}})', less: 'น้อยลง', noItems: 'ไม่มีรายการ', apiKeyStoredSecurely: 'Secret shown only when created', }, notFound: { title: 'ไม่พบหน้า', description: 'หน้าที่คุณกำลังมองหาไม่มีอยู่', back: 'ย้อนกลับ', home: 'หน้าแรก', help: 'ขอความช่วยเหลือ', }, models: { title: 'โมเดล', description: 'กำหนดค่าและจัดการโมเดลที่สามารถใช้ใน Pipeline', createModel: 'สร้างโมเดล', editModel: 'แก้ไขโมเดล', getModelListError: 'ไม่สามารถดึงรายการโมเดลได้: ', modelName: 'ชื่อโมเดล', modelProvider: 'ผู้ให้บริการโมเดล', modelBaseURL: 'URL พื้นฐาน', modelAbilities: 'ความสามารถของโมเดล', saveSuccess: 'บันทึกสำเร็จ', saveError: 'บันทึกล้มเหลว: ', createSuccess: 'สร้างสำเร็จ', createError: 'สร้างล้มเหลว: ', deleteSuccess: 'ลบสำเร็จ', deleteError: 'ลบล้มเหลว: ', deleteConfirmation: 'คุณแน่ใจหรือไม่ว่าต้องการลบโมเดลนี้?', modelNameRequired: 'ชื่อโมเดลต้องไม่ว่างเปล่า', modelProviderRequired: 'ผู้ให้บริการโมเดลต้องไม่ว่างเปล่า', requestURLRequired: 'URL คำขอต้องไม่ว่างเปล่า', apiKeyRequired: 'API Key ต้องไม่ว่างเปล่า', keyNameRequired: 'ชื่อคีย์ต้องไม่ว่างเปล่า', mustBeValidNumber: 'ต้องเป็นตัวเลขที่ถูกต้อง', mustBeTrueOrFalse: 'ต้องเป็น true หรือ false', requestURL: 'URL คำขอ', scanURL: 'URL สแกนโมเดล', scanURLPlaceholder: 'เว้นว่างไว้เพื่อใช้ URL คำขอ + /models', scanURLDescription: 'กรอกปลายทางรายการโมเดลจริงเมื่อการสแกนโมเดลไม่ได้ใช้ที่อยู่เดียวกับการเรียกใช้โมเดล', apiKey: 'API Key', abilities: 'ความสามารถ', selectModelAbilities: 'เลือกความสามารถของโมเดล', visionAbility: 'ความสามารถด้านภาพ', functionCallAbility: 'การเรียกฟังก์ชัน', contextLength: 'หน้าต่างบริบท', contextLengthPlaceholder: 'ไม่ทราบ', contextLengthInvalid: 'หน้าต่างบริบทต้องเป็นจำนวนเต็มบวก', extraParameters: 'พารามิเตอร์เพิ่มเติม', addParameter: 'เพิ่มพารามิเตอร์', keyName: 'ชื่อคีย์', type: 'ประเภท', value: 'ค่า', string: 'สตริง', number: 'ตัวเลข', boolean: 'บูลีน', object: 'อ็อบเจกต์', objectJsonPlaceholder: '{ "type": "disabled" }', invalidJsonObject: 'ค่าต้องเป็นอ็อบเจกต์ JSON ที่ถูกต้อง', selectModelProvider: 'เลือกผู้ให้บริการโมเดล', modelProviderDescription: 'กรุณากรอกชื่อโมเดลที่ผู้ให้บริการจัดเตรียมไว้', modelManufacturer: 'ผู้ผลิตโมเดล', aggregationPlatform: 'แพลตฟอร์มรวม', selfDeployed: 'ติดตั้งเอง', builtin: 'ในตัว', selectModel: 'เลือกโมเดล', testSuccess: 'ทดสอบสำเร็จ', testError: 'ทดสอบล้มเหลว กรุณาตรวจสอบการกำหนดค่าโมเดล', llmModels: 'โมเดล LLM', localProvider: 'ท้องถิ่น', localProviderDescription: 'โมเดลที่กำหนดค่าและจัดการในเครื่อง', spaceProviderDescription: 'โมเดลที่ซิงค์จากบัญชี Space ของคุณ', spaceDisabledForLocalAccount: 'เข้าสู่ระบบด้วย Space เพื่อใช้โมเดลคลาวด์', syncModels: 'ซิงค์', syncSuccess: 'ซิงค์เสร็จสมบูรณ์: สร้าง {{created}} รายการ, อัปเดต {{updated}} รายการ', syncError: 'ซิงค์ล้มเหลว: ', spaceModelReadOnly: 'โมเดล Space เป็นแบบอ่านอย่างเดียว', noSpaceModels: 'ไม่มีโมเดล Space คลิกซิงค์เพื่อดึงโมเดลจาก Space', noLocalModels: 'ไม่มีโมเดลท้องถิ่น คลิกสร้างเพื่อเพิ่มโมเดล', providerCount: '{{count}} ผู้ให้บริการ', addModel: 'เพิ่มโมเดล', manualAdd: 'เพิ่มเอง', scanAdd: 'สแกน', scanModels: 'สแกนโมเดล', scanModelsHint: 'ดึงรายการโมเดลที่ใช้ได้จากผู้ให้บริการปัจจุบัน แล้วเลือกโมเดลที่ต้องการเพิ่ม', scannedModels: 'ผลการสแกน', scanDebug: 'ข้อมูลการดีบัก', searchScannedModels: 'ค้นหาผลการสแกน', noScannedModels: 'ยังไม่มีผลการสแกน กดปุ่มด้านบนเพื่อเริ่มสแกน', noScannedModelsMatch: 'ไม่พบโมเดลที่ตรงกัน', addSelectedModels: 'เพิ่มที่เลือก', addSelectedModelsSuccess: 'เพิ่มแล้ว {{count}} โมเดล', selectAll: 'เลือกทั้งหมด', alreadyAdded: 'เพิ่มแล้ว', addLLMModel: 'เพิ่มโมเดล LLM', addEmbeddingModel: 'เพิ่มโมเดล Embedding', provider: 'ผู้ให้บริการ', existingProvider: 'ผู้ให้บริการที่มีอยู่', newProvider: 'ผู้ให้บริการใหม่', selectProvider: 'เลือกผู้ให้บริการ', requester: 'ประเภทผู้ให้บริการ', selectRequester: 'เลือกประเภทผู้ให้บริการ', searchProviders: 'ค้นหาผู้ให้บริการ...', langbotModelsDescription: 'โมเดลคลาวด์ขับเคลื่อนโดย LangBot Space', credits: 'เครดิต', loginWithSpace: 'เข้าสู่ระบบด้วยบัญชี LangBot', loginToUseModels: 'เข้าสู่ระบบด้วย Space เพื่อใช้โมเดลคลาวด์', noModels: 'ยังไม่มีโมเดลที่กำหนดค่า', langbotModels: 'โมเดล LangBot', spaceTrialTooltip: 'มีเครดิตทดลองใช้งานฟรี! เข้าสู่ระบบด้วย Space เพื่อเข้าถึงโมเดลคลาวด์โดยไม่ต้องตั้งค่า', unlockModels: 'เข้าสู่ระบบเพื่อใช้งาน', editProvider: 'แก้ไขผู้ให้บริการ', addProvider: 'เพิ่มผู้ให้บริการ', addProviderHint: 'เพิ่มผู้ให้บริการเพื่อใช้โมเดลจากแหล่งอื่น', addProviderHintSimple: 'เพิ่มผู้ให้บริการเพื่อใช้โมเดล', noProviders: 'ยังไม่มีผู้ให้บริการ', providerName: 'ชื่อผู้ให้บริการ', providerNameRequired: 'กรุณากรอกชื่อผู้ให้บริการ', requesterRequired: 'กรุณาเลือกประเภทผู้ให้บริการ', providerSaved: 'บันทึกผู้ให้บริการแล้ว', providerCreated: 'สร้างผู้ให้บริการแล้ว', providerSaveError: 'บันทึกผู้ให้บริการล้มเหลว: ', providerDeleted: 'ลบผู้ให้บริการแล้ว', providerDeleteError: 'ลบผู้ให้บริการล้มเหลว: ', deleteProviderConfirmation: 'คุณแน่ใจหรือไม่ว่าต้องการลบผู้ให้บริการนี้?', loadError: 'โหลดข้อมูลล้มเหลว', chat: 'แชท', embedding: 'Embedding', rerank: 'จัดลำดับใหม่', rerankUrlTooltip: 'URL เต็มสำหรับ endpoint จัดลำดับใหม่ (เช่น: https://dashscope.aliyuncs.com/compatible-api/v1/reranks)', rerankPathTooltip: 'พาธที่เพิ่มเข้าไปใน URL ฐาน (ค่าเริ่มต้น: rerank บางบริการใช้ reranks)', modelsCount: '{{count}} โมเดล', expandModels: 'ขยาย', collapseModels: 'ย่อ', fallback: { primary: 'โมเดลหลัก', fallbackList: 'โมเดลสำรอง', addFallback: 'เพิ่มโมเดลสำรอง', }, ownerMustBindSpace: 'The Workspace owner must connect Space for LangBot Models.', usesOwnerSpaceBilling: "Uses the Workspace owner's Space billing and credits.", }, bots: { title: 'บอท', description: 'สร้างและจัดการ Bot ซึ่งเป็นจุดเชื่อมต่อของ LangBot กับแพลตฟอร์มต่างๆ', createBot: 'สร้าง Bot', selectFromSidebar: 'เลือก Bot จากแถบด้านข้าง', editBot: 'แก้ไข Bot', getBotListError: 'ไม่สามารถดึงรายการ Bot ได้: ', botName: 'ชื่อ Bot', botDescription: 'คำอธิบาย Bot', botNameRequired: 'ชื่อ Bot ต้องไม่ว่างเปล่า', botDescriptionRequired: 'คำอธิบาย Bot ต้องไม่ว่างเปล่า', adapterRequired: 'อะแดปเตอร์ต้องไม่ว่างเปล่า', defaultDescription: 'Bot หนึ่งตัว', getBotConfigError: 'ไม่สามารถดึงการกำหนดค่า Bot ได้: ', saveSuccess: 'บันทึกสำเร็จ', saveError: 'บันทึกล้มเหลว: ', createSuccess: 'สร้างสำเร็จ กรุณาเปิดใช้งานหรือแก้ไข Pipeline ที่ผูกไว้', createError: 'สร้างล้มเหลว: ', deleteSuccess: 'ลบสำเร็จ', deleteError: 'ลบล้มเหลว: ', deleteConfirmation: 'คุณแน่ใจหรือไม่ว่าต้องการลบ Bot นี้?', platformAdapter: 'การเลือกแพลตฟอร์ม/อะแดปเตอร์', selectAdapter: 'เลือกอะแดปเตอร์', adapterConfig: 'การกำหนดค่าอะแดปเตอร์', viewAdapterDocs: 'ดูเอกสาร', bindPipeline: 'ผูก Pipeline', selectPipeline: 'เลือก Pipeline', selectBot: 'เลือก Bot', botLogTitle: 'บันทึก Bot', enableAutoRefresh: 'เปิดการรีเฟรชอัตโนมัติ', session: 'เซสชัน', yesterday: 'เมื่อวาน', earlier: 'ก่อนหน้า', dateFormat: '{{day}}/{{month}}', setBotEnableError: 'ไม่สามารถตั้งค่าสถานะเปิดใช้งาน Bot ได้', log: 'บันทึก', configuration: 'การกำหนดค่า', logs: 'บันทึก', basicInfo: 'ข้อมูลพื้นฐาน', basicInfoDescription: 'ตั้งชื่อและคำอธิบาย Bot', routingConnection: 'การกำหนดเส้นทางและการเชื่อมต่อ', routingConnectionDescription: 'ผูก Pipeline ที่ประมวลผลข้อความสำหรับ Bot นี้', routingRules: 'กฎการกำหนดเส้นทางตามเงื่อนไข', routingRulesDescription: 'กฎจะถูกประเมินตามลำดับ การจับคู่แรกจะกำหนดเส้นทางไปยัง Pipeline ที่เกี่ยวข้อง หากไม่ตรงกันจะใช้ Pipeline เริ่มต้นด้านบน', addRoutingRule: 'เพิ่มกฎ', ruleTypeLauncherType: 'ประเภทเซสชัน', ruleTypeLauncherId: 'ID เซสชัน', ruleTypeMessageContent: 'เนื้อหาข้อความ', operatorEq: 'เท่ากับ', operatorNeq: 'ไม่เท่ากับ', operatorContains: 'ประกอบด้วย', operatorNotContains: 'ไม่ประกอบด้วย', operatorStartsWith: 'เริ่มต้นด้วย', operatorRegex: 'นิพจน์ปกติ', operatorHas: 'มี', operatorNotHas: 'ไม่มี', ruleTypeMessageHasElement: 'องค์ประกอบข้อความ', ruleValueElementPlaceholder: 'เลือกประเภทองค์ประกอบ', elementImage: 'รูปภาพ', elementVoice: 'เสียง', elementFile: 'ไฟล์', elementForward: 'ส่งต่อ', elementFace: 'อีโมจิ', elementAt: '@กล่าวถึง', elementAtAll: '@ทั้งหมด', elementQuote: 'อ้างอิง', ruleValuePlaceholder: 'ค่าที่ตรงกัน', ruleValueLauncherIdPlaceholder: 'ID กลุ่มหรือผู้ใช้', ruleValueMessagePlaceholder: 'ข้อความ', ruleValuePrefixPlaceholder: 'เช่น !draw', ruleValueRegexpPlaceholder: 'เช่น ^/help', pipelineDiscard: 'ละทิ้งข้อความ', sessionTypePerson: 'แชทส่วนตัว', sessionTypeGroup: 'แชทกลุ่ม', adapterConfigDescription: 'กำหนดค่าอะแดปเตอร์แพลตฟอร์มที่เลือก', dangerZone: 'โซนอันตราย', dangerZoneDescription: 'การดำเนินการที่ย้อนกลับไม่ได้และเป็นอันตราย', deleteBotAction: 'ลบ Bot นี้', deleteBotHint: 'เมื่อลบแล้ว การกำหนดค่าที่เกี่ยวข้องทั้งหมดจะถูกลบอย่างถาวร', webhookUrl: 'URL เรียกกลับ Webhook', webhookUrlCopied: 'คัดลอก URL Webhook แล้ว', webhookUrlHint: 'คลิกที่ช่องกรอกเพื่อเลือกทั้งหมด จากนั้นกด Ctrl+C (Mac: Cmd+C) เพื่อคัดลอก หรือคลิกปุ่ม', webhookUrlHintEither: 'ใช้ URL ใดก็ได้จากสอง URL ด้านบนในการกำหนดค่าแพลตฟอร์มของคุณ', webhookSaasHint: 'Webhook ต้องใช้โดเมนที่เข้าถึงได้จากภายนอก LangBot Cloud มี endpoint สาธารณะพร้อมใช้งานสำหรับ Bot ของคุณ', webhookSaasLink: 'เรียนรู้เพิ่มเติมเกี่ยวกับ LangBot Cloud', adapterCategory: { popular: 'ยอดนิยม', china: 'จีน', global: 'ทั่วโลก', protocol: 'โปรโตคอล', }, logLevel: 'ระดับบันทึก', allLevels: 'ทุกระดับ', selectLevel: 'เลือกระดับ', levelsSelected: 'ระดับที่เลือก', viewDetailedLogs: 'ดูบันทึกโดยละเอียด', viewDetails: 'รายละเอียด', collapse: 'ย่อ', imagesAttached: 'รูปภาพที่แนบ', noLogs: 'ยังไม่มีบันทึก', sessionMonitor: { title: 'เซสชัน', sessions: 'เซสชัน', noSessions: 'ไม่พบเซสชัน', selectSession: 'เลือกเซสชันเพื่อดูข้อความ', noMessages: 'ไม่มีข้อความในเซสชันนี้', messages: 'ข้อความ', messageCount: '{{count}} ข้อความ', loading: 'กำลังโหลด...', loadingSessions: 'กำลังโหลดเซสชัน...', loadingMessages: 'กำลังโหลดข้อความ...', user: 'ผู้ใช้', variables: 'ตัวแปร', platform: 'แพลตฟอร์ม', lastActive: 'ใช้งานล่าสุด', refresh: 'รีเฟรช', active: 'ใช้งานอยู่', inactive: 'ไม่ได้ใช้งาน', discarded: 'ถูกละทิ้ง', userMessage: 'ผู้ใช้', botMessage: 'ผู้ช่วย', }, admins: { title: 'Admins', description: "Launchers (person/group IDs) that have admin privilege for this bot's commands", addAdmin: 'Add Admin', launcherType: 'Type', launcherId: 'ID', typePerson: 'Person', typeGroup: 'Group', placeholderId: 'User or group ID', addSuccess: 'Admin added', addError: 'Failed to add admin: ', deleteSuccess: 'Admin removed', deleteError: 'Failed to remove admin: ', noAdmins: 'No admins configured', setAdminTitle: 'Set as admin', removeAdminTitle: 'Remove admin', adminBadge: 'Admin', configureAdmins: 'Manage Admins', }, }, plugins: { title: 'ส่วนขยาย', description: 'ติดตั้งและกำหนดค่าปลั๊กอินเพื่อขยายฟังก์ชันการทำงาน กรุณาเลือกใน Pipeline', createPlugin: 'สร้างปลั๊กอิน', editPlugin: 'แก้ไขปลั๊กอิน', installed: 'ติดตั้งแล้ว', marketplace: 'ตลาดปลั๊กอิน', arrange: 'เรียงลำดับปลั๊กอิน', install: 'ติดตั้ง', installPlugin: 'ติดตั้งปลั๊กอิน', newPlugin: 'สร้างปลั๊กอินใหม่', onlySupportGithub: 'ปัจจุบันรองรับเฉพาะการติดตั้งจาก GitHub', enterGithubLink: 'กรอกลิงก์ GitHub ของปลั๊กอิน', installing: 'กำลังติดตั้งปลั๊กอิน...', installSuccess: 'ติดตั้งปลั๊กอินสำเร็จ', installFailed: 'ติดตั้งปลั๊กอินล้มเหลว:', searchPlugin: 'ค้นหาปลั๊กอิน', sortBy: 'เรียงตาม', mostStars: 'ดาวมากที่สุด', recentlyAdded: 'เพิ่มล่าสุด', recentlyUpdated: 'อัปเดตล่าสุด', noMatchingPlugins: 'ไม่พบปลั๊กอินที่ตรงกัน', loading: 'กำลังโหลด...', getPluginListError: 'ไม่สามารถดึงรายการปลั๊กอินได้:', noPluginInstalled: 'ยังไม่มีปลั๊กอินที่ติดตั้ง', noExtensionInstalled: 'ยังไม่มีส่วนขยายที่ติดตั้ง', loadingExtensions: 'กำลังโหลดส่วนขยาย...', groupByType: 'จัดกลุ่มตามรูปแบบ', pluginConfig: 'การกำหนดค่าปลั๊กอิน', pluginSort: 'เรียงลำดับปลั๊กอิน', pluginSortDescription: 'ลำดับปลั๊กอินมีผลต่อลำดับการประมวลผลภายในเหตุการณ์เดียวกัน กรุณาลากการ์ดปลั๊กอินเพื่อเรียงลำดับ', pluginSortSuccess: 'เรียงลำดับปลั๊กอินสำเร็จ', pluginSortError: 'เรียงลำดับปลั๊กอินล้มเหลว: ', pluginNoConfig: 'ปลั๊กอินนี้ไม่มีรายการกำหนดค่า', systemDisabled: 'ระบบปลั๊กอินปิดอยู่', systemDisabledDesc: 'ระบบปลั๊กอินไม่ได้เปิดใช้งาน กรุณาแก้ไขการกำหนดค่าตามเอกสาร', connectionError: 'ข้อผิดพลาดการเชื่อมต่อระบบปลั๊กอิน', connectionErrorDesc: 'กรุณาตรวจสอบการกำหนดค่าระบบปลั๊กอินหรือติดต่อผู้ดูแลระบบ', errorDetails: 'รายละเอียดข้อผิดพลาด', loadingStatus: 'กำลังตรวจสอบสถานะระบบปลั๊กอิน...', failedToGetStatus: 'ไม่สามารถดึงสถานะระบบปลั๊กอินได้', pluginSystemNotReady: 'ระบบปลั๊กอินยังไม่พร้อม ไม่สามารถดำเนินการนี้ได้', debugInfo: 'ข้อมูลดีบัก', debugInfoTitle: 'ข้อมูลดีบักปลั๊กอิน', debugUrl: 'URL ดีบัก', debugKey: 'คีย์ดีบัก', noDebugKey: '(ไม่ได้ตั้งค่า)', debugKeyDisabled: 'ไม่ได้ตั้งค่าคีย์ดีบัก การดีบักปลั๊กอินไม่ต้องยืนยันตัวตน', boxStatusTitle: 'Box Runtime', boxStatus: 'สถานะ', boxConnected: 'เชื่อมต่อแล้ว', boxUnavailable: 'ไม่พร้อมใช้งาน', boxBackend: 'แบ็กเอนด์', boxProfile: 'โปรไฟล์', boxSandboxes: 'แซนด์บ็อกซ์', boxErrors: 'ข้อผิดพลาด', boxSessionImage: 'อิมเมจ', boxSessionBackend: 'แบ็กเอนด์', boxSessionResources: 'ทรัพยากร', boxSessionNetwork: 'เครือข่าย', boxStatusLoadFailed: 'โหลดสถานะ Box ล้มเหลว', failedToGetDebugInfo: 'ไม่สามารถดึงข้อมูลดีบักได้', copiedToClipboard: 'คัดลอกไปยังคลิปบอร์ดแล้ว', deleting: 'กำลังลบ...', deletePlugin: 'ลบปลั๊กอิน', cancel: 'ยกเลิก', saveConfig: 'บันทึกการกำหนดค่า', saving: 'กำลังบันทึก...', confirmDeletePlugin: 'คุณแน่ใจหรือไม่ว่าต้องการลบปลั๊กอิน ({{author}}/{{name}})?', deleteDataCheckbox: 'ลบการกำหนดค่าปลั๊กอินและที่เก็บข้อมูลถาวรด้วย', confirmDelete: 'ยืนยันการลบ', deleteError: 'ลบล้มเหลว: ', close: 'ปิด', deleteConfirm: 'ยืนยันการลบ', deleteSuccess: 'ลบสำเร็จ', dangerZone: 'พื้นที่อันตราย', dangerZoneDescription: 'การดำเนินการที่ไม่สามารถย้อนกลับได้', modifyFailed: 'แก้ไขล้มเหลว: ', componentName: { Tool: 'เครื่องมือ', EventListener: 'ตัวรับฟังเหตุการณ์', Command: 'คำสั่ง', KnowledgeEngine: 'เครื่องมือความรู้', Parser: 'ตัวแยกวิเคราะห์', Page: 'หน้า', }, uploadLocal: 'อัปโหลดจากเครื่อง', debugging: 'ดีบัก', uploadLocalPlugin: 'อัปโหลดปลั๊กอินจากเครื่อง', localPreview: { title: 'ดูตัวอย่างแพ็กเกจปลั๊กอินในเครื่อง', unpacking: 'กำลังแตกแพ็กเกจเพื่อดูตัวอย่าง...', unpackComplete: 'พร้อมดูตัวอย่างแพ็กเกจแล้ว', failed: 'ดูตัวอย่างแพ็กเกจไม่สำเร็จ', pluginInfo: 'ข้อมูลปลั๊กอิน', packageInfo: 'ข้อมูลแพ็กเกจ', name: 'ชื่อ', author: 'ผู้เขียน', version: 'เวอร์ชัน', fileCount: 'จำนวนไฟล์', dependencies: 'แพ็กเกจที่ต้องใช้', components: 'คอมโพเนนต์', ready: 'แตกแพ็กเกจปลั๊กอินแล้ว ยืนยันเพื่อเริ่มติดตั้ง', }, dragToUpload: 'ลากไฟล์ปลั๊กอินมาวางที่นี่เพื่ออัปโหลด', unsupportedFileType: 'ประเภทไฟล์ไม่รองรับ รองรับเฉพาะไฟล์ .lbpkg และ .zip', uploadingPlugin: 'กำลังอัปโหลดปลั๊กอิน...', uploadSuccess: 'อัปโหลดสำเร็จ', uploadFailed: 'อัปโหลดล้มเหลว', selectFileToUpload: 'เลือกไฟล์ปลั๊กอินเพื่ออัปโหลด', askConfirm: 'คุณแน่ใจหรือไม่ที่จะติดตั้งปลั๊กอิน "{{name}}" ({{version}})?', askConfirmNoVersion: 'คุณแน่ใจหรือไม่ที่จะติดตั้งปลั๊กอิน "{{name}}"?', fromGithub: 'จาก GitHub', fromLocal: 'จากเครื่อง', fromMarketplace: 'จากตลาดปลั๊กอิน', componentsList: 'ส่วนประกอบ: ', noComponents: 'ไม่มีส่วนประกอบ', delete: 'ลบปลั๊กอิน', update: 'อัปเดตปลั๊กอิน', new: 'ใหม่', updateConfirm: 'ยืนยันการอัปเดต', confirmUpdatePlugin: 'คุณแน่ใจหรือไม่ว่าต้องการอัปเดตปลั๊กอิน ({{author}}/{{name}})?', confirmUpdate: 'ยืนยันการอัปเดต', updating: 'กำลังอัปเดต...', updateSuccess: 'อัปเดตปลั๊กอินสำเร็จ', updateError: 'อัปเดตล้มเหลว: ', saveConfigSuccessNormal: 'บันทึกการกำหนดค่าสำเร็จ', saveConfigError: 'บันทึกการกำหนดค่าล้มเหลว: ', config: 'การกำหนดค่า', readme: 'เอกสาร', viewSource: 'ดูซอร์สโค้ด', loadingReadme: 'กำลังโหลดเอกสาร...', noReadme: 'ปลั๊กอินนี้ไม่มีเอกสาร README', tabDocs: 'เอกสาร', tabLogs: 'บันทึก', logsLevelAll: 'ทุกระดับ', logsRefresh: 'รีเฟรช', logsAutoRefresh: 'รีเฟรชอัตโนมัติ', logsEmpty: 'ยังไม่มีบันทึก บันทึกที่ปลั๊กอินพิมพ์ผ่าน logger จะแสดงที่นี่', fileUpload: { tooLarge: 'ขนาดไฟล์เกินขีดจำกัด 10MB', success: 'อัปโหลดไฟล์สำเร็จ', failed: 'อัปโหลดไฟล์ล้มเหลว', uploading: 'กำลังอัปโหลด...', chooseFile: 'เลือกไฟล์', addFile: 'เพิ่มไฟล์', }, installFromGithub: 'จาก GitHub', enterRepoUrl: 'กรอก URL ของ GitHub repository', repoUrlPlaceholder: 'เช่น https://github.com/owner/repo', fetchingReleases: 'กำลังดึงรีลีส...', selectRelease: 'เลือกรีลีส', noReleasesFound: 'ไม่พบรีลีส', fetchReleasesError: 'ไม่สามารถดึงรีลีสได้: ', selectAsset: 'เลือกไฟล์เพื่อติดตั้ง', noAssetsFound: 'ไม่มีไฟล์ .lbpkg ในรีลีสนี้', fetchAssetsError: 'ไม่สามารถดึงไฟล์แนบได้: ', backToReleases: 'กลับไปรีลีส', backToRepoUrl: 'กลับไป URL ของ repository', backToAssets: 'กลับไปไฟล์แนบ', releaseTag: 'แท็ก: {{tag}}', releaseName: 'ชื่อ: {{name}}', publishedAt: 'เผยแพร่เมื่อ: {{date}}', prerelease: 'รุ่นก่อนเผยแพร่', assetSize: 'ขนาด: {{size}}', confirmInstall: 'ยืนยันการติดตั้ง', installFromGithubDesc: 'ติดตั้งปลั๊กอินจาก GitHub Release', goToMarketplace: 'ไปที่ตลาดปลั๊กอิน', installProgress: { title: 'กำลังติดตั้ง {{name}}', titleGeneric: 'การติดตั้งปลั๊กอิน', overallProgress: 'ความคืบหน้าโดยรวม', downloading: 'กำลังดาวน์โหลดปลั๊กอิน', installingDeps: 'กำลังติดตั้งแพ็กเกจ', initializing: 'กำลังเริ่มต้นการตั้งค่า', launching: 'กำลังเปิดใช้งานปลั๊กอิน', completed: 'เสร็จสมบูรณ์', failed: 'ล้มเหลว', downloadSize: 'ขนาดแพ็กเกจ: {{size}}', depsInfo: '{{count}} แพ็กเกจที่ต้องติดตั้ง', depsProgress: 'ติดตั้งแล้ว {{installed}}/{{total}} · เหลือ {{remaining}}', installComplete: 'ติดตั้งปลั๊กอินสำเร็จ', dismiss: 'ปิด', background: 'ทำงานเบื้องหลัง', taskQueue: 'งานติดตั้ง', clearCompleted: 'ล้างที่เสร็จแล้ว', noTasks: 'ไม่มีงานติดตั้ง', titlePlugin: 'กำลังติดตั้งปลั๊กอิน {{name}}', titleMCP: 'กำลังติดตั้งเซิร์ฟเวอร์ MCP {{name}}', titleSkill: 'กำลังติดตั้งสกิล {{name}}', installCompletePlugin: 'ติดตั้งปลั๊กอินสำเร็จ', installCompleteMCP: 'ติดตั้งเซิร์ฟเวอร์ MCP สำเร็จ', installCompleteSkill: 'ติดตั้งสกิลสำเร็จ', }, uploadPluginOnly: 'รองรับเฉพาะแพ็กเกจปลั๊กอิน .lbpkg', }, market: { searchPlaceholder: 'ค้นหาปลั๊กอิน...', searchPlaceholderCount: 'ค้นหา {{count}} ส่วนขยาย ความสามารถ หรือกรณีใช้งาน...', searchResults: 'พบ {{count}} ส่วนขยาย', totalPlugins: 'ทั้งหมด {{count}} ส่วนขยาย', noPlugins: 'ไม่มีปลั๊กอินที่พร้อมใช้งาน', noResults: 'ไม่พบปลั๊กอินที่เกี่ยวข้อง', loadingMore: 'กำลังโหลดเพิ่มเติม...', loading: 'กำลังโหลด...', allLoaded: 'แสดงปลั๊กอินทั้งหมดแล้ว', allLoadedCount: 'แสดงส่วนขยายทั้งหมด {{count}} รายการแล้ว', install: 'ติดตั้ง', installConfirm: 'คุณแน่ใจหรือไม่ว่าต้องการติดตั้งปลั๊กอิน "{{name}}" ({{version}})?', downloadComplete: 'ดาวน์โหลดปลั๊กอิน "{{name}}" เสร็จสมบูรณ์', installFailed: 'ติดตั้งล้มเหลว กรุณาลองใหม่ภายหลัง', loadFailed: 'ไม่สามารถดึงรายการปลั๊กอินได้ กรุณาลองใหม่ภายหลัง', noDescription: 'ไม่มีคำอธิบาย', recommendation: { pause: 'หยุดการหมุนอัตโนมัติชั่วคราว', resume: 'เล่นการหมุนอัตโนมัติต่อ', }, notFound: 'ไม่พบข้อมูลปลั๊กอิน', sortBy: 'เรียงตาม', sort: { hottest: 'ยอดนิยมที่สุด', recentlyAdded: 'เพิ่มล่าสุด', recentlyUpdated: 'อัปเดตล่าสุด', mostDownloads: 'ดาวน์โหลดมากที่สุด', leastDownloads: 'ดาวน์โหลดน้อยที่สุด', }, downloads: 'ดาวน์โหลด', download: 'ดาวน์โหลด', like: 'ถูกใจ', unlike: 'เลิกถูกใจ', likeFailed: 'อัปเดตการถูกใจไม่สำเร็จ โปรดลองอีกครั้ง', repository: 'Repository', downloadFailed: 'ดาวน์โหลดล้มเหลว', noReadme: 'ปลั๊กอินนี้ไม่มีเอกสาร README', description: 'คำอธิบาย', tagLabel: 'แท็ก', submissionTitle: 'คุณมีปลั๊กอินที่ส่งเพื่อตรวจสอบอยู่: {{name}}', submissionPending: 'ปลั๊กอินที่คุณส่งกำลังอยู่ระหว่างการตรวจสอบ: {{name}}', submissionApproved: 'ปลั๊กอินที่คุณส่งได้รับการอนุมัติแล้ว: {{name}}', submissionRejected: 'ปลั๊กอินที่คุณส่งถูกปฏิเสธ: {{name}}', clickToRevoke: 'เพิกถอน', revokeSuccess: 'เพิกถอนสำเร็จ', revokeFailed: 'เพิกถอนล้มเหลว', submissionDetails: 'รายละเอียดการส่งปลั๊กอิน', markAsRead: 'ทำเครื่องหมายว่าอ่านแล้ว', markAsReadSuccess: 'ทำเครื่องหมายว่าอ่านแล้ว', markAsReadFailed: 'ทำเครื่องหมายว่าอ่านแล้วล้มเหลว', filterByComponent: 'ส่วนประกอบปลั๊กอิน', filterByComponentHint: 'ประเภทความสามารถที่ปลั๊กอินมีให้ เช่น เครื่องมือ (Tool) คำสั่ง (Command) ตัวรับฟังเหตุการณ์ (EventListener) เป็นต้น ใช้เพื่อขยายความสามารถต่าง ๆ ของ LangBot กรองตามส่วนประกอบเพื่อแสดงเฉพาะปลั๊กอินที่มีความสามารถนั้น', allComponents: 'ส่วนประกอบทั้งหมด', componentName: { Tool: 'เครื่องมือ', EventListener: 'ตัวรับฟังเหตุการณ์', Command: 'คำสั่ง', KnowledgeEngine: 'เครื่องมือความรู้', Parser: 'ตัวแยกวิเคราะห์', Page: 'หน้า', }, filterByType: 'ประเภท', allTypes: 'ทุกประเภท', typePlugin: 'ปลั๊กอิน', typeMCP: 'MCP', typeSkill: 'สกิล', requestPlugin: 'ขอปลั๊กอิน', viewDetails: 'ดูรายละเอียด', deprecated: 'เลิกใช้แล้ว', deprecatedTooltip: 'กรุณาติดตั้งปลั๊กอินเครื่องมือความรู้ที่เกี่ยวข้อง', filters: { allFormats: 'ทุกประเภท', more: 'เพิ่มเติม', advancedTitle: 'ตัวกรองขั้นสูง', advancedDescription: 'กรองตามประเภทส่วนขยาย', technicalType: 'ประเภทเทคนิค', }, allExtensions: 'ส่วนขยายทั้งหมด', tags: { filterByTags: 'กรองตามแท็ก', selected: 'เลือกแล้ว', selectTags: 'เลือกแท็ก', clearAll: 'ล้างทั้งหมด', noTags: 'ไม่มีแท็กที่พร้อมใช้งาน', }, installCard: 'ติดตั้ง {{name}}', }, mcp: { title: 'MCP', createServer: 'เพิ่มเซิร์ฟเวอร์ MCP', addMCPServer: 'เพิ่มเซิร์ฟเวอร์ MCP', editServer: 'แก้ไขเซิร์ฟเวอร์ MCP', deleteServer: 'ลบเซิร์ฟเวอร์ MCP', confirmDeleteServer: 'คุณแน่ใจหรือไม่ว่าต้องการลบเซิร์ฟเวอร์ MCP นี้?', confirmDeleteTitle: 'ลบเซิร์ฟเวอร์ MCP', getServerListError: 'ไม่สามารถดึงรายการเซิร์ฟเวอร์ MCP ได้: ', serverName: 'ชื่อเซิร์ฟเวอร์', serverMode: 'โหมดการเชื่อมต่อ', selectMode: 'เลือกโหมด', stdio: 'โหมด Stdio', sse: 'โหมด SSE', http: 'โหมด HTTP', local: 'ภายในเครื่อง (Stdio)', remote: 'ระยะไกล', localModeDescription: 'รันเซิร์ฟเวอร์ MCP ภายในเครื่องเป็นโปรเซสย่อยภายในแซนด์บ็อกซ์ Box', remoteModeDescription: 'เชื่อมต่อกับเซิร์ฟเวอร์ MCP ระยะไกลด้วย URL ระบบจะตรวจจับการขนส่ง (Streamable HTTP หรือ SSE) โดยอัตโนมัติ', remoteUrlPlaceholder: 'https://example.com/mcp', remoteUrlDescription: 'วาง URL ของเซิร์ฟเวอร์ MCP รองรับทั้งเอนด์พอยต์ Streamable HTTP และ SSE แบบเดิม', noServerInstalled: 'ยังไม่มีเซิร์ฟเวอร์ MCP ที่กำหนดค่า', serverNameRequired: 'ชื่อเซิร์ฟเวอร์ต้องไม่ว่างเปล่า', commandRequired: 'คำสั่งต้องไม่ว่างเปล่า', urlRequired: 'URL ต้องไม่ว่างเปล่า', timeoutMustBePositive: 'ค่าหมดเวลาต้องเป็นตัวเลขบวก', command: 'คำสั่ง', args: 'อาร์กิวเมนต์', env: 'ตัวแปรสภาพแวดล้อม', url: 'URL', headers: 'ส่วนหัว', timeout: 'หมดเวลา', toolCallTimeout: 'หมดเวลาการเรียกเครื่องมือ (วินาที)', toolCallTimeoutDescription: 'เวลารอสูงสุดต่อการเรียกเครื่องมือหนึ่งครั้ง ตั้งเป็น 0 เพื่อไม่จำกัด ค่าเริ่มต้นคือ 300 วินาที', addArgument: 'เพิ่มอาร์กิวเมนต์', addEnvVar: 'เพิ่มตัวแปรสภาพแวดล้อม', addHeader: 'เพิ่มส่วนหัว', keyName: 'ชื่อคีย์', value: 'ค่า', testing: 'กำลังทดสอบ...', connecting: 'กำลังเชื่อมต่อ...', testSuccess: 'ทดสอบสำเร็จ', testFailed: 'ทดสอบล้มเหลว: ', testError: 'ข้อผิดพลาดในการทดสอบ', refreshSuccess: 'รีเฟรชสำเร็จ', refreshFailed: 'รีเฟรชล้มเหลว: ', connectionSuccess: 'เชื่อมต่อสำเร็จ', connectionFailed: 'เชื่อมต่อล้มเหลว กรุณาตรวจสอบ URL', connectionFailedStatus: 'เชื่อมต่อล้มเหลว', boxDisabledStdioRefused: 'MCP server แบบ stdio ต้องใช้ Sandbox Box ซึ่งถูกปิดใช้งานในการตั้งค่า (box.enabled = false)', boxUnavailableStdioRefused: 'MCP server แบบ stdio ต้องใช้ Sandbox Box ซึ่งขณะนี้เชื่อมต่อไม่ได้', boxStdioRefusedSuggestion: 'กรุณาเปิดใช้งาน Box (box.enabled = true) และตรวจสอบว่ารันไทม์ทำงานปกติ หรือเปลี่ยน MCP server เป็นโหมด http/sse', boxRequired: 'ต้องใช้ Box', disabledByPolicy: 'ถูกปิดใช้งานโดยนโยบาย', stdioDisabledByPolicy: 'การติดตั้งใช้งานนี้ปิด Stdio MCP อยู่ โปรดใช้เซิร์ฟเวอร์ MCP แบบระยะไกล', stdioBlockedByBoxToast: 'ไม่สามารถบันทึก MCP โหมด stdio เนื่องจาก Sandbox Box ถูกปิดใช้งานหรือไม่พร้อมใช้งาน กรุณาเปิดใช้งาน Box หรือเลือกโหมด http/sse', toolsFound: 'เครื่องมือ', unknownError: 'ข้อผิดพลาดที่ไม่ทราบสาเหตุ', noToolsFound: 'ไม่พบเครื่องมือ', noResourcesFound: 'ไม่พบทรัพยากร', tabTools: 'เครื่องมือ', tabResources: 'ทรัพยากร', tabDocs: 'เอกสาร', tabLogs: 'บันทึก', logsLevelAll: 'ทุกระดับ', logsRefresh: 'รีเฟรช', logsAutoRefresh: 'รีเฟรชอัตโนมัติ', logsEmpty: 'ยังไม่มีบันทึก บันทึกการทำงานของ MCP Server จะแสดงที่นี่', noReadme: 'ไม่มีเอกสาร', parseResultFailed: 'ไม่สามารถแยกวิเคราะห์ผลการทดสอบได้', noResultReturned: 'การทดสอบไม่ส่งผลลัพธ์กลับมา', getTaskFailed: 'ไม่สามารถดึงสถานะงานได้', noTaskId: 'ไม่ได้รับ ID งาน', deleteSuccess: 'ลบสำเร็จ', deleteFailed: 'ลบล้มเหลว: ', deleteError: 'ลบล้มเหลว: ', saveSuccess: 'บันทึกสำเร็จ', saveError: 'บันทึกล้มเหลว: ', createSuccess: 'สร้างสำเร็จ', createFailed: 'สร้างล้มเหลว: ', createError: 'สร้างล้มเหลว: ', loadFailed: 'โหลดล้มเหลว', modifyFailed: 'แก้ไขล้มเหลว: ', toolCount: 'เครื่องมือ: {{count}}', parameterCount: 'พารามิเตอร์: {{count}}', noParameters: 'ไม่มีพารามิเตอร์', resourceCount: 'ทรัพยากร: {{count}}', resourceBinaryContent: 'เนื้อหาไบนารี (ไม่สามารถแสดงได้)', resourceBinaryOmitted: 'ละเว้นเนื้อหาไบนารีตามนโยบายความปลอดภัยของทรัพยากร', resourceTruncated: 'ตัดเนื้อหาตามขีดจำกัดไบต์หรือโทเคน', resourceReadFailed: 'ไม่สามารถอ่านเนื้อหาทรัพยากรได้', statusConnected: 'เชื่อมต่อแล้ว', statusDisconnected: 'ไม่ได้เชื่อมต่อ', statusError: 'ข้อผิดพลาดการเชื่อมต่อ', statusDisabled: 'ปิดใช้งาน', loading: 'กำลังโหลด...', starCount: 'ดาว: {{count}}', install: 'ติดตั้ง', installFromGithub: 'ติดตั้งเซิร์ฟเวอร์ MCP จาก GitHub', add: 'เพิ่ม', name: 'ชื่อ', nameRequired: 'ชื่อต้องไม่ว่างเปล่า', sseTimeout: 'หมดเวลา SSE', sseTimeoutDescription: 'หมดเวลาสำหรับการสร้างการเชื่อมต่อ SSE', extraParametersDescription: 'พารามิเตอร์เพิ่มเติมสำหรับกำหนดค่าพฤติกรรมเฉพาะของเซิร์ฟเวอร์ MCP', timeoutMustBeNumber: 'ค่าหมดเวลาต้องเป็นตัวเลข', timeoutNonNegative: 'ค่าหมดเวลาต้องไม่เป็นค่าลบ', sseTimeoutMustBeNumber: 'ค่าหมดเวลา SSE ต้องเป็นตัวเลข', sseTimeoutNonNegative: 'ค่าหมดเวลา SSE ต้องไม่เป็นค่าลบ', updateSuccess: 'อัปเดตสำเร็จ', updateFailed: 'อัปเดตล้มเหลว: ', selectFromSidebar: 'เลือกเซิร์ฟเวอร์ MCP จากแถบด้านข้าง', dangerZone: 'โซนอันตราย', dangerZoneDescription: 'การดำเนินการที่ย้อนกลับไม่ได้และเป็นอันตรายสำหรับเซิร์ฟเวอร์ MCP นี้', deleteMCPAction: 'ลบเซิร์ฟเวอร์ MCP นี้', deleteMCPHint: 'เมื่อลบแล้ว การกำหนดค่าเซิร์ฟเวอร์ MCP นี้จะไม่สามารถกู้คืนได้', }, pipelines: { title: 'ไปป์ไลน์', description: 'Pipeline กำหนดกระบวนการประมวลผลเหตุการณ์ข้อความ ใช้เพื่อผูกกับ Bot', createPipeline: 'สร้าง Pipeline', selectFromSidebar: 'เลือก Pipeline จากแถบด้านข้าง', editPipeline: 'แก้ไข Pipeline', chat: 'แชท', configuration: 'การกำหนดค่า', debugChat: 'แชทดีบัก', getPipelineListError: 'ไม่สามารถดึงรายการ Pipeline ได้: ', daysAgo: 'วันก่อน', today: 'วันนี้', updateTime: 'อัปเดตเมื่อ ', defaultBadge: 'ค่าเริ่มต้น', sortBy: 'เรียงตาม', newestCreated: 'สร้างล่าสุด', earliestCreated: 'สร้างเก่าสุด', recentlyEdited: 'แก้ไขล่าสุด', earliestEdited: 'แก้ไขเก่าสุด', basicInfo: 'ข้อมูลพื้นฐาน', basicInfoDescription: 'ตั้งชื่อ ไอคอน และคำอธิบาย Pipeline', aiCapabilities: 'AI', triggerConditions: 'ทริกเกอร์', safetyControls: 'ความปลอดภัย', outputProcessing: 'เอาต์พุต', nameRequired: 'ชื่อต้องไม่ว่างเปล่า', descriptionRequired: 'คำอธิบายต้องไม่ว่างเปล่า', createSuccess: 'สร้างสำเร็จ กรุณาแก้ไขพารามิเตอร์ Pipeline', createError: 'สร้างล้มเหลว: ', saveSuccess: 'บันทึกสำเร็จ', saveError: 'บันทึกล้มเหลว: ', copySuffix: ' สำเนา', deleteConfirmation: 'คุณแน่ใจหรือไม่ว่าต้องการลบ Pipeline นี้? Bot ที่ผูกกับ Pipeline นี้จะไม่ทำงาน', defaultPipelineCannotDelete: 'ไม่สามารถลบ Pipeline ค่าเริ่มต้นได้', deleteSuccess: 'ลบสำเร็จ', deleteError: 'ลบล้มเหลว: ', copyConfirmTitle: 'ยืนยันการคัดลอก', copyConfirmation: 'คุณแน่ใจหรือไม่ว่าต้องการคัดลอก Pipeline นี้? การดำเนินการนี้จะสร้าง Pipeline ใหม่พร้อมการกำหนดค่าทั้งหมด', unsavedChanges: 'คุณมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึก', dangerZone: 'โซนอันตราย', dangerZoneDescription: 'การดำเนินการที่ย้อนกลับไม่ได้และเป็นอันตราย', deletePipelineAction: 'ลบ Pipeline นี้', deletePipelineHint: 'เมื่อลบแล้ว Bot ที่ผูกกับ Pipeline นี้จะหยุดทำงาน', copyPipelineAction: 'คัดลอก Pipeline นี้', copyPipelineHint: 'สร้าง Pipeline ใหม่พร้อมการกำหนดค่าทั้งหมดที่คัดลอกมา', extensions: { title: 'ส่วนขยาย', loadError: 'ไม่สามารถโหลดปลั๊กอินได้', saveSuccess: 'บันทึกสำเร็จ', saveError: 'บันทึกล้มเหลว', noPluginsAvailable: 'ไม่มีปลั๊กอินที่พร้อมใช้งาน', disabled: 'ปิดใช้งาน', noPluginsSelected: 'ไม่ได้เลือกปลั๊กอิน', addPlugin: 'เพิ่มปลั๊กอิน', selectPlugins: 'เลือกปลั๊กอิน', pluginsTitle: 'ปลั๊กอิน', mcpServersTitle: 'เซิร์ฟเวอร์ MCP', mcpResourcesTitle: 'ทรัพยากร MCP', noMCPServersSelected: 'ไม่ได้เลือกเซิร์ฟเวอร์ MCP', noMCPResourcesAvailable: 'ไม่มีทรัพยากร MCP ที่พร้อมใช้งาน', addMCPServer: 'เพิ่มเซิร์ฟเวอร์ MCP', selectMCPServers: 'เลือกเซิร์ฟเวอร์ MCP', enableMCPResourceAgentRead: 'อนุญาตให้โมเดลอ่าน', toolCount: '{{count}} เครื่องมือ', noPluginsInstalled: 'ไม่มีปลั๊กอินที่ติดตั้ง', noMCPServersConfigured: 'ไม่มีเซิร์ฟเวอร์ MCP ที่กำหนดค่า', selectAll: 'เลือกทั้งหมด', enableAllPlugins: 'เปิดใช้งานปลั๊กอินทั้งหมด', enableAllMCPServers: 'เปิดใช้งานเซิร์ฟเวอร์ MCP ทั้งหมด', allPluginsEnabled: 'เปิดใช้งานปลั๊กอินทั้งหมดแล้ว', allMCPServersEnabled: 'เปิดใช้งานเซิร์ฟเวอร์ MCP ทั้งหมดแล้ว', enableAllSkills: 'เปิดใช้สกิลทั้งหมด', allSkillsEnabled: 'เปิดใช้สกิลทั้งหมดแล้ว', skillsTitle: 'สกิล', noSkillsSelected: 'ยังไม่ได้เลือกสกิล', addSkill: 'เพิ่มสกิล', selectSkills: 'เลือกสกิล', noSkillsAvailable: 'ไม่มีสกิลที่พร้อมใช้งาน', mcpServersScopeTooltip: 'ส่วนนี้ใช้ควบคุมว่า Pipeline ผูกกับเซิร์ฟเวอร์ MCP ใดเท่านั้น ส่วนเครื่องมือและทรัพยากร MCP รายตัวให้เลือกใน AI Feature > Local Agent', enableAllMCPServersTooltip: 'เมื่อเปิดใช้ เซิร์ฟเวอร์ MCP ที่ตั้งค่าและเปิดใช้งานทั้งหมดจะเป็นตัวเลือกสำหรับเครื่องมือและทรัพยากร MCP ใน AI Feature', }, localAgent: { toolsTitle: 'เครื่องมือ', toolsDescription: 'เลือกเครื่องมือจากปลั๊กอิน MCP และเครื่องมือในตัวสำหรับ Local Agent นี้', toolsScopeTooltip: 'เครื่องมือ MCP จะแสดงจากเซิร์ฟเวอร์ MCP ที่ผูกไว้ในส่วนขยายเท่านั้น หากต้องการเพิ่มแหล่งเครื่องมือ ให้ไปผูกเซิร์ฟเวอร์ที่นั่นก่อน', enableAllTools: 'เปิดใช้เครื่องมือทั้งหมด', allToolsEnabled: 'เปิดใช้เครื่องมือที่มีทั้งหมดแล้ว', noToolsSelected: 'ยังไม่ได้เลือกเครื่องมือ', editTools: 'แก้ไขเครื่องมือ', builtinTools: 'เครื่องมือในตัว', pluginTools: 'เครื่องมือปลั๊กอิน', skillTools: 'เครื่องมือสกิล', mcpTools: 'เครื่องมือ MCP', mcpToolsScopeTooltip: 'ที่นี่จะแสดงเฉพาะเครื่องมือจากเซิร์ฟเวอร์ MCP ที่อนุญาตอยู่ในส่วนขยาย', skillToolsScopeTooltip: 'เครื่องมือสกิลจะแสดงเมื่อบริการสกิลของ LangBot และแบ็กเอนด์แซนด์บ็อกซ์ Box พร้อมใช้งาน เพื่อให้ Agent เปิดใช้หรือลงทะเบียนสกิลได้', selectTools: 'เลือกเครื่องมือ', resourcesTitle: 'ทรัพยากร', resourcesDescription: 'เลือกทรัพยากร MCP และคลังความรู้สำหรับ Local Agent นี้', knowledgeBases: 'คลังความรู้', mcpResources: 'ทรัพยากร MCP', mcpResourcesScopeTooltip: 'ที่นี่จะแสดงเฉพาะทรัพยากรจากเซิร์ฟเวอร์ MCP ที่อนุญาตอยู่ในส่วนขยาย', enableMCPResourceRead: 'อนุญาตให้โมเดลอ่านทรัพยากร MCP', mcpResourceReadTooltip: 'เมื่อปิด ทรัพยากร MCP ที่เลือกไว้จะไม่ถูกใส่เข้าไปในบริบทของโมเดล', noMCPResourcesAvailable: 'ไม่มีทรัพยากร MCP ที่พร้อมใช้งาน', selectKnowledgeBases: 'เลือกคลังความรู้', }, debugDialog: { title: 'แชท Pipeline', selectPipeline: 'เลือก Pipeline', sessionType: 'ประเภทเซสชัน', privateChat: 'แชทส่วนตัว', groupChat: 'แชทกลุ่ม', send: 'ส่ง', reset: 'รีเซ็ตการสนทนา', inputPlaceholder: 'ส่งข้อความ{{type}}...', noMessages: 'ไม่มีข้อความ', userMessage: 'ผู้ใช้', botMessage: 'Bot', sendFailed: 'ส่งล้มเหลว', resetSuccess: 'รีเซ็ตการสนทนาสำเร็จ', resetFailed: 'รีเซ็ตล้มเหลว', loadMessagesFailed: 'ไม่สามารถโหลดข้อความได้', loadPipelinesFailed: 'ไม่สามารถโหลด Pipeline ได้', atTips: 'กล่าวถึง Bot', streaming: 'สตรีมมิ่ง', streamOutput: 'สตรีม', connected: 'เชื่อมต่อ WebSocket แล้ว', disconnected: 'ยกเลิกการเชื่อมต่อ WebSocket', connectionError: 'ข้อผิดพลาดการเชื่อมต่อ WebSocket', connectionFailed: 'เชื่อมต่อ WebSocket ล้มเหลว', notConnected: 'ยังไม่ได้เชื่อมต่อ WebSocket กรุณาลองใหม่ภายหลัง', imageUploadFailed: 'อัปโหลดรูปภาพล้มเหลว', reply: 'ตอบกลับ', replyTo: 'ตอบกลับถึง', showMarkdown: 'แสดง Markdown', showRaw: 'แสดงข้อมูลดิบ', allMembers: 'สมาชิกทั้งหมด', file: 'ไฟล์', voice: 'เสียง', uploadImage: 'อัปโหลดรูปภาพ', uploading: 'กำลังอัปโหลด...', }, monitoring: { title: 'แดชบอร์ด', description: 'ดูบันทึกการดำเนินการและข้อผิดพลาดของ Pipeline นี้ (24 ชั่วโมงล่าสุด)', detailedLogs: 'บันทึกโดยละเอียด', }, }, knowledge: { title: 'ฐานความรู้', createKnowledgeBase: 'สร้างฐานความรู้', selectFromSidebar: 'เลือกฐานความรู้จากแถบด้านข้าง', editKnowledgeBase: 'แก้ไขฐานความรู้', selectKnowledgeBase: 'เลือกฐานความรู้', selectKnowledgeBases: 'เลือกฐานความรู้', addKnowledgeBase: 'เพิ่มฐานความรู้', noKnowledgeBaseSelected: 'ไม่ได้เลือกฐานความรู้', empty: 'ว่างเปล่า', editDocument: 'เอกสาร', description: 'กำหนดค่าฐานความรู้เพื่อปรับปรุงการตอบสนองของ LLM', metadata: 'ข้อมูลเมตา', documents: 'เอกสาร', kbNameRequired: 'ชื่อฐานความรู้ต้องไม่ว่างเปล่า', kbDescriptionRequired: 'คำอธิบายฐานความรู้ต้องไม่ว่างเปล่า', embeddingModelUUIDRequired: 'โมเดล Embedding ต้องไม่ว่างเปล่า', daysAgo: 'วันก่อน', today: 'วันนี้', kbName: 'ชื่อฐานความรู้', kbDescription: 'คำอธิบายฐานความรู้', topK: 'Top K', topKRequired: 'ค่า Top K ต้องไม่ว่างเปล่า', topKMax: 'ค่าสูงสุดของ Top K คือ 30', topKdescription: 'ใช้เพื่อระบุจำนวนเอกสารที่เกี่ยวข้องที่ต้องการดึง มีช่วง 1 ถึง 30', defaultDescription: 'ฐานความรู้หนึ่งแห่ง', embeddingModelUUID: 'โมเดล Embedding', selectEmbeddingModel: 'เลือกโมเดล Embedding', embeddingModelDescription: 'ใช้เพื่อแปลงข้อความเป็นเวกเตอร์ คุณสามารถกำหนดค่าได้ในหน้าโมเดล', updateTime: 'อัปเดตเมื่อ ', cannotChangeEmbeddingModel: 'ฐานความรู้ที่สร้างแล้วไม่สามารถเปลี่ยนโมเดล Embedding ได้', updateKnowledgeBaseSuccess: 'อัปเดตฐานความรู้สำเร็จ', updateKnowledgeBaseFailed: 'อัปเดตฐานความรู้ล้มเหลว: ', documentsTab: { name: 'ชื่อ', status: 'สถานะ', noResults: 'ไม่มีเอกสาร', dragAndDrop: 'ลากและวางไฟล์ที่นี่หรือคลิกเพื่ออัปโหลด', uploading: 'กำลังอัปโหลด...', supportedFormats: 'รองรับไฟล์ PDF, Word, TXT, Markdown, HTML, ZIP และรูปแบบเอกสารอื่นๆ', uploadSuccess: 'อัปโหลดไฟล์สำเร็จ!', uploadError: 'อัปโหลดไฟล์ล้มเหลว: ', uploadingFile: 'กำลังอัปโหลดไฟล์...', fileSizeExceeded: 'ขนาดไฟล์เกินขีดจำกัด 10MB กรุณาแบ่งเป็นไฟล์ขนาดเล็กลง', actions: 'การดำเนินการ', delete: 'ลบไฟล์', fileDeleteSuccess: 'ลบไฟล์สำเร็จ', fileDeleteFailed: 'ลบไฟล์ล้มเหลว: ', processing: 'กำลังประมวลผล', completed: 'เสร็จสมบูรณ์', failed: 'ล้มเหลว', selectParser: 'เลือกตัวแยกวิเคราะห์', builtInParser: 'จัดเตรียมโดยเครื่องมือความรู้', noParserAvailable: 'ไม่มีตัวแยกวิเคราะห์ที่รองรับไฟล์ประเภทนี้ กรุณาติดตั้งปลั๊กอินตัวแยกวิเคราะห์ที่สามารถจัดการรูปแบบนี้ได้', installParserHint: 'เรียกดูปลั๊กอินตัวแยกวิเคราะห์ใน Marketplace →', confirmUpload: 'อัปโหลด', cancelUpload: 'ยกเลิก', }, deleteKnowledgeBaseConfirmation: 'คุณแน่ใจหรือไม่ว่าต้องการลบฐานความรู้นี้? เอกสารทั้งหมดในฐานความรู้นี้จะถูกลบ', retrieve: 'ทดสอบการดึงข้อมูล', retrieveTest: 'ทดสอบการดึงข้อมูล', query: 'คำค้นหา', queryPlaceholder: 'กรอกข้อความค้นหา...', distance: 'ระยะห่าง', content: 'เนื้อหา', fileName: 'ชื่อไฟล์', noResults: 'ไม่มีผลลัพธ์', retrieveError: 'ดึงข้อมูลล้มเหลว: ', unknownEngine: 'เครื่องมือไม่ทราบ', knowledgeEngine: 'เครื่องมือความรู้', knowledgeEngineRequired: 'กรุณาเลือกเครื่องมือความรู้', selectKnowledgeEngine: 'เลือกเครื่องมือความรู้', builtInEngine: 'เครื่องมือในตัว', cannotChangeKnowledgeEngine: 'ไม่สามารถเปลี่ยนเครื่องมือความรู้หลังจากสร้างแล้ว', basicInfo: 'ข้อมูลพื้นฐาน', basicInfoDescription: 'ตั้งชื่อ ไอคอน และคำอธิบายฐานความรู้', engineSettings: 'การตั้งค่าเครื่องมือ', engineSettingsDescription: 'การกำหนดค่าสำหรับเครื่องมือความรู้ที่เลือก', engineSettingsReadonly: 'อ่านอย่างเดียวในโหมดแก้ไข', engineSettingsInvalid: 'การตั้งค่าเครื่องมือไม่ถูกต้อง โปรดตรวจสอบฟิลด์ที่จำเป็น', retrievalSettingsInvalid: 'การตั้งค่าการดึงข้อมูลไม่ถูกต้อง โปรดตรวจสอบฟิลด์ที่จำเป็น', retrievalSettings: 'การตั้งค่าการดึงข้อมูล', retrievalSettingsDescription: 'กำหนดค่าวิธีดึงเอกสารจากฐานความรู้นี้', dangerZone: 'โซนอันตราย', dangerZoneDescription: 'การดำเนินการที่ย้อนกลับไม่ได้และเป็นอันตราย', deleteKbAction: 'ลบฐานความรู้นี้', deleteKbHint: 'เมื่อลบแล้ว เอกสารและข้อมูลทั้งหมดในฐานความรู้นี้จะถูกลบอย่างถาวร', noEnginesAvailable: 'ไม่มีเครื่องมือฐานความรู้ที่พร้อมใช้งาน', installEngineHint: 'กรุณาติดตั้งปลั๊กอิน "เครื่องมือความรู้" ก่อน', createKnowledgeBaseFailed: 'สร้างฐานความรู้ล้มเหลว: ', loadKnowledgeBaseFailed: 'โหลดฐานความรู้ล้มเหลว: ', deleteKnowledgeBaseFailed: 'ลบฐานความรู้ล้มเหลว: ', getKnowledgeBaseListError: 'ไม่สามารถดึงรายการฐานความรู้ได้: ', embeddingModel: 'โมเดล Embedding', embeddingModelRequired: 'เครื่องมือนี้ต้องใช้โมเดล Embedding', addExternal: 'เพิ่มฐานความรู้ภายนอก', createExternalSuccess: 'สร้างฐานความรู้ภายนอกสำเร็จ', updateExternalSuccess: 'อัปเดตฐานความรู้ภายนอกสำเร็จ', deleteExternalSuccess: 'ลบฐานความรู้ภายนอกสำเร็จ', retriever: 'ตัวดึงข้อมูล', selectRetriever: 'เลือกตัวดึงข้อมูล...', retrieverConfiguration: 'การกำหนดค่าตัวดึงข้อมูล', retrieverInstallInfo: 'คุณสามารถติดตั้งปลั๊กอินตัวดึงข้อมูลความรู้ได้จาก', retrieverMarketLink: 'ที่นี่', migration: { title: 'การย้ายฐานความรู้', description: 'เวอร์ชันใหม่ได้ปรับโครงสร้างฐานความรู้เป็นสถาปัตยกรรมแบบปลั๊กอิน รวมฐานความรู้ในตัวและภายนอกเป็นปลั๊กอิน "เครื่องมือความรู้" จำเป็นต้องย้ายข้อมูลฐานความรู้เดิม ข้อมูลเก่าของคุณได้รับการสำรองข้อมูลอัตโนมัติในฐานข้อมูลแล้ว', detected: 'พบ {{total}} ฐานความรู้ที่ต้องย้าย ({{internal}} ภายใน, {{external}} ภายนอก)', startWithInstall: 'ติดตั้งปลั๊กอินอัตโนมัติและย้ายข้อมูล', startDataOnly: 'ย้ายข้อมูลเท่านั้น', dataOnlyHint: '"ย้ายข้อมูลเท่านั้น" สำหรับสภาพแวดล้อมออฟไลน์/อินทราเน็ต กรุณาติดตั้งปลั๊กอินที่เกี่ยวข้องด้วยตนเองหลังจากย้ายข้อมูล', dismiss: 'ยกเลิกข้อมูลเดิม', running: 'กำลังย้ายฐานความรู้ กรุณารอ...', success: 'การย้ายฐานความรู้เสร็จสมบูรณ์', error: 'การย้ายฐานความรู้ล้มเหลว: ', dismissError: 'การดำเนินการล้มเหลว', retry: 'ลองใหม่', }, }, register: { title: 'เริ่มต้น LangBot 👋', description: 'นี่เป็นครั้งแรกที่คุณเริ่มใช้งาน LangBot', adminAccountNote: 'บัญชีที่คุณใช้ที่นี่จะถูกตั้งเป็นบัญชีผู้ดูแลระบบ', register: 'ลงทะเบียน', initWithSpace: 'เริ่มต้นด้วย Space', spaceRecommended: 'แนะนำ: ใช้ API โมเดลที่เสถียรอย่างเป็นทางการและบริการคลาวด์', spaceInfoTip1: 'Space ให้บริการยืนยันตัวตนแบบรวมโดยไม่อัปโหลดข้อมูลสำคัญใดๆ ของคุณ', spaceInfoTip2: 'การเข้าสู่ระบบด้วยบัญชี Space ช่วยให้คุณเข้าถึงโมเดล LangBot และบริการคลาวด์อื่นๆ รวมถึงเครดิตเรียกใช้โมเดลฟรีเพื่อช่วยให้คุณเริ่มต้นได้อย่างรวดเร็ว', spaceInfoTip3: 'วิธีการเข้าสู่ระบบของคุณไม่มีผลต่อฟีเจอร์อื่นๆ คุณสามารถกำหนดค่าและใช้โมเดลจากแหล่งอื่นได้ตลอดเวลา', registerLocal: 'ลงทะเบียนบัญชีท้องถิ่น', registerWithPassword: 'ลงทะเบียนด้วยอีเมลและรหัสผ่าน', initSuccess: 'เริ่มต้นระบบสำเร็จ กรุณาเข้าสู่ระบบ', initFailed: 'เริ่มต้นระบบล้มเหลว: ', }, resetPassword: { title: 'รีเซ็ตรหัสผ่าน 🔐', description: 'กรอกคีย์กู้คืนและรหัสผ่านใหม่เพื่อรีเซ็ตรหัสผ่านบัญชี', recoveryKey: 'คีย์กู้คืน', recoveryKeyDescription: 'เก็บไว้ใน `system.recovery_key` ของไฟล์กำหนดค่า `data/config.yaml`', newPassword: 'รหัสผ่านใหม่', enterRecoveryKey: 'กรอกคีย์กู้คืน', enterNewPassword: 'กรอกรหัสผ่านใหม่', recoveryKeyRequired: 'คีย์กู้คืนต้องไม่ว่างเปล่า', newPasswordRequired: 'รหัสผ่านใหม่ต้องไม่ว่างเปล่า', resetPassword: 'รีเซ็ตรหัสผ่าน', resetting: 'กำลังรีเซ็ต...', resetSuccess: 'รีเซ็ตรหัสผ่านสำเร็จ กรุณาเข้าสู่ระบบ', resetFailed: 'รีเซ็ตรหัสผ่านล้มเหลว กรุณาตรวจสอบอีเมลและคีย์กู้คืน', backToLogin: 'กลับไปหน้าเข้าสู่ระบบ', }, embedding: { description: 'จัดการโมเดล Embedding สำหรับการแปลงข้อความเป็นเวกเตอร์', createModel: 'สร้างโมเดล Embedding', editModel: 'แก้ไขโมเดล Embedding', getModelListError: 'ไม่สามารถดึงรายการโมเดล Embedding ได้: ', embeddingModels: 'Embedding', extraParametersDescription: 'จะถูกแนบไปกับเนื้อหาคำขอ เช่น encoding_format, dimensions เป็นต้น', }, llm: { description: 'จัดการโมเดล LLM สำหรับการสร้างบทสนทนา', llmModels: 'LLM', extraParametersDescription: 'จะถูกแนบไปกับเนื้อหาคำขอ เช่น max_tokens, temperature, top_p เป็นต้น', }, version: { newVersionAvailable: 'มีเวอร์ชันใหม่', viewUpdateGuide: 'ดูคู่มือการอัปเดต', noReleaseNotes: 'ไม่มีบันทึกการเผยแพร่', }, account: { settings: 'การตั้งค่าบัญชี', settingsDescription: 'จัดการรหัสผ่านและบัญชีที่เชื่อมโยงของคุณ', setPassword: 'ตั้งรหัสผ่าน', passwordSetSuccess: 'ตั้งรหัสผ่านสำเร็จ', passwordStatus: 'รหัสผ่านท้องถิ่น', passwordSet: 'ตั้งค่าแล้ว', passwordNotSet: 'ยังไม่ได้ตั้งค่า', passwordSetDescription: 'ตั้งรหัสผ่านแล้ว คุณสามารถเข้าสู่ระบบด้วยอีเมลและรหัสผ่าน', spaceStatus: 'บัญชี Space', spaceBound: 'ผูกแล้ว', spaceNotBound: 'ยังไม่ผูก', spaceBoundDescription: 'ผูกบัญชี Space แล้ว สามารถใช้ API โมเดลอย่างเป็นทางการและบริการคลาวด์ได้', bindSpace: 'ผูกบัญชี Space', bindSpaceDescription: 'ผูกเพื่อใช้ API โมเดลอย่างเป็นทางการและบริการคลาวด์', bindSpaceButton: 'ผูก', bindSpaceConfirmTitle: 'ยืนยันการผูก', bindSpaceConfirmDescription: 'คุณกำลังจะผูกอินสแตนซ์ท้องถิ่นกับบัญชี Space', bindSpaceWarning: 'หลังจากผูกแล้ว อีเมลเข้าสู่ระบบของคุณจะเปลี่ยนจาก {{localEmail}} เป็นอีเมลบัญชี Space', bindSpaceSuccess: 'ผูกบัญชี Space สำเร็จ', bindSpaceFailed: 'ผูกบัญชี Space ล้มเหลว', bindSpaceInvalidState: 'คำขอผูกไม่ถูกต้อง กรุณาลองใหม่จากการตั้งค่าบัญชี', setPasswordHint: 'ตั้งรหัสผ่านเพื่อเข้าสู่ระบบด้วยอีเมลและรหัสผ่าน', spaceEmailMismatch: 'อีเมลเข้าสู่ระบบ Space ไม่ตรงกับอีเมลบัญชีท้องถิ่น', space_account_not_registeredTitle: 'Account not registered', space_account_not_registered: 'No local account is registered for this Space email. Ask the Workspace owner for an invitation.', space_account_binding_requiredTitle: 'Space connection required', space_account_binding_required: 'This local account must connect Space from Account settings before using Space login.', }, monitoring: { title: 'แดชบอร์ด', description: 'ตรวจสอบกิจกรรม Bot, การเรียก LLM และประสิทธิภาพของระบบ', overview: 'ภาพรวม', totalMessages: 'ข้อความทั้งหมด', llmCallsCount: 'การเรียก LLM', modelCallsCount: 'การเรียกโมเดล', successRate: 'อัตราความสำเร็จ', activeSessions: 'เซสชันที่ใช้งานอยู่', last24Hours: '24 ชั่วโมงล่าสุด', filters: { title: 'ตัวกรอง', bot: 'Bot', pipeline: 'Pipeline', allBots: 'Bot ทั้งหมด', selectBot: 'เลือก Bot', allPipelines: 'Pipeline ทั้งหมด', selectPipeline: 'เลือก Pipeline', loading: 'กำลังโหลด...', timeRange: 'ช่วงเวลา', customRange: 'ช่วงเวลาที่กำหนดเอง', from: 'จาก', to: 'ถึง', apply: 'นำไปใช้', reset: 'รีเซ็ตตัวกรอง', lastHour: '1 ชั่วโมงล่าสุด', last6Hours: '6 ชั่วโมงล่าสุด', last24Hours: '24 ชั่วโมงล่าสุด', last7Days: '7 วันล่าสุด', last30Days: '30 วันล่าสุด', }, tabs: { messages: 'บันทึกข้อความ', llmCalls: 'การเรียก LLM', embeddingCalls: 'การเรียก Embedding', modelCalls: 'การเรียกโมเดล', tokens: 'การติดตาม Token', sessions: 'การวิเคราะห์เซสชัน', feedback: 'ความคิดเห็นผู้ใช้', errors: 'บันทึกข้อผิดพลาด', }, messageList: { timestamp: 'เวลา', bot: 'Bot', pipeline: 'Pipeline', message: 'ข้อความ', sessionId: 'ID เซสชัน', status: 'สถานะ', actions: 'การดำเนินการ', viewDetails: 'ดูรายละเอียด', copyId: 'คัดลอก ID', noMessages: 'ไม่พบข้อความ', noMessagesDescription: 'ลองปรับตัวกรองหรือกลับมาตรวจสอบภายหลัง', loading: 'กำลังโหลดข้อความ...', loadMore: 'โหลดเพิ่มเติม', autoRefresh: 'รีเฟรชอัตโนมัติ', platform: 'บทบาท', user: 'ผู้ใช้', level: 'ระดับ', runner: 'ตัวประมวลผล', viewConversation: 'ดูการสนทนา', turns: '{{count}} รอบการสนทนา', userMessage: 'ผู้ใช้', noUserMessage: 'ยังไม่มีการบันทึกข้อความจากผู้ใช้', assistantMessage: 'ผู้ช่วย', assistantMessageCount: 'ผู้ช่วย +{{count}}', noAssistantMessage: 'ยังไม่มีการบันทึกคำตอบจากผู้ช่วย', messageCount: 'จำนวนข้อความ', conversationTrace: 'ลำดับการสนทนา', noLlmCalls: 'ยังไม่มีการบันทึกการเรียกโมเดล', roles: { user: 'ผู้ใช้', assistant: 'ผู้ช่วย', message: 'ข้อความ', }, }, llmCalls: { title: 'การเรียก LLM', model: 'โมเดล', tokens: 'โทเคน', duration: 'ระยะเวลา', cost: 'ค่าใช้จ่าย', noData: 'ไม่พบการเรียก LLM', inputTokens: 'โทเคนอินพุต', outputTokens: 'โทเคนเอาต์พุต', totalTokens: 'โทเคนทั้งหมด', avgDuration: 'ระยะเวลาเฉลี่ย', calls: 'การเรียก', }, toolCalls: { title: 'การเรียกใช้เครื่องมือ', totalCalls: 'การเรียก', duration: 'ระยะเวลาเครื่องมือ', errorCalls: 'การเรียกที่ล้มเหลว', arguments: 'อาร์กิวเมนต์', result: 'ผลลัพธ์', noToolCalls: 'ยังไม่มีการบันทึกการเรียกใช้เครื่องมือ', }, tokens: { totalTokens: 'Token ทั้งหมด', inputTokens: 'Token อินพุต', outputTokens: 'Token เอาต์พุต', avgPerCall: 'เฉลี่ย / การเรียก', throughput: 'ปริมาณงาน', tokensPerSec: 'tokens/วินาที', errorCalls: 'การเรียกที่ล้มเหลว', acrossCalls: 'จาก {{count}} การเรียก', ofTotal: 'จากทั้งหมด {{count}}', usageOverTime: 'การใช้ Token ตามช่วงเวลา', byModel: 'ตามโมเดล', model: 'โมเดล', calls: 'การเรียก', avgLatency: 'เวลาแฝงเฉลี่ย', noData: 'ไม่มีการใช้ Token ในช่วงเวลาที่เลือก', loadError: 'โหลดสถิติ Token ล้มเหลว: {{error}}', zeroTokenWarning: 'มีการเรียกที่สำเร็จ {{count}} ครั้งรายงานการใช้ Token เป็นศูนย์ โดยปกติหมายความว่าผู้ให้บริการต้นทางไม่ได้ส่งข้อมูลการใช้งานกลับมา โปรดตรวจสอบการตั้งค่าผู้ให้บริการโมเดล', bucket: { hour: 'รายชั่วโมง', day: 'รายวัน', }, }, embeddingCalls: { title: 'การเรียก Embedding', model: 'โมเดล', tokens: 'โทเคน', duration: 'ระยะเวลา', noData: 'ไม่พบการเรียก Embedding', promptTokens: 'โทเคนพรอมต์', totalTokens: 'โทเคนทั้งหมด', inputCount: 'จำนวนอินพุต', knowledgeBase: 'ฐานความรู้', queryText: 'คำค้นหา', }, modelCalls: { title: 'การเรียกโมเดล', llmModel: 'LLM', embeddingModel: 'Embedding', embeddingCall: 'Embedding', retrieveCall: 'การดึงข้อมูล', noData: 'ไม่พบการเรียกโมเดล', }, sessions: { sessionId: 'ID เซสชัน', messageCount: 'ข้อความ', duration: 'ระยะเวลา', lastActivity: 'กิจกรรมล่าสุด', noSessions: 'ไม่พบเซสชัน', startTime: 'เวลาเริ่มต้น', messageStats: 'สถิติข้อความ', totalMessages: 'ข้อความทั้งหมด', successMessages: 'สำเร็จ', errorMessages: 'ล้มเหลว', llmStats: 'สถิติ LLM', noData: 'ไม่พบเซสชัน', }, errors: { title: 'ข้อผิดพลาด', errorType: 'ประเภทข้อผิดพลาด', errorMessage: 'ข้อความผิดพลาด', occurredAt: 'เกิดขึ้นเมื่อ', noErrors: 'ไม่พบข้อผิดพลาด', stackTrace: 'Stack Trace', }, feedback: { title: 'ความคิดเห็นผู้ใช้', totalFeedback: 'ความคิดเห็นทั้งหมด', totalLikes: 'ถูกใจ', totalDislikes: 'ไม่ถูกใจ', satisfactionRate: 'อัตราความพึงพอใจ', like: 'ถูกใจ', dislike: 'ไม่ถูกใจ', noFeedback: 'ยังไม่มีความคิดเห็น', noFeedbackDescription: 'ความคิดเห็นของผู้ใช้จะแสดงที่นี่', feedbackList: 'รายการความคิดเห็น', feedbackContent: 'เนื้อหาความคิดเห็น', contextInfo: 'ข้อมูลบริบท', userId: 'ID ผู้ใช้', messageId: 'ID ข้อความ', streamId: 'ID คำถามที่เกี่ยวข้อง', inaccurateReasons: 'เหตุผลที่ไม่ถูกต้อง', platform: 'แพลตฟอร์ม', exportFeedback: 'ส่งออกความคิดเห็น', description: 'Tell us what went wrong or what could be better. Instance UUID and login account are included for diagnosis.', placeholder: 'Describe your suggestion, issue, or reproduction steps...', attachImage: 'Add image', screenshot: 'Screenshot', submit: 'Submit feedback', privacyHint: 'Do not include secrets, passwords, or private chat content.', contentRequired: 'Please enter feedback first', imageOnly: 'Only image attachments are supported', imageTooLarge: 'Each image must be under 1MB', tooManyImages: 'You can attach up to 3 images', screenshotFailed: 'Screenshot failed. Try pasting or uploading an image.', submitSuccess: 'Feedback submitted. Thanks!', submitFailed: 'Failed to submit feedback. Please try again later.', removeImage: 'Remove image', }, queries: { title: 'คำค้นหา', }, messageDetails: { noData: 'ไม่มีการเรียก LLM หรือข้อผิดพลาดสำหรับคำค้นหานี้', }, queryVariables: { title: 'ตัวแปรคำค้นหา', }, trafficChart: { title: 'ภาพรวมปริมาณการใช้งาน', messages: 'ข้อความ', llmCalls: 'การเรียก LLM', noData: 'ไม่มีข้อมูลปริมาณการใช้งาน', }, viewMonitoring: 'ดูการตรวจสอบ', refreshData: 'รีเฟรชข้อมูล', exportData: 'ส่งออกข้อมูล', export: { title: 'ส่งออกข้อมูล', exporting: 'กำลังส่งออก...', messages: 'ข้อความ', llmCalls: 'การเรียก LLM', embeddingCalls: 'การเรียก Embedding', errors: 'บันทึกข้อผิดพลาด', sessions: 'เซสชัน', feedback: 'ความคิดเห็นผู้ใช้', }, systemStatus: 'สถานะระบบ', pluginRuntime: 'Plugin Runtime', boxRuntime: 'Box Runtime', connected: 'เชื่อมต่อแล้ว', disconnected: 'ไม่ได้เชื่อมต่อ', disabled: 'ปิดใช้งาน', statusDetail: 'สถานะ', pluginDisabled: 'ระบบปลั๊กอินถูกปิดใช้งาน', boxDisabled: 'Sandbox Box ถูกปิดใช้งานในการตั้งค่า — เครื่องมือ sandbox, การเพิ่ม/แก้ไข skill และ stdio MCP ใช้งานไม่ได้', boxUnavailable: 'Sandbox Box ไม่พร้อมใช้งาน — เครื่องมือ sandbox, การเพิ่ม/แก้ไข skill และ stdio MCP ใช้งานไม่ได้', boxRequiredHint: 'ฟีเจอร์นี้ต้องใช้ Box runtime กรุณาเปิดใช้งานในการตั้งค่า (box.enabled = true) และตรวจสอบว่าการเชื่อมต่อปกติ', boxBackend: 'แบ็กเอนด์', boxProfile: 'โปรไฟล์', boxSandboxes: 'แซนด์บ็อกซ์', boxSessionCreated: 'สร้างเมื่อ', boxSessionLastUsed: 'ใช้ล่าสุด', }, settingsDialog: { title: 'การตั้งค่า', nav: { models: 'โมเดล', api: 'API', storage: 'พื้นที่จัดเก็บ', account: 'บัญชี', workspace: 'Workspace', }, }, storageAnalysis: { title: 'วิเคราะห์พื้นที่จัดเก็บ', description: 'ตรวจสอบการใช้พื้นที่จัดเก็บและรายการที่สามารถล้างได้', openDialog: 'ดูการวิเคราะห์', dialogTitle: 'วิเคราะห์พื้นที่จัดเก็บ', generatedAt: 'สร้างเมื่อ {{time}}', loading: 'กำลังโหลด...', refresh: 'รีเฟรช', totalSize: 'ขนาดรวม', binaryStorage: 'พื้นที่จัดเก็บไบนารีของปลั๊กอิน', uploadCleanup: 'ไฟล์อัปโหลดที่หมดอายุ', logCleanup: 'บันทึกที่หมดอายุ', sections: 'ส่วนพื้นที่จัดเก็บ', monitoringTables: 'ตารางการตรวจสอบ', runtimeTasks: 'งาน runtime', cleanupPolicy: 'นโยบายการล้างข้อมูล', uploadRetention: 'ระยะเวลาเก็บไฟล์อัปโหลด', logRetention: 'ระยะเวลาเก็บบันทึก', databaseType: 'ชนิดฐานข้อมูล', days: 'วัน', missing: 'ไม่มี', expiredUploads: 'ไฟล์อัปโหลดที่หมดอายุ', expiredLogs: 'บันทึกที่หมดอายุ', noExpiredUploads: 'ไม่มีไฟล์อัปโหลดที่หมดอายุ', noExpiredLogs: 'ไม่มีบันทึกที่หมดอายุ', sectionNames: { database: 'ฐานข้อมูล', logs: 'บันทึก', storage: 'ไฟล์อัปโหลด', vector_store: 'คลังเวกเตอร์', plugins: 'ปลั๊กอิน', mcp: 'MCP', temp: 'ไฟล์ชั่วคราว', }, }, limitation: { maxBotsReached: 'จำนวน Bot สูงสุด ({{max}}) ถึงขีดจำกัดแล้ว กรุณาลบ Bot ที่มีอยู่ก่อนสร้างใหม่', maxPipelinesReached: 'จำนวน Pipeline สูงสุด ({{max}}) ถึงขีดจำกัดแล้ว กรุณาลบ Pipeline ที่มีอยู่ก่อนสร้างใหม่', maxExtensionsReached: 'จำนวนส่วนขยายสูงสุด ({{max}}) ถึงขีดจำกัดแล้ว กรุณาลบเซิร์ฟเวอร์ MCP หรือปลั๊กอินที่มีอยู่ก่อนเพิ่มใหม่', }, wizard: { sidebarDescription: 'สร้าง Bot ด้วยขั้นตอนที่แนะนำ', loading: 'กำลังโหลดตัวช่วย...', loadError: 'ไม่สามารถโหลดข้อมูลตัวช่วยได้', skip: 'ข้าม', skipConfirmMessage: 'คุณสามารถเข้าสู่ตัวช่วยเริ่มต้นอย่างรวดเร็วจากเมนูบัญชีในภายหลัง หรือสร้าง Bot ด้วยตนเอง', skipConfirmOk: 'ตกลง', prev: 'ก่อนหน้า', next: 'ถัดไป', finish: 'สร้างและติดตั้ง', confirmCreateBot: 'ยืนยัน สร้าง Bot', createSuccess: 'สร้าง Pipeline และเชื่อมกับ Bot สำเร็จ!', botCreateSuccess: 'สร้าง Bot สำเร็จ!', botSaveSuccess: 'บันทึกและเปิดใช้งาน Bot สำเร็จ!', createError: 'ไม่สามารถสร้างทรัพยากรได้', spaceAuthError: 'ไม่สามารถเริ่มต้นการยืนยันสิทธิ์ Space ได้', skipSaveError: 'ไม่สามารถบันทึกสถานะการข้ามได้ กรุณาลองใหม่', completeSaveError: 'ไม่สามารถบันทึกสถานะการเสร็จสิ้นได้ กรุณาลองใหม่', step: { platform: 'แพลตฟอร์ม', botConfig: 'ตั้งค่า Bot', aiEngine: 'เครื่องมือ AI', done: 'เสร็จสิ้น', }, platform: { title: 'เลือกแพลตฟอร์ม', description: 'เลือกแพลตฟอร์มข้อความที่ Bot ของคุณจะเชื่อมต่อ', }, botConfig: { title: 'กำหนดค่า Bot ของคุณ', description: 'ตั้งค่า Bot ของคุณและตรวจสอบว่าทำงานได้ก่อนดำเนินการต่อ', saveBot: 'บันทึกและเปิดใช้งาน Bot', resaveBot: 'บันทึกการกำหนดค่าอีกครั้ง', botSaved: 'บันทึกและเปิดใช้งาน Bot แล้ว ตรวจสอบบันทึกเพื่อยืนยันการเชื่อมต่อ', logsTitle: 'บันทึก Bot', logsDescription: 'ตรวจสอบกิจกรรม Bot เพื่อยืนยันว่าการเชื่อมต่อแพลตฟอร์มทำงานอยู่', }, aiEngine: { title: 'เลือกเครื่องมือ AI', description: 'เลือกเครื่องมือ AI ที่จะขับเคลื่อนความฉลาดของ Bot', }, spaceBanner: { message: 'เชื่อมต่อกับ LangBot Space เพื่อรับเครดิตทดลองใช้โมเดลฟรีและตั้งค่าทันทีโดยไม่ต้องกำหนดค่า!', action: 'ยืนยันสิทธิ์กับ Space', }, config: { botInfo: 'ข้อมูล Bot', botNamePlaceholder: 'กรอกชื่อ Bot', botDescPlaceholder: 'กรอกคำอธิบาย Bot (ไม่บังคับ)', platformConfig: 'การกำหนดค่า {{platform}}', aiConfig: 'การกำหนดค่า {{engine}}', }, done: { title: 'เสร็จเรียบร้อย!', description: 'Bot ของคุณถูกสร้างและเชื่อมต่อกับ Pipeline AI แล้ว คุณสามารถจัดการได้จากหน้าทำงาน', backToWorkbench: 'กลับไปหน้าทำงาน', }, }, errorPage: { unexpectedError: 'เกิดข้อผิดพลาด', unexpectedErrorDescription: 'เกิดข้อผิดพลาดที่ไม่คาดคิด กรุณาลองใหม่อีกครั้งในภายหลัง', notFound: 'ไม่พบหน้า', notFoundDescription: 'หน้าที่คุณกำลังมองหาไม่มีอยู่หรือถูกย้ายแล้ว', backendUnavailableStatus: 'แบ็กเอนด์ไม่พร้อมใช้งาน', goBack: 'ย้อนกลับ', backToHome: 'กลับหน้าหลัก', backToLogin: 'กลับไปหน้าเข้าสู่ระบบ', retrying: 'กำลังลองใหม่', retryFailed: 'ยังไม่สามารถเชื่อมต่อแบ็กเอนด์ได้ โปรดเริ่มบริการแล้วลองใหม่อีกครั้ง', }, feishu: { createApp: 'สร้างแอป Feishu ด้วยคลิกเดียว', scanQRCode: 'สแกนคิวอาร์โค้ดด้านล่างด้วย Feishu เพื่ออนุญาตและสร้างแอปโดยอัตโนมัติ', waitingForScan: 'กำลังรอสแกน', createSuccess: 'สร้างแอปสำเร็จแล้ว และกรอกข้อมูลรับรองให้อัตโนมัติ', createFailed: 'สร้างแอปไม่สำเร็จ', connecting: 'กำลังเชื่อมต่อบริการ Feishu...', expired: 'คิวอาร์โค้ดหมดอายุแล้ว กรุณาลองใหม่', denied: 'ผู้ใช้ปฏิเสธการอนุญาต', connectionLost: 'การเชื่อมต่อขาดหาย กรุณาลองใหม่', reconnecting: 'กำลังเชื่อมต่อใหม่...', retry: 'ลองใหม่', }, weixin: { scanLogin: 'เข้าสู่ระบบ WeChat ด้วยคิวอาร์โค้ด', scanQRCode: 'สแกนคิวอาร์โค้ดด้านล่างด้วย WeChat เพื่ออนุญาตและกรอกโทเคนอัตโนมัติ', loginSuccess: 'เข้าสู่ระบบสำเร็จ และกรอกโทเคนอัตโนมัติแล้ว', loginFailed: 'เข้าสู่ระบบไม่สำเร็จ', }, dingtalk: { createApp: 'สร้างแอป DingTalk ด้วยคลิกเดียว', scanQRCode: 'สแกนคิวอาร์โค้ดด้านล่างด้วย DingTalk เพื่ออนุญาตและสร้างแอปโดยอัตโนมัติ', waitingForScan: 'กำลังรอสแกน', createSuccess: 'สร้างแอปสำเร็จแล้ว และกรอกข้อมูลรับรองให้อัตโนมัติ', createFailed: 'สร้างแอปไม่สำเร็จ', connecting: 'กำลังเชื่อมต่อบริการ DingTalk...', retry: 'ลองใหม่', robotCodeNote: 'ไม่สามารถดึงรหัส Robot ได้โดยอัตโนมัติ กรุณาไปที่หลังบ้านนักพัฒนา DingTalk > การตั้งค่า Robot เพื่อคัดลอกด้วยตนเอง ฟิลด์นี้จำเป็นสำหรับฟังก์ชันอย่างการรู้จำภาพและการอัปโหลดไฟล์', }, wecombot: { createBot: 'สร้างบอต WeCom ด้วยคลิกเดียว', scanQRCode: 'สแกนคิวอาร์โค้ดด้านล่างด้วย WeCom เพื่ออนุญาตและสร้างบอตโดยอัตโนมัติ', waitingForScan: 'กำลังรอสแกน', createSuccess: 'สร้างบอตสำเร็จแล้ว และกรอกข้อมูลรับรองให้อัตโนมัติ', createFailed: 'สร้างบอตไม่สำเร็จ', connecting: 'กำลังเชื่อมต่อบริการ WeCom...', retry: 'ลองใหม่', robotNameNote: 'ไม่สามารถดึงชื่อบอตได้โดยอัตโนมัติ กรุณากรอกด้วยตนเอง', }, qqofficial: { createBinding: 'ผูกบอต QQ Official ด้วย QR คลิกเดียว', scanQRCode: 'สแกนคิวอาร์โค้ดด้านล่างด้วย QQ มือถือ แล้วอนุญาตการผูกใน «QQ Bot Assistant»', waitingForScan: 'กำลังรอสแกน', bindSuccess: 'ผูกสำเร็จ! AppID และ Secret ถูกกรอกอัตโนมัติแล้ว', bindFailed: 'การผูกล้มเหลว', connecting: 'กำลังเชื่อมต่อบริการ QQ...', retry: 'ลองใหม่', tokenNote: 'อะแดปเตอร์ปัจจุบันไม่ได้ใช้ฟิลด์ Token จึงเว้นว่างไว้ได้', boundBy: 'ผูกโดยผู้ใช้ QQ {{openid}}', }, pluginPages: { selectFromSidebar: 'เลือกหน้าปลั๊กอินจากแถบด้านข้าง', invalidPage: 'หน้าปลั๊กอินไม่ถูกต้อง', }, skills: { title: 'สกิล', description: 'สร้างและจัดการสกิลที่สามารถเปิดใช้ระหว่างการสนทนาได้', createSkill: 'สร้างสกิล', createSkillDescription: 'นำเข้าไดเรกทอรีในเครื่องหรือสร้างโดยกรอกข้อมูล', editSkill: 'แก้ไขสกิล', getSkillListError: 'ดึงรายการสกิลไม่สำเร็จ: ', skillName: 'ชื่อสกิล', displayName: 'ชื่อสกิล', displayNamePlaceholder: 'ชื่อที่แสดง (รองรับทุกภาษา)', skillSlug: 'ชื่อไดเรกทอรี', skillSlugPlaceholder: 'english-name-only', skillSlugHelp: 'ใช้เป็นชื่อไดเรกทอรีของสกิล รองรับเฉพาะตัวอักษร ตัวเลข ขีดกลาง และขีดล่าง', skillDescription: 'คำอธิบายสกิล', skillInstructions: 'คำสั่ง', saveSuccess: 'บันทึกสำเร็จ', saveError: 'บันทึกไม่สำเร็จ: ', createSuccess: 'สร้างสำเร็จ', createError: 'สร้างไม่สำเร็จ: ', deleteSuccess: 'ลบสำเร็จ', deleteError: 'ลบไม่สำเร็จ: ', deleteConfirmation: 'คุณแน่ใจหรือไม่ว่าต้องการลบสกิลนี้?', delete: 'ลบสกิล', skillNameRequired: 'ชื่อสกิลต้องไม่ว่าง', skillDescriptionRequired: 'คำอธิบายสกิลต้องไม่ว่าง', packageRootRequired: 'เส้นทางรากของแพ็กเกจต้องไม่ว่าง', scan: 'สแกน', scanSuccess: 'สแกนไดเรกทอรีสำเร็จ', scanError: 'สแกนไดเรกทอรีไม่สำเร็จ: ', noSkills: 'ยังไม่มีสกิลที่ตั้งค่าไว้', preview: 'ดูตัวอย่าง', previewInstructions: 'ตัวอย่างเนื้อหา SKILL.md', instructionsPlaceholder: 'ป้อนคำสั่งของสกิลในรูปแบบ Markdown...', descriptionPlaceholder: 'คำอธิบายสั้น ๆ ว่าสกิลนี้ทำอะไร (แสดงให้ LLM เห็น)', packageRoot: 'ไดเรกทอรีแพ็กเกจ', packageRootHelp: 'ไม่บังคับ จำเป็นเฉพาะเมื่อนำเข้าไดเรกทอรีสกิลที่มีอยู่ เว้นว่างไว้สำหรับสกิลใหม่ การสแกนจะตรวจไดเรกทอรีปัจจุบันและไดเรกทอรีย่อยลึกสุด 2 ระดับ', importLocalDirectory: 'นำเข้าไดเรกทอรีสกิลในเครื่อง', chooseSkillDirectory: 'เลือกไดเรกทอรีของ SKILL.md', chooseAnotherDirectory: 'เลือกไดเรกทอรีอื่น', importingDirectory: 'กำลังสร้างตัวอย่าง...', clearDirectoryPreview: 'ล้างไดเรกทอรีที่เลือก', noSkillMdInDirectory: 'ไม่พบ SKILL.md ในไดเรกทอรีที่เลือก', multipleSkillMdInDirectory: 'ไดเรกทอรีที่เลือกมี SKILL.md หลายไฟล์ โปรดเลือกไดเรกทอรีสกิลเดียวโดยตรง', importDirectoryError: 'นำเข้าไดเรกทอรีไม่สำเร็จ: ', advancedSettings: 'การตั้งค่าขั้นสูง', searchSkills: 'ค้นหาสกิล...', selectSkills: 'เลือกสกิล', addSkill: 'เพิ่มสกิล', builtin: 'ในตัว', importFromGithub: 'ติดตั้งสกิลจาก GitHub', createManually: 'สร้างด้วยตนเอง', uploadZip: 'อัปโหลดแพ็กเกจ ZIP', uploadZipOnly: 'รองรับเฉพาะแพ็กเกจสกิล .zip', installSuccess: 'ติดตั้งสกิลสำเร็จ', installError: 'ติดตั้งสกิลไม่สำเร็จ: ', enterRepoUrl: 'ป้อน URL รีโพสitory GitHub', repoUrlPlaceholder: 'เช่น https://github.com/owner/repo', fetchingReleases: 'กำลังดึงรีลีส...', selectRelease: 'เลือกรีลีส', noReleasesFound: 'ไม่พบรีลีส', fetchReleasesError: 'ดึงรีลีสไม่สำเร็จ: ', selectAsset: 'เลือกไฟล์ที่จะติดตั้ง', sourceArchive: 'ซอร์สโค้ด (zip)', noAssetsFound: 'ไม่มีไฟล์ที่ติดตั้งได้ในรีลีสนี้', fetchAssetsError: 'ดึงไฟล์ไม่สำเร็จ: ', backToReleases: 'กลับไปที่รีลีส', backToRepoUrl: 'กลับไปที่ URL รีโพสitory', backToAssets: 'กลับไปที่ไฟล์', releaseTag: 'แท็ก: {{tag}}', publishedAt: 'เผยแพร่เมื่อ: {{date}}', prerelease: 'พรีรีลีส', assetSize: 'ขนาด: {{size}}', confirmInstall: 'ยืนยันการติดตั้ง', installing: 'กำลังติดตั้งสกิล...', loading: 'กำลังโหลด...', previewLoadError: 'โหลดตัวอย่างไม่สำเร็จ', selectFromSidebar: 'เลือกสกิลจากแถบด้านข้าง', dangerZone: 'พื้นที่อันตราย', dangerZoneDescription: 'การกระทำที่ย้อนกลับไม่ได้และทำลายข้อมูล', files: 'ไฟล์', noFiles: 'ไม่พบไฟล์', loadFilesError: 'โหลดไฟล์ไม่สำเร็จ: ', readFileError: 'อ่านไฟล์ไม่สำเร็จ: ', saveFile: 'บันทึกไฟล์', saveFileSuccess: 'บันทึกไฟล์สำเร็จ', saveFileError: 'บันทึกไฟล์ไม่สำเร็จ: ', }, addExtension: { installTitle: 'ติดตั้ง {{type}}', installConfirm: 'ติดตั้ง {{type}} "{{name}}" หรือไม่?', installInfoType: 'ประเภท', installInfoId: 'ID', installInfoVersion: 'เวอร์ชัน', installSuccess: 'ติดตั้งสำเร็จ', installStage: { mcpInstalling: 'กำลังเพิ่มและเชื่อมต่อเซิร์ฟเวอร์ MCP…', skillInstalling: 'กำลังติดตั้งสกิล…', installed: 'เสร็จสิ้น', }, manualAdd: 'เพิ่มด้วยตนเอง', uploadExtension: 'ลากแล้ววางหรือคลิกเพื่ออัปโหลด', uploadHint: 'รองรับไฟล์ .zip (สกิล) และ .lbpkg (ปลั๊กอิน)', orContinueWith: 'หรือเลือกการทำงานด้านล่าง', addMCPServerHint: 'เชื่อมต่อส่วนขยายเซิร์ฟเวอร์เครื่องมือ MCP', installFromGithub: 'ติดตั้งจาก GitHub', installFromGithubHint: 'แพ็กเกจปลั๊กอินหรือสกิล (SKILL.md)', githubUrlHelp: 'วาง URL GitHub', githubUrlTooltip: 'ปลั๊กอิน: วาง URL รีโพสitory, Release หรือ Tag สกิล: วาง URL หน้า SKILL.md ภายในไดเรกทอรีสกิล', githubUrlPlaceholder: 'รีโพสitory GitHub, Release หรือลิงก์ SKILL.md', githubUrlRequired: 'ป้อน URL GitHub', previewSkill: 'ดูตัวอย่างสกิล', noSkillPreviewFound: 'ไม่พบสกิลที่นำเข้าได้', createSkill: 'สร้างสกิลใหม่', createSkillHint: 'นำเข้าจากไดเรกทอรีในเครื่องหรือสร้างด้วยตนเอง', unsupportedFileType: 'ประเภทไฟล์ไม่รองรับ รองรับเฉพาะไฟล์ .zip และ .lbpkg', }, workspace: { title: 'Workspace', description: 'Manage members, roles, and invitation links', selectTitle: 'Choose a Workspace', selectDescription: 'Select where you want to continue in LangBot.', selectionLoadFailed: 'Your Workspaces could not be loaded. Please try again.', switchWorkspace: 'Switch Workspace', settings: 'Workspace Settings', currentPlan: 'Current plan', planUnavailable: 'Unavailable', upgradePlan: 'Change or upgrade plan', ossSingletonDescription: 'This self-hosted instance has one Workspace and can include multiple users.', cloudManagedDescription: 'This Workspace is hosted by LangBot Cloud. Manage members here; billing opens in Cloud.', loadFailed: 'Failed to load Workspace information', members: 'Members', you: 'You', inviteMember: 'Invite a member', inviteDescription: 'Create a one-time link to add another user to this Workspace.', emailPlaceholder: 'member@example.com', createInvitation: 'Create invitation', invitationCreated: 'Invitation created', delivery: { sent: 'Invitation sent', link_only: 'Invitation link created', failed: 'Invitation link created, but email could not be sent', }, invitationCreateFailed: 'Failed to create invitation', oneTimeLinkWarning: 'Copy this link now. It is shown only once.', copyInvitation: 'Copy invitation link', invitationCopied: 'Invitation link copied', pendingInvitations: 'Pending invitations', expiresAt: 'Expires {{date}}', revokeInvitation: 'Revoke invitation', invitationRevoked: 'Invitation revoked', invitationRevokeFailed: 'Failed to revoke invitation', acceptInvitation: 'Accept invitation', invitedToWorkspace: 'You were invited to {{workspace}}', checkingInvitation: 'Checking this invitation...', invitationMissing: 'This invitation link is missing required information.', invitationExpired: 'This invitation has expired.', invitationAlreadyRevoked: 'This invitation was revoked.', invitationAlreadyUsed: 'This invitation was already used.', invitationInvalid: 'This invitation is invalid or no longer available.', invitationAccepted: 'Invitation accepted', invitationAcceptFailed: 'Failed to accept invitation', invitationEmailMismatch: 'This invitation belongs to a different email address.', existingAccountLoginRequired: 'An account already exists for this email. Sign in to continue.', acceptAsCurrentAccount: 'Accept with current account', authenticatedInvitationNotice: 'Sign out first, then sign in with the invited account. Your invitation will be preserved.', logoutAndReturn: 'Sign out and return to this invitation', switchAccount: 'Switch account', registerAndAccept: 'Create account and accept', alreadyHaveAccount: 'I already have an account', confirmPassword: 'Confirm password', passwordMinimum: 'Password must contain at least 8 characters.', passwordMismatch: 'The passwords do not match.', backToLogin: 'Back to sign in', memberUpdated: 'Member role updated', memberUpdateFailed: 'Failed to update member role', removeMember: 'Remove member', removeMemberConfirm: 'Remove this member from the Workspace?', memberRemoved: 'Member removed', memberRemoveFailed: 'Failed to remove member', transferOwnership: 'Transfer ownership', types: { personal: 'Personal', team: 'Team', }, roles: { owner: 'Owner', admin: 'Admin', developer: 'Developer', operator: 'Operator', viewer: 'Viewer', }, }, }; export default thTH;