Yii 国际化的实现







Yii 国际化的实现第一在 main.php 配置文件里加上'language'=>'zh_cn', 告诉程序这是中文的,你去找中文包去(zh_cn).第二在你对应的 model 里面加上以下代码,例如 Post model,

    
    /**
     * @return array customized attribute labels (name=>label)
     */
    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',
        );
    }
    
    
    Yii::t() 就是自动去找你的资源文件。参数第一个是路径,不用加.php, 后面是对应的名字
    
第三在 messages/ 下面新建 zh_cn/models/Post.php,内容是如下
<?php
return  array(
    'Post'    => 'y1_post',
    'id'    => '编号',
    'title'    => '标题',
    'content'=>'内容'

);

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

——————————————————————————————————————————

全局配置

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

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

Java代码   收藏代码
  1. public function rules()  
  2. {  
  3.     return array(  
  4.         array('password','compare''message'=>Yii::t('models/Post','content')),  
  5.     );  
  6. }  
  7. public function attributeLabels()  
  8. {  
  9.     return array(  
  10.         'p_id'         => Yii::t('models/Post','id'),  
  11.         'p_title'      => Yii::t('models/Post','title'),  
  12.         'p_content'  => Yii::t('models/Post','content'),  
  13.         'p_addtime'     => 'PAddtime',  
  14.     );  
  15. }  

得到某一个

Java代码   收藏代码
  1. $model->getAttributeLabel('p_content');    

 

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

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

Java代码   收藏代码
  1. <?php  
  2. return  array(  
  3.     'Post'    => 'y1_post',  
  4.     'id'    => '编号',  
  5.     'title'    => '标题',  
  6.     'content'=>'内容'  
  7. );  

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

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

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

部分配置

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

Java代码   收藏代码
  1. public function init() {  
  2.     if (Yii::app()->getRequest()->getServerName()=='cn.domain.com') {                 
  3.             Yii::app()->language='zh_cn';  
  4.     }  
  5. }  
 
Java代码   收藏代码
  1. public function actionLogin()   
  2. {  
  3.     Yii::app()->language = 'zh_cn'

    ————————————————————————————————————————————————

Yii::t('test', "example message");
"example message" must be in the language defined over Yii::app()->sourceLanguage. If you set sourceLanguage to something else (eg: xx), you can then provide translation for your original sourceLanguage - "xx" does not exist and is used as a dummy.
Yii::app()->sourceLanguage = 'xx';
Yii::app()->language = 'en';
Yii::t('test', "0001");
You must provide this file: "protected/messages/en/test.php":
return array(
   '0001' => 'example message';
);

在config/main.php 里设置了sourceLanguage和language。        
 'sourceLanguage'=>'zh_cn',
   'language'=>'zh_cn', 
发现yii:t()将不生效 :blink: 

 原因在于CMessageSource.php里76行,                 
if($language!==$this->getLanguage())
    return $this->translateMessage($category,$message,$language);
else
    return $message; 这个时候由于 sourceLanguage = language;直接return $message;
sourceLanguage 代表你的数据源语言标记
language 表示当前语言标记
假如两者相同,就没有必要转换了~ 如:
 Yii::t('app','Hello');
 就标识数据源应该为英文了 
Yii::t('app','您好'); 
数据源应该为中文              

Yii::t('app', 'Path alias "{alias}" is redefined.',   array('{alias}'=>$alias))

In summary, in order to use message translation, the following steps are needed:

  1. Call Yii::t() at appropriate places;

  2. Create PHP translation files as protected/messages/LocaleID/CategoryName.php. Each file simply returns an array of message translations. Note, this assumes you are using the default CPhpMessageSource to store the translated messages.

  3. Configure CApplication::sourceLanguage and CApplication::language.


    
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值