YiiBooster使用bootstrap的datepicker时,中文语言处理上存在问题,经过如下fix,可以解决。在TbDatePicker.php的init()中进行fix:
public function init() { $this->htmlOptions['type'] = 'text'; $this->htmlOptions['autocomplete'] = 'off'; if (!isset($this->options['language'])) { $languageInfo = explode('_', Yii::app()->getLanguage()); if($languageInfo[0] == 'zh') { $this->options['language'] = 'zh-'.strtoupper($languageInfo[1]); } else $this->options['language'] = substr(Yii::app()->getLanguage(), 0, 2); } parent::init(); }
因为bootstrap中简体中文对应的js为 xxx.zh-CN.js,而YiiBooster的处理是去找 xxx.zh.js 了(即对语言设置只取前2个字符)
经过上述处理,form中使用TbDatePicker能够显示中文了
但对于TbEditableColumn,如果是日期形式的列,要显示中文,一方面,要把语言设置传递给组件,另一方面,头部标题等中文语言工作,需要处理Yii的国际化问题
array( 'class' => 'booster.widgets.TbEditableColumn', 'name' => 'mktbltime', 'headerHtmlOptions' => array('style' => 'width: 100px'), 'editable' => array( 'type' => 'date', 'viewformat' => 'yyyy-mm-dd', 'options' => array( 'clear' => 'x 清除', 'datepicker' => array('language'=>'zh-CN'), ), 'url' => $this->createUrl('updateField'), 'placement' => 'right', ) ),
在Booster/widgets目录下新建目录messages/zh_cn,然后在该目录下放上editable.php文件(因为TbEditableColumn是利用了TbEditable的),在此文本翻译文件中放入类似如下的一个数组:
<?php return array( 'Enter'=>'输入', 'Select'=>'选择', );