UX бичвэр — монгол хэлээр
Яагаад
Дизайн зөв байсан ч «Та устгахдаа итгэлтэй байна уу? OK» гэсэн товч бүхнийг нурааж байна. Монгол UI-д English-ээс шууд орчуулсан өгүүлбэр урт, эзэнгүй, нөхцөл буруу гардаг; мөн дагаварын эгшиг зохицол тул динамик string ({name}-ийг устгах) нэг template-ээр болдоггүй. Энэ файл copy-ийн дүрэм; формат (огноо, ₮, утас) 09-localization-mn.md-д, үлдэнэ.
Sentence case, үгийн сонголт
- Sentence case бүх гарчиг, товч, label-д: «Шинэ захиалга үүсгэх», «ШИНЭ ЗАХИАЛГА ҮҮСГЭХ» биш, «Шинэ Захиалга Үүсгэх» ч биш. Uppercase зөвхөн 12px table header/eyebrow-д, 0.06em tracking (09).
- Нэр томьёо: нэг ойлголт = нэг үг бүх хуудсанд («Захиалга» гэснийг «Order»/«Даалгавар»-аар солихгүй). Glossary-г i18n файлын толгойд хадгал.
- English нэр томьёог (API key, token, webhook) орчуулахгүй, ижил font-оор, хашилтгүй (09). Хувилбарын «таамаг» орчуулга («вэбхүүк») хэрэглэхгүй.
- «Та» хэлбэр (хүндэтгэлийн олон тоо) — «Чи» хэзээ ч биш; гэхдээ боломжтой бол эзэнгүй: «Нууц үгээ шинэчилнэ үү» биш «Нууц үг шинэчлэх».
- Товч, label-д тэмдэгт хэмнэ: «Хадгалах» (10) > «Өөрчлөлтийг хадгалах» (23). Товч ≤2 үг, гарчиг ≤6 үг, toast ≤12 үг.
Товчны үйл үг (жагсаалт)
| Үйлдэл | Товч | Биш |
|---|---|---|
| Хадгалах | Хадгалах | OK, Болсон |
| Үүсгэх | Үүсгэх / Нэмэх | Шинэ, + |
| Засах | Засах | Өөрчлөх (тохиргоонд л) |
| Устгах (буцаагдах) | Устгах | Арилгах, Хасах (гишүүн хасахад л «Хасах») |
| Архивлах | Архивлах | Нуух |
| Илгээх | Илгээх | Submit, Явуулах |
| Баталгаажуулах | Баталгаажуулах | Зөвшөөрөх (permission-д л) |
| Цуцлах (үйлдлийг) | Болих | Cancel, Буцах |
| Буцах (навигаци) | Буцах | Болих |
| Хаах (modal) | Хаах | × дангаараа (aria-label-д «Хаах») |
| Дахин оролдох | Дахин оролдох | Retry, Refresh |
| Үргэлжлүүлэх | Үргэлжлүүлэх | Дараах (pagination-д л «Дараах») |
| Татах / Экспорт | Татах (файл) · Экспортлох (өгөгдөл) | Download |
| Нэвтрэх / Гарах | Нэвтрэх · Гарах | Login, Logout, Log out |
| Бүртгүүлэх | Бүртгүүлэх | Sign up, Эхлэх (landing CTA-д «Үнэгүй эхлэх» болно) |
| Хайх | Хайх | Хайлт (label-д л) |
| Шүүх | Шүүлтүүр (N) | Filter |
| Цэвэрлэх | Цэвэрлэх | Арилгах, Reset |
Confirm dialog-ийн товч = үйлдлийн үг (10): «Устгах», «Хасах», «Илгээх»; хэзээ ч «Тийм/Үгүй».
Дагавар, эгшиг зохицол — динамик string
Монгол дагавар (-ийг/-ыг, -д/-т, -аас/-ээс/-оос/-өөс, -тай/-тэй/-той) үгийн эгшгээс хамаарна → {name}-ийг устгах нэг template алдаатай. Гурван арга, давуу дарааллаар:
- Дагавараас зайлсхий (default): объектыг хашилтад, өгүүлбэрийг түүнгүй байгуул: «Устгах: «Q3 тайлан»» · «“Q3 тайлан” — устгах уу?» · «Төсөл устгах: Q3 тайлан». Гарчигт нэр, body-д үйлдэл.
- Ангилал + дагавар тогтмол: дагаварыг хувьсагч биш ангиллын нэр-д залга, нэрийг хашилтад: «“{name}” төслийг устгах уу?», «“{name}” хэрэглэгчид илгээх», «“{name}” файлаас» — ангиллын үг тогтмол тул дагавар зөв.
- Suffix helper (зайлшгүй үед л):
mnSuffix(word, 'acc')— сүүлийн эгшгээр (а/о/у → -ыг/-д/-аас/-тай; э/ө/ү/и → -ийг/-д/-ээс/-тэй; о → -оос, ө → -өөс) + н-дагавар, эгшгээр төгссөн үгийн онцгой тохиолдол. Латин нэр (Stripe), тоо (#1042) хоёрт зураасаар: «Stripe-ийг», «#1042-ыг» — helper алдвал-ийгfallback. Helper-ийг unit test-тэй, i18n файлаас гадуур логик биш.
ICU MessageFormat (intl-messageformat, i18next ICU, FormatJS):
{count, plural, =0 {Файл алга} other {# файл}}
{count, plural, =0 {Сонгосон зүйл алга} =1 {1 зүйл сонгосон} other {# зүйл сонгосон}}
{gender, select, female {Тэр илгээлээ} male {Тэр илгээлээ} other {Илгээлээ}}
{status, select, draft {Ноорог} sent {Илгээсэн} paid {Төлөгдсөн} other {Тодорхойгүй}}
- CLDR-д
mnplural =one/other, гэхдээ монголд тооны дараах нэр үг олон тооны дагавар авдаггүй («5 файл», «5 файлууд» биш) → ихэнхдээ=0+otherхангалттай;one-ийг «1 зүйл» гэж тусад нь бичих нь зөвхөн өгүүлбэр өөр бүтэцтэй үед. selectнь төлөв, төрөл, хүйсийн орчуулгад — string concat (t('status') + t(status)) хэзээ ч биш.- Template-д үгийн дараалал өөр: «{user} {count} файл оруулав» — English
{user} uploaded {count} files-ийн placeholder байрлал өөр тул%spositional биш нэрлэсэн placeholder.
Алдааны мессежийн томьёо
Юу болсон + яаж засах (+ хаана) — 1–2 өгүүлбэр, зэмлэлгүй, техник кодгүй.
| Нөхцөл | Бичвэр |
|---|---|
| Хоосон required | «Имэйл хаяг оруулна уу» (талбарын нэр + «оруулна уу») |
| Формат буруу | «Утасны дугаар 8 оронтой байна: 9911 2233» (зөв жишээ заавал) |
| Давхардал (409) | «Энэ имэйлээр бүртгэл байна — нэвтрэх үү?» + линк |
| Эрх | «Зөвхөн админ энэ үйлдлийг хийнэ» |
| Сүлжээ | «Холболт тасарсан. Шалгаад дахин оролдоно уу» |
| Сервер | «Хадгалж чадсангүй. Дахин оролдоно уу» (+ request ID жижиг) |
| Хэмжээ | «Файл 10MB-аас бага байх ёстой (энэ: 14.2MB)» |
- «Алдаа», «Error», «Буруу» гэсэн ганц үгтэй мессеж хориотой. Аймшигт үг («Сүйрэл», «Анхаар!!!», улаан том үсэг) хэрэглэхгүй.
- Амжилт: юу болсныг нэрлэ — «Хадгалагдлаа», «Захиалга #1042 үүслээ», «Имэйл илгээлээ» (toast ≤12 үг, «Амжилттай!» дангаараа биш).
- Хоосон төлөв (10): юу байхгүй + дараагийн алхам — «Захиалга алга. Эхнийхээ үүсгэ» → [Захиалга үүсгэх].
- Тусламжийн текст (helper): шаардлагыг урьдчилан — «8+ тэмдэгт, 1 тоо» — алдаа гарсны дараа биш.
Нэгж, тоо, хугацаа
- Нэгж тооноос зайгүй, латин товчлол:
12MB,3.2GB,250KB(1024-аар, KiB хэрэглэхгүй);45ms,1.2s. - Хугацаа:
<60с→ «45 секунд»;<60мин→ «12 мин»;<24ц→ «3 ц 20 мин»;≥24ц→ «2 өдөр 4 ц». Countdownmm:ss(02:00). Хугацааны нэгжийн товчлол: с · мин · ц · өдөр · 7 хоног · сар · жил (сек/мин/цаг-ыг label-д бүтнээр). - Харьцангуй цаг: «дөнгөж сая» (<60с) · «5 минутын өмнө» · «3 цагийн өмнө» · «өчигдөр 14:20» · «2026-08-18» (>7 хоног) (06 Date/Time).
- Сөрөг тоо:
−1,250₮(U+2212 minus, hyphen биш), санхүүд хаалт хэрэглэхгүй; delta-д тэмдэг + сум: «▼ −8.2%». - Хувь: тооноос зайгүй
8.2%, 1 орон; «хувь» гэж бичихгүй. - Муж: en dash зайгүй
10–20, огноо2026-08-01 – 2026-08-31(зайтай en dash). - Тоо ≥10,000 бол мянгатын таслал заавал (
12,400); текст дотор 0–9-ийг үсгээр бичихгүй (UI-д тоо үргэлж цифрээр). - Долоо хоног Даваа-аас; гарагийн товчлол Да Мя Лх Пү Ба Бя Ня; сарыг тоогоор (
08), нэрээр бичвэл «8-р сар».
Placeholder, label, tooltip, alt
- Label = нэр үг («Имэйл»), placeholder = жишээ формат (
name@example.com) — заавар биш («Имэйлээ энд бичнэ үү» ✗). - Tooltip ≤60 тэмдэгт, өгүүлбэр биш хэллэг, цэггүй.
alt: зураг юу харуулж байгааг — «Зураг», «Image» биш; чимэглэлalt="".aria-labelмонголоор, i18n-ээр («Хаах», «Цэс нээх»).- Checkbox/switch label эерэг хэлбэрээр: «Мэдэгдэл илгээх» (✓ = илгээнэ), «Мэдэгдэл илгээхгүй» ✗ (давхар үгүйсгэл).
Хурдан шалгах
- Товч бүр үйл үг үү, «OK/Тийм/Submit» байхгүй юу?
- Динамик нэр дагавартай залгагдаагүй (хашилт эсвэл ангиллын үг) үү?
- Plural
=0/otherICU-ээр үү, string concat байхгүй юу? - Алдаа бүр «юу + яаж засах» уу, код/англи үг харагдахгүй юу?
- Sentence case, нэр томьёо нэг мөр үү?
- Нэгж/хувь/сөрөг тоо/муж дээрх дүрмээр үү?
Эх сурвалж
- Unicode CLDR — Plural Rules (
mn: one/other),mnlocale data — cldr.unicode.org/index/cldr-spec/plural-rules - ICU MessageFormat — unicode-org.github.io/icu/userguide/format_parse/messages/; FormatJS
intl-messageformat; i18next ICU plugin - Nielsen Norman Group — “Error-Message Guidelines”; “Button UX Design: Best Practices”; “Microcopy”; “Tooltip Guidelines”
- GOV.UK Design System — Content style guide (sentence case, error messages, dates/times); GOV.UK Content Design — “Writing for user interfaces”
- Apple HIG — Writing; Material 3 — Writing (UX writing best practices)
- Microsoft Writing Style Guide — Units of measure, numbers, dates
- Монгол Улсын Засгийн газрын 2018 оны «Кирилл бичгийн зөв бичих дүрэм»; Ц.Дамдинсүрэн, Б.Осор — Монгол үсгийн дүрмийн толь (дагаврын эгшиг зохицол)
- WCAG 2.2 — 3.3.1 Error Identification, 3.3.3 Error Suggestion, 2.4.6 Headings and Labels, 1.1.1 Non-text Content