작성
·
4K
2
안녕하세요. 강의 항상 잘 보고 있습니다.
Locale.getDefault()
디폴트 locale을 사용하는 부분에서 기선님과 다른 부분이 있어서 질문드립니다.
저는 Locale.getDefault()와 Locale.KOREA 두 가지 모두 messages_ko_KR.properties에 있는 한글값이 출력됩니다.
default locale의 경우 default locale 값이 별도로 설정되어있는 것이 아니라 messages.properties라는 파일을 default로 판단하여 출력하는 것이라 예상하였는데 ko_KR의 결과가 찍혀서 의문입니다.
ko_KR의 파일이름을 messages.ko_KR.properties와 같이 인식할 수 없도록 수정 후에 출력하면 영문으로 결과가 잘 찍히는데요... 왜 messages_ko_KR.properties파일만 추가하면 default도 한글이 출력되는지 궁금합니다....
답변 3
1
https://docs.oracle.com/javase/7/docs/api/java/util/Locale.html#getDefault()
저도 잘은 모르겠지만, 문서를 읽어보면 짐작할 수 있는데요. 아마 JVM이 구동될 때 OS 환경 변수 등에서 정보를 읽어 설정하는 것 같습니다. 따라서 사용하시는 운영체제에 설정된 (기본) 언어가 한국어라 그렇게 된거라 추측해 봅니다.
0
저도 OS default가 ko_KR이라서 한글로만 찍히더라구요. 저는 그냥 greetingKR , greetingEN 으로 변수를 달리하여 불러오는 방식으로 다르게 찍었습니당...
0
저도 같은 문제네요 실제로 println()으로
Locale.getDefault()를 출력해 보면 ko_KR이 출력됩니다.
좀 알아본 결과
Locale.getDefault() 는 운영체제의 기본값으로 읽어온다고 합니다.
대신 Spring의 기본 언어값을 XML로 설정해 주고
LocaleContextHolder.getLocale()을 이용하면
설정해 놓은 기본값을 읽어온다고 하네요