Spec-Zone.ru › Yii 1.1

CGettextMessageSource

Пакет system.i18n
Наследование class CGettextMessageSource » CMessageSource » CApplicationComponent » CComponent
Реализует IApplicationComponent
С версии 1.0
Исходный код framework/i18n/CGettextMessageSource.php
CGettextMessageSource представляет собой источник сообщений, основанный на GNU Gettext.

Каждый экземпляр 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
END_OF_DOCUMENT_MARKER

События

Событие Описание Определено в
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()
Исходный код: framework/i18n/CGettextMessageSource.php#71 (показать)
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} массив загруженные сообщения
Исходный код: framework/i18n/CGettextMessageSource.php#84 (показать)
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API