Yii 国际化的实现

本文详细介绍了如何在PHP项目中配置中文环境,并通过自动调用资源文件完成文本翻译,包括语言配置、模型代码修改及资源文件创建等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

全局配置

第一在 main.php 配置文件里加上'language'=>'zh_cn' 或'sourceLanguage'=>'zh_cn' , 告诉程序这是中文的,你去找中文包去(zh_cn).

第二在你对应的 model 里面加上以下代码,例如 Post model,

public function rules()
{
	return array(
		array('password','compare', 'message'=>Yii::t('models/Post','content')),
	);
}
public function attributeLabels()
{
	return array(
		'p_id'         => Yii::t('models/Post','id'),
		'p_title'      => Yii::t('models/Post','title'),
		'p_content'  => Yii::t('models/Post','content'),
		'p_addtime'     => 'PAddtime',
	);
}

得到某一个

$model->getAttributeLabel('p_content');  
<?php echo $form->label($model,'name'); ?

 

Yii::t() 就是自动去找你的资源文件。参数第一个是路径,不用加.php, 后面是对应的名字

第三在 messages/ 下面新建 zh_cn/models/Post.php,内容是如下 不要命名成系统默认的YII,Zii

<?php
return  array(
    'Post'    => 'y1_post',
    'id'    => '编号',
    'title'    => '标题',
    'content'=>'内容'
);

之后就好了。如果你还有英文以及其它语道理是一样的。

To get current language:
$lang = Yii::app()->language;

To set current language:
Yii::app()->language = 'en';

部分配置

我们可以在应用程序配置文件进行设置,这样该设置将会对整个网站起作用 。但是我们只想翻译登录表单 ,所以我们只需要在SiteController::actionLogin()方法内进行设置,所以该设置只会在渲染登录表单时有效。所以打开该文件,在方法的开头按照如下形式设置目标语言

public function init() {
	if (Yii::app()->getRequest()->getServerName()=='cn.domain.com') {               
			Yii::app()->language='zh_cn';
	}
}

 

public function actionLogin() 
{
    Yii::app()->language = 'zh_cn';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值