Yii 多語言

Yii 多語言

YII有三種翻譯類型

  1. CPhpMessageSource : Translations are stored as key-value pairs in a PHP array.
  2. CGettextMessageSource : Translations are stored as GNU Gettext files. (PO Files)
  3. CDbMessageSource : Message translations are stored in database tables.

這裡用的CPhpMessageSource翻譯類型(YII默認的翻譯類型)..CDbMessageSource試了半天(不知道怎麼去實現..),還是實現不了.后來想了下,在default文件中.寫SQL語句然後返回數據亦可得到同樣的效果.~


views/layouts/main.php

<?php echo CHtml:: link ( ' 中文 ' , array ( 'site/index' , 'lang' => 'zh_cn' )) . ' | ' . CHtml:: link ( '繁體' , array ( 'site/index' , 'lang' => 'zh_tw' )) .' | '. CHtml:: link ( 'English' , array ( 'site/index' , 'lang' => 'en_us' ));?>

Controller.php 

public function init() { if(isset($_GET['lang'])&&$_GET['lang']!=""){ //當點擊轉換語言時 Yii::app()->user->setState("yuyan",$_GET['lang']); //相當於與設置一個cookie Yii::app()->language = Yii::app()->user->getState("yuyan"); //轉換成相應的記錄語言 } if(Yii::app()->user->getState("yuyan")){ //如果設置了有session記錄 Yii::app()->language = Yii::app()->user->getState("yuyan"); //轉換成相應的記錄語言 }else{ Yii::app()->user->setState("yuyan","en_us"); //沒有session則設置一個session.默認語言為en_us Yii::app()->language = Yii::app()->user->getState("yuyan"); //轉換成相應的記錄語言 } }

messages/zh_cn/default.php

<?php return array( 'username'=>'用戶名', 'password'=>'用戶密碼', } //此處亦可以使用SQL語句,加載數據庫中的翻譯數據.偽CDbMessageSource方式啊- - #

site/index

<?php echo "username =>".Yii::t('default','username')."<br>";     echo "password =>".Yii::t('default', 'password'); ?>

output:

username =>用戶名 password =>用戶密碼

转载于:https://my.oschina.net/resory/blog/84852

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/110298.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 基于 SpringBoot + Vue 的商城系统附带小程序源码

    简介 又一个小商场系统,Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端 + Vue用户移动端。 项目架构 技术栈 Spring Boo…

  • IOS越狱学习总结

    IOS越狱学习总结iOS越狱iOS越狱(iOSJailbreaking),是用于获取苹果公司便携装置操作系统iOS最高权限的一种技术手段,用户使用这种技术及软件可以获取到iOS的最高权限,甚至可能可以进一步解开运营商对手机网络的限制。中文名称iOS越狱外文名称iOSJailbreaking应  用电子产品类  型软件目录1简介2用途3针对的设备

  • linux安装node js的二进制文件安装方式的注意事项

    linux安装node js的二进制文件安装方式的注意事项

  • c语言线程间传递消息,线程间通信[通俗易懂]

    c语言线程间传递消息,线程间通信[通俗易懂]线程间通信前面一章讲了线程间同步,提到了信号量、互斥量、事件集等概念;本章接着上一章的内容,讲解线程间通信。在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取,根据读取到的全局变量值执行相应的动作,达到通信协作的目的。RT-Thread中则提供了更多的工具帮助在不同的线程中间传递信息,本章会详细介绍这些工具。学习完本章,…

  • 面试题之  什么是不可变类? 为什么String是不可变类? 如何创建一个不可变类

    面试题之  什么是不可变类? 为什么String是不可变类? 如何创建一个不可变类面试题:     什么是不可变类? 为什么String是不可变类? 如何创建一个不可变类不可变类当类的对象创建后,它的值就不可以再更改了相比于可变对象,不可变对象有很多优势不可变对象可以提高String Pool(字符串常量池)的效率和安全性。如果你知道一个对象是不可变的 ,那么需要拷贝对象的内容时就不用复制它本身而只复制它的地址,复制地址(通常一个指针的大小)需要很小的内存,效率…

  • 软件破解初级实例教程(附工具附图)

    最近在群里总是看到很多新朋友在问:1、“新手怎么学破解啊?”(这是标准的伸手党,baidugoogle其实很好用)2、“哎呀XX大牛,我什么基础都没有啊我不会汇编,不会C更不会C++还不会…………总之高手会的我都不会,我能学么?”(明确的告诉你,你能!你不和唐僧一样罗嗦的话你一定能。)3、某白发帖问曰:“XX大牛,这软件你能帮我看看吗?我尝试了N天还是没有搞定,这是软件地址www.XXX.co…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号