Laravel 本地化是一种强大的功能,使开发人员能够创建多语言网站。通过在您的 网络本地化 ,您可以为来自不同语言背景的访客提供个性化的用户体验,最终扩大您的覆盖范围并提高用户参与度。 Laravel 项目中实施
我们将指导您在 Laravel 应用中实施本地化,并向您介绍一种可以简化和增强本地化工作的工具!
为什么要本地化 Laravel 网站?

以下是您应该本地化 Laravel 网站的一些重要原因。.
- 触及全球受众: 通过本地化您的Laravel Laravel website, you can extend the reach of your app to an international audience. This allows users from different countries and language backgrounds to understand and interact with your content.
- 改善用户体验: 本地化允许用户以其母语与应用程序交互,这显著改善了用户体验。这可以提高参与度,降低跳出率,并增加转化率。
- 竞争优势: 在竞争激烈的全球市场中,提供多种语言的应用程序可以提供显著的竞争优势。它表明了您对国际市场的承诺,可以帮助您更有效地进入新市场。
- 改善SEO: 本地化良好的网站在特定语言的搜索中往往排名更高。这可以 增加您的博客流量 并提高在线可见度,在各种市场中实现多语言翻译。
多语言 Laravel 本地化的要求

在 Laravel中实施多语言本地化时,需要考虑一些要求和步骤。.
- 要获取最新的本地化功能,请确保您使用的是最新版本的 Laravel (例如,版本10.x)。.
- 对PHP和 Laravel 框架的基本了解将有助于实施过程。.
- 设置支持 Laravel的本地开发环境或服务器,包括Web服务器和数据库。.
- 从一开始就确定您的应用程序将支持的语言。.
简单的 Laravel 翻译

在了解了在翻译 Laravel 应用程序或网络之前必须满足的要求之后,我们将提供一些简单的翻译 Laravel 的步骤。.
要做到这一点,请打开您要本地化的视图文件,例如resources/views/welcome.blade.php。然后,用以下代码替换body标签。.
Welcome to Linguise website!
如您所见,上面的文本目前直接写在代码中。这效率较低,并且使得 将网站翻译成不同语言 (国际化)变得困难。
我们将使上述文本更具灵活性,以便可以轻松适应不同的语言。 Laravel 为此提供了一个非常有用的功能,即本地化系统。第一步是用以下代码替换现有文本。.
{{ __('Welcome to Linguise website!') }}
Laravel 将默认显示上述文本,如果用户选择英语以外的语言,则查找翻译。在这种情况下,英语将用作应用程序的默认语言。.
在 Laravel 多语言Web中设置区域设置

但是 Laravel 如何确定当前语言或知道应用程序中有哪些语言可用?它检查config/app.php文件中的语言环境设置。打开此文件并查找以下两个键。.
/*
|--------------------------------------------------------------------------
| 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',
键上的说明应该很清楚。总之,语言环境键保存应用程序的默认语言环境(如果代码中未指定其他语言环境)。如果在应用程序中请求不存在的语言环境,则fallback_locale将被激活。.
现在,让我们向该文件添加一个新的键,以提供所有支持的语言环境的列表。.
/*
|--------------------------------------------------------------------------
| Available locales
|--------------------------------------------------------------------------
|
| List all locales that your application works with
|
*/
'available_locales' => [
'English' => 'en',
'Italian' => 'it',
'French' => 'fr',
],
此时,我们已经尝试了 Laravel 网络支持三种语言,即英语、意大利语和法语。.
Laravel 翻译文件概述

