zagovorichev/laravel-languages

在 Laravel 中使用不同的语言

v4.1.1 2020-04-14 12:03 UTC

This package is auto-updated.

Last update: 2024-08-29 04:53:29 UTC


README

本包引入了与框架无关的语言管理器,并提供与 Laravel 5 的无缝集成。

这是什么?

语言管理器:您可以选择新的语言,它将被放置为 App::setLocale($lang)

语言将保存在 SESSION 和/或 COOKIE 中

您也可以使用 URL

http://www.example.com/article/1?lang=en => http://en.example.com/en/article/1 

安装

composer require zagovorichev/laravel-languages

添加到 app.php(默认在 /laravel/config/app.php)中

'providers' => [
    // ...
    Zagovorichev\Laravel\Languages\LanguageServiceProvider::class,
]

并将新的中间件添加到 Kernel.php(查看 /laravel/app/Http/Kernel.php)中

protected $middlewareGroups = [
        'web' => [
            // ...
            \Zagovorichev\Laravel\Languages\Http\Middleware\LanguagesMiddleware\LanguagesMiddleware::class,
        ],
    ];

使用

语言管理器提供与 SESSION、COOKIE、路径和域的交互。

要更改系统语言,请发送带有输入 lang 的请求。例如:?lang=es,则应用程序将具有西班牙语区域。

所有配置都存储在 languages.php 文件中。
要创建自己的配置,请将文件 /laravel/vendor/zagovorichev/laravel-languages/config/languages.php 复制到文件夹 /laravel/config/

简单使用(SESSION + COOKIE)

如果您需要简单的语言管理器,则可以使用仅 'session' 和 'cookie' 模式。然后您不需要进行更多配置。

域映射

要在配置文件中使用 DomainMapManger,您应匹配语言和域

'domainMap' => [
    'en' => 'www.example.com',
    'es' => 'es.example.com',
    'ua' => 'www.example.ua',
],

⚠️ 注意:请仅使用 DomainMap 或 Domain 模式,否则行为将是不可预测的。

您还可以在配置文件中提供正则表达式。

'domainRegExp' => [
    'reg' => '|^(http://)([a-z]{2})[\.]{0,1}(example\.com.*)$|ui',
    'langPart' => 2,
]

结果将是 http://www.example.en/post/234 => http://en.example.com/post/234 => http://es.example.com/post/234

⚠️ 注意:请仅使用 DomainMap 或 Domain 模式,否则行为将是不可预测的。

路径

与域类似,您也可以提供正则表达式

'pathRegExp' => [
     'reg' => '|([a-z]{2})(/.*)|ui',
     'langPart' => 1, // lang part will be replaced with new lang
 ],

语言管理器的模式

每个存储都有自己的管理器。

  • session - 存储在 $_SESSION 中
  • cookie - 存储在浏览器 $_COOKIES 中
  • domainMap - 如果您有无法用简单正则表达式描述的不同域,您可以定义映射
  • domain - 使用域名来确定当前语言(www.example.com、en.example.com、es.example.com...)
  • path - 使用 URI 来确定语言,例如:example.com/en/address

需求

  • PHP 5.6
  • Laravel 5.3

许可证

本软件包遵循 MIT 许可证