GH GambleHub

الوصلات البينية المتعددة اللغات والتوطين

1) المبادئ

1. اللغة ليست بشرة. تتغير النصوص والأشكال واتجاه الكتابة والرسوم التوضيحية والكتل القانونية وحتى الملاحة.
2. أولاً المفاتيح، ثم النصوص. هيكل المفاتيح الدلالية والمعلمات - تأتي الترجمات لاحقًا.
3. التلقيح الزائف - قبل الخروج. امسك بالفيضانات والخطوط «المخيطة بشدة» والزاوية المخفية.
4. Folbacks يمكن التنبؤ بها. "ru-UA → ru → en'. لا إخفاقات «هادئة».
5. الأمن. لا يوجد HTML من الترجمة إلى DOM بدون تعقيم ؛ المكونات الموضعية/المسماة فقط.
6. A11y-equivalence. نصوص بديلة، ملصقات أغنية، اختصارات - كل شيء موضعي.


2) استراتيجية محلية

رموز النظام: «language-REGION» (على سبيل المثال، «pt-BR»، «en-GB»).
اختيار الموقع: إعداد → موجز بيانات المستخدمين ؛ احتياطي - الكشف التلقائي عن طريق المتصفح/الجغرافيا (مع تأكيد).
متعدد المناطق: تميز اللغة عن القانون: 'es-Es' ≠' es-MX '(قوانين/مدفوعات/حدود مختلفة).
سلسلة فولباك: واجهة المستخدم هي أقرب لغة ؛ النصوص القانونية - صيغة إقليمية بحتة، وبخلاف ذلك حظر وطلب تأكيد.


3) بنية المعلومات والمحتوى

المجالات الرئيسية: الملاحة، CTA، الأخطاء، النماذج، المطالب، الإخطارات، الرسائل، PDF/اللافتات.
ملحقات النص: + 30-40٪ احتياطي عرض (الألمانية/الفنلندية). تخطيط - مرن (مرن/شبكة).
النغمة/الأسلوب: قاموس العلامة التجارية (المصطلحات، بدون «ترجمة عامية» في الأماكن الحرجة).
الصور/الأيقونات: تجنب النص في الصور ؛ إذا لزم الأمر، احتفظ بنسخ محلية.


4) i18n الهندسة المعمارية

العناصرName

المفاتيح: نطاق. . نية مدفوعات '→'. انسحب. خطأ. insufficient_funds'.
ICU MessageFormat: multiplity, gender, concordance.
الملفات: حسب الموقع والمجالات ('/i18n/{ locale }/{ domain} .json ')، يتم تحميل القطع بكسل.
الخادم/العميل: العرض العالمي، الموقع في ملفات تعريف الارتباط + HTTP-Vary.

مفتاح المثال (وحدة العناية المركزة):
json
{
"betslip": {
"placed": "Ставка на сумму {amount} {currency} принята",
"timeout": "Ожидаем подтверждение… ~{seconds, plural, one {# сек} few {# сек} many {# сек} other {# сек}}"
}
}

5) التنسيق: الأرقام والتواريخ والعملات والوحدات

استخدم 'Intl. ':
js const nf = new Intl.NumberFormat('uk-UA', { style:'currency', currency:'UAH' });
nf.format(2000); // 2 000,00 ₴

const df = new Intl.DateTimeFormat('tr-TR', { dateStyle:'medium', timeStyle:'short' });
df.format(new Date());

const pl = new Intl.PluralRules('ru-RU');

الوحدات الصغيرة: الاحتفاظ بالكميات بالسنتات/الكوبيكات ؛ التنسيق على العميل.
الوقت النسبي: 'إنتل. نسق الوقت النسبي '.
الوحدات: 'إنتل. NumberFormat ({style: 'unit', unity:' meter '})'.
التقويم/الأسبوع: اليوم الأول من الأسبوع وتنسيق التاريخ - حسب الموقع.


6) RTL وتوجيه الكتابة

دعم 'dir =' rtl' لـ 'ar'، 'he'، 'fa' ؛ استخدم "dir =" auto "للمحتوى المخصص.
أيقونات مقلوبة/شيفرون ؛ المرايا الدائرية والسائر.
أرقام/رموز العملات - نوافذ LTR (تجنب فوضى BiDi المختلطة).
خصائص CSS Boolean ("inline-start/end') بدلاً من اليسار/اليمين.


7) النماذج والمدخلات

