mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-03 22:32:40 +08:00
Fixes #1654: Fixed the issue that a new message source object is generated for every new message being translated
This commit is contained in:
@ -157,19 +157,24 @@ class I18N extends Component
|
||||
{
|
||||
if (isset($this->translations[$category])) {
|
||||
$source = $this->translations[$category];
|
||||
if ($source instanceof MessageSource) {
|
||||
return $source;
|
||||
} else {
|
||||
return $this->translations[$category] = Yii::createObject($source);
|
||||
}
|
||||
} else {
|
||||
// try wildcard matching
|
||||
foreach ($this->translations as $pattern => $config) {
|
||||
if ($pattern === '*' || substr($pattern, -1) === '*' && strpos($category, rtrim($pattern, '*')) === 0) {
|
||||
$source = $config;
|
||||
break;
|
||||
if ($config instanceof MessageSource) {
|
||||
return $config;
|
||||
} else {
|
||||
return $this->translations[$category] = $this->translations[$pattern] = Yii::createObject($config);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (isset($source)) {
|
||||
return $source instanceof MessageSource ? $source : Yii::createObject($source);
|
||||
} else {
|
||||
throw new InvalidConfigException("Unable to locate message source for category '$category'.");
|
||||
}
|
||||
|
||||
throw new InvalidConfigException("Unable to locate message source for category '$category'.");
|
||||
}
|
||||
}
|
||||
|
||||
@ -105,7 +105,7 @@ class MessageSource extends Component
|
||||
}
|
||||
if (isset($this->_messages[$key][$message]) && $this->_messages[$key][$message] !== '') {
|
||||
return $this->_messages[$key][$message];
|
||||
} elseif ($this->hasEventHandlers('missingTranslation')) {
|
||||
} elseif ($this->hasEventHandlers(self::EVENT_MISSING_TRANSLATION)) {
|
||||
$event = new MissingTranslationEvent([
|
||||
'category' => $category,
|
||||
'message' => $message,
|
||||
|
||||
Reference in New Issue
Block a user