Page tree

기본적인 화면 설계는 끝났고 이제 우리의 애플리케이션을 해외에 수출할 경우를 염두에 두고 locale 설정에 따라 다른 메시지를 출력할 수 있도록 프로젝트를 구성해 보겠습니다.

 

라라벨의 특징에서 언급한대로 국제화 애플리케이션을 만들기 위해 언어별 메시지 지역화 기능을 제공하고 있으며 번역된 메시지는 resources/lang/언어명 폴더 밑에 넣어주면 됩니다.

언어명은 config/app.php 에 등록된 locale 이름이며 프로젝트를 만들고 ko 로 설정했으므로 ko 폴더밑에 넣어주면 되며 라라벨의 기본 메시지 파일은 전 세계의 다양한 공헌자들에 의해 이미 번역되어 있으므로 추가로 번역하지 않아도 됩니다.

 

그러면 라라벨 메시지 파일을 번역하는 프로젝트인 laravel-lang(http://git.io/vCPEQ)  프로젝트를 통해 사전 번역된 메시지 파일을 설치하여 지역화를 진행해 보겠습니다.

 

먼저 컴포저로 해당 프로젝트를 설치하며 설치한 메시지 파일들은 vendor/caouecs/laravel4-lang/ 에 위치합니다.

composer require "caouecs/laravel4-lang" "~2.0"

 

다른 패키지와 달리 Service Provider 를 등록할 필요는 없고 번역된 언어 파일을 resources/lang 폴더 밑에 복사하면 됩니다. 폴더 복사이므로 cp 에 -a 옵션을 추가해야 하며 다음은 한글 메시지 폴더를 복사하는 예제입니다.

$ cp -a vendor/caouecs/laravel4-lang/ko/ resources/lang/

 

제대로 동작하는지 artisan tinker 명령어를 통해서 간단하게 테스트 할 수 있습니다. Lang::get($key) 또는 trans($key) 헬퍼 메소드를 사용하면 되며 여기서는 더 짧은 trans 를 사용하여 정상 설정 여부를 확인해 봅시다.

$ php artisan tinker
 
>>> trans('validation.accepted')
=> ":attribute 필드는 필수 사용 항목입니다."

라라벨은 App::setLocale($locale) 메소드로 런타임에 로캘 변경이 가능하므로 다른 언어로 변경하고 메시지의 변경 여부를 확인해 보겠습니다.

>>> App::setLocale('en')
=> null

>>> trans('validation.accepted')
=> "The :attribute must be accepted."

locale 설정만으로 app 변경없이 언어에 맞는 메시지가 출력되는 것을 확인할 수 있습니다.

 

이제 라라벨 한글화 작업이 완료되었으며 각종 예외 상황이나 입력 값 검증시 번역된 한글로 메시지 파일이 표시되며 다른 언어권에 애플리케이션을 수출할 경우 해당 언어로 메시지를 번역한 후에 config/app.php 의 locale 설정을 변경해 주면 됩니다.

참고 자료