zend framework 多语言配置及实例

本文介绍了如何在Zend Framework 1.11版本中设置多语言,包括在`application.ini`中的配置、`Bootstrap.php`中的初始化翻译、`IndexController.php`中处理语言切换以及视图文件`index.phtml`的展示。示例使用了array适配器,并提供了`zh_CN`和`en_US`两个语言文件。

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

我用的是1.11版本

application.ini中的配置:

resources.locale.default = "zh_CN"

resources.translate.registry_key = "Zend_Translate"

resources.translate.adapter = array

resources.translate.options.scan = "directory"

resources.translate.locale = "zh_CN"

resources.translate.data.zh_CN = APPLICATION_PATH "/languages/zh_CN.php"

resources.translate.data.en_US = APPLICATION_PATH "/languages/en_US.php"



Bootstrap.php如下:

classBootstrap extends Zend_Application_Bootstrap_Bootstrap

{

protected function_initTranslate ()

    {

        $options = $this->getOption('resources');

        $options = $options['translate'];

        if (! isset($options['data'])) {

            throw new Zend_Application_Resource_Exception(

           '对不起,没有找到语言文件!');

        }

        $adapter = isset($options['adapter']) ? $options['adapter'] : Zend_Translate::AN_ARRAY;

        $session = new Zend_Session_Namespace('aa');

        if ($session->locale) {

            $locale = $session->locale;

        } else {

            $locale =isset($options['locale']) ? $options['locale'] :null;

        }

        $data = '';

        if (isset($options['data'][$locale])) {

            $data = $options['data'][$locale];

        }

        $translateOptions =isset($options['options']) ? $options['options'] :array();

        $translate =new Zend_Translate($adapter, $data, $locale, 

        $translateOptions);

        Zend_Form::setDefaultTranslator($translate);

        Zend_Registry::set('Zend_Translate', $translate);

        return $translate;

    }

}


IndexController.php如下:

 public functionchangeAction()

    {

    $this->getFrontController()->setParam('noViewRenderer',true);

    $language=$this->getRequest()->getParam('language');

    $lang=new Zend_Session_Namespace('aa');

    if ($language == 'zh_CN'){

    $lang->locale='zh_CN';

    }elseif($language == 'en_US'){

    $lang->locale='en_US';

    }else{

    $lang->locale='zh_CN';

    }

   echo "<script>location.href=document.referrer;</script>";

    }


视图index.phtml如下:

<div>

<h1><?phpecho $this->translate('teacher');?></h1>

<h2><?phpecho $this->translate('hello_world');?></h2>

<h3><?phpecho $this->translate('document');?></h3>

<ahref="<?phpecho $this->baseUrl();?>/index/change/language/<?phpecho $this->translate('get_lg');?>">

<?phpecho $this->translate('language');?></a>

</div>


application/languages下的两个语言文件:

en_US.php文件如下:

<?php 

return array(

'hello_world'=> 'Hello_World',

'document'  => 'Document',

'teacher'  => 'Teacher',

'get_lg'  => 'zh_CN',

'language'  => '简体中文',

);

?>


zh_CN.php文件如下:

<?php 

return array(

'hello_world'=>'你好世界',

'document'=>'文档',

'teacher'=>'老师',

'get_lg'=>'en_US',

'language'=>'English',

);

?>


我选择的是array适配器,为了实现中英文切换,我在网上看了很多实例。我刚学php,也是刚接触php的第一个框架zend framework;以前没搞个多语言国际化方面的,写下来以后在研究研究。呵呵......


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值