Laravel - 本地化:初学者指南

你好,有抱负的开发者们!今天,我们将踏上一段激动人心的旅程,探索Laravel本地化的世界。别担心如果你是编程新手——我将作为你的友好向导,一步一步地解释所有内容。在本教程结束时,你将能够让你的Laravel应用程序支持多种语言!让我们开始吧!

Laravel - Localization

什么是本地化?

在我们深入研究代码之前,让我们先了解一下本地化是什么意思。想象一下,你创建了一个出色的网站,但所有用户并不说同一种语言。如果你的网站能够根据用户的偏好自动切换语言,那岂不是很好?这正是本地化所做的!

本地化是将你的应用程序适应不同语言和地区的过程。就像教你的应用程序说多种语言一样!

为什么本地化很重要?

让我分享一个快速的故事。几年前,我的一个学生创建了一个出色的电子商务网站。它非常完美……除了它只有英文版。当他试图扩展到西班牙语市场时,他意识到他几乎需要重建所有内容!如果他从一开始就使用本地化,那就会容易得多。

本地化可以帮助你:

  1. 触达全球受众
  2. 提高用户体验
  3. 增加用户参与度和留存率

现在,让我们看看Laravel如何让这个过程变得轻松!

在Laravel中设置本地化

第一步:创建语言文件

首先,我们需要创建语言文件。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' => 'Welcome to our website!',
'goodbye' => 'Goodbye, see you soon!',
];

// resources/lang/es/messages.php
return [
'welcome' => '¡Bienvenido a nuestro sitio web!',
'goodbye' => '¡Adiós, hasta pronto!',
];

第二步:在代码中使用翻译

现在我们有了翻译,让我们在代码中使用它们。Laravel提供了几种方法来做这件事:

方法1:使用__()辅助函数

echo __('messages.welcome');

这将根据应用程序设置为英语或西班牙语,输出"Welcome to our website!"或"¡Bienvenido a nuestro sitio web!"。

方法2:使用trans()辅助函数

echo trans('messages.goodbye');

这与__()的功能相同,但一些开发者更喜欢这种语法。

方法3:在Blade模板中使用@lang指令

在你的Blade模板中,你可以使用@lang指令:

<h1>@lang('messages.welcome')</h1>

这在处理HTML模板时特别有用。

第三步:更改应用程序区域设置

现在,我们如何告诉Laravel使用哪种语言?有几种方法:

方法1:设置默认区域设置默认值

在你的config/app.php文件中,你可以设置默认区域设置:

'locale' => 'en',

方法2:在运行时更改区域设置

你可以在代码中动态更改区域设置:

App::setLocale('es');

这在基于用户偏好或设置更改语言时很有用。

方法3:使用中间件设置区域设置

对于更高级的控制,你可以创建一个中间件来根据各种因素设置区域设置。这里有一个简单的例子:

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中注册这个中间件:

protected $middlewareGroups = [
'web' => [
// ... 其他中间件
\App\Http\Middleware\SetLocale::class,
],
];

高级本地化技术

复数化

Laravel可以为你处理复数化!下面是如何操作的:

// 在你的语言文件中
'apples' => '{0} No apples|{1} One apple|[2,*] :count apples',

// 在你的代码中
echo trans_choice('apples', 0); // 输出:No apples
echo trans_choice('apples', 1); // 输出:One apple
echo trans_choice('apples', 5); // 输出:5 apples

带参数的本地化

你还可以在翻译中使用参数:

// 在你的语言文件中
'welcome_name' => 'Welcome, :name!',

// 在你的代码中
echo __('messages.welcome_name', ['name' => 'John']); // 输出:Welcome, John!

结论

恭喜你!你已经迈出了进入Laravel本地化世界的第一步。有了这些工具,你现在可以创建能够用用户自己的语言与他们交流的应用程序,无论他们身处世界的哪个角落。

记住,掌握本地化(以及编程本身)的关键是实践。尝试创建一个小项目并从一开始就实现本地化。你会惊讶于它如何迅速成为第二天性!

快乐编码,愿你的应用程序能够说多种语言!??️?

方法 描述 示例
__() 翻译的辅助函数 __('messages.welcome')
trans() 另一个翻译的辅助函数 trans('messages.goodbye')
@lang Blade指令用于翻译 @lang('messages.welcome')
App::setLocale() 设置应用程序区域设置 App::setLocale('es')
trans_choice() 带有复数化的翻译 trans_choice('apples', 5)

Credits: Image by storyset