CGettextMessageSource
| Пакет | system.i18n |
|---|---|
| Наследование | class CGettextMessageSource » CMessageSource » CApplicationComponent » CComponent |
| Реализует | IApplicationComponent |
| С версии | 1.0 |
| Исходный код | framework/i18n/CGettextMessageSource.php |
Каждый экземпляр CGettextMessageSource представляет собой переводы сообщений для одного домена. А каждая категория сообщений представляет собой контекст сообщения в Gettext. Переведённые сообщения хранятся в файлах MO или PO, в зависимости от значения свойства useMoFile.
Все переводы сохраняются в каталоге basePath. Переводы на одном языке хранятся в файлах MO или PO в отдельном подкаталоге, имя которого соответствует идентификатору языка. Имя файла задаётся свойством catalog, которое по умолчанию равно 'messages'.
Общедоступные свойства
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| basePath | string | базовый путь для всех переведённых сообщений. | CGettextMessageSource |
| behaviors | array | поведения, которые должны быть присоединены к этому компоненту. | CApplicationComponent |
| cacheID | string | идентификатор компонента кэширования приложения, который используется для кэширования сообщений. | CGettextMessageSource |
| cachingDuration | integer | время в секундах, в течение которого сообщения могут оставаться действительными в кэше. | CGettextMessageSource |
| catalog | string | имя каталога сообщений. | CGettextMessageSource |
| forceTranslation | boolean | выполнять принудительный перевод сообщений, когда языки источника и целевого совпадают. | CMessageSource |
| isInitialized | boolean | Проверяет, был ли инициализирован компонент приложения. | CApplicationComponent |
| language | string | язык, на котором написаны исходные сообщения. | CMessageSource |
| useBigEndian | boolean | использовать Big Endian для чтения файлов MO. | CGettextMessageSource |
| useMoFile | boolean | загружать сообщения из файлов MO. | CGettextMessageSource |
Общедоступные методы
| Метод | Описание | Определено |
|---|---|---|
| __call() | Вызывает метод, который не является методом класса. | CComponent |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства null. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в значение null. | CComponent |
| asa() | Возвращает объект поведения по имени. | CComponent |
| attachBehavior() | Присоединяет поведение к этому компоненту. | CComponent |
| attachBehaviors() | Присоединяет список поведений к компоненту. | CComponent |
| attachEventHandler() | Присоединяет обработчик события к событию. | CComponent |
| canGetProperty() | Определяет, можно ли считать свойство. | CComponent |
| canSetProperty() | Определяет, можно ли установить свойство. | CComponent |
| detachBehavior() | Отсоединяет поведение от компонента. | CComponent |
| detachBehaviors() | Отсоединяет все поведения от компонента. | CComponent |
| detachEventHandler() | Отсоединяет существующий обработчик событий. | CComponent |
| disableBehavior() | Отключает присоединённое поведение. | CComponent |
| disableBehaviors() | Отключает все поведения, присоединённые к этому компоненту. | CComponent |
| enableBehavior() | Включает присоединённое поведение. | CComponent |
| enableBehaviors() | Включает все присоединённые поведения к этому компоненту. | CComponent |
| evaluateExpression() | Вычисляет выражение PHP или обратный вызов в контексте этого компонента. | CComponent |
| getEventHandlers() | Возвращает список присоединённых обработчиков событий для события. | CComponent |
| getIsInitialized() | Проверяет, был ли инициализирован этот компонент приложения. | CApplicationComponent |
| getLanguage() | Возвращает язык, на котором написаны исходные сообщения. По умолчанию, язык приложения. | CMessageSource |
| hasEvent() | Определяет, задано ли событие. | CComponent |
| hasEventHandler() | Проверяет, имеет ли указанное событие присоединённые обработчики. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| init() | Инициализирует компонент приложения. | CGettextMessageSource |
| onMissingTranslation() | Возникает, когда сообщение не может быть переведено. | CMessageSource |
| raiseEvent() | Вызывает событие. | CComponent |
| setLanguage() | Устанавливает язык, на котором написаны исходные сообщения. | CMessageSource |
| translate() | Переводит сообщение на указанный язык. | CMessageSource |
Защищённые методы
| Метод | Описание | Определено |
|---|---|---|
| loadMessages() | Загружает перевод сообщений для указанного языка и категории. | CGettextMessageSource |
| translateMessage() | Переводит указанное сообщение. | CMessageSource |
События
| Событие | Описание | Определено в |
|---|---|---|
| onMissingTranslation | Вызывается, когда сообщение не может быть переведено. | CMessageSource |
Подробности свойств
basePath свойство
public string $basePath;
базовый путь для всех переведенных сообщений. По умолчанию null, что означает подкаталог «messages» в каталоге приложения (например, «protected/messages»).
cacheID свойство
public string $cacheID;
идентификатор компонента кэширования приложения, используемого для кэширования сообщений. По умолчанию «cache», что относится к основному компоненту кэширования. Установите это свойство в false, если вы хотите отключить кэширование сообщений.
cachingDuration свойство
public integer $cachingDuration;
время в секундах, в течение которого сообщения могут храниться в кэше. По умолчанию 0, что означает отключение кэширования.
catalog свойство
public string $catalog;
имя каталога сообщений. Это имя файла сообщений (без расширения), хранящего переведенные сообщения. По умолчанию «messages».
useBigEndian свойство
public boolean $useBigEndian;
использовать Big Endian для чтения файлов MO. По умолчанию false. Это свойство используется только когда useMoFile равно true.
useMoFile свойство
public boolean $useMoFile;
загружать ли сообщения из файлов MO. По умолчанию true. Если false, сообщения будут загружаться из файлов PO.
Подробности методов
init() метод
public void init() |
public function init()
{
parent::init();
if($this->basePath===null)
$this->basePath=Yii::getPathOfAlias('application.messages');
}
Инициализирует компонент приложения. Этот метод переопределяет родительскую реализацию, предварительно обрабатывая данные запроса пользователя.
loadMessages() метод
protected array loadMessages(string $category, string $language) | ||
| $category | строка | категория сообщения |
| $language | строка | целевой язык |
| {return} | массив | загруженные сообщения |
protected function loadMessages($category, $language)
{
$messageFile=$this->basePath . DIRECTORY_SEPARATOR . $language . DIRECTORY_SEPARATOR . $this->catalog;
if($this->useMoFile)
$messageFile.=self::MO_FILE_EXT;
else
$messageFile.=self::PO_FILE_EXT;
if ($this->cachingDuration > 0 && $this->cacheID!==false && ($cache=Yii::app()->getComponent($this->cacheID))!==null)
{
$key = self::CACHE_KEY_PREFIX . $messageFile . "." . $category;
if (($data=$cache->get($key)) !== false)
return unserialize($data);
}
if (is_file($messageFile))
{
if($this->useMoFile)
$file=new CGettextMoFile($this->useBigEndian);
else
$file=new CGettextPoFile();
$messages=$file->load($messageFile,$category);
if(isset($cache))
{
$dependency=new CFileCacheDependency($messageFile);
$cache->set($key,serialize($messages),$this->cachingDuration,$dependency);
}
return $messages;
}
else
return array();
}
Загружает перевод сообщений для указанного языка и категории.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CGettextMessageSource