Laravel là một công cụ mạnh mẽ cho phép các nhà phát triển tạo ra các trang web đa ngôn ngữ. Bằng cách triển khai bản địa hóa web trong Laravel , bạn có thể cung cấp trải nghiệm người dùng được cá nhân hóa cho khách truy cập đến từ các nền tảng ngôn ngữ khác nhau, cuối cùng mở rộng phạm vi tiếp cận và cải thiện sự tương tác của người dùng.
Chúng tôi sẽ hướng dẫn bạn cách triển khai bản địa hóa trong ứng dụng Laravel của mình và giới thiệu một công cụ có thể đơn giản hóa và nâng cao nỗ lực bản địa hóa của bạn!
Tại sao bạn nên bản địa hóa trang web Laravel ?

Dưới đây là một số lý do quan trọng tại sao bạn nên bản địa hóa trang web Laravel của mình.
- Tiếp cận khán giả toàn cầu: Laravel của bạn , bạn có thể mở rộng phạm vi tiếp cận ứng dụng của mình đến khán giả quốc tế. Điều này cho phép người dùng từ các quốc gia và nền tảng ngôn ngữ khác nhau hiểu và tương tác với nội dung của bạn.
- Cải thiện trải nghiệm người dùng: Việc bản địa hóa cho phép người dùng tương tác với ứng dụng bằng ngôn ngữ mẹ đẻ của họ, điều này cải thiện đáng kể trải nghiệm người dùng. Điều này có thể làm tăng tỷ lệ tương tác, giảm tỷ lệ thoát trang và tăng tỷ lệ chuyển đổi.
- Lợi thế cạnh tranh: Trong thị trường toàn cầu cạnh tranh, việc cung cấp ứng dụng đa ngôn ngữ có thể mang lại lợi thế đáng kể so với đối thủ. Điều này thể hiện cam kết của bạn đối với thị trường quốc tế và có thể giúp bạn thâm nhập thị trường mới hiệu quả hơn.
- Cải thiện SEO: Các trang web được bản địa hóa tốt thường có thứ hạng cao hơn trên các công cụ tìm kiếm đối với các tìm kiếm bằng ngôn ngữ cụ thể. Điều này có thể tăng lưu lượng truy cập blog và khả năng hiển thị trực tuyến của bạn trên nhiều thị trường khác nhau nhờ dịch thuật đa ngôn ngữ.
Yêu cầu cho việc bản địa hóa Laravel đa ngôn ngữ

Có một vài yêu cầu và bước cần xem xét khi triển khai tính năng bản địa hóa đa ngôn ngữ trong Laravel.
- Để có được các tính năng bản địa hóa mới nhất, hãy đảm bảo bạn đang sử dụng phiên bản Laravel mới nhất (ví dụ: phiên bản 10.x).
- Việc nắm vững kiến thức cơ bản về PHP và framework Laravel sẽ rất hữu ích trong quá trình triển khai.
- Thiết lập môi trường phát triển cục bộ hoặc máy chủ hỗ trợ Laravel, bao gồm máy chủ web và cơ sở dữ liệu.
- Hãy xác định ngay từ đầu các ngôn ngữ mà ứng dụng của bạn sẽ hỗ trợ.
Dịch thuật Laravel đơn giản

Sau khi hiểu rõ các yêu cầu cần đáp ứng trước khi dịch một ứng dụng hoặc trang web Laravel , chúng tôi sẽ cung cấp một số bước để dịch Laravel một cách đơn giản.
Để thực hiện việc này, hãy mở tệp giao diện mà bạn muốn bản địa hóa, ví dụ: resources/views/welcome.blade.php. Sau đó, thay thế thẻ body bằng đoạn mã sau.
Welcome to Linguise website!
Như bạn thấy, đoạn văn trên hiện đang được viết trực tiếp trong mã nguồn. Điều này kém hiệu quả và gây khó khăn trong việc dịch các trang web sang các ngôn ngữ khác (quốc tế hóa).
Chúng ta sẽ làm cho đoạn văn trên linh hoạt hơn để có thể dễ dàng thích ứng với các ngôn ngữ khác nhau. Laravel cung cấp một tính năng rất hữu ích cho việc này; đó là hệ thống bản địa hóa. Bước đầu tiên, hãy thay thế đoạn văn hiện có bằng đoạn mã sau.
{{ __('Welcome to Linguise website!') }}
Laravel sẽ hiển thị văn bản trên theo mặc định và tìm bản dịch nếu người dùng chọn ngôn ngữ khác tiếng Anh. Trong trường hợp này, tiếng Anh sẽ được sử dụng làm ngôn ngữ mặc định của ứng dụng.
Thiết lập ngôn ngữ trong ứng dụng web đa ngôn ngữ Laravel

