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:

익명(로그인되지 않은) 사용자의 브라우저 언어 설정에 따라 로케일을 설정하려면 allow user locale(사용자 로케일 허용) 및 set locale from accept language header(Accept-Language 헤더에서 로케일 설정) 사이트 설정을 모두 활성화해야 합니다. 이 두 설정은 모두 사이트의 “기본 설정(Basic Setup)” 페이지 상단 근처에서 찾을 수 있습니다.

이 설정들이 활성화되면 사이트에 로그인하지 않은 사용자의 경우, 브라우저에서 설정한 선호 언어로 Discourse 사용자 인터페이스가 자동으로 설정됩니다. 로그인되지 않은 사용자가 사이트에 계정을 생성하기로 결정하면, 해당 사용자의 로케일은 브라우저에서 설정된 로케일로 자동으로 설정됩니다. 단, 이 기능은 사용자의 로케일이 Discourse가 번역된 언어로 설정된 경우에만 작동합니다.

set locale from accept language header 설정은 이미 사이트에 계정을 생성한 사용자에게는 영향을 미치지 않습니다. 계정이 생성된 후에는 Discourse 사용자 인터페이스가 사용자의 설정 페이지에서 지정된 로케일로 표시됩니다. allow user locale 설정이 활성화되어 있는 한, 기존 사용자는 다음 위치에서 로케일을 업데이트할 수 있습니다:

set locale from accept language header 설정에 대한 howto(방법) 주제가 작성되어야 합니다. 이를 위해 리마인더를 설정해 두었으며, 곧 해당 주제를 작성할 예정입니다.

2개의 좋아요

번역가(Translator) 플러그인과 관련하여 이 문제에 대해 간단한 질문이 있습니다. 플러그인 번역 제한이 '모두(Everyone)'로 설정된 경우, 이 시나리오에서 번역가 플러그인이 작동할까요?
image
(다양한 로케일이 번역 버튼이 표시되도록 트리거하는 것이기 때문입니다)

참고로, ‘Everyone’ 그룹은 해당 Translator 설정과 함께 제대로 작동하지 않는 것 같습니다. 또한匿名用户에게도 제공되지 않으므로, 해당 설정에는 TL0 그룹을 사용하는 것이 권장됩니다.

1개의 좋아요