Spec-Zone.ru › Yii 1.1
CMessageSource CMessageSource является базовым классом для классов репозитория перевода сообщений.
Источник сообщений — это компонент приложения, который обеспечивает интернационализацию сообщений (i18n). Он хранит сообщения, переведенные на разные языки, и предоставляет эти переведенные версии по запросу.
Конкретный класс должен реализовывать
loadMessages или переопределять
translateMessage .
Публичные свойства Property
Type
Description
Defined By behaviors array поведения, которые должны быть прикреплены к этому компоненту. CApplicationComponent forceTranslation boolean необходимо ли принудительно переводить сообщения, когда исходный и целевой языки совпадают. CMessageSource isInitialized boolean Проверяет, был ли инициализирован этот компонент приложения. CApplicationComponent language string язык, на котором написаны исходные сообщения. CMessageSource
Публичные методы Method
Description
Defined By __call() Вызывает именованный метод, который не является методом класса. CComponent __get() Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. CComponent __isset() Проверяет, является ли значение свойства нулевым. 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() Инициализирует компонент приложения. CApplicationComponent onMissingTranslation() Вызывается, когда сообщение не может быть переведено. CMessageSource raiseEvent() Вызывает событие. CComponent setLanguage() Устанавливает язык, на котором написаны исходные сообщения. CMessageSource translate() Переводит сообщение на указанный язык. CMessageSource
Защищенные методы Method
Description
Defined By loadMessages() Загружает перевод сообщения для указанного языка и категории. CMessageSource translateMessage() Переводит указанное сообщение. CMessageSource
События Event
Description
Defined By onMissingTranslation Вызывается, когда сообщение не может быть переведено. CMessageSource
Краткое описание полей public boolean $forceTranslation ; необходимо ли принудительно переводить сообщения, когда исходный и целевой языки совпадают. По умолчанию — false, то есть перевод выполняется только тогда, когда исходный и целевой языки различны.
public string getLanguage () public void setLanguage (string $language) язык, на котором написаны исходные сообщения. По умолчанию — язык приложения .
Подробное описание методов public string getLanguage () {return} string язык, на котором написаны исходные сообщения. По умолчанию — язык приложения .
abstract protected array loadMessages (string $category, string $language) $category строка категория сообщений $language строка целевой язык {return} массив загруженные сообщения
Загружает перевод сообщений для указанного языка и категории.
Вызывается, когда сообщение не может быть переведено. Обработчики могут записать это сообщение в лог или выполнить какое-либо стандартное действие. Свойство CMissingTranslationEvent::message будет возвращено методом translateMessage .
public void setLanguage (string $language) $language строка язык, на котором написаны исходные сообщения.
public string translate (string $category, string $message, string $language=NULL) $category строка категория сообщения $message строка сообщение, подлежащее переводу $language строка целевой язык. Если null (по умолчанию), будет использоваться язык приложения. {return} строка переведенное сообщение (или исходное, если перевод не нужен)
Исходный код: framework/i18n/CMessageSource.php#80 (
показать )
public function translate ( $category , $message , $language = null ) { if( $language === null ) $language = Yii :: app ()-> getLanguage (); if( $this -> forceTranslation || $language !== $this -> getLanguage ()) return $this -> translateMessage ( $category , $message , $language ); else return $message ; } Переводит сообщение на указанный язык. Примечание: если указанный язык совпадает с языком исходного сообщения , сообщения не будут переведены. Если сообщение не найдено в переводах, будет вызвано событие onMissingTranslation . Обработчики могут пометить это сообщение или выполнить какое-либо стандартное действие. Свойство CMissingTranslationEvent::message параметра события будет возвращено.
protected string translateMessage (string $category, string $message, string $language) $category строка категория, к которой относится сообщение $message строка сообщение, подлежащее переводу $language строка целевой язык {return} строка переведенное сообщение
Исходный код: framework/i18n/CMessageSource.php#99 (
показать )
protected function translateMessage ( $category , $message , $language ) { $key = $language . '.' . $category ; if(!isset( $this -> _messages [ $key ])) $this -> _messages [ $key ]= $this -> loadMessages ( $category , $language ); if(isset( $this -> _messages [ $key ][ $message ]) && $this -> _messages [ $key ][ $message ]!== '' ) return $this -> _messages [ $key ][ $message ]; elseif( $this -> hasEventHandler ( 'onMissingTranslation' )) { $event =new CMissingTranslationEvent ( $this , $category , $message , $language ); $this -> onMissingTranslation ( $event ); return $event -> message ; } else return $message ; } Переводит указанное сообщение. Если сообщение не найдено, будет вызвано событие onMissingTranslation .