Nhưng Laravel xác định ngôn ngữ hiện tại hoặc biết các ngôn ngữ nào có sẵn trong ứng dụng bằng cách nào? Nó kiểm tra cài đặt ngôn ngữ trong tệp config/app.php. Mở tệp này và tìm hai khóa sau.
/*
|--------------------------------------------------------------------------
| Application Locale Configuration
|--------------------------------------------------------------------------
|
| The application locale determines the default locale that will be used
| by the translation service provider. You are free to set this value
| to any of the locales which will be supported by the application.
|
*/
'locale' => 'en',
/*
|--------------------------------------------------------------------------
| Application Fallback Locale
|--------------------------------------------------------------------------
|
| The fallback locale determines the locale to use when the current one
| is not available. You may change the value to correspond to any of
| the language folders that are provided through your application.
|
*/
'fallback_locale' => 'en',
Phần giải thích phía trên các khóa khá rõ ràng. Tóm lại, khóa `locale` chứa ngôn ngữ mặc định cho ứng dụng của bạn (nếu không có ngôn ngữ nào khác được chỉ định trong mã). `fallback_locale` được kích hoạt nếu ứng dụng yêu cầu một ngôn ngữ không tồn tại.
Bây giờ, hãy thêm một khóa mới vào tệp này để cung cấp danh sách tất cả các ngôn ngữ được hỗ trợ.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
Đến thời điểm này, chúng tôi đã thử nghiệm Laravel web để hỗ trợ ba ngôn ngữ, đó là tiếng Anh, tiếng Ý và tiếng Pháp.
Tổng quan về các tệp dịch Laravel

Trong Laravel, cũng như nhiều framework khác, các bản dịch cho các ngôn ngữ khác nhau được lưu trữ trong các tệp riêng biệt. Có hai phương pháp được sử dụng để tổ chức các tệp dịch này.
Phương pháp cũ lưu trữ các tệp theo cấu trúc sau: resources/lang/{en,fr,it}/{myfile.php}. Phương pháp mới sử dụng các tệp JSON, chẳng hạn như resources/lang/{fr.json, it.json}. Bài viết này sẽ tập trung vào phương pháp mới hơn, mặc dù các nguyên tắc tương tự đối với phương pháp cũ, ngoại trừ sự khác biệt về cách đặt tên và truy cập các khóa dịch.
Đối với các ngôn ngữ có sự khác biệt theo vùng miền, bạn nên đặt tên thư mục hoặc tập tin ngôn ngữ theo tiêu chuẩn ISO 15897. Ví dụ, tiếng Anh Anh sẽ được đặt tên là en_GB thay vì en-gb.
Thông tin chung
Trong Laravel, cũng như nhiều framework khác, các bản dịch cho các ngôn ngữ khác nhau được lưu trữ trong các tệp riêng biệt. Có hai phương pháp chính để tổ chức các tệp dịch thuật Laravel .
- Cách làm cũ là lưu trữ các tệp theo đường dẫn: resources/lang/{en,fr,it}/{myfile.php}.
- Phương pháp hiện đại sử dụng các tệp resources/lang/{fr.json, it.json}.
Bài viết này sẽ tập trung vào phương pháp thứ hai, mặc dù các nguyên tắc đều áp dụng được cho cả hai phương pháp (với sự khác biệt về cách đặt tên và truy cập các khóa dịch).
Đối với các ngôn ngữ khác nhau tùy theo khu vực, nên đặt tên thư mục/tệp tin ngôn ngữ theo tiêu chuẩn ISO 15897. Ví dụ, tiếng Anh Anh sẽ được ký hiệu là en_GB thay vì en-gb.
Tạo các tệp dịch Laravel
Sau khi đã cấu hình ngôn ngữ cho ứng dụng, chúng ta có thể tiến hành dịch thông báo chào mừng mặc định.
Chúng ta hãy bắt đầu bằng cách tạo các tệp bản địa hóa mới ở định dạng JSON trong thư mục resources/lang. Trước tiên, chúng ta sẽ tạo một tệp resources/lang/it.json và điền vào đó các bản dịch phù hợp.
{
"Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!"
}
Tiếp theo, hãy thêm tệp resources/lang/fr.json.
{
"Welcome to Linguise website!": "Bienvenue sur le site de Linguise"
}
Như bạn thấy, chúng tôi luôn tham chiếu đến thông báo mặc định từ tệp welcome.blade.php ({{ __('Chào mừng bạn đến với trang web Linguise !') }}). Không cần tạo tệp en.json, vì Laravel tự động nhận ra rằng các thông báo mặc định là bằng tiếng Anh.
Thiết lập bộ chuyển đổi ngôn ngữ trong ứng dụng đa ngôn ngữ Laravel

