alkhatibdev/language-switcher

Laravel 动态语言切换器,用于 web 和 API 路由

v0.0.2 2024-03-07 18:34 UTC

This package is auto-updated.

Last update: 2024-09-24 11:35:47 UTC


README

Social Card of Language Switcher Package

Laravel 动态语言切换器

Latest Version Packagist Downloads (custom server) MIT Licensed

介绍

为 web 和 API 路由提供各种支持的 Laravel 动态语言切换器。

功能

  • 自动切换用户区域并提醒下次请求中选择的新的语言。
  • 支持通过 请求体/查询键请求头键路由参数名称 切换语言。
  • 支持 API 路由(通过头信息切换语言以实现无状态请求)。
  • 支持所有 HTTP 方法(GET、POST、PUT 等)。
  • 支持根据路由参数进行语言切换的 SEO 友好路由。
  • 所有内容都可以通过丰富的、有良好文档的 配置文件 进行配置。

安装

通过 composer 安装

composer require alkhatibdev/language-switcher

发布配置

php artisan vendor:publish --tag=language-switcher-config

一个 language-switcher.php 配置文件将被发布到您的 configs 目录。您可以自由地阅读并覆盖所有可配置部分,或者坚持使用 默认配置


使用

基本使用

所有设置都是开箱即用的,开始使用这些支持的选项调用您的路由

通过请求查询/体键

// Request query key/value
http://example.com/?lang=en

// Request magic keys
http://example.com/?en

// Also you can use the same above parameters with the body of POST or PUT
curl -X POST http://example.com/api/users
     -d '{"lang": "en"}'  

通过请求头键

curl --header "Accept-Language: en" http://example.com/api/users

通过路由参数

对于给定的路由:Route::get('/{locale}/home', [HomeController, 'home']);

http://example.com/en/home

注意
- 所有以前的示例都会要求该软件包将区域设置为 'en'
- 下一个请求仍然会记住这个新设置的区域。


自定义软件包范围

默认情况下,该软件包的中间件被分配到全局所有路由。但是,您可以从软件包配置文件中禁用 assign_globally,并手动将中间件 别名 分配给所有路由和路由组。

禁用全局分配

// config/language-switcher.php

'assign_globally' => false,

分配给路由或路由组

// routes/web.php

// Assign to individual route
Route::get('/{locale}/home', [HomeController, 'home'])->middleware(['switchlocale']);


// Assign to route group
Route::->middleware(['switchlocale'])->group(function () {
    //
});

分配给中间件组

// app/Http/kernel.php

protected $middlewareGroups = [
    'web' => [
        // ...
        'switchlocale',
    ],

    'api' => [
        // ...
        'switchlocale',
    ],
];

禁用保存

默认情况下,该软件包使用会话来存储由用户切换的当前区域,以便在下一个请求中不需要传递区域即可保持新选择的语言活跃。但是,如果您想停止这种行为,将 enable_session 设置为 false

// config/language-switcher.php

'enable_session' => false,

许可证

语言切换器是开源软件,根据 MIT 许可证 许可。