Hướng dẫn php multilanguage - đa ngôn ngữ php
Các website ngày nay muốn tiếp cận với nhiều loại khách hàng thì đều cần phải sử dụng đa ngôn ngữ (i18n). Với những ai sử dụng Laravel cho việc phát triển website thì vấn đề i18n được hỗ trợ và xử lý rất đơn giản. Bài viết này mình sẽ giới thiệu đến các bạn một số cách để xử lý i18n trong Laravel. Show
1. Cách thiết lập.1.1 Sử dụng file php
Trong các folder ta tạo các file php và đặt tên sao cho phù hợp, như trên giả sử mình tạo file là 1, trong cả 2 folder ban đều tạo các file giống nhau và nội dung trong các file mình tạo như sau. 2
3
Để sử dụng ta có hàm 4, và trong file view blade bạn sẽ gọi 5, cụ thể là 6, khi đó sẽ hiển thị ra người dùng là 7 hoặc 8 tùy theo cấu hình hiện tại. Để thay đổi cấu hình ngôn ngữ hiển thị mình sẽ hướng dẫn ở phần duới của bài viết này.
Và để sử dụng thì ta làm như thế này 1, khi đó sẽ người dùng sẽ thấy được 2.
Khi gọi thì ta gọi hàm 5 với số lượng là 1 thì trả về 6, còn với số lượng lớn hơn 1 thì trả về 7. Hoặc ta có thể tùy chỉnh số lượng cho phù hợp với cách dưới đây: 2
1.2 Sử dụng file jsonKhi ứng dụng của ta lớn, phải sử dụng rất nhiều đến đa ngôn ngữ, thì việc tạo các file với các keyword ngắn và viết liền nhiều khi có thể gây nhầm lẫn hoặc khó nhớ. Và từ phiên bản bản 5.4 Laravel bổ sung thêm một cách để làm ứng dụng đa ngôn ngữ. Mình nghĩ không hẳn tự nhiên những người phát triển lại bổ sung thêm cách này, thật sự nó có thể tạo cho bạn sự thoải mái khi sử dụng. Như cách ở trên thì ta cần tạo các file và trong mỗi file phải tạo các keyword ngắn và viết liền, khi ứng dụng nhiều dần các keyword đọc rất khó hiểu và khi tạo keyword ta lại phải đau đầu nghĩ xem tạo keyword như thế nào cho phù hợp. Với cách này thì ta có thể dùng cả đoạn văn làm keyword, văn bản đầy đủ có thể làm ứng dụng của bạn dễ đọc, chứ không cần phải vào file tìm xem keyword kia được viết thay thế cho từ nào. Mình sẽ hướng dẫn làm với cách này như sau: Ta tạo file json tại vị trí như sau:
Lưu ý một chút là cách dùng file php thì ta cần để trong folder, còn với cách này thì ta sẽ để file 9 ngay tại folder 0 như trên. 1
Cuối file ko có dấu 2 để đúng với cú pháp của file 3. Cách dùng thì ta sử dụng hàm 4, đây là 2 dấu gạch dưới, mình đã từng làm với Magento và cũng có cú pháp tương tự khi i18n. Ví dụ:
Mình cố tình để tham số vào phần keyword để khi đọc thì ta có thể biết ngay cần bổ sung gì, hoặc nếu không thích thì bạn có thể bỏ tham số bên keyword đi. 2. Website thay đổi ngôn ngữ theo người dùngBên trên mình đã giới thiệu 2 cách để sử dụng i18n trong Laravel, và đây mình sẽ tiếp tục hướng dẫn một số cách để website thay đổi ngôn ngữ theo ý người dùng. Trước tiên thì ta nên cấu hình ngôn ngữ mặc định của website trong file 5
Ta cấu hình các thông số trên cho phù hợp và với cách 1 thì các bạn để tên 6, còn với cách 2 thì các ta để tên file 3.2.1 Sử dụng 'Welcome to Website!', 'hello' => 'Hello, :name', 'apple' => 'There is one apple|There are many apples', ]; 8 và 'Welcome to Website!', 'hello' => 'Hello, :name', 'apple' => 'There is one apple|There are many apples', ]; 9Session để lưu ngôn ngữ hiện tại khách đang chọn, middleware để tiền xử lý cho website của bạn thay đổi ngôn ngữ theo lựa chọn của người dùng. Tạo 1 route xử lý thay đổi ngôn ngữ. 0Đặt 2 link sau vào vị trí phù hợp trên website 1Trong HomeControler tại method 0 : 2Tiếp theo ta sẽ tạo middware để xử lý cho ứng dụng theo ngôn ngữ người dùng lựa chọn được lưu trong Session. Chạy lệnh sau trong ứng dụng Laravel 1. Một file đã được sinh ra tại 2, vào file này và chỉnh sửa như sau tại method 3 3Và để sử dụng 9 thì ta cần khai báo trong 5 4Và bước cuối cùng để toàn bộ route được xử lý qua 9 này, và mình làm như sau tại 7 5Thế là xong rồi đó, bạn nên tùy chỉnh một số chỗ cho phù hợp với ứng dụng của bạn. 2.2 Sử dụng subdomainVới cách này thì ta cần tạo subdomain cho từng ngôn ngữ sử dụng, giả sử mình có 8 và 9, ta sẽ tạo route như sau 6Và chỉ đơn giản cho người dùng truy cập vào trang ứng với ngôn ngữ họ muốn sử dụng. 2.3 Sử dụng trên urlKiểu này cũng khá giống kiểu subdomain, bạn sẽ thêm ngôn ngữ vào trước toàn bộ các 0 trong ứng dụng. 7Với cách này ta phải truyền thêm ngôn ngữ vào toàn bộ các 0.KếtThế là hết rồi, hy vọng bạn có thể áp dụng được bài viết này vào ứng dụng của bạn. |