Laravel là một công cụ mạnh mẽ cho phép các nhà phát triển tạo 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 từ các nền tảng ngôn ngữ khác nhau, cuối cùng là 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 bạn và giới thiệu cho bạn 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!
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.
Có một số yêu cầu và bước cần xem xét khi triển khai bản địa hóa đa ngôn ngữ trong Laravel .
Sau khi hiểu những yêu cầu nào phải được đáp ứng trước khi dịch một ứng dụng hoặc 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 xem 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 được viết trực tiếp bằng mã. Điều này kém hiệu quả hơn và gây khó khăn cho việc dịch các trang web sang các ngôn ngữ khác nhau (quốc tế hóa).
Chúng tôi sẽ làm cho văn bản trên trở nên linh hoạt hơn để có thể dễ dàng điều chỉnh cho phù hợp 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; hệ thống bản địa hóa. Bước đầu tiên, thay thế văn bản hiện có bằng đoạn mã sau.
{{ __('Welcome to Linguise website!') }}
Laravel sẽ mặc định hiển thị đoạn văn bản trên và tra cứu 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.
Nhưng làm cách nào Laravel xác định được ngôn ngữ hiện tại hoặc biết ngôn ngữ nào có sẵn trong ứng dụng? 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',
Lời giải thích ở trên các phím phải rõ ràng. Tóm lại, khóa ngôn ngữ giữ 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 của bạn yêu cầu một ngôn ngữ không tồn tại.
Bây giờ, hãy thêm 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ử web Laravel để hỗ trợ ba ngôn ngữ là tiếng Anh, tiếng Ý và tiếng Pháp.
Trong Laravel , cũng như trong 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. Hai phương pháp được sử dụng để tổ chức các tệp dịch này.
Phương thức cũ hơn lưu trữ các tệp theo cấu trúc sau: Resources/lang/{en,fr,it}/{myfile.php}. Phương thức 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 của phương pháp cũ tương tự nhau, ngoại trừ 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ữ có sự khác biệt theo khu vực, bạn nên đặt tên cho 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.
Trong Laravel , cũng như nhiều framework, 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 Laravel .
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 có thể áp dụng cho cả hai (với các biến thể trong cách đặt tên và truy cập khóa dịch).
Đối với các ngôn ngữ khác nhau tùy theo khu vực, bạn 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.
Sau khi định cấu hình ngôn ngữ cho ứng dụng của mình, chúng tôi có thể tiến hành dịch thông báo chào mừng mặc định của mình.
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 tài nguyên/lang. Đầu 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 thích hợp.
{ "Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!" }
Tiếp theo, 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 tôi liên tục tham chiếu thông báo 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 ra rằng các thông báo mặc định bằng tiếng Anh.
Hơn nữa, Laravel chưa được thiết lập để ghi đè ngôn ngữ địa phương, vì vậy hiện tại, chúng tôi sẽ xử lý bản dịch trực tiếp trong tuyến đường. Sửa đổi tuyến chào mừng mặc định bên trong tệp tuyến đường/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 thu thập tham số GET ngôn ngữ tùy chọn và đặt 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à bao gồ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ụ: điều hướng đến 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 là tiếng Anh (en).
Việc đưa ngôn ngữ vào mỗi URL có thể không lý tưởng và có thể phá vỡ sự hấp dẫn trực quan của trang web. Để giải quyết vấn đề này, chúng tôi sẽ thiết lập 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 phần mềm trung gian 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 đó, 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 theo mọi yêu cầu, hãy thêm nó vào ngăn xếp phần mềm trung gian mặc định trong app/Http/Kernel.php cho nhóm phần mềm trung gian 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 ],
Tiếp theo, xác định tuyến đường để thay đổi ngôn ngữ trong tệp tuyến đường/web.php. Chúng tôi đang sử dụng lộ trình đóng ở đây, nhưng bạn có thể đặt cùng một mã bên trong bộ điều khiển 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 loại bỏ chuyển đổi ngôn ngữ đã được thêm vào tuyến chào mừng mặc định trước đó. Tuyến đường gốc của bạn bây giờ trông như thế này.
Route::get('/', function () { return view('welcome'); });
Khi việc này 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/lingu/{locale}. Ngôn ngữ đã 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 đó của họ (do phần mềm trung gian Bản địa hóa xử lý).
Để kiểm tra, hãy truy cập localhost/ngôn ngữ/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 đã 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ó hiệu lực.
Bây giờ, chúng tôi cần cung cấp cho người dùng tùy chọn có thể nhấp để thay đổi trình chuyển đổi ngôn ngữ web Laravel 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 trình chuyển đổi ngôn ngữ đơn giản. Thêm một tệp mới tại Resources/views/partials/lingu_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ữ mới được tạo vào chế độ xem “chào mừng”, chỉ cần thêm dòng sau vào tệp Welcome.blade.php nơi 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 chế độ xem khi sử dụng trình 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')); }); }
Trong cuộc thảo luận này, chúng tôi sẽ xử lý các thành phần bản địa hóa khác, cụ thể là ngày, số và tiền tệ. Dưới đây là các bước.
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 ]); });
Mã này đặt ngôn ngữ Carbon dựa trên ngôn ngữ hiện tại của ứng dụng và định dạng ngày tương ứng.
Để hiển thị ngày được bản địa hóa trong 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 }}
Các quốc gia khác nhau có nhiều cách định dạng số khác nhau. Ví dụ.
Để phù hợp với 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ể đánh vần các con số bằng một ngôn ngữ cụ thể.
Đây là các loại tiền tệ. Đối với ngôn ngữ của Pháp (`fr`), đơn vị tiền tệ sẽ được hiển thị bằng euro (€), trong khi đối với ngôn ngữ của Hoa Kỳ (`en_US`), nó sẽ được hiển thị bằng đô la Mỹ ($).
Sau khi hiểu các bước bản địa hóa Laravel như mô tả trong bài, 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 những người dùng mới muốn bản địa hóa ứng dụng của họ. Vì vậy, cần có một giải pháp sáng tạo hơn, có khả năng dịch thuật nhanh, hỗ trợ bản địa hóa và chỉ cần vài bước đơn giản để thực hiện.
Một giải pháp đầy hứa hẹn là Linguise . Linguise cung cấp một cách tiếp cận dễ dàng và hiệu quả hơn để bản địa hóa Laravel mà không cần kiến thức mã hóa chuyên sâu. Các tính năng chính của Linguise bao gồm.
Các bước cài đặt Linguise trên website Laravel cũng có thể thực hiện dễ dàng. Đây là một lời giải thích ngắn gọn.
Làm sao? Với Linguise , bạn chỉ cần đăng ký và kích hoạt, 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, chẳng hạn 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.
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 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 Laravel bao gồm nhiều bước và đòi hỏi sự hiểu biết tốt về framework. Nó có thể là thách thức đối với người mới bắt đầu hoặc những người đang tìm kiếm giải pháp nhanh hơn.
Các công cụ như Linguise cung cấp giải pháp thay thế sáng tạo cho những người đang tìm kiếm cách tiếp cận hợp lý hơn. Các giải pháp này cung cấp khả năng dịch nhanh, 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ư trình chuyển đổi ngôn ngữ có thể tùy chỉnh và dịch hình ảnh. Bây giờ, hãy tạo tài khoản Linguise và tận hưởng tính năng bản địa hóa Laravel !
Nhận tin tức về dịch tự động trang web, SEO quốc tế và hơn thế nữa!
Đừng rời đi mà không chia sẻ email của bạn!
Chúng tôi không thể đảm bảo bạn sẽ trúng xổ số, nhưng chúng tôi có thể hứa hẹn một số thông tin thú vị về bản dịch và giảm giá thường xuyên.