SPRING
2020.12.31 / 16:51

Spring + locale¿¡ µû¸¥ ´Ù±¹¾î ¼³Á¤

±Ýµ¿ÀÌ
Ãßõ ¼ö 253

À̹ø ±ÛÀº Spring ÇÁ·ÎÁ§Æ®¿¡ ´Ù±¹¾î¸¦ Áö¿øÇÒ ¼ö ÀÖ°Ô ¼³Á¤ÇÏ´Â ¹æ¹ýÀÌ´Ù.

ȸ»ç¿¡¼­ Çѱ¹, ¿µ¾î, ÀϺ», Áß±¹¾î ÆäÀÌÁö ³»¿ëÀÌ ´Ù ´Ù¸£´Ù°í 4¹úÀ» Â¥ÀÚ´Â ¸»°°Áöµµ ¾ÊÀº ¼Ò¸®°¡ ³ª¿Í¼­ ¼³Á¤Çغ½.

À¥À» Çϳª¸¸ °³¹ßÇÏ°í ´Ù±¹¾î ÇÁ·ÎÆÛƼ¸¸ ÀÛ¼ºÇؼ­ ÇÁ·ÐÆ®¿¡ ¸Þ¼¼Áö¸¦ ÁÖ¸é µÇ´Â°Çµ¥ ¸»ÀÌÁö...

¿¾³¯»ç¶÷µéÀÌ ¸¹¾Æ¼­ ±×·±°¡ ÂÍ º°·çÀÓ...


¾ÏÆ° ³ª´Â ±×·¸°Ô ÇÏ±â ½È¾î ´Ù±¹¾î ¼³Á¤À» Çغ»´Ù.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!-- context-locale.xml -->
<?xml version="1.0" encoding="UTF-8"?>
 
    <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
        <property name="basename" value="classpath:messages/messages"/>
        <property name="defaultEncoding" value="UTF-8"/>
    </bean>
    
    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
        <property name="defaultLocale" value="ko"/>
    </bean>
    
</beans>
cs


xml·Î ºó ¼³Á¤ÆÄÀÏÀ» ÀÛ¼ºÇÑ´Ù.

messageSource ´Â locale¿¡ ¸Â°Ô ÇØ´ç ±¹°¡ ¾ð¾î ¸Þ¼¼Áö ÇÁ·ÎÆÛƼ¸¦ °¡Á®¿À±â À§ÇØ °æ·Î¸¦ ÁöÁ¤ÇØÁØ´Ù.

³ª´Â classpath ÇÏÀ§¿¡ messages Æú´õ¿¡ messages_en.properties, messages_ko.properties µîµî ±¹°¡ ¸Þ¼¼Áö ÆÄÀϵé...


±âº» ÀÎÄÚµùÀ» utf-8·Î ÁöÁ¤ÇÏ¿´´Ù.


±× ´ÙÀ½ localeResolver ´Â 3°¡Áö ¹æ½ÄÀÌ Àִµ¥ ³ª´Â ¼¼¼Ç»óÅ¿¡ µû¸¥ localeÀ» °¡Á®¿Í¼­ »ç¿ëÇÒ °ÍÀÌ´Ù.

±× ¿Ü¿¡ AcceptHeaderLocaleResolver °¡ Àִµ¥ À̳༮ÀÌ localeResolverÀÇ µðÆúÆ® °ªÀÌ´Ù.

localeResolver¸¦ ÀÛ¼ºÇÏÁö ¾ÊÀ¸¸é µðÆúÆ®·Î AcceptHeaderLocaleResolver À¸·Î ¼³Á¤µÈ´Ù.

AcceptHeaderLocaleResolver À̳༮Àº ºê¶ó¿ìÀú ¼³Á¤µÈ ¾ð¾î°ªÀ» »ç¿ëÇÑ´Ù°í ÇÏ´Ï »ç¿ëÀÚÀÇ UI»óÀÇ ¾ð¾îº¯°æÀ¸·Î ¾ð¾î¸¦ ¹Ù²ãÁÙ ¼ö ¾ø´Ù.


±× ´ÙÀ½Àº CookieLocaleResolver Àε¥ À̳༮Àº ¸»±×´ë·Î ÄíÅ°¿¡ localeÀ» ¼³Á¤ÇÏ°í ¹Ù²ãÁÖ´Â ¿ªÇÒÀ» ÇÑ´Ù.