在 Laravel中,与许多其他框架一样,不同语言的翻译存储在单独的文件中。有两种方法用于组织这些翻译文件。.
旧方法将文件存储在以下结构中:resources/lang/{en,fr,it}/{myfile.php}。新方法使用JSON文件,例如resources/lang/{fr.json, it.json}。本文将重点介绍新方法,尽管旧方法的原理相似,只是翻译键的命名和访问方式有所不同。.
对于具有区域变体的语言,您应根据ISO 15897标准命名语言目录或文件。例如,英式英语应命名为en_GB,而不是en-gb。.
一般信息
在 Laravel中,与许多框架一样,不同语言的翻译存储在单独的文件中。有两种主要方法用于组织 Laravel 翻译文件。.
- 传统方法涉及将文件存储在以下路径下:resources/lang/{en,fr,it}/{myfile.php}。.
- 现代方法使用resources/lang/{fr.json, it.json}文件。.
本文将重点介绍第二种方法,尽管这些原则适用于两者(在翻译键的命名和访问方式上存在差异)。.
对于因地区而异的语言,建议根据ISO 15897标准命名语言目录/文件。例如,英式英语将被表示为en_GB,而不是en-gb。.
创建 Laravel 翻译文件
为我们的应用程序配置好区域设置后,我们可以继续翻译默认的欢迎消息。.
让我们从在resources/lang目录中创建JSON格式的新本地化文件开始。首先,我们将创建一个resources/lang/it.json文件,并用适当的翻译填充它。.
{
"Welcome to Linguise website!": "Benvenuti nel sito web di Linguise!"
}
接下来,添加一个resources/lang/fr.json文件。.
{
"Welcome to Linguise website!": "Bienvenue sur le site de Linguise"
}
正如您所观察到的,我们始终引用welcome.blade.php文件中的默认消息({{ __(‘欢迎访问 Linguise 网站!’) }})。无需创建en.json文件,因为 Laravel 自动识别默认消息为英语。.
在多语言应用中设置语言切换器

此外, Laravel 尚未设置以覆盖本地语言,因此目前我们将在路由中直接处理翻译。像这样修改routes/web.php文件中的默认欢迎路由。.
Route::get('/{locale?}', function ($locale = null) {
if (isset($locale) && in_array($locale, config('app.available_locales'))) {
app()->setLocale($locale);
}
return view('welcome');
});
在这种情况下,我们正在捕获一个可选的区域GET参数,并根据它设置当前区域(如果请求的区域得到支持)。.
现在,您可以访问您的网站,并在URL中将任何支持的语言作为第一个段。例如,导航到localhost/it或localhost/fr将显示本地化的内容。如果您没有指定区域或选择不受支持的区域, Laravel 将默认为英语(en)。.
Laravel的本地化中间件
在每个URL中包含语言环境可能并不理想,还可能破坏网站的视觉吸引力。为了解决这个问题,我们将设置一个语言切换器,并利用用户会话来显示翻译的内容。您可以在app/Http/Middleware/Localization.php文件中创建新的中间件,或者通过运行artisan make:middleware Localization命令生成它。.
然后,在里面添加以下代码。.
如果用户选择的位置选项存在于会话中,则此中间件将指示 Laravel 使用该位置。.
由于我们需要在每个请求上运行该操作,因此将其添加到app/Http/Kernel.php中的默认中间件堆栈中,用于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
],
修改路由
接下来,在routes/web.php文件中定义一个路由来更改语言环境。我们在这里使用闭包路由,但如果您愿意,也可以将相同的代码放在控制器中。.
Route::get('language/{locale}', function ($locale) {
app()->setLocale($locale);
session()->put('locale', $locale);
return redirect()->back();
});
此外,删除先前添加到默认欢迎路由的区域设置切换。您的根路由现在应如下所示。.
Route::get('/', function () {
return view('welcome');
});
完成此操作后,用户只能通过访问localhost/language/{locale}来切换活动语言。所选语言环境将保存在会话中,用户将被重定向回其上一页(由本地化中间件处理)。.
要测试它,请转到localhost/language/it(假设会话cookie在您的浏览器中处于活动状态),您应该看到翻译的内容。您可以导航该站点或刷新页面,所选语言将保持有效。.
语言切换器实现
现在,我们需要为用户提供一个可点击的选项来更改 语言切换器 Laravel 网站 ,而不是要求他们在URL中手动输入区域代码。为了实现这一点,创建一个简单的语言切换器。在resources/views/partials/language_switcher.blade.php中添加一个新文件,并插入以下代码。
@foreach($available_locales as $locale_name => $available_locale)
@if($available_locale === $current_locale)
{{ $locale_name }}
@else
{{ $locale_name }}
@endif
@endforeach
要在“欢迎”视图中包含新创建的语言切换器,只需将以下行添加到您的welcome.blade.php文件中,切换器就会出现在您希望的位置。.
@include('partials/language_switcher')
{{ __('Welcome to our website!') }}
打开app/Providers/AppServiceProvider.php文件,并在boot()方法中添加以下代码,以便在使用语言切换器时与所有视图共享当前区域设置
* 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'));
});
}
Laravel PHP中的高级翻译功能