الأسماء/العناوين: السماح بالفاصلة العليا/التشكيل/الألقاب المزدوجة.
الهواتف: تخزين E.164 ؛ أقنعة - ناعمة، مع إدراج الدعم.
نماذج العناوين: النظام الميداني حسب البلد ؛ فهرس/حالة قد تكون مفقودة.
لوحات المفاتيح: «inputmode»، «autocloxete» صحيحة للموقع.
العناصر الفرعية: أمثلة باللغة/الشكل المحلي.


8) التوطين الزائف والاختبار

استبدل الخطوط تلقائيًا بـ "【" 】 "+ تمديد" + + + "(~ 35٪).
قم بتضمين المحور الزائف في مجموعة التطوير باسم "qps-ploc'.
لقطات شاشة مع سياق للمترجمين: تسليط الضوء على العناصر الإضافية والنصوص الطويلة.
الاختبار: الزركشة، الوصلات، الفيضانات، الأوتار «الصلبة»، RTL.


9) الإخطارات والرسائل والنماذج

نموذج الحرف والموضوع - لكل موقع ؛ نصوص وتصميمات منفصلة.
التواريخ/المبالغ في الموضوع - يتم تنسيقها حسب الموقع.
روابط إشعارات التكوين دائمًا بلغة الحرف.
الرسائل القصيرة: قصيرة، بدون اقتباسات متعددة ؛ UTM - لا توطين.


10) السلامة والموثوقية

لا تفسر الترجمة أبدًا على أنها HTML، استخدم إدخالات آمنة.
المساعدون - البيانات فقط، وليس الترميز.
لا يتم تصنيف السجلات/المقاييس، ولكن مع وجود مكان لمشاكل التعقب.
Folback عندما لا يكون ملف الترجمة متاحًا - «هادئ» (أظهر الإنجليزية + القياس عن بعد).


11) الأداء

أجزاء من عمليات النقل حسب الطرق/المجالات ؛ التحميل المسبق للتكرار.
Кеш CDN с 'ETag '/' Cache-Control'.
تجنب المراجعين عند تغيير المواقع - سياق i18n مع المذكرات.


12) تفاصيل iGaming

إخلاء المسؤولية واللعب المسؤول: تعتمد الصياغة على البلد (18 +/21 +، السلطات التنظيمية، خطوط المساعدة).
KYC/AML: الشروط الصحيحة قانونًا (على سبيل المثال، «مصدر الأموال»، «المالك المستفيد»)، خيارات الحالة/الولادة.
طرق الدفع: الأسماء المحلية (PIX و Papara و SEPA) والشروط (ETA/Comments) - فقط حسب المنطقة.
المعاملات والشكل: «الفاصلة العشرية/الجزئية/الأمريكية» - التفسيرات المحلية والمثال.
النصوص القانونية: صيغ إقليمية لم تتغير ؛ منع الناس من دخول ولاية قضائية أخرى.


13) رموز نظام التصميم (مثال)

json
{
"i18n": {
"fallback": ["en"],
"rtl": ["ar", "he", "fa"],
"textExpansionPct": 0.35,
"screenshotHints": true
},
"typography": {
"lineHeight": { "ui": 1.4, "dense": 1.3 },
"hyphens": "auto",
"tabularNums": true
},
"layout": {
"minLabelWidth": 96,
"gap": { "sm": 8, "md": 12, "lg": 16 }
},
"a11y": {
"ariaMirroring": true,
"altTranslate": true,
"contrastAA": true
}
}

14) مقتطفات

رد + i18next (حذاء كسول، وحدة العناية المركزة):
ts import i18n from 'i18next';
import ICU from 'i18next-icu';
import { initReactI18next } from 'react-i18next';

i18n.use(ICU).use(initReactI18next).init({
lng: 'uk-UA',
fallbackLng: ['ru', 'en'],
load: 'languageOnly',
interpolation: { escapeValue: false },
resources: {} // пусто — грузим лениво
});

export async function loadNamespace(ns: string, lng = i18n.language){
const mod = await import(`/i18n/${lng}/${ns}.json`);
i18n.addResourceBundle(lng, ns, mod.default, true, true);
}
تعدد وحدة العناية المركزة (rus/ukr):
json
{
"notifications": "{count, plural, one {# уведомление} few {# уведомления} many {# уведомлений} other {# уведомления}}"
}
Intl للعملات/التواريخ:
js const money = (v, c, l) => new Intl.NumberFormat(l, {style:'currency', currency:c}).format(v/100);
const rel = (v, unit, l) => new Intl.RelativeTimeFormat(l, {numeric:'auto'}).format(v, unit);
// money(250000,'EUR','de-DE') → 2.500,00 €
فئة RTL في الجذر:
js const rtl = new Set(['ar','he','fa']);
document.documentElement.dir = rtl.has(locale.split('-')[0])? 'rtl': 'ltr';
Speudolocal (dev):
js const pseudo = s => s.replace(/[aAeEiIoOuU]/g, m => ({a:'à',e:'ê',i:'ï',o:'ô',u:'û'}[m.toLowerCase()]        m)).replace(/([^\s])/g,'$1\u0301');

