TIL - day53

정상화·2023년 5월 8일
0

TIL

목록 보기
38/46
post-thumbnail

스프링부트 국제화


요청헤더의 languages 속성에 따라 서비스의 언어를 다르게 표시해줄 수 있다.

messages.properties

hello=Hello there
logoText=CODELIKE

messages_en.properties

빈 파일로 작성

messages_ko.properties

hello=안녕하세요
logoText=코드라이크

타임리프 파일

사이트 이름: <span th:text="#{logoText}"></span>
<hr>
<span th:text="#{hello}"></span>

MessageBundleResource 설정

@Configuration
@RequiredArgsConstructor
public class I18nConfig {
    private final CustomResourceBundleMessageSource customResourceBundleMessageSource;

    @Bean
    public MessageSource messageSource() {
        ResourceBundleMessageSource messageSource = customResourceBundleMessageSource;
        messageSource.setBasename("messages");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }

    @Bean
    public LocaleResolver localeResolver() {
        AcceptHeaderLocaleResolver acceptHeaderLocaleResolver = new AcceptHeaderLocaleResolver();
        acceptHeaderLocaleResolver.setDefaultLocale(Locale.US);

        return acceptHeaderLocaleResolver;
    }
}

렌더링된 html은 요청헤더의 언어 우선순위에 따라 다르게 표현된다.

속성을 함수처럼 사용하기


messages.properties

logoText=CODELIKE
hello=Welcome to {0}{1}

타임리프 파일

사이트 이름: <span th:text="#{logoText}"></span>
<hr>
<span th:text="#{hello(#{logoText}, '!!')}"></span>

마치 함수처렁 properties파일의 속성에 접근해서 인자를 넣어준 것이 가능하다.

profile
백엔드 희망

0개의 댓글