Spec-Zone.ru › Yii 1.1

CMessageSource

Package system.i18n
Inheritance abstract class CMessageSource » CApplicationComponent » CComponent
Implements IApplicationComponent
Subclasses CDbMessageSource, CGettextMessageSource, CPhpMessageSource
Since 1.0
Source Code framework/i18n/CMessageSource.php
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

Краткое описание полей

forceTranslation свойство (доступно с версии 1.1.4)

public boolean $forceTranslation;

необходимо ли принудительно переводить сообщения, когда исходный и целевой языки совпадают. По умолчанию — false, то есть перевод выполняется только тогда, когда исходный и целевой языки различны.

language свойство

public string getLanguage()
public void setLanguage(string $language)

язык, на котором написаны исходные сообщения. По умолчанию — язык приложения.

Подробное описание методов

getLanguage() метод

public string getLanguage()
{return} string язык, на котором написаны исходные сообщения. По умолчанию — язык приложения.
Исходный код: framework/i18n/CMessageSource.php#51 (показать)
public function getLanguage()
{
    return 
$this->_language===null ? Yii::app()->sourceLanguage : $this->_language;
}

loadMessages() метод

abstract protected array loadMessages(string $category, string $language)
$category строка категория сообщений
$language строка целевой язык
{return} массив загруженные сообщения
Исходный код: framework/i18n/CMessageSource.php#45 (показать)
abstract protected function loadMessages($category,$language);

Загружает перевод сообщений для указанного языка и категории.

onMissingTranslation() метод

public void onMissingTranslation(CMissingTranslationEvent $event)
$event CMissingTranslationEvent параметр события
Исходный код: framework/i18n/CMessageSource.php#123 (показать)
public function onMissingTranslation($event)
{
    
$this->raiseEvent('onMissingTranslation',$event);
}

Вызывается, когда сообщение не может быть переведено. Обработчики могут записать это сообщение в лог или выполнить какое-либо стандартное действие. Свойство CMissingTranslationEvent::message будет возвращено методом translateMessage.

setLanguage() метод

public void setLanguage(string $language)
$language строка язык, на котором написаны исходные сообщения.
Исходный код: framework/i18n/CMessageSource.php#59 (показать)
public function setLanguage($language)
{
    
$this->_language=CLocale::getCanonicalID($language);
}

translate() метод

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 параметра события будет возвращено.

translateMessage() метод

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.

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CMessageSource

Spec-Zone.ru

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