主页/PHP笔记/PHP问答/框架Laravel/Laravel中的国际化:实用指南(含示例)

Laravel中的国际化:实用指南(含示例)

Bug编译狮

Bug编译狮

Laravel 是一个流行的 PHP 框架,广泛用于构建 Web 应用程序。国际化(I18N)是确保应用程序在全球范围内都能提供一致用户体验的关键技术。以下是一些关于 Laravel 中国际化的基本概念、方法和示例。

1. 安装和配置

首先,你需要安装 Laravel 的国际化功能。你可以使用 Composer 来安装:

composer require laravel/internationalization

然后,运行以下命令来配置国际化:

php artisan vendor:publish --provider="IlluminateTranslationTranslationServiceProvider"
php artisan config:set app.locale 'en'

2. 创建翻译文件

创建一个新的语言目录,并在其中创建翻译文件。例如,如果你要为英语创建翻译文件,可以创建一个名为 en 的目录,并在其中创建一个名为 messages.php 的文件:

// resources/lang/en/messages.php
return [
    'welcome' => 'Welcome to our website!',
];

3. 使用翻译

在你的控制器或其他类中,你可以使用 trans 方法来获取翻译字符串:

use IlluminateSupportFacadesTranslation;

public function index()
{
    $message = Translation::get('welcome');
    return view('welcome', compact('message'));
}

4. 多语言支持

为了支持多个语言,你需要在 config/app.php 文件中设置 'fallback_locale''locales' 配置项:

'locale' => env('APP_LOCALE', 'en'),
'fallback_locale' => 'en',
'locales' => ['en', 'fr', 'es'],

5. 路由和中间件

你可以通过路由和中间件来控制不同的语言环境。例如,你可以创建一个中间件来根据用户偏好设置语言:

// app/Http/Middleware/LocaleSwitcher.php
namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesApp;

class LocaleSwitcher
{
    public function handle($request, Closure $next)
    {
        if (session()->has('locale')) {
            App::setLocale(session()->get('locale'));
        }

        return $next($request);
    }
}

然后,将这个中间件添加到你的路由组中:

Route::group(['prefix' => '/{locale}', 'middleware' => 'locale'], function () {
    Route::get('/', function () {
        return redirect('/');
    });
});

6. 示例代码

以下是一个完整的示例,展示了如何在 Laravel 中实现国际化:

控制器

// app/Http/Controllers/HomeController.php
namespace AppHttpControllers;

use IlluminateSupportFacadesTranslation;

class HomeController extends Controller
{
    public function index()
    {
        $message = Translation::get('welcome');
        return view('home', compact('message'));
    }
}

视图

<!-- resources/views/home.blade.php -->
<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{ __('welcome') }}</title>
</head>
<body>
    <h1>{{ __('welcome') }}</h1>
</body>
</html>

中间件

// app/Http/Middleware/LocaleSwitcher.php
namespace AppHttpMiddleware;

use Closure;
use IlluminateSupportFacadesApp;

class LocaleSwitcher
{
    public function handle($request, Closure $next)
    {
        if (session()->has('locale')) {
            App::setLocale(session()->get('locale'));
        }

        return $next($request);
    }
}

通过以上步骤,你可以在 Laravel 中实现基本的国际化功能。你可以根据需要扩展和自定义这些功能,以满足你的具体需求。

黑板Bug讲师

黑板Bug讲师

介绍

Laravel 是一个强大的 MVC PHP 框架,以其易用性和灵活性著称,尤其在构建可扩展和维护性良好的 Web 应用程序方面表现卓越。国际化(i18n)是一项关键特性,用于创建面向全球受众的应用程序,使您能够为应用的用户界面提供不同语言支持。在这篇指南中,我们将详细介绍如何在 Laravel 中实现 i18n,并附带实际示例。

在Laravel中的基本多语言支持(i18n)

Laravel 提供了内置的国际化支持,使得开发人员可以更容易地为他们的应用添加多种语言。这通过语言文件实现,这些文件用于存储不同语言下的字符串翻译。Laravel 使用这些文件根据用户的首选语言替换文本,从而提供无缝的多语言体验。

设置语言文件

