'translated message 1', * 'original message 2' => 'translated message 2', * ); * ~~~ * * @author Qiang Xue * @since 2.0 */ class PhpMessageSource extends MessageSource { /** * @var string the base path for all translated messages. Defaults to null, meaning * the "messages" subdirectory of the application directory (e.g. "protected/messages"). */ public $basePath = '@app/messages'; /** * @var array mapping between message categories and the corresponding message file paths. * The file paths are relative to [[basePath]]. For example, * * ~~~ * array( * 'core' => 'core.php', * 'ext' => 'extensions.php', * ) * ~~~ */ public $fileMap; /** * Loads the message translation for the specified language and category. * @param string $category the message category * @param string $language the target language * @return array the loaded messages */ protected function loadMessages($category, $language) { $messageFile = Yii::getAlias($this->basePath) . "/$language/"; if (isset($this->fileMap[$category])) { $messageFile .= $this->fileMap[$category]; } elseif (($pos = strrpos($category, '\\')) !== false) { $messageFile .= (substr($category, $pos) . '.php'); } else { $messageFile .= "$category.php"; } if (is_file($messageFile)) { $messages = include($messageFile); if (!is_array($messages)) { $messages = array(); } return $messages; } else { Yii::error("The message file for category '$category' does not exist: $messageFile", __METHOD__); return array(); } } }