Yii2 的国际化配置
1、安装扩展
要启用php的国际化库,window下的php版本一般会自带intl库,但是需要手动在ini中启用
2、配置数据源
'i18n' => [
'translations' => [
//框架内置的,不满足需要时才覆盖
'yii' => [
'class' => 'yii\i18n\PhpMessageSource',
'basePath' => '@admin/messages',
//框架默认的,不建议更改
//'sourceLanguage' => 'en-US',
'fileMap' => [
'yii' => 'yii.php',
],
],
//其他数据源类别
'app*' => [
'class' => 'yii\i18n\PhpMessageSource',
'basePath' => '@admin/messages',
'fileMap' => [
'app' => 'app.php',
],
],
],
],
3、配置框架自动识别
开启自动识别,配置后,ContentNegotiator 会自动根据参数修改yii::$app->language,代码中使用了Yii:t()但是未设置语言的,都会默认使用当前语言。
'bootstrap' => [
'log',
[
'class' => 'yii\filters\ContentNegotiator',
//formats=null 关闭格式化处理,根据业务需要
'formats' =>null
//支持的语言,调整顺序可以设置优先级(前提是根据客户端的参数)
'languages' => [
//'en-US',
//'tr',
'zh-CN',
],
],
],
注意:yii2支持几种储存方式,文件、数据库等,如果是数据库方式,可以去yii目录下的i18n目录查看数据库迁移方式
cors 跨域设置
//放在顶级,放在main配置中,如果是放在controller的behavior里面,系统发生异常等会跳过behavior的执行,比如404,就会无效
'as cors' => [
'class' => \yii\filters\Cors::className(),
'cors' => [
'Origin' => ['*'],
'Access-Control-Allow-Credentials' => true,
],
]