실습 3일차_I18N_MessageSource
I18N이란?
I18N은 Internationalization의 축약형이다.
Internationalization은 알파벳이 20개로, 가장 첫 글자인 I와 가장 마지막 글자인 N 사이에 알파벳이 18개 있다고 하여
I18N으로 칭한다. 즉, 국제화, Internationalization, I18N 모두 같은 말이다.
SW 국제화(I18N)이란?
SW(Software) 국제화는 SW가 특정 지역이나 언어에 종속되지 않고 다양한 지역, 언어에서 정상 동작하도록
국제적으로 통용되는 SW를 설계하고 개발하는 과정을 말한다.
Spring Injection_Callback
MainClass.java
import java.util.Locale;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
import com.foo.Example;
public class MainClass {
public static void main(String[] args) {
ApplicationContext ctx = new GenericXmlApplicationContext("classpath:com/config/user.xml");
String mesg = ctx.getMessage("greet", null, "Hello~~~", Locale.KOREA);
System.out.println(mesg);
String mesg2 = ctx.getMessage("greet2", new Object[] {"Kim"}, "Hello~~~", Locale.UK);
System.out.println(mesg2);
String mesg3 = ctx.getMessage("greet3", new Object[] {"Kim", 20}, "Hello~~~", Locale.UK);
System.out.println(mesg3);
//Example 빈 참조
Example exam = ctx.getBean("exam", Example.class);
exam.printMessage();
}
}
Example.java
package com.foo;
import java.util.Locale;
import org.springframework.context.MessageSource;
public class Example {
MessageSource messageSource;
//setter 메서드 주입
public void setMessageSource(MessageSource messageSource) {
this.messageSource = messageSource;
}
public void printMessage() {
String mesg = messageSource.getMessage("greet", null, "Hello~~~", Locale.KOREA);
System.out.println(mesg);
}
}
hello_en.properties
# hello_en.properties
greet=Good Morning
greet2=name:{0}
greet3=name:{0} age:{1}
hello_ko.properties
# hello_ko.properties
greet=안녕하세요.
greet2=이름:{0}
greet3=이름:{0} 나이:{1}
user.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">
<!-- hello_xx.properties 에서 hello만 저장한다. -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<!-- id="messageSource" id 값이 정해져 있음 다르게 쓰면 안됨.. -->
<property name="basenames">
<list>
<value>classpath:com/config/hello</value> <!-- 문자열일 경우 value 사용 -->
</list>
</property>
<property name="defaultEncoding" value="utf-8" /> <!-- default encoding: ISO-8859-1. > utf-8로 변경 -->
</bean>
<bean id="exam" class="com.foo.Example">
<property name="messageSource" ref="messageSource" />
</bean>
</beans>
* 출력 화면
출처
* I18N : https://miaow-miaow.tistory.com/32
+ 강의 교재
'AI Bootcamp > Spring' 카테고리의 다른 글
[Spring] 실습 4일차_@Value_resourceBundle (0) | 2022.03.18 |
---|---|
[Spring] 실습 4일차_@Resource (0) | 2022.03.18 |
[Spring] 실습 3일차_Injection_Callback (0) | 2022.03.14 |
[Spring] 실습 2일차_Injection_Collection(list & set & map &props) (0) | 2022.03.12 |
[Spring] 실습 2일차_Injection_Constructor & Setter 혼합 (0) | 2022.03.12 |