Amir Yousefi
Làm theo
30 Tháng sáu, 2019
·
3 phút đọc
·
Chỉ dành cho thành viên
Tận dụng các tính năng của Laravel và các gói tốt nhất để bản địa hóa
Bản địa hóa Laravel và chức năng đa ngôn ngữ trong web
Hướng dẫn từng bước để triển khai chức năng đa ngôn ngữ trong các dự án web của bạn
Laravel giúp việc triển khai một trang web đa ngôn ngữ trở nên thật dễ dàng. Bạn có thể thực hiện nó với…
Bản địa hóa trong Laravel theo thuật ngữ đơn giản nhất có nghĩa là thay đổi ngôn ngữ mặc định của ứng dụng thành ngôn ngữ được người dùng ưa thích
Trong bài viết này, chúng tôi sẽ hướng dẫn quy trình triển khai Bản địa hóa một cách rất đơn giản. Chúng tôi sẽ triển khai một ứng dụng hỗ trợ bốn ngôn ngữ là tiếng Đức, tiếng Trung, tiếng Pháp và tiếng Anh với tiếng Anh là ngôn ngữ mặc định
Yêu cầu
- Kiến thức về Laravel
Dự án mẫu được sử dụng trong bài viết này là trên Github. Sao chép dự án và thiết lập nó, hãy bắt đầu
Bắt đầu
Có hai cách khác nhau để chúng ta có thể đạt được bản địa hóa trong Laravel
- Sử dụng Phím tắt
- Sử dụng chuỗi dịch làm khóa
Để hiểu ý nghĩa chung của từng loại ở trên, hãy xem tài liệu chính thức của Laravel tại đây. Với mục đích của bài viết này, trọng tâm của chúng tôi sẽ là Sử dụng chuỗi dịch làm khóa và cách triển khai cài đặt ngôn ngữ động
Bước 1
Bước đầu tiên là tạo chuỗi dịch. Trong thư mục resources/lang
, tạo các tệp sau
zh.json
// cho ngôn ngữ Trung Quốcfr.json
//cho tiếng Phápge.json
// cho tiếng Đức
Giả sử rằng văn bản bên dưới là văn bản trên trang web chúng tôi muốn dịch
Chào bạn
Tôi hy vọng điều này gặp bạn tốt
Hãy nói về Bản địa hóa trong Laravel, tin tôi đi, đó là một chủ đề tuyệt vời. Tuy nhiên, không nhiều người đã nhận ra điều tuyệt vời này
Bản địa hóa theo từ điển, có nghĩa là điều chỉnh một cái gì đó đến một vị trí hoặc địa điểm cố định. Do đó, đủ để nói rằng bản địa hóa Laravel liên quan đến việc điều chỉnh ngôn ngữ được sử dụng trong ứng dụng theo vị trí nhất định của người dùng
Điều này có thể không có nhiều ý nghĩa với bạn nhưng bạn không có lý do gì để lo lắng. Không có gì nói ở đây nên tranh cãi vì ý tưởng chỉ là bịa ra từ ngữ nhằm mục đích thử nghiệm hướng dẫn này
Cách văn bản xuất hiện trên trang web
Đối với mỗi tệp JSON ngôn ngữ ở trên, hãy sao chép văn bản bạn muốn dịch và dán vào Google dịch để có được văn bản tương đương với ngôn ngữ mong muốn. Ví dụ, các. json, từ. json và zh. json cho văn bản trên sẽ giống như bên dưới
Ghi chú
Toàn bộ văn bản sẽ được đặt trong chỉ thị lưỡi dao
@lang[]
hoặc__[]
để dịch phải được dịch cùng nhau. Ví dụ, nếu có hai câu trong đoạn văn, hai câu phải được dịch cùng nhau
Trong view, dịch được thực hiện như hình bên dưới
Như bạn có thể thấy, bạn có thể chọn sử dụng @lang[]
hoặc __[]
, tùy theo cách nào bạn thấy dễ sử dụng hơn sẽ hoạt động tốt
Bước 2
Tiếp theo, chúng ta sẽ tạo một LocalizationController và một phần mềm trung gian để tự động thay đổi ngôn ngữ
$ php artisan make:controller LocalizationController
resources/lang
0
Bây giờ hãy chỉnh sửa LocalizationController. php như sau
Tiếp theo, hãy tạo tuyến đường, thêm tuyến đường bên dưới vào web. php
Route::get['lang/{locale}', 'LocalizationController@index'];
Lộ trình trông như thế nào là do bạn lựa chọn. Đối với bài viết này, trình đơn thả xuống chuyển đổi ngôn ngữ sẽ trông như hình bên dưới và nằm ở resources/lang
1
Bước 3
Hãy chỉnh sửa phần mềm trung gian Bản địa hóa. Phần mềm trung gian Bản địa hóa buộc ngôn ngữ đã chọn cho mọi yêu cầu. Tôi đã nói 'buộc' vì việc đặt ngôn ngữ trong phương thức chỉ mục của LocalizationController là không đủ để thực hiện thủ thuật
Chỉnh sửa phần mềm trung gian Bản địa hóa như sau
Đối với mọi yêu cầu đến, phần mềm trung gian sẽ kiểm tra ngôn ngữ hiện tại trong phiên và đặt ngôn ngữ đó cho phù hợp
Tiếp theo, thêm phần mềm trung gian vào Kernel. php. Nó sẽ được thêm vào mảng resources/lang
2 như hình bên dưới
đó là nó. Nếu bạn làm theo các bước một cách chính xác, thì bây giờ nó sẽ hoạt động hoàn hảo
Phần kết luận
Chúng tôi đã xem xét cẩn thận các quy trình liên quan đến việc triển khai bản địa hóa đa ngôn ngữ trong Laravel. Hãy chia sẻ ý kiến của bạn về chủ đề này. Nếu bạn cần làm rõ thêm bất kỳ điều gì, vui lòng liên hệ tại đây hoặc qua Twitter