Олон хэлний дэмжлэг (i18n) — НҮБ-ын 6 хэл + монгол¶
Платформ нь Монгол хэл дээр төрөлх, дээр нь НҮБ-ын албан ёсны 6 хэл-ээр ажиллана:
| Код | Хэл | Тэмдэглэгээ |
|---|---|---|
mn |
Монгол | Үндсэн (default) — бүх текстийн эх сурвалж |
en |
English | |
ru |
Русский | |
zh |
中文 (хялбаршуулсан) | zh-Hans |
fr |
Français | |
es |
Español | |
ar |
العربية | RTL — баруунаас зүүн бичиглэл |
Текст хаана байдаг вэ¶
Текстийн каталог нь бүрэлдэхүүн тус бүрд ТУСДАА (нэгдсэн сервер талын каталог байхгүй — апп/веб нь офлайн ажиллах шаардлагатай):
| Бүрэлдэхүүн | Хэлний тодорхойлолт | Каталог | Түлхүүрийн тоо |
|---|---|---|---|
| Веб (Next.js) | web/src/lib/i18n/translations.ts (Locale, LOCALES, LOCALE_NAMES, LOCALE_HTML_LANG) |
мөн тэр файл | ~700 |
| iOS | ios/eIDMongolia/App/Etalon/Localization/LocalizationManager.swift (AppLanguage) |
.../Localization/Strings.swift |
516 |
| Android | .../etalon/localization/LocalizationManager.kt (AppLanguage) |
.../localization/Strings.kt |
~627 |
| macOS desktop | desktop/macos-app/Presentation/Localization/LocalizationService.swift |
мөн тэр файл | ~150 |
| Windows desktop | desktop/windows-app/src/eIDMongolia.Client/Services/LocalizationService.cs |
.../Strings/<locale>/Resources.resw |
~300 |
| Баримт (MkDocs) | mkdocs.yml → plugins.i18n.languages |
docs/<NAME>.<locale>.md |
19 файл × хэл |
Шинэ хэл нэмэх дараалал¶
- Хэлний тоочилтод нэмнэ (дээрх "Хэлний тодорхойлолт" багана): код, эх нэр
(
Français— англи нэр биш), богино шошго, BCP-47 locale (огноо/тоо форматад). - Каталог —
enтолийг эх болгож бүх түлхүүрийг орчуулна. Дутуу түлхүүр байвал апп ньmn(эсвэлen) руу унана — дуусаагүй хэл нь эвдрэлгүй ч ХОЛИМОГ харагдана. - Хэл сэлгүүр (header/тохиргоо) — шинэ хэл автоматаар гарна (
CaseIterable/LOCALES). - Арабын хувьд RTL — доорх хэсгийг үз.
- Баримт —
mkdocs.yml-д locale нэмж,nav_translationsбичнэ. Орчуулаагүй хуудас ньfallback_to_default: trueтул монгол хувилбар руу унана.
Араб хэл — RTL (баруунаас зүүн)¶
Араб нь зөвхөн орчуулга биш, зохиомжийн асуудал:
- Веб:
<html dir="rtl" lang="ar">. CSS-дmargin-left/rightбиш логик шинжүүд (margin-inline-start/end,padding-inline-*,text-align: start/end) хэрэглэнэ. Flex/grid-ийнrowчиглэл автоматаар эргэнэ. - iOS (SwiftUI) / Android (Compose):
leading/trailing,start/endашигласан бол зохиомж автоматаар толирдоно. Тогтмол.left/.right,absoluteOffset, гараар бичсэн сумны чиглэл (chevron.right) зэрэг нь эргэхгүй тул тусад нь шалгана. - Тоо/огноо: араб locale (
ar) нь тоог зүүнээс баруун тийш үлдээдэг (Latin цифр) — РД/гэрчилгээний дугаар зэрэг танигчийг хэзээ ч орчуулж/эргүүлж болохгүй. - PKI/identity утгууд орчуулагдахгүй:
PNOMN-…, гэрчилгээний subject DN,document_number, MRZ мөр, hash — эдгээр нь wire/PKI канон (docs/IDENTIFIERS.md).
Одоогийн байдал¶
| Бүрэлдэхүүн | Түлхүүр | mn | en | ru | zh | fr | es | ar |
|---|---|---|---|---|---|---|---|---|
| Веб — UI | 700 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Веб — урт хуудсууд¹ | — | ✅ | ✅ | ✅ | ✅ | ↩︎ | ↩︎ | ↩︎ |
| iOS | 516 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Android | 625 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| macOS desktop | 269 + 120² | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Windows desktop | 269 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Баримт (MkDocs) | 19 хуудас | ✅ | ✅ | ✅ | ✅ | ↩︎ | ↩︎ | ↩︎ |
✅ = бүрэн орчуулагдсан · ↩︎ = буцаж унана (fallback)
¹ Вебийн урт хуудсууд (/privacy, /terms, /help, /contact, /security, /trust/adobe)
нь PageContentMap-аар удирдагдаж, орчуулга байхгүй хэлэнд англи руу унана
(web/src/lib/i18n/pageContent.ts). Шалтгаан: нууцлалын бодлого / үйлчилгээний нөхцөл нь
эрх зүйн баримт бичиг — хуулийн хяналтгүй орчуулгыг албан ёсны эх гэж нийтлэх нь эрсдэлтэй.
Хуульчийн хяналт өнгөрсний дараа тухайн хэлний блокийг нэмэхэд fallback автоматаар зогсоно.
² macOS-ийн 120 нэмэлт түлхүүр нь LocalizationService.swift-ийн extra* толиуд
(Windows-ийн resw-д байхгүй, зөвхөн macOS дэлгэцүүдэд). Мөн pick(mn:en:ru:zh:) дэх
дэлгэц дотор бичигдсэн урт хуулбар текстүүд fr/es/ar-т англи руу унана
(pick-ийн fr:/es:/ar: сонголтот параметрээр дараа нь нэмнэ).
Баримт (MkDocs): fr/es/ar locale-ууд mkdocs.yml-д бүртгэгдсэн (цэсний орчуулгатай),
хуудсууд өөрсдөө орчуулагдтал fallback_to_default: true-аар монгол руу унана.
Чанарын дүрэм¶
- Эх сурвалж нь монгол текст; англи нь эхний орчуулга. Бусад хэлийг англиас биш, утга санааг нь ойлгож (монгол эхтэй тулгаж) орчуулна.
- Брэндийн нэр
e-ID Mongoliaорчуулагдахгүй (араб хэлэнд ч латинаар үлдэнэ). - Хууль зүйн нэр томьёо (гэрчилгээ, гарын үсэг, хүчинтэй хугацаа) нь тухайн улсын eIDAS/ PKI-гийн стандарт нэр томьёотой нийцэх ёстой — чөлөөт орчуулга хийхгүй.
- ПИН, QR, NFC, App Attest зэрэг техникийн товчлолыг тухайн хэлний нийтлэг хэлбэрээр.