From 775d28802720121341c0228596496aa8e25e7189 Mon Sep 17 00:00:00 2001
From: Nattawee Phantawong
Date: Wed, 28 Jan 2026 21:10:50 +0700
Subject: [PATCH] feat(i18n): add th locale support (#10809)
---
README.md | 3 +-
README.th.md | 134 +++++
packages/app/src/context/language.tsx | 10 +-
packages/app/src/i18n/ar.ts | 1 +
packages/app/src/i18n/br.ts | 1 +
packages/app/src/i18n/da.ts | 1 +
packages/app/src/i18n/de.ts | 1 +
packages/app/src/i18n/en.ts | 1 +
packages/app/src/i18n/es.ts | 1 +
packages/app/src/i18n/fr.ts | 1 +
packages/app/src/i18n/ja.ts | 1 +
packages/app/src/i18n/ko.ts | 1 +
packages/app/src/i18n/no.ts | 1 +
packages/app/src/i18n/pl.ts | 1 +
packages/app/src/i18n/ru.ts | 1 +
packages/app/src/i18n/th.ts | 718 ++++++++++++++++++++++++++
packages/app/src/i18n/zh.ts | 1 +
packages/app/src/i18n/zht.ts | 1 +
packages/ui/src/i18n/th.ts | 102 ++++
19 files changed, 978 insertions(+), 3 deletions(-)
create mode 100644 README.th.md
create mode 100644 packages/app/src/i18n/th.ts
create mode 100644 packages/ui/src/i18n/th.ts
diff --git a/README.md b/README.md
index d0acb758d9..7e20902547 100644
--- a/README.md
+++ b/README.md
@@ -29,7 +29,8 @@
Русский |
العربية |
Norsk |
- Português (Brasil)
+ Português (Brasil) |
+ ไทย
[](https://opencode.ai)
diff --git a/README.th.md b/README.th.md
new file mode 100644
index 0000000000..a4b306a6c4
--- /dev/null
+++ b/README.th.md
@@ -0,0 +1,134 @@
+
+
+
+
+
+
+
+
+
+เอเจนต์การเขียนโค้ดด้วย AI แบบโอเพนซอร์ส
+
+
+
+
+
+
+
+ English |
+ 简体中文 |
+ 繁體中文 |
+ 한국어 |
+ Deutsch |
+ Español |
+ Français |
+ Italiano |
+ Dansk |
+ 日本語 |
+ Polski |
+ Русский |
+ العربية |
+ Norsk |
+ Português (Brasil) |
+ ไทย
+
+
+[](https://opencode.ai)
+
+---
+
+### การติดตั้ง
+
+```bash
+# YOLO
+curl -fsSL https://opencode.ai/install | bash
+
+# ตัวจัดการแพ็กเกจ
+npm i -g opencode-ai@latest # หรือ bun/pnpm/yarn
+scoop install opencode # Windows
+choco install opencode # Windows
+brew install anomalyco/tap/opencode # macOS และ Linux (แนะนำ อัปเดตเสมอ)
+brew install opencode # macOS และ Linux (brew formula อย่างเป็นทางการ อัปเดตน้อยกว่า)
+paru -S opencode-bin # Arch Linux
+mise use -g opencode # ระบบปฏิบัติการใดก็ได้
+nix run nixpkgs#opencode # หรือ github:anomalyco/opencode สำหรับสาขาพัฒนาล่าสุด
+```
+
+> [!TIP]
+> ลบเวอร์ชันที่เก่ากว่า 0.1.x ก่อนติดตั้ง
+
+### แอปพลิเคชันเดสก์ท็อป (เบต้า)
+
+OpenCode มีให้ใช้งานเป็นแอปพลิเคชันเดสก์ท็อป ดาวน์โหลดโดยตรงจาก [หน้ารุ่น](https://github.com/anomalyco/opencode/releases) หรือ [opencode.ai/download](https://opencode.ai/download)
+
+| แพลตฟอร์ม | ดาวน์โหลด |
+| --------------------- | ------------------------------------- |
+| macOS (Apple Silicon) | `opencode-desktop-darwin-aarch64.dmg` |
+| macOS (Intel) | `opencode-desktop-darwin-x64.dmg` |
+| Windows | `opencode-desktop-windows-x64.exe` |
+| Linux | `.deb`, `.rpm`, หรือ AppImage |
+
+```bash
+# macOS (Homebrew)
+brew install --cask opencode-desktop
+# Windows (Scoop)
+scoop bucket add extras; scoop install extras/opencode-desktop
+```
+
+#### ไดเรกทอรีการติดตั้ง
+
+สคริปต์การติดตั้งจะใช้ลำดับความสำคัญตามเส้นทางการติดตั้ง:
+
+1. `$OPENCODE_INSTALL_DIR` - ไดเรกทอรีการติดตั้งที่กำหนดเอง
+2. `$XDG_BIN_DIR` - เส้นทางที่สอดคล้องกับ XDG Base Directory Specification
+3. `$HOME/bin` - ไดเรกทอรีไบนารีผู้ใช้มาตรฐาน (หากมีอยู่หรือสามารถสร้างได้)
+4. `$HOME/.opencode/bin` - ค่าสำรองเริ่มต้น
+
+```bash
+# ตัวอย่าง
+OPENCODE_INSTALL_DIR=/usr/local/bin curl -fsSL https://opencode.ai/install | bash
+XDG_BIN_DIR=$HOME/.local/bin curl -fsSL https://opencode.ai/install | bash
+```
+
+### เอเจนต์
+
+OpenCode รวมเอเจนต์ในตัวสองตัวที่คุณสามารถสลับได้ด้วยปุ่ม `Tab`
+
+- **build** - เอเจนต์เริ่มต้น มีสิทธิ์เข้าถึงแบบเต็มสำหรับงานพัฒนา
+- **plan** - เอเจนต์อ่านอย่างเดียวสำหรับการวิเคราะห์และการสำรวจโค้ด
+ - ปฏิเสธการแก้ไขไฟล์โดยค่าเริ่มต้น
+ - ขอสิทธิ์ก่อนเรียกใช้คำสั่ง bash
+ - เหมาะสำหรับสำรวจโค้ดเบสที่ไม่คุ้นเคยหรือวางแผนการเปลี่ยนแปลง
+
+นอกจากนี้ยังมีเอเจนต์ย่อย **general** สำหรับการค้นหาที่ซับซ้อนและงานหลายขั้นตอน
+ใช้ภายในและสามารถเรียกใช้ได้โดยใช้ `@general` ในข้อความ
+
+เรียนรู้เพิ่มเติมเกี่ยวกับ [เอเจนต์](https://opencode.ai/docs/agents)
+
+### เอกสารประกอบ
+
+สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีกำหนดค่า OpenCode [**ไปที่เอกสารของเรา**](https://opencode.ai/docs)
+
+### การมีส่วนร่วม
+
+หากคุณสนใจที่จะมีส่วนร่วมใน OpenCode โปรดอ่าน [เอกสารการมีส่วนร่วม](./CONTRIBUTING.md) ก่อนส่ง Pull Request
+
+### การสร้างบน OpenCode
+
+หากคุณทำงานในโปรเจกต์ที่เกี่ยวข้องกับ OpenCode และใช้ "opencode" เป็นส่วนหนึ่งของชื่อ เช่น "opencode-dashboard" หรือ "opencode-mobile" โปรดเพิ่มหมายเหตุใน README ของคุณเพื่อชี้แจงว่าไม่ได้สร้างโดยทีม OpenCode และไม่ได้เกี่ยวข้องกับเราในทางใด
+
+### คำถามที่พบบ่อย
+
+#### ต่างจาก Claude Code อย่างไร?
+
+คล้ายกับ Claude Code มากในแง่ความสามารถ นี่คือความแตกต่างหลัก:
+
+- โอเพนซอร์ส 100%
+- ไม่ผูกมัดกับผู้ให้บริการใดๆ แม้ว่าเราจะแนะนำโมเดลที่เราจัดหาให้ผ่าน [OpenCode Zen](https://opencode.ai/zen) OpenCode สามารถใช้กับ Claude, OpenAI, Google หรือแม้กระทั่งโมเดลในเครื่องได้ เมื่อโมเดลพัฒนาช่องว่างระหว่างพวกมันจะปิดลงและราคาจะลดลง ดังนั้นการไม่ผูกมัดกับผู้ให้บริการจึงสำคัญ
+- รองรับ LSP ใช้งานได้ทันทีหลังการติดตั้งโดยไม่ต้องปรับแต่งหรือเปลี่ยนแปลงฟังก์ชันการทำงานใด ๆ
+- เน้นที่ TUI OpenCode สร้างโดยผู้ใช้ neovim และผู้สร้าง [terminal.shop](https://terminal.shop) เราจะผลักดันขีดจำกัดของสิ่งที่เป็นไปได้ในเทอร์มินัล
+- สถาปัตยกรรมไคลเอนต์/เซิร์ฟเวอร์ ตัวอย่างเช่น อาจอนุญาตให้ OpenCode ทำงานบนคอมพิวเตอร์ของคุณ ในขณะที่คุณสามารถขับเคลื่อนจากระยะไกลผ่านแอปมือถือ หมายความว่า TUI frontend เป็นหนึ่งในไคลเอนต์ที่เป็นไปได้เท่านั้น
+
+---
+
+**ร่วมชุมชนของเรา** [Discord](https://discord.gg/opencode) | [X.com](https://x.com/opencode)
diff --git a/packages/app/src/context/language.tsx b/packages/app/src/context/language.tsx
index da10e4773a..b83800ded5 100644
--- a/packages/app/src/context/language.tsx
+++ b/packages/app/src/context/language.tsx
@@ -17,6 +17,7 @@ import { dict as ru } from "@/i18n/ru"
import { dict as ar } from "@/i18n/ar"
import { dict as no } from "@/i18n/no"
import { dict as br } from "@/i18n/br"
+import { dict as th } from "@/i18n/th"
import { dict as uiEn } from "@opencode-ai/ui/i18n/en"
import { dict as uiZh } from "@opencode-ai/ui/i18n/zh"
import { dict as uiZht } from "@opencode-ai/ui/i18n/zht"
@@ -31,13 +32,14 @@ import { dict as uiRu } from "@opencode-ai/ui/i18n/ru"
import { dict as uiAr } from "@opencode-ai/ui/i18n/ar"
import { dict as uiNo } from "@opencode-ai/ui/i18n/no"
import { dict as uiBr } from "@opencode-ai/ui/i18n/br"
+import { dict as uiTh } from "@opencode-ai/ui/i18n/th"
-export type Locale = "en" | "zh" | "zht" | "ko" | "de" | "es" | "fr" | "da" | "ja" | "pl" | "ru" | "ar" | "no" | "br"
+export type Locale = "en" | "zh" | "zht" | "ko" | "de" | "es" | "fr" | "da" | "ja" | "pl" | "ru" | "ar" | "no" | "br" | "th"
type RawDictionary = typeof en & typeof uiEn
type Dictionary = i18n.Flatten
-const LOCALES: readonly Locale[] = ["en", "zh", "zht", "ko", "de", "es", "fr", "da", "ja", "pl", "ru", "ar", "no", "br"]
+const LOCALES: readonly Locale[] = ["en", "zh", "zht", "ko", "de", "es", "fr", "da", "ja", "pl", "ru", "ar", "no", "br", "th"]
function detectLocale(): Locale {
if (typeof navigator !== "object") return "en"
@@ -65,6 +67,7 @@ function detectLocale(): Locale {
)
return "no"
if (language.toLowerCase().startsWith("pt")) return "br"
+ if (language.toLowerCase().startsWith("th")) return "th"
}
return "en"
@@ -94,6 +97,7 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont
if (store.locale === "ar") return "ar"
if (store.locale === "no") return "no"
if (store.locale === "br") return "br"
+ if (store.locale === "th") return "th"
return "en"
})
@@ -118,6 +122,7 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont
if (locale() === "ar") return { ...base, ...i18n.flatten({ ...ar, ...uiAr }) }
if (locale() === "no") return { ...base, ...i18n.flatten({ ...no, ...uiNo }) }
if (locale() === "br") return { ...base, ...i18n.flatten({ ...br, ...uiBr }) }
+ if (locale() === "th") return { ...base, ...i18n.flatten({ ...th, ...uiTh }) }
return { ...base, ...i18n.flatten({ ...ko, ...uiKo }) }
})
@@ -138,6 +143,7 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont
ar: "language.ar",
no: "language.no",
br: "language.br",
+ th: "language.th",
}
const label = (value: Locale) => t(labelKey[value])
diff --git a/packages/app/src/i18n/ar.ts b/packages/app/src/i18n/ar.ts
index 55d3d9fa71..8ca05cdfeb 100644
--- a/packages/app/src/i18n/ar.ts
+++ b/packages/app/src/i18n/ar.ts
@@ -331,6 +331,7 @@ export const dict = {
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
+ "language.th": "ไทย",
"toast.language.title": "لغة",
"toast.language.description": "تم التبديل إلى {{language}}",
diff --git a/packages/app/src/i18n/br.ts b/packages/app/src/i18n/br.ts
index bcbf631616..ad0772cd8b 100644
--- a/packages/app/src/i18n/br.ts
+++ b/packages/app/src/i18n/br.ts
@@ -330,6 +330,7 @@ export const dict = {
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
+ "language.th": "ไทย",
"toast.language.title": "Idioma",
"toast.language.description": "Alterado para {{language}}",
diff --git a/packages/app/src/i18n/da.ts b/packages/app/src/i18n/da.ts
index 9b641f48be..031d92d4b9 100644
--- a/packages/app/src/i18n/da.ts
+++ b/packages/app/src/i18n/da.ts
@@ -332,6 +332,7 @@ export const dict = {
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
+ "language.th": "ไทย",
"toast.language.title": "Sprog",
"toast.language.description": "Skiftede til {{language}}",
diff --git a/packages/app/src/i18n/de.ts b/packages/app/src/i18n/de.ts
index 5fedbaf0a3..9febfcff1e 100644
--- a/packages/app/src/i18n/de.ts
+++ b/packages/app/src/i18n/de.ts
@@ -338,6 +338,7 @@ export const dict = {
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
+ "language.th": "ไทย",
"toast.language.title": "Sprache",
"toast.language.description": "Zu {{language}} gewechselt",
diff --git a/packages/app/src/i18n/en.ts b/packages/app/src/i18n/en.ts
index 173976db74..a6a50506a0 100644
--- a/packages/app/src/i18n/en.ts
+++ b/packages/app/src/i18n/en.ts
@@ -337,6 +337,7 @@ export const dict = {
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
+ "language.th": "ไทย",
"toast.language.title": "Language",
"toast.language.description": "Switched to {{language}}",
diff --git a/packages/app/src/i18n/es.ts b/packages/app/src/i18n/es.ts
index 6e06791dd9..ee75a143df 100644
--- a/packages/app/src/i18n/es.ts
+++ b/packages/app/src/i18n/es.ts
@@ -333,6 +333,7 @@ export const dict = {
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
+ "language.th": "ไทย",
"toast.language.title": "Idioma",
"toast.language.description": "Cambiado a {{language}}",
diff --git a/packages/app/src/i18n/fr.ts b/packages/app/src/i18n/fr.ts
index ba3ea88616..f0652a9814 100644
--- a/packages/app/src/i18n/fr.ts
+++ b/packages/app/src/i18n/fr.ts
@@ -333,6 +333,7 @@ export const dict = {
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
+ "language.th": "ไทย",
"toast.language.title": "Langue",
"toast.language.description": "Passé à {{language}}",
diff --git a/packages/app/src/i18n/ja.ts b/packages/app/src/i18n/ja.ts
index 32c5db3ffd..ffe5368142 100644
--- a/packages/app/src/i18n/ja.ts
+++ b/packages/app/src/i18n/ja.ts
@@ -331,6 +331,7 @@ export const dict = {
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
+ "language.th": "ไทย",
"toast.language.title": "言語",
"toast.language.description": "{{language}}に切り替えました",
diff --git a/packages/app/src/i18n/ko.ts b/packages/app/src/i18n/ko.ts
index 2c072b4b8f..6c30e0123d 100644
--- a/packages/app/src/i18n/ko.ts
+++ b/packages/app/src/i18n/ko.ts
@@ -334,6 +334,7 @@ export const dict = {
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
+ "language.th": "ไทย",
"toast.language.title": "언어",
"toast.language.description": "{{language}}(으)로 전환됨",
diff --git a/packages/app/src/i18n/no.ts b/packages/app/src/i18n/no.ts
index 076ee04286..132c0b6c1f 100644
--- a/packages/app/src/i18n/no.ts
+++ b/packages/app/src/i18n/no.ts
@@ -334,6 +334,7 @@ export const dict = {
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
+ "language.th": "ไทย",
"toast.language.title": "Språk",
"toast.language.description": "Byttet til {{language}}",
diff --git a/packages/app/src/i18n/pl.ts b/packages/app/src/i18n/pl.ts
index 689d291616..efed3eeb15 100644
--- a/packages/app/src/i18n/pl.ts
+++ b/packages/app/src/i18n/pl.ts
@@ -332,6 +332,7 @@ export const dict = {
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
+ "language.th": "ไทย",
"toast.language.title": "Język",
"toast.language.description": "Przełączono na {{language}}",
diff --git a/packages/app/src/i18n/ru.ts b/packages/app/src/i18n/ru.ts
index f2a499bef3..0728c4a342 100644
--- a/packages/app/src/i18n/ru.ts
+++ b/packages/app/src/i18n/ru.ts
@@ -333,6 +333,7 @@ export const dict = {
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
+ "language.th": "ไทย",
"toast.language.title": "Язык",
"toast.language.description": "Переключено на {{language}}",
diff --git a/packages/app/src/i18n/th.ts b/packages/app/src/i18n/th.ts
new file mode 100644
index 0000000000..9ccb61ac76
--- /dev/null
+++ b/packages/app/src/i18n/th.ts
@@ -0,0 +1,718 @@
+export const dict = {
+ "command.category.suggested": "แนะนำ",
+ "command.category.view": "มุมมอง",
+ "command.category.project": "โปรเจกต์",
+ "command.category.provider": "ผู้ให้บริการ",
+ "command.category.server": "เซิร์ฟเวอร์",
+ "command.category.session": "เซสชัน",
+ "command.category.theme": "ธีม",
+ "command.category.language": "ภาษา",
+ "command.category.file": "ไฟล์",
+ "command.category.context": "บริบท",
+ "command.category.terminal": "เทอร์มินัล",
+ "command.category.model": "โมเดล",
+ "command.category.mcp": "MCP",
+ "command.category.agent": "เอเจนต์",
+ "command.category.permissions": "สิทธิ์",
+ "command.category.workspace": "พื้นที่ทำงาน",
+ "command.category.settings": "การตั้งค่า",
+
+ "theme.scheme.system": "ระบบ",
+ "theme.scheme.light": "สว่าง",
+ "theme.scheme.dark": "มืด",
+
+ "command.sidebar.toggle": "สลับแถบข้าง",
+ "command.project.open": "เปิดโปรเจกต์",
+ "command.provider.connect": "เชื่อมต่อผู้ให้บริการ",
+ "command.server.switch": "สลับเซิร์ฟเวอร์",
+ "command.settings.open": "เปิดการตั้งค่า",
+ "command.session.previous": "เซสชันก่อนหน้า",
+ "command.session.next": "เซสชันถัดไป",
+ "command.session.archive": "จัดเก็บเซสชัน",
+
+ "command.palette": "คำสั่งค้นหา",
+
+ "command.theme.cycle": "เปลี่ยนธีม",
+ "command.theme.set": "ใช้ธีม: {{theme}}",
+ "command.theme.scheme.cycle": "เปลี่ยนโทนสี",
+ "command.theme.scheme.set": "ใช้โทนสี: {{scheme}}",
+
+ "command.language.cycle": "เปลี่ยนภาษา",
+ "command.language.set": "ใช้ภาษา: {{language}}",
+
+ "command.session.new": "เซสชันใหม่",
+ "command.file.open": "เปิดไฟล์",
+ "command.file.open.description": "ค้นหาไฟล์และคำสั่ง",
+ "command.context.addSelection": "เพิ่มส่วนที่เลือกไปยังบริบท",
+ "command.context.addSelection.description": "เพิ่มบรรทัดที่เลือกจากไฟล์ปัจจุบัน",
+ "command.terminal.toggle": "สลับเทอร์มินัล",
+ "command.fileTree.toggle": "สลับต้นไม้ไฟล์",
+ "command.review.toggle": "สลับการตรวจสอบ",
+ "command.terminal.new": "เทอร์มินัลใหม่",
+ "command.terminal.new.description": "สร้างแท็บเทอร์มินัลใหม่",
+ "command.steps.toggle": "สลับขั้นตอน",
+ "command.steps.toggle.description": "แสดงหรือซ่อนขั้นตอนสำหรับข้อความปัจจุบัน",
+ "command.message.previous": "ข้อความก่อนหน้า",
+ "command.message.previous.description": "ไปที่ข้อความผู้ใช้ก่อนหน้า",
+ "command.message.next": "ข้อความถัดไป",
+ "command.message.next.description": "ไปที่ข้อความผู้ใช้ถัดไป",
+ "command.model.choose": "เลือกโมเดล",
+ "command.model.choose.description": "เลือกโมเดลอื่น",
+ "command.mcp.toggle": "สลับ MCPs",
+ "command.mcp.toggle.description": "สลับ MCPs",
+ "command.agent.cycle": "เปลี่ยนเอเจนต์",
+ "command.agent.cycle.description": "สลับไปยังเอเจนต์ถัดไป",
+ "command.agent.cycle.reverse": "เปลี่ยนเอเจนต์ย้อนกลับ",
+ "command.agent.cycle.reverse.description": "สลับไปยังเอเจนต์ก่อนหน้า",
+ "command.model.variant.cycle": "เปลี่ยนความพยายามในการคิด",
+ "command.model.variant.cycle.description": "สลับไปยังระดับความพยายามถัดไป",
+ "command.permissions.autoaccept.enable": "ยอมรับการแก้ไขโดยอัตโนมัติ",
+ "command.permissions.autoaccept.disable": "หยุดยอมรับการแก้ไขโดยอัตโนมัติ",
+ "command.session.undo": "ยกเลิก",
+ "command.session.undo.description": "ยกเลิกข้อความล่าสุด",
+ "command.session.redo": "ทำซ้ำ",
+ "command.session.redo.description": "ทำซ้ำข้อความที่ถูกยกเลิกล่าสุด",
+ "command.session.compact": "บีบอัดเซสชัน",
+ "command.session.compact.description": "สรุปเซสชันเพื่อลดขนาดบริบท",
+ "command.session.fork": "แตกแขนงจากข้อความ",
+ "command.session.fork.description": "สร้างเซสชันใหม่จากข้อความก่อนหน้า",
+ "command.session.share": "แชร์เซสชัน",
+ "command.session.share.description": "แชร์เซสชันนี้และคัดลอก URL ไปยังคลิปบอร์ด",
+ "command.session.unshare": "ยกเลิกการแชร์เซสชัน",
+ "command.session.unshare.description": "หยุดการแชร์เซสชันนี้",
+
+ "palette.search.placeholder": "ค้นหาไฟล์และคำสั่ง",
+ "palette.empty": "ไม่พบผลลัพธ์",
+ "palette.group.commands": "คำสั่ง",
+ "palette.group.files": "ไฟล์",
+
+ "dialog.provider.search.placeholder": "ค้นหาผู้ให้บริการ",
+ "dialog.provider.empty": "ไม่พบผู้ให้บริการ",
+ "dialog.provider.group.popular": "ยอดนิยม",
+ "dialog.provider.group.other": "อื่น ๆ",
+ "dialog.provider.tag.recommended": "แนะนำ",
+ "dialog.provider.opencode.note": "โมเดลที่คัดสรร รวมถึง Claude, GPT, Gemini และอื่น ๆ",
+ "dialog.provider.anthropic.note": "เข้าถึงโมเดล Claude โดยตรง รวมถึง Pro และ Max",
+ "dialog.provider.copilot.note": "โมเดล Claude สำหรับการช่วยเหลือในการเขียนโค้ด",
+ "dialog.provider.openai.note": "โมเดล GPT สำหรับงาน AI ทั่วไปที่รวดเร็วและมีความสามารถ",
+ "dialog.provider.google.note": "โมเดล Gemini สำหรับการตอบสนองที่รวดเร็วและมีโครงสร้าง",
+ "dialog.provider.openrouter.note": "เข้าถึงโมเดลที่รองรับทั้งหมดจากผู้ให้บริการเดียว",
+ "dialog.provider.vercel.note": "การเข้าถึงโมเดล AI แบบรวมด้วยการกำหนดเส้นทางอัจฉริยะ",
+
+ "dialog.model.select.title": "เลือกโมเดล",
+ "dialog.model.search.placeholder": "ค้นหาโมเดล",
+ "dialog.model.empty": "ไม่พบผลลัพธ์โมเดล",
+ "dialog.model.manage": "จัดการโมเดล",
+ "dialog.model.manage.description": "ปรับแต่งโมเดลที่จะปรากฏในตัวเลือกโมเดล",
+
+ "dialog.model.unpaid.freeModels.title": "โมเดลฟรีที่จัดหาให้โดย OpenCode",
+ "dialog.model.unpaid.addMore.title": "เพิ่มโมเดลเพิ่มเติมจากผู้ให้บริการยอดนิยม",
+
+ "dialog.provider.viewAll": "แสดงผู้ให้บริการเพิ่มเติม",
+
+ "provider.connect.title": "เชื่อมต่อ {{provider}}",
+ "provider.connect.title.anthropicProMax": "เข้าสู่ระบบด้วย Claude Pro/Max",
+ "provider.connect.selectMethod": "เลือกวิธีการเข้าสู่ระบบสำหรับ {{provider}}",
+ "provider.connect.method.apiKey": "คีย์ API",
+ "provider.connect.status.inProgress": "กำลังอนุญาต...",
+ "provider.connect.status.waiting": "รอการอนุญาต...",
+ "provider.connect.status.failed": "การอนุญาตล้มเหลว: {{error}}",
+ "provider.connect.apiKey.description":
+ "ป้อนคีย์ API ของ {{provider}} เพื่อเชื่อมต่อบัญชีและใช้โมเดล {{provider}} ใน OpenCode",
+ "provider.connect.apiKey.label": "คีย์ API ของ {{provider}}",
+ "provider.connect.apiKey.placeholder": "คีย์ API",
+ "provider.connect.apiKey.required": "ต้องใช้คีย์ API",
+ "provider.connect.opencodeZen.line1":
+ "OpenCode Zen ให้คุณเข้าถึงชุดโมเดลที่เชื่อถือได้และปรับแต่งแล้วสำหรับเอเจนต์การเขียนโค้ด",
+ "provider.connect.opencodeZen.line2":
+ "ด้วยคีย์ API เดียวคุณจะได้รับการเข้าถึงโมเดล เช่น Claude, GPT, Gemini, GLM และอื่น ๆ",
+ "provider.connect.opencodeZen.visit.prefix": "เยี่ยมชม ",
+ "provider.connect.opencodeZen.visit.link": "opencode.ai/zen",
+ "provider.connect.opencodeZen.visit.suffix": " เพื่อรวบรวมคีย์ API ของคุณ",
+ "provider.connect.oauth.code.visit.prefix": "เยี่ยมชม ",
+ "provider.connect.oauth.code.visit.link": "ลิงก์นี้",
+ "provider.connect.oauth.code.visit.suffix":
+ " เพื่อรวบรวมรหัสการอนุญาตของคุณเพื่อเชื่อมต่อบัญชีและใช้โมเดล {{provider}} ใน OpenCode",
+ "provider.connect.oauth.code.label": "รหัสการอนุญาต {{method}}",
+ "provider.connect.oauth.code.placeholder": "รหัสการอนุญาต",
+ "provider.connect.oauth.code.required": "ต้องใช้รหัสการอนุญาต",
+ "provider.connect.oauth.code.invalid": "รหัสการอนุญาตไม่ถูกต้อง",
+ "provider.connect.oauth.auto.visit.prefix": "เยี่ยมชม ",
+ "provider.connect.oauth.auto.visit.link": "ลิงก์นี้",
+ "provider.connect.oauth.auto.visit.suffix":
+ " และป้อนรหัสด้านล่างเพื่อเชื่อมต่อบัญชีและใช้โมเดล {{provider}} ใน OpenCode",
+ "provider.connect.oauth.auto.confirmationCode": "รหัสยืนยัน",
+ "provider.connect.toast.connected.title": "{{provider}} ที่เชื่อมต่อแล้ว",
+ "provider.connect.toast.connected.description": "โมเดล {{provider}} พร้อมใช้งานแล้ว",
+
+ "provider.disconnect.toast.disconnected.title": "{{provider}} ที่ยกเลิกการเชื่อมต่อแล้ว",
+ "provider.disconnect.toast.disconnected.description": "โมเดล {{provider}} ไม่พร้อมใช้งานอีกต่อไป",
+
+ "model.tag.free": "ฟรี",
+ "model.tag.latest": "ล่าสุด",
+ "model.provider.anthropic": "Anthropic",
+ "model.provider.openai": "OpenAI",
+ "model.provider.google": "Google",
+ "model.provider.xai": "xAI",
+ "model.provider.meta": "Meta",
+ "model.input.text": "ข้อความ",
+ "model.input.image": "รูปภาพ",
+ "model.input.audio": "เสียง",
+ "model.input.video": "วิดีโอ",
+ "model.input.pdf": "pdf",
+ "model.tooltip.allows": "อนุญาต: {{inputs}}",
+ "model.tooltip.reasoning.allowed": "อนุญาตการใช้เหตุผล",
+ "model.tooltip.reasoning.none": "ไม่มีการใช้เหตุผล",
+ "model.tooltip.context": "ขีดจำกัดบริบท {{limit}}",
+
+ "common.search.placeholder": "ค้นหา",
+ "common.goBack": "ย้อนกลับ",
+ "common.loading": "กำลังโหลด",
+ "common.loading.ellipsis": "...",
+ "common.cancel": "ยกเลิก",
+ "common.connect": "เชื่อมต่อ",
+ "common.disconnect": "ยกเลิกการเชื่อมต่อ",
+ "common.submit": "ส่ง",
+ "common.save": "บันทึก",
+ "common.saving": "กำลังบันทึก...",
+ "common.default": "ค่าเริ่มต้น",
+ "common.attachment": "ไฟล์แนบ",
+
+ "prompt.placeholder.shell": "ป้อนคำสั่งเชลล์...",
+ "prompt.placeholder.normal": 'ถามอะไรก็ได้... "{{example}}"',
+ "prompt.placeholder.summarizeComments": "สรุปความคิดเห็น…",
+ "prompt.placeholder.summarizeComment": "สรุปความคิดเห็น…",
+ "prompt.mode.shell": "เชลล์",
+ "prompt.mode.shell.exit": "กด esc เพื่อออก",
+
+ "prompt.example.1": "แก้ไข TODO ในโค้ดเบส",
+ "prompt.example.2": "เทคโนโลยีของโปรเจกต์นี้คืออะไร?",
+ "prompt.example.3": "แก้ไขการทดสอบที่เสีย",
+ "prompt.example.4": "อธิบายวิธีการทำงานของการตรวจสอบสิทธิ์",
+ "prompt.example.5": "ค้นหาและแก้ไขช่องโหว่ความปลอดภัย",
+ "prompt.example.6": "เพิ่มการทดสอบหน่วยสำหรับบริการผู้ใช้",
+ "prompt.example.7": "ปรับโครงสร้างฟังก์ชันนี้ให้อ่านง่ายขึ้น",
+ "prompt.example.8": "ข้อผิดพลาดนี้หมายความว่าอะไร?",
+ "prompt.example.9": "ช่วยฉันดีบักปัญหานี้",
+ "prompt.example.10": "สร้างเอกสาร API",
+ "prompt.example.11": "ปรับปรุงการสืบค้นฐานข้อมูล",
+ "prompt.example.12": "เพิ่มการตรวจสอบข้อมูลนำเข้า",
+ "prompt.example.13": "สร้างคอมโพเนนต์ใหม่สำหรับ...",
+ "prompt.example.14": "ฉันจะทำให้โปรเจกต์นี้ทำงานได้อย่างไร?",
+ "prompt.example.15": "ตรวจสอบโค้ดของฉันเพื่อแนวทางปฏิบัติที่ดีที่สุด",
+ "prompt.example.16": "เพิ่มการจัดการข้อผิดพลาดในฟังก์ชันนี้",
+ "prompt.example.17": "อธิบายรูปแบบ regex นี้",
+ "prompt.example.18": "แปลงสิ่งนี้เป็น TypeScript",
+ "prompt.example.19": "เพิ่มการบันทึกทั่วทั้งโค้ดเบส",
+ "prompt.example.20": "มีการพึ่งพาอะไรที่ล้าสมัยอยู่?",
+ "prompt.example.21": "ช่วยฉันเขียนสคริปต์การย้ายข้อมูล",
+ "prompt.example.22": "ใช้งานแคชสำหรับจุดสิ้นสุดนี้",
+ "prompt.example.23": "เพิ่มการแบ่งหน้าในรายการนี้",
+ "prompt.example.24": "สร้างคำสั่ง CLI สำหรับ...",
+ "prompt.example.25": "ตัวแปรสภาพแวดล้อมทำงานอย่างไรที่นี่?",
+
+ "prompt.popover.emptyResults": "ไม่พบผลลัพธ์ที่ตรงกัน",
+ "prompt.popover.emptyCommands": "ไม่พบคำสั่งที่ตรงกัน",
+ "prompt.dropzone.label": "วางรูปภาพหรือ PDF ที่นี่",
+ "prompt.slash.badge.custom": "กำหนดเอง",
+ "prompt.context.active": "ใช้งานอยู่",
+ "prompt.context.includeActiveFile": "รวมไฟล์ที่ใช้งานอยู่",
+ "prompt.context.removeActiveFile": "เอาไฟล์ที่ใช้งานอยู่ออกจากบริบท",
+ "prompt.context.removeFile": "เอาไฟล์ออกจากบริบท",
+ "prompt.action.attachFile": "แนบไฟล์",
+ "prompt.attachment.remove": "เอาไฟล์แนบออก",
+ "prompt.action.send": "ส่ง",
+ "prompt.action.stop": "หยุด",
+
+ "prompt.toast.pasteUnsupported.title": "การวางไม่รองรับ",
+ "prompt.toast.pasteUnsupported.description": "สามารถวางรูปภาพหรือ PDF เท่านั้น",
+ "prompt.toast.modelAgentRequired.title": "เลือกเอเจนต์และโมเดล",
+ "prompt.toast.modelAgentRequired.description": "เลือกเอเจนต์และโมเดลก่อนส่งพร้อมท์",
+ "prompt.toast.worktreeCreateFailed.title": "ไม่สามารถสร้าง worktree",
+ "prompt.toast.sessionCreateFailed.title": "ไม่สามารถสร้างเซสชัน",
+ "prompt.toast.shellSendFailed.title": "ไม่สามารถส่งคำสั่งเชลล์",
+ "prompt.toast.commandSendFailed.title": "ไม่สามารถส่งคำสั่ง",
+ "prompt.toast.promptSendFailed.title": "ไม่สามารถส่งพร้อมท์",
+
+ "dialog.mcp.title": "MCPs",
+ "dialog.mcp.description": "{{enabled}} จาก {{total}} ที่เปิดใช้งาน",
+ "dialog.mcp.empty": "ไม่มี MCP ที่กำหนดค่า",
+
+ "dialog.lsp.empty": "LSPs ตรวจจับอัตโนมัติจากประเภทไฟล์",
+ "dialog.plugins.empty": "ปลั๊กอินที่กำหนดค่าใน opencode.json",
+
+ "mcp.status.connected": "เชื่อมต่อแล้ว",
+ "mcp.status.failed": "ล้มเหลว",
+ "mcp.status.needs_auth": "ต้องการการตรวจสอบสิทธิ์",
+ "mcp.status.disabled": "ปิดใช้งาน",
+
+ "dialog.fork.empty": "ไม่มีข้อความให้แตกแขนง",
+
+ "dialog.directory.search.placeholder": "ค้นหาโฟลเดอร์",
+ "dialog.directory.empty": "ไม่พบโฟลเดอร์",
+
+ "dialog.server.title": "เซิร์ฟเวอร์",
+ "dialog.server.description": "สลับเซิร์ฟเวอร์ OpenCode ที่แอปนี้เชื่อมต่อด้วย",
+ "dialog.server.search.placeholder": "ค้นหาเซิร์ฟเวอร์",
+ "dialog.server.empty": "ยังไม่มีเซิร์ฟเวอร์",
+ "dialog.server.add.title": "เพิ่มเซิร์ฟเวอร์",
+ "dialog.server.add.url": "URL เซิร์ฟเวอร์",
+ "dialog.server.add.placeholder": "http://localhost:4096",
+ "dialog.server.add.error": "ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์",
+ "dialog.server.add.checking": "กำลังตรวจสอบ...",
+ "dialog.server.add.button": "เพิ่มเซิร์ฟเวอร์",
+ "dialog.server.default.title": "เซิร์ฟเวอร์เริ่มต้น",
+ "dialog.server.default.description":
+ "เชื่อมต่อกับเซิร์ฟเวอร์นี้เมื่อเปิดแอปแทนการเริ่มเซิร์ฟเวอร์ในเครื่อง ต้องรีสตาร์ท",
+ "dialog.server.default.none": "ไม่ได้เลือกเซิร์ฟเวอร์",
+ "dialog.server.default.set": "ตั้งเซิร์ฟเวอร์ปัจจุบันเป็นค่าเริ่มต้น",
+ "dialog.server.default.clear": "ล้าง",
+ "dialog.server.action.remove": "เอาเซิร์ฟเวอร์ออก",
+
+ "dialog.server.menu.edit": "แก้ไข",
+ "dialog.server.menu.default": "ตั้งเป็นค่าเริ่มต้น",
+ "dialog.server.menu.defaultRemove": "เอาค่าเริ่มต้นออก",
+ "dialog.server.menu.delete": "ลบ",
+ "dialog.server.current": "เซิร์ฟเวอร์ปัจจุบัน",
+ "dialog.server.status.default": "ค่าเริ่มต้น",
+
+ "dialog.project.edit.title": "แก้ไขโปรเจกต์",
+ "dialog.project.edit.name": "ชื่อ",
+ "dialog.project.edit.icon": "ไอคอน",
+ "dialog.project.edit.icon.alt": "ไอคอนโปรเจกต์",
+ "dialog.project.edit.icon.hint": "คลิกหรือลากรูปภาพ",
+ "dialog.project.edit.icon.recommended": "แนะนำ: 128x128px",
+ "dialog.project.edit.color": "สี",
+ "dialog.project.edit.color.select": "เลือกสี {{color}}",
+ "dialog.project.edit.worktree.startup": "สคริปต์เริ่มต้นพื้นที่ทำงาน",
+ "dialog.project.edit.worktree.startup.description": "ทำงานหลังจากสร้างพื้นที่ทำงานใหม่ (worktree)",
+ "dialog.project.edit.worktree.startup.placeholder": "เช่น bun install",
+
+ "context.breakdown.title": "การแบ่งบริบท",
+ "context.breakdown.note": 'การแบ่งโดยประมาณของโทเค็นนำเข้า "อื่น ๆ" รวมถึงคำนิยามเครื่องมือและโอเวอร์เฮด',
+ "context.breakdown.system": "ระบบ",
+ "context.breakdown.user": "ผู้ใช้",
+ "context.breakdown.assistant": "ผู้ช่วย",
+ "context.breakdown.tool": "การเรียกเครื่องมือ",
+ "context.breakdown.other": "อื่น ๆ",
+
+ "context.systemPrompt.title": "พร้อมท์ระบบ",
+ "context.rawMessages.title": "ข้อความดิบ",
+
+ "context.stats.session": "เซสชัน",
+ "context.stats.messages": "ข้อความ",
+ "context.stats.provider": "ผู้ให้บริการ",
+ "context.stats.model": "โมเดล",
+ "context.stats.limit": "ขีดจำกัดบริบท",
+ "context.stats.totalTokens": "โทเค็นทั้งหมด",
+ "context.stats.usage": "การใช้งาน",
+ "context.stats.inputTokens": "โทเค็นนำเข้า",
+ "context.stats.outputTokens": "โทเค็นส่งออก",
+ "context.stats.reasoningTokens": "โทเค็นการใช้เหตุผล",
+ "context.stats.cacheTokens": "โทเค็นแคช (อ่าน/เขียน)",
+ "context.stats.userMessages": "ข้อความผู้ใช้",
+ "context.stats.assistantMessages": "ข้อความผู้ช่วย",
+ "context.stats.totalCost": "ต้นทุนทั้งหมด",
+ "context.stats.sessionCreated": "สร้างเซสชันเมื่อ",
+ "context.stats.lastActivity": "กิจกรรมล่าสุด",
+
+ "context.usage.tokens": "โทเค็น",
+ "context.usage.usage": "การใช้งาน",
+ "context.usage.cost": "ต้นทุน",
+ "context.usage.clickToView": "คลิกเพื่อดูบริบท",
+ "context.usage.view": "ดูการใช้บริบท",
+
+ "language.en": "อังกฤษ",
+ "language.zh": "จีนตัวย่อ",
+ "language.zht": "จีนตัวเต็ม",
+ "language.ko": "เกาหลี",
+ "language.de": "เยอรมัน",
+ "language.es": "สเปน",
+ "language.fr": "ฝรั่งเศส",
+ "language.da": "เดนมาร์ก",
+ "language.ja": "ญี่ปุ่น",
+ "language.pl": "โปแลนด์",
+ "language.ru": "รัสเซีย",
+ "language.ar": "อาหรับ",
+ "language.no": "นอร์เวย์",
+ "language.br": "โปรตุเกส (บราซิล)",
+ "language.th": "ไทย",
+
+ "toast.language.title": "ภาษา",
+ "toast.language.description": "สลับไปที่ {{language}}",
+
+ "toast.theme.title": "สลับธีมแล้ว",
+ "toast.scheme.title": "โทนสี",
+
+ "toast.permissions.autoaccept.on.title": "กำลังยอมรับการแก้ไขโดยอัตโนมัติ",
+ "toast.permissions.autoaccept.on.description": "สิทธิ์การแก้ไขและเขียนจะได้รับการอนุมัติโดยอัตโนมัติ",
+ "toast.permissions.autoaccept.off.title": "หยุดยอมรับการแก้ไขโดยอัตโนมัติ",
+ "toast.permissions.autoaccept.off.description": "สิทธิ์การแก้ไขและเขียนจะต้องได้รับการอนุมัติ",
+
+ "toast.model.none.title": "ไม่ได้เลือกโมเดล",
+ "toast.model.none.description": "เชื่อมต่อผู้ให้บริการเพื่อสรุปเซสชันนี้",
+
+ "toast.file.loadFailed.title": "ไม่สามารถโหลดไฟล์",
+ "toast.file.listFailed.title": "ไม่สามารถแสดงรายการไฟล์",
+
+ "toast.context.noLineSelection.title": "ไม่มีการเลือกบรรทัด",
+ "toast.context.noLineSelection.description": "เลือกช่วงบรรทัดในแท็บไฟล์ก่อน",
+
+ "toast.session.share.copyFailed.title": "ไม่สามารถคัดลอก URL ไปยังคลิปบอร์ด",
+ "toast.session.share.success.title": "แชร์เซสชันแล้ว",
+ "toast.session.share.success.description": "คัดลอก URL แชร์ไปยังคลิปบอร์ดแล้ว!",
+ "toast.session.share.failed.title": "ไม่สามารถแชร์เซสชัน",
+ "toast.session.share.failed.description": "เกิดข้อผิดพลาดระหว่างการแชร์เซสชัน",
+
+ "toast.session.unshare.success.title": "ยกเลิกการแชร์เซสชันแล้ว",
+ "toast.session.unshare.success.description": "ยกเลิกการแชร์เซสชันสำเร็จ!",
+ "toast.session.unshare.failed.title": "ไม่สามารถยกเลิกการแชร์เซสชัน",
+ "toast.session.unshare.failed.description": "เกิดข้อผิดพลาดระหว่างการยกเลิกการแชร์เซสชัน",
+
+ "toast.session.listFailed.title": "ไม่สามารถโหลดเซสชันสำหรับ {{project}}",
+
+ "toast.update.title": "มีการอัปเดต",
+ "toast.update.description": "เวอร์ชันใหม่ของ OpenCode ({{version}}) พร้อมใช้งานสำหรับติดตั้ง",
+ "toast.update.action.installRestart": "ติดตั้งและรีสตาร์ท",
+ "toast.update.action.notYet": "ยังไม่",
+
+ "error.page.title": "เกิดข้อผิดพลาด",
+ "error.page.description": "เกิดข้อผิดพลาดระหว่างการโหลดแอปพลิเคชัน",
+ "error.page.details.label": "รายละเอียดข้อผิดพลาด",
+ "error.page.action.restart": "รีสตาร์ท",
+ "error.page.action.checking": "กำลังตรวจสอบ...",
+ "error.page.action.checkUpdates": "ตรวจสอบการอัปเดต",
+ "error.page.action.updateTo": "อัปเดตเป็น {{version}}",
+ "error.page.report.prefix": "โปรดรายงานข้อผิดพลาดนี้ให้ทีม OpenCode",
+ "error.page.report.discord": "บน Discord",
+ "error.page.version": "เวอร์ชัน: {{version}}",
+
+ "error.dev.rootNotFound": "ไม่พบองค์ประกอบรูท คุณลืมเพิ่มใน index.html หรือบางทีแอตทริบิวต์ id อาจสะกดผิด?",
+
+ "error.globalSync.connectFailed": "ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ มีเซิร์ฟเวอร์ทำงานอยู่ที่ `{{url}}` หรือไม่?",
+
+ "error.chain.unknown": "ข้อผิดพลาดที่ไม่รู้จัก",
+ "error.chain.causedBy": "สาเหตุ:",
+ "error.chain.apiError": "ข้อผิดพลาด API",
+ "error.chain.status": "สถานะ: {{status}}",
+ "error.chain.retryable": "สามารถลองใหม่: {{retryable}}",
+ "error.chain.responseBody": "เนื้อหาการตอบสนอง:\n{{body}}",
+ "error.chain.didYouMean": "คุณหมายถึง: {{suggestions}}",
+ "error.chain.modelNotFound": "ไม่พบโมเดล: {{provider}}/{{model}}",
+ "error.chain.checkConfig": "ตรวจสอบการกำหนดค่าของคุณ (opencode.json) ชื่อผู้ให้บริการ/โมเดล",
+ "error.chain.mcpFailed": 'เซิร์ฟเวอร์ MCP "{{name}}" ล้มเหลว โปรดทราบว่า OpenCode ยังไม่รองรับการตรวจสอบสิทธิ์ MCP',
+ "error.chain.providerAuthFailed": "การตรวจสอบสิทธิ์ผู้ให้บริการล้มเหลว ({{provider}}): {{message}}",
+ "error.chain.providerInitFailed": 'ไม่สามารถเริ่มต้นผู้ให้บริการ "{{provider}}" ตรวจสอบข้อมูลรับรองและการกำหนดค่า',
+ "error.chain.configJsonInvalid": "ไฟล์กำหนดค่าที่ {{path}} ไม่ใช่ JSON(C) ที่ถูกต้อง",
+ "error.chain.configJsonInvalidWithMessage": "ไฟล์กำหนดค่าที่ {{path}} ไม่ใช่ JSON(C) ที่ถูกต้อง: {{message}}",
+ "error.chain.configDirectoryTypo":
+ 'ไดเรกทอรี "{{dir}}" ใน {{path}} ไม่ถูกต้อง เปลี่ยนชื่อไดเรกทอรีเป็น "{{suggestion}}" หรือเอาออก นี่เป็นการสะกดผิดทั่วไป',
+ "error.chain.configFrontmatterError": "ไม่สามารถแยกวิเคราะห์ frontmatter ใน {{path}}:\n{{message}}",
+ "error.chain.configInvalid": "ไฟล์กำหนดค่าที่ {{path}} ไม่ถูกต้อง",
+ "error.chain.configInvalidWithMessage": "ไฟล์กำหนดค่าที่ {{path}} ไม่ถูกต้อง: {{message}}",
+
+ "notification.permission.title": "ต้องการสิทธิ์",
+ "notification.permission.description": "{{sessionTitle}} ใน {{projectName}} ต้องการสิทธิ์",
+ "notification.question.title": "คำถาม",
+ "notification.question.description": "{{sessionTitle}} ใน {{projectName}} มีคำถาม",
+ "notification.action.goToSession": "ไปที่เซสชัน",
+
+ "notification.session.responseReady.title": "การตอบสนองพร้อม",
+ "notification.session.error.title": "ข้อผิดพลาดเซสชัน",
+ "notification.session.error.fallbackDescription": "เกิดข้อผิดพลาด",
+
+ "home.recentProjects": "โปรเจกต์ล่าสุด",
+ "home.empty.title": "ไม่มีโปรเจกต์ล่าสุด",
+ "home.empty.description": "เริ่มต้นโดยเปิดโปรเจกต์ในเครื่อง",
+
+ "session.tab.session": "เซสชัน",
+ "session.tab.review": "ตรวจสอบ",
+ "session.tab.context": "บริบท",
+ "session.panel.reviewAndFiles": "ตรวจสอบและไฟล์",
+ "session.review.filesChanged": "{{count}} ไฟล์ที่เปลี่ยนแปลง",
+ "session.review.change.one": "การเปลี่ยนแปลง",
+ "session.review.change.other": "การเปลี่ยนแปลง",
+ "session.review.loadingChanges": "กำลังโหลดการเปลี่ยนแปลง...",
+ "session.review.empty": "ยังไม่มีการเปลี่ยนแปลงในเซสชันนี้",
+ "session.review.noChanges": "ไม่มีการเปลี่ยนแปลง",
+
+ "session.files.selectToOpen": "เลือกไฟล์เพื่อเปิด",
+ "session.files.all": "ไฟล์ทั้งหมด",
+
+ "session.messages.renderEarlier": "แสดงข้อความก่อนหน้า",
+ "session.messages.loadingEarlier": "กำลังโหลดข้อความก่อนหน้า...",
+ "session.messages.loadEarlier": "โหลดข้อความก่อนหน้า",
+ "session.messages.loading": "กำลังโหลดข้อความ...",
+ "session.messages.jumpToLatest": "ไปที่ล่าสุด",
+
+ "session.context.addToContext": "เพิ่ม {{selection}} ไปยังบริบท",
+
+ "session.new.worktree.main": "สาขาหลัก",
+ "session.new.worktree.mainWithBranch": "สาขาหลัก ({{branch}})",
+ "session.new.worktree.create": "สร้าง worktree ใหม่",
+ "session.new.lastModified": "แก้ไขล่าสุด",
+
+ "session.header.search.placeholder": "ค้นหา {{project}}",
+ "session.header.searchFiles": "ค้นหาไฟล์",
+
+ "status.popover.trigger": "สถานะ",
+ "status.popover.ariaLabel": "การกำหนดค่าเซิร์ฟเวอร์",
+ "status.popover.tab.servers": "เซิร์ฟเวอร์",
+ "status.popover.tab.mcp": "MCP",
+ "status.popover.tab.lsp": "LSP",
+ "status.popover.tab.plugins": "ปลั๊กอิน",
+ "status.popover.action.manageServers": "จัดการเซิร์ฟเวอร์",
+
+ "session.share.popover.title": "เผยแพร่บนเว็บ",
+ "session.share.popover.description.shared": "เซสชันนี้เป็นสาธารณะบนเว็บ สามารถเข้าถึงได้โดยผู้ที่มีลิงก์",
+ "session.share.popover.description.unshared": "แชร์เซสชันสาธารณะบนเว็บ จะเข้าถึงได้โดยผู้ที่มีลิงก์",
+ "session.share.action.share": "แชร์",
+ "session.share.action.publish": "เผยแพร่",
+ "session.share.action.publishing": "กำลังเผยแพร่...",
+ "session.share.action.unpublish": "ยกเลิกการเผยแพร่",
+ "session.share.action.unpublishing": "กำลังยกเลิกการเผยแพร่...",
+ "session.share.action.view": "ดู",
+ "session.share.copy.copied": "คัดลอกแล้ว",
+ "session.share.copy.copyLink": "คัดลอกลิงก์",
+
+ "lsp.tooltip.none": "ไม่มีเซิร์ฟเวอร์ LSP",
+ "lsp.label.connected": "{{count}} LSP",
+
+ "prompt.loading": "กำลังโหลดพร้อมท์...",
+ "terminal.loading": "กำลังโหลดเทอร์มินัล...",
+ "terminal.title": "เทอร์มินัล",
+ "terminal.title.numbered": "เทอร์มินัล {{number}}",
+ "terminal.close": "ปิดเทอร์มินัล",
+ "terminal.connectionLost.title": "การเชื่อมต่อขาดหาย",
+ "terminal.connectionLost.description": "การเชื่อมต่อเทอร์มินัลถูกขัดจังหวะ อาจเกิดขึ้นเมื่อเซิร์ฟเวอร์รีสตาร์ท",
+
+ "common.closeTab": "ปิดแท็บ",
+ "common.dismiss": "ปิด",
+ "common.requestFailed": "คำขอล้มเหลว",
+ "common.moreOptions": "ตัวเลือกเพิ่มเติม",
+ "common.learnMore": "เรียนรู้เพิ่มเติม",
+ "common.rename": "เปลี่ยนชื่อ",
+ "common.reset": "รีเซ็ต",
+ "common.archive": "จัดเก็บ",
+ "common.delete": "ลบ",
+ "common.close": "ปิด",
+ "common.edit": "แก้ไข",
+ "common.loadMore": "โหลดเพิ่มเติม",
+ "common.key.esc": "ESC",
+
+ "sidebar.menu.toggle": "สลับเมนู",
+ "sidebar.nav.projectsAndSessions": "โปรเจกต์และเซสชัน",
+ "sidebar.settings": "การตั้งค่า",
+ "sidebar.help": "ช่วยเหลือ",
+ "sidebar.workspaces.enable": "เปิดใช้งานพื้นที่ทำงาน",
+ "sidebar.workspaces.disable": "ปิดใช้งานพื้นที่ทำงาน",
+ "sidebar.gettingStarted.title": "เริ่มต้นใช้งาน",
+ "sidebar.gettingStarted.line1": "OpenCode รวมถึงโมเดลฟรีเพื่อให้คุณเริ่มต้นได้ทันที",
+ "sidebar.gettingStarted.line2": "เชื่อมต่อผู้ให้บริการใด ๆ เพื่อใช้โมเดล รวมถึง Claude, GPT, Gemini ฯลฯ",
+ "sidebar.project.recentSessions": "เซสชันล่าสุด",
+ "sidebar.project.viewAllSessions": "ดูเซสชันทั้งหมด",
+
+ "app.name.desktop": "OpenCode Desktop",
+
+ "settings.section.desktop": "เดสก์ท็อป",
+ "settings.section.server": "เซิร์ฟเวอร์",
+ "settings.tab.general": "ทั่วไป",
+ "settings.tab.shortcuts": "ทางลัด",
+
+ "settings.general.section.appearance": "รูปลักษณ์",
+ "settings.general.section.notifications": "การแจ้งเตือนระบบ",
+ "settings.general.section.updates": "การอัปเดต",
+ "settings.general.section.sounds": "เสียงเอฟเฟกต์",
+
+ "settings.general.row.language.title": "ภาษา",
+ "settings.general.row.language.description": "เปลี่ยนภาษาที่แสดงสำหรับ OpenCode",
+ "settings.general.row.appearance.title": "รูปลักษณ์",
+ "settings.general.row.appearance.description": "ปรับแต่งวิธีการที่ OpenCode มีลักษณะบนอุปกรณ์ของคุณ",
+ "settings.general.row.theme.title": "ธีม",
+ "settings.general.row.theme.description": "ปรับแต่งวิธีการที่ OpenCode มีธีม",
+ "settings.general.row.font.title": "ฟอนต์",
+ "settings.general.row.font.description": "ปรับแต่งฟอนต์โมโนที่ใช้ในบล็อกโค้ด",
+
+ "settings.general.row.releaseNotes.title": "บันทึกการอัปเดต",
+ "settings.general.row.releaseNotes.description": "แสดงป๊อปอัพ What's New หลังจากอัปเดต",
+ "font.option.ibmPlexMono": "IBM Plex Mono",
+ "font.option.cascadiaCode": "Cascadia Code",
+ "font.option.firaCode": "Fira Code",
+ "font.option.hack": "Hack",
+ "font.option.inconsolata": "Inconsolata",
+ "font.option.intelOneMono": "Intel One Mono",
+ "font.option.iosevka": "Iosevka",
+ "font.option.jetbrainsMono": "JetBrains Mono",
+ "font.option.mesloLgs": "Meslo LGS",
+ "font.option.robotoMono": "Roboto Mono",
+ "font.option.sourceCodePro": "Source Code Pro",
+ "font.option.ubuntuMono": "Ubuntu Mono",
+ "sound.option.alert01": "เสียงเตือน 01",
+ "sound.option.alert02": "เสียงเตือน 02",
+ "sound.option.alert03": "เสียงเตือน 03",
+ "sound.option.alert04": "เสียงเตือน 04",
+ "sound.option.alert05": "เสียงเตือน 05",
+ "sound.option.alert06": "เสียงเตือน 06",
+ "sound.option.alert07": "เสียงเตือน 07",
+ "sound.option.alert08": "เสียงเตือน 08",
+ "sound.option.alert09": "เสียงเตือน 09",
+ "sound.option.alert10": "เสียงเตือน 10",
+ "sound.option.bipbop01": "Bip-bop 01",
+ "sound.option.bipbop02": "Bip-bop 02",
+ "sound.option.bipbop03": "Bip-bop 03",
+ "sound.option.bipbop04": "Bip-bop 04",
+ "sound.option.bipbop05": "Bip-bop 05",
+ "sound.option.bipbop06": "Bip-bop 06",
+ "sound.option.bipbop07": "Bip-bop 07",
+ "sound.option.bipbop08": "Bip-bop 08",
+ "sound.option.bipbop09": "Bip-bop 09",
+ "sound.option.bipbop10": "Bip-bop 10",
+ "sound.option.staplebops01": "Staplebops 01",
+ "sound.option.staplebops02": "Staplebops 02",
+ "sound.option.staplebops03": "Staplebops 03",
+ "sound.option.staplebops04": "Staplebops 04",
+ "sound.option.staplebops05": "Staplebops 05",
+ "sound.option.staplebops06": "Staplebops 06",
+ "sound.option.staplebops07": "Staplebops 07",
+ "sound.option.nope01": "Nope 01",
+ "sound.option.nope02": "Nope 02",
+ "sound.option.nope03": "Nope 03",
+ "sound.option.nope04": "Nope 04",
+ "sound.option.nope05": "Nope 05",
+ "sound.option.nope06": "Nope 06",
+ "sound.option.nope07": "Nope 07",
+ "sound.option.nope08": "Nope 08",
+ "sound.option.nope09": "Nope 09",
+ "sound.option.nope10": "Nope 10",
+ "sound.option.nope11": "Nope 11",
+ "sound.option.nope12": "Nope 12",
+ "sound.option.yup01": "Yup 01",
+ "sound.option.yup02": "Yup 02",
+ "sound.option.yup03": "Yup 03",
+ "sound.option.yup04": "Yup 04",
+ "sound.option.yup05": "Yup 05",
+ "sound.option.yup06": "Yup 06",
+
+ "settings.general.notifications.agent.title": "เอเจนต์",
+ "settings.general.notifications.agent.description": "แสดงการแจ้งเตือนระบบเมื่อเอเจนต์เสร็จสิ้นหรือต้องการความสนใจ",
+ "settings.general.notifications.permissions.title": "สิทธิ์",
+ "settings.general.notifications.permissions.description": "แสดงการแจ้งเตือนระบบเมื่อต้องการสิทธิ์",
+ "settings.general.notifications.errors.title": "ข้อผิดพลาด",
+ "settings.general.notifications.errors.description": "แสดงการแจ้งเตือนระบบเมื่อเกิดข้อผิดพลาด",
+
+ "settings.general.sounds.agent.title": "เอเจนต์",
+ "settings.general.sounds.agent.description": "เล่นเสียงเมื่อเอเจนต์เสร็จสิ้นหรือต้องการความสนใจ",
+ "settings.general.sounds.permissions.title": "สิทธิ์",
+ "settings.general.sounds.permissions.description": "เล่นเสียงเมื่อต้องการสิทธิ์",
+ "settings.general.sounds.errors.title": "ข้อผิดพลาด",
+ "settings.general.sounds.errors.description": "เล่นเสียงเมื่อเกิดข้อผิดพลาด",
+
+ "settings.shortcuts.title": "ทางลัดแป้นพิมพ์",
+ "settings.shortcuts.reset.button": "รีเซ็ตเป็นค่าเริ่มต้น",
+ "settings.shortcuts.reset.toast.title": "รีเซ็ตทางลัดแล้ว",
+ "settings.shortcuts.reset.toast.description": "รีเซ็ตทางลัดแป้นพิมพ์เป็นค่าเริ่มต้นแล้ว",
+ "settings.shortcuts.conflict.title": "ทางลัดใช้งานอยู่แล้ว",
+ "settings.shortcuts.conflict.description": "{{keybind}} ถูกกำหนดให้กับ {{titles}} แล้ว",
+ "settings.shortcuts.unassigned": "ไม่ได้กำหนด",
+ "settings.shortcuts.pressKeys": "กดปุ่ม",
+ "settings.shortcuts.search.placeholder": "ค้นหาทางลัด",
+ "settings.shortcuts.search.empty": "ไม่พบทางลัด",
+
+ "settings.shortcuts.group.general": "ทั่วไป",
+ "settings.shortcuts.group.session": "เซสชัน",
+ "settings.shortcuts.group.navigation": "การนำทาง",
+ "settings.shortcuts.group.modelAndAgent": "โมเดลและเอเจนต์",
+ "settings.shortcuts.group.terminal": "เทอร์มินัล",
+ "settings.shortcuts.group.prompt": "พร้อมท์",
+
+ "settings.providers.title": "ผู้ให้บริการ",
+ "settings.providers.description": "การตั้งค่าผู้ให้บริการจะสามารถกำหนดค่าได้ที่นี่",
+ "settings.providers.section.connected": "ผู้ให้บริการที่เชื่อมต่อ",
+ "settings.providers.connected.empty": "ไม่มีผู้ให้บริการที่เชื่อมต่อ",
+ "settings.providers.section.popular": "ผู้ให้บริการยอดนิยม",
+ "settings.providers.tag.environment": "สภาพแวดล้อม",
+ "settings.providers.tag.config": "กำหนดค่า",
+ "settings.providers.tag.custom": "กำหนดเอง",
+ "settings.providers.tag.other": "อื่น ๆ",
+ "settings.models.title": "โมเดล",
+ "settings.models.description": "การตั้งค่าโมเดลจะสามารถกำหนดค่าได้ที่นี่",
+ "settings.agents.title": "เอเจนต์",
+ "settings.agents.description": "การตั้งค่าเอเจนต์จะสามารถกำหนดค่าได้ที่นี่",
+ "settings.commands.title": "คำสั่ง",
+ "settings.commands.description": "การตั้งค่าคำสั่งจะสามารถกำหนดค่าได้ที่นี่",
+ "settings.mcp.title": "MCP",
+ "settings.mcp.description": "การตั้งค่า MCP จะสามารถกำหนดค่าได้ที่นี่",
+
+ "settings.permissions.title": "สิทธิ์",
+ "settings.permissions.description": "ควบคุมเครื่องมือที่เซิร์ฟเวอร์สามารถใช้โดยค่าเริ่มต้น",
+ "settings.permissions.section.tools": "เครื่องมือ",
+ "settings.permissions.toast.updateFailed.title": "ไม่สามารถอัปเดตสิทธิ์",
+
+ "settings.permissions.action.allow": "อนุญาต",
+ "settings.permissions.action.ask": "ถาม",
+ "settings.permissions.action.deny": "ปฏิเสธ",
+
+ "settings.permissions.tool.read.title": "อ่าน",
+ "settings.permissions.tool.read.description": "อ่านไฟล์ (ตรงกับเส้นทางไฟล์)",
+ "settings.permissions.tool.edit.title": "แก้ไข",
+ "settings.permissions.tool.edit.description": "แก้ไขไฟล์ รวมถึงการแก้ไข เขียน แพตช์ และแก้ไขหลายรายการ",
+ "settings.permissions.tool.glob.title": "Glob",
+ "settings.permissions.tool.glob.description": "จับคู่ไฟล์โดยใช้รูปแบบ glob",
+ "settings.permissions.tool.grep.title": "Grep",
+ "settings.permissions.tool.grep.description": "ค้นหาเนื้อหาไฟล์โดยใช้นิพจน์ทั่วไป",
+ "settings.permissions.tool.list.title": "รายการ",
+ "settings.permissions.tool.list.description": "แสดงรายการไฟล์ภายในไดเรกทอรี",
+ "settings.permissions.tool.bash.title": "Bash",
+ "settings.permissions.tool.bash.description": "เรียกใช้คำสั่งเชลล์",
+ "settings.permissions.tool.task.title": "งาน",
+ "settings.permissions.tool.task.description": "เปิดเอเจนต์ย่อย",
+ "settings.permissions.tool.skill.title": "ทักษะ",
+ "settings.permissions.tool.skill.description": "โหลดทักษะตามชื่อ",
+ "settings.permissions.tool.lsp.title": "LSP",
+ "settings.permissions.tool.lsp.description": "เรียกใช้การสืบค้นเซิร์ฟเวอร์ภาษา",
+ "settings.permissions.tool.todoread.title": "อ่านรายการงาน",
+ "settings.permissions.tool.todoread.description": "อ่านรายการงาน",
+ "settings.permissions.tool.todowrite.title": "เขียนรายการงาน",
+ "settings.permissions.tool.todowrite.description": "อัปเดตรายการงาน",
+ "settings.permissions.tool.webfetch.title": "ดึงข้อมูลจากเว็บ",
+ "settings.permissions.tool.webfetch.description": "ดึงเนื้อหาจาก URL",
+ "settings.permissions.tool.websearch.title": "ค้นหาเว็บ",
+ "settings.permissions.tool.websearch.description": "ค้นหาบนเว็บ",
+ "settings.permissions.tool.codesearch.title": "ค้นหาโค้ด",
+ "settings.permissions.tool.codesearch.description": "ค้นหาโค้ดบนเว็บ",
+ "settings.permissions.tool.external_directory.title": "ไดเรกทอรีภายนอก",
+ "settings.permissions.tool.external_directory.description": "เข้าถึงไฟล์นอกไดเรกทอรีโปรเจกต์",
+ "settings.permissions.tool.doom_loop.title": "Doom Loop",
+ "settings.permissions.tool.doom_loop.description": "ตรวจจับการเรียกเครื่องมือซ้ำด้วยข้อมูลนำเข้าเหมือนกัน",
+
+ "session.delete.failed.title": "ไม่สามารถลบเซสชัน",
+ "session.delete.title": "ลบเซสชัน",
+ "session.delete.confirm": 'ลบเซสชัน "{{name}}" หรือไม่?',
+ "session.delete.button": "ลบเซสชัน",
+
+ "workspace.new": "พื้นที่ทำงานใหม่",
+ "workspace.type.local": "ในเครื่อง",
+ "workspace.type.sandbox": "แซนด์บ็อกซ์",
+ "workspace.create.failed.title": "ไม่สามารถสร้างพื้นที่ทำงาน",
+ "workspace.delete.failed.title": "ไม่สามารถลบพื้นที่ทำงาน",
+ "workspace.resetting.title": "กำลังรีเซ็ตพื้นที่ทำงาน",
+ "workspace.resetting.description": "อาจใช้เวลาประมาณหนึ่งนาที",
+ "workspace.reset.failed.title": "ไม่สามารถรีเซ็ตพื้นที่ทำงาน",
+ "workspace.reset.success.title": "รีเซ็ตพื้นที่ทำงานแล้ว",
+ "workspace.reset.success.description": "พื้นที่ทำงานตรงกับสาขาเริ่มต้นแล้ว",
+ "workspace.error.stillPreparing": "พื้นที่ทำงานกำลังเตรียมอยู่",
+ "workspace.status.checking": "กำลังตรวจสอบการเปลี่ยนแปลงที่ไม่ได้ผสาน...",
+ "workspace.status.error": "ไม่สามารถตรวจสอบสถานะ git",
+ "workspace.status.clean": "ไม่ตรวจพบการเปลี่ยนแปลงที่ไม่ได้ผสาน",
+ "workspace.status.dirty": "ตรวจพบการเปลี่ยนแปลงที่ไม่ได้ผสานในพื้นที่ทำงานนี้",
+ "workspace.delete.title": "ลบพื้นที่ทำงาน",
+ "workspace.delete.confirm": 'ลบพื้นที่ทำงาน "{{name}}" หรือไม่?',
+ "workspace.delete.button": "ลบพื้นที่ทำงาน",
+ "workspace.reset.title": "รีเซ็ตพื้นที่ทำงาน",
+ "workspace.reset.confirm": 'รีเซ็ตพื้นที่ทำงาน "{{name}}" หรือไม่?',
+ "workspace.reset.button": "รีเซ็ตพื้นที่ทำงาน",
+ "workspace.reset.archived.none": "ไม่มีเซสชันที่ใช้งานอยู่จะถูกจัดเก็บ",
+ "workspace.reset.archived.one": "1 เซสชันจะถูกจัดเก็บ",
+ "workspace.reset.archived.many": "{{count}} เซสชันจะถูกจัดเก็บ",
+ "workspace.reset.note": "สิ่งนี้จะรีเซ็ตพื้นที่ทำงานให้ตรงกับสาขาเริ่มต้น",
+}
diff --git a/packages/app/src/i18n/zh.ts b/packages/app/src/i18n/zh.ts
index c88188b099..757d562ceb 100644
--- a/packages/app/src/i18n/zh.ts
+++ b/packages/app/src/i18n/zh.ts
@@ -330,6 +330,7 @@ export const dict = {
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
+ "language.th": "ไทย",
"toast.language.title": "语言",
"toast.language.description": "已切换到{{language}}",
diff --git a/packages/app/src/i18n/zht.ts b/packages/app/src/i18n/zht.ts
index dcc3ad44de..30837e56fb 100644
--- a/packages/app/src/i18n/zht.ts
+++ b/packages/app/src/i18n/zht.ts
@@ -331,6 +331,7 @@ export const dict = {
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
+ "language.th": "ไทย",
"toast.language.title": "語言",
"toast.language.description": "已切換到 {{language}}",
diff --git a/packages/ui/src/i18n/th.ts b/packages/ui/src/i18n/th.ts
new file mode 100644
index 0000000000..9c7e6fae51
--- /dev/null
+++ b/packages/ui/src/i18n/th.ts
@@ -0,0 +1,102 @@
+export const dict = {
+ "ui.sessionReview.title": "การเปลี่ยนแปลงเซสชัน",
+ "ui.sessionReview.diffStyle.unified": "แบบรวม",
+ "ui.sessionReview.diffStyle.split": "แบบแยก",
+ "ui.sessionReview.expandAll": "ขยายทั้งหมด",
+ "ui.sessionReview.collapseAll": "ย่อทั้งหมด",
+ "ui.sessionReview.change.added": "เพิ่ม",
+ "ui.sessionReview.change.removed": "ลบ",
+
+ "ui.lineComment.label.prefix": "แสดงความคิดเห็นบน ",
+ "ui.lineComment.label.suffix": "",
+ "ui.lineComment.editorLabel.prefix": "กำลังแสดงความคิดเห็นบน ",
+ "ui.lineComment.editorLabel.suffix": "",
+ "ui.lineComment.placeholder": "เพิ่มความคิดเห็น",
+ "ui.lineComment.submit": "แสดงความคิดเห็น",
+
+ "ui.sessionTurn.steps.show": "แสดงขั้นตอน",
+ "ui.sessionTurn.steps.hide": "ซ่อนขั้นตอน",
+ "ui.sessionTurn.summary.response": "การตอบสนอง",
+ "ui.sessionTurn.diff.showMore": "แสดงการเปลี่ยนแปลงเพิ่มเติม ({{count}})",
+
+ "ui.sessionTurn.retry.retrying": "กำลังลองใหม่",
+ "ui.sessionTurn.retry.inSeconds": "ใน {{seconds}}วิ",
+
+ "ui.sessionTurn.status.delegating": "มอบหมายงาน",
+ "ui.sessionTurn.status.planning": "วางแผนขั้นตอนถัดไป",
+ "ui.sessionTurn.status.gatheringContext": "รวบรวมบริบท",
+ "ui.sessionTurn.status.searchingCodebase": "กำลังค้นหาโค้ดเบส",
+ "ui.sessionTurn.status.searchingWeb": "กำลังค้นหาบนเว็บ",
+ "ui.sessionTurn.status.makingEdits": "กำลังแก้ไข",
+ "ui.sessionTurn.status.runningCommands": "กำลังเรียกใช้คำสั่ง",
+ "ui.sessionTurn.status.thinking": "กำลังคิด",
+ "ui.sessionTurn.status.thinkingWithTopic": "กำลังคิด - {{topic}}",
+ "ui.sessionTurn.status.gatheringThoughts": "รวบรวมความคิด",
+ "ui.sessionTurn.status.consideringNextSteps": "พิจารณาขั้นตอนถัดไป",
+
+ "ui.messagePart.diagnostic.error": "ข้อผิดพลาด",
+ "ui.messagePart.title.edit": "แก้ไข",
+ "ui.messagePart.title.write": "เขียน",
+ "ui.messagePart.option.typeOwnAnswer": "พิมพ์คำตอบของคุณเอง",
+ "ui.messagePart.review.title": "ตรวจสอบคำตอบของคุณ",
+
+ "ui.list.loading": "กำลังโหลด",
+ "ui.list.empty": "ไม่มีผลลัพธ์",
+ "ui.list.clearFilter": "ล้างตัวกรอง",
+ "ui.list.emptyWithFilter.prefix": "ไม่มีผลลัพธ์สำหรับ",
+ "ui.list.emptyWithFilter.suffix": "",
+
+ "ui.messageNav.newMessage": "ข้อความใหม่",
+
+ "ui.textField.copyToClipboard": "คัดลอกไปยังคลิปบอร์ด",
+ "ui.textField.copyLink": "คัดลอกลิงก์",
+ "ui.textField.copied": "คัดลอกแล้ว",
+
+ "ui.imagePreview.alt": "ตัวอย่างรูปภาพ",
+
+ "ui.tool.read": "อ่าน",
+ "ui.tool.list": "รายการ",
+ "ui.tool.glob": "Glob",
+ "ui.tool.grep": "Grep",
+ "ui.tool.webfetch": "ดึงจากเว็บ",
+ "ui.tool.shell": "เชลล์",
+ "ui.tool.patch": "แพตช์",
+ "ui.tool.todos": "รายการงาน",
+ "ui.tool.todos.read": "อ่านรายการงาน",
+ "ui.tool.questions": "คำถาม",
+ "ui.tool.agent": "เอเจนต์ {{type}}",
+
+ "ui.common.file.one": "ไฟล์",
+ "ui.common.file.other": "ไฟล์",
+ "ui.common.question.one": "คำถาม",
+ "ui.common.question.other": "คำถาม",
+
+ "ui.common.add": "เพิ่ม",
+ "ui.common.cancel": "ยกเลิก",
+ "ui.common.confirm": "ยืนยัน",
+ "ui.common.dismiss": "ปิด",
+ "ui.common.close": "ปิด",
+ "ui.common.next": "ถัดไป",
+ "ui.common.submit": "ส่ง",
+
+ "ui.permission.deny": "ปฏิเสธ",
+ "ui.permission.allowAlways": "อนุญาตเสมอ",
+ "ui.permission.allowOnce": "อนุญาตครั้งเดียว",
+
+ "ui.message.expand": "ขยายข้อความ",
+ "ui.message.collapse": "ย่อข้อความ",
+ "ui.message.copy": "คัดลอก",
+ "ui.message.copied": "คัดลอกแล้ว!",
+ "ui.message.attachment.alt": "ไฟล์แนบ",
+
+ "ui.patch.action.deleted": "ลบ",
+ "ui.patch.action.created": "สร้าง",
+ "ui.patch.action.moved": "ย้าย",
+ "ui.patch.action.patched": "แพตช์",
+
+ "ui.question.subtitle.answered": "{{count}} ตอบแล้ว",
+ "ui.question.answer.none": "(ไม่มีคำตอบ)",
+ "ui.question.review.notAnswered": "(ไม่ได้ตอบ)",
+ "ui.question.multiHint": "(เลือกทั้งหมดที่ใช้)",
+ "ui.question.custom.placeholder": "พิมพ์คำตอบของคุณ...",
+}