라라벨은 애플리케이션이 다국어에 대응할 수 있도록 다양한 언어로 번역된 문자열을 검색하는 편리한 방법을 제공합니다. 문자열은 resource/lang 디렉토리에 로케일 단위로 저장되며 최초 설치시에는 라라벨에서 기본 제공되는 영어권(en) 에 대한 문자열들이 기본 제공됩니다.
Reference : https://laravel.kr/docs/8.x/localization
사전설정
- 로케일 설정
# config/app.php // 기본 로케일 'locale' => 'ko', // 대체 로케일 'fallback_locale' => 'en', //지정된 언어로 설정된 문자열이 존재하지 않는 경우에 사용할 수 있는 "대체 언어"를 설정 할 수 있다.
- 문자열 정의
Laravel 을 최초 설치하면 resources/lang/en 경로에 auth, pagination, passwords, validation 4개 항목에 대한 기본 메시지들이 이미 정의되어있고 이 장에서는 해당 메시지를 ko 로 그대로 복사하고 필요한 메시지를 번역해 테스트 해보기로 한다.
# resources/lang/ko/validation.php return [ ... 'required' => ':attribute 은(는) 필수값 입니다.', ... ]; # 복사된 한국어 메시지중 'required' 라는 키의 메시지를 상기와 같이 수정했다.
다국어 문자 조회
<?php
echo __('messages.welcome');
echo __('I love programming.');
# Blade Template 을 사용하는 경우 아래와 같은 형태로 사용 가능하다.
{{ __('message.welcome) }}
@lang('messages.welcome')
예제
<?php
...
public function store(Request $request)
{
$data = $request->all();
$rules = [
'name' => 'required',
'email' => 'required',
'password' => 'required',
'test' => 'required',
];
/**
* Translate the given message.
*
* @param string|null $key
* @param array $replace
* @param string|null $locale
* @return string|array|null
*/
// __(string $key, array $replace, string $locale)
$messages = [
'test.required' => __('validation.required', [], 'ko'),
];
$validator = Validator::make($data, $rules, $messages);
if ($validator->fails()) {
throw new ValidateException($validator);
}
return response(['foo' => 'bar'], 201);
}
...
상기와 같이 작성후 테스트 유닛 (디버깅 모드)를 통해 전달된 메시지를 아래와 같이 확인해보았다.
'Framework > Laravel' 카테고리의 다른 글
[Laravel] Error 핸들링 (CustomException) (0) | 2021.11.19 |
---|---|
[Laravel] 라우팅 정책 변경하기 (API 를 도메인 기반으로) (0) | 2021.11.18 |
[Laravel] 설치하기 (0) | 2021.11.18 |