Variable default interface language for new users

This is also incorrect. I18n.locale is set from the header only if there is no logged in user. See here:

Now, I suspect that when the user first signs up, current_user is not set, thus kick-starting the whole get-the-language-from-header process, and then the I18n.locale got persisted into the user’s account.

However, this is certain NOT how it is done when a user redeems an invite.

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

Yes, if you look at users_controller you can see how it’s done differently.

3 إعجابات

Yup. I see it.

UsersController inherits from ApplicationController, which runs set_locale as a before_action.

That kick-starts the whole thing.

But users redeeming an invitation does not go through this.

إعجابَين (2)

Judging from this here:

Would this work:

      user = invite.redeem(username: params[:username], name: params[:name], password: params[:password], user_custom_fields: params[:user_custom_fields])
      if user.present?
        user.locale = I18n.locale
        user.save!

        log_on_user(user)
        post_process_invite(user)
      end

Sorry for my Ruby – I don’t really know it. :sweat_smile:

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

اعتبارًا من هذا الالتزام من @david، يجب أن يعمل الآن بسلاسة :tada:

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

شكرًا لكم كثيرًا يا أصدقائي.
لكن…هناك مشكلة أخرى بالنسبة لي.:pensive_face:
لا أعرف كيف أستخدم هذا.:persevering_face:

لسماح بتعيين اللغة للمستخدمين المجهولين (غير المسجلين) بناءً على إعدادات لغة متصفحهم، يجب عليك تفعيل إعدادي “السماح للمستخدم بتعيين اللغة” و “تعيين اللغة من رأس Accept-Language”. توجد هاتان الإعدادتان في أعلى صفحة إعدادات “الإعدادات الأساسية” لموقعك.

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

لا يؤثر إعداد “تعيين اللغة من رأس Accept-Language” على المستخدمين الذين أنشأوا حسابات بالفعل على الموقع. بمجرد إنشاء الحساب، ستُعرض واجهة مستخدم Discourse باللغة المحددة في صفحة تفضيلات المستخدم. وطالما أن إعداد “السماح للمستخدم بتعيين اللغة” مفعّل، يمكن للمستخدمين الحاليين تحديث لغتهم هنا:

يتطلب إعداد “تعيين اللغة من رأس Accept-Language” كتابة موضوع تعليمي (howto) حوله. لقد وضعتُ لأن نفسي تذكيرًا بذلك وسأقوم بكتابة الموضوع قريبًا.

إعجابَين (2)

سؤال سريع حول هذا فيما يتعلق بمكون المترجم الإضافي. هل سيعمل المكون الإضافي للمترجم في هذا السيناريو إذا تم تعيين قيود ترجمة المكون الإضافي على “الجميع”؟
image
(نظرًا لأن اللغة المختلفة هي الشيء الذي يؤدي إلى ظهور زر الترجمة في المقام الأول)

فقط للعلم، لا أعتقد أن مجموعة “الجميع” تعمل بشكل صحيح مع إعداد المترجم هذا. وهي غير متاحة أيضًا للمجهولين، لذا فإن تعيينها على TL0 هي المجموعة الموصى بها لذلك.

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