- 국제화 텍스트 properties 파일을 resources에 생성한다.
messages.properties 파일
++ResourceBundle Editor
http://essiembre.github.io/eclipse-rbe/
messages_en.properties 파일
jsp파일을 parsing 하다 fmt 태그에서 key값을 발견하면 value값을 꺼내 반환해준다.
- ApplicationConfig에 MessageSource Bean을 설정한다.
@Bean("messageSource")
public MessageSource messageSource() {
ResourceBundleMessageSource resourceBundleMessageSource=
new ResourceBundleMessageSource();
resourceBundleMessageSource.setBasenames("messages/messages","messages/user");
return resourceBundleMessageSource;
}
messageSource()메소드는
resourceBundleMessageSource를 생성하고 Basenames에 messages(route)/messages(.properties 기술하지 않음) 을 setting 해준다. 위 코드에서는 messages 뿐만 아니라 user도 ','로 구분하여 함께 등록했다.
그 후 resourceBundleMessageSource를 반환해준다.
JSTL 태그
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%
request.setAttribute("id", "아이디");
request.setAttribute("pass", "비밀번호");
request.setAttribute("name", "이");
%>
<%-- 1.Locale객체설정(JSTL)--%>
<fmt:setLocale value="${pageContext.request.locale.language}"/>
<%-- 2.ResourceBundle 의 properties파일지정(JSTL) 페이지전역 --%>
<fmt:setBundle basename="messages/messages"/>
<fmt:message key="password.mismatch.exception">
<fmt:param value="${id}"/>
<fmt:param value="${pass}"/>
<fmt:param value="${name}"/>
</fmt:message>
JSTL 태그는 JSP에서 사용하는 국제화 태그이다.
<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
taglib directive로 태그 라이브러리를 import 해주면 prefix로 태그를 사용할 수 있다.
<%-- 1.Locale객체설정(JSTL)--%>
<fmt:setLocale value="${pageContext.request.locale.language}"/>
locale(지역)을 fmt:setLocale 태그로 설정해준다.
<%-- 2.ResourceBundle 의 properties파일지정(JSTL) 페이지전역 --%>
<fmt:setBundle basename="messages/messages"/>
resourceBundle의 basename을 지정해준다.
password.mismatch.exception = {0} {1} {2} 사용자의 비밀번호가 일치하지 않습니다.
messages.properties에 password.mismatch.exception은
파라메터 3개를 받아서 텍스트를 뿌린다.
<fmt:message key="password.mismatch.exception">
<fmt:param value="${id}"/>
<fmt:param value="${pass}"/>
<fmt:param value="${name}"/>
</fmt:message>
파라메터가 필요없다면
<fmt:param>태그는 필요없다.
다음은 Spring에서 제공하는 국제화 태그이다.
<%@ taglib prefix="s" uri="http://www.springframework.org/tags" %>
<s:message
code="exception.userexisted"
arguments="${id}" />
s:message 태그에
code="KEY"
파라메타를 받는다면
arguments="param"
<s:message code="nv.bc"
arguments="user,list"
argumentSeparator=","/>
파라메타가 여러개면
arguments에 파라메타를 구분자와 함께 기술하고
argumentSeparator에 구분자를 지정해준다.
Spring Container에 등록된 MessageSource 빈객체를 @를 이용해서 JSP에서직접호출
<s:eval expression="@messageSource.getMessage('nv.bc',new Object[]{'유저','리스트'},new java.util.Locale('en','US'))"/>
messageSource.getMessage('key',['param','param'],locale('language','locale'))
'Java > Spring Boot' 카테고리의 다른 글
Java WebAppInitConfig (0) | 2023.09.13 |
---|---|
Spring Boot Request Controller (0) | 2023.09.13 |
Spring Boot Controller Mapping + View Resolver (0) | 2023.09.12 |
Spring Boot Exception Handler (0) | 2023.09.12 |
Spring Boot (0) | 2023.09.12 |