Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for Arabic language in i18n configuration and documentation. #2316

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion app/frontend/src/i18n/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import jaTranslation from "../locales/ja/translation.json";
import nlTranslation from "../locales/nl/translation.json";
import ptBRTranslation from "../locales/ptBR/translation.json";
import trTranslation from "../locales/tr/translation.json";
import arTranslation from "../locales/ar/translation.json";

export const supportedLngs: { [key: string]: { name: string; locale: string } } = {
da: {
Expand Down Expand Up @@ -44,6 +45,10 @@ export const supportedLngs: { [key: string]: { name: string; locale: string } }
tr: {
name: "Türkçe",
locale: "tr-TR"
},
ar: {
name: "العربية",
locale: "ar-AR"
}
};

Expand All @@ -62,7 +67,8 @@ i18next
ja: { translation: jaTranslation },
nl: { translation: nlTranslation },
ptBR: { translation: ptBRTranslation },
tr: { translation: trTranslation }
tr: { translation: trTranslation },
ar: { translation: arTranslation }
},
fallbackLng: "en",
supportedLngs: Object.keys(supportedLngs),
Expand Down
140 changes: 140 additions & 0 deletions app/frontend/src/locales/ar/translation.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
{
"pageTitle": "أزور أوبن أي آي + بحث الذكاء الاصطناعي",
"headerTitle": "أزور أوبن أي آي + بحث الذكاء الاصطناعي",
"chat": "دردشة",
"qa": "اطرح سؤالاً",
"login": "تسجيل الدخول",
"logout": "تسجيل الخروج",
"clearChat": "مسح الدردشة",
"history": {
"chatHistory": "سجل الدردشة",
"openChatHistory": "فتح سجل الدردشة",
"noHistory": "لا يوجد سجل دردشة",
"deleteModalTitle": "حذف سجل الدردشة",
"deleteModalDescription": "لا يمكن التراجع عن هذا الإجراء. هل تريد حذف سجل الدردشة؟",
"deleteLabel": "حذف",
"cancelLabel": "إلغاء",
"today": "اليوم",
"yesterday": "أمس",
"last7days": "آخر 7 أيام",
"last30days": "آخر 30 يومًا"
},
"upload": {
"fileLabel": "رفع ملف:",
"uploadedFilesLabel": "الملفات المرفوعة سابقاً:",
"noFilesUploaded": "لم يتم رفع أي ملفات بعد",
"loading": "جار التحميل...",
"manageFileUploads": "إدارة رفع الملفات",
"uploadingFiles": "جاري رفع الملفات...",
"uploadedFileError": "خطأ في رفع الملف - يرجى المحاولة مرة أخرى أو الاتصال بالمسؤول.",
"deleteFile": "حذف الملف",
"deletingFile": "جار حذف الملف...",
"errorDeleting": "خطأ في الحذف.",
"fileDeleted": "تم حذف الملف"
},
"developerSettings": "إعدادات المطور",
"chatEmptyStateTitle": "دردش مع بياناتك",
"chatEmptyStateSubtitle": "اطرح أي سؤال أو جرب مثالاً",
"defaultExamples": {
"1": "ما الذي يتضمنه خطة Northwind Health Plus الخاصة بي والذي لا يتضمنه الخطة القياسية؟",
"2": "ماذا يحدث خلال تقييم الأداء؟",
"3": "ما الذي يقوم به مدير المنتج؟",
"placeholder": "اكتب سؤالاً جديداً (مثلاً: هل تغطي خطتي فحوصات العين السنوية؟)"
},
"askTitle": "اطرح على بياناتك",
"gpt4vExamples": {
"1": "قارن بين تأثير أسعار الفائدة والناتج المحلي الإجمالي في الأسواق المالية.",
"2": "ما هو الاتجاه المتوقع لمؤشر S&P 500 خلال السنوات الخمس القادمة؟ قارن ذلك بالأداء السابق للمؤشر.",
"3": "هل يمكنك تحديد أي علاقة بين أسعار النفط واتجاهات سوق الأسهم؟",
"placeholder": "مثال: هل تغطي خطتي فحوصات العين السنوية؟"
},
"generatingAnswer": "جاري توليد الإجابة",
"citationWithColon": "الاقتباس:",
"followupQuestions": "أسئلة متابعة:",
"tooltips": {
"submitQuestion": "إرسال السؤال",
"askWithVoice": "اطرح السؤال بالصوت",
"stopRecording": "إيقاف تسجيل السؤال",
"showThoughtProcess": "عرض مسار التفكير",
"showSupportingContent": "عرض المحتوى الداعم",
"speakAnswer": "نطق الإجابة",
"info": "معلومات",
"save": "حفظ",
"copy": "نسخ",
"copied": "تم النسخ!"
},
"headerTexts": {
"thoughtProcess": "مسار التفكير",
"supportingContent": "المحتوى الداعم",
"citation": "الاقتباس"
},
"labels": {
"toggleMenu": "تبديل القائمة",
"languagePicker": "اختر لغتك",
"headerText": "تكوين توليد الإجابة",
"closeButton": "إغلاق",
"promptTemplate": "تجاوز قالب التعليمات",
"temperature": "درجة الحرارة",
"seed": "البذرة",
"minimumSearchScore": "الحد الأدنى لنقاط البحث",
"minimumRerankerScore": "الحد الأدنى لنقاط إعادة الترتيب",
"retrieveCount": "استرجاع هذا العدد من نتائج البحث:",
"includeCategory": "تضمين الفئة",
"includeCategoryOptions": {
"all": "الكل"
},
"excludeCategory": "استبعاد الفئة",
"useSemanticRanker": "استخدام مصنف دلالي للاسترجاع",
"useSemanticCaptions": "استخدام التسميات الدلالية",
"useSuggestFollowupQuestions": "اقتراح أسئلة متابعة",
"useGPT4V": "استخدام نموذج رؤية GPT",
"gpt4VInput": {
"label": "مدخلات نموذج رؤية GPT",
"options": {
"textAndImages": "صور ونصوص",
"images": "صور",
"texts": "نصوص"
}
},
"retrievalMode": {
"label": "وضع الاسترجاع",
"options": {
"hybrid": "المتجهات + النص (هجين)",
"vectors": "المتجهات",
"texts": "النصوص"
}
},
"vector": {
"label": "حقول المتجهات (بحث متعدد الاستعلامات)",
"options": {
"embedding": "تضمينات النص",
"imageEmbedding": "تضمينات الصور",
"both": "تضمينات النص والصورة"
}
},
"useOidSecurityFilter": "استخدام مرشح أمان OID",
"useGroupsSecurityFilter": "استخدام مرشح أمان المجموعات",
"shouldStream": "بث استجابات إكمال الدردشة"
},
"helpTexts": {
"promptTemplate": "يتجاوز القالب المستخدم لتوليد الإجابة استناداً إلى السؤال ونتائج البحث. لإضافة إلى القالب الحالي بدلاً من استبداله بالكامل، ابدأ نصك بـ '>>>'.",
"temperature": "يضبط درجة حرارة الطلب للنموذج اللغوي الذي يولد الإجابة. درجات الحرارة الأعلى تؤدي إلى إجابات أكثر إبداعاً، لكنها قد تكون أقل واقعية.",
"seed": "يضبط قيمة بذرة لتحسين قابلية تكرار استجابات النموذج. يمكن أن تكون البذرة أي رقم صحيح.",
"searchScore": "يضبط الحد الأدنى للنقاط لنتائج البحث القادمة من بحث Azure AI. يعتمد نطاق النقاط على ما إذا كنت تستخدم الوضع الهجين (افتراضي)، المتجهات فقط، أو النصوص فقط.",
"rerankerScore": "يضبط الحد الأدنى للنقاط لنتائج البحث القادمة من معيد الترتيب الدلالي. تتراوح النقاط دائماً بين 0-4. كلما ارتفعت النقاط، زادت الصلة الدلالية للنتيجة بالسؤال.",
"retrieveNumber": "يضبط عدد نتائج البحث التي سيتم استرجاعها من بحث Azure AI. قد تزيد النتائج الإضافية من احتمالية العثور على الإجابة الصحيحة، لكنها قد تؤدي إلى تشتت النموذج.",
"includeCategory": "يحدد فئة لتضمينها في نتائج البحث. لا توجد فئات مستخدمة في مجموعة البيانات الافتراضية.",
"excludeCategory": "يحدد فئة لاستبعادها من نتائج البحث. لا توجد فئات مستخدمة في مجموعة البيانات الافتراضية.",
"useSemanticReranker": "يُمكّن مصنف البحث الدلالي من Azure AI، وهو نموذج يعيد ترتيب نتائج البحث بناءً على التشابه الدلالي مع استعلام المستخدم.",
"useSemanticCaptions": "يرسل تسميات دلالية إلى النموذج اللغوي بدلاً من نتيجة البحث الكاملة. يتم استخراج التسمية الدلالية من نتيجة البحث أثناء عملية الترتيب الدلالي.",
"suggestFollowupQuestions": "يطلب من النموذج اللغوي اقتراح أسئلة متابعة بناءً على استعلام المستخدم.",
"useGPT4Vision": "يستخدم GPT-4-Turbo مع الرؤية لتوليد إجابات استناداً إلى الصور والنصوص من الفهرس.",
"vectorFields": "يحدد حقول التضمين التي سيتم البحث فيها في فهرس بحث Azure AI، سواء كانت تضمينات 'الصور والنصوص' أو 'الصور' فقط أو 'النصوص' فقط.",
"gpt4VisionInputs": "يضبط ما سيتم إرساله إلى نموذج الرؤية. 'الصور والنصوص' يرسل الصور والنصوص معاً إلى النموذج، 'الصور' يرسل الصور فقط، و 'النصوص' يرسل النصوص فقط.",
"retrievalMode": "يضبط وضع الاسترجاع لاستعلام بحث Azure AI. يستخدم 'المتجهات + النص (هجين)' مزيجاً من البحث بالمتجهات والبحث النصي الكامل، بينما يستخدم 'المتجهات' البحث بالمتجهات فقط، و'النص' يستخدم البحث النصي الكامل فقط. الوضع الهجين هو الأمثل عمومًا.",
"streamChat": "يبث الاستجابة بشكل مستمر إلى واجهة الدردشة أثناء توليدها.",
"useOidSecurityFilter": "تصفية نتائج البحث بناءً على معرف OID للمستخدم المصادق عليه.",
"useGroupsSecurityFilter": "تصفية نتائج البحث بناءً على مجموعات المستخدم المصادق عليه."
}
}

2 changes: 1 addition & 1 deletion docs/deploy_features.md
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ When both the browser-stored and Cosmos DB options are enabled, Cosmos DB will t

## Enabling language picker

You can optionally enable the language picker to allow users to switch between different languages. Currently, it supports English, Spanish, French, and Japanese.
You can optionally enable the language picker to allow users to switch between different languages. Currently, it supports English, Spanish, French, Japanese and Arabic.

To add support for additional languages, create new locale files and update `app/frontend/src/i18n/config.ts` accordingly. To enable language picker, run:

Expand Down