Laravel - 本地化:初學者指南
你好,有志者!今天,我們將踏上一段令人振奮的旅程,進入 Laravel 本地化的世界。別擔心你對編程還是新手——我會成為你的友好導遊,逐步解釋一切。在這個教學的結尾,你將能夠讓你的 Laravel 應用程序講多種語言!讓我們開始吧!
什麼是本地化?
在我們深入代碼之前,讓我們先了解什麼是本地化。想像一下,你創建了一個出色的網站,但所有的用戶並不說同樣的語言。如果你的網站能夠根據用戶的偏好自動切換語言,那該有多好?這正是本地化所做的事!
本地化是將你的應用程序適應不同語言和地區的過程。就像教你的應用程序成為多語言者一樣!
本地化為什麼重要?
讓我分享一個快速的故事。幾年前,我的一個學生創建了一個出色的電子商務網站。它完美無缺……除了它是英文的。當他嘗試擴展到講西班牙語的市場時,他發現他需要重建幾乎所有東西!如果他從一開始就使用本地化,那會容易得多。
本地化能夠幫助你:
- 觸達全球受眾
- 改進用戶體驗
- 提高用戶參與度和保留率
現在,讓我們看看 Laravel 如何讓這個過程變得輕鬆!
在 Laravel 中設置本地化
步驟 1:創建語言文件
首先,我們需要創建語言文件。Laravel 讓這件事變得非常簡單!
- 前往你 Laravel 專案中的
resources/lang
目錄。 - 為你想要支持的每種語言創建一個新文件夹。例如,用
en
為英文,用es
為西班牙文。 - 在每個文件夹中,創建一個名為你正在翻譯功能的 PHP 文件。讓我們從
messages.php
開始。
你的目錄結構可能會像這樣:
resources/
lang/
en/
messages.php
es/
messages.php
現在,讓我們在這些文件中添加一些翻譯:
// resources/lang/en/messages.php
return [
'welcome' => '歡迎來到我們的網站!',
'goodbye' => '再見,稍後見!',
];
// resources/lang/es/messages.php
return [
'welcome' => '¡Bienvenido a nuestro sitio web!',
'goodbye' => '¡Adiós, hasta pronto!',
];
步驟 2:在代碼中使用翻譯
現在我們有了翻譯,讓我們在代碼中使用它們。Laravel 提供了多種方法來做到這點:
方法 1:使用 __()
Helper 函數
echo __('messages.welcome');
這將輸出 "歡迎來到我們的網站!" 如果應用程序設置為英文,或者 "¡Bienvenido a nuestro sitio web!" 如果設置為西班牙文。
方法 2:使用 trans()
Helper 函數
echo trans('messages.goodbye');
這和 __()
做同樣的事情,但有些開發者喜歡這種語法。
方法 3:在 Blade 模板中使用 @lang
指令
在你的 Blade 模板中,你可以使用 @lang
指令:
<h1>@lang('messages.welcome')</h1>
這在處理 HTML 模板時特別有用。
步驟 3:更改應用程序語境
現在,我們如何告訴 Laravel 使用哪種語言?有幾種方法:
方法 1:設置默認語境
在你的 config/app.php
文件中,你可以設置默認語境:
'locale' => 'en',
方法 2:在運行時更改語境
你可以在代碼中動態更改語境:
App::setLocale('es');
這在根據用戶偏好或設置更改語言時很有用。
方法 3:使用 Middleware 設置語境
對於更先進的控制,你可以創建一個 Middleware 來根據各種因素設置語境。以下是一個簡單的例子:
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\App;
class SetLocale
{
public function handle($request, Closure $next)
{
if ($request->session()->has('locale')) {
App::setLocale($request->session()->get('locale'));
}
return $next($request);
}
}
然後,在 app/Http/Kernel.php
中註冊這個 Middleware:
protected $middlewareGroups = [
'web' => [
// ... 其他 Middleware
\App\Http\Middleware\SetLocale::class,
],
];
高級本地化技術
複數化
Laravel 可以為你處理複數化!以下是如何操作:
// 在你的語言文件中
'apples' => '{0} 沒有蘋果|{1} 一個蘋果|[2,*] :count 蘋果',
// 在你的代碼中
echo trans_choice('apples', 0); // 輸出:沒有蘋果
echo trans_choice('apples', 1); // 輸出:一個蘋果
echo trans_choice('apples', 5); // 輸出:5 蘋果
帶參數的本地化
你還可以在你的翻譯中使用參數:
// 在你的語言文件中
'welcome_name' => '歡迎,:name!',
// 在你的代碼中
echo __('messages.welcome_name', ['name' => 'John']); // 輸出:歡迎,John!
結論
恭喜你!你剛剛踏入了 Laravel 本地化的世界。有了這些工具,你现在可以創建應用程序,讓用戶無論在世界何地都能用他們自己的語言交流。
記住,精通本地化(以及編程)的關鍵是實踐。嘗試創建一個小型專案並從一開始就實現本地化。你會驚訝地發現它多快就變成了第二天性!
快樂編程,願你的應用程序能夠講多種語言!??️?
方法 | 描述 | 示例 |
---|---|---|
__() |
Helper 函數用于翻譯 | __('messages.welcome') |
trans() |
另一個 Helper 函數用于翻譯 | trans('messages.goodbye') |
@lang |
Blade 指令用于翻譯 | @lang('messages.welcome') |
App::setLocale() |
設置應用程序語境 | App::setLocale('es') |
trans_choice() |
帶複數化的翻譯 | trans_choice('apples', 5) |
Credits: Image by storyset