diff --git a/framework/yii/console/controllers/MessageController.php b/framework/yii/console/controllers/MessageController.php index 21071bc..ff2de2b 100644 --- a/framework/yii/console/controllers/MessageController.php +++ b/framework/yii/console/controllers/MessageController.php @@ -55,7 +55,8 @@ class MessageController extends Controller * directory 'sourcePath/a/b'. * - translator: the name of the function for translating messages. * Defaults to 'Yii::t'. This is used as a mark to find messages to be - * translated. + * translated. Accepts both string for single function name or array for + * multiple function names. * - overwrite: if message file must be overwritten with the merged messages. * - removeOld: if message no longer needs translation it will be removed, * instead of being enclosed between a pair of '@@' marks. @@ -133,18 +134,23 @@ class MessageController extends Controller { echo "Extracting messages from $fileName...\n"; $subject = file_get_contents($fileName); - $n = preg_match_all( - '/\b' . $translator . '\s*\(\s*(\'.*?(? 0) { $merged[$message] = $translated[$message]; } else { $untranslated[] = $message; diff --git a/tests/unit/framework/console/controllers/MessageControllerTest.php b/tests/unit/framework/console/controllers/MessageControllerTest.php index 9b639d7..a4b45d4 100644 --- a/tests/unit/framework/console/controllers/MessageControllerTest.php +++ b/tests/unit/framework/console/controllers/MessageControllerTest.php @@ -17,6 +17,9 @@ class MessageControllerTest extends TestCase { $this->sourcePath = Yii::getAlias('@yiiunit/runtime/test_source'); $this->createDir($this->sourcePath); + if (!file_exists($this->sourcePath)) { + $this->markTestIncomplete('Unit tests runtime directory should have writable permissions!'); + } $this->messagePath = Yii::getAlias('@yiiunit/runtime/test_messages'); $this->createDir($this->messagePath); $this->configFileName = Yii::getAlias('@yiiunit/runtime') . DIRECTORY_SEPARATOR . 'message_controller_test_config.php'; @@ -81,8 +84,9 @@ class MessageControllerTest extends TestCase protected function createMessageController() { $module = $this->getMock('yii\\base\\Module', array('fake'), array('console')); - $command = new MessageController('message', $module); - return $command; + $messageController = new MessageController('message', $module); + $messageController->interactive = false; + return $messageController; } /** @@ -91,7 +95,7 @@ class MessageControllerTest extends TestCase * @param array $args action arguments. * @return string command output. */ - protected function runMessageControllerAction($actionId, array $args=array()) + protected function runMessageControllerAction($actionId, array $args = array()) { $controller = $this->createMessageController(); ob_start(); @@ -166,13 +170,11 @@ class MessageControllerTest extends TestCase public function testCreateTranslation() { - $this->markTestIncomplete('MessageController is incomplete'); - $language = 'en'; $category = 'test_category'; $message = 'test message'; - $sourceFileContent = "Yii::t('{$category}','{$message}')"; + $sourceFileContent = "Yii::t('{$category}', '{$message}')"; $this->createSourceFile($sourceFileContent); $this->composeConfigFile(array(