рдпрд╣ рд╕рдм рдЗрд╕ рддрдереНрдп рд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ рдХрд┐ рдореИрдВрдиреЗ рдПрдХ рдФрд░ рдлреНрд░реАрд▓рд╛рдВрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рдВрд╢реЛрдзрди рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ред рдХрд╛рд░реНрдп рдЧреИрд▓рд░реА рдХреЗ рдмрд╣реБрднрд╛рд╖реА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ
рдкреВрд░рд╛ рдХрд░рдирд╛ рдерд╛ред рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рд╣реБрдИ ...
рдкреНрд░рдЧрддрд┐ рдХрд╛ рдЗрдВрдЬрди
рдЧреИрд▓рд░реА рдореЗрдВ рдПрд▓реНрдмрдо рдФрд░ рдЖрдЗрдЯрдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдПрд▓реНрдмрдо рдФрд░ рдЖрдЗрдЯрдо рджреЛрдиреЛрдВ рдХреЗ рдореБрдЦреНрдп рдХреНрд╖реЗрддреНрд░ рд╣реИрдВ:
- рдЖрдИрдбреА
- рд╢реАрд░реНрд╖рдХ
- рд╡рд┐рд╡рд░рдг
- рдлрд╝рд╛рдЗрд▓
рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╢реАрд░реНрд╖рдХ рдФрд░ рд╡рд┐рд╡рд░рдг рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ StoreView, рдЕрд░реНрдерд╛рддреН store_id рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд╣рд▓реЗ рддреЛ рд╕рд┐рд░реНрдл рдПрдХ рдФрд░ store_id рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдерд╛, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рдерд╛! рдореИрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреНрдпреЛрдВ:
- рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдЯреЛрд░ рд╡реНрдпреВ рдХреЗ рдПрд▓реНрдмрдо рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЖрдИрдбреА (рдЗрд╕реА рддрд░рд╣ рдЖрдЗрдЯрдо рдХреЗ рд╕рд╛рде) рдереЗ
- рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ StoreView (рдлрд╝рд╛рдЗрд▓ рдлрд╝реАрд▓реНрдб) рдкрд░ рдПрдХ рд╣реА рдЪрд┐рддреНрд░ рд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛
- рдпрджрд┐ рдЖрдкрдХреЛ рд╕рднреА рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреНрдп рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЪрд┐рддреНрд░ рдХреЗ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдПрдБ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВ
рдпрд╣ рдмреБрд░рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдВрдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдУрд░ рдЙрдиреНрдореБрдЦ рдирд╣реАрдВ рд╣реИред
рд╕рдирдХреА рд╡рд┐рдЪрд╛рд░
рдЪреВрдВрдХрд┐ рдореИрдВ рдЕрдХреНрд╕рд░ Symfony1.4 + Doctrine1.2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕рдорд╛рдзрд╛рди рдХреА рддрд▓рд╛рд╢ рдирд╣реАрдВ рдХрд░рдиреА рдкрдбрд╝реАред рдореИрдВрдиреЗ
рдбреЙрдХреНрдЯрд┐рди I18n рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рдорд╛рди
рдореИрдЧрдиреЗрдЯреЛ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред
рдХреНрдпреЛрдВ?
рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдФрд░ рд╕рд░рд▓ рд╣реИ! рд╕рд╛рде рд╣реА, рдореБрдЭреЗ рдорд╛рдирдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдирд╣реАрдВ рдорд┐рд▓реА рдЬреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдЧреАред рдпрджреНрдпрдкрд┐ рдИрдПрд╡реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдм рдХреБрдЫ рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛ (рдореЗрд░реЗ рд▓рд┐рдП, рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореЗрд░реЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ)
рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╕рдВрдкреВрд░реНрдг рдЖрдХрд░реНрд╖рдг рдпрд╣ рд╣реИ рдХрд┐ рд╕рдВрдЧреНрд░рд╣ рдФрд░ рдореЙрдбрд▓, рдЬреЛ рд╕рдорд╛рди рдереЗ рдФрд░ рдмрд╛рд╣рд░реА рдПрдкреАрдЖрдИ рдкрд░ рдмрдиреЗ рд╣реБрдП рдереЗ, рд▓реЗрдХрд┐рди рдЕрдм рдЖрдкрдХреЛ рдХрдИ рд╕реНрдЯреЛрд░ рд╡реНрдпреВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдФрд░ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╕рд╕реНрддрд╛ рдФрд░ рд╣рдВрд╕рдореБрдЦ
рд╕реНрд░реЛрдд рдореЙрдбрд▓ (рд╕рдВрдЧреНрд░рд╣ рдФрд░ рд╕реНрд╡рдпрдВ рдореЙрдбрд▓) рдХреЗ рд▓рд┐рдП рдЕрдореВрд░реНрддрддрд╛ рдХреА рдПрдХ рдФрд░ рдкрд░рдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрд╡рдпрдВ рд╣реИред рдФрд░ рдлрд┐рд░ рд╣рдореЗрдВ рдЙрдирд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ рдЕрдЧрд░ рдЖрдкрдХреЛ рдХрдИ рд╕реНрдЯреЛрд░ рд╡реНрдпреВ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдмрдЪрдд рдФрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдпрд╣рд╛рдБ рдХрдХреНрд╖рд╛рдПрдВ рд╕реНрд╡рдпрдВ рд╣реИрдВ:
- рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХреЛрдб / рд╕реНрдерд╛рдиреАрдп / рдПрд╕рдЬреЗ / рдЧреИрд▓рд░реА / рдореЙрдбрд▓ / Mysql4 / Transl.php
abstract class Sj_Gallery_Model_Mysql4_Translation extends Mage_Core_Model_Mysql4_Abstract
{
const TABLE_SUFIX = '_translation' ;
protected
$_translatableFields = array();
/**
* Standard resource model initialization
*
* @param string $mainTable
* @param string $idFieldName
* @return Mage_Core_Model_Mysql4_Abstract
*/
protected function _init($mainTable, $idFieldName)
{
if (empty($ this ->_translatableFields)) {
throw new Exception( 'You must specify translatable fields' );
}
$ this ->_setMainTable($mainTable, $idFieldName);
}
/**
* Retrieve select object for load object data
*
* @param string $field
* @param mixed $value
* @return Zend_Db_Select
*/
protected function _getLoadSelect($field, $value, $ object )
{
$tableName = $ this ->getMainTable();
$select = parent::_getLoadSelect($field, $value, $ object );
$select->joinLeft(
array( 'trnslt' => $ this ->getTranslationTableName()),
'trnslt.id = ' . $tableName . '.' . $field . '
AND trnslt.store_id = ' . ( int )$ object ->getStoreId(),
$ this ->getTranslatableColumns()
);
return $select;
}
/**
* Set multilang field names
*
* @param array $fields
* @return Sj_Gallery_Model_Mysql4_Translation
*/
public function setTranslatableFields($fields)
{
if (!is_array($fields)) {
return false ;
}
$ this ->_translatableFields = $fields;
return $ this ;
}
/**
* Get multilang field names
*
* @return array
*/
public function getTranslatableFields()
{
return $ this ->_translatableFields;
}
/**
* Get multilang columns
*
* @return array
*/
public function getTranslatableColumns()
{
$columns = $ this ->getTranslatableFields();
$columns[ 'translation_id' ] = 'trnslt.id' ;
$columns[ 'store_id' ] = 'trnslt.store_id' ;
return $columns;
}
/**
* Get translation table name
*
* @return string
*/
public function getTranslationTableName()
{
return $ this ->getMainTable() . self::TABLE_SUFIX;
}
/**
* Save object object data
*
* @param Mage_Core_Model_Abstract $object
* @return Mage_Core_Model_Mysql4_Abstract
*/
public function save(Mage_Core_Model_Abstract $ object )
{
$adapter = $ this ->_getWriteAdapter();
$adapter->beginTransaction();
try {
$data = $ object ->getData();
$translations = array();
foreach ($ this ->_translatableFields as $field) {
if (isset($data[$field])) {
$translations[$field] = $data[$field];
unset($data[$field]);
}
}
$onDuplicate = array_keys($translations);
$translations[ 'id' ] = $ object ->getId();
$translations[ 'store_id' ] = $ object ->getStoreId();
$adapter->insertOnDuplicate(
$ this ->getTranslationTableName(),
$translations,
array_combine($onDuplicate, $onDuplicate)
);
parent::save($ object );
$adapter->commit();
return $ this ;
} catch (Exception $e) {
$adapter->rollBack();
throw $e;
}
}
}
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
- рдПрдкреНрд▓рд┐рдХреЗрд╢рди / рдХреЛрдб / рд╕реНрдерд╛рдиреАрдп / рдПрд╕рдЬреЗ / рдЧреИрд▓рд░реА / рдореЙрдбрд▓ / Mysql4 / рдЕрдиреБрд╡рд╛рдж / рд╕рдВрдЧреНрд░рд╣ред рдПрдлрдкреА
abstract class Sj_Gallery_Model_Mysql4_Translation_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
{
protected function _initSelect()
{
$tableName = $ this ->getResource()->getMainTable();
$ this ->getSelect()
->from(array( 'main_table' => $tableName))
->joinLeft(array( 'trnslt' => $ this ->getResource()->getTranslationTableName()),
'trnslt.id = main_table.' . $ this ->getResource()->getIdFieldName(),
$ this ->getResource()->getTranslatableColumns()
);
return $ this ;
}
public function addStoreToFilter(Mage_Core_Model_Store $store)
{
$ this ->addFieldToFilter( 'trnslt.store_id' , $store->getId());
return $ this ;
}
}
* рдЗрд╕ рд╕реЛрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХреЗ рд╕рд╛рде рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЕрднреНрдпрд╛рд╕
рд╕рдм рдХреБрдЫ рдкрд╛рдЧрд▓ рд╕рд░рд▓ рд╣реИред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рд╕реЛрд░реНрд╕ рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╕рдордп, Mage_Core_Model_Mysql4_Abstract, рдЕрдм - Sj_Gallery_Model_Mysql4_Translation рд╕реЗ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред
рдФрд░ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреА рдЗрдВрд╕реНрдЯреЙрд▓ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдХ рддрд╛рд▓рд┐рдХрд╛ "_translation" рдХрд╛ рдПрдХ рдФрд░ рдкреНрд░рддреНрдпрдп рд╣реИ (рдпрд╣ рдорд╛рди рдПрдХ рд╡рд░реНрдЧ рд╕реНрдерд┐рд░ рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред
рдПрдХрдорд╛рддреНрд░ рдФрд░ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╣рдореЗрд╢рд╛ рд▓реЛрдб рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдореЙрдбрд▓ рдореЗрдВ store_id рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛!
рдПрдХ рд╕рдВрдЧреНрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
$collection = Mage::getModel( 'gallery/group' )->getCollection()
->addStoreToFilter(Mage::app()->getStore())
->addFieldToFilter( 'status' , 1)
->getItems();
* This source code was highlighted with Source Code Highlighter .
рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
$store = Mage::app()->getStore($request->getParam( 'store' ));
$group = Mage::getModel( 'gallery/group' )
->setStoreId($store->getId())
->load($id);
* This source code was highlighted with Source Code Highlighter .
рд╕реНрдерд╛рдкрд┐рдд рдореЙрдбреНрдпреВрд▓ рдлрд╝рд╛рдЗрд▓ рдЧреИрд▓рд░реА рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб:
$installer = $ this ;
$installer->startSetup();
$installer->run( "
CREATE TABLE {$this->getTable('gallery/gallery')} (
`gallery_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`filename` varchar(255) NOT NULL DEFAULT '',
`status` smallint(6) NOT NULL DEFAULT '0',
`created_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`gallery_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
" );
$installer->run( "
CREATE TABLE IF NOT EXISTS `{$this->getTable('gallery/group')}` (
`collection_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`file` varchar(255) NOT NULL DEFAULT '',
`status` tinyint(4) NOT NULL,
`created_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
PRIMARY KEY (`collection_id`),
KEY `gallery_group_idx` ( `collection_id` )
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
" );
$installer->run( "
CREATE TABLE `{$this->getTable('gallery/items_translation')}` (
`id` int(10) unsigned NOT NULL,
`title` varchar(255) NOT NULL DEFAULT '',
`description` varchar(20000) NOT NULL DEFAULT '',
`store_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`, `store_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
ALTER TABLE `{$this->getTable('gallery/items_translation')}`
ADD FOREIGN KEY (`id`) REFERENCES `{$this->getTable('gallery/gallery')}` (`gallery_id`)
ON DELETE CASCADE;
CREATE TABLE `{$this->getTable('gallery/group_translation')}` (
`id` int(10) unsigned NOT NULL,
`title` varchar(255) NOT NULL DEFAULT '',
`description` varchar(20000) NOT NULL DEFAULT '',
`store_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`, `store_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
ALTER TABLE `{$this->getTable('gallery/group_translation')}`
ADD FOREIGN KEY (`id`) REFERENCES `{$this->getTable('gallery/group')}` (`collection_id`)
ON DELETE CASCADE;
" );
$installer->endSetup();
* This source code was highlighted with Source Code Highlighter .
рд╕реВрддреНрд░реЛрдВ рдХреЛ
рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рдкреБрдирд╢реНрдЪ: рдореИрдВрдиреЗ рдкреВрд░реНрдг i18n рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдФрд░ рдореБрдЭреЗ рд╕рдорд╛рдзрд╛рди рдкрд╕рдВрдж рдЖрдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреЛрд░реНрдЯреЗрдмрд▓ рдФрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИред рдпрд╣ рдорд▓реНрдЯреА рд╕реНрдЯреЛрд░ рд╡реНрдпреВ рдХреЗ рд╕рд╛рде рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдФрд░ рднреА рдмреЗрд╣рддрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдм рдХреБрдЫ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░реЗрдВ, рдПрдХ рд╕реЗрдЯрдЕрдк рдореЙрдбрд▓ рдмрдирд╛рдПрдВ, рдЬреЛ рдЦреБрдж рдЕрддрд┐рд░рд┐рдХреНрдд рдЯреЗрдмрд▓ рдмрдирд╛рдПрдВрдЧреЗ, рдЙрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдирд╛рдо рдбрд╛рд▓реЗрдВрдЧреЗ рдЬреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ рд╕реНрдЯреЛрд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╕реЛрд░реНрд╕ рдХреЛрдб рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред