germania-kg/language-negotiation

中间件,用于将协商后的客户端语言存储在请求属性中。

1.1.0 2023-01-04 08:30 UTC

This package is auto-updated.

Last update: 2024-09-04 12:05:46 UTC


README

Germania KG · 语言协商

Tests

此中间件将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.distphpunit.xml并根据您的需要进行调整,或者保持不变。运行PhpUnit测试或类似这样的composer脚本

$ composer test
# or
$ vendor/bin/phpunit