Skip to content
PHP Ecosystem
Explore

MessageController

API reference › yii › console › controllers › MessageController

Extracts messages to be translated from source files.

The extracted messages can be saved the following depending on format setting in config file:

  • PHP message source files.
  • “.po” files.
  • Database.

Usage:

  1. Create a configuration file using the ‘message/config’ command: yii message/config /path/to/myapp/messages/config.php
  2. Edit the created config file, adjusting it for your web application needs.
  3. Run the ‘message/extract’ command, using created config: yii message /path/to/myapp/messages/config.php
PropertyTypeDescriptionDefined by
$actionyii\base\Action<static>|nullThe action that is currently being executed. Default: null.yii\base\Controller
$behaviors read-onlyarray<yii\base\Behavior<static>>List of behaviors attached to this component.yii\base\Component
$catalogstringName of the file that will be used for translations for “po” format. Default: 'messages'.MessageController
$colorbool|nullWhether to enable ANSI color in the output. Default: null.yii\console\Controller
$dbstringConnection component ID for “db” format. Default: 'db'.MessageController
$defaultActionstringController default action ID. Default: 'extract'.MessageController
$exceptarray|nullList of patterns that specify which files/directories should NOT be processed. Default: ['.*', '/.*', '/messages', '/tests', '/runtime', '/vendor', '/BaseYii.php'].MessageController
$formatstringGenerated file format. Default: 'php'.MessageController
$helpboolWhether to display help information about current command. Default: false. Available since 2.0.10.yii\console\Controller
$helpSummary read-onlystringThe one-line short summary describing this controller.yii\console\Controller
$idstringThe ID of this controller. Default: null.yii\base\Controller
$ignoreCategoriesarrayMessage categories to ignore. Default: [].MessageController
$interactiveboolWhether to run the command interactively. Default: true.yii\console\Controller
$languagesarrayRequired, list of language codes that the extracted messages should be translated to. Default: [].MessageController
$layoutstring|null|falseThe name of the layout to be applied to this controller’s views. Default: null.yii\base\Controller
$markUnusedboolWhether to mark messages that no longer appear in the source code. Default: true.MessageController
$messagePathstringRequired, root directory containing message translations. Default: '@yii/messages'.MessageController
$messageTablestringCustom name for translation message table for “db” format. Default: '{{%message}}'.MessageController
$moduleyii\base\TThe module that this controller belongs to. Default: null.yii\base\Controller
$modules read-onlyyii\base\Module[]All ancestor modules that this controller is located within.yii\base\Controller
$onlyarray|nullList of patterns that specify which files (not directories) should be processed. Default: ['*.php'].MessageController
$overwriteboolWhether the message file should be overwritten with the merged messages Default: true.MessageController
$passedOptions read-onlyarrayThe names of the options passed during execution.yii\console\Controller
$passedOptionValues read-onlyarrayThe properties corresponding to the passed options.yii\console\Controller
$phpDocBlockstring|nullDocBlock used for messages array in generated PHP file. Default: null. Available since 2.0.13.MessageController
$phpFileHeaderstringFile header in generated PHP file with messages. Default: ''. Available since 2.0.13.MessageController
$removeUnusedboolWhether to remove messages that no longer appear in the source code. Default: false.MessageController
$requestyii\console\RequestThe request object.yii\console\Controller
$responseyii\console\ResponseThe response object.yii\console\Controller
$route read-onlystringThe route (module ID, controller ID and action ID) of the current request.yii\base\Controller
$silentExitOnExceptionbool|nullIf true - script finish with ExitCode::OK in case of exception. false - ExitCode::UNSPECIFIED_ERROR. Default: null. Available since 2.0.36.yii\console\Controller
$sortboolWhether to sort messages by keys when merging new messages with the existing ones. Default: false.MessageController
$sourceMessageTablestringCustom name for source message table for “db” format. Default: '{{%source_message}}'.MessageController
$sourcePathstringRequired, root directory of all source files. Default: '@yii'.MessageController
$translatorstring|string[]The name of the function for translating messages. Default: ['Yii::t', '\Yii::t'].MessageController
$uniqueId read-onlystringThe controller ID that is prefixed with the module ID (if any).yii\base\Controller
$viewyii\base\View|yii\web\ViewThe view object that can be used to render views or view files.yii\base\Controller
$viewPathstringThe directory containing the view files for this controller.yii\base\Controller
$config protectedarrayConfig for messages extraction. Default: null. Available since 2.0.13.MessageController
MethodDescriptionDefined by
__construct()yii\base\Controller
__call()Calls the named method which is not a class method.yii\base\Component
__clone()This method is called after the object is created by cloning an existing one.yii\base\Component
__get()Returns the value of a component property.yii\base\Component
__isset()Checks if a property is set, i.e. defined and not null.yii\base\Component
__set()Sets the value of a component property.yii\base\Component
__unset()Sets a component property to be null.yii\base\Component
actionConfig()Creates a configuration file for the “extract” command using command line options specified.MessageController
actionConfigTemplate()Creates a configuration file template for the “extract” command.MessageController
actionExtract()Extracts messages to be translated from source code.MessageController
actions()Declares external actions for the controller.yii\base\Controller
afterAction()This method is invoked right after an action is executed.yii\base\Controller
ansiFormat()Formats a string with ANSI codes.yii\console\Controller
attachBehavior()Attaches a behavior to this component.yii\base\Component
attachBehaviors()Attaches a list of behaviors to the component.yii\base\Component
beforeAction()This method is invoked right before an action is executed.yii\console\Controller
behaviors()Returns a list of behaviors that this component should behave as.yii\base\Component
bindActionParams()Binds the parameters to the action.yii\console\Controller
canGetProperty()Returns a value indicating whether a property can be read.yii\base\Component
canSetProperty()Returns a value indicating whether a property can be set.yii\base\Component
className() staticReturns the fully qualified name of this class.yii\base\BaseObject
confirm()Asks user to confirm by typing y or n.yii\console\Controller
createAction()Creates an action based on the given action ID.yii\base\Controller
detachBehavior()Detaches a behavior from the component.yii\base\Component
detachBehaviors()Detaches all behaviors from the component.yii\base\Component
ensureBehaviors()Makes sure that the behaviors declared in behaviors() are attached to this component.yii\base\Component
findLayoutFile()Finds the applicable layout file.yii\base\Controller
getActionArgsHelp()Returns the help information for the anonymous arguments for the action.yii\console\Controller
getActionHelp()Returns the detailed help information for the specified action.yii\console\Controller
getActionHelpSummary()Returns a one-line short summary describing the specified action.yii\console\Controller
getActionOptionsHelp()Returns the help information for the options for the action.yii\console\Controller
getBehavior()Returns the named behavior object.yii\base\Component
getBehaviors()Returns all behaviors attached to this component.yii\base\Component
getHelp()Returns help information for this controller.yii\console\Controller
getHelpSummary()Returns one-line short summary describing this controller.yii\console\Controller
getModules()Returns all ancestor modules of this controller.yii\base\Controller
getOptionValues()Returns properties corresponding to the options for the action id Child classes may override this method to specify possible properties.yii\console\Controller
getPassedOptions()Returns the names of valid options passed during execution.yii\console\Controller
getPassedOptionValues()Returns the properties corresponding to the passed options.yii\console\Controller
getRoute()Returns the route of the current request.yii\base\Controller
getUniqueId()Returns the unique ID of the controller.yii\base\Controller
getView()Returns the view object that can be used to render views or view files.yii\base\Controller
getViewPath()Returns the directory containing view files for this controller.yii\base\Controller
hasEventHandlers()Returns a value indicating whether there is any handler attached to the named event.yii\base\Component
hasMethod()Returns a value indicating whether a method is defined.yii\base\Component
hasProperty()Returns a value indicating whether a property is defined for this component.yii\base\Component
init()Initializes the object.yii\base\Controller
isColorEnabled()Returns a value indicating whether ANSI color is enabled.yii\console\Controller
off()Detaches an existing event handler from this component.yii\base\Component
on()Attaches an event handler to an event.yii\base\Component
optionAliases()Returns option alias names.MessageController
options()Returns the names of valid options for the action (id) An option requires the existence of a public member variable whose name is the option name.MessageController
prompt()Prompts the user for input and validates it.yii\console\Controller
render()Renders a view and applies layout if available.yii\base\Controller
renderContent()Renders a static string by applying a layout.yii\base\Controller
renderFile()Renders a view file.yii\base\Controller
renderPartial()Renders a view without applying layout.yii\base\Controller
run()Runs a request specified in terms of a route.yii\base\Controller
runAction()Runs an action with the specified action ID and parameters.yii\console\Controller
select()Gives the user an option to choose from. Giving ’?’ as an input will show a list of options to choose from and their explanations.yii\console\Controller
setView()Sets the view object to be used by this controller.yii\base\Controller
setViewPath()Sets the directory that contains the view files.yii\base\Controller
stderr()Prints a string to STDERR.yii\console\Controller
stdout()Prints a string to STDOUT.yii\console\Controller
trigger()Triggers an event.yii\base\Component
bindInjectedParams() protected finalFills parameters based on types and names in action method signature.yii\base\Controller
extractMessages() protectedExtracts messages from a file.MessageController
extractMessagesFromTokens() protectedExtracts messages from a parsed PHP tokens list.MessageController
getActionMethodReflection() protectedyii\console\Controller
getLine() protectedFinds out a line of the first non-char PHP token found.MessageController
initConfig() protectedMessageController
isCategoryIgnored() protectedThe method checks, whether the $category is ignored according to $ignoreCategories array.MessageController
parseDocCommentDetail() protectedReturns full description from the docblock.yii\console\Controller
parseDocCommentSummary() protectedReturns the first line of docblock.yii\console\Controller
parseDocCommentTags() protectedParses the comment block into tags.yii\console\Controller
saveMessagesCategoryToPHP() protectedWrites category messages into PHP file.MessageController
saveMessagesToDb() protectedSaves messages to database.MessageController
saveMessagesToPHP() protectedWrites messages into PHP files.MessageController
saveMessagesToPO() protectedWrites messages into PO file.MessageController
saveMessagesToPOT() protectedWrites messages into POT file.MessageController
tokensEqual() protectedFinds out if two PHP tokens are equal.MessageController
EventTypeDescriptionDefined by
EVENT_BEFORE_ACTIONyii\base\ActionEventAn event raised right before executing a controller action. Event name: 'beforeAction'.yii\base\Controller
EVENT_AFTER_ACTIONyii\base\ActionEventAn event raised right after executing a controller action. Event name: 'afterAction'.yii\base\Controller
public array|null $except = ['.*', '/.*', '/messages', '/tests', '/runtime', '/vendor', '/BaseYii.php']

