cetver / yii2-languages-dispatcher
设置 Yii 框架 2.0 的 Web 应用程序语言
1.1.2
2020-05-08 17:22 UTC
Requires
- yiisoft/yii2: ^2.0.13
Requires (Dev)
- ext-sqlite3: *
- codeception/base: ^2.2.3
- codeception/specify: ~0.4.3
- codeception/verify: ~0.3.1
- satooshi/php-coveralls: ^1.0
This package is auto-updated.
Last update: 2024-09-16 03:47:51 UTC
README
设置 Web 应用程序语言
安装
安装此扩展的首选方式是通过 composer。
运行以下命令之一
composer require --prefer-dist cetver/yii2-languages-dispatcher
或在您的 composer.json
文件的 require 部分添加
"cetver/yii2-languages-dispatcher": "^1.0"
使用
更新 Web 应用程序配置文件
return [ 'bootstrap' => ['languagesDispatcher'], 'components' => [ 'languagesDispatcher' => [ 'class' => 'cetver\LanguagesDispatcher\Component', 'languages' => ['en', 'ru'], // useful if you want to push the language handler at the beginning of beforeAction event handlers list 'appendSetLanguageHandler' => false, // defaults to true /* or 'languages' => function () { return \app\models\Language::find()->select('code')->column(); }, */ // Order is important 'handlers' => [ [ // Detects a language based on host name 'class' => 'cetver\LanguagesDispatcher\handlers\HostNameHandler', 'request' => 'request', // optional, the Request component ID. 'hostMap' => [ // An array that maps hostnames to languages or a callable function that returns it. 'en.example.com' => 'en', 'ru.example.com' => 'ru' ] ], [ // Detects a language from the query parameter. 'class' => 'cetver\LanguagesDispatcher\handlers\QueryParamHandler', 'request' => 'request', // optional, the Request component ID. 'queryParam' => 'language' // optional, the query parameter name that contains a language. ], [ // Detects a language from the session. // Writes a language to the session, regardless of what handler detected it. 'class' => 'cetver\LanguagesDispatcher\handlers\SessionHandler', 'session' => 'session', // optional, the Session component ID. 'key' => 'language' // optional, the session key that contains a language. ], [ // Detects a language from the cookie. // Writes a language to the cookie, regardless of what handler detected it. 'class' => 'cetver\LanguagesDispatcher\handlers\CookieHandler', 'request' => 'request', // optional, the Request component ID. 'response' => 'response', // optional, the Response component ID. 'cookieConfig' => [ // optional, the Cookie component configuration. 'class' => 'yii\web\Cookie', 'name' => 'language', 'domain' => '', 'expire' => strtotime('+1 year'), 'path' => '/', 'secure' => true | false, // depends on Request::$isSecureConnection 'httpOnly' => true, ] ], [ // Detects a language from an authenticated user. // Writes a language to an authenticated user, regardless of what handler detected it. // Note: The property "identityClass" of the "User" component must be an instance of "\yii\db\ActiveRecord" 'class' => 'cetver\LanguagesDispatcher\handlers\UserHandler', 'user' => 'user', // optional, the User component ID. 'languageAttribute' => 'language_code' // optional, an attribute that contains a language. ], [ // Detects a language from the "Accept-Language" header. 'class' => 'cetver\LanguagesDispatcher\handlers\AcceptLanguageHeaderHandler', 'request' => 'request', // optional, the Request component ID. ], [ // Detects a language from the "language" property. 'class' => 'cetver\LanguagesDispatcher\handlers\DefaultLanguageHandler', 'language' => 'en' // the default language. /* or 'language' => function () { return \app\models\Language::find() ->select('code') ->where(['is_default' => true]) ->createCommand() ->queryScalar(); }, */ ] ], ], ], ];
测试
运行以下命令
composer create-project --prefer-source cetver/yii2-languages-dispatcher
cd yii2-languages-dispatcher
vendor/bin/codecept run unit
有关 I18N 支持,请参阅
- https://github.com/cetver/yii2-languages-dispatcher - 设置 Web 应用程序语言
- https://github.com/cetver/yii2-language-url-manager - 解析和创建包含语言的 URL
- https://github.com/cetver/yii2-language-selector - 提供语言选择器的配置
- https://github.com/creocoder/yii2-translateable - 可翻译的行为(Active Record)