Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 데이터베이스와 언어 파일이 모두 사용될 때 Spatie는 변환을 어떻게 처리합니까?


데이터베이스와 언어 파일이 모두 사용될 때 Spatie는 변환을 어떻게 처리합니까?


Spatie는 주로 Laravel Translation-Loader 패키지를 통해 데이터베이스 및 언어 파일로 변환을 처리합니다. Laravel의 기본 번역 시스템과 완벽하게 통합됩니다.

데이터베이스와 언어 파일을 모두 사용할 때 작동하는 방법

- 패키지를 사용하면 전용 테이블 (`language_lines`)을 사용하여 데이터베이스에 번역을 저장할 수 있습니다. 각 번역 항목은 다음을 포함하는 '언어 라인'모델 인스턴스로 표시됩니다.
-`group ': 번역 그룹 (예 : "검증"또는 "auth").
-`key ': 그룹 내 번역 키.
-`text ': 다른 로컬에 대한 번역을 보유하는 배열 (예 :`[en'=> '필수 필드입니다.

-`trans ()`또는`__ ()`와 같은 Laravel의 일반적인 번역 함수를 사용하여 번역을 요청할 때, 패키지는 먼저 데이터베이스를 번역을 확인합니다. 일치하는 항목을 찾으면 데이터베이스 버전을 반환합니다.

- 변환이 데이터베이스에서 찾을 수없는 경우 Laravel의`Resources/Lang '디렉토리에 저장된 기존 언어 파일로 돌아갑니다.

- 이는 동일한 키와 로케일에 모두 존재하는 경우 데이터베이스 번역이 언어 파일 변환을 무시한다는 것을 의미합니다.

- 패키지는 JSON 번역 라인에 특수 그룹 이름` '*'`를 사용하여 그룹 기반 번역 (예 :`validation.required`)과 JSON 번역을 지원합니다.

추가 기능 및 행동

- 패키지는 번역 그룹을 캐시하여 성능을 최적화하여 반복 번역 요청에서 데이터베이스 쿼리를 줄입니다. 번역이 생성, 업데이트 또는 삭제되면 캐시가 무효화됩니다.

- 확장 가능 : 패키지 'TranslationLoader'인터페이스를 구현하여 사용자 정의 번역 제공 업체 (예 : Yaml, CSV)를 추가하여 데이터베이스 및 언어 파일 이외의 다른 소스에서 번역을로드 할 수 있습니다.

-Laravel의 기본 번역 도우미 및 블레이드 지시문 (`@lang`,`trans ()`,`__ ()`)를 수정하지 않고 계속 사용할 수 있습니다.

요약

Spatie의 Translation Loader 패키지는 데이터베이스 저장 변환을 데이터베이스 항목의 우선 순위를 지정하여 Laravel의 기본 파일 기반 번역과 효과적으로 병합합니다. 이를 통해 정적 언어 파일에 대한 폴백을 유지하면서 데이터베이스 지원 UI를 통한 번역을 동적으로 편집 할 수 있습니다. 통합은 원활하며 기존 번역 호출을 최소화해야하며 고급 사용 사례에 대한 캐싱 및 확장 성을 제공합니다 [1] [3] [5] [6] [7].

인용 :
[1] https://github.com/spatie/laravel-translation-loader
[2] https://spatie.be/docs/laravel-translatable/v6/introduction
[3] https://laravel-news.com/translation-loader-package
[4] https://github.com/spatie/laravel-translatable
[5] https://www.laravelblogs.com/courses/multi-language-laravel/spatie-laravel-translation-loader
[6] https://packagist.org/packages/spatie/laravel-translation-loader
[7] https://freek.dev/593-a-laravel-package-to-language-lines-in-the-database
[8] https://laraveldaily.com/lesson/multi-language-laravel/spatie-laravel-translatable