razonyang/yii-translator-middleware

0.1.1 2022-09-10 14:14 UTC

This package is auto-updated.

Last update: 2024-09-11 12:09:22 UTC


README

Latest Stable Version Total Downloads Build Status Scrutinizer Code Quality Code Coverage

一个用于 Yii Translator 的 HTTP 中间件。

它是如何工作的?

  1. TranslatorMiddleware 解析来自请求的本地化设置,并将翻译实例存储在请求中。
  2. 后续的中间件和处理程序可以通过 TranslatorMiddleware::getTranslatorTranslatorMiddleware::getTranslatorByAttributes 静态方法检索翻译实例。

安装

可以使用 composer 安装此包

composer require razonyang/yii-translator-middleware --prefer-dist

配置

<?php

declare(strict_types=1);

use RazonYang\Yii\TranslatorMiddleware\LocaleParser\CompositeParser;
use RazonYang\Yii\TranslatorMiddleware\LocaleParser\HeaderParser;
use RazonYang\Yii\TranslatorMiddleware\LocaleParser\QueryParamsParser;
use RazonYang\Yii\TranslatorMiddleware\LocaleParserInterface;
use RazonYang\Yii\TranslatorMiddleware\TranslatorMiddleware;
use Yiisoft\Definitions\Reference;
use Yiisoft\Translator\TranslatorInterface;

return [
    TranslatorMiddleware::class => [
        'class' => TranslatorMiddleware::class,
        '__construct()' => [
            Reference::to(LocaleParserInterface::class),
            Reference::to(TranslatorInterface::class),
        ],
    ],

    LocaleParserInterface::class => CompositeParser::class,
    CompositeParser::class => [
        'class' => CompositeParser::class,
        '__construct()' => [
            Reference::to(QueryParamsParser::class),
            Reference::to(HeaderParser::class),
        ],
    ],
    QueryParamsParser::class => [
        'class' => QueryParamsParser::class,
        '__construct()' => [
            'lang',
        ],
    ],
];

本地化解析器

  • CompositeParser:从多个解析器中解析本地化设置,如果成功则立即返回。
  • HeaderParser:从 Accept-Language 标头解析本地化设置。
  • QueryParamsParser:从指定的查询参数解析本地化设置,默认为 lang