우리 애플리케이션은 ES 변형을 지원하려고 시도합니다.레일즈 브라우저 언어 설정을위한 이상한 행동 es-419
우리는 ApplicationController의 들어오는 요청에서 user_preferred_language를 캡처합니다.
class ApplicationController < ActionController::Base
before_filter :set_i18n_locale_for_unauthenticated
...
def set_i18n_locale_for_unauthenticated
users_preferred_languages = request.user_preferred_languages
... # Do something with the array of loacle codes
end
end
일반적으로 제대로 작동하며 로캘 코드 배열은 클라이언트 브라우저에서 설정된 기본 설정과 일치합니다. 예 : user_preferred_languages
배열
[
[0] "pt-BR",
[1] "pt",
[2] "en-GB",
[3] "en",
[4] "en-US",
[5] "es",
[6] "es-419"
]
그러나 es-419
(Lantin 미국 스페인어) 로케일이 다음 마지막 위치를 제외하고 어디서든 경우 user_preferred_languages
는 빈 배열을 반환합니다
나는 아마도 두 가지 문제를이 레일 (또는 랙)에 문제가 있음을 추측, 또는 오전 :
는 전형적인
xx-YY
을 준수하지 않는 파서 제대로es-419
사건을 처리하지 않습니다 체재.어쨌든 그것이 목록에서 마지막으로 선호되는 언어 일 때, 그것은 미끄러짐을 관리합니다.
나는 누군가가 이전에 그것에 부딪 쳤기를 바랬으므로 이것을 위해 소스를 파고 들려고하지 않았으며, 이것을 가장 잘 처리 할 수있는 방법을 제안 할 수있었습니다. 아니면 이것이 지원되지 않는 이유가 있을까요?
더 배경을 선택하십시오 브라우저에서 Chromium을 사용하고 있습니다. 요청 헤더를 보면 아무런 문제없이 언어 설정을 통과 한 것으로 보입니다.
Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:pt-BR,pt;q=0.8,en-GB;q=0.6,en;q=0.4,en-US;q=0.2,es-419;q=0.2,es;q=0.2
Cache-Control:no-cache
Connection:keep-alive
난 당신이 보석을 사용하는 것이 추가하는 것을 잊었다 생각, 내가 맞다? https://github.com/iain/http_accept_language –