List of patterns that specify which files/directories should NOT be processed.

If empty or not set, all files/directories will be processed. See helpers/FileHelper::findFiles() description for pattern matching rules. If a file/directory matches both a pattern in “only” and “except”, it will NOT be processed.

public string $format = 'php'

Generated file format.

Can be “php”, “db”, “po” or “pot”.

public array $ignoreCategories = []

Message categories to ignore.

For example, ‘yii’, ‘app*’, ‘widgets/menu’, etc.

public array $languages = []

Required, list of language codes that the extracted messages should be translated to.

For example, [‘zh-CN’, ‘de’].

public bool $markUnused = true

Whether to mark messages that no longer appear in the source code.

Defaults to true, which means each of these messages will be enclosed with a pair of ’@@’ marks.

public array|null $only = ['*.php']

List of patterns that specify which files (not directories) should be processed.

If empty or not set, all files will be processed. See helpers/FileHelper::findFiles() description for pattern matching rules. If a file/directory matches both a pattern in “only” and “except”, it will NOT be processed.

public string|null $phpDocBlock = null

DocBlock used for messages array in generated PHP file.

If null, default DocBlock will be used. This property is used only if $format is “php”.

Since

2.0.13

public string $phpFileHeader = ''

File header in generated PHP file with messages.

This property is used only if $format is “php”.

