التدويل (i18n)
ما هو
ManpowerIQ ثنائية اللغة إنجليزي / عربي من طرف إلى طرف: تُحلِّل الواجهة الخلفية رسائل الخطأ والتحقّق محليًا عبر موارد resx، وتُحلِّل الواجهة الأمامية سلاسل الواجهة محليًا عبر i18next مع دعم من اليمين إلى اليسار (RTL)، وتُخزَّن بيانات النطاق المُوجَّهة للمستخدم في أعمدة ثنائية اللغة مزدوجة.
لماذا بُني بهذه الطريقة
تستهدف المنصة الموانئ والمحطات في المناطق الناطقة بالعربية، فالعربية لغة من الدرجة الأولى، لا ترجمة مُلصَقة. احتاج ثلاث مخاوف منفصلة كلٌّ إلى موطن: رسائل النظام (الواجهة الخلفية)، وزينة الواجهة (الواجهة الأمامية)، وبيانات العمل (قاعدة البيانات). تخزين الأسماء في أعمدة *_1_English / *_2_Arabic مخصّصة — بدلًا من جدول ترجمة جانبي — يُبقي القيمة ثنائية اللغة ملحقةً بالصف وقابلةً للاستعلام مباشرةً.
كيف يعمل
flowchart LR
subgraph BE[Backend · .NET]
RESX[ErrorMessages.resx<br/>ErrorMessages.ar.resx]
LOC[IStringLocalizer]
RL[RequestLocalization en/ar]
end
subgraph DATA[Database]
COLS[Name_1_English / Name_2_Arabic<br/>Description_1_English / _2_Arabic]
end
subgraph FE[Frontend · React]
I18N[i18next · locales/en.json]
RTL[RTL layout · عربي toggle]
end
RL --> LOC --> RESX
FE -->|Accept-Language| RL
DATA -->|both names in payload| FE
- رسائل الواجهة الخلفية — موارد resx
ErrorMessages.resx(افتراضي/إنجليزي) وErrorMessages.ar.resx(عربي) تحتApplication/Resources/، مُحلَّلة عبرIStringLocalizer. يسجّل الـ API توطين الطلب لـen/ar(الورقة 01 edge-cases،Program.cs:468-474). - أعمدة البيانات ثنائية اللغة — تستخدم الأسماء المُوجَّهة للمستخدم
Name_1_English/Name_2_Arabic(وDescription_1_English/Description_2_Arabic) على الكيانات في أنحاء النموذج؛ وحتى بذرة الصلاحيات تتضمّن أسماء عربية (الورقة 01 §entities + edge-cases). الاصطلاح عام — تحمل كلٌّ من القوائم المرجعية وكيانات المستأجر الأعمدة المزدوجة (الورقة 03 §entities). - الواجهة الأمامية — i18next مع حزمة بيانات مرجعية
en، وتخطيط RTL يُبدَّل بعنصر تحكّمعربي(مُتحقَّق منه أثناء التقاط لقطات شاشة الواجهة). يرسل تطبيق الويب تفضيل اللغة فترجع رسائل الواجهة الخلفية مُوطَّنة.
اصطلاح تسمية المفاتيح التفصيلي لمفاتيح resx (<Entity>.{Referenced.*, Validation.*, IsSystem.*}) مُغطّى في قسم الاصطلاحات — انظر مفاتيح i18n للواجهة الخلفية.
مزالق / قيود
- عمودا اسم، لا واحد. يجب أن تحمل قراءات وكتابات كيان مُوجَّه للمستخدم كلًّا من
Name_1_EnglishوName_2_Arabic؛ لا تطوِها إلىnameواحد. - تتفاعل مرشحات الفرادة للحذف الناعم مع الرموز ثنائية اللغة — الفرادة على
code، لا على الأسماء المُوطَّنة. - RTL مخاوف تخطيط، تُعالَج في الواجهة الأمامية؛ تُرجِع الواجهة الخلفية ببساطة السلاسل العربية. لا يوجد بناء عربي منفصل للـ API.
- محتوى ويكي العربي مسار مختلف. يملك موقع MkDocs بيانات مرجعية عربية مُهيكلة (مكوّن
i18n، كعبar) لكن صفحات الويكي المُترجَمة مرحلة لاحقة — متميّزة عن i18n المنتج الموصوف هنا.
حالة البناء
Available — توطين resx للواجهة الخلفية (en/ar) + IStringLocalizer + توطين الطلب؛ i18next + RTL للواجهة الأمامية؛ أعمدة بيانات ثنائية اللغة عبر النموذج. مُتحقَّق منه LIVE (الورقة 01 §build-status + edge-cases).
ذات صلة
- be-i18n-keys (الاصطلاحات، Batch C) — اصطلاح تسمية مفاتيح resx.
- نظرة عامة على البنية
- أوراق الحقائق: 01 (الأساس)، 03 (سجل الموظف الرئيسي — أعمدة ثنائية اللغة).