> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# الترجمة والتوطين

> شغّل نشرًا قائمًا على Kubernetes بلغة واحدة، أو بعدة لغات لكلٍّ منها نطاقها الفرعي الخاص.

تختار خدمة **web** لغة الواجهة بناءً على الإعدادات أدناه، لكل طلب على حدة، وفقًا لاسم المضيف الذي استخدمه المتصفح. اللغات والإعدادات موضّحة في [الترجمة والتوطين](https://ayakaleaf-pro.mintlify.site/ar/on-premises/configuration/overleaf-toolkit/localization.md).

| | |
| - | - |
| الخدمة | web، في كل pod من Ayakaleaf Pro؛ تُقرأ عند بدء تشغيل web |
| الشبكة | اسم مضيف واحد لكل لغة، وكلها موجّهة إلى Ayakaleaf Pro |
| المهام الدورية | لا شيء |

### لغة واحدة

```yaml theme={null}
  OVERLEAF_SITE_LANGUAGE: zh-CN
```

```bash theme={null}
kubectl apply -f 30-config.yaml
kubectl -n overleaf rollout restart deployment/overleaf     # or statefulset/overleaf
```

### عدة لغات على نطاقات فرعية

**1. وجّه مضيف كل لغة إلى Ayakaleaf Pro**

أضف اسم DNS لكل لغة ووجّهها جميعًا إلى Ayakaleaf Pro مع شهادة تغطيها كلها، على سبيل المثال `*.example.com`. يجب أن يمرّر الـ ingress أو موازن الأحمال لديك ترويسة `Host` دون تغيير، وهو ما يفعله ingress-nginx وHAProxy افتراضيًا.

يجب أن يصل المستخدمون إلى مضيفات اللغات عبر المنافذ القياسية (`https://cn.example.com`، وليس `https://cn.example.com:30443`): إذ يقارن Ayakaleaf Pro اسم المضيف دون المنفذ.

**2. ConfigMap**

```yaml title="30-config.yaml (additions)" wrap theme={null}
  OVERLEAF_SITE_URL: https://www.example.com
  COOKIE_DOMAIN: .example.com
  OVERLEAF_LANG_DOMAIN_MAPPING: '{"www": {"lngCode": "en", "url": "https://www.example.com"}, "cn": {"lngCode": "zh-CN", "url": "https://cn.example.com"}}'
```

يتيح `COOKIE_DOMAIN` لملف تعريف ارتباط تسجيل الدخول أن يعمل على مضيف كل لغة. ضع JSON بين علامتي اقتباس مفردتين. يؤدي JSON غير الصالح في `OVERLEAF_LANG_DOMAIN_MAPPING` إلى إيقاف كل خدمات الـ pod عند بدء التشغيل، لذا تحقّق باستخدام `kubectl -n overleaf get pod` بعد إعادة التشغيل.

### عدة نسخ متماثلة

تُحدَّد اللغة من اسم المضيف في كل طلب، لذا فهي لا تعتمد على النسخة المتماثلة (replica). يُضبط ملف تعريف الارتباط الثابت (sticky cookie) الخاص بموازن الأحمال لكل اسم مضيف ما لم تحدّد له نطاقًا، لذا قد يؤدي تبديل اللغة إلى نقل المستخدم إلى نسخة متماثلة أخرى؛ لكن جلسته محفوظة في Redis وتبقى صالحة.

### الاختبار على Kubernetes

على Kubernetes 1.37 خلف HAProxy، مع `OVERLEAF_LANG_DOMAIN_MAPPING` الذي يربط مضيف الموقع بالإنجليزية، ومضيف `de.` بالألمانية، ومضيف `fr.` مع منفذ NodePort ‏`:30081` بالفرنسية: عرض مضيف الموقع الإنجليزية، ومضيف `de.` الألمانية، بينما عاد مضيف `fr.` مع المنفذ إلى الإنجليزية، كما هو موضّح أعلاه.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.