Hơn nữa, Laravel hiện chưa được thiết lập để ghi đè ngôn ngữ địa phương, vì vậy, tạm thời, chúng ta sẽ xử lý việc dịch trực tiếp trong route. Hãy sửa đổi route chào mừng mặc định trong file routes/web.php như sau.
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
Trong trường hợp này, chúng ta đang thu thập tham số GET ngôn ngữ tùy chọn và thiết lập ngôn ngữ hiện tại dựa trên tham số đó (nếu ngôn ngữ được yêu cầu được hỗ trợ).
Giờ đây, bạn có thể truy cập trang web của mình và thêm bất kỳ ngôn ngữ nào được hỗ trợ làm phần đầu tiên trong URL. Ví dụ, truy cập localhost/it hoặc localhost/fr sẽ hiển thị nội dung đã được bản địa hóa. Nếu bạn không chỉ định ngôn ngữ hoặc chọn ngôn ngữ không được hỗ trợ, Laravel sẽ mặc định sử dụng tiếng Anh (en).
Middleware bản địa hóa cho Laravel
Việc thêm ngôn ngữ vào mọi URL có thể không phải là giải pháp lý tưởng và có thể làm ảnh hưởng đến tính thẩm mỹ của trang web. Để giải quyết vấn đề này, chúng ta sẽ thiết lập một bộ chuyển đổi ngôn ngữ và sử dụng phiên người dùng để hiển thị nội dung đã dịch. Bạn có thể tạo middleware mới trong tệp app/Http/Middleware/Localization.php hoặc tạo nó bằng cách chạy lệnh artisan make:middleware Localization.
Sau đó, hãy thêm đoạn mã sau vào bên trong.
Middleware này sẽ hướng dẫn Laravel sử dụng vị trí do người dùng chọn nếu tùy chọn này có trong phiên làm việc.
Vì chúng ta cần thao tác này chạy trên mọi yêu cầu, hãy thêm nó vào ngăn xếp middleware mặc định trong app/Http/Kernel.php cho nhóm middleware web.
/**
* The application's route middleware groups.
*
* @var array>
*/
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\App\Http\Middleware\Localization::class, // <--- add this
],
Điều chỉnh tuyến đường
Tiếp theo, hãy định nghĩa một tuyến đường để thay đổi ngôn ngữ trong tệp routes/web.php. Ở đây chúng ta sử dụng một tuyến đường closure, nhưng bạn có thể đặt cùng một đoạn mã vào bên trong một controller nếu muốn.
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
Ngoài ra, hãy xóa bỏ phần chuyển đổi ngôn ngữ đã được thêm vào tuyến đường chào mừng mặc định trước đó. Tuyến đường gốc của bạn giờ sẽ trông như thế này.
Route::get('/', function () {
return view('welcome');
});
Sau khi thực hiện xong thao tác này, người dùng chỉ có thể chuyển đổi ngôn ngữ đang hoạt động bằng cách truy cập localhost/language/{locale}. Ngôn ngữ đã chọn sẽ được lưu vào phiên và người dùng sẽ được chuyển hướng trở lại trang trước đó (như được xử lý bởi middleware Localization).
Để kiểm tra, hãy truy cập localhost/language/it (giả sử cookie phiên đang hoạt động trong trình duyệt của bạn), và bạn sẽ thấy nội dung đã được dịch. Bạn có thể điều hướng trang web hoặc làm mới trang, và ngôn ngữ đã chọn sẽ vẫn được giữ nguyên.
Triển khai bộ chuyển đổi ngôn ngữ
Giờ đây, chúng ta cần cung cấp cho người dùng một tùy chọn có thể nhấp chuột để thay đổi ngôn ngữ Laravel web thay vì yêu cầu họ nhập mã ngôn ngữ vào URL theo cách thủ công. Để đạt được điều này, hãy tạo một bộ chuyển đổi ngôn ngữ đơn giản. Thêm một tệp mới tại resources/views/partials/language_switcher.blade.php và chèn đoạn mã sau.
@foreach($available_locales as $locale_name => $available_locale)
@if($available_locale === $current_locale)
{{ $locale_name }}
@else
{{ $locale_name }}
@endif
@endforeach
Để tích hợp bộ chuyển đổi ngôn ngữ mới tạo vào giao diện "chào mừng", chỉ cần thêm dòng sau vào tệp welcome.blade.php tại vị trí bạn muốn hiển thị bộ chuyển đổi.
@include('partials/language_switcher')
{{ __('Welcome to our website!') }}
Mở tệp app/Providers/AppServiceProvider.php và thêm đoạn mã sau vào phương thức boot() để chia sẻ ngôn ngữ hiện tại với tất cả các view khi sử dụng bộ chuyển đổi ngôn ngữ
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
view()->composer('partials.language_switcher', function ($view) {
$view->with('current_locale', app()->getLocale());
$view->with('available_locales', config('app.available_locales'));
});
}
Các tính năng dịch nâng cao trong Laravel PHP

