작성
·
26
0
안녕이 반환되어야하는데 hello가 반환되어 테스트가 통과되지 않고 있습니다.
파일 인코딩은 UTF-8로 잘 설정되어있습니다.
현재 두개의 properties를 만들었는데
만약 messages_en.properties를 지우면 안녕이 반환되면서 테스트를 통과합니다.
두 파일이 모두 존재할 경우 messages_en.properties를 먼저 선택하는 듯한 느낌입니다.
messages_en을 삭제했을 때 모습입니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
jangeh3031님께서 국제화 MessageTest 오류에 대해 질문해 주셨네요.
지금 발생한 문제는 messages_en.properties
파일이 존재할 때 Locale.KOREA
를 사용해도 “hello”라는 값을 반환하는 상황인 것 같습니다. 이 문제의 근원은 메시지 소스 설정이 fallback-to-system-locale
설정에 의존하기 때문일 수 있습니다.
Spring Boot에서 국제화 메시지를 설정할 때, messages.properties
가 기본 메시지 파일로 사용됩니다. 현재 messages.properties
와 messages_en.properties
모두가 존재할 때, 시스템은 명시적인 로케일을 제공하지 않는 경우 Locale.ENGLISH
를 사용하여 messages_en.properties
를 우선 사용하게 되는 경우가 있습니다.
해결 방안으로는 application.properties
또는 application.yml
파일에 다음과 같이 설정을 추가하여 시스템의 실패 시 기본 로케일을 사용하지 않도록 할 수 있습니다:
spring.messages.fallback-to-system-locale=false
이 설정은 메시지를 찾을 때 기본 로케일로 돌아가는 것을 방지하기 때문에 명시된 로케일(이 경우 Locale.KOREA
)에 맞는 메시지 파일을 사용하게 만듭니다.
보다 더 확실한 해결책은 properties 파일을 명확하게 로케일에 맞도록 이름을 지정하고, 각 파일에 원하는 내용이 존재하는지 확인하는 것입니다.
자세한 정보는 Spring Boot Internationalization Documentation을 참고하시면 도움이 될 것입니다.
추가적인 질문이 있으면 언제든지 문의해 주세요!