0

我需要根据语言更改更改错误消息。

我已经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."
            )
        ),
}
}

因此,当我将语言从英语更改为西班牙时,模型验证错误消息没有得到更改。

谁能帮我解决这个问题?

4

1 回答 1

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 安装会发生一些奇怪的事情,因为验证消息应该在内部自动调用 __()。

于 2013-08-27T15:02:02.843 回答