Giao diện
Đa ngôn ngữ (Localization)
Giới thiệu (Introduction)
Laravel hỗ trợ đa ngôn ngữ (localization) giúp dịch strings trong ứng dụng sang nhiều ngôn ngữ. Translation strings được lưu trong thư mục lang.
Publishing Language Files
bash
php artisan lang:publishCấu hình Locale
Cấu hình trong config/app.php:
php
'locale' => env('APP_LOCALE', 'en'),
'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'),Thay đổi Locale tại Runtime
php
use Illuminate\Support\Facades\App;
App::setLocale('vi');
$locale = App::currentLocale();
if (App::isLocale('vi')) {
// ...
}Định nghĩa Translation Strings
Sử dụng Short Keys
Lưu translations trong files PHP trong lang/:
/lang
/en
messages.php
/vi
messages.phpphp
// lang/vi/messages.php
return [
'welcome' => 'Chào mừng bạn đến với ứng dụng!',
];Sử dụng Translation Strings làm Keys
Lưu trong JSON files:
/lang
en.json
vi.jsonjson
// lang/vi.json
{
"I love programming.": "Tôi yêu lập trình.",
"Welcome to :app": "Chào mừng đến với :app"
}Truy xuất Translation Strings
Dùng hàm __() hoặc directive @lang:
php
echo __('messages.welcome');
echo __('I love programming.');Trong Blade:
blade
{{ __('messages.welcome') }}
@lang('messages.welcome')Nếu key không tồn tại, trả về key gốc.
Thay thế Parameters
php
// 'welcome' => 'Welcome, :name'
echo __('messages.welcome', ['name' => 'Taylor']);
// "Welcome, Taylor"
// UPPER_CASE: 'welcome' => 'Welcome, :NAME'
// Title Case: 'welcome' => 'Welcome, :Name'Pluralization (Số nhiều)
Dùng ký tự | để phân tách:
php
// 'apples' => 'There is one apple|There are many apples'
echo trans_choice('messages.apples', 1);
// "There is one apple"
echo trans_choice('messages.apples', 10);
// "There are many apples"Quy tắc phức tạp hơn:
php
'minutes_ago' => '{1} :value phút trước|[2,*] :value phút trước',php
echo trans_choice('messages.minutes_ago', 5, ['value' => 5]);
// "5 phút trước"Override Package Language Files
Override bằng cách đặt file tại lang/vendor/{package}/{locale}:
/lang
/vendor
/courier
/vi
messages.phpChỉ cần override lines bạn muốn thay đổi — phần còn lại load từ package gốc.