Vietnamese school and academic writing (vi-VN)
Vietnamese education writing fails by flattening a rigidly hierarchical, legally codified
system into one generic voice. A teacher writing to a 9-year-old, a school broadcasting to
parents, and a university registrar addressing an adult student are three different registers
with three different pronouns — and two of the genres here (report-card language, diploma
reissuance) use wording set by a Ministry circular, not by house style.
This skill covers instructional and administrative writing only. E-learning product UI,
gamification, and subtitles belong to
; tutoring-centre, test-prep, and
study-abroad advertising belong to
vietnamese-business-comms
— both are genuinely different
registers (software microcopy, regulated advertising) wearing an education topic.
Step 1 — Identify the writer, the reader, and the schooling stage
| Writer → Reader | Register | Notes |
|---|
| Teacher → secondary student (THCS/THPT) | () | The default K-12 classroom register |
| Teacher → primary student (tiểu học) | () | Set by schooling stage, not the student's actual age |
| School/teacher → parents (collective) | () | sổ liên lạc, Zalo broadcasts, report-card notices |
| University → student (administrative prose) | (no direct address) | Transcripts, syllabi, registration — third-person |
addressed to a student in a teacher's voice is the single most common
machine-translation tell in this domain — it strips the hierarchical respect the relationship
requires. Full matrix, including how these four rows sit alongside every other Vietnamese
skill's registers:
references/register-matrix.md. The
education-specific detail — the primary/secondary
/
line,
versus a
known parent's own register, and a teacher's self-reference (
/
, never
) — is in
references/doc-registers.md.
Step 2 — Use the statutory grading terms, not the ones that sound right
Grading and credential terminology in Vietnam is set by Bộ GD&ĐT circulars, and they changed
recently enough that an LLM's training data still defaults to the abolished terms:
- Secondary (THCS/THPT), Thông tư 22/2021/TT-BGDĐT: overall classification is /
/ / . and an overall / label are
abolished — generating them is the clearest tell that a report card is machine-written.
- Primary (tiểu học), Thông tư 27/2020/TT-BGDĐT: routine assessment is qualitative, not
numeric — / / . is the calque; the
statutory phrase is .
- Higher education, Thông tư 08/2021/TT-BGDĐT: credit is , never (that
is financial credit). GPA is written with a Vietnamese decimal comma (), and maps
to / / — an untranslated is a locale bug, not a style choice.
- Diplomas, Thông tư 21/2019/TT-BGDĐT: an original diploma is issued once. A lost diploma is
never "reissued as an original" — the correct, and only legal, output is (a copy from the master register).
Full tables, article citations, and effective dates:
references/grading-terminology.md.
Step 3 — Look up the term before inventing one
(textbook/course material) is not
(syllabus/course outline);
is the EdTech phrase,
is the university-registration one;
is not the formal
(plagiarism). The calque table, with severities:
references/glossary.md.
Step 4 — Check compliance and formatting
for parent-facing notices is close to a legal expectation, not just house style
— Điều 89 Luật Giáo dục 2019 frames school-home communication as formal coordination, and a
casual or literal
reads as a failure to take that seriously. A K-12 app or
portal that reports a child's grades to a parent is processing a minor's data and needs the
consent language in
references/compliance.md (Nghị định
13/2023/NĐ-CP). Number, date, and currency formatting (tuition fees, GPA decimals) follows
references/locale-formatting.md; regulated superlatives
in school-branding language follow
references/banned-phrases.md.
Step 5 — Validate, fix, then ship
Run the validator immediately after writing. If it reports errors, fix them and run again.
Only present the copy once it passes.
bash
python scripts/validate_copy.py hoc-ba.md --doctype secondary-report-card
python scripts/validate_copy.py so-lien-lac.md --doctype primary-report-card --register edu-parent
python scripts/validate_copy.py nhan-xet.md --doctype teacher-to-student --register edu-k12
python scripts/validate_copy.py bang-diem.md --doctype transcript
python scripts/validate_copy.py cap-lai-bang.md --doctype diploma
python scripts/validate_copy.py de-cuong.md --doctype higher-ed --register edu-uni
--register edu-k12|edu-k12-primary|edu-parent|edu-uni
enables .
- turns on the statutory and structural rules — they stay silent otherwise,
because is only wrong on a primary report card:
, , , ,
, .
- Exit = clean or warnings only. Exit = errors that must be fixed.
- for machine-readable findings; to fail on warnings too; repairs
NFC in place.
Step 6 — Learn from the worked pairs, then hand it to a human
references/examples.md — bad→good pairs, each with the circular
or article it fixes. Then run the checklist: the linter catches statutory terms, calques, and
encoding; it cannot tell you whether a report-card remark is actually encouraging, or whether a
parent notice reads as sincere. Those need a native speaker who has taught or parented inside
this system: references/qa-checklist.md