yidas / yii2-language
带有状态保持和映射功能的Yii 2框架语言扩展
1.1.0
2018-11-01 06:58 UTC
Requires
- yiisoft/yii2: ~2.0.0
This package is auto-updated.
Last update: 2024-08-29 04:48:45 UTC
README
Yii 2语言扩展
带有状态保持和映射功能的Yii 2框架语言扩展
特性
-
语言映射与Yii2语言集成
-
会话和Cookie存储支持
-
Yii2 i18n支持
概览
要求
此库需要以下内容
- PHP 5.4.0+
- Yii 2.0.0+
安装
通过Composer在您的Yii2项目中安装
composer require yidas/yii2-language
配置
使用yidas\components\Language
添加组件,并配置相关设置
return [ 'bootstrap' => ['log', 'lang'], 'language' => 'en-US', 'components' => [ 'lang' => [ 'class' => 'yidas\components\Language', 'languages' => [ 0 => 'en-US', 1 => 'zh-TW', 2 => 'zh-CN', ], 'maps' => [ 'html' => [ 0 => 'en', 1 => 'zh-Hant', 2 => 'zh-Hans', ], ], // 'storage' => 'session', // 'storageKey' => 'language', ], ...
引导
您可以将语言组件添加到bootstrap
中,以保持会话和Cookie等语言存储工作
// `lang` component for example return [ 'bootstrap' => ['lang'], ...
使用
get()
获取当前语言
public string get($map=null)
示例
echo \Yii::$app->lang->get(); // en-US
您可以通过提供映射键作为第一个参数从映射中获取
echo \Yii::$app->lang->get('html'); // en
set()
同步设置当前语言到\Yii::$app->language
public boolean set($language)
示例
\Yii::$app->lang->set('zh-TW');
getByMap()
从$map获取自定义语言值
public string getByMap($mapKey)
示例
如果您必须按当前语言输出HTML语言值
echo \Yii::$app->lang->getByMap('html'); // en
setByMap()
使用$map中的自定义语言值进行设置
public boolean setByMap($mapKey, $mapValue)
示例
如果您必须通过输入HTML语言值来设置当前语言
$this->setByMap('html', 'zh-Hant');
isFirstCome()
首次访问检查,没有StorageRecord
与hasStorageRecord()
的逆别名
public boolean isFirstCome()
示例
if (Yii::$app->lang->isFirstCome()) { // Detetmine user ip to set current language } else if (Yii::$app->lang->hasStorageRecord()) { // Means !(Yii::$app->lang->isFirstCome()) }
实现
更改语言的控制器
您可以添加控制器或操作来更改语言,如/language?language=zh-TW
<?php namespace app\controllers; use Yii; use yii\web\Controller; /** * The Controller for Language converting */ class LanguageController extends Controller { public function actionIndex($language='') { $result = Yii::$app->lang->set($language); return $this->redirect(Yii::$app->request->referrer ?: Yii::$app->homeUrl); } }
全局更改语言的BeforeAction
您可以在应用的引导阶段处理语言设置来全局设置语言。
例如,在on beforeAction
函数中获取GET
参数以设置语言
return [ 'on beforeAction' => function ($event) { // Always fetch language from get-parameter $lang = \Yii::$app->request->get('lang'); // Set to given language with get-parameter if ($lang) { $result = \Yii::$app->lang->set($lang); } }, ... ]
之后,通过在任何URL中提供lang
参数,如/post/my-article?lang=zh-TW
,即可更改语言。