다국어 모듈 사용 가이드
Last modified: 02 10월 2024개요
chamomile 프레임워크는 properties파일 외에 데이터베이스 기반의 다국어 처리기능을 제공한다.
기존의 properties 파일을 사용하는 방식과 혼용하여 사용이 가능하며 이를 통합하는 유틸리티를 제공한다.
사용자가 직접 만들어놓은 테이블을 이용할 수 도 있으며 이 경우 어드민의 다국어 관리는 사용할 수 없다.
파일 기반 다국어 적용
프로젝트 생성(chamomile-boot-basic)
dependency 등록(pom.xml)
<dependency> <groupId>net.lotte.chamomile.module</groupId> <artifactId>chamomile-i18n</artifactId> </dependency>
리소스 번들 생성(resources/message/Resource Bundle 'message-common')
message 파일 작성(resources/message/Resource Bundle 'message-common'/message-common_en.properties)
exception.runtime=RuntimeException occurs.
message 파일 작성(resources/message/Resource Bundle 'message-common'/message-common_ko.properties)
exception.runtime=런타임오류가 발생했습니다.
컨트롤러 작성
BoardController.java//다국어 관련 인터페이스 private final MessageSource messageSource; /** * 파일 다국어가 적용된 예외를 발생시킵니다. */ @GetMapping("/file-i18n-exception") public ChamomileResponse<Void> fileI18nException() { String message = messageSource.getMessage("exception.runtime", null, Locale.KOREAN); throw new RuntimeException(message); }
데이터베이스 기반 다국어 적용
프로젝트 생성(chamomile-boot-basic)
dependency 등록(pom.xml)
<dependency> <groupId>net.lotte.chamomile.module</groupId> <artifactId>chamomile-i18n</artifactId> </dependency>
다국어 관련 SQL 파일 실행(CHMM_MESSAGE_SOURCE_INFO)
캐모마일 제공 SQL(DDL.sql,DML.sql)을 실행했다면 해당 부분은 넘어간다.CREATE TABLE CHMM_MESSAGE_SOURCE_INFO ( CODE VARCHAR(255) NOT NULL ,COUNTRY_CODE VARCHAR(5) NOT NULL ,LANGUAGE_CODE VARCHAR(5) NOT NULL ,SYS_INSERT_DTM TIMESTAMP DEFAULT CURRENT_TIMESTAMP ,SYS_INSERT_USER_ID VARCHAR(255) DEFAULT 'SYSTEM' ,SYS_UPDATE_DTM TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ,SYS_UPDATE_USER_ID VARCHAR(255) DEFAULT 'SYSTEM' ,MESSAGE VARCHAR(1000) ,USE_YN CHAR(1) DEFAULT '1' ,PRIMARY KEY (CODE, COUNTRY_CODE, LANGUAGE_CODE) ); INSERT INTO CHMM_MESSAGE_SOURCE_INFO (LANGUAGE_CODE, COUNTRY_CODE, CODE, MESSAGE, USE_YN) SELECT 'en', 'US', 'alert.msg.error', 'An error has occurred.', '1' UNION ALL SELECT 'ko', 'KR', 'alert.msg.error', '에러가 발생했습니다.', '1';
컨트롤러 작성
BoardController.java//다국어 관련 인터페이스 private final MessageSource messageSource; /** * 데이터베이스 다국어가 적용된 예외를 발생시킵니다. */ @GetMapping("/database-i18n-exception") public ChamomileResponse<Void> databaseI18nException() { String message = messageSource.getMessage("alert.msg.error", null, Locale.KOREAN); throw new RuntimeException(message); }
note
파일 기반 다국어와 데이터베이스 기반 다국어가 동시 적용된다면 파일기반 다국어 처리를 우선적으로 적용한다.