Yii 2 高级项目模板,国际化的消息翻译服务的 Bug (当目标语言为美国英语,文件映射的类别名为:app 时,未被映射到 PHP 文件 @app/messages/en-US/app.php) 的分析解决
'components' => [
'i18n' => [
'translations' => [
'model/*' => [
'class' => 'yii\i18n\PhpMessageSource',
'forceTranslation' => true,
'basePath' => '@common/messages',
],
'*' => [
'class' => 'yii\i18n\PhpMessageSource',
'forceTranslation' => true,
'basePath' => '@app/messages',
'fileMap' => [
'app' => 'app.php',
'error' => 'error.php',
'success' => 'success.php',
],
],
],
],
],
return ['code' => 10000, 'message' => Yii::t('success', '127016'), 'data' => ['items' => array_values($models)]];
$planLog->opinion = Yii::t('app', Yii::t('app', Yii::t('app', 302016), ['accepted_group_name' => $acceptedGroupName, 'accepted_user_nick' => $identity->user_nick]));
Yii::t('app', '302011');
exit;
public function translate($category, $message, $language)
{
if ($this->forceTranslation || $language !== $this->sourceLanguage) {
echo 1;
exit;
return $this->translateMessage($category, $message, $language);
}
echo 2;
exit;
return false;
}
public function translate($category, $message, $language)
{
var_dump($this->forceTranslation);
exit;
if ($this->forceTranslation || $language !== $this->sourceLanguage) {
echo 1;
exit;
return $this->translateMessage($category, $message, $language);
}
echo 2;
exit;
return false;
}
Yii::t('success', '302011');
exit;
/**
* @var array list of [[MessageSource]] configurations or objects. The array keys are message
* category patterns, and the array values are the corresponding [[MessageSource]] objects or the configurations
* for creating the [[MessageSource]] objects.
*
* The message category patterns can contain the wildcard `*` at the end to match multiple categories with the same prefix.
* For example, `app/*` matches both `app/cat1` and `app/cat2`.
*
* The `*` category pattern will match all categories that do not match any other category patterns.
*
* This property may be modified on the fly by extensions who want to have their own message sources
* registered under their own namespaces.
*
* The category `yii` and `app` are always defined. The former refers to the messages used in the Yii core
* framework code, while the latter refers to the default message category for custom application code.
* By default, both of these categories use [[PhpMessageSource]] and the corresponding message files are
* stored under `@yii/messages` and `@app/messages`, respectively.
*
* You may override the configuration of both categories.
*/
public $translations;
/**
* Initializes the component by configuring the default message categories.
*/
public function init()
{
parent::init();
if (!isset($this->translations['yii']) && !isset($this->translations['yii*'])) {
$this->translations['yii'] = [
'class' => 'yii\i18n\PhpMessageSource',
'sourceLanguage' => 'en-US',
'basePath' => '@yii/messages',
];
}
if (!isset($this->translations['app']) && !isset($this->translations['app*'])) {
$this->translations['app'] = [
'class' => 'yii\i18n\PhpMessageSource',
'sourceLanguage' => Yii::$app->sourceLanguage,
'basePath' => '@app/messages',
];
}
}
'components' => [
'i18n' => [
'translations' => [
'model/*' => [
'class' => 'yii\i18n\PhpMessageSource',
'forceTranslation' => true,
'basePath' => '@common/messages',
],
'*' => [
'class' => 'yii\i18n\PhpMessageSource',
'forceTranslation' => true,
'basePath' => '@app/messages',
'fileMap' => [
'application' => 'application.php',
'error' => 'error.php',
'success' => 'success.php',
],
],
],
],
],

重命名文件 \common\messages\en-US\app.php 为 \common\messages\en-US\application.php,重命名文件 \common\messages\zh-CN\app.php 为 \common\messages\zh-CN\application.php,重命名文件 \api\messages\en-US\app.php 为 \api\messages\en-US\application.php,重命名文件 \api\messages\zh-CN\app.php 为 \api\messages\zh-CN\application.php。其他应用目录下皆如此操作。将 Yii::t(‘app’, 批量替换为:Yii::t(‘application’,









