Install
$ agentstack add skill-i18n-agent-i18nstack-localize-th ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Localize: Thai (th → ภาษาไทย)
You are translating source text into Thai for Thailand. This skill captures grammar, register, UI conventions, formatting, and Thai-specific failure modes derived from a production translation prompt.
Scope & Variants
One standard:
- th-TH — Central Thai (ภาษาไทยกลาง) as used in Bangkok. The national standard.
Regional varieties (Northern/Isaan/Southern) exist as spoken languages but are NEVER used in written/UI contexts. Always write standard Central Thai.
Native name: ภาษาไทย (the language).
Identity guardrail:
- Thai is Tai-Kadai (Kra-Dai), NOT Chinese (Sino-Tibetan), NOT Vietnamese (Austroasiatic), NOT Cambodian (Austroasiatic), NOT Burmese (Sino-Tibetan). Closest relative is Lao (mutually intelligible to ~70%).
- Thai uses the Thai script (อักษรไทย), derived from Khmer/Brahmi. 44 consonants, 32 vowels (including combinations), 4 tone marks. NOT Latin script.
- Thai is isolating — no inflections, no gender, no number. Grammar is conveyed by word order, particles, and tones.
- Thai has heavy Sanskrit/Pali influence in formal vocabulary (especially religious, royal, legal). UI generally uses everyday Thai vocabulary.
Register
Default level: ภาษาสุภาพ (polite standard) for software UI, errors, documentation, marketing.
Thai has three main formality registers:
| Register | Use case | Example | |---|---|---| | ภาษาทางการ (formal) | Royal/legal/official documents | กราบเรียน ท่าน | | ภาษาสุภาพ (polite — UI default) | Business, UI, customer service, public | คุณสามารถ, กรุณา | | ภาษาพูด (colloquial) | Casual conversation, social media | ไร, มะได้, รึป่าว |
Within a file, ONE register only. Don't mix formal and colloquial.
Colloquial shortenings to AVOID in UI:
| Wrong (colloquial) | Correct (polite written) | Meaning | |---|---|---| | มะได้ | ไม่ได้ | cannot | | ไร | อะไร | what | | แค่นั้น | เท่านั้น | only that | | งั้น | เช่นนั้น / ถ้าอย่างนั้น | so / in that case | | รึ | หรือ | or | | ป่าว | หรือเปล่า | or not | | ก็ได้ | (acceptable in casual UI; varies) | also possible | | หนิ | นี้ | this | | เนี่ย | (intensifier — avoid in UI) | this/here |
Critical Hard Rules
NO SPACES Between Thai Words (severity 2.0 — THE defining Thai rule)
Thai does NOT use spaces between words. Words run continuously. Spaces are ONLY used at clause/sentence boundaries.
| Wrong (English-style spacing) | Correct (Thai run-together) | |---|---| | ยินดี ต้อนรับ | ยินดีต้อนรับ (welcome) | | สวัสดี ตอน เช้า | สวัสดีตอนเช้า (good morning) | | คุณ สามารถ ลบ ไฟล์ ได้ | คุณสามารถลบไฟล์ได้ (you can delete the file) | | ผม กำลัง ทำ | ผมกำลังทำ (I am doing) | | ภาษา ไทย | ภาษาไทย (Thai language) | | ใหม่ ๆ | ใหม่ ๆ (multiple new — repetition mark ๆ does take adjacent space-like behavior) |
This is the #1 Thai translation error. Machine translators and non-native writers add English-style spaces that completely break Thai readability.
Spaces ARE used at:
- Clause breaks (where English would use a comma or period)
- Before and after Latin/Arabic numerals embedded in Thai text: "อายุ 25 ปี" (age 25 years)
- Before and after Latin script embedded: "เปิด Microsoft Word"
- Before and after the colon (:) — see below
Spaces are NOT used:
- Between Thai words
- Within compound words: "เครื่องบิน" (airplane), "ห้องน้ำ" (bathroom)
Colon Spacing (severity 1.5)
Thai requires a space before AND after the colon (unlike English which has only space after):
- ❌ "อีเมล:user@example.com" (no spaces) → ✅ "อีเมล : user@example.com"
- ❌ "ชื่อ: สมชาย" → ✅ "ชื่อ : สมชาย"
- ❌ "เวลา:14:30" → ✅ "เวลา : 14:30" (but the time itself has no space around the colon)
This is part of standard Thai typographic convention.
Tone Marks and Vowels (essential — meaning-critical)
Thai has 5 tones determined by a combination of:
- Consonant class (high/mid/low — three classes)
- Vowel length (long/short)
- Live/dead syllable (final consonant or vowel ending)
- Tone mark (◌่ ◌้ ◌๊ ◌๋ — mai ek, mai tho, mai tri, mai chattawa)
The tone determines meaning:
- มา (mā, mid tone) = to come
- ม่า (mà, low tone) = (rare)
- ม้า (má, high tone) = horse
- หม้า / หมา (hmǎ, rising tone) = dog (with high-class consonant cluster)
NEVER omit tone marks or vowel marks. All Thai diacritics are meaning-critical.
Vowel marks that go above, below, before, after, or around the consonant:
- เ-, แ-, โ-, ใ-, ไ- (before)
- -ะ, -า (after)
- -ิ, -ี, -ึ, -ื, -ุ, -ู (above/below)
- เ-า, เ-ือ (around)
Get them all right.
Classifier System (ลักษณนาม) (severity 1.5)
Thai requires a classifier (ลักษณนาม) when counting nouns. The pattern is:
NOUN + NUMBER + CLASSIFIER (most common) or NUMBER + CLASSIFIER + NOUN (less common, archaic)
| Classifier | Used for | Example | |---|---|---| | คน | people | คน 5 คน (five people), ผู้ใช้ 3 คน (3 users) | | ตัว | animals, some objects (clothing items, characters) | แมว 2 ตัว (2 cats), เสื้อ 1 ตัว (1 shirt) | | อัน | general small objects | ปากกา 3 อัน (3 pens) | | ชิ้น | pieces, items | เค้ก 5 ชิ้น (5 pieces of cake) | | แผ่น | flat objects, sheets, discs | กระดาษ 10 แผ่น (10 sheets) | | ใบ | flat-roundish (paper, leaves, hats, faces) | ใบไม้ 3 ใบ (3 leaves), หมวก 1 ใบ | | ลูก | round objects, fruits, children (informal) | ลูกบอล 1 ลูก (1 ball) | | เล่ม | books, knives | หนังสือ 3 เล่ม (3 books) | | คัน | vehicles, umbrellas, fishing rods | รถ 1 คัน (1 car) | | หลัง | buildings | บ้าน 2 หลัง (2 houses) | | แห่ง / ที่ | places, locations | สถานที่ 5 แห่ง | | รายการ | items in a list | 10 รายการ (10 items) | | ภาษา | languages (the noun IS the classifier) | 5 ภาษา (5 languages) | | ไฟล์ | files (the noun IS the classifier in modern usage) | 10 ไฟล์ (10 files) |
Self-classifying nouns (don't need an additional classifier): ภาษา, ไฟล์, นาที, วินาที, ชั่วโมง, รายการ. The noun itself acts as classifier.
- ❌ 5 คน ภาษา (cannot use "person" classifier for language)
- ✅ 5 ภาษา (language is its own classifier)
- ✅ 5 ไฟล์ (file is its own classifier in modern usage)
Modifier-After-Head Word Order (severity 1.5)
Thai modifiers FOLLOW the head word (like Vietnamese, opposite of English):
| Wrong (English order) | Correct (Thai) | English | |---|---|---| | ใหม่ไฟล์ | ไฟล์ใหม่ | new file | | ดีระบบ | ระบบดี | good system | | ใหญ่ห้อง | ห้องใหญ่ | big room | | สวยหญิง | หญิงสวย | beautiful woman |
Applies to:
- Adjectives (ไฟล์ ใหม่)
- Demonstratives (ไฟล์ นี้ this, ไฟล์ นั้น that)
- Possessives via ของ (ไฟล์ ของฉัน my file)
- Relative clauses (ไฟล์ ที่ฉันเลือก the file that I selected)
Pronoun Choice for UI
Thai has dozens of pronouns. For UI:
| Pronoun | Use | Note | |---|---|---| | คุณ | "you" — polite standard | DEFAULT for UI | | ท่าน | "you" — formal/honorific | For premium/banking | | เธอ | "you" — intimate | NEVER in UI (sounds romantic/familial) | | คุณท่าน | "you" — formal | Less common | | ผม / ดิฉัน | "I" — polite (m / f) | For first-person if needed (rare in UI) | | พวกเรา | "we" — inclusive | For "we" |
- ❌ "เธอสามารถ..." (intimate) → ✅ "คุณสามารถ..."
Active Voice over Passive (severity 1.5)
Thai prefers active voice. The passive marker ถูก (suggests negative experience) or โดย (formal) creates stiff translations:
| Wrong (passive) | Correct (active) | English | |---|---|---| | ไฟล์ถูกบันทึกโดยระบบ | ระบบบันทึกไฟล์แล้ว / บันทึกไฟล์แล้ว | The file was saved by the system | | ผู้ใช้ถูกตัดออก | ตัดผู้ใช้ออกแล้ว | The user was removed | | ข้อความถูกส่ง | ส่งข้อความแล้ว | The message was sent |
ถูก is fine when expressing genuinely passive/negative scenarios ("ถูกแฮ็ก" = was hacked) but should not pad UI status messages.
Progressive Form with กำลัง (for status messages)
Thai uses กำลัง + verb for ongoing actions:
| Wrong | Correct | English | |---|---|---| | โหลด... | กำลังโหลด... | Loading... | | บันทึก... | กำลังบันทึก... | Saving... | | ประมวลผล... | กำลังประมวลผล... | Processing... | | ส่ง... | กำลังส่ง... | Sending... |
For completed: แล้ว marker — "บันทึกแล้ว" (saved), "เสร็จแล้ว" (done).
UI Conventions
Button Labels — No Polite Particles
Thai buttons use bare verbs/imperatives without polite particles. The polite particles ครับ (male) and ค่ะ (female) are for spoken/conversational use and bloat UI:
| Wrong (with particle) | Correct (clean) | English | |---|---|---| | กรุณาบันทึกครับ | บันทึก | Save | | กรุณายกเลิกค่ะ | ยกเลิก | Cancel | | กรุณาลบครับ | ลบ | Delete | | กรุณาอัปโหลดค่ะ | อัปโหลด | Upload | | กรุณาดาวน์โหลด | ดาวน์โหลด | Download | | กรุณาเลือก | เลือก | Select | | กรุณาตกลง | ตกลง | OK / Confirm |
กรุณา (please) is sometimes used in instructions or polite system messages but not on action buttons.
Status Messages — No Polite Particles
✅ กำลังโหลด... (Loading...)
✅ กำลังบันทึก... (Saving...)
✅ บันทึกแล้ว (Saved)
✅ เสร็จสิ้น (Complete)
❌ กำลังโหลดครับ (with polite particle — wrong for UI)
❌ บันทึกแล้วค่ะ (with polite particle)
Drag-and-Drop Vocabulary
- ลาก = drag
- วาง = place/drop (the standard term)
- ปล่อย = release
- ❌ "drag" / "drop" (English) — wrong, except in casual tech speak
✅ ลากไฟล์มาที่นี่ (drag files here)
✅ ลากและวางที่นี่ (drag and drop here)
✅ เลือกไฟล์หรือลากและวางที่นี่ (select file or drag and drop here)
❌ Drag ไฟล์
❌ เลือกไฟล์หรือลาก (incomplete — must complete the phrase)
Error Messages — Polite, Indirect
Thai culture values face-saving. Direct accusations are softened:
| Wrong (direct) | Correct (indirect/polite) | |---|---| | คุณผิด | ขออภัย อาจมีข้อผิดพลาด (Apologies, there may be an error) | | ทำไม่ถูก | กรุณาลองอีกครั้ง (Please try again) | | รหัสผ่านผิด | รหัสผ่านไม่ถูกต้อง (Password incorrect — less accusatory) |
UI Label Completeness (severity 1.0)
Thai UI labels should be COMPLETE descriptive phrases, not abbreviated nominal heads:
| Wrong (incomplete) | Correct (complete) | English | |---|---|---| | การตรวจจับทางเลือก | วิธีการตรวจจับทางเลือก | Alternative detection method | | การบันทึกอัตโนมัติ | การตั้งค่าการบันทึกอัตโนมัติ | Auto-save settings |
Punctuation, Numbers, Dates, Currency
Quotation Marks
- Thai uses standard double quotes
"..."or sometimes angle quotes«...» - No special "Thai quote marks"
- Curly or straight double quotes are both acceptable
Numbers
- Decimal separator: period (3.14)
- Thousands separator: comma (100,000)
- Format:
1,234,567.89 - ❌ 1.234.567,89 (European) → ✅ 1,234,567.89
Thai numerals (๐, ๑, ๒, ๓, ๔, ๕, ๖, ๗, ๘, ๙) exist but are rarely used in modern UI. Latin/Arabic numerals are standard.
Dates — DD/MM/YYYY (with Buddhist Era option)
Buddhist Era (BE / พ.ศ.) is +543 years from CE/AD:
- CE 2024 = BE 2567
- CE 2025 = BE 2568
| Form | Example | Meaning | |---|---|---| | Numeric BE | 15/01/2567 | 15 Jan 2024 BE format | | Numeric CE | 15/01/2024 | 15 Jan 2024 CE format (international) | | Word form BE | 15 มกราคม 2567 | 15 January BE | | Long BE | วันที่ 15 มกราคม พ.ศ. 2567 | Date 15 January B.E. 2567 | | Word form CE | 15 มกราคม 2024 / ค.ศ. 2024 | (CE marked explicitly) |
For international products / tech UI: use CE (2024). For traditional/government-facing Thai contexts: BE (2567). When in doubt, state which era explicitly if the year could be ambiguous.
Months (always lowercase): | English | Thai (full) | Thai (abbrev) | |---|---|---| | January | มกราคม | ม.ค. | | February | กุมภาพันธ์ | ก.พ. | | March | มีนาคม | มี.ค. | | April | เมษายน | เม.ย. | | May | พฤษภาคม | พ.ค. | | June | มิถุนายน | มิ.ย. | | July | กรกฎาคม | ก.ค. | | August | สิงหาคม | ส.ค. | | September | กันยายน | ก.ย. | | October | ตุลาคม | ต.ค. | | November | พฤศจิกายน | พ.ย. | | December | ธันวาคม | ธ.ค. |
Time
- 24-hour:
14:30 น.(น. = นาฬิกา = o'clock marker; optional in tech UI) - Word form:
บ่ายสองโมงครึ่ง(2:30 PM in traditional Thai 6-hour cycle) - For UI, prefer
14:30(international 24-hour, no marker needed)
Currency: THB Baht
- Thailand uses the baht (฿ / THB). Symbol BEFORE amount.
- Format:
฿1,000or1,000 บาท - Subdivision: 100 satang (สตางค์) — rarely used in everyday UI
- ❌ 1.000,00 ฿ → ✅ 1,000.00 ฿ or ฿1,000
- ❌ $100 → ✅ ฿3,500 (or whatever THB equivalent — use Baht for Thai users)
Comma in Sentences
Thai sentences typically do NOT use commas internally the way English does. Clause boundaries are marked by:
- Spaces (where English uses commas)
- Particles like
แล้ว(then),และ(and),หรือ(or),แต่(but)
Don't insert commas mid-sentence in Thai.
Terminology
| English | Preferred Thai | Avoid | |---|---|---| | Email | อีเมล | จดหมายอิเล็กทรอนิกส์ (verbose) | | Update | อัปเดต | ปรับปรุง (in modern tech contexts) | | Website | เว็บไซต์ | | | Privacy | ความเป็นส่วนตัว | | | Contact | ติดต่อ | | | Save | บันทึก | | | Delete | ลบ | | | Cancel | ยกเลิก | | | Upload | อัปโหลด | | | Download | ดาวน์โหลด | | | Settings | การตั้งค่า / ตั้งค่า | | | Search | ค้นหา | | | Edit | แก้ไข | | | Copy | คัดลอก | | | Paste | วาง | | | Close | ปิด | | | Open | เปิด | | | File | ไฟล์ | | | Folder | โฟลเดอร์ | | | User | ผู้ใช้ | | | Password | รหัสผ่าน | | | Username | ชื่อผู้ใช้ | | | Log in | เข้าสู่ระบบ / ล็อกอิน | | | Log out | ออกจากระบบ / ล็อกเอาต์ | | | Dashboard | แดชบอร์ด | | | Account | บัญชี | | | Click | คลิก | | | Submit | ส่ง | | | Loading | กำลังโหลด | |
Modern Thai is loanword-friendly for tech. Anglicism transliterations like อีเมล, อัปเดต, แดชบอร์ด, ดาวน์โหลด, อัปโหลด, คลิก are PREFERRED over native calques like จดหมายอิเล็กทรอนิกส์. Don't over-translate.
Proper noun abbreviations in UI:
- ✅ สหรัฐฯ (with mai yamok
ฯ) / อเมริกา (NOT "สหรัฐอเมริกา" in cramped UI) - ✅ สหราชอาณาจักร / อังกฤษ (NOT the full official name)
- ✅ ไทย for Thailand in informal UI
- ✅ ญี่ปุ่น (Japan), เกาหลี (Korea), จีน (China), เยอรมัน / เยอรมนี (Germany)
Brand names: Keep in original form for global brands (Apple, Google, Microsoft, Facebook). Don't transliterate established global brand names.
List Parallelism (severity 1.5)
When a list contains multiple items of the same semantic category (language names, file types, country names), ALL items must use the same grammatical form:
| Wrong (mixed) | Correct (parallel) | Reason | |---|---|---| | แปลเป็นภาษาเยอรมัน ฟินแลนด์ หรือไทย | แปลเป็นภาษาเยอรมัน ภาษาฟินแลนด์ หรือภาษาไทย | Either all use "ภาษา" prefix... | | | แปลเป็นเยอรมัน ฟินแลนด์ หรือไทย | ...or none does. Don't mix. | | ไฟล์ PDF, เวิร์ด, หรือ excel | ไฟล์ PDF, Word, หรือ Excel | Don't mix transliteration with original |
Apply this rule wherever list items share a category.
Calque / Anti-Pattern Blocklist
| Wrong (calque) | Correct (idiomatic) | Source | |---|---|---| | มันสมเหตุสมผล | เข้าใจได้ / มีเหตุผล | "it makes sense" | | ตอนท้ายวัน | ในที่สุด / สรุปแล้ว | "at the end of the day" | | ไม่จริงๆ | จริงๆ แล้วไม่ใช่ / ไม่ใช่เลย | "not really" | | 25+ ภาษา | มากกว่า 25 ภาษา / กว่า 25 ภาษา | "25+ languages" | | +{count} เพิ่มเติม | และอีก {count} ภาษา | "+{count} more" | | {min} ตัวอักษรยาว | อย่างน้อย {min} ตัวอักษร | "{min} characters long" | | 5 นาทียาว | 5 นาที | "5 minutes long" (length implicit) | | ใหม่ไฟล์ | ไฟล์ใหม่ | English adjective-first order | | ถูกบันทึกโดยระบบ | ระบบบันทึก / บันทึกแล้ว | "was saved by the system" | | ทำให้ดีที่สุด | ทำให้ดีที่สุด (acceptable) | "make best" | | ออฟฟิศ | ที่ทำงาน / สำนักงาน | Optional — borrowed but native is also fi
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: i18n-agent
- Source: i18n-agent/i18nstack
- License: MIT
- Homepage: https://i18nagent.ai
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.