PhpMessageSource
API reference › yii › i18n › PhpMessageSource
PhpMessageSource represents a message source that stores translated messages in PHP scripts.
PhpMessageSource uses PHP arrays to keep message translations.
- Each PHP script contains one array which stores the message translations in one particular language and for a single message category;
- Each PHP script is saved as a file named as “
$basePath/LanguageID/CategoryName.php”; - Within each PHP script, the message translations are returned as an array like the following:
return [ 'original message 1' => 'translated message 1', 'original message 2' => 'translated message 2',];You may use $fileMap to customize the association between category names and the file names.
Properties
Section titled “Properties”| Property | Type | Description | Defined by |
|---|---|---|---|
$basePath | string | The base path for all translated messages. Default: '@app/messages'. | PhpMessageSource |
$behaviors read-only | array<yii\<static>> | List of behaviors attached to this component. | yii\ |
$fileMap | array | Mapping between message categories and the corresponding message file paths. Default: null. | PhpMessageSource |
$forceTranslation | bool | Whether to force message translation when the source and target languages are the same. Default: false. | MessageSource |
$sourceLanguage | string| | The language that the original messages are in. Default: null. | MessageSource |
Methods
Section titled “Methods”| Method | Description | Defined by |
|---|---|---|
__construct() | Constructor. | yii\ |
__call() | Calls the named method which is not a class method. | yii\ |
__clone() | This method is called after the object is created by cloning an existing one. | yii\ |
__get() | Returns the value of a component property. | yii\ |
__isset() | Checks if a property is set, i.e. defined and not null. | yii\ |
__set() | Sets the value of a component property. | yii\ |
__unset() | Sets a component property to be null. | yii\ |
attachBehavior() | Attaches a behavior to this component. | yii\ |
attachBehaviors() | Attaches a list of behaviors to the component. | yii\ |
behaviors() | Returns a list of behaviors that this component should behave as. | yii\ |
canGetProperty() | Returns a value indicating whether a property can be read. | yii\ |
canSetProperty() | Returns a value indicating whether a property can be set. | yii\ |
className() static | Returns the fully qualified name of this class. | yii\ |
detachBehavior() | Detaches a behavior from the component. | yii\ |
detachBehaviors() | Detaches all behaviors from the component. | yii\ |
ensureBehaviors() | Makes sure that the behaviors declared in behaviors() are attached to this component. | yii\ |
getBehavior() | Returns the named behavior object. | yii\ |
getBehaviors() | Returns all behaviors attached to this component. | yii\ |
hasEventHandlers() | Returns a value indicating whether there is any handler attached to the named event. | yii\ |
hasMethod() | Returns a value indicating whether a method is defined. | yii\ |
hasProperty() | Returns a value indicating whether a property is defined for this component. | yii\ |
init() | Initializes this component. | MessageSource |
off() | Detaches an existing event handler from this component. | yii\ |
on() | Attaches an event handler to an event. | yii\ |
translate() | Translates a message to the specified language. | MessageSource |
trigger() | Triggers an event. | yii\ |
getMessageFilePath() protected | Returns message file path for the specified language and category. | PhpMessageSource |
loadFallbackMessages() protected | The method is normally called by loadMessages() to load the fallback messages for the language. | PhpMessageSource |
loadMessages() protected | Loads the message translation for the specified $language and $category. | PhpMessageSource |
loadMessagesFromFile() protected | Loads the message translation for the specified language and category or returns null if file doesn’t exist. | PhpMessageSource |
translateMessage() protected | Translates the specified message. | MessageSource |
Events
Section titled “Events”| Event | Type | Description | Defined by |
|---|---|---|---|
EVENT_MISSING_TRANSLATION | MissingTranslationEvent | An event that is triggered when a message translation is not found. Event name: 'missingTranslation'. | MessageSource |
Property details
Section titled “Property details”$basePath
Section titled “$basePath ”public string $basePath = '@app/messages'The base path for all translated messages.
Defaults to ‘@app/messages’.
$fileMap
Section titled “$fileMap ”public array $fileMap = nullMapping between message categories and the corresponding message file paths.
The file paths are relative to $basePath. For example,
[ 'core' => 'core.php', 'ext' => 'extensions.php',]Method details
Section titled “Method details”getMessageFilePath()
Section titled “getMessageFilePath() ”protected function getMessageFilePath(string $category, string $language): stringReturns message file path for the specified language and category.
The category may use / or \ as namespace separators (for example, app/error). Categories that contain ..
segments, an absolute path, or a stream-wrapper scheme (such as php://) are rejected so the resolved path
cannot escape $basePath.
Parameters
| Parameter | Type | Description |
|---|---|---|
$category | string | The message category |
$language | string | The target language |
Returns
string: Path to message file
Throws
yii\base\InvalidArgumentException: if the language code is invalid, or the category resolves to an unsafe path.
loadFallbackMessages()
Section titled “loadFallbackMessages() ”protected function loadFallbackMessages(string $category, string $fallbackLanguage, array $messages, string $originalMessageFile): arrayThe method is normally called by loadMessages() to load the fallback messages for the language.
Method tries to load the $category messages for the $fallbackLanguage and adds them to the $messages array.
Parameters
| Parameter | Type | Description |
|---|---|---|
$category | string | The message category |
$fallbackLanguage | string | The target fallback language |
$messages | array | The array of previously loaded translation messages. The keys are original messages, and the values are the translated messages. |
$originalMessageFile | string | The path to the file with messages. Used to log an error message in case when no translations were found. |
Returns
array: The loaded messages. The keys are original messages, and the values are the translated messages.
Since
2.0.7
loadMessages()
Section titled “loadMessages() ”protected function loadMessages(string $category, string $language): arrayLoads the message translation for the specified $language and $category.
If translation for specific locale code such as en-US isn’t found it
tries more generic en. When both are present, the en-US messages will be merged
over en. See loadFallbackMessages() for details.
If the $language is less specific than $sourceLanguage, the method will try to
load the messages for $sourceLanguage. For example: $sourceLanguage is en-GB,
$language is en. The method will load the messages for en and merge them over en-GB.
Parameters
| Parameter | Type | Description |
|---|---|---|
$category | string | The message category |
$language | string | The target language |
Returns
array: The loaded messages. The keys are original messages, and the values are the translated messages.
See also
loadMessagesFromFile()
Section titled “loadMessagesFromFile() ”protected function loadMessagesFromFile(string $messageFile): array|nullLoads the message translation for the specified language and category or returns null if file doesn’t exist.
Parameters
| Parameter | Type | Description |
|---|---|---|
$messageFile | string | Path to message file |
Returns
array|null: Array of messages or null if file not found