Laravel - 本地化:初學者指南

你好,有志者!今天,我們將踏上一段令人振奮的旅程,進入 Laravel 本地化的世界。別擔心你對編程還是新手——我會成為你的友好導遊,逐步解釋一切。在這個教學的結尾,你將能夠讓你的 Laravel 應用程序講多種語言!讓我們開始吧!

Laravel - Localization

什麼是本地化?

在我們深入代碼之前,讓我們先了解什麼是本地化。想像一下,你創建了一個出色的網站,但所有的用戶並不說同樣的語言。如果你的網站能夠根據用戶的偏好自動切換語言,那該有多好?這正是本地化所做的事!

本地化是將你的應用程序適應不同語言和地區的過程。就像教你的應用程序成為多語言者一樣!

本地化為什麼重要?

讓我分享一個快速的故事。幾年前,我的一個學生創建了一個出色的電子商務網站。它完美無缺……除了它是英文的。當他嘗試擴展到講西班牙語的市場時,他發現他需要重建幾乎所有東西!如果他從一開始就使用本地化,那會容易得多。

本地化能夠幫助你:

  1. 觸達全球受眾
  2. 改進用戶體驗
  3. 提高用戶參與度和保留率

現在,讓我們看看 Laravel 如何讓這個過程變得輕鬆!

在 Laravel 中設置本地化

步驟 1:創建語言文件

首先,我們需要創建語言文件。Laravel 讓這件事變得非常簡單!

  1. 前往你 Laravel 專案中的 resources/lang 目錄。
  2. 為你想要支持的每種語言創建一個新文件夹。例如,用 en 為英文,用 es 為西班牙文。
  3. 在每個文件夹中,創建一個名為你正在翻譯功能的 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