Since

2.0.13

public bool $removeUnused = false

Whether to remove messages that no longer appear in the source code.

Defaults to false, which means these messages will NOT be removed.

public bool $sort = false

Whether to sort messages by keys when merging new messages with the existing ones.

Defaults to false, which means the new (untranslated) messages will be separated from the old (translated) ones.

public string|string[] $translator = ['Yii::t', '\Yii::t']

The name of the function for translating messages.

This is used as a mark to find the messages to be translated. You may use a string for single function name or an array for multiple function names.

public function actionConfig(string $filePath): int

Creates a configuration file for the “extract” command using command line options specified.

The generated configuration file contains parameters required for source code messages extraction. You may use this configuration file with the “extract” command.

Parameters

ParameterTypeDescription
$filePathstringOutput file name or alias.

Returns

int: CLI exit code

Throws

public function actionConfigTemplate(string $filePath): int

Creates a configuration file template for the “extract” command.

The created configuration file contains detailed instructions on how to customize it to fit for your needs. After customization, you may use this configuration file with the “extract” command.

Parameters

ParameterTypeDescription
$filePathstringOutput file name or alias.

Returns

int: CLI exit code

Throws

public function actionExtract(string|null $configFile = null): mixed

Extracts messages to be translated from source code.

This command will search through source code files and extract messages that need to be translated in different languages.

Parameters

ParameterTypeDescription
$configFilestring|nullThe path or alias of the configuration file. You may use the “yii message/config” command to generate this file and then customize it for your needs.

Returns

mixed

Throws

public function optionAliases(): array

Returns option alias names.

Child classes may override this method to specify alias options.

