‘기본 지역 설정’은 무엇을 하나요?

다시 아주 기초적인 질문을 하게 됐네요. app.yml 파일에서 기본 로케일로 fi를 설정해 두었습니다. 그런데 이게 단순히 모든 항목과 모든 사용자를 위한 기본값을 설정하는 것 외에 다른 역할을 하는 건가요?

만약 그렇다면, 사용자 로케일 허용(Allow user locale) 옵션이 변경될 때까지 사용자는 이제 fi인 그 기본 언어로 모든 내용을 보게 되는 건가요?

그런데 Accept-Language 헤더에서 로케일 설정(Set locale from accept language header)은 어떻게 되나요? 누군가가 en_US를 사용 중이라면 영어 버전이 제공되는 건가요? 그리고 이는 Accept-Language가 다른 값인 경우 기본 로케일이 단순히 제안일 뿐이며 덮어쓰기된다는 뜻인가요?

이렇게 묻는 이유는 미국에 중점을 둔 제 새 사이트 때문인데, 여기에 포럼이 필요합니다. 하지만 포럼을 시작하는 데 필요한 모든 작업을 수행할 만큼의 관심을 끌지는 못할 것 같아, 미국/글로벌 방문자들을 전용 카테고리로 유도하는 방안을 고려하고 있습니다.

하지만 제 포럼은 그 외 모든 부분이 핀란드어로 되어 있고, Accept-Language가 기본 로케일을 변경하지 않는다면 이 방법은 작동하지 않을 것입니다.

(그리고 번역기 기능이 언젠가 제대로 작동하길 일부러 희망하고 있기도 합니다 :smirking_face:).

알고 있습니다. 이건 진정한 지원 질문은 아니지만, 일반(General) 카테고리를 피하고 싶어서요…

이 주제에 대해 제가 많이 아는 것은 아니지만, 아직 다른 답변이 없어서…

app.yml 파일에 기본 로케일을 추가하면 사이트 설정에서 default locale로 설정한 값을 덮어쓰는 것 같습니다 (설정 페이지에서 해당 항목도 사라지고요). 하지만 이는 기본값일 뿐이며, 사용자들이 더 적합한 대안을 선택하도록 (또는 브라우저가 선택하도록) 할 수 있습니다.

이 내용이 도움이 되기를 바랍니다. 만약 그렇지 않다면, 더 전문적인 답변을 얻을 수 있도록 이 게시물을 다시 올려볼게요. :slight_smile: :crossed_fingers:

ApplicationController#with_resolved_locale에는 로그인된 사용자와 로그인되지 않은 사용자에 대한 두 가지 로직 분기가 있습니다.

로그인되지 않은 사용자는 (1) 요청에서 로케일을 설정한 다음, (2) 로케일이 감지되지 않으면 ‘기본 로케일’ 사이트 설정을 사용합니다.

우선순위는 URL의 ?lang=, 그 다음 locale 쿠키, 그리고 각 해당 사이트 설정이 활성화되어 있으면 Accept-Language입니다.

로그인된 사용자의 로직은 더 간단합니다: 사용자 설정, 그리고 사용자 설정이 금지된 경우 '기본 로케일’입니다.

모든 경우에서, 해결된 로케일이 Discourse 서버에서 언로드된 경우 en이 사용됩니다. (기억이 맞다면, 이는 주로 단위 테스트와 통합 테스트 중에 발생합니다.)

locale = SiteSettings::DefaultsProvider::DEFAULT_LOCALE if !I18n.locale_available?(locale)

따라서 요약하면, 이 로케일은 다음과 같은 역할을 합니다:

  • Accept-Language 헤더가 없는 익명 요청에 사용되는 언어입니다.
    • 특히 계정 등록 프로세스를 포함합니다.
  • 사용자가 자신의 언어를 선택하도록 허용하지 않았거나, 사용자가 선호 로케일을 설정하지 않은 경우 항상 사용되는 언어입니다.