³ª´Â ¼¼¼ÇÀ» ÁÖ·Î »ç¿ëÇϹǷΠSessionLocaleResolver¸¦ »ç¿ëÇÒ °ÍÀÌ´Ù.

±×¸®°í µðÇÃÆ® ±¹°¡¾ð¾î·Î ko Çѱ¹¾î¸¦ ÁöÁ¤Çسõ¾Ò´Ù.


1
2
3
4
5
6
<!-- context-servlet.xml -->
    <interceptors>
        <beans:bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
            <beans:property name="paramName" value="lang"/>
        </beans:bean>
    </interceptors>
cs


À̺κÐÀº ÆĶó¹ÌÅÍ·Î ±¹°¡Äڵ带 ¹Ù²åÀ»¶§ ÀÎÅͼÁÅÍÇؼ­ ¾ð¾î¸¦ ¹Ù²ãÁÖ´Â ¿ªÇÒÀ» ÇÏ´Â ºÎºÐÀÌ´Ù.

³ª´Â ÇÊ¿ä¾øÀ» °Í °°±äÇѵ¥... ÆĶó¹ÌÅÍ·Î ³¯·Á¼­ ¹Ù²Ü »óȲÀÌ ¿ÀÁö ¾ÊÀ»±î Çؼ­ ³²°Ü³õ´Â´Ù.

¿¹¸¦ µé¸é ÀÌ·±½ÄÀ¸·Î...

http://localhost:8000/default/?lang=en


ÀÌÁ¦ ±¹°¡Äڵ忡 µû¸¥ ¸Þ¼¼Áö¸¦ ÀÔ·ÂÇØÁØ´Ù.

ÀÏ´Ü en°ú ko Á¤µµ¸¸ ÇÏÀÚ.


1
2
# messages_ko.properties
jb.common.title=½ºÇÁ¸µÇÁ·ÎÁ§Æ®
cs


1
2
# messages_en.properties
jb.common.title=SpringProject
cs


ÀÌ·¸°Ô °°Àº À̸§À¸·Î ¿µ¾î¿Í ÇѱÛÀ» ÀÛ¼ºÇØÁÖ¸é µÈ´Ù.


¿©±â¼­!

¾Æ¸¶ ÀÌŬ¸³½º³»¿¡ propertiesEditor °¡ ¾ø´Â ºÐµéÀº ÇÑ±Û ¸Þ¼¼ÁöÆÄÀÏÀÌ utf-8 ¸ð¾çÀ¸·Î ³ª¿Ã°ÍÀÌ´Ù.


1
2
# messages_ko.properties
jb.common.title=\uc2a4\ud504\ub9c1\ud504\ub85c\uc81d\ud2b8
cs


±×·¯¸é ÇÁ·ÎÆÛƼ ¿¡µðÅ͸¦ ÀÌŬ¸³½º¿¡ ´Ù¿î¹Þ¾Æ¼­ ¸Þ¼¼Áö ÇÁ·ÎÆÛƼÆÄÀϸ¸ '¿ìŬ¸¯ - openWith' ¿¡¼­ ¿¡µðÅ͸¦ ¹Ù²ãÁÖ¸é ÇѱÛÀ» º¼ ¼ö ÀÖ´Ù.


ÀÌÁ¦ jsp ÆäÀÌÁö¿¡¼­ ÀÚµ¿À¸·Î ±¹°¡Äڵ忡 µû¶ó ¹Ù²ð ¼ö ÀÖ°Ô ¼ÂÆÃÀ» ÇØÁà¾ß °ÚÁö¿ä~~


1
2
3
4
5
6
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
...
    <h1>
        Hello world! <spring:message code="jb.common.title"/
    </h1>
...
cs


taglib ¶óÀ̺귯¸® ¼³Á¤ÇØÁֽðí 

ÇØ´ç ±¹°¡º° ¾ð¾î¼³Á¤ÇÒ °÷¿¡ ¸Þ¼¼Áö¸¦ ÁöÁ¤ÇØÁÖ½Ã¸é µË´Ï´Ù.





´Ù±¹¾î ÆäÀÌÁö¸¦ ¿©·¯¹ú ÀÛ¼ºÇÏÁö ¾Ê°íµµ ÀÌ·¸°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.