gpt4 book ai didi

Yii框架多语言站点配置方法分析【中文/英文切换站点】

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 29 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Yii框架多语言站点配置方法分析【中文/英文切换站点】由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

本文实例讲述了Yii框架多语言站点配置方法。分享给大家供大家参考,具体如下:

这里假设我们要建立 中文/英文 切换的站点 。

1. 设置全局默认的语言 。

文件添加代码:protected/config/main.php 。

?
1
'language' => 'zh_cn' ,

2. 控制器根据用户选择动态切换语言 。

一般来说,我们所有的控制器都是继承于 protected/components/Controller.php 这个类。因此,我们可以在 这个类里面进行语言的定义来影响当前的请求.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public function init()
{
   if (isset( $_GET [ 'lang' ]) && $_GET [ 'lang' ] != "" )
   {
     Yii::app()->language = $_GET [ 'lang' ];
     Yii::app()->request->cookies[ 'lang' ] = new CHttpCookie( 'lang' , $_GET [ 'lang' ]);
   }
   else if (! empty (Yii::app()->request->cookies[ 'lang' ]))
   {
     Yii::app()->language = Yii::app()->request->cookies[ 'lang' ];
   }
   else
   {
     $lang = explode ( ',' , $_SERVER [ 'HTTP_ACCEPT_LANGUAGE' ]);
     Yii::app()->language = strtolower ( str_replace ( '-' , '_' , $lang [0]));
   }
}

3. 页面提供切换语言选项 。

在公用的 layouts 头部,加入 。

?
1
2
<?php echo CHtml::link( '中文' , Yii::app()->createUrl( '/' , array ( 'lang' => 'zh_cn' )));?>
<?php echo CHtml::link( 'English' , Yii::app()->createUrl( '/' , array ( 'lang' => 'en_us' )));?>

4. 多语言描述文字 。

?
1
2
//common是对应的语言文件,路径:protected/messages/zh_cn/common.php
Yii::t( 'common' , 'Hello, world!' );

5. 数据库内容多语言 。

假设我们有这样的数据表:

?
1
2
3
4
5
6
7
CREATE TABLE IF NOT EXISTS `news` (
   `id` INT (10) UNSIGNED NOT NULL AUTO_INCREMENT,
   `lang` VARCHAR (4) NOT NULL DEFAULT ‘en', /* 这个用来区分不同语言的内容 */
   `title` VARCHAR (255) NOT NULL ,
   `text` TEXT NOT NULL ,
   PRIMARY KEY (`id`)
);

在 model里面添加一些代码,可以根据当前语言加载不同语言的 news.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class News extends CActiveRecord
{
   /**
    * 这里会在查询数据的时候,合并条件,根据当前语言查出数据
    *
    */
   public function defaultScope()
   {
     return array (
       'condition' => "lang=:lang" ,
       'params' => array (
         ':lang' => Yii::app()->language,
       ),
     );
   }
  
   /**
    * 提供这个方法,作一个例子说明,可以指定加载哪个语言的数据
    *
    */
   public function lang( $lang )
   {
     $this ->getDbCriteria()->mergeWith( array (
       'condition' => "lang=:lang" ,
       'params' => array (
         ':lang' => $lang ,
       ),
     ));
     return $this ;
   }
}

使用方法:

?
1
2
3
4
5
// 加载默认语言的数据。
$posts = Post::model()->findAll();
// Get posts written in German
// 加载 en_us 语言的数据。
$posts = Post::model()->lang( 'en_us' )->findAll();

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助.

原文链接:https://www.cnblogs.com/davidhhuan/archive/2012/06/15/2550778.html 。

最后此篇关于Yii框架多语言站点配置方法分析【中文/英文切换站点】的文章就讲到这里了,如果你想了解更多关于Yii框架多语言站点配置方法分析【中文/英文切换站点】的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com