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 « J'aime »

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

3 « J'aime »

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 « J'aime »

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 « J'aime »

À compter de ce commit de @david, cela devrait fonctionner proprement maintenant :tada:

1 « J'aime »

Merci beaucoup les gars.
Mais…il y a un autre problème pour moi.:pensive_face:
Je ne savais pas comment l’utiliser.:persevering_face:

Pour permettre la définition de la langue par défaut pour les utilisateurs anonymes (non connectés) en fonction des paramètres de langue de leur navigateur, vous devez activer les deux paramètres du site « Autoriser la langue utilisateur » et « Définir la langue à partir de l’en-tête Accept-Language ». Ces deux paramètres se trouvent en haut de la page de configuration « Configuration de base » de votre site.

Une fois ces paramètres activés, les utilisateurs non connectés verront automatiquement l’interface Discourse définie dans la langue préférée configurée dans leur navigateur. Si un utilisateur non connecté décide de créer un compte sur le site, sa langue sera automatiquement définie sur celle configurée dans son navigateur. Notez que cela ne fonctionnera que si sa langue est prise en charge par les traductions de Discourse.

Le paramètre « Définir la langue à partir de l’en-tête Accept-Language » n’a aucun effet sur les utilisateurs qui ont déjà créé un compte sur le site. Une fois un compte créé, l’interface Discourse sera affichée dans la langue définie sur la page des préférences de l’utilisateur. Tant que le paramètre « Autoriser la langue utilisateur » est activé, les utilisateurs existants peuvent mettre à jour leur langue ici :

Le paramètre « Définir la langue à partir de l’en-tête Accept-Language » nécessite la rédaction d’un sujet howto. Je me suis donc fixé un rappel pour cela et je rédigerai ce sujet sous peu.

2 « J'aime »

Question rapide à ce sujet en relation avec le plugin traducteur. Le plugin traducteur fonctionnera-t-il dans ce scénario si la restriction de traduction du plugin est définie sur Tout le monde ?
image
(étant donné que la locale différente est ce qui déclenche l’apparition du bouton de traduction en premier lieu)

Juste pour information, je ne pense pas que le groupe ‘Tout le monde’ fonctionne correctement avec ce paramètre de Traducteur. Il n’est pas non plus disponible pour les anonymes, donc le définir sur TL0 est le groupe recommandé pour cela.

1 « J'aime »