Returns

array: The options alias names valid for the action where the keys is alias name for option and value is option name.

Since

2.0.8

public function options(mixed $actionID): string[]

Returns the names of valid options for the action (id) An option requires the existence of a public member variable whose name is the option name.

Child classes may override this method to specify possible options.

Note that the values setting via options are not available until beforeAction() is being called.

Parameters

ParameterTypeDescription
$actionIDmixedThe action id of the current request

Returns

string[]: The names of the options valid for the action

protected function extractMessages(string $fileName, string $translator, array $ignoreCategories = []): array

Extracts messages from a file.

Parameters

ParameterTypeDescription
$fileNamestringName of the file to extract messages from
$translatorstringName of the function used to translate messages
$ignoreCategoriesarrayMessage categories to ignore. This parameter is available since version 2.0.4.

Returns

array

protected function extractMessagesFromTokens(array $tokens, array $translatorTokens, array $ignoreCategories): array

Extracts messages from a parsed PHP tokens list.

Parameters

ParameterTypeDescription
$tokensarrayTokens to be processed.
$translatorTokensarrayTranslator tokens.
$ignoreCategoriesarrayMessage categories to ignore.

Returns

array: Messages.

protected function getLine(array $tokens): int|string

Finds out a line of the first non-char PHP token found.

Parameters

ParameterTypeDescription
$tokensarray

Returns

int|string

Since

2.0.1

protected function initConfig(string $configFile): mixed

Parameters

ParameterTypeDescription
$configFilestring

Returns

mixed

Throws

Since

2.0.13

protected function isCategoryIgnored(string $category, array $ignoreCategories): bool

The method checks, whether the $category is ignored according to $ignoreCategories array.

Examples:

  • myapp - will be ignored only myapp category;
  • myapp* - will be ignored by all categories beginning with myapp (myapp, myapplication, myapprove, myapp/widgets, myapp.widgets, etc).

Parameters

ParameterTypeDescription
$categorystringCategory that is checked
$ignoreCategoriesarrayMessage categories to ignore.

Returns

bool

Since

2.0.7

protected function saveMessagesCategoryToPHP(array $messages, string $fileName, bool $overwrite, bool $removeUnused, bool $sort, string $category, bool $markUnused): int

Writes category messages into PHP file.

Parameters

ParameterTypeDescription
$messagesarray
$fileNamestringName of the file to write to
$overwriteboolIf existing file should be overwritten without backup
$removeUnusedboolIf obsolete translations should be removed
$sortboolIf translations should be sorted
$categorystringMessage category
$markUnusedboolIf obsolete translations should be marked

Returns

int: Exit code

protected function saveMessagesToDb(array $messages, yii\db\Connection $db, string $sourceMessageTable, string $messageTable, bool $removeUnused, array $languages, bool $markUnused): mixed

Saves messages to database.

Parameters

ParameterTypeDescription
$messagesarray
$dbyii\db\Connection
$sourceMessageTablestring
$messageTablestring
$removeUnusedbool
$languagesarray
$markUnusedbool

Returns

mixed

protected function saveMessagesToPHP(array $messages, string $dirName, bool $overwrite, bool $removeUnused, bool $sort, bool $markUnused): mixed

Writes messages into PHP files.

Parameters

ParameterTypeDescription
$messagesarray
$dirNamestringName of the directory to write to
$overwriteboolIf existing file should be overwritten without backup
$removeUnusedboolIf obsolete translations should be removed
$sortboolIf translations should be sorted
$markUnusedboolIf obsolete translations should be marked

Returns

mixed

protected function saveMessagesToPO(array $messages, string $dirName, bool $overwrite, bool $removeUnused, bool $sort, string $catalog, bool $markUnused): mixed

Writes messages into PO file.

Parameters

ParameterTypeDescription
$messagesarray
$dirNamestringName of the directory to write to
$overwriteboolIf existing file should be overwritten without backup
$removeUnusedboolIf obsolete translations should be removed
$sortboolIf translations should be sorted
$catalogstringMessage catalog
$markUnusedboolIf obsolete translations should be marked

Returns

mixed

protected function saveMessagesToPOT(array $messages, string $dirName, string $catalog): mixed

Writes messages into POT file.

Parameters

ParameterTypeDescription
$messagesarray
$dirNamestringName of the directory to write to
$catalogstringMessage catalog

Returns

mixed

Since

2.0.6

protected function tokensEqual(array|string $a, array|string $b): bool

Finds out if two PHP tokens are equal.

Parameters

ParameterTypeDescription
$aarray|string
$barray|string

Returns

bool

Since

2.0.1