Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Làm thế nào để Spatie xử lý các bản dịch khi cả tệp cơ sở dữ liệu và ngôn ngữ được sử dụng


Làm thế nào để Spatie xử lý các bản dịch khi cả tệp cơ sở dữ liệu và ngôn ngữ được sử dụng


Spatie xử lý các bản dịch với cả các tệp cơ sở dữ liệu và ngôn ngữ chủ yếu thông qua gói bộ tải truyền dịch Laravel, tích hợp liền mạch với hệ thống dịch gốc của Laravel.

Cách thức hoạt động khi sử dụng cả tệp cơ sở dữ liệu và ngôn ngữ

- Gói cho phép bạn lưu trữ các bản dịch trong cơ sở dữ liệu bằng cách sử dụng bảng chuyên dụng (`ngôn ngữ_lines`). Mỗi mục dịch được đại diện bởi một thể hiện mô hình `langereline`, bao gồm:
- `Nhóm`: Nhóm dịch (ví dụ:" Xác thực "hoặc" Auth ").
- `key`: khóa dịch trong nhóm.
- `Text`: Một mảng giữ các bản dịch cho các địa phương khác nhau (ví dụ:` ['en' => 'Đây là một trường bắt buộc', 'nl' => 'dit là een verplicht veld'] `).

- Khi bạn yêu cầu bản dịch bằng các hàm dịch thông thường của Laravel như `trans ()` hoặc `__ ()`, gói trước tiên sẽ kiểm tra cơ sở dữ liệu cho bản dịch. Nếu nó tìm thấy một mục nhập phù hợp, nó sẽ trả về phiên bản cơ sở dữ liệu.

- Nếu bản dịch không được tìm thấy trong cơ sở dữ liệu, nó sẽ quay trở lại các tệp ngôn ngữ truyền thống được lưu trữ trong thư mục Laravelâ s `Lang`.

- Điều này có nghĩa là dịch cơ sở dữ liệu ghi đè các bản dịch tệp ngôn ngữ nếu cả hai tồn tại cho cùng một khóa và locale.

- Gói hỗ trợ cả các bản dịch dựa trên nhóm (ví dụ: `idalle.required`) và các bản dịch JSON bằng cách sử dụng tên nhóm đặc biệt` '*' `cho các dòng dịch JSON.

Các tính năng và hành vi bổ sung

- Gói nhóm các nhóm dịch để tối ưu hóa hiệu suất, giảm các truy vấn cơ sở dữ liệu theo các yêu cầu dịch lặp lại. Bộ đệm bị vô hiệu khi các bản dịch được tạo, cập nhật hoặc xóa.

- Có thể mở rộng: Bạn có thể thêm các nhà cung cấp dịch mã tùy chỉnh (ví dụ: YAML, CSV) bằng cách triển khai giao diện `dịch tải của gói, cho phép các bản dịch được tải từ các nguồn khác ngoài các tệp cơ sở dữ liệu và ngôn ngữ.

- Bạn có thể tiếp tục sử dụng Trình trợ giúp dịch và chỉ thị dịch thuật mặc định của Laravel (`@lang`,` trans () `,` __ () `) mà không cần sửa đổi.

Bản tóm tắt

Gói Trình tải dịch thuật của Spatie đã hợp nhất các bản dịch được lưu trữ cơ sở dữ liệu với các bản dịch dựa trên tệp gốc của Laravel bằng cách ưu tiên các mục cơ sở dữ liệu. Điều này cho phép chỉnh sửa các bản dịch động thông qua giao diện người dùng được hỗ trợ cơ sở dữ liệu trong khi giữ lại dự phòng cho các tệp ngôn ngữ tĩnh. Việc tích hợp trơn tru, đòi hỏi các thay đổi tối thiểu đối với các cuộc gọi dịch thuật hiện có và cung cấp bộ nhớ đệm và mở rộng cho các trường hợp sử dụng nâng cao [1] [3] [5] [6] [7].

Trích dẫn:
[1)
[2] https://spatie.be/docs/laravel-translatable/v6/introduction
[3] https://laravel-news.com/translation-loader-package
[4] https://github.com/spatie/laravel-pranslatable
[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-store-language-lines-in-the-database
[8] https://laraveldaily.com/lesson/multi-language-laravel/spatie-laravel-translatable