首先,语言文件通常存储在。resources/lang目录。在这个目录中,为计划支持的语言创建一个文件夹(例如:en对不起,我不理解您的意思。fr对于法语。在每个语言文件夹中,您需要创建PHP文件来返回键值对的翻译字符串。例如:

<?php

return [
    'welcome' => 'Welcome to our application!',
];

这是一份基本的英语语言文件示例。resources/lang/en/messages.php已经收到您的消息,请问有什么我可以帮助您的吗?

在视图中使用翻译

在你的Laravel视图中,你可以使用。__()辅助函数用于检索翻译。__()该函数接受文件名后跟翻译字符串的键。例如:

<h1>{{ __('messages.welcome') }}</h1>

如果有一个与法语翻译文件对应的条目,且应用程序的区域设置为法国,则Laravel将显示法语欢迎信息。

更改应用程序语言环境

应用程序的本地化决定了使用哪些语言文件进行翻译。您可以在此设置中更改此设置。config/app.php文件是由修改引起的。'locale'价值:

'locale' => 'en',

例如,你可以动态地改变应用的语言环境。App::setLocale($locale)方法。

高级本地化技术

虽然基本的键值对翻译在许多应用中表现良好,但在某些复杂化场景下也会出现。Laravel 提供了多种工具来有效地解决这些问题。

复数形式

Laravel的翻译引擎支持词性变化,允许您根据数量定义单数和复数形式。这通过语言文件中的特殊语法实现:

'apples' => 'There is one apple|There are many apples',

在您的观点中,您可以用它。trans_choice()自动处理复数化:

@php
$appleCount = 10;
@endphp

<p>{{ trans_choice('messages.apples', $appleCount) }}</p>

JSON转换文件

对于需要高灵活性的项目,Laravel 支持 JSON 语言文件。这些文件允许您将单个键映射到多个语言,而无需 PHP 文件的层级结构。要使用此功能,请在名为相应方言的 JSON 文件中放置该文件。resources/lang目录:

{
    "Welcome to our application!": "Bienvenue sur notre application!",
}

在视图中,你可以使用。__()处理字符串翻译,就像处理PHP文件一样,但只需参数为要翻译的字符串:

<h1>{{ __('Welcome to our application!') }}</h1>

结论。

通过这个指南,很明显Laravel使添加国际化到您的应用程序变得非常简单,这扩大了您向全球受众的覆盖面。通过利用语言文件、充分利用可变性,并在必要时整合JSON翻译文件,您可以轻松创建包容性和多语言的应用程序。

记得,每个国际申请都始于第一步:规划语言策略。借助Laravel作为框架和本指南作为工具箱中的资源,您将自信地迈出这一步。

长工码奴1523

长工码奴1523

在 Laravel 中实现国际化是很有用的,因为它可以帮助你在应用中提供多语言支持。下面我将为你介绍如何使用 Laravel 实现国际化,并附上一些示例代码。

1. 安装 Laravel 的国际化包

首先,你需要安装 Laravel 的国际化包。你可以通过 Composer 来安装它:

composer require laravel/laravel-i18n

2. 创建国际化文件夹和语言文件

创建一个名为 lang 的文件夹来存储所有语言文件。然后,为每种语言创建相应的 .po 文件。例如,如果要支持中文,可以创建一个名为 zh-CN.po 的文件。

3. 编辑 .po 文件

打开每个语言文件的 .po 文件,添加以下键值对:

  • language: 翻译后的文本。
  • locale: 指定该翻译适用于哪个国家/地区的 ISO 编码。

例如,对于英文,键值对如下所示:

{
    "en": {
        "Hello": "Hello"
    }
}

这表示英文的“Hello”应该翻译成“Hello”。

4. 编辑 .json 文件

app/i18n/en.json 或其他对应的 .json 文件中,定义哪些字符串需要被本地化。例如:

{
    "hello": "Hello",
    "world": "World"
}

这些键值对将会被翻译器替换为实际的语言版本。

5. 使用 Laravel 的国际化功能

现在,当你在控制器方法或其他视图组件中调用这些键时,它们会自动显示为相应语言的文本。例如,假设我们有一个控制器方法 show,我们可以这样调用它:

public function show(Request $request, $id)
{
    return view('admin.show', [
        'title' => trans('admin.title') // 使用 Laravel 的国际化
    ]);
}

这将在视图中显示带有相应标题的页面。

示例代码

use IlluminateSupportFacadesRoute;
use AppHttpControllersHomeController;

Route::get('/', [HomeController::class, 'index'])->name('home');

Route::get('/about/{country}', [HomeController::class, 'about']);

在这个例子中,{country} 是一个参数,用于根据当前用户的国家选择合适的语言。

结论

通过上述步骤,你可以轻松地在 Laravel 应用中实现国际化功能。只需要确保所有的语言文件都正确配置并编译,就可以享受到跨语言的支持了。