Mục lục
Mục lục này tương ứng với mục lục trên trang chủ của Laravel.
-
Mở đầu
- Release Notes
- Upgrade Guide
- Contribution Guide
- API Documentation
-
Thiết lập
-
Hướng dẫn
-
Cơ bản
- Routing
- Middleware
- Controllers
- Requests
- Responses
- Views
- Blade Templates
-
Nền tảng kiến trúc
-
Services
- Authentication
- Authorization
- Artisan Console
- Billing
- Cache
- Collections
- Elixir
- Encryption
- Errors & Logging
- Events
- Filesystem & Cloud Storage
- Hashing
- Helpers
- Localization
- Package Development
- Pagination
- Queues
- Redis
- Envoy or SSH Tasks
- Task Scheduling
- Testing
- Validation
-
Database
- Getting Started
- Query Builder
- Migrations
- Seeding
-
Eloquent ORM
Localization
Giới thiệu
Chức năng localization của Laravel cung cấp một cách tiện lợi cho việc lấy các chuỗi dữ liệu từ các ngôn ngữ khác nhau cho phép hỗ trợ ứng dụng đa ngôn ngữ.
Các chuỗi ngôn ngữ được lưu trong file nằm trong thư mục resources/lang
. Bên trong thư mục này có chứa các thư mục con cho mỗi ngôn ngữ được hỗ trợ bởi ứng dụng:
/resources
/lang
/en
messages.php
/es
messages.php
Tất cả các file ngôn ngữ đơn giản chỉ cần trả về mảng các chuỗi khoá. Ví dụ:
<?php
return [
'welcome' => 'Welcome to our application'
];
Cấu hình ngôn ngữ
Ngôn ngữ mặc định được thiết lập trong file cấu hình config/app.php
. Dĩ nhiên, bạn có thể thay đổi giá trị này sao cho phù hợp với yêu cầu của bạn. Bạn cũng có thể thay đổi ngôn ngữ sử dụng mặc định bằng cách sử dụng hàm setLocale
của App
facade:
Route::get('welcome/{locale}', function ($locale) {
App::setLocale($locale);
//
});
Bạn cũng có thể cấu hình "ngôn ngữ thay thế" khi mà ngôn ngữ đang được sử dụng không có chứa file ngôn ngữ tương ứng. Giống như ngôn ngữ mặc định, ngôn ngữ thay thế cũng có thể được cấu hình trong file config/app.php
:
'fallback_locale' => 'en',
Bạn có thể kiểm tra nếu một ngôn ngữ đang được sử dụng bằng cách gọi hàm isLocale
trong App
facade:
if (App::isLocale('en')) {
//
}
Để lấy ngôn ngữ đang sử dụng hiện tại, gọi hàm getLocale
trong App
facade:
return App::getLocale();
Sử dụng cơ bản
Bạn có thể lấy các dòng trong file ngôn ngữ bằng cách sử dụng trans
helper. Hàm trans
nhận tên file và khoá trong file ngôn ngữ ở đối số đầu tiên. Ví dụ, để lấy dòng có khoá welcome
trong file resources/lang/messages.php
:
echo trans('messages.welcome');
Nếu bạn sử dụng Blade thì bạn có thể thực hiện output sử dụng @lang
directive
{{ trans('messages.welcome') }}
@lang('messages.welcome')
Nếu dòng ngôn ngữ không tồn tại, thì hàm trans
sẽ trả về khoá của dòng đó. Vì thế, ở ví dụ trên, hàm trans
sẽ trả về messages.welcome
nếu dòng này không tồn tại.
Đổi tham số trong dòng ngôn ngữ
Nếu muốn, bạn có thể khai báo các giá trị thay thế trong file ngôn ngữ. Tất cả các giá trị thay thế được tiền tố với dấu :
. Ví dụ, bạn có thể khai báo một nội dung welcome với tên của giá trị thay thế:
'welcome' => 'Welcome, :name',
Để thực hiện thay thế khi truy xuất lấy ngôn ngữ, truyền vào một mảng các giá trị thay thay thế vào tham số thứ hai của hàm trans
:
echo trans('messages.welcome', ['name' => 'dayle']);
Nếu giá trị thay thế chứa toàn kí tự in hoa, hoặc chỉ chữ cái đầu viết hoa, thì giá trị được truyền vào sẽ được viết hoa tương ứng:
'welcome' => 'Welcome, :NAME', // Welcome, DAYLE
'goodbye' => 'Goodbye, :Name', // Goodbye, Dayle
Tạo số nhiều
Tạo số nhiều là một vấn đề khá phức tạp vì các ngôn ngữ khác nhau đều có các quy tắc phức tạp để chuyển từ sang số nhiều. Bằng cách sử dụng dấu |
, bạn có thể phân biệt được thể số ít hay thể số nhiều của một chuỗi:
'apples' => 'There is one apple|There are many apples',
Sau đó, bạn có thể sử dụng hàm trans_choice
để lấy dòng ngôn ngữ cho một giá trị count. Trong ví dụ này, khi mà giá trị count lớn hơn một, thì thể số nhiều của dòng ngôn ngữ được trả về:
echo trans_choice('messages.apples', 10);
Vì phần phiên dịch của Laravel dựa trên thành phần phiên dịch của Symfony, bạn thậm chí có thể tạo các quy tắc phức tạp cho số nhiều:
'apples' => '{0} There are none|[1,19] There are some|[20,Inf] There are many',
Ghi đề ngôn ngữ của vendor
Vài packages có thể đính kèm file ngôn ngữ riêng của nó. Thay vì chỉnh sửa các file ngôn ngữ core, bạn có thể thực hiện ghi đè chúng bằng file riêng của bạn bằng cách đặt vào trong vị trí resources/lang/vendor/{package}/{locale}
.
Vì thế, ví dụ, nếu bạn muốn ghi đè nội dung tiếng Anh trong file messages.php
của một package tên là skyrim/hearthfire
, bạn sẽ đặt file ngôn ngữ tại: resources/lang/vendor/hearthfire/en/messages.php
. Trong file này bạn chỉ nên định nghĩa các dòng ngôn ngữ bạn muốn thay thế. Bất cứ dòng nào bạn không ghi đè thì nó vẫn lấy từ file gốc.