back/Spring Boot

Spring Boot) 인텔리제이[IntelliJ] 다국어 처리

pogun 2025. 5. 18. 16:00

실행환경

IntelliJ  : 2024.3.4.1

Spring Boot : 3.3.10-SNAPSHOT

JDK : 17.0.13

 

1. src/main/resources 디렉토리 밑에 파일 생성(저는 messages로 생성)

 

2. yml 설정

spring:
  messages:
    basename: messages/message
    encoding: utf-8
    cache-duration: 10
    fallback-to-system-locale: false

 

3. messages 디렉토리에 언어별 Resource Bundle 추가

(messages 폴더 우클릭 -> New -> Resource Bundle 클릭)

 

3-1. Locales to Add 부분에 '+' 버튼 클릭 후 나라별 언어코드( ISO 639 언어 코드 ) 입력

 

3-2. 언어 추가 후 OK 클릭 -> messages 하위 파일에 그림처럼 추가 확인 가능

일본은 jp인줄 알고 추가했는데 아닌가봐요..

 

4. 각 파일에 아래 코드 입력 (간단한 예시)

site.title=한글 {0} {1}
tel=010-9999-9999
site.title=U.S. {0} {1}
tel=010-9999-8888
site.title=Japan {0} {1}
tel=010-9999-7777
site.title=Korea {0} {1}
tel=010-9999-6666
site.title=China {0} {1}
tel=010-9999-5555

 

5. jsp에 아래 코드 추가

<h1><spring:message code="site.title"  arguments="a1,a2"  /></h1>

 

예) JSLT 변수 사용 (컨트롤러에서 가져온 실제 데이터를 사용한 경우)

<c:set var="arg1" value="${user.name}" />
<c:set var="arg2" value="${user.id}" />
<spring:message code="site.title" arguments="${arg1},${arg2}" />

ex) user.name = 홍길동, user.id = ABC123 일 때
output : 한글 홍길동 ABC123
구성 요소 설명
{0}, {1} arguments로 전달된 값이 들어갈 자리
arguments="a1,a2" 리터럴 문자열 "a1", "a2"가 치환됨
${변수1},${변수2} 동적 데이터로 치환하려면 EL(Expression Language) 사용

 

 

6. 확인은 web에서 설정 -> 언어 -> 기본언어 변경 시 내가 설정해둔 부분으로 수정됨

or web에서 버튼 클릭 시 바뀌도록 할 수 있음

: 그림처럼 입력해둔 부분만 언어 변경 시 수정되는 걸 볼 수 있다.