Yii2语言国际化自动配置详解
2019-01-22 17:29
274 查看
本文原创自news.mkq.online
版权声明:本文为原创文章,版权牛站新闻所有
转载请注明http://www.niuzhan.com/Bago/
如何实现语言国际自动化,大家可能觉得自动化,是不是不需要配置就自动切换,这个思路我之前也想过,能不能根据IP来判断地理位置然后确定其语言,网上找过一个"IpToCountry"相关的,有兴趣的可以搜索出来看看,他会提供一个ip对照的表,每隔一段时间会更新一次,不过这个暂时没做,后面考虑尝试下
这里我们说下Yii2如何实现,因为我们上面的一篇文章分享做了语言国际化的配置,也将对应的语言翻译了出来,下面就是需要根据条件来做切换
从配置文件我们知道只需要更改language这个配置值就可以了,但是要在哪里更改呢。这里我的操作步骤如下
我想整体对项目的所有内容进行语言国际化,唯一我能想到的是修改控制器,有的说是修改 入口文件,我觉得修改入口文件有点破坏框架结构了。
第一步 创建一个AppController
继承yii/web/Controller,实现如下
01
<?php 02 03 namespace app\controllers; 04 05 use Yii; 06 use yii\web\Controller; 07 08 class AppController extends Controller 09 { 10 public function init() 11 { 12 if (isset(Yii::$app->session['_lang'])) { 13 Yii::$app->language = Yii::$app->session['_lang']; 14 } 15 16 parent::init(); 17 } 18 } 第二步 将所有自己的控制器都继承AppController 做类似如下操作,我这里只是举了一个BlogController的例子 1 class BlogController extends AppController 第三步 实现设置多语言的处理 我这里在我的控制器SiteController加了如下Action 1 public function actionLanguage($language) 2 { 3 Yii::$app->session['_lang'] = $language; 4 $redirectUrl = Yii::$app->request->headers['Referer']; 5 if (!$redirectUrl) { 6 $redirectUrl = Yii::$app->homeUrl; 7 } 8 return $this->redirect($redirectUrl); 9 } 每次需要修改语言的话,只要将语言传入actionLanguage,就会更改session中_lang的值,然后每个控制器在调用的时候都会先去更改项目的language 第四步 前端UI修改 通过在前端加个修改的逻辑,方便前端访问者进行更改语言设置 01-
02
- 03 04 {{ Yii.t('app', 'Language') }} 05 06 07 08 11 {{ Yii.t('app', 'Chinese') }} 14 15
- 18 {{ Yii.t('app', 'English') }} 21 22
相关文章推荐
- Yii2语言国际化自动配置详解
- Yii2语言国际化自动配置详解
- Yii2语言国际化的配置教程
- Yii2 多语言配置 - i18n 国际化
- Yii2国际化i18n配置的基本步骤
- eclipse 配置spring IDE详解(配置好以后可以查看bean的依赖关系,很清晰。而且在xml中写bean的时候可以自动提示引用类路径等)
- iOS-生成国际化包-配置App多语言支持
- cron自动调度服务配置详解(转)
- cron自动调度服务配置详解
- GO语言环境搭建 + Sublime text 3 + Git + MarGo + gocode 组合配置详解
- Netbeans语言设置,颜色配置,自动完成 - 标签展开,Zen coding,英文界面
- hibernate配置自动增长方式以及类别详解
- Spring自动注入,利用注解实现spring基本配置详解,Spring注解快速入门
- YII2 实现多语言配置的方法分享
- 实现iOS语言本地化/国际化(图文详解)
- Yii2 配置框架国际化支持
- 基于浏览器首选语言的springmvc和freemarker国际化配置的实现
- 菜鸟学SSH(三)——Struts2国际化自动检测浏览器语言版
- DB2数据库自动备份详解--(DB2 任务中心进行配置)
- YII2配置多语言