Bài 10: Đa ngôn ngữ (localization) trong Laravel 5.x

Admin
21-06-2017

1. Giới thiệu

Website đa ngôn ngữ luôn là điều được các lập trình viên quan tâm khi sử dụng framework, trong Laravel mọi chuyện trở nên dễ dàng hơn. Laravel cung cấp cho người dùng một cách thức đợn giản để ứng dụng đa ngôn ngữ. Các file Language được lưu trong thư mục resource/lang

Dưới đây mình tạo 2 thư mục en, vi tương ứng với 2 ngôn ngữ là Tiếng Anh và Tiếng Việt

\lang
	\en
		auth.php
		pagination.php
		passwords.php
		validation.php
	\vi
		auth.php
		pagination.php
		passwords.php
		validation.php

Tất cả các file ngôn ngữ chỉ trả về một mảng các chuỗi. Ví dụ:

Trong thư mục \en mình tạo 1 file tên hello.php với nội dung file là:

return [
    'welcome' => 'Hello World!'
];

Còn trong thư mục \vi mình cũng tạo 1 file tên hello.php với nội dung:

return [
    'welcome' => 'Chào thế giới!'
];

Ngôn ngữ được cấu hình mặc định trong file conflig/app.php

'locale' => 'en',

2. Sử dụng đa ngôn ngữ trong Laravel (Localization)

Để rõ hơn mình sẽ tạo 1 ví dụ nhỏ:

Tạo file route URL để test

Route::get('test-lang', 'DemoController@testLang' );

Tại function testLang :

 

echo __('hello.welcome');
//hello là tên file, wellcome là key của mảng 

kết quả sẽ là:

Lý do là mặc định ngôn ngữ là en nên Laravel sẽ vào thư mục resource/lang/en sau đó truy xuất file hello lấy kết quả

Vậy để biết ngôn ngữ hiện tại là gì và muốn thay đổi ngôn ngữ thì làm thế nào?

$lang = App::getLocale();
// Lấy ngôn ngữ hiện tại trong Laravel
// Nhớ use App; trước khi sử dụng nhé ^^!
var_dump($lang);

App::setLocale('vi');
// Cài đặt ngôn ngữ mới cho Project
$lang_new = App::getLocale();
var_dump($lang_new);

Bây giờ bạn đã có thể cài đặt ngôn ngữ mới cho Laravel, thông thường khi đổi ngôn ngữ ta thường lưu vào Session để giữ giá trị lang mà người dùng chọn. 

Qua bài này các bạn đã nắm cơ bản về cách thức Laravel hỗ trợ đa ngôn ngữ.Trong bài sau mình sẽ hướng dẫn về Session và Middleware trong Laravel, nếu có gì không hiểu các bạn comment bên dưới nhé

Nhớ like nếu giúp ích được cho bạn :D. Chúc thành công!