WebServer/Spring Boot

[스프링부트] I18N 다국어 처리하기

gangintheremark 2023. 9. 22. 10:35
728x90

파일명_국가별언어코드.properties 작성

한국어 버전

#shop_ko.properties
greeting=안녕하세요

영어 버전

#shop_en.properties
greeting=hello

 

application.properties 설정

spring.messages.basename=message/shop
spring.messages.encoding=utf-8
# spring.messages.fallback-to-system-locale=false
💡 fallback-to-system-locale = true (default) : 시스템의 locale를 따른다.
💡 fallback-to-system-locale = false : 기본 properties를 실행한다.

 

① 메인에서 사용

@SpringBootApplication
public class Application {

    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(Application.class, args);
        String mesg = ctx.getMessage("greeting", null,null,Locale.KOREA);
        String mesg2 = ctx.getMessage("greeting", null, null, Locale.US);
        String mesg3 = ctx.getMessage("greeting", null, null, Locale.CHINA);

        System.out.println(mesg); // shop_ko.properties 실행
        System.out.println(mesg2); // shop_en.properties 실행
        System.out.println(mesg3); // shop.properties 실행
    }
}

 

② 임의의 빈에서 사용

@Autowired를 통해 MessageSource 객체 주입

@Service("xxx")
public class DeptServiceImpl {

    @Autowired
    MessageSource ctx;

    public void mesg() {
        String mesg = ctx.getMessage("greeting", null, null, Locale.KOREA);
        String mesg2 = ctx.getMessage("greeting", null, null, Locale.US);
        String mesg3 = ctx.getMessage("greeting", null, null, Locale.CHINA);

        System.out.println(mesg);
        System.out.println(mesg2);
        System.out.println(mesg3);
    }
}
    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(Application.class, args);

        DeptServiceImpl service = ctx.getBean("xxx", DeptServiceImpl.class);
        service.mesg();
    }

👇 Spring 과 비교 

 

[Spring] I18N 다국어 처리하기 (MessageSource)

properties 파일을 이용한 다국어 처리 방식이다. 실습 ① 파일명_국가별언어코드.properties 작성 한국어 버전 #shop_ko.properties greeting=안녕하세요 greeting2={0},{1} 영어 버전 #shop_en.properties greeting=hello ②

gangintheremark.tistory.com

 

728x90