انتقل إلى المحتوى

Олон хэлний дэмжлэг (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.ymlplugins.i18n.languages docs/<NAME>.<locale>.md 19 файл × хэл

Шинэ хэл нэмэх дараалал

  1. Хэлний тоочилтод нэмнэ (дээрх "Хэлний тодорхойлолт" багана): код, эх нэр (Français — англи нэр биш), богино шошго, BCP-47 locale (огноо/тоо форматад).
  2. Каталогen толийг эх болгож бүх түлхүүрийг орчуулна. Дутуу түлхүүр байвал апп нь mn (эсвэл en) руу унана — дуусаагүй хэл нь эвдрэлгүй ч ХОЛИМОГ харагдана.
  3. Хэл сэлгүүр (header/тохиргоо) — шинэ хэл автоматаар гарна (CaseIterable / LOCALES).
  4. Арабын хувьд RTL — доорх хэсгийг үз.
  5. Баримт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 зэрэг техникийн товчлолыг тухайн хэлний нийтлэг хэлбэрээр.