브라우저에서 다른 언어를 사용하는 경우 영어를 자동으로 선택해야합니다. 맞습니까?
다릅니다. Struts는 가장 구체적인 메시지 번들을 찾은 다음 (예 : 언어 접미어가없는 기본 JVM 로켈 또는 메시지 번들과 같은) 일부 기본값으로 폴백합니다. Normally it's something like this :
base + "_" + localeLanguage + "_" + localeCountry + "_" + localeVariant
base + "_" + localeLanguage + "_" + localeCountry
base + "_" + localeLanguage
base + "_" + default locale
base
는 ... 더 프랑스어 로케일이 없다, 그는 페이지에 어떤 내용을 표시합니다.
그럴 것 같지 않습니다. 메시지 키를 확인할 수 없으면 다음과 같은 예외가 발생합니다 : "키"누락 된 메시지 "..."로케일의 "..."로케일 ... " 또는 과 같은 결과가 표시됩니까?" ?? fr.yourKey ??? "을 struts-config.xml에 <message-resources ... null="false" />
과 같은 구성으로 저장하면 페이지 또는 적어도 로그에 뭔가가 표시되어야합니다.
제 제안은 org.apache.struts.util.PropertyMessageResources
에 대한 로그를 활성화하고 찾으려고하는 것입니다. 또한 .properties 파일을 확인하십시오. 키가 기본 파일에서 해석되고 비어있을 수 있습니다. (PropertyMessageResources가 운영 모드가 무엇을하고 있는지 떨어져에서) 현재 요청에 사용할 로케일을 선택하는 과정에 관해서는
은, 어떤 점에서 Struts의 요청 프로세서는 반환 할 책임이 org.apache.struts.chain.commands.servlet.SelectLocale
에 호출합니다 장소.
이 클래스는 세션 내에서 캐시 된 로켈을 찾으려고 시도합니다. 하나를 찾을 수 없으면 요청에있는 것을 사용합니다. 거기에서 찾을 수 없으면 JVM 로케일을 기본값으로 사용합니다. 로캘이 세션에서 선택되고 캐시됩니다.
이것은 Struts 클래스이므로, struts-core JAR에서 찾을 수 있습니다. 사용하고있는 특정 버전의 Struts 소스 코드에 액세스 할 수 있다면 Locale이 어떻게 관리되는지 직접 볼 수 있습니다. Globals.LOCALE_KEY을 사용하는 코드는 나중에 사용하게 될 것입니다.
내 질문에 차이가 있었지만, 내가 이미 알고있는 것을 설명해 주었다. –
@Comodore Panamo : 답변을 일부 업데이트했습니다. 도움이되는지 확인하십시오. 그렇다면 어떤 종류의 대답을 찾고 있는지 알려주지 마십시오. – Bogdan