在本讨论中,我们将处理其他本地化组件,即日期、数字和货币。以下是步骤。.
Laravel中的本地化日期
处理日期和时间在本地化过程中至关重要。 Laravel 使用 Carbon 来管理日期和时间。以下是如何使用 Carbon 显示本地化日期。.
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
]);
});
此代码根据应用程序的当前语言环境设置 Carbon 语言环境,并相应地格式化日期。.
要在视图中显示本地化日期:
{{ __('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 }}
格式化数字和货币
不同国家有不同的数字格式化方式。例如。.
- 法国 → 123 123,12
- 德国 → 123.123,12
- 日本 → 123,123
要在您的 Laravel 应用程序中适应这些变化,您可以使用NumberFormatter。.
您还可以用特定语言拼出数字。.
以下是货币。对于法语语言环境(`fr`),货币将以欧元(€)显示,而对于美国语言环境(`en_US`),货币将以美元($)显示。.
替代解决方案 Laravel 本地化与 Linguise

了解文章中描述的 Laravel 本地化步骤后,这个过程涉及许多步骤,要求用户深入了解 Laravel 程序代码。.
这无疑会给想要本地化应用的新手用户带来困难。因此,需要一个更创新的解决方案,能够快速翻译,支持本地化,并且只需几个简单的步骤即可实现。.
一个有前途的解决方案是 Linguise。 Linguise 提供了一种更简单、更高效的 Laravel 本地化方法,无需深入的代码知识。 Linguise 的主要功能包括。.
- 与 Laravel轻松集成
- 无需编码即可自定义语言切换器
- 图像翻译
- 实时编辑器,可根据本地上下文自定义翻译
- 动态内容翻译
- 多语言版本的SEO优化
的步骤 安装 LinguiseLaravelLaravel LaravelLaravelLaravelLaravel LaravelLaravel 网站 也很简单。以下是简要说明。
- 创建一个 Linguise 账户(免费试用30天)
- 注册您的 Laravel 网站域名并输入一些信息。您将获得一个API密钥。.
- 上传并连接 Linguise 翻译脚本到您获得的 Laravel 文件夹。.
- 在htaccess文件中设置语言URL。.
- 将语言切换器脚本插入HTML头部。.
- 根据需要自定义语言切换器
- 语言切换器将出现在 Laravel 网站上,内容可以自动翻译。.
如何做?使用 Linguise,您只需注册并激活,语言切换器就会出现。之后,您可以自由本地化,例如通过实时编辑器,翻译媒体,图像等。.
结论
Laravel 本地化是一项强大的功能,使开发人员能够创建多语言网站和应用程序。正如我们所见,内置的 Laravel 本地化过程涉及多个步骤,需要对框架有良好的理解。对于初学者或寻求更快速解决方案的人来说,这可能是一个挑战。.
像 Linguise 这样的工具为那些寻求更简化方法的人提供了创新的替代方案。这些解决方案提供快速翻译功能、简单的集成和用户友好的功能,如可定制的语言切换器和图像翻译。现在, 创建您的 Linguise 账户 并享受我们为您的Laravel本地化提供的功能! Laravel!



