发布于 2026-01-06 0 阅读
0

Laravel 中的语言切换:多语言网站的分步指南 DEV 的全球展示挑战赛,由 Mux 呈现:展示你的项目!

Laravel 中的语言切换:多语言网站的逐步指南

由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!

嗨,开发者们。🙋‍♂️

今天我们将学习如何在 Laravel 项目中轻松实现语言切换和翻译。让我们开始吧!

为什么在 Laravel 项目中实现语言切换和翻译如此重要? 🕵️‍♂️

创建一个支持多种语言的网站对于与多元化的受众群体建立联系至关重要。在本指南中,我们将逐步介绍如何在 Laravel 项目中实现语言切换和翻译功能。按照这些step-by-step步骤操作,您将能够创建一个用户友好的语言切换器,并轻松翻译网站内容。

步骤 1:设置您的 Laravel 项目。

首先,使用 Laravel Composer 创建一个新的 Laravel 项目。这将作为实现语言切换和翻译功能的基础。

composer create-project laravel/laravel LaravelLingo

注意:请确保运行 PHP 安装程序。

步骤 2:添加语言切换表单
创建一个语言切换表单组件,允许用户选择他们偏好的语言。您可以使用 Blade 模板将此组件添加到视图中。表单应包含您希望支持的每种语言的选项。

  • 在 下resources/views directory,创建一个名为 components 的文件夹
  • language-switch.blade.php在 components 目录下创建一个文件并将其命名为 `<filename>` 。
  • 创建一个切换表单,表单应如下所示:

language-switch.blade.php

图片描述

表单的值将包含用户选择的语言,并提交到language.switch路由。

注意:今天我们仅以表单内的形式进行onchange="this.form.submit()"演示,您可以自由选择其他方式提交所选语言的表单。

Laravel 提供内置的本地化功能,方便您轻松管理语言文件和翻译。请确保您的 Laravel 应用已启用本地化,方法是检查config/app.php相关文件。`locale` 选项应设置为默认语言(在本例中为英语),并且fallback_locale还应进行如下设置。

图片描述

步骤 3:将语言切换器添加到你的welcome.blade 文件中welcome.blade
在 welcome.blade 文件中,添加 language-switcher 组件,具体添加方式取决于你想在哪里实现它。

welcome.blade.php

图片描述

现在,让我们在用户切换语言时显示一条简单的消息。例如

'Welcome to the home page!'

-添加 html 标签以在开关容器上方或下方显示消息,例如

图片描述

上面的欢迎页面将显示两条消息,一条消息将显示使用开关选择的语言,另一条消息将显示该消息的不同语言翻译。今天我们将使用法语和阿拉伯语。

因此,为了获取所显示消息的翻译,我们还需要执行以下几个步骤:

它是如何运作的?

第四步:创建语言路由

图片描述

步骤 5:创建语言控制器

跑步php artisan make:controller LanguageController

LanguageController.php

图片描述

上面的代码会将语言存储在会话中,并返回一个变量language_switched,该变量稍后将在 welcome.blade 文件中使用。

步骤 5:创建中间件 中间件
将从会话中获取新选择的语言,并将本地语言设置为新语言。

php artisan make:middleware LanguageMiddleware

LanguageMiddleware.php

图片描述

如上所述,中间件会将 setLocale 设置为从会话中获取的新语言。

注意:如果您想检查本地语言是否设置正确,请使用 laravel 日志,并添加一行代码。



Log::info("Locale set to: " . $language . " (Selected language: " . $language . ")");


Enter fullscreen mode Exit fullscreen mode

请前往storage/logs/laravel.log文件查看,每次切换语言时,您都应该在下方看到结果。

图片描述

步骤 6:注册中间件。

现在我们需要注册中间件,请转到Http/Kernel.php并按如下方式放置您的中间件:

图片描述

第五步:翻译文本
有趣的部分来了,让我们翻译一下欢迎信息,你还记得吗?
'Welcome to the home page!'

在文件夹下创建两个子目录,resources/lang一个用于存放法语(fr),一个用于存放阿拉伯语。(ar)
您的目录结构应如下所示:

图片描述

在每个目录中,创建一个名为的文件messages.php

-法语:
resources/lang/fr/messages.php

图片描述

-阿拉伯:

图片描述

每个消息文件都应该包含您需要翻译的消息的译文,并为其命名,以便我们稍后可以从 welcome.blade.php 文件中调用它。

步骤 7:让我们测试一下。
要根据所选语言访问要显示的每段文本的翻译,Laravel 提供了一个辅助(__)函数,即双下划线后跟文本名称,这里我们使用的是所谓的“welcome”。



<div class="text-message">
     <p>{{__('messages.welcome')}}</p>
</div>


Enter fullscreen mode Exit fullscreen mode

由于 Laravel 本地化语言默认设置en为英语,因此消息将显示为:

图片描述

输出:

图片描述

切换到法语:

图片描述

切换至阿拉伯语:

图片描述

结论:

恭喜!👏🏻👏🏻👍🏻

您已成功在 Laravel 项目中实现语言切换和翻译功能。按照以下步骤操作,即可为用户提供本地化体验。

文章来源:https://dev.to/rachidma/language-switching-in-laravel-a-step-by-step-guide-to-multilingual-websites-50eb