인프런 커뮤니티 질문&답변

god님의 프로필 이미지

작성한 질문수

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

메시지, 국제화 관련 문의 드립니다.

작성

·

609

1

안녕하세요. 강사님

먼저, 좋은 강의 감사드리며, 열심히 듣고있습니다.

 

다름이 아니라 아래 소스 테스트가 실패로 떨어집니다.

 

간단한 소스라 특별한 문제가 없는것 같은데....

혹시 강의 내용중에는 언급이 안되었지만 properties 파일의 인코딩 문제인지...

물론 제공해주신 강의소스를 인텔리제이에서 불러와서 코딩한거라 그런 문제는 아닌것 같지만요...

 

조언 부탁드립니다.

감사합니다.

 

 

답변 1

2

안녕하세요. god님, 공식 서포터즈 OMG입니다.

hello=a
hello.name=안녕 {0}

 

@Test
    void helloMessage() {
        String result = ms.getMessage("hello", null, null);
        assertThat(result).isEqualTo("a");
    }

인코딩 관련 문제인지, 한글 대신 영어로 확인해보면 좋을거 같아요.

안녕 대신 a로 확인해보시겠어요?

 

preference에서 file encoding도 UTF-8로 되어 있는지 확인해주세요


감사합니다.

god님의 프로필 이미지
god
질문자

빠른 답변 감사합니다.

 

알려주신 방법으로 영어로 수정하고 테스트 하였으나 결과는 실패로 떨어집니다.

그리고  환경 설정에서 uft-8로 변경하고도 결과는 마찬가지입니다.

이전 유사한 질문에 있는 답변 내용으로 해보았는데...  마찬가지 결과입니다. 

 

올리신 이미지가(테스트한 환경이) 강의에서 제공해드리는 프로젝트로 하신건가요?

제공해드리는 프로젝트로 하셨다면,

message(완성본) message-start(시작용) 중 어떤 것으로 하신걸까요?

god님의 프로필 이미지
god
질문자

강의 내용대로 message-start 폴더를 message로 변경하고 시작하였습니다.

 

그리고 혹시나 하여 원본 소스 중 message 폴더로 프로젝트 열고 "MessageSourceTest" 테스트 해보았는데 동일하게 테스트 실패로 나옵니다. (아래 화면)

 

 

 

 

에러 메시지를 보니 알 것 같습니다.

아래와 같은 상황 같아요.

https://www.inflearn.com/questions/489062

https://www.inflearn.com/questions/286899

 

 Locale을 바꿔가면서 확인해보시겠어요?

 

String result = ms.getMessage("hello", null, Locale.ENGLISH);
String result = ms.getMessage("hello", null, Locale.KOREA);

아래와 같이 default Locale을 출력해보셔도 좋을 것 같아요.

god님의 프로필 이미지
god
질문자

우선 알려주신대로 아래와 같이 수정하여 테스트 결과 성공하였습니다.

1. application.properties에서 "spring.messages.fallback-to-system-locale=false" 추가

2. String result = ms.getMessage("hello",null, null); 을

    String result = ms.getMessage("hello",null, Locale.KOREA); 로 수정

※  단, System.out.println(Locale.getDefault()); 출력값은 "en_US" 임

 결론은, getMessage에서 Locale 값을 KOREA로 강제 셋팅시 한글 출력됨

 

늦게까지 답변해 주셔서 감사합니다.

 

 

 

 

 

 

god님의 프로필 이미지
god
질문자

오늘 국제화 강의편 듣다가 내용중에 브라우저 언어 설정 변경을 통해 메세지 한국, 영어 변환 테스트를 하면서 혹시나 하여 어제 질문드린 사항에 대해 연계해서 테스트를 해보니 정상적으로 성공 테스트값을 얻을수가 있었습니다.

아마도 제가 언어 설정에 우선순위를 영어로 설정되어 있어서 테스트 실패가 된 것으로 예상됩니다

(물론 정확한 이유가 맞는지는 모르겠습니다만...)

 

여하튼 설정값 변경을 통해 테스트 성공값을 얻을 수 있었습니다.

아래 화면이 브라우저 설정값 입니다.

수고하세요.

 

 

 

 

god님의 프로필 이미지

작성한 질문수

질문하기