Trong phần thảo luận này, chúng ta sẽ xử lý các thành phần bản địa hóa khác, cụ thể là ngày tháng, số và tiền tệ. Sau đây là các bước.
Ngày tháng được bản địa hóa trong Laravel
Việc xử lý ngày giờ là rất quan trọng trong quá trình bản địa hóa. Laravel sử dụng Carbon để quản lý ngày giờ. Dưới đây là cách bạn có thể sử dụng Carbon để hiển thị ngày tháng đã được bản địa hóa.
settings(
[
'locale' => app()->getLocale(),
]
);
// LL is macro placeholder for MMMM D, YYYY (you could write same as dddd, MMMM D, YYYY)
$dateMessage = $today->isoFormat('dddd, LL');
return view('welcome', [
'date_message' => $dateMessage
]);
});
Đoạn mã này thiết lập ngôn ngữ địa phương của Carbon dựa trên ngôn ngữ địa phương hiện tại của ứng dụng và định dạng ngày tháng cho phù hợp.
Để hiển thị ngày tháng theo định dạng bản địa phương trong một khung nhìn:
{{ __('Welcome to our website, :Name', ['name' => ‘Johb’]) }}
{{ trans_choice('{0} There :form :count apples|{1} There :form just :count apple|[2,19] There :form :count apples', 1, ['form' => 'is']) }}
{{ $date_message }}
Định dạng số và tiền tệ
Các quốc gia khác nhau có những cách định dạng số khác nhau. Ví dụ:.
- Pháp → 123 123,12
- Đức → 123.123,12
- Nhật Bản → 123.123
Để xử lý các biến thể này trong ứng dụng Laravel của bạn, bạn có thể sử dụng NumberFormatter.
Bạn cũng có thể viết các con số bằng một ngôn ngữ cụ thể.
Dưới đây là các loại tiền tệ. Đối với ngôn ngữ tiếng Pháp (`fr`), đơn vị tiền tệ sẽ được hiển thị là euro (€), trong khi đối với ngôn ngữ tiếng Mỹ (`en_US`), đơn vị tiền tệ sẽ được hiển thị là đô la Mỹ ($).
Giải pháp thay thế: Bản địa hóa Laravel với Linguise

