mcaskill/slim-polyglot

该软件包已被废弃,不再维护。未建议替代软件包。

Slim 3 语言解析中间件

v0.5.0 2022-10-18 13:44 UTC

This package is auto-updated.

Last update: 2023-12-18 16:14:22 UTC


README

根据请求的 URI、客户端首选语言和可用语言,解析响应的当前语言。

修改 ResponseInterface 以分配 Content-Language 头部。

使用 willdurand/Negotiation 检测和协商客户端语言。

安装

通过 Composer

composer require mcaskill/slim-polyglot

需要 Slim 3。

用法

use Slim\App;
use McAskill\Slim\Polyglot\Polyglot;

$app = new App();

// Fetch DI Container
$container = $app->getContainer();

// Register Middleware
$app->add(new Polyglot([ 'en', 'fr', 'es' ]));

// Example route with ETag header
$app->get('/foo', function ($request, $response) {
	$language = $response->getHeader('Content-Language');

	// Handle response!
});

$app->run();

多语言中间件还可以接受在选择语言后执行的回调。

use Slim\App;
use McAskill\Slim\Polyglot\Polyglot;

$app = new App();

// Fetch DI Container
$container = $app->getContainer();

// Register Middleware
$app->add(
	new Polyglot([
		'languages' => [ 'en', 'fr', 'es' ],
		'fallbackLanguage' => 'fr',
		// Hooks to call after language is resolved
		'callbacks' => [
			function ($language) use ($container) {
				$container['environment']['language.current'] = $language;
			},
			[ 'MySuperApp', 'set_language' ]
		]
	])
);

// Example route with ETag header
$app->get('/foo', function ($request, $response) {
	$language = $this->environment['language.current'];

	// Handle response!
});

$app->run();

测试

待定

注意

语言代码可能格式化为 ISO 639-1 alpha-2 (en)、ISO 639-3 alpha-3 (msa) 或 ISO 639-1 alpha-2 与 ISO 3166-1 alpha-2 本地化 (zh-tw) 的组合。

[ "en", "fr-CA" ]

向多语言中间件提供语言列表时,第一个语言用作备用语言。当切换到不受支持的语言列表中的语言时,将使用第一个语言。

定义

  • "language-fallback" — 默认语言;确定为支持语言中的第一个。
  • "language-preferred" — 首选语言(s);确定为客户端的本地化首选项。
  • "language-current" — 当前语言;确定为基于应用程序支持的语言和客户端首选语言优先级的交叉引用所使用的本地化。

许可证

MIT 许可证 (MIT)。请参阅许可证文件获取更多信息。