tyler36/localization

本地化中间件

2.2 2021-09-21 06:04 UTC

This package is auto-updated.

Last update: 2024-09-21 12:38:40 UTC


README

此包旨在简化多语言应用程序。只需添加所需的中间件并更新配置即可。

安装

  • 安装包
composer require tyler36/localization
  • 发布配置 运行以下命令以发布配置文件
php artisan vendor:publish --provider=tyler36/localization

中间件

选项1:请求头

此中间件使用请求头设置语言环境。默认情况下,查询字符串设置为 X-localization,但可以通过配置文件进行更改。它非常适合通过javascript进行请求。

  • 注册 \Tyler36\Localization\Middleware\HeaderLocale::class

  • 使用纯javascript或首选javascript框架设置头信息。例如,您可以使用以下方法将头信息应用于所有 Axios 请求

// Set language to German ('de')
window.axios = axios;
window.axios.defaults.headers.common['X-localization'] = 'de';

现在,当您向端点发送请求时,Laravel将更新语言环境以匹配设置,前提是它已配置为“有效”。

选项2:查询字符串

此中间件旨在使用查询字符串。

  • 注册 \Tyler36\Localization\Middleware\QueryStringLocale::class

  • 将查询字符串添加到URL中。默认情况下,查询字符串设置为 lang,但可以通过配置文件进行更改。

    // This will return the site with default locale
    https://cool-site.dev

    // This will return the site with locale to to German (de)
    https://cool-site.dev?lang=de

选项3:会员偏好

此中间件使用用户模型上的属性来设置语言环境。当会员登录时,它会检查保存的语言环境并将其应用。

  • 注册 \Tyler36\Localization\Middleware\MemberLocale::class

  • 在用户模型上创建属性 默认情况下,查询字符串设置为 locale,但可以通过配置文件进行更改。

    $table->string('locale', 2)->default(app()->getLocale());

选项4:会话

此中间件在Laravel会话中查找值。

  • 注册 \Tyler36\Localization\Middleware\SessionLocale::class

  • 创建一个保存 session_key => locale 到会话的路由 默认情况下,session_key 设置为 locale,但可以通过配置文件进行更改。

    $key = config('localization.session_key', 'locale');
    session([$key => request()->get($key)]);

或者您可以使用包含的控制器来更新您的路由文件

// routes/web.php
Route::get('/locale/{locale}', [
    'as' => 'localization.session',
    'uses' => '\Tyler36\Localization\Controller\LocaleController@session'
]);

// blade - create links
route('localization.session', [config('localization.session_key') => $locale]