بالنسبة لمستخدم جديد لم يسجل الدخول إلى Discourse من قبل، يجب أن يعمل إذا تم تعيين المعلمة locale في الحمولة في المرة الأولى التي يسجل فيها المستخدم الدخول إلى الموقع. على سبيل المثال، باستخدام وثائق npm التي ربطتها:
var userparams = {
// Required, will throw exception otherwise
"nonce": nonce,
"external_id": "some user id here",
"email": "some user email",
// Optional
"username": "some username",
"name": "some real name",
"locale": "es"
};
بالنسبة لمستخدم موجود لديه حساب بالفعل على Discourse، ستحتاج إلى إضافة المعلمة locale_force_update إلى userparams وتعيينها على true. أعتقد أنه في حالتك يمكنك تضمين المعلمة locale_force_update عند إنشاء مستخدم جديد وعند تحديث مستخدم:
var userparams = {
// Required, will throw exception otherwise
"nonce": nonce,
"external_id": "some user id here",
"email": "some user email",
// Optional
"username": "some username",
"name": "some real name",
"locale": "es",
"locale_force_update": true
};
للأسف، لتحديث اللغة، أو أي سمات أخرى عبر حمولة DiscourseConnect، يجب على المستخدم تسجيل الخروج من Discourse، ثم تسجيل الدخول مرة أخرى. هذا يعني أنه من غير المرجح أن يحصل المستخدم على اللغة المحدثة على الفور. هناك حل بديل لهذا، ولكني لا أعتقد أنه تتم معالجته بواسطة حزمة discourse-sso npm. لتحديث مستخدم عبر DiscourseConnect دون مطالبته بتسجيل الخروج وتسجيل الدخول مرة أخرى إلى Discourse، تحتاج إلى إجراء استدعاء إلى المسار sync_sso. التفاصيل حول ذلك موجودة هنا: Sync DiscourseConnect user data with the sync_sso route.
إذا كنت تواجه مشكلة في تعيين اللغة بشكل صحيح للمستخدمين الجدد، أو للمستخدمين الذين يسجلون الخروج ويسجلون الدخول مرة أخرى بعد إضافة معلمات اللغة، فحاول تمكين إعداد موقع Discourse verbose discourse connect logging. سيسمح لك ذلك برؤية المعلمات التي يتم إرسالها إلى Discourse من صفحة /logs الخاصة بموقعك (الموجودة في Admin / Logs / Error Logs).