Laravel localization 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 các dự án Laravel của bạn, 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 từ các nền tảng ngôn ngữ khác nhau, từ đó mở rộng phạm vi tiếp cận và cải thiện mức độ 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!
Vì 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 vì sao bạn nên bản địa hóa trang web Laravel của mình.
- Tiếp cận đối tượng toàn cầu: Bằng cách bản địa hóa 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 đối tượng 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 một thị trường toàn cầu đầy cạnh tranh, việc cung cấp ứng dụng bằng nhiều 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 với các 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 có xu hướng xếp 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 một ngôn ngữ cụ thể. Điều này có thể tăng lưu lượng truy cập blog của bạn và khả năng hiển thị trực tuyến trên nhiều thị trường khác nhau nhờ dịch đa ngôn ngữ.
Yêu cầu cho một Laravel đa ngôn ngữ

Có một số yêu cầu và bước cần cân nhắc khi triển khai 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.
- Xác định ngay từ đầu những 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õ những 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 có thể thấy, văn bản ở trên hiện đang được viết trực tiếp trong mã. Điều này kém hiệu quả hơn và gây khó khăn cho việc dịch trang web sang các ngôn ngữ khác nhau (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ế văn bả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à tra cứu bản dịch nếu người dùng chọn ngôn ngữ khác ngoài 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 các locale trong một trang web đa ngôn ngữ Laravel

Nhưng làm thế nào Laravel xác định ngôn ngữ hiện tại hoặc biết những ngôn ngữ nào có sẵn trong ứng dụng? Nó kiểm tra cài đặt locale 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 cần phải rõ ràng. Tóm lại, khóa locale lưu giữ locale mặc định cho ứng dụng của bạn (nếu không có locale nào khác được chỉ định trong mã). fallback_locale được kích hoạt nếu một locale không tồn tại được yêu cầu trong ứng dụng của bạn.
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',
],
Tại thời điểm này, chúng tôi đã thử nghiệm Laravel web để hỗ trợ ba ngôn ngữ, cụ thể 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, 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ữ tệp theo cấu trúc sau: resources/lang/{en,fr,it}/{myfile.php}. Phương pháp mới hơn 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ó biến thể theo khu vực, bạn nên đặt tên cho các thư mục hoặc tệp 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 tiếp cận cũ liên quan đến việc 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 có thể áp dụng cho cả hai (với những 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 theo khu vực, nên đặt tên thư mục/tệp 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.
Hãy bắt đầu bằng việc tạo các tệp bản địa hóa mới ở định dạng JSON trong thư mục resources/lang. Đầu tiên, chúng ta sẽ tạo tệp resources/lang/it.json và điền các bản dịch phù hợp vào đó.
{
"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 có thể thấy, chúng ta đang liên tục tham chiếu thông điệp mặc định từ tệp welcome.blade.php ({{ __(‘Chào mừng đến với trang web Linguise !’) }}). Không cần tạo tệp en.json, vì Laravel tự động nhận diện rằng các thông điệp mặc định đang ở 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 chưa được thiết lập để ghi đè ngôn ngữ cục bộ, vì vậy hiện tại, chúng ta sẽ xử lý bản dịch trực tiếp trong route. Sửa đổi route chào mừng mặc định bên trong tệp routes/web.php như thế này.
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 tôi đang nắm bắt một tham số GET locale tùy chọn và đặt locale hiện tại dựa trên đó (nếu locale được yêu cầu được hỗ trợ).
Bây giờ, bạn có thể truy cập trang web của mình và thêm bất kỳ ngôn ngữ được hỗ trợ nào làm phân đoạ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 locale hoặc chọn một locale không được hỗ trợ, Laravel sẽ mặc định là tiếng Anh (en).
Middleware bản địa hóa cho Laravel
Việc bao gồm locale trong mọi URL có thể không lý tưởng và có thể làm gián đoạ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 trình 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.
Phần mềm trung gian 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.
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, định nghĩa một route để thay đổi locale trong tệp routes/web.php. Ở đây chúng tôi đang sử dụng closure route, nhưng bạn có thể đặt cùng đoạn mã đó 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 tính năng chuyển đổi locale đã được thêm trước đó vào route chào mừng mặc định. Route gốc của bạn bây giờ sẽ trông như thế này.
Route::get('/', function () {
return view('welcome');
});
Sau khi hoàn tất, 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ữ được chọn sẽ được lưu trong 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 trình chuyển đổi ngôn ngữ
Bây giờ, chúng ta cần cung cấp cho người dùng một tùy chọn có thể nhấp để thay đổi trình chuyển đổ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. Để làm được điều này, hãy tạo một trình chuyển đổi ngôn ngữ đơn giản. Thêm 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
Để đưa trình chuyển đổi ngôn ngữ vừa tạo vào chế độ xem “welcome”, chỉ cần thêm dòng sau vào tệp welcome.blade.php của bạn tại vị trí bạn muốn trình chuyển đổi xuất hiện.
@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 trình chuyển đổi ngôn ngữ được sử dụ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ệ. Dưới đây là các bước.
Ngày được bản địa hóa trong Laravel
Xử lý ngày và 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 và giờ. Đây là cách bạn có thể sử dụng Carbon để hiển thị ngày đã đượ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 locale của Carbon dựa trên locale 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 đã bản địa hóa trong một chế độ xem:
{{ __('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ó nhiều 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
Để đáp ứng những 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 số thành chữ trong một ngôn ngữ cụ thể.
Dưới đây là các loại tiền tệ. Đối với ngôn ngữ Pháp (`fr`), tiền tệ sẽ được hiển thị bằng euro (€), trong khi đối với ngôn ngữ Hoa Kỳ (`en_US`), nó sẽ được hiển thị bằng đô la Mỹ ($).
Giải pháp thay thế Laravel bản địa hóa với Linguise

Sau khi hiểu các bước của quá trình bản địa hóa Laravel như được mô tả trong bài viết, quá 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ã chương trình Laravel .
Điều này chắc chắn có thể 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 vài bước đơn giản để triển khai.
Một giải pháp đầy hứa hẹn là Linguise. Linguise mang đến một cách tiếp cận dễ dàng và hiệu quả hơn cho việc 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 công cụ chuyển đổi ngôn ngữ mà không cần viết mã
- 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 Laravel trang web cũng có thể được thực hiện dễ dàng. Đâ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ới thư mục Laravel bạn đã nhận được.
- Thiết lập URL ngôn ngữ trong tệp htaccess.
- Chèn tập lệnh chuyển đổi ngôn ngữ vào phần head của HTML của bạn.
- Tùy chỉnh công cụ chuyển đổi ngôn ngữ theo nhu cầu
- Trình chuyển đổi ngôn ngữ sẽ xuất hiện trên trang web Laravel và nội dung có thể được dịch tự động.
Bằng cách nào? Với Linguise, bạn chỉ cần đăng ký và kích hoạt, và trình chuyển đổi ngôn ngữ sẽ xuất hiện. Sau đó, bạn có thể thoải mái bản địa hóa, ví dụ như thông qua trình chỉnh sửa trực tiếp, dịch phương tiện, hình ảnh, v.v.
Conclusion
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 Laravel tích hợp sẵn bao gồm nhiều bước và đòi hỏi 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 chóng hơn.
Các công cụ như Linguise mang đến 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 tinh gọn hơn. Những giải pháp này cung cấp khả năng dịch 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ư công cụ chuyển đổi ngôn ngữ có thể tùy chỉnh và dịch hình ảnh. Giờ đây, hãy tạo Linguise tài khoản của bạn và tận hưởng tính năng bản địa hóa Laravel của chúng tôi!



