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 me gusta

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

3 Me gusta

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 Me gusta

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 me gusta

A partir de este commit de @david, esto debería funcionar correctamente ahora :tada:

1 me gusta

Muchas gracias, chicos.
Pero… tengo otro problema.:pensive_face:
No sé cómo usar esto.:persevering_face:

Para permitir que la configuración regional se establezca para usuarios anónimos (no iniciados en la sesión) según la configuración de idioma de su navegador, debe habilitar tanto la configuración de sitio “permitir configuración regional del usuario” como “establecer configuración regional desde la cabecera Accept-Language”. Ambas configuraciones se encuentran cerca de la parte superior de la página de configuración “Configuración básica” de su sitio.

Una vez habilitadas estas configuraciones, los usuarios que no hayan iniciado sesión en el sitio tendrán la interfaz de usuario de Discourse establecida automáticamente en el idioma preferido que han configurado en su navegador. Si un usuario no iniciado en la sesión decide crear una cuenta en el sitio, su configuración regional se establecerá automáticamente en la configurada por su navegador. Tenga en cuenta que esto solo funcionará si su configuración regional está establecida en un idioma al que Discourse ha sido traducido.

La configuración “establecer configuración regional desde la cabecera Accept-Language” no tiene efecto en los usuarios que ya han creado cuentas en el sitio. Una vez creada una cuenta, la interfaz de usuario de Discourse se mostrará en la configuración regional establecida en la página de preferencias del usuario. Siempre que la configuración “permitir configuración regional del usuario” esté habilitada, los usuarios existentes pueden actualizar su configuración regional aquí:

La configuración “establecer configuración regional desde la cabecera Accept-Language” requiere que se escriba un tema howto para ella. Me estoy poniendo un recordatorio para eso y escribiré el tema pronto.

2 Me gusta

Pregunta rápida sobre esto en relación con el complemento de traductor. ¿Funcionará el complemento de traductor en este escenario si la restricción de traducción del complemento se establece en Todos?
image
(dado que la diferente configuración regional es lo que activa el botón de traducción en primer lugar)

Solo como información, no creo que el grupo ‘Todos’ funcione correctamente con esa configuración de Translator. Tampoco está disponible para anónimos, por lo que se recomienda establecerlo en TL0 para ese grupo.

1 me gusta