我不知道这是不是我的错误或错误,但基本上我遵循Yii2文档来设置模块的i18n翻译。以下代码段直接从Yii2指南中复制粘贴。
public function init()
{
parent::init();
$this->registerTranslations();
}
public function registerTranslations()
{
Yii::$app->i18n->translations['modules/users/*'] = [
'class' => 'yii\i18n\PhpMessageSource',
'sourceLanguage' => 'en',
'basePath' => '@app/modules/users/messages',
];
}
public static function t($category, $message, $params = [], $language = null)
{
return Yii::t('modules/users/' . $category, $message, $params, $language);
}
根据指南,我应该这样称呼:
Module::t('validation', 'your custom validation message')
但是,Yii2尝试从错误的位置加载'validation.php'。这是调试器的输出:
The message file for category 'modules/users/validation' does not exist: /Applications/MAMP/htdocs/.../domains/localhost/public_html/.../backend/modules/users/messages/en/modules/users/validation.php
根据我的理解,它应该代替modules/users/message/<lang>/validation.php
,这比现在正在寻找的更有意义。
我做错了什么?
提前谢谢。
答案 0 :(得分:2)
您只需添加filemap
参数,例如:
public function registerTranslations()
{
Yii::$app->i18n->translations['modules/users/*'] = [
'class' => 'yii\i18n\PhpMessageSource',
'sourceLanguage' => 'en',
'basePath' => '@app/modules/users/messages',
'fileMap' => [
'modules/users/validation' => 'validation.php',
],
];
}
了解详情:http://www.yiiframework.com/doc-2.0/guide-tutorial-i18n.html#translating-module-messages
编辑:如Yii2指南中所述,如果您要删除filemap
,则您的validation.php
文件应位于 modules / users / messages / [lang]中] /modules/users/validation.php 强>
您可以依赖于使用类别名称作为文件名的约定,而不是配置fileMap(例如,类别app / error将导致basePath下的文件名app / error.php。