germania-kg / language-negotiation
中间件,用于将协商后的客户端语言存储在请求属性中。
1.1.0
2023-01-04 08:30 UTC
Requires
- php: ^7.4|^8.0
- psr/http-message: ^1.0
- psr/http-server-middleware: ^1.0
- psr/log: ^1.0
- willdurand/negotiation: ^2.3|^3.0
Requires (Dev)
- nyholm/psr7: ^1.3
- php-coveralls/php-coveralls: ^2.0
- phpspec/prophecy-phpunit: ^2.0
- phpstan/phpstan: ^1.9
- phpunit/phpunit: ^8.0|^9.0
This package is auto-updated.
Last update: 2024-09-04 12:05:46 UTC
README
Germania KG · 语言协商
此中间件将Will Durand的协商语言结果存储在请求属性X-language-negotiated
中。
适用于PSR-15 SinglePass和传统的Slim-like DoublePass方法。
使用方法
设置
<?php use Germania\LanguageNegotiation\LanguageNegotiationMiddleware; use Negotiation\LanguageNegotiator; $negotiator = new LanguageNegotiator(); $priorities = array('de', 'fu', 'en'); new LanguageNegotiationMiddleware($negotiator, $priorities);
使用构造函数进行配置
// Defaults: $accept_header = "Accept-Language"; $attr_name = "X-language-negotiated"; $logger = new Monolog // Any PSR-3 Logger; new LanguageNegotiationMiddleware($negotiator, $priorities, $accept_header, $attr_name, $logger);
使用方法API进行配置
$middleware = new LanguageNegotiationMiddleware($negotiator, $priorities); $middleware->setAcceptLanguageHeader("Accept-Language"); $middleware->setRequestAttributeName("X-language-negotiated"); $middleware->setLogger( $psr3_logger );
在控制器中使用
Slim-like示例
<?php class MyController { public function __invoke(ServerRequestInterface $request, ResponseInterface $response, $args) { // S.th. like 'fu' echo $request->getAttribute("X-language-negotiated"); } }
开发
$ git clone git@github.com:GermaniaKG/language-negotiation.git
$ cd language-negotiation
$ composer install
单元测试
您可以复制phpunit.xml.dist
到phpunit.xml
并根据您的需要进行调整,或者保持不变。运行PhpUnit测试或类似这样的composer脚本
$ composer test # or $ vendor/bin/phpunit