我需要根据语言更改来更改错误消息。
我在default.po
/locale/en/LC_MESSAGES/default.po
个文件
已经创建了msgid作为ID-1和相同的方式
为西班牙做了
/locale/spa/LC_MESSAGES/default.po
视图文件中的:
<label class="control-label"><?php echo __('ID-1'); ?><span class="red">*</span></label>
<div class="controls">
<?php echo $this->Form->input('Patient.fname', array('label' => false,'required'=>true, 'div' => false,'Placeholder' => 'First Name','class'=>'','maxlength'=>'20','size'=>"30")); ?>
</div>
控制器:
if ($this->request->is('ajax')) {
if (!empty($this->request->data)) {
$this->Patient->save($this->request->data);
}
}
和模型文件:
App::uses('Model', 'Model');
/**
* Application model for Cake.
*
* Add your application-wide methods in the class below, your models
* will inherit them.
*
* @package app.Model
*/
class Patient extends Model {
var $useTable = 'patients';
var $actsAs = array('Logable');
var $validate = array(
'fname' => array(
'required' => array(
'rule' => 'notEmpty',
'message' => "Please Enter Your FristName."
)
),
}
}
因此,当我将语言从英语更改为西班牙语时,模型验证错误信息不会发生变化。
任何人都可以帮助我吗?
答案 0 :(得分:0)
我不能评论,因此答案。但你是否在 AppController :: beforeFilter()中设置了应用程序的语言?
Configure::write('Config.language', 'spa');
在生产环境中,您显然会根据每个用户的个人偏好设置该值。
编辑:
好的,从另一个角度来看,我可能误解了你。请在您的模型中尝试以下操作:
function __construct($id = false, $table = null, $ds = null) {
$this->validate['fname']['required']['message'] = __('Please Enter Your FristName.');
parent::__construct($id = false, $table = null, $ds = null);
}
如果这样可行,那么CakePHP安装会发生一些奇怪的事情,因为验证消息应该在内部自动调用__()。