zagovorichev / laravel-languages
在 Laravel 中使用不同的语言
Requires
- php: >=7.2
- illuminate/config: 7.5.*
- illuminate/container: 7.5.*
- illuminate/support: 7.5.*
Requires (Dev)
- phpunit/phpunit: ^8.5
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 许可证