/** * The th (Thai) dictionary for the betterSidebar namespace. * * Mirrors the key set of `zh` in `locales.ts`. The sidebar's `t()` * consults this dict when `attachBetterLocale(store)` has been called * with an active better-locale store whose `active` is `'th'`; absent * that, the existing zh/en chain runs unchanged. * * Translation conventions: * - Technical terms stay in English where appropriate (Git, SSH, HTTP, URL, * Markdown, PDF, VS Code, API Key, Base URL, token, etc.). * - Placeholders keep {name} verbatim (interpolation runs after lookup). * - Formal Thai appropriate for software UI. * - Terminology is kept consistent with the DSH core th dictionary. */ /** The th dictionary (key-set-equal to zh, enforced by the type annotation in locales.ts). */ export const th: Record = { files: 'ไฟล์', guideDescFiles: 'เรียกดูแผนผังไฟล์ของเวิร์กสเปซ คลิกเพื่อดูตัวอย่างหรือแก้ไข', guideDescGit: 'การเปลี่ยนแปลง Git และไฟล์ที่แก้ในเซสชันนี้ในแท็บเดียว', guideDescSubagent: 'โครงสร้างซับเอเจนต์และงานเบื้องหลังแบบเรียลไทม์', guideDescSidechat: 'เธรดถามต่ออิสระที่สืบทอดบริบทของเซสชันนี้', guideDescTerminal: 'เชลล์จริง (xterm + pty) เชื่อมต่อใหม่ได้', guideDescBrowser: 'เบราว์เซอร์ในตัว รับช่วงลิงก์จากแชทได้', changesSessionEmpty: 'ยังไม่มีการดำเนินการไฟล์ในเซสชันนี้', changesRead: 'อ่าน', changesMdReading: 'อ่าน', changesHtmlRender: "เรนเดอร์", changesHtmlRaw: "ต้นฉบับ", changesPdfRender: "เรนเดอร์", changesPdfRaw: "ต้นฉบับ", changesMdRaw: 'ดิบ', changesWrite: 'เขียน', changesEdit: 'แก้ไข', changesRunning: 'กำลังทำงาน', changesError: 'ข้อผิดพลาด', changesFold: '{count} บรรทัด… คลิกเพื่อขยาย', changesFoldLoading: 'กำลังขยาย…', changesFoldUnavailable: 'ไม่สามารถโหลดบริบทได้', changesContext: 'บริบท', changesPriorUnknown: 'เนื้อหาก่อนแก้ไขอยู่นอกหน้าต่าง แสดงเป็นเพิ่มใหม่ทั้งหมด', explorer: 'ตัวสำรวจ', terminal: 'เทอร์มินัล', editor: 'ตัวแก้ไข', editorExplorer: 'พฤติกรรมการเปิดไฟล์', editorExplorerDesc: 'ควบคุมวิธีเปิดไฟล์', editorExplorerMerged: 'รวม', editorExplorerMergedDesc: 'ไฟล์สลับในตำแหน่งเดิมในหน้าต่างเดียวกัน; หน้าต่างใหม่เริ่มต้นด้วยต้นไม้ไฟล์ที่เปิดอยู่', editorExplorerSplit: 'แยก', editorExplorerSplitDesc: 'หน้าต่างที่ไม่มีพาธคือตัวสำรวจแบบสแตนด์อโลน (ต้นไม้ไฟล์เท่านั้น); แต่ละไฟล์เปิดหน้าต่างของตัวเอง (ต้นไม้ไฟล์ docked, ปิดเป็นค่าเริ่มต้น)', editorTreeToggle: 'พาเนลต้นไม้ไฟล์', editorPathPlaceholder: 'พาธไฟล์ (สัมพันธ์กับไดเรกทอรีเซสชันหรือแบบ absolute), Enter เพื่อเปิด', editorSearchPlaceholder: 'ค้นหาไฟล์ตามชื่อ…', editorSearchNoResults: 'ไม่มีไฟล์ที่ตรง', editorSearchTruncated: 'ผลลัพธ์มากเกินไป — แสดงเพียงบางส่วน', editorEmptyHint: 'เลือกไฟล์จากพาเนลต้นไม้ไฟล์หรือช่องกรอกพาธด้านบนเพื่อเริ่มพรีวิว', openFileNewTab: 'เปิดใน Tab ใหม่', openFileSide: 'เปิดด้านข้าง', openWithMenu: 'เปิดด้วย', openWithSshSuffix: ' (SSH)', pinOpenWith: 'ปักหมุดในเมนู', unpinOpenWith: 'ยกเลิกการปักหมุด', openWithExplorer: 'ตัวจัดการไฟล์', openWithVscode: 'VS Code', openWithCursor: 'Cursor', openWithZed: 'Zed', openWithSettingsSshTitle: 'โฮสต์ระยะไกล SSH', openWithSettingsSshDesc: 'ว่าง = พื้นที่ทำงานในเครื่อง; เมื่อกรอก user@host หรือ alias SSH ตัวเปิดตระกูล VSCode จะสลับไปใช้โปรโตคอล vscode-remote/ssh-remote และตัวจัดการไฟล์ / Zed / ตัวแก้ไขที่กำหนดเองที่ไม่ใช่ตระกูล VSCode จะถูกซ่อนจากเมนู', openWithSettingsSshPlaceholder: 'user@host หรือ alias SSH', openWithSettingsCustomTitle: 'ตัวแก้ไขที่กำหนดเอง', openWithSettingsCustomDesc: 'ชื่อ + เทมเพลต URL (placeholder {path}) + แฟล็กตระกูล VSCode; ในโหมดระยะไกลเฉพาะตัวแก้ไขตระกูล VSCode เท่านั้นที่เปิดพาธระยะไกลได้', openWithSettingsAdd: 'เพิ่ม', openWithSettingsName: 'ชื่อ', openWithSettingsTemplate: 'เช่น cursor://file/{path}', openWithSettingsFamily: 'ตระกูล VSCode', openWithSettingsFamilyDesc: 'ตัวแก้ไขนี้ใช้โปรโตคอล URL ของ VSCode (รองรับการเปิดจากระยะไกลผ่าน SSH)', openWithSettingsRemove: 'ลบ', openWithSettingsInvalidHint: 'ตัวแก้ไขที่ไม่มีชื่อหรือเทมเพลตที่ไม่มี {path} / scheme:// จะไม่ปรากฏในเมนู', newTab: 'Tab ใหม่', openExplorer: 'ตัวสำรวจ', brokenSymlink: 'Symlink เสีย', openGit: 'พาเนล Git', newTerminal: 'เทอร์มินัลใหม่', terminalLimit: 'ถึงขีดจำกัดเทอร์มินัลแล้ว (3)', close: 'ปิด', closeOtherTabs: 'ปิด Tab อื่น', closeLeftTabs: 'ปิด Tab ด้านซ้าย', closeRightTabs: 'ปิด Tab ด้านขวา', floatDropHint: 'ปล่อยเพื่อเปิดในหน้าต่างอิสระ', dockToSidebar: 'กลับไปที่แถบข้าง', pinTerminal: 'ปักหมุดเทอร์มินัล', pinAgentTerminal: 'ปักหมุดเทอร์มินัล Agent', pinToWorkspace: 'ปักหมุดไปยังพื้นที่ทำงาน', pinToGlobal: 'ปักหมุดแบบ Global', unpinTerminal: 'ยกเลิกการปักหมุด', pinnedTerminalTooltip: '{kind} · {scope} · {cwd}', pinnedTerminalKindUi: 'เทอร์มินัล UI', pinnedTerminalKindAgent: 'เทอร์มินัล Agent', pinnedTerminalScopeWorkspace: 'ปักหมุดไปยังพื้นที่ทำงาน', pinnedTerminalScopeGlobal: 'ปักหมุดแบบ Global', pinnedRailLabel: 'เทอร์มินัลที่ปักหมุด', closePinnedTerminal: 'ปิดเทอร์มินัล', collapseBottomPanel: 'ย่อพาเนลด้านล่าง', expandBottomPanel: 'ขยายพาเนลด้านล่าง', terminalError: 'การเชื่อมต่อเทอร์มินัลล้มเหลว', terminalConnectFailed: 'เทอร์มินัลเชื่อมต่อล้มเหลวหลายครั้ง', terminalRetry: 'ลองอีกครั้ง', terminalWaitBanner: 'เอเจนต์กำลังรอ {needle}', terminalSkipWait: 'ข้ามการรอ', terminalDepsFailed: 'การอ้างอิงเทอร์มินัล node-pty โหลดล้มเหลว', terminalDepsHint: 'เรียกใช้คำสั่งด้านล่างในเทอร์มินัลหรือ cmd บนเครื่อง DSH เพื่อซ่อมแซม แล้วกดลองอีกครั้ง (node-pty ต้องซิงค์กับเวอร์ชันหลักของ DSH):', terminalDepsProfile: ' (ตรวจพบ profile: {profile})', terminalShellNotFound: 'ไม่พบ shell ที่กำหนดไว้: {name} — ตรวจสอบพาธ shell ใน การตั้งค่า → Side card → Terminal', preview: 'พรีวิว', toc: 'สารบัญ', edit: 'แก้ไข', mermaidError: 'เรนเดอร์ Mermaid ล้มเหลว', mermaidZoomIn: 'ซูมเข้า', mermaidZoomOut: 'ซูมออก', mermaidZoomReset: 'รีเซ็ต', mermaidZoomHint: 'เลื่อนเพื่อซูม · ลากเพื่อแพน · Esc เพื่อปิด', refresh: 'รีเฟรช', showInFolder: 'แสดงในโฟลเดอร์', refreshUnsavedConfirm: 'ไฟล์เปลี่ยนบนดิสก์ การรีเฟรชจะทิ้งการแก้ไขที่ยังไม่ได้บันทึก ดำเนินการต่อหรือไม่', save: 'บันทึก', saved: 'บันทึกแล้ว', unsaved: 'ยังไม่ได้บันทึก', saveFailed: 'บันทึกล้มเหลว', truncation: 'ไฟล์ใหญ่เกินไป — แสดงเพียง 512KB แรก', binary: 'ไฟล์ไบนารี ไม่สามารถพรีวิวได้', loading: 'กำลังโหลด…', error: 'โหลดล้มเหลว', retry: 'ลองอีกครั้ง', splitLeft: 'แยกซ้าย', splitRight: 'แยกขวา', splitUp: 'แยกขึ้น', splitDown: 'แยกลง', notRepo: 'ไดเรกทอรีนี้ไม่ใช่ git repository', noChanges: 'ไม่มีการเปลี่ยนแปลง', statusTruncated: 'การเปลี่ยนแปลงมากเกินไป แสดงเพียง 2000 รายการแรก', stage: 'Stage', unstage: 'Unstage', stageAll: 'Stage ทั้งหมด', unstageAll: 'Unstage ทั้งหมด', commitPlaceholder: 'ข้อความ commit (Ctrl+Enter)', commit: 'Commit', commitError: 'Commit ล้มเหลว', branch: 'Branch', worktree: 'เวิร์กทรี', checkoutError: 'สลับ branch ล้มเหลว', history: 'ประวัติ', changes: 'การเปลี่ยนแปลงไฟล์', changesGitLens: 'Git', changesSessionLens: 'เซสชัน', changesFilterAll: 'ทั้งหมด', changesFilterEmpty: 'ไม่มีการดำเนินการประเภทนี้', changesOpenDiffTab: 'เปิดในแท็บ diff แยก', changesClosePreview: 'ปิดตัวอย่าง', changesResizePreview: 'ปรับขนาดตัวอย่าง', changesLoadError: 'บันทึกไฟล์ของเซสชันยังใช้ไม่ได้ตอนนี้', staged: 'Staged', unstaged: 'Unstaged', cancel: 'ยกเลิก', diffEmpty: 'ไม่มีการเปลี่ยนแปลงข้อความ', diffLoadError: 'โหลด diff ล้มเหลว', diffBinary: 'ไบนารี', diffAdded: 'เพิ่ม', diffDeleted: 'ลบ', diffRenamed: 'เปลี่ยนชื่อ', diffExpand: 'ขยายอีก {count} บรรทัด', diffCollapse: 'ย่อ', discard: 'ยกเลิกการเปลี่ยนแปลง', discardTitle: 'ยกเลิกการเปลี่ยนแปลง', discardDesc: 'จะยกเลิกการเปลี่ยนแปลง worktree ของ "{path}" (ไม่สามารถกู้คืนได้)', viewCommitDiff: 'ดู diff ของ commit', copyShortHash: 'คัดลอก short hash', copyFullHash: 'คัดลอก full hash', copySubject: 'คัดลอกหัวข้อ commit', revertCommit: 'Revert commit', revertTitle: 'Revert commit', revertDesc: 'สร้าง commit ใหม่บน branch ปัจจุบันที่ revert "{subject}"', cherryPickCommit: 'Cherry-pick commit', cherryPickTitle: 'Cherry-pick commit', cherryPickDesc: 'นำการเปลี่ยนแปลงของ "{subject}" ไปใช้กับ branch ปัจจุบัน', timeJustNow: 'เมื่อสักครู่', timeMinutesAgo: '{n} นาทีที่แล้ว', timeHoursAgo: '{n} ชม. ที่แล้ว', timeYesterday: 'เมื่อวาน', loadMore: 'โหลดเพิ่มเติม', historyLoadError: 'โหลดประวัติเพิ่มเติมล้มเหลว', produced: 'ผลลัพธ์ที่สร้าง', producedOpen: 'เปิดในแถบด้านข้าง', disconnected: 'เทอร์มินัลถูกตัดการเชื่อมต่อ กำลังเชื่อมต่อใหม่…', exited: 'กระบวนการเทอร์มินัลออกแล้ว', noSession: 'เลือกแชทเพื่อใช้แถบด้านข้าง', pluginNotLoaded: 'ปลั๊กอินไม่ได้โหลด; tab ไม่พร้อมใช้งาน:', hiddenFiles: 'ไฟล์ที่ซ่อนอยู่', parent: 'ไดเรกทอรีหลัก', copied: 'คัดลอกแล้ว', copy: 'คัดลอก', newFile: 'ไฟล์ใหม่', openEditor: 'เปิดตัวแก้ไข', gitDetail: 'ดูรายละเอียดการเปลี่ยนแปลง', referenceFile: '@ไฟล์', addToConversation: 'เพิ่มไปยังแชท', copyRelative: 'คัดลอกพาธสัมพัทธ์', copyAbsolute: 'คัดลอกพาธ absolute', rename: 'เปลี่ยนชื่อ', renameInvalid: 'ชื่อต้องไม่ว่างเปล่าและต้องไม่มีตัวคั่นเส้นทาง', delete: 'ลบ', deleteTitle: 'ลบ "{name}" หรือไม่', deleteDescFile: 'การดำเนินการนี้จะลบไฟล์อย่างถาวร และไม่สามารถย้อนกลับได้', deleteDescDir: 'การดำเนินการนี้จะลบไดเรกทอรีและเนื้อหาทั้งหมดอย่างถาวร และไม่สามารถย้อนกลับได้', dismiss: 'ปิด', download: 'ดาวน์โหลด', uploadFiles: 'อัปโหลดไฟล์', uploadFolder: 'อัปโหลดโฟลเดอร์', uploadHere: 'อัปโหลดที่นี่', uploadDropHint: 'ลากไฟล์/โฟลเดอร์มาที่นี่เพื่ออัปโหลด', uploadDropChat: 'ลากไปที่แชทเพื่อเพิ่มรูปภาพ', uploadTo: 'อัปโหลดไปยัง {dir}', uploadingTo: 'กำลังอัปโหลดไปยัง {dir}…', uploadProgress: 'กำลังอัปโหลด {done}/{total}: {name}', uploadDone: 'อัปโหลด {count} ไฟล์แล้ว', uploadFailed: 'อัปโหลดล้มเหลว: {error}', uploadFailedUnknown: 'ข้อผิดพลาดที่ไม่รู้จัก', uploadTooLarge: 'ไฟล์ใหญ่เกินไป (เกินขีดจำกัดการอัปโหลด)', uploadCancelled: 'การอัปโหลดถูกยกเลิก', settingsNav: 'การ์ดด้านข้าง', settingsIntro: 'จัดการสิ่งที่การ์ดด้านข้างแสดงและพฤติกรรมของมัน', settingsPopupDesc: 'กำหนดค่าตัวเลือกที่เกี่ยวข้องสำหรับ {feature}', settingsDone: 'เสร็จสิ้น', settingsOpenToolsTitle: 'ฉีดเครื่องมือเปิดแถบด้านข้างสำหรับโมเดล', settingsOpenToolsDesc: 'เมื่อเปิดใช้ โมเดลสามารถเปิดไฟล์ โฟลเดอร์ และหน้า HTTP(S) ในแถบด้านข้างผ่านเครื่องมือ sidebar_open (ปิดเป็นค่าเริ่มต้น)', settingsTitleBarTitle: 'โหมดความเข้ากันได้ของตำแหน่ง', settingsTitleBarDesc: 'เลือกโครงร่างความเข้ากันได้ของไตเติลบาร์: ตรวจจับอัตโนมัติ (ค่าเริ่มต้น, อนุรักษ์นิยม) / DSH เว็บอย่างเป็นทางการ / เชลล์เดสก์ท็อปที่รู้จัก / กำหนดเอง (ระยะการเลื่อน + CSS ที่กำหนดเอง)', settingsTitleBarStripTitle: 'ระยะการเลื่อน', settingsTitleBarStripDesc: 'ความสูงของแถบไตเติลบาร์: จำนวนพิกเซลที่ปุ่มแถบด้านข้างและเนื้อหาเลื่อนลง (0–120, ค่าเริ่มต้น 40; มีผลภายใต้โครงร่างกำหนดเอง)', settingsSchemeAutoTitle: 'ตรวจจับอัตโนมัติ', settingsSchemeAutoDesc: 'อนุรักษ์นิยม: เฉพาะ API มาตรฐาน Window Controls Overlay เท่านั้นที่มีส่วนร่วม (ความสูง caption-overlay จริง); สภาพแวดล้อมเว็บธรรมดาไม่ได้รับการแก้ไข', settingsSchemeWebTitle: 'DSH เว็บอย่างเป็นทางการ', settingsSchemeWebDesc: 'ประกาศอย่างชัดเจนว่าเป็นเว็บ UI อย่างเป็นทางการ: ไม่มีการปรับตัวใดๆ (แม้แต่เรขาคณิต WCO มาตรฐาน)', settingsSchemeCustomTitle: 'กำหนดเอง', settingsSchemeCustomDesc: 'ควบคุมเต็ม: ฉีด CSS ที่กำหนดเอง (สามารถแทนที่สไตล์ built-in) และตั้งระยะการเลื่อนไตเติลบาร์', settingsSchemeDetectedSuffix: 'ตรวจพบแล้ว', settingsCustomCssTitle: 'CSS ที่กำหนดเอง', settingsCustomCssDesc: 'สไตล์ที่เพิ่มต่อท้ายหน้า (ที่มาทีหลังใน cascade ชนะ; ใช้ !important เพื่อแทนที่ตัวแปร inline ที่เขียนโดย JS)', settingsCustomCssPlaceholder: '/* เช่น สำรอง 36px สำหรับเชลล์ที่มีไตเติลบาร์ที่วาดเอง */\nhtml[data-dsh-title-bar-height="36"] {\n --dsh-title-bar-strip: 36px !important;\n}', settingsSaveFailed: 'บันทึกล้มเหลว', settingsConflict: 'การตั้งค่าถูกเปลี่ยนในหน้าต่างอื่น — โปรดลองอีกครั้ง', binaryNoPreview: 'ไม่สามารถพรีวิวประเภทไฟล์นี้ได้', downloadToView: 'ดาวน์โหลดเพื่อดู', settingsSubagentTitle: 'เลือกหน้า Tasks โดยอัตโนมัติเมื่อมีตัวแทนย่อยปรากฏ', settingsSubagentDesc: 'เมื่อแชทปัจจุบันสร้างตัวแทนย่อยใหม่ ระบบจะเลือกหน้า Tasks โดยอัตโนมัติ; ในมุมมองแบบกว้าง ระบบจะขยายการ์ดด้านข้างด้วย ส่วนในมุมมองแบบแคบ ระบบจะไม่บังคับเปิดลิ้นชักเต็มหน้าจอ; ปิดเพื่อเลือกหน้าด้วยตนเอง', settingsJobsTitle: 'เลือกหน้า Tasks โดยอัตโนมัติเมื่อมีงานเบื้องหลังใหม่', settingsJobsDesc: 'เมื่อมีงานเบื้องหลังใหม่ปรากฏในแชทปัจจุบัน ระบบจะเลือกหน้า Tasks โดยอัตโนมัติ (ทุกงานใหม่จะทริกเกอร์); ในมุมมองแบบกว้าง ระบบจะขยายการ์ดด้านข้างด้วย ส่วนในมุมมองแบบแคบ ระบบจะไม่บังคับเปิดลิ้นชักเต็มหน้าจอ; ปิดเพื่อเลือกหน้าด้วยตนเอง', settingsToolsTitle: 'ฉีดเครื่องมือเทอร์มินัลสำหรับโมเดล', settingsToolsDesc: 'เมื่อเปิดใช้ โมเดลสามารถสร้างและควบคุมเทอร์มินัลแถบด้านข้างผ่านเครื่องมือ terminal_* 8 ตัว (ปิดเป็นค่าเริ่มต้น)', settingsFenceTitle: 'การตรวจสอบเส้นทางเวิร์กสเปซ', settingsFenceDesc: 'เมื่อเปิด ฟีเจอร์ไฟล์ของแถบข้างเข้าถึงได้เฉพาะเส้นทางในเวิร์กสเปซของเซสชัน (ค่าเริ่มต้น) เมื่อปิด จะเข้าถึงไฟล์ใดก็ได้บนโฮสต์ — สคริปต์ในหน้าก็ได้ขอบเขตเดียวกันตลอดช่วงนั้น', fenceErrorReason: 'เส้นทางนี้อยู่นอกเวิร์กสเปซของเซสชันและถูกบล็อกโดยการตรวจสอบ', fenceDisableAction: 'ปิดการตรวจสอบเวิร์กสเปซ', settingsBottomTerminalTitle: 'เปิดเทอร์มินัลอัตโนมัติเมื่อพาเนลล่างขยายครั้งแรก', settingsBottomTerminalDesc: 'เมื่อพาเนลล่างถูกขยายครั้งแรกในเซสชัน ลองเปิด tab เทอร์มินัลใหม่ที่นั่น (โควต้าเทอร์มินัลยังคงมีผล; เปิดเป็นค่าเริ่มต้น)', settingsFontFamilyTitle: 'ฟอนต์เทอร์มินัล', settingsFontFamilyDesc: 'ฟอนต์เทอร์มินัลที่กำหนดเอง (CSS font-family stack เช่น "JetBrains Mono", monospace; ปล่อยว่างเพื่อตามฟอนต์ monospace ของธีม)', settingsFontFamilyPlaceholder: '"JetBrains Mono", monospace', settingsFontSizeTitle: 'ขนาดฟอนต์เทอร์มินัล', settingsFontSizeDesc: 'ขนาดฟอนต์เทอร์มินัลเป็น px (9–32, ค่าเริ่มต้น 13)', settingsFontSizeSuffix: 'px', settingsShellTitle: 'พาธ Shell', settingsShellDesc: 'Shell ที่เรียกสำหรับเทอร์มินัล UI และโมเดล (พาธ absolute หรือ executable ลำพัง) ว่างจะคงลำดับเดิม: yaml config.shell → $SHELL / login shell / Windows powershell.exe มีผลกับเทอร์มินัลที่เปิดภายหลัง', settingsShellPlaceholder: 'เช่น /bin/zsh (ว่าง = อัตโนมัติ)', settingsShellArgsTitle: 'อาร์กิวเมนต์ Shell', settingsShellArgsDesc: 'อาร์กิวเมนต์ shell ที่ชัดเจน คั่นด้วยช่องว่าง; เมื่อไม่ว่างจะแทนที่ค่าเริ่มต้นทั้งหมด (สัญญาณเดียวกับ yaml shellArgs)', settingsShellArgsPlaceholder: 'เช่น -l (ว่าง = ค่าเริ่มต้น)', settingsTabsTitle: 'เนื้อหาแถบด้านข้าง', settingsViewersTitle: 'ตัวพรีวิวไฟล์', settingsGeneralTitle: 'ทั่วไป', settingsPopup: 'การตั้งค่าคุณสมบัติ', settingsViewerCatchAll: 'Catch-all: ไฟล์ใดๆ', viewerImage: 'รูปภาพ', viewerPdf: 'PDF', viewerMarkdown: 'Markdown', viewerCode: 'โค้ด', viewerBinary: 'ดาวน์โหลดไบนารี', viewerHtml: 'HTML', browser: 'เบราว์เซอร์', browserPlaceholder: 'กรอก URL เช่น example.com', browserGo: 'ไป', browserBack: 'ย้อนกลับ', browserForward: 'ไปข้างหน้า', browserStart: 'กรอก URL เพื่อเริ่มเรียกดู (โหมดแซนด์บ็อกซ์)', browserBlockedScheme: 'ถูกบล็อก: อนุญาตเฉพาะ URL http/https เท่านั้น', browserBlockedLoopback: 'ถูกบล็อก: ไม่สามารถเรียกดูที่อยู่ภายในเครื่องและภายในได้ที่นี่', browserInvalid: 'URL ไม่ถูกต้อง', browserNoSandboxWarning: 'แซนด์บ็อกซ์ปิด: หน้าปัจจุบันทำงานด้วยสิทธิ์ GUI เต็มรูปแบบ (เปิดใช้ใหม่ได้ในการตั้งค่า)', htmlNoSandboxWarning: 'แซนด์บ็อกซ์ปิด: HTML นี้ทำงานด้วยสิทธิ์ GUI เต็มรูปแบบ (เปิดใช้ใหม่ได้ในการตั้งค่า)', sandboxStatusOn: 'โหมดแซนด์บ็อกซ์: เปิด · หน้าเว็บไม่สามารถเข้าถึงข้อมูลหรือไฟล์ภายในของ GUI ได้; การล็อกอินและคุกกี้ของบุคคลที่สามอาจไม่ทำงาน', sandboxUnlock: 'ปิดใช้ชั่วคราว (ไม่ปลอดภัย)', sandboxRestore: 'คืนค่าแซนด์บ็อกซ์', settingsHtmlDefaultUnsafeTitle: 'เปิดพรีวิว HTML โดยไม่มีแซนด์บ็อกซ์เป็นค่าเริ่มต้น (ไม่ปลอดภัย)', settingsHtmlDefaultUnsafeDesc: 'เมื่อเปิด พรีวิว HTML ที่เปิดใหม่ทุกครั้งจะเริ่มในสถานะไม่มีแซนด์บ็อกซ์ (origin เดียวกับ GUI — สามารถอ่านไฟล์เซสชันและ API ภายในได้); แถวสถานะยังคงเสนอการคืนค่าแบบแตะครั้งเดียว', settingsHtmlSandboxTitle: 'ปิดแซนด์บ็อกซ์พรีวิว HTML (ไม่ปลอดภัย)', settingsHtmlSandboxDesc: 'เมื่อปิดแซนด์บ็อกซ์ HTML ที่พรีวิวจะทำงานด้วย origin เดียวกับ GUI: สามารถอ่านไฟล์เซสชัน, ที่เก็บข้อมูลในเครื่อง และเรียก API ภายในได้ เปิดใช้เฉพาะสำหรับไฟล์ที่เชื่อถือได้อย่างเต็มที่', settingsBrowserSandboxTitle: 'ปิดแซนด์บ็อกซ์เบราว์เซอร์ (ไม่ปลอดภัย)', settingsBrowserSandboxDesc: 'เมื่อปิดแซนด์บ็อกซ์ ไซต์ที่เยี่ยมชมใดๆ จะทำงานด้วย origin เดียวกับ GUI: สามารถอ่านข้อมูลเซสชันและแสดงเป็นเซสชันล็อกอินของคุณได้ เปิดใช้เฉพาะสำหรับไซต์ที่เชื่อถือได้อย่างเต็มที่', settingsBrowserLinksTitle: 'เปิดลิงก์ภายนอกของแชทในแถบด้านข้าง', settingsBrowserLinksDesc: 'เมื่อเปิด การคลิกลิงก์ภายนอกในแชทหรือ GUI จะเปิดแถบด้านข้างแทนหน้าต่างใหม่; HTTP และ HTTPS ถูกควบคุมแยกโดยสวิตช์ด้านล่าง; Ctrl/Cmd+click จะข้ามเสมอ', settingsBrowserHttpTitle: 'เปิดหน้า HTTP ในแถบด้านข้าง', settingsBrowserHttpDesc: 'เมื่อเปิด การคลิกลิงก์ HTTP ภายนอกในแชทหรือ GUI จะเปิดแถบด้านข้าง (หน้าปลั๊กอินที่ประกาศ urlTarget win มีความสำคัญก่อน); Ctrl/Cmd+click จะข้ามเสมอ', settingsBrowserHttpsTitle: 'เปิดหน้า HTTPS ในแถบด้านข้าง', settingsBrowserHttpsDesc: 'เมื่อเปิด การคลิกลิงก์ HTTPS ภายนอกในแชทหรือ GUI จะเปิดแถบด้านข้าง ปิดเป็นค่าเริ่มต้น: ไซต์ HTTPS ส่วนใหญ่ปฏิเสธที่จะฝัง ดังนั้นเบราว์เซอร์ระบบจะราบรื่นกว่าเป็นค่าเริ่มต้น', settingsBrowserLoopbackTitle: 'ที่อยู่ภายในเครื่องที่อนุญาต', settingsBrowserLoopbackDesc: 'รายการที่อนุญาตแบบคั่นด้วยจุลภาคของที่อยู่ลูปแบ็ก (เช่น localhost:5174 หรือ 127.0.0.1:8080) ที่เบราว์เซอร์แถบด้านข้างสามารถเยี่ยมชมได้ ค่าว่างจะบล็อกที่อยู่ภายในทั้งหมดโดยค่าเริ่มต้น แซนด์บ็อกซ์ยังคงมีผล — หน้าเว็บไม่สามารถอ่านข้อมูล GUI ได้', settingsBrowserLoopbackPlaceholder: 'เช่น localhost:5174, 127.0.0.1:8080', browserOpenExternal: 'เปิดในเบราว์เซอร์', browserEmbedBlocked: '{host} ปฏิเสธที่จะถูกฝัง', browserEmbedBlockedDesc: 'ไซต์ห้ามไม่ให้แสดงภายในหน้าอื่น (X-Frame-Options / frame-ancestors) จึงไม่สามารถโหลดในแถบด้านข้างได้ เปิดโดยตรงในเบราว์เซอร์ของคุณแทน', browserEmbedAnyway: 'โหลดต่อไป', subagent: 'งาน', openSubagent: 'งาน', subagentMainAgent: 'ตัวแทนหลัก', subagentEmpty: 'ไม่มีตัวแทนย่อย', subagentEmptyDesc: 'ตัวแทนย่อยที่สร้างภายใต้ตัวแทนหลักจะปรากฏที่นี่', subagentRunning: 'กำลังทำงาน', subagentInactive: 'ไม่ได้ทำงาน', subagentModeOneShot: 'ครั้งเดียว', subagentModeContinuable: 'ทำต่อได้', subagentCount: '{count} ตัวแทนย่อย', subagentCountRunning: '{count} ตัวแทนย่อย · {running} กำลังทำงาน', subagentDiagCorrupt: 'เสียหาย', subagentDiagUnsupported: 'ไม่รองรับ', subagentDiagUnavailable: 'ไม่พร้อมใช้งาน', subagentThinking: 'กำลังคิด…', sideChat: 'แชทด้านข้าง (เบต้า)', sideChatNew: 'เธรดใหม่', sideChatUntitled: 'เธรดใหม่', sideChatEmpty: 'ไม่มีแชทด้านข้าง', sideChatEmptyDesc: 'แชทด้านข้างทุกรายการคือ tab ของตัวเองในแถบ tab — สืบทอดบริบทของเซสชันปัจจุบันและไม่เข้าสู่แชทหลัก', sideChatCreating: 'กำลังสร้างแชทด้านข้าง…', sideChatRetry: 'ลองอีกครั้ง', sideChatThreads: 'สลับเธรด / ใหม่', sideChatSave: 'บันทึกเป็นเซสชันใหม่', sideChatSaveTitle: 'เลื่อนเธรดนี้เป็นเซสชันระดับบนสุดในรายการเซสชันหลัก', sideChatSaved: 'บันทึกเป็นเซสชันใหม่แล้ว', sideChatNoTurn: 'การบันทึกพร้อมใช้งานหลังจากรอบแรกเสร็จสมบูรณ์', sideChatPendingDrop: 'การติดตามที่ยังไม่ได้ตอบครั้งสุดท้ายจะไม่รวมในเซสชันที่บันทึก', sideChatFirstPlaceholder: 'ถามคำถามแรก — บริบทที่สืบทอด…', sideChatComposerPlaceholder: 'ถามติดตาม…', sideChatThinking: 'กำลังดำดิ่ง…', sideChatThink: 'กำลังคิด', sideChatInjection: 'แทรกบริบทแล้ว', sideChatSend: 'ส่ง', sideChatCancel: 'หยุด', sideChatCancelTitle: 'ยกเลิกการทำงานรอบปัจจุบัน (งานในคิวยังคงอยู่)', sideChatClose: 'ปิดเธรด', sideChatCloseTitle: 'ปล่อยตัวแทนของเธรด (ประวัติยังคงอยู่)', sideChatError: 'ข้อผิดพลาดแชทด้านข้าง: {message}', sideChatTurnUsage: 'อินพุต {input} tok · เอาต์พุต {output} tok', sideChatBlockCollapse: 'ย่อ', sideChatBlockCollapseAria: 'ย่อ', sideChatBlockExpand: 'ขยาย {hidden} บรรทัด', sideChatBlockExpandAria: 'ขยายอีก {hidden} บรรทัด', sideChatBlockSignal: 'ถูกยุตด้วยสัญญาณ: {signal}', sideChatBlockExitCode: 'รหัสออก {code}', sideChatBlockRunning: 'กำลังทำงาน', sideChatBlockFailed: 'ล้มเหลว', sideChatBlockDone: 'เสร็จสิ้น', sideChatBlockNoOutput: '(ไม่มีเอาต์พุต)', sideChatBlockFiles: '{count} ไฟล์', sideChatBlockWindow: '{shown} จาก {total} บรรทัด', sideChatConnDisconnected: 'การเชื่อมต่อขาดหาย', sideChatConnReconnect: 'เชื่อมต่อใหม่', sideChatConnConnecting: 'กำลังเชื่อมต่อใหม่…', sideChatConnRecovered: 'กู้คืนการเชื่อมต่อแล้ว', sideChatConnReconnectAction: 'เชื่อมต่อใหม่ตอนนี้', sideChatConnRestartAction: 'เริ่มการเชื่อมต่อใหม่', jobs: 'งานเบื้องหลัง', jobsCount: '{count} งานเบื้องหลัง', jobsCountRunning: '{count} งานเบื้องหลัง · {running} กำลังทำงาน', jobStatusRunning: 'กำลังทำงาน', jobStatusStopping: 'กำลังหยุด', jobStatusCompleted: 'เสร็จสิ้น', jobStatusKilled: 'ถูก kill', jobStatusFailed: 'ล้มเหลว', jobDurationSeconds: '{seconds} วิ', jobDurationMinutes: '{minutes} นาที {seconds} วิ', jobDurationHours: '{hours} ชม. {minutes} นาที', jobViewOutput: 'ดูเอาต์พุต', jobHideOutput: 'ซ่อนเอาต์พุต', jobNoOutput: 'ยังไม่มีเอาต์พุต', jobNotReadYet: 'รอให้โมเดลอ่านงานนี้; เอาต์พุตจะปรากฏที่นี่เมื่อโมเดลเรียก job_output', jobOutputTruncated: 'เอาต์พุตถูกตัดทิ้ง', jobOutputError: 'โหลดเอาต์พุตล้มเหลว', jobKill: 'Kill', jobKillConfirm: 'คลิกอีกครั้งเพื่อยืนยันการ kill', jobKillError: 'Kill ล้มเหลว', addPluginsTabCard: 'เพิ่มปลั๊กอิน tab', addPluginsTabCardDesc: 'ลงทะเบียนหน้าแถบด้านข้างใหม่', addPluginsViewerCard: 'เพิ่มปลั๊กอินพรีวิว', addPluginsViewerCardDesc: 'ลงทะเบียนพรีวิวประเภทไฟล์', addPluginsTabDesc: 'หน้าแถบด้านข้าง (tab) สามารถขยายได้ด้วยปลั๊กอิน ปลั๊กอินลงทะเบียนผ่านบริการ ctx.betterSidebar; การคลิก Install จะคัดลอกคำสั่งติดตั้ง — วางลงในเทอร์มินัลที่ DSH profile ของคุณอยู่แล้วเรียกใช้', addPluginsViewerDesc: 'ตัวพรีวิวไฟล์สามารถขยายได้ด้วยปลั๊กอิน ปลั๊กอินลงทะเบียนผ่านบริการ ctx.betterSidebar; การคลิก Install จะคัดลอกคำสั่งติดตั้ง — วางลงในเทอร์มินัลที่ DSH profile ของคุณอยู่แล้วเรียกใช้', addPluginsBrowseMore: 'เรียกดูปลั๊กอินเพิ่มเติมบน GitHub (topic: dsh-better-sidebar)', addPluginsSearch: 'ค้นหาตามชื่อหรือคำอธิบายปลั๊กอิน…', addPluginsNoMatch: 'ไม่มีปลั๊กอินที่ตรง', addPluginsRecommended: 'ปลั๊กอินแนะนำ', addPluginsEmpty: 'ยังไม่มีปลั๊กอินที่คัดสรร — เผยแพร่ปลั๊กอินของคุณภายใต้ topic บน GitHub', openPlugin: 'เปิด', copyInstall: 'คัดลอกคำสั่งติดตั้ง', pluginOfficeDesc: 'พรีวิวชุด Office (.docx / .xlsx / .pptx) สำหรับตัวแก้ไข better-sidebar โดยแยกไลบรารีเรนเดอร์ Office ที่หนักออกจาก bundle หลัก', pluginFlowglassDesc: 'กราฟโฟลว์เซสชันสดพร้อมเลนสามเลนสำหรับผู้ใช้, ผู้ช่วย และการเรียกเครื่องมือ พร้อมกลุ่มขนาน, สาขาตัวแทนย่อย, drill-down และสถานะสด; ลงทะเบียน tab Flowglass แบบ native เมื่อติดตั้ง better-sidebar และคงลิ้นชักสแตนด์อโลนเป็นทางเลือกสำรอง', pluginGitForgeDesc: 'tab Git Forge: คลังบัญชี GitHub/Gitea (และ forge อื่นๆ) + การอนุญาตต่อโปรเจกต์ + นโยบาย push แบบเข้มงวด; token อยู่ใน secrets ในเครื่อง (ไม่เคยอยู่ในบริบทโมเดล); เครื่องมือ GitForge แบบอ่านอย่างเดียวและตัวช่วย credential HTTPS ของตัวแทน', pluginGithubWorkbenchDesc: 'แท็บ GitHub Workbench: โครงสร้าง repo รีโมต + Issues / Pull requests / Actions พร้อมรองรับการเขียนครบวงจร — สร้าง Issue/PR, แสดงความคิดเห็น, แก้ไข, ปิด/เปิดใหม่, รวมแบบ squash·merge·rebase (ยืนยันก่อนเสมอ), รัน/ยกเลิก CI ใหม่; ตัวสลับ repo จะดึงรายการ repo ที่มีสิทธิ์เข้าถึงโดยอัตโนมัติและค้นหา repo สาธารณะได้; หากไม่ได้ติดตั้ง better-sidebar จะสลับไปใช้แผงด้านขวาแบบสแตนด์อโลนอัตโนมัติ', pluginMdExportDesc: 'เพิ่มปุ่ม "ส่งออก" ในแถบเครื่องมือ Markdown ของ better-sidebar: เรนเดอร์ .md ปัจจุบันเป็น HTML แบบสแตนด์อโลนในคลิกเดียว (ตาราง/บล็อกโค้ด/ไดอะแกรม Mermaid แบบอินไลน์ เลย์เอาต์ตามธีมพรีวิว) แล้วบันทึกไว้โฟลเดอร์เดียวกัน หรือส่งออกเป็น PDF ผ่านกล่องโต้ตอบการพิมพ์', pluginCodeNavDesc: 'การนำทางพรีวิวโค้ด: ระบุภาษาอัตโนมัติจากประเภทไฟล์และไฮไลต์ไวยากรณ์ โครงร่างสัญลักษณ์ (กรองคลาส/เมธอด/ตัวแปร + กระโดดคลิกเดียว) และค้นหาในไฟล์ (ไฮไลต์ทุกจุดที่ตรง ก่อนหน้า/ถัดไป แยกตัวพิมพ์ใหญ่เล็ก) — รับช่วงพรีวิวไฟล์โค้ดในตัวแก้ไข better-sidebar', pluginSuhuangScrollDesc: 'เชื่อมต่อ Suhuang Scroll Runtime ในเครื่องกับการตั้งค่า DSH และ better-sidebar สำหรับการกำหนดค่าโมเดล การทดสอบการเชื่อมต่อ และการควบคุมการตรวจงานต่อเนื่อง โดยต้องติดตั้ง Suhuang Scroll Runtime และ dsh-better-sidebar', pluginBetterOverleafDesc: 'แท็บ Overleaf สำหรับ better-sidebar: เข้าสู่ระบบผ่านเบราว์เซอร์ CDP โดยตรง (รองรับ Chromium ของบุคคลที่สาม) รายการ/สลับโปรเจกต์ มิเรอร์ git ภายในเครื่องที่ /overleaf/ ซิงก์ git สองทางพร้อมสำรองแบบ API อ่านอย่างเดียว และดูตัวอย่างไฟล์ผ่านเวิร์กเบนช์ของแถบข้าง', pluginGitRemotesDesc: 'tab Git Remotes: branch/upstream/ahead-behind, fetch (optional prune), ff-only pull และ push หลังการยืนยันใน tab เท่านั้น ไม่แทนที่ tab stage/commit ของ Git แบบ built-in และไม่เสนอ force-push หรือเครื่องมือ auto-push ของโมเดล', pluginSentinelDesc: 'การปลุกตัวแทนที่ขับเคลื่อนด้วยเงื่อนไข: เซนเซอร์ file/process/port/http/command/webhook ปลุกเซสชันที่หลับเมื่อเงื่อนไขเกิดขึ้น; ลงทะเบียน tab "Sentinel" พร้อมตารางเฝ้าระวังทั่วทั้งเซิร์ฟเวอร์', pluginServerDeckDesc: 'แดชบอร์ดการ์ดเซิร์ฟเวอร์: การ์ดหนึ่งใบต่อโฮสต์แสดงสถานะออนไลน์ OS เวลาทำงาน การใช้งาน CPU/หน่วยความจำ/ดิสก์ และ latency; คลิกการ์ดเพื่อเปิดเทอร์มินัล xterm.js แบบโต้ตอบ; นำเข้า ~/.ssh/config คลิกเดียว (ข้าม alias ของบริการ Git โฮสติ้งอัตโนมัติ) เมื่อติดตั้ง better-sidebar จะลงทะเบียนแท็บ 「เซิร์ฟเวอร์」 ในตัว หากไม่มีจะคงลิ้นชักอิสระไว้', pluginSidebarQaDesc: 'เลือกแล้วถาม: เลือกข้อความในแชท → ถามในพาเนลด้านขวา → เซสชันติดตามเฉพาะ (❓追问) ในพื้นที่ทำงานเดียวกัน; โมเดล no-thinking ที่รวดเร็วบีบอัดบริบทหลักและฉีดพร้อมกับคำพูดอ้างอิง โดยไม่หยุดแชทหลัก การติดตามสามารถซ้อน, ทำต่อ และเก็บถาวรได้', pluginSidenoteDesc: 'แชทข้างแบบ Codex + คำอธิบายประกอบจากการเลือกข้อความ: fork เซสชันปัจจุบันออกไปเป็นแผงข้างแบบถาวร (ถูกเก็บออกจากรายการเซสชัน, รองรับหลายอินสแตนซ์, คำสั่ง /side, อยู่รอดหลังรีโหลด, โมเดลตามเซสชันหลัก); เลือกข้อความของ assistant → badge แสดงหมายเลข + ตัวแก้ไขโน้ต → chip "N คำอธิบายประกอบ" ที่แนบไปกับข้อความถัดไป หรือถามตรง ๆ ในแชทข้างเลย', pluginSshTunnelDesc: 'tab SSH Tunnel: รายการโฮสต์หลายเครื่อง + การอนุญาตต่อโปรเจกต์ + secrets ในเครื่อง; เครื่องมือ SSHManager (exec/SFTP/กลยุทธ์เซสชัน); เทอร์มินัลโต้ตอบกลางและ SFTP แบบสองพาเนล', pluginTurnReviewDesc: 'ประตูมนุษย์บนรอบที่เพิ่งเสร็จสิ้น: Approve / Request changes ต่อพาธพร้อมความคิดเห็นที่ไม่บังคับ; พาธจัดกลุ่มตามเซสชันหลัก / ตัวแทนย่อย / ไม่ระบุแหล่งที่มา; diff แบบ snapshot-vs-now อินไลน์ก่อนตัดสินใจ ไม่มีการ fork, ไม่มี /rewind', pluginVideoPreviewDesc: 'พรีวิววิดีโอแบบอินไลน์ (.mp4/.webm/.mov/.mkv/.avi ฯลฯ) สำหรับตัวแก้ไข better-sidebar โดยสนับสนุนด้วย route /video โฮสต์เฉพาะพร้อมรองรับ HTTP Range (206) — การ scrub ทำงานได้และไฟล์ไม่จำกัดโดย mediaLimit 20MB', pluginDocsPanelDesc: 'เอกสารส่วนกลางในแถบด้านข้าง DSH: อ่านบันทึก Markdown ของคุณเองจากพื้นที่ทำงานใดๆ — รายการไฟล์, เค้าโครง, เปิดใน Chrome / VS Code และปุ่มคัดลอก; ไดเรกทอรีเอกสารสามารถกำหนดค่าได้ (ค่าเริ่มต้น ~/.dsh/docs)', pluginEgoBrowserDesc: 'เบราว์เซอร์เอเจนต์สำหรับ DeepSeek Harness: เครื่องมือ ego_* 32 ตัวขับเคลื่อน Chromium จริง แท็บ «ego browser» เนทีฟในแถบด้านข้างแสดงทุกหน้าที่เอเจนต์เยี่ยมชมแบบสด — คลิก ลาก และพิมพ์เพื่อเข้าไปควบคุมแทนได้ ลงทะเบียนแท็บอัตโนมัติเมื่อมี better-sidebar มิฉะนั้นจะใช้บับเบิลลอย', pluginBilingualReaderDesc: 'อ่าน PDF ในแถบด้านข้าง DSH: แสดง PDF ต้นฉบับ เลือกข้อความเพื่อแปลด้วย LLM พร้อมบริบทและแยกจากการสนทนาหลักโดยสิ้นเชิง', changesRedactOn: "ซ่อนข้อมูลอยู่: ค่าลับแสดงเป็น [REDACTED]; คลิกเพื่อปิด (ยอมรับความเสี่ยงเอง)", changesRedactOff: "ปิดการซ่อนข้อมูล: เนื้อหาจะแสดงตามจริง; คลิกเพื่อเปิด", changesRedactOnLabel: "กำลังซ่อน", changesRedactOffLabel: "ไม่ซ่อน", changesRedactBanner: "ถูกซ่อนแล้ว", pluginSentinelName: 'dsh-sentinel ระบบปลุกเตือน', pluginEgoBrowserName: 'ego-browser เบราว์เซอร์เอเจนต์', pluginBetterOverleafName: 'dsh-better-overleaf แท็บ Overleaf', pluginDocsPanelName: 'dsh-docs-panel เอกสารส่วนกลาง', pluginFlowglassName: 'dsh-flowglass Flowglass', pluginGitForgeName: 'dsh-git-forge ข้อมูลรับรอง Git', pluginGitRemotesName: 'dsh-git-remotes Remote ของ Git', pluginGithubWorkbenchName: 'dsh-github-workbench เวิร์กเบนช์ GitHub', pluginSidebarQaName: 'dsh-sidebar-qa เลือกแล้วถาม', pluginSidenoteName: 'dsh-sidenote แชทข้างเคียง', pluginServerDeckName: 'dsh-server-deck เด็คเซิร์ฟเวอร์', pluginSuhuangScrollName: 'dsh-suhuang-scroll Suhuang Scroll', pluginSshTunnelName: 'dsh-ssh-tunnel อุโมงค์ SSH', pluginTurnReviewName: 'dsh-turn-review รีวิวรอบ', pluginBilingualReaderName: 'dsh-bilingual-reader ตัวอ่านสองภาษา', pluginOfficeName: 'พรีวิว Office', pluginMdExportName: 'ส่งออก Markdown', pluginCodeNavName: 'ตัวนำทางพรีวิวโค้ด', pluginVideoPreviewName: 'พรีวิววิดีโอ', presetDshDesktopDesc: 'โหมดขั้นสูงของ Electron (ไร้กรอบ): macOS จองแถบด้านบน 20px; Windows จอง 32px ให้แถบหัวเรื่องเมื่อไม่มี WCO', }