Sau khi hiểu rõ các bước bản địa hóa Laravel như mô tả trong bài viết, quy trình này bao gồm nhiều bước đòi hỏi người dùng phải hiểu sâu về mã lập trình Laravel .
Điều này chắc chắn sẽ gây khó khăn cho người dùng mới muốn bản địa hóa ứng dụng của họ. Do đó, cần một giải pháp sáng tạo hơn, có khả năng dịch nhanh, hỗ trợ bản địa hóa và chỉ cần một vài bước đơn giản để triển khai.
Một giải pháp đầy hứa hẹn là Linguise. Linguise cung cấp một phương pháp dễ dàng và hiệu quả hơn để bản địa hóa Laravel mà không cần kiến thức lập trình chuyên sâu. Các tính năng chính của Linguise bao gồm:.
- Dễ dàng tích hợp với Laravel
- Tùy chỉnh bộ chuyển đổi ngôn ngữ mà không cần lập trình
- Dịch hình ảnh
- Trình soạn thảo trực tiếp cho phép tùy chỉnh bản dịch theo ngữ cảnh địa phương
- Dịch thuật động cho nội dung được tạo động
- Tối ưu hóa SEO cho các phiên bản đa ngôn ngữ
Các bước cài đặt Linguise trên website Laravel cũng rất dễ dàng. Dưới đây là giải thích ngắn gọn.
- Tạo tài khoản Linguise (sử dụng bản dùng thử miễn phí 30 ngày)
- Đăng ký tên miền web Laravel của bạn và nhập một số thông tin. Bạn sẽ nhận được một khóa API.
- Tải lên và kết nối tập lệnh dịch Linguise vào thư mục Laravel mà bạn đã có.
- Thiết lập URL ngôn ngữ trong tệp htaccess.
- Chèn đoạn mã chuyển đổi ngôn ngữ vào phần <head> của thẻ HTML.
- Tùy chỉnh bộ chuyển đổi ngôn ngữ theo nhu cầu
- Bộ chuyển đổi ngôn ngữ sẽ xuất hiện trên giao diện web Laravel và nội dung có thể được dịch tự động.
Làm thế nào? Với Linguise, bạn chỉ cần đăng ký và kích hoạt, sau đó trình chuyển đổi ngôn ngữ sẽ xuất hiện. Sau đó, bạn có thể tự do bản địa hóa, ví dụ như thông qua trình soạn thảo trực tiếp, dịch các phương tiện truyền thông, hình ảnh, v.v.
Kết luận
Tính năng bản địa hóa Laravel là một tính năng mạnh mẽ cho phép các nhà phát triển tạo ra các trang web và ứng dụng đa ngôn ngữ. Như chúng ta đã thấy, quy trình bản địa hóa tích hợp sẵn Laravel bao gồm nhiều bước và đòi hỏi sự hiểu biết tốt về framework. Điều này có thể gây khó khăn cho người mới bắt đầu hoặc những người đang tìm kiếm một giải pháp nhanh hơn.
Các công cụ như Linguise cung cấp một giải pháp thay thế sáng tạo cho những ai đang tìm kiếm một cách tiếp cận hiệu quả hơn. Những giải pháp này cung cấp khả năng dịch thuật nhanh chóng, tích hợp dễ dàng và các tính năng thân thiện với người dùng như bộ chuyển đổi ngôn ngữ tùy chỉnh và dịch hình ảnh. Giờ đây, tài khoản Linguise của bạn Laravel của chúng tôi !



