كيفية ضبط اللغة لمستخدمي SSO

كيف يمكنني تعيين اللغة لمستخدم مسجل الدخول باستخدام الدخول الموحد (SSO)؟ لقد حاولت استخدام مفتاح “locale” إذا كان المستخدم يصل لأول مرة، ولم ينجح الأمر. أعتقد أن مفتاح “locale” يعمل إذا كان المستخدم مجهولاً.

مرحباً @Ankur_Tyagi :wave:t2: مرحبًا بك في Meta :slight_smile:
سيساعد هذا المنشور. هناك معلمتان تحتاج إليهما.

إعجاب واحد (1)

بالنسبة لمستخدم جديد لم يسجل الدخول إلى 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).

إعجابَين (2)

مرحباً @Lilly
شكراً على ردك.
لقد جربت ذلك مع مستخدم جديد وكذلك تحديث اللغة لمستخدم موجود، لكنه لم ينجح. أعتقد أنه يعمل فقط لحالة المستخدمين المجهولين. أنا أبحث عن حل للمستخدمين المسجلين.

سيكون من المفيد إذا كان بإمكانك مراجعة تفاصيل تكوين الإعداد أدناه، ربما هناك شيء أحتاج إلى تحديثه لإصلاحه، لست متأكداً.

  1. إصدار منتدى Discourse: Discourse 3.2.0.beta1-dev
  2. حزمة JS المستخدمة لـ sso: discourse-sso ( الإصدار: 1.0.5 )
  3. رابط حزمة Discourse: discourse-sso - npm

مرحباً @Ankur_Tyagi أعتذر لأنك ما زلت تواجه مشاكل. هل راجعت نصيحة Simon باستخدام المعلمة locale_force_update؟ أعتقد أن كل ما أعرفه عن SSO هو من @simon :slight_smile:

أود أن أراجع بعناية هذه المعلومات التي نشرها @simon بالإضافة إلى دليل إعداد DiscourseConnect SSO الرسمي الذي تم ربطه.

يمكن أن يساعدك إعداد تسجيل Discourse Connect التفصيلي والسجلات في استكشاف المشكلات وإصلاحها:

إعجاب واحد (1)

شكرا @Lilly، سأجرب هذا الحل