我正在cakephp 2.10.12中创建一个本地化版本。我已经成功使用__('key')加载了Cakephp的翻译单词。如下所示:
<div class="form-group">
<label ><?php echo __('PutMoneyAmount') ;?></label>
<input type="text" class="form-control">
</div>
现在的问题是在模型中加载/使用__('key')
。由于存在消息验证,因此也需要翻译。这是我模型中的代码:
public $validate = array(
'currency_amount' => array(
'formatCheck' => array (
'rule' => 'money',
'allowEmpty' => false,
'message' => __('CurrencyError')
)
),
'date_input' => array(
'rule' => 'date',
'allowEmpty' => false,
'message' => __('DateError')
)
);
当我放置__('CurrencyError')
和__('DateError')
时,我的屏幕上显示错误Error: Constant expression contains invalid operations
那么,如何在cakephp模型中加载这些已翻译的键?
谢谢
注意: 这是我的英文,日本和印度尼西亚翻译文件 英文:
msgid "CurrencyError"
msgstr "Please input a valid monetary amount."
msgid "DateError"
msgstr "Please input a valid date."
日本:
msgid "CurrencyError"
msgstr "有効な金額を入力してください。"
msgid "DateError"
msgstr "有効な日付を入力してください。"
印度尼西亚:
msgid "CurrencyError"
msgstr "Silahkan masukkan jumlah uang yang valid"
msgid "DateError"
msgstr "Silahkan masukkan tanggal yang valid"
答案 0 :(得分:0)
更改此
public $validate = array(
'currency_amount' => array(
'formatCheck' => array (
'rule' => 'money',
'allowEmpty' => false,
'message' => __('CurrencyError')
)
),
'date_input' => array(
'rule' => 'date',
'allowEmpty' => false,
'message' => __('DateError')
)
);
对此
public $validate = array(
'currency_amount' => array(
'formatCheck' => array (
'rule' => 'money',
'allowEmpty' => false,
'message' => 'CurrencyError'
)
),
'date_input' => array(
'rule' => 'date',
'allowEmpty' => false,
'message' => 'DateError'
)
);
与View .ctp文件不同。您无需将其放在模型中的“ __(键)”下。只要将翻译正确地放入语言环境文件,它就会自动翻译。
编辑:我认为这可以帮助您暂时解决问题。在这里,我们使用来自模型的验证,任何验证错误都将手动转换。使用__d('key')。但是,如果有人可以提出更好的建议,请遵循以下说明,因为这是一个双重foreach循环。我还将关注这篇文章,看看是否有更好的答案。
if (!$this->Model->validates($data)) {
foreach ($this->Model->validationErrors as $field => $errors) {
// get the value of error message and put it to errContainer
foreach ($errors as $error) {
$errContainer[$rowCnt][] = __d('default', $error);
}
}
}
这是Cakephp2文档中有关您的问题的链接。 https://book.cakephp.org/2.0/en/core-libraries/internationalization-and-localization.html#translating-model-validation-errors