Install
$ agentstack add skill-i18n-agent-i18nstack-localize-vi ✓ 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: Vietnamese (vi → Tiếng Việt)
You are translating source text into Vietnamese for Vietnam. This skill captures grammar, register, UI conventions, formatting, and Vietnamese-specific failure modes derived from a production translation prompt.
Scope & Variants
One standard with regional flavors:
- vi-VN — Vietnamese as used in Vietnam. Official state language.
Regional varieties:
- Northern (Hanoi) — more formal, conservative vocabulary, standard pronunciation for media. Use as default for UI.
- Southern (Saigon / Ho Chi Minh City) — more casual, more French/English loanwords, distinct vocabulary in some areas.
- Central — distinct in spoken language; rarely a written-language target.
For product UI, write in standard written Vietnamese (Tiếng Việt chuẩn) based on Northern conventions, which is universally understood.
Native name: Tiếng Việt (the language); tiếng (language/voice) + Việt (Vietnamese).
Identity guardrail:
- Vietnamese is Austroasiatic (Mon-Khmer family), NOT Chinese (Sino-Tibetan) and NOT Thai (Tai-Kadai). Despite heavy historical Chinese influence in vocabulary (~30-60% of words are Sino-Vietnamese), the grammar is fundamentally different.
- Vietnamese uses the Latin alphabet with diacritics (Quốc Ngữ script, adopted from Portuguese missionary work, standardized 17th c.). It does NOT use Chinese characters anymore (Chữ Hán/Nôm was phased out).
- Vietnamese is isolating — no inflections, no gender, no number. Words don't change form. Grammar is conveyed by word order, function words, and tones.
Register
Default level: bạn (standard polite) for software UI, errors, documentation, marketing aimed at general consumers.
Vietnamese formality is expressed through pronoun choice (not verb conjugation, which doesn't exist):
| Level | Pronoun | Use case | |---|---|---| | Very formal | Quý khách / Quý vị | Banking, premium services, official announcements | | Polite | Anh / Chị | Customer service to slightly older person, formal email | | Standard (UI default) | bạn | Most product UI, peer-to-peer messages | | Casual / familiar | (varies by age/relationship) | NOT for UI | | Intimate | em / anh / chị / mày / tao | NEVER in UI |
Rules:
- Choose ONE pronoun level per file. Don't switch between
bạnandQuý khách. - Match softening particles to formality (
ạwith formal,nhéwith friendly). - Avoid colloquial forms in professional UI:
hông(= không, no),rùi(= rồi, already),nè(= này, this),dzậy(= vậy).
Examples:
- ❌ "Quý khách nhấn vào đây nhé" (very formal Quý khách + casual nhé) → ✅ "Quý khách vui lòng nhấn vào đây" (or use
bạnthroughout) - ❌ "hông được" → ✅ "không được"
- ❌ "rùi" → ✅ "rồi"
- ❌ "nè" → ✅ "này"
Critical Hard Rules
Tone Marks (severity 3.0)
Vietnamese has 6 tones, all marked by diacritics. Stripping tone marks changes meaning and renders text effectively unreadable.
| Tone | Mark | Vietnamese | Example | |---|---|---|---| | Level (ngang) | (none) | ma | ghost | | Falling (huyền) | ` (grave) | mà | but | | Rising (sắc) | ´ (acute) | má | mother | | Dipping-rising (hỏi) | ̉ (hook above) | mả | grave | | Glottalized rising (ngã) | ˜ (tilde) | mã | code | | Heavy/falling-short (nặng) | ̣ (dot below) | mạ | rice seedling |
One word, 6 meanings. Stripping is catastrophic.
Vowel diacritics are also critical (ă, â, ê, ô, ơ, ư) — different vowels, not optional. Letters with both vowel diacritic AND tone are common: ấ, ầ, ẩ, ẫ, ậ, ấ, ằ, ẳ, ẵ, ặ, ế, ề, ể, ễ, ệ, ố, ồ, ổ, ỗ, ộ, ớ, ờ, ở, ỡ, ợ, ứ, ừ, ử, ữ, ự.
| Wrong (stripped) | Correct | Meaning | |---|---|---| | Cam on ban | Cảm ơn bạn | Thank you | | Luu y | Lưu ý | Note | | Tai len | Tải lên | Upload | | Mat khau | Mật khẩu | Password | | Tieng Viet | Tiếng Việt | Vietnamese |
NEVER omit diacritics in formal/UI text. ASCII-Vietnamese exists in casual chat but is unacceptable in product UI.
Classifier System (Loại từ) (severity 2.0)
Vietnamese requires a classifier before a counted noun. Bare numbers + nouns are ungrammatical (with some exceptions).
| Classifier | Used for | Example | |---|---|---| | cái | general objects, things | một cái bàn (a table), hai cái ghế (two chairs) | | con | animals, some objects (knives, rivers, boats) | một con mèo (a cat), một con dao (a knife) | | người | people | một người (a person), năm người (five people) | | quyển / cuốn | books, magazines, notebooks | một quyển sách (a book) | | tờ | flat objects, paper, newspapers | một tờ giấy (a sheet of paper), một tờ báo | | chiếc | vehicles, some objects | một chiếc xe (a vehicle), một chiếc áo | | bộ | sets, collections | một bộ quần áo (an outfit) | | cây | trees, long objects | một cây bút (a pen) | | viên | small round/lumpy objects | một viên đá (a stone), một viên thuốc (a pill) | | bức | flat artworks | một bức tranh (a painting) |
No classifier needed for:
- Inherent counted nouns:
ngôn ngữ(language),tệp(file),phút(minute),nước(country) {count} ngôn ngữ✓ (no classifier needed){count} tệp✓ (no classifier needed for "file" in UI usage)
Plural markers (các, những) are OMITTED with numbers:
- ✅ "{count} tệp" (not "{count} các tệp")
- ✅ "5 ngôn ngữ" (not "5 các ngôn ngữ")
- ✅ "các tệp" (when no count: general "the files")
Adjective-After-Noun Word Order (severity 2.0)
Vietnamese places modifiers AFTER the head word, opposite of English.
| Wrong (English order) | Correct (Vietnamese) | English | |---|---|---| | mới tệp | tệp mới | new file | | đẹp nhà | nhà đẹp | beautiful house | | mới tính năng | tính năng mới | new feature | | cao tốc độ | tốc độ cao | high speed | | tốt chất lượng | chất lượng tốt | good quality | | xanh áo | áo xanh | blue shirt |
This applies to:
- Adjectives (tệp mới)
- Possessives (nhà của tôi — house of mine)
- Relative clauses (tệp mà bạn đã chọn — file that you selected)
- Demonstratives (tệp này — this file, tệp đó — that file)
Active Voice over Passive (severity 1.5)
Vietnamese overuses được (passive marker) creates stiff, translation-y text. Prefer active voice.
| Wrong (passive) | Correct (active) | |---|---| | File được lưu bởi hệ thống | Hệ thống đã lưu file / File đã lưu | | Tệp được tải lên bởi người dùng | Người dùng đã tải lên tệp | | Email được gửi | Đã gửi email | | Thông báo được tạo | Đã tạo thông báo |
được IS appropriate when:
- The agent is unknown / irrelevant
- Expressing positive permission: "Bạn được phép truy cập" (you are allowed to access)
- After verbs of allowance: cho phép, cấp
Progressive Form with đang (severity 1.5)
For ongoing/loading actions, use đang + verb — not the bare verb.
| Wrong | Correct | English | |---|---|---| | Tải... | Đang tải... | Loading... | | Lưu... | Đang lưu... | Saving... | | Xử lý... | Đang xử lý... | Processing... | | Kết nối... | Đang kết nối... | Connecting... | | Tìm kiếm... | Đang tìm kiếm... | Searching... |
đang marks ongoing action (present continuous). Without it, the bare verb reads as imperative or generic.
No-Plural-Marker Rule
Vietnamese has plural markers các (definite plural) and những (indefinite plural), but:
- They're omitted with explicit numbers (5 tệp, NOT 5 các tệp)
- They're omitted in most counting/quantity contexts
- They appear in general "the X" references: "các tệp đã chọn" (the selected files)
UI Conventions
Button Labels — Concise Imperative
Vietnamese buttons use short imperatives without polite prefixes:
| Wrong (with hãy/polite prefix) | Correct (concise) | English | |---|---|---| | Hãy lưu lại | Lưu | Save | | Hãy xóa | Xóa | Delete | | Hãy hủy bỏ | Hủy | Cancel | | Hãy tải lên | Tải lên | Upload | | Hãy chọn | Chọn | Select | | Hãy đóng | Đóng | Close |
(Hãy is a polite imperative marker — appropriate in instructions or polite requests, but bloats buttons.)
Status Messages — Đang + verb...
✅ Đang tải... (Loading...)
✅ Đang lưu... (Saving...)
✅ Đang xử lý dữ liệu... (Processing data...)
✅ Đã lưu (Saved — past completion)
✅ Đã sẵn sàng (Ready)
❌ Tải (just "load" — sounds imperative)
❌ Đang được tải (passive + đang — too stiff)
Drag-and-Drop Vocabulary
- kéo = drag
- thả = drop / release
- ❌ "drag" / "drop" (English) — wrong
✅ Kéo tệp vào đây (drag files here)
✅ Kéo và thả vào đây (drag and drop here)
✅ Kéo thả tệp (drag-drop files — compact)
❌ Drag tệp / Drop tại đây
Error Messages — Natural Phrasing
| Wrong (calque) | Correct (natural) | |---|---| | Thất bại khi tải | Không thể tải / Lỗi tải | | Lỗi khi lưu | Không thể lưu / Lưu không thành công | | Thất bại để kết nối | Không thể kết nối | | Lỗi xảy ra | Đã xảy ra lỗi (if needed; usually omit entirely) |
Pattern: Không thể + [verb] is the canonical "failed to X" structure.
File Picker / Placeholder Handling
Vietnamese can suffix-free with placeholders (unlike Hungarian or Finnish), but add type markers for clarity when placeholders represent types/formats:
| Less clear | Preferred (with type marker) | |---|---| | Hỗ trợ tệp {formatList} | Hỗ trợ tệp định dạng {formatList} | | Nội dung {languageList} | Nội dung bằng {languageList} ngôn ngữ |
Exception: simple quantity ({count} tệp) and established compounds (tệp JSON, tệp PDF) don't need markers.
Softening Particles
Vietnamese uses sentence-final particles to soften tone:
| Particle | Use | Example | |---|---|---| | nhé | friendly suggestion | "Nhấn vào đây nhé" (Click here, ok?) | | nhá | gentle confirmation | "Đúng rồi nhá" (That's right) | | ạ | respectful (formal) | "Cảm ơn bạn ạ" (Thank you) | | chứ | reinforcement | "Tốt chứ" (It's good, right?) | | đi | mild imperative | "Làm đi" (Just do it) | | với | "too" / "along with" | "Tôi với" (Me too) |
Match particle to register:
- Formal (Quý khách) →
ạ - Standard (bạn) → no particle or mild
nhéin friendly messages - DO NOT add particles in buttons or terse UI labels — they bloat the UI
Punctuation, Numbers, Dates, Currency
Quotation Marks
- Vietnamese uses standard double quotes
"..."or angle quotes«...» - Less commonly, single quotes
- No special "Vietnamese quote marks" — straight or curly double quotes are standard
Numbers
- Decimal separator: comma (3,14)
- Thousands separator: period (100.000)
- Format:
1.234.567,89 - ❌ 1,234.56 (US) → ✅ 1.234,56
Dates — DD/MM/YYYY
- Numeric: 15/01/2024 (slashes)
- Word form: 15 tháng 1, 2024 or ngày 15 tháng 1 năm 2024 (day-month-year, "tháng" = month, "năm" = year)
- ❌ 01/15/2024 (US) → ✅ 15/01/2024
- ❌ 2024-01-15 (ISO; acceptable in technical contexts but not customer-facing UI)
Time
- 24-hour:
14:30 - Word form:
2 giờ 30 chiều(2:30 PM, chiều = afternoon) or14 giờ 30or2 rưỡi chiều(half past two PM) - AM/PM equivalents:
sáng(morning),trưa(noon),chiều(afternoon),tối(evening),đêm(night)
Currency: VND đồng
- Vietnam uses the đồng (₫ or VND). NOT in any monetary union.
- Format:
100.000₫or100,000 VND(period thousands, ₫ after, no decimals in casual use) - The đồng is heavily inflated; sub-1000 amounts are essentially absent from UI
- ❌ $100 → ✅ 100.000₫ (use VND, NOT dollars)
- ❌ 100.000 đồng (verbose in UI) — acceptable in body text but
100.000₫for compact UI
Comma Rules
NO comma before coordinating conjunctions (hoặc, hay, và, cũng như):
- ❌ "Kéo tệp vào đây, hoặc nhấp" → ✅ "Kéo tệp vào đây hoặc nhấp"
- ❌ "Lưu tệp, và đóng" → ✅ "Lưu tệp và đóng"
Comma DOES go before subordinating clauses (nếu, khi, vì, nhưng):
- "Nhấn vào đây, nếu bạn muốn tiếp tục"
- "Không hoạt động, vì tệp bị thiếu"
- "Đó là tệp nhỏ, nhưng quan trọng"
Word Spacing
Vietnamese DOES use spaces between syllables (unlike Thai or Chinese). Each syllable is a separate "word" in writing:
- ✅ "Cảm ơn bạn" (three separated syllables)
- ❌ "Cảmơnbạn" (wrong)
Compound words are written as separated syllables: máy tính (computer), điện thoại (phone), phần mềm (software). Don't fuse them.
Terminology
| English | Preferred Vietnamese | Avoid | |---|---|---| | Save | Lưu | | | Delete | Xóa | | | Cancel | Hủy | Hủy bỏ (verbose) | | Upload | Tải lên | Upload (English) | | Download | Tải xuống | Download | | Settings | Cài đặt | Thiết lập (less common in modern UI) | | Search | Tìm kiếm | | | Edit | Chỉnh sửa | Edit | | Copy | Sao chép | Copy (use in some contexts) | | Paste | Dán | | | Close | Đóng | | | Open | Mở | | | File | Tệp / tập tin / file | (file is also acceptable in tech context) | | Folder | Thư mục | | | User | Người dùng | | | Password | Mật khẩu | | | Email | Email / Thư điện tử | (Email is preferred in modern UI) | | Username | Tên đăng nhập | | | Log in | Đăng nhập | | | Log out | Đăng xuất | | | Dashboard | Bảng điều khiển | | | Account | Tài khoản | | | Browser | Trình duyệt | | | Click | Nhấp / nhấn / bấm | | | Submit | Gửi | | | Loading | Đang tải | |
Proper noun abbreviations in UI:
- ✅ "Mỹ" / "Hoa Kỳ" (NOT "Hợp chúng quốc Hoa Kỳ" in cramped UI)
- ✅ "Anh" / "Vương quốc Anh" (NOT "Vương quốc Liên hiệp Anh và Bắc Ireland")
- ✅ "Úc" (NOT "Ô-xtrây-li-a" — old transliteration, sounds archaic)
- ✅ "Đức" (Germany), "Nhật" (Japan), "Hàn" (Korea), "Trung Quốc" (China)
Tech English tolerance: Modern Vietnamese tolerates well-established English tech terms (email, app, online, wifi, link, ID, OK). Don't over-translate these.
Calque / Anti-Pattern Blocklist
| Wrong (calque) | Correct (idiomatic) | Source | |---|---|---| | Nó có nghĩa | Điều này hợp lý / Có lý | "it makes sense" | | Vào cuối ngày | Cuối cùng / Suy cho cùng | "at the end of the day" | | Không thực sự | Thực ra không phải / Không hẳn | "not really" | | Lấy một nghỉ | Nghỉ ngơi | "take a break" | | Gãy chân đi | Chúc may mắn! | "break a leg" | | Miếng bánh | Dễ như trở bàn tay / Dễ ợt | "piece of cake" | | 25+ ngôn ngữ | hơn 25 ngôn ngữ / trên 25 ngôn ngữ | "25+ languages" | | +{count} thêm | và {count} khác / thêm {count} | "+{count} more" | | {min} ký tự dài | ít nhất {min} ký tự | "{min} characters long" | | 5 phút dài | 5 phút | "5 minutes long" (length is implicit) | | Thất bại khi tải | Không thể tải / Lỗi tải | "failed to load" | | Lỗi khi lưu | Không thể lưu | "error saving" | | File được lưu | Đã lưu file / File đã lưu | "the file was saved" (passive→active) |
Question Particles
Vietnamese questions don't change word order. They use sentence-final particles or question words:
| Form | Pattern | Example | |---|---|---| | Yes/no question | sentence + không? | "Bạn có muốn lưu không?" (Do you want to save?) | | Or-question | A + hay + B | "Lưu hay hủy?" (Save or cancel?) | | Wh-question | WH-word in question position | "Tệp ở đâu?" (Where is the file?) | | Tag question | sentence + đúng không? / phải không? | "Tệp đã lưu, đúng không?" |
Self-Check Checklist
Run BEFORE finalizing each translation:
Accuracy (critical):
- [ ] All tone marks present (Cảm ơn bạn, not Cam on ban) — never strip
- [ ] Vowel diacritics present (ă, â, ê, ô, ơ, ư + combined with tones)
- [ ] Classifier used when counting nouns (một cái bàn, một con mèo, một quyển sách); BUT no classifier for inherent counts (5 ngôn ngữ, 3 tệp)
- [ ] Adjective AFTER noun (tệp mới, NOT mới tệp)
- [ ] No plural marker with numbers (5 tệp, NOT 5 các tệp)
- [ ] Active voice preferred ove
…
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.