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 Mi Piace

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

3 Mi Piace

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 Mi Piace

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 Mi Piace

A partire da questo commit di @david, ora dovrebbe funzionare correttamente :tada:

1 Mi Piace

Grazie mille, ragazzi.
Ma…c’è un altro problema per me.:pensive_face:
Non sapevo come usarlo.:persevering_face:

Per consentire l’impostazione della localizzazione per gli utenti anonimi (non collegati) in base alle impostazioni linguistiche del loro browser, è necessario abilitare sia l’impostazione del sito “consenti localizzazione utente” che “imposta localizzazione dall’intestazione Accept-Language”. Entrambe queste impostazioni si trovano nella parte superiore della pagina delle impostazioni “Configurazione di base” del tuo sito.

Una volta abilitate queste impostazioni, gli utenti non collegati al sito avranno automaticamente l’interfaccia utente di Discourse impostata sulla lingua preferita configurata nel loro browser. Se un utente non collegato decide di creare un account sul sito, la sua localizzazione verrà automaticamente impostata su quella definita dal suo browser. Tieni presente che questo funzionerà solo se la sua localizzazione è impostata su una lingua per cui Discourse è stato tradotto.

L’impostazione “imposta localizzazione dall’intestazione Accept-Language” non ha alcun effetto sugli utenti che hanno già creato account sul sito. Una volta creato un account, l’interfaccia utente di Discourse verrà visualizzata nella localizzazione impostata nella pagina delle preferenze dell’utente. Finché l’impostazione “consenti localizzazione utente” è abilitata, gli utenti esistenti possono aggiornare la propria localizzazione qui:

Per l’impostazione “imposta localizzazione dall’intestazione Accept-Language” è necessario scrivere un argomento howto. Mi sto impostando un promemoria per farlo e scriverò l’argomento a breve.

2 Mi Piace

Domanda veloce su questo in relazione al plugin traduttore. Il plugin traduttore funzionerà in questo scenario se la restrizione di traduzione del plugin è impostata su Everyone?
image
(dato che la diversa locale è la cosa che fa apparire il pulsante di traduzione in primo luogo)

Solo per tua informazione, non credo che il gruppo ‘Tutti’ funzioni correttamente con quell’impostazione di Traduttore. Inoltre, non è disponibile per gli anonimi, quindi impostarlo su TL0 è il gruppo consigliato per questo.

1 Mi Piace