التعدّد اللغوي (i18n)¶
تُقدَّم منتجات المنظومة ووثائقها بعدّة لغات. وتشرح هذه الصفحة السياسة اللغوية وطريقة تنفيذها تقنيًا.
السياسة اللغوية¶
| المستوى | اللغات |
|---|---|
| إلزامي | Монгол (mn) · English (en) |
| للمنتجات الرئيسة | + 中文 (zh) · Русский (ru) |
| لوثائق مستوى المنظومة | المنغولية + اللغات الرسمية الست للأمم المتحدة |
المنغولية هي لغة المصدر: يُكتب النص الأصلي بالمنغولية ثم يُترجَم إلى غيرها.
واللغات الرسمية الست للأمم المتحدة هي: العربية (ar) · 中文 (zh) · English
(en) · Français (fr) · Русский (ru) · Español (es). ويُقدَّم هذا الموقع
(وثائق مستوى المنظومة) بالمنغولية إضافةً إلى تلك الست — أي بسبع لغات
إجمالًا.
لماذا هذه اللغات تحديدًا؟
قرّاء وثائق مستوى المنظومة ليسوا المطوّرين الداخليين وحدهم؛ فمنهم شركاء دوليون وجهات مانحة وهيئات تقييس ومتكاملون من الخارج. ولغات الأمم المتحدة الست تحقّق أوسع انتشار عالمي، وهي خيار محايد لا يمنح أفضلية لبلد بعينه.
أمّا الوثائق التقنية المعمّقة لمنصّة بعينها (مخطّطات نقاط النهاية ومرجع حِزَم SDK) فخارج نطاق هذه السياسة؛ إذ تبقى بالمنغولية والإنجليزية داخل مستودعها.
التعدّد اللغوي في المنتجات¶
تحدّد التطبيقات لغة المستخدم بالترتيب الآتي:
- إعداد المستخدم نفسه (المحفوظ في ملفه الشخصي)،
- ترويسة
Accept-Languageفي المتصفّح، - اللغة الافتراضية (
mn).
ويجيب المساعد الذكي بلغة المستخدم — باللغة التي ورد بها السؤال.
طبقتا القاموس¶
يقع القاموس في موضعين، وفهم الحدّ بينهما أمر مهم:
| القاموس | أين | الحجم |
|---|---|---|
| المشترك — الدخول والقوائم والإدارة وeID | @gerege/ui-core |
846 مفتاحًا × 7 لغات |
| الخاص بالمنصّة — مصطلحات مجالها | lib/<platform>I18n.ts |
يختلف من منصّة إلى أخرى، وغالبًا 2–4 لغات |
القاعدة: القاموس المشترك لا يعرف إلّا السطح المشترك. أمّا مفردات IBAN وكشوف الحساب في المحفظة، وكتالوج API في بوّابة المطوّرين، ومصطلحات عمليات الأعمال في Ring — فمكانها قاموس التطبيق نفسه.
والسبب هو الكلفة: لو وُضعت مصطلحات Ring الـ1,104 في القاموس المشترك لحملها kiosk وPOS والمحفظة جميعًا، ومع كلّ لغة تُضاف تتضاعف تلك الكلفة سبع مرّات.
ويرتدّ قاموس المنصّة إلى الإنجليزية في اللغات غير المترجَمة — ولذلك يمكن أن تكون الواجهة بسبع لغات بينما يبقى النصّ التسويقي ومصطلحات المجال بلغات أقلّ.
لغة الواجهة ≠ لغة المحتوى
توسيع القاموس من أربع لغات إلى سبع كسر كلّ موضع كُتب فيه Record<Lang, …>:
النصّ التسويقي في صفحة landing، وشروح كتالوج API — فهذه يكتبها بشر، ولا
تتوسّع كما تتوسّع الواجهة. وفي مثل هذه المواضع يُعلَن عن مجموعة اللغات
صراحةً، مثل LANDING_LANGS.
التعدّد اللغوي في الوثائق¶
يستخدم موقع وثائق كل مستودع MkDocs Material مع
mkdocs-static-i18n.
بنية اللاحقة¶
تُنجَز الترجمة بإضافة رمز اللغة إلى اسم الملف:
docs/
├── index.md ← Монгол (default)
├── index.ar.md ← العربية
├── index.zh.md ← 中文
├── index.en.md ← English
├── index.fr.md ← Français
├── index.ru.md ← Русский
└── index.es.md ← Español
الإعداد:
plugins:
- i18n:
docs_structure: suffix
fallback_to_default: true
reconfigure_material: true
reconfigure_search: true
languages:
- locale: mn
default: true
name: Монгол
build: true
- locale: en
name: English
build: true
- locale: ar
name: العربية
build: true
# … zh · fr · ru · es likewise
وتُبنى اللغة الافتراضية في جذر الموقع (/)، أمّا البقية فتحت مسارات فرعية
(/en/ و/ar/ و/zh/ و/fr/ و/ru/ و/es/).
الارتداد إلى الأصل (fallback)¶
fallback_to_default: true — تعرض الصفحةُ غير المترجَمة محتواها باللغة
الافتراضية. وعليه يبقى الموقع كاملًا حتى مع نقص الترجمات، ولا يظهر خطأ
404.
وهذا خيار عملي: فالوثائق تنمو باستمرار والترجمة تتأخّر خلفها. والانتظار حتى تُترجَم كل الصفحات دفعةً واحدة يعادل عدم نشر الوثائق أصلًا.
ترجمة قوائم التنقّل¶
عناوين القائمة ليست في محتوى الصفحات بل في mkdocs.yml، ولذلك تُترجَم على حدة
لكل لغة:
- locale: en
nav_translations:
Архитектур: Architecture
Платформууд: Platforms
- locale: ar
nav_translations:
Архитектур: البنية المعمارية
Платформууд: المنصّات
فإن أضفت صفحة ونسيت إدراج مدخلها في nav_translations للغات الست جميعًا،
ظلّ ذلك العنوان بالمنغولية — ولا يفشل البناء، فلا يُكتشف الأمر إلّا بالعين.
الكتابة من اليمين إلى اليسار (RTL)¶
العربية تُقرأ من اليمين إلى اليسار. ويتعرّف Material على لغة ar فيضع
<html dir="rtl"> ويقلب من تلقاء نفسه اتّجاه القائمة والعناوين وتدفّق الجداول —
ولا حاجة إلى ضبط direction على حدة.
غير أنّ كتل الشيفرة والمخطّطات النصّية تبقى من اليسار إلى اليمين حتى في وضع RTL. وهذا هو الصواب: فالترميز التقني (الروابط والأوامر وYAML) يفسد معناه إن عُكس اتّجاهه.
مراسي العناوين المكتوبة بالكيريلية¶
أداة slugify القياسية تُسقط الحروف الكيريلية
تحذف أداة slugify الافتراضية في امتداد toc بـ Python-Markdown المحارف
غير اللاتينية. ولذلك يحصل العنوان ## Танилт على id فارغ، فيتعطّل
الرابط الداخلي (#танилт).
والحل استعمال slugify تحافظ على اليونيكود:
وهذا الموقع مضبوط على النحو نفسه.
ترتيب الترجمة¶
عند إضافة وثيقة جديدة:
- اكتب النص الأصلي بالمنغولية — فالمصدر منغولي دائمًا.
- ثبّت النسخة المنغولية ببناء صارم (تُفحَص الروابط والمراسي).
- ثمّ ترجم إلى اللغات الست دفعةً واحدة. فترجمة الصفحة على نحوٍ جزئي تُباعد بين اللغات.
أنجز الصفحة الواحدة بكل اللغات
العمل صفحةً صفحة أفضل من العمل لغةً لغة: فتحويل الوثيقة الواحدة إلى ست لغات في آنٍ واحد يُبقي المصطلحات والبنية وصفوف الجداول متطابقة. أمّا العكس — «الإنجليزية أولًا لكل الصفحات» — فيجعل اللغات المترجَمة لاحقًا تلاحق نصًّا أصليًا تغيّر بالفعل.
ما يُترجَم وما لا يُترجَم¶
| يُترجَم | يُترك كما هو |
|---|---|
| النص الجاري والعناوين وقيم الجداول | أسماء النطاقات (sso.gerege.mn) |
| الشروح والتحذيرات والنصائح | أسماء المستودعات (template-gerege-mn) |
| الملصقات التوضيحية داخل المخطّطات | الشيفرة وYAML والأوامر ومسارات نقاط النهاية |
| رؤوس الجداول | أسماء المنتجات (eID Mongolia وG-Sign) |
| نصوص شارات الحالة | أسماء المعايير (OIDC وPKCE وRFC 3161) |
ولا تُترجَم أسماء الملفات ولا بنية المجلّدات أبدًا — فهي
platforms/sso.ru.md لا платформы/sso.md. وبذلك يبقى مسار الرابط ثابتًا عند
التنقّل بين اللغات، وتظلّ الروابط العميقة عاملة.
حالة هذا الموقع¶
جميع صفحات وثائق مستوى المنظومة جاهزة بسبع لغات:
| اللغة (locale) | الاسم | المسار | الحالة |
|---|---|---|---|
mn |
Монгол (الافتراضية) | / |
✅ مكتملة |
ar |
العربية | /ar/ |
✅ مكتملة |
zh |
中文 | /zh/ |
✅ مكتملة |
en |
English | /en/ |
✅ مكتملة |
fr |
Français | /fr/ |
✅ مكتملة |
ru |
Русский | /ru/ |
✅ مكتملة |
es |
Español | /es/ |
✅ مكتملة |
ويبقى fallback_to_default مُفعَّلًا: فمتى أُضيفت صفحة جديدة وتأخّرت ترجمتها،
عرضت تلك الصفحة الأصلَ المنغولي وظلّ الموقع كاملًا.
وإن لاحظت خطأً أو صياغةً غير موفَّقة فأرسل طلب دمج إلى المستودع — راجع منصّة هذه الوثائق.