15) فارغ/خطأ/تحلل رمادي

لا توجد ترجمة رئيسية: نعرض اللغة الإنجليزية + log «مفقود _ مفتاح».
No locale file: folback and banner «Part of the interface in English».
نص طويل جدًا: متعدد السطور، «مشبك الخط» في مكانه، تلميح مع نص كامل.


16) المقاييس ومراقبة الجودة

النسبة المئوية للتغطية حسب المفتاح/الموقع (الهدف ≥ 98 في المائة).
وقت الترجمة (TTT) للإصدارات الجديدة.
معدل الخطأ L10n: قصاصات بصرية، عيوب RTL، تنسيقات خاطئة.
سهولة القراءة (مسح ذاتي) و NPS لكل مكان.
التصديق القانوني حسب المنطقة (قائمة الامتثال المرجعية).


17) أنتيباترن

تركيب الأوتار في الكود («ربحت» + كمية + «!») - يكسر القواعد.
النص في الصور/الأيقونات بدون نسخ محلية.
عرض صلب للغة الإنجليزية.
الاستعاضة عن قانون البلد بلغة (استخدام "es-Es' للمكسيك).
ترجمة HTML من CMS بدون مرافق صحية.
نفس المفتاح بمعاني مختلفة في أماكن مختلفة.


18) قائمة QA المرجعية

الخطوط والمفاتيح

  • العناصر الفرعية المسماة ؛ لا يوجد اختصار.
  • تعدد/جنس وحدة العناية المركزة عند الحاجة.
  • تعمل سلسلة Folback.

التصميم والتوافر

  • هامش العرض + 30-40٪ ؛ «مشبك الخط»، تغليف الكلمات.
  • تم تحديد مواقع بطاقات Alt/Aria.
  • RTL تعكس الرموز/الملاحة ؛ الأرقام مقروءة.

تنسيقات

  • التواريخ/العملات عبر Intl. '; من الوحدات الثانوية.
  • العنوان/الهاتف/الاسم - قواعد البلد المرنة.

السلامة/الأداء

  • الترجمات لا تنفذ HTML ؛ استثناء XSS.
  • قطع كسولة، مخبأ CDN، بدون مراجعين غير ضروريين.

تفاصيل iGaming

  • Disclaimers/18 +/خطوط المساعدة - حسب الولاية القضائية.
  • تم التوفيق بين نصوص KYC/AML قانونًا.
  • أسماء الدفع/اتفاقيات إيتا/الرسوم - المحلية.

19) التوثيق في نظام التصميم

Разделы: i18n Tokens، Guides (ICU/Plural/RTL)، Patterns (Emails/SMS/Toasts)، Legal Strings لكل منطقة.
الأدوات: البؤرة الزائفة، لقطة شاشة للشاشات، تقرير تغطية، بطانة رئيسية.
العملية: مسرد، ذاكرة الترجمة، لقطات الشاشة السياقية، مراجعة من قبل متحدث أصلي.


موجز

واجهة المستخدم المتعددة اللغات هي عمل منهجي على مستوى الهندسة المعمارية والتصميم والمحتوى والقانون. تنظيم المفاتيح والظهور، واستخدام وحدة العناية المركزة و 'Intl'، ودعم RTL، وتشغيل موقع زائف مسبقًا وضمان الصواب القانوني للصياغة الإقليمية. بعد ذلك، سيشعر المنتج بأنه موطنه الأصلي - من المعاملات والمدفوعات إلى الرسائل والمساعدة - في كل بلد ولكل مستخدم.

Contact

اتصل بنا

تواصل معنا لأي أسئلة أو دعم.نحن دائمًا جاهزون لمساعدتكم!

بدء التكامل

البريد الإلكتروني — إلزامي. تيليغرام أو واتساب — اختياري.

اسمك اختياري
البريد الإلكتروني اختياري
الموضوع اختياري
الرسالة اختياري
Telegram اختياري
@
إذا ذكرت تيليغرام — سنرد عليك هناك أيضًا بالإضافة إلى البريد الإلكتروني.
WhatsApp اختياري
الصيغة: رمز الدولة + الرقم (مثال: +971XXXXXXXXX).

بالنقر على الزر، فإنك توافق على معالجة بياناتك.