작성
·
35
·
수정됨
0
locale이 지정되면 해당 메시지 소스를 찾거나 일치한게 없으면 기본 message.propertis를 찾습니다.
근데 헤더 정보가 null일 때는 왜 messages_ko_properties를 참조하는지 이유를 모르겠네요...
아래는 등록된 빈 정보입니다
답변 2
0
안녕하세요, 이도원입니다.
Locale 정보가 없을 때, 즉, locale
이 null
이면, MessageSource
는 LocaleContextHolder.getLocale()
또는 Locale.getDefault()
를 fallback으로 사용하게 됩니다. 이 값이 JVM의 기본 로케일이 ko_KR
로 되어 있다면, messages_ko.properties
를 참조하게 됩니다. 현재 작업하시는 환경의 Locale.getDefault() 값을 확인해 보시면 좋을 것 같습니다. 추가로, Locale 정보가 null 일 경우 명시적으로 Locale.ENGLISH로 지정해 보고 실행해 보시면 어떨까 합니다.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
Spring Boot 환경에서 locale
이 지정되지 않았을 때 기본적으로 messages.properties
파일이 사용되어야 하지만, 현재 상황에서는 messages_ko.properties
가 호출되는 것으로 보이는 이유에 대해 설명을 드리겠습니다.
기본 Locale 설정 확인: 클래스 설정에서 SessionLocaleResolver
를 사용하고 있으며, 기본 로케일이 설정되어 있습니다. 이때 sessionLocaleResolver.setDefaultLocale(Locale.US)
와 같은 설정이 있다면, 기본적으로 영어 로케일이 사용되어야 합니다. 그러나 응답이 messages_ko.properties
를 참고하는 이유는 별도의 설정이나 다른 설정 파일에서 기본 로케일이 한글로 되어 있는 가능성이 있습니다.
MessageSource 설정 확인: ResourceBundleMessageSource
에서 기본 로케일이 Locale.US
로 설정되어 있더라도, fallback을 사용하지 않도록 설정되어 있을 경우, 명시적으로 en
로케일 파일이 없으면 다른 파일(ko
)을 사용할 수 있습니다. setFallbackToSystemLocale(false)
처럼 설정하는 경우, 시스템 로케일이 아닌 명시적으로 설정한 로케일을 사용하게 됩니다. 여기에 영어 파일이 존재해야지만 영어로 나올 수 있습니다.
시스템 Locale 설정 확인: 로컬 환경에서 시스템 로케일이 한국어로 설정되어 있을 가능성도 있으며, 이는 애플리케이션의 기본 설정에 영향을 줄 수 있습니다. 하지만 기본적으로 fallback이 설정되어 있지 않다면, 이것이 직접적인 원인은 아닙니다.
이러한 상황들을 한 번 더 확인하시고, 필요한 설정을 수정해보시기를 권장드립니다. 만약 아직 문제가 해결되지 않으면, 아래의 유사 질문 링크를 참고해 보세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.