Total: Today: Yesterday:
'프레임워크'에 해당되는 글 1건
2015.02.03 다국어 처리 (/alfresco) 1
프레임워크/Alfresco | 2015. 2. 3. 10:17 | Posted by 자수씨

알프레스코에서 비즈니스 로직단을 담당하는 /alfresco 컨텍스트에서 다국어 처리하는 방법을 알아보자.



사전 준비물

다국어 처리를 위해서는 당연히 준비되어야 하는 항목이 있다.

  • 다국어 properties 파일
  • 다국어 설정을 위한 xml 파일


다국어 properties 파일

언어별 key-value 값을 가지고 있는 properties 파일은 작업 전에 필수적으로 준비해야 하는 항목이다.


다음의 경로에 아래의 파일이 있다고 가정해보자.

/[프로젝트 명]/src/main/amp/config/alfresco/module/vince-server/messages


.properties 앞에 있는 언어/국가 코드로 다국어 처리를 하게 되는데, 언어/국가 코드가 없는 경우는 디폴트라는 의미이고, 언어로만 정의할 수도 있으며, 언어_국가로 정의할 수 있다. 국가로만은 정의가 불가능하다.


다국어 설정을 위한 xml 파일

스프링 컨터이너에서 로드하는 xml 에 다음과 같은 설정 추가가 필요하다.

bean id 는 중복되면 안되기 때문에 메시지 경로와 이름을 적절히 조합하여 사용해야 한다.

### xml

<bean id="vince.resourceBundles" class="org.alfresco.i18n.ResourceBundleBootstrapComponent">

<property name="resourceBundles">

<list>

<value>alfresco.module.vince-server.messages.vince-message</value>

</list>

</property>

</bean>



위의 properties 파일의 위치가 설정 값에 영향을 미치는데, /config 에서 부터 .properties 전 까지의 경로에서 '/' 를 '.' 으로 바꾸어주면 된다.


여러 종류의 다국어 properties 를 적용하려면 <list> 에 여러 <value> 를 추가하면 된다.



다국어 처리

properties 에 다음과 같은 다국어가 있다고 가정해보자.


vince.label.name = 이름

vince.alert.duplicateName = {0} 는 중복된 이름입니다. {1} 자 이내로 다시 입력하시기 바랍니다.


사용법은 아래와 같다.

### java

final String nameLabel = I18NUtil.getMessage("vince.label.name"));

// nameLabel = 이름

...


final String inputName = "자수씨";

final int maxNameLength = 20;

final String duplicateNameAlertMessage = 

I18NUtil.getMessage("vince.label.name", inputName, maxNameLength));

// duplicateNameAlertMessage = 자수씨 는 중복된 이름입니다. 20 자 이내로 다시 입력하시기 바랍니다.


org.springframework.extensions.surf.util.I18NUtil 클래스의 getMessage 메소드를 이용하여 처리할 수 있다.

getMessage 메소드는 총 4가지가 있는데, 일반적인 다국어 key 를 이용하는 방법과, 파라미터를 치환하는 방법이다. 자세한 내용은 위의 사용법을 보고 확인해보자.