로컬라이제이션이란
Laravel의 로컬라이제이션 기능은 여러 언어로 번역 문자열을 취득하는 편리한 구조를 제공합니다. 애플리케이션 내에서 여러 언어를 지원하기 위해 사용합니다. 번역 문자열의 관리 방법은 2종류가 있습니다.기본 Laravel 애플리케이션에는
lang 디렉터리가 포함되어 있지 않습니다. 커스터마이즈하려면 lang:publish Artisan 명령어로 공개합니다.로케일의 설정
기본 로케일
애플리케이션의 기본 언어는config/app.php의 locale로 설정합니다.
일반적으로는 .env 파일의 APP_LOCALE 환경 변수를 사용합니다.
fallback_locale은 지정한 언어에 번역 문자열이 존재하지 않는 경우의 폴백 언어입니다.
실행 시의 로케일 변경
App 파사드의 setLocale() 메서드로 요청 단위로 로케일을 변경할 수 있습니다.
현재의 로케일 확인
언어 파일의 작성
PHP 파일 형식
lang/{언어 코드}/ 디렉터리에 PHP 파일을 작성합니다. 키·값 형식의 배열을 반환합니다.
JSON 형식
번역할 문자열이 많은 경우 JSON 형식이 권장됩니다.lang/ 디렉터리에 언어 코드 이름의 JSON 파일을 작성합니다.
PHP 파일 형식과 JSON 형식의 사용 구분
PHP 파일 형식이 적합한 케이스
PHP 파일 형식이 적합한 케이스
- 밸리데이션 에러 메시지 등 기능별로 정리하고 싶은 경우
- Laravel의 내장 번역(
validation.php,auth.php등)을 덮어쓰는 경우 - 계층적인 키 관리가 필요한 경우
JSON 형식이 적합한 케이스
JSON 형식이 적합한 케이스
- UI의 문구가 많고 키를 생각하는 것이 번거로운 경우
- 템플릿에 영어를 그대로 써 두고, 다른 언어는 번역 파일로 대응하는 경우
- 국제화 대응이 나중에 추가된 애플리케이션
번역 문자열의 취득
__() 헬퍼
가장 자주 사용하는 방법입니다. PHP 파일 형식에서는 “파일명.키” 형식으로 지정합니다.
Blade 템플릿에서의 사용
Blade 템플릿에서는{{ __() }}를 사용합니다.
플레이스홀더
번역 문자열에:이름 형식의 플레이스홀더를 매입할 수 있습니다.
__()의 두 번째 인수에 치환값의 배열을 전달합니다.
복수형
언어에 따라 복수형의 룰이 다릅니다. Laravel은| 기호로 단수형과 복수형을 전환할 수 있습니다.
기본적인 복수형
trans_choice() 함수에 수량을 전달해 취득합니다.
범위를 지정한 복수형
보다 상세한 범위 지정이 가능합니다.복수형에서의 플레이스홀더
:count로 수량을 표시할 수 있습니다. 세 번째 인수로 추가의 치환값을 전달할 수 있습니다.
패키지의 언어 파일을 오버라이드
서드파티 패키지가 독자적인 언어 파일을 가지고 있는 경우,lang/vendor/{패키지명}/{언어 코드}/에 같은 이름의 파일을 놓음으로써 덮어쓸 수 있습니다.
예를 들어 skyrim/hearthfire 패키지의 영어 메시지를 커스터마이즈하려면.
실전 예시: 한영 전환 미들웨어
URL 경로나 세션, 사용자 설정에 기반해 로케일을 자동 전환하는 미들웨어의 구현 예시입니다.1
미들웨어 작성
2
미들웨어 구현
3
미들웨어 등록
bootstrap/app.php에서 미들웨어를 등록합니다.4
로케일 전환 라우트 추가
5
Blade 템플릿에 전환 버튼 추가
번역 파일의 구성 예시
정리
번역 문자열의 정의 방법
번역 문자열의 정의 방법
자주 사용하는 함수·파사드
자주 사용하는 함수·파사드
Blade 에서의 사용법
Blade 에서의 사용법