Class yii\i18n\DbMessageSource

继承yii\i18n\DbMessageSource » yii\i18n\MessageSource » yii\base\Component » yii\base\BaseObject
实现yii\base\Configurable
可用自版本2.0
源代码 https://github.com/yiisoft/yii2/blob/master/framework/i18n/DbMessageSource.php

DbMessageSource extends yii\i18n\MessageSource and represents a message source that stores translated messages in database.

The database must contain the following two tables: source_message and message.

The source_message table stores the messages to be translated, and the message table stores the translated messages. The name of these two tables can be customized by setting $sourceMessageTable and $messageTable, respectively.

The database connection is specified by $db. Database schema could be initialized by applying migration:

yii migrate --migrationPath=@yii/i18n/migrations/

If you don't want to use migration and need SQL instead, files for all databases are in migrations directory.

公共属性

隐藏继承的属性

属性类型描述定义在
$behaviors yii\base\Behavior[] 附加到此组件的行为列表. 该属性是只读的. yii\base\Component
$cache yii\caching\CacheInterface|array|string The cache object or the application component ID of the cache object. yii\i18n\DbMessageSource
$cachingDuration integer The time in seconds that the messages can remain valid in cache. yii\i18n\DbMessageSource
$db yii\db\Connection|array|string The DB connection object or the application component ID of the DB connection. yii\i18n\DbMessageSource
$enableCaching boolean Whether to enable caching translated messages yii\i18n\DbMessageSource
$forceTranslation boolean Whether to force message translation when the source and target languages are the same. yii\i18n\MessageSource
$messageTable string The name of the translated message table. yii\i18n\DbMessageSource
$sourceLanguage string The language that the original messages are in. yii\i18n\MessageSource
$sourceMessageTable string The name of the source message table. yii\i18n\DbMessageSource

公共方法

隐藏继承的方法

方法描述定义在
__call() 调用不是类方法的指定的方法. yii\base\Component
__clone() 在通过克隆现有对象创建对象之后调用此方法. yii\base\Component
__construct() 构造函数. yii\base\BaseObject
__get() 返回组件属性的值. yii\base\Component
__isset() 检查属性是否已设置, 即已定义且不为null. yii\base\Component
__set() 设置组件属性的值. yii\base\Component
__unset() 将组件属性设置为null. yii\base\Component
attachBehavior() 将行为附加到此组件. yii\base\Component
attachBehaviors() 将行为列表附加到组件. yii\base\Component
behaviors() 返回此组件应该具有的行为列表. yii\base\Component
canGetProperty() 返回一个值, 指示属性是否可读取. yii\base\Component
canSetProperty() 返回一个值, 指示属性是否可设置. yii\base\Component
className() 返回此类的完全限定名称. yii\base\BaseObject
detachBehavior() 从组件中分离一个行为. yii\base\Component
detachBehaviors() 分离组件中的所有行为. yii\base\Component
ensureBehaviors() 确保在 behaviors() 中声明的行为已附加到此组件. yii\base\Component
getBehavior() 返回指定的行为对象. yii\base\Component
getBehaviors() 返回附加到此组件的所有行为. yii\base\Component
hasEventHandlers() 返回一个值, 指示是否有任何处理程序附加到指定的事件. yii\base\Component
hasMethod() 返回一个值, 指示方法是否已定义. yii\base\Component
hasProperty() 返回一个值, 指示属性是否已定义. yii\base\Component
init() Initializes the DbMessageSource component. yii\i18n\DbMessageSource
off() 从该组件分离现有的事件处理程序. yii\base\Component
on() 将事件处理程序附加到事件. yii\base\Component
translate() Translates a message to the specified language. yii\i18n\MessageSource
trigger() 触发事件. yii\base\Component

受保护的方法

隐藏继承的方法

方法描述定义在
createFallbackQuery() The method builds the yii\db\Query object for the fallback language messages search. yii\i18n\DbMessageSource
loadMessages() Loads the message translation for the specified language and category. yii\i18n\DbMessageSource
loadMessagesFromDb() Loads the messages from database. yii\i18n\DbMessageSource
translateMessage() Translates the specified message. yii\i18n\MessageSource

事件

隐藏继承的事件

事件类型描述定义在
EVENT_MISSING_TRANSLATION yii\i18n\MissingTranslationEvent An event that is triggered when a message translation is not found. yii\i18n\MessageSource

常量

隐藏继承的常量

常量描述定义在
CACHE_KEY_PREFIX 'DbMessageSource' Prefix which would be used when generating cache key. Deprecated This constant has never been used and will be removed in 2.1.0. yii\i18n\DbMessageSource

属性详情

$cache public 属性

The cache object or the application component ID of the cache object. The messages data will be cached using this cache object. Note, that to enable caching you have to set $enableCaching to true, otherwise setting this property has no effect.

After the DbMessageSource object is created, if you want to change this property, you should only assign it with a cache object.

Starting from version 2.0.2, this can also be a configuration array for creating the object.

参见:

$cachingDuration public 属性

The time in seconds that the messages can remain valid in cache. Use 0 to indicate that the cached data will never expire.

参见 $enableCaching.

$db public 属性

The DB connection object or the application component ID of the DB connection.

After the DbMessageSource object is created, if you want to change this property, you should only assign it with a DB connection object.

Starting from version 2.0.2, this can also be a configuration array for creating the object.

$enableCaching public 属性

Whether to enable caching translated messages

public boolean $enableCaching false
$messageTable public 属性

The name of the translated message table.

public string $messageTable '{{%message}}'
$sourceMessageTable public 属性

The name of the source message table.

public string $sourceMessageTable '{{%source_message}}'

方法详情

createFallbackQuery() protected 方法 (可用自版本: 2.0.7)

The method builds the yii\db\Query object for the fallback language messages search.

Normally is called from loadMessagesFromDb().

参见 loadMessagesFromDb().

protected yii\db\Query createFallbackQuery ( $category, $language, $fallbackLanguage )
$category string

The message category

$language string

The originally requested language

$fallbackLanguage string

The target fallback language

init() public 方法

Initializes the DbMessageSource component.

This method will initialize the $db property to make sure it refers to a valid DB connection. Configured $cache component would also be initialized.

public void init ( )
throws yii\base\InvalidConfigException

if $db is invalid or $cache is invalid.

loadMessages() protected 方法

Loads 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.

protected array loadMessages ( $category, $language )
$category string

The message category

$language string

The target language

return array

The loaded messages. The keys are original messages, and the values are translated messages.

loadMessagesFromDb() protected 方法

Loads the messages from database.

You may override this method to customize the message storage in the database.

protected array loadMessagesFromDb ( $category, $language )
$category string

The message category.

$language string

The target language.

return array

The messages loaded from database.