Просмотр исходного кода

[DOCUMENTATION] Russian:
- Sync

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@15726 44c647ce-9c0f-0410-b52a-842ac1e357ba

irina 16 лет назад
Родитель
Сommit
b014354850
39 измененных файлов с 945 добавлено и 650 удалено
  1. 1 1
      documentation/manual/ru/module_specs/Zend_Config_Ini.xml
  2. 4 4
      documentation/manual/ru/module_specs/Zend_Config_Xml.xml
  3. 25 35
      documentation/manual/ru/module_specs/Zend_Controller-ActionController.xml
  4. 4 4
      documentation/manual/ru/module_specs/Zend_Controller-ActionHelpers-ActionStack.xml
  5. 21 23
      documentation/manual/ru/module_specs/Zend_Controller-ActionHelpers-AutoComplete.xml
  6. 12 20
      documentation/manual/ru/module_specs/Zend_Controller-ActionHelpers-ContextSwitch.xml
  7. 6 5
      documentation/manual/ru/module_specs/Zend_Controller-ActionHelpers-FlashMessenger.xml
  8. 65 16
      documentation/manual/ru/module_specs/Zend_Controller-ActionHelpers-Json.xml
  9. 8 11
      documentation/manual/ru/module_specs/Zend_Controller-ActionHelpers-Redirector.xml
  10. 24 33
      documentation/manual/ru/module_specs/Zend_Controller-ActionHelpers-ViewRenderer.xml
  11. 23 31
      documentation/manual/ru/module_specs/Zend_Controller-ActionHelpers.xml
  12. 30 28
      documentation/manual/ru/module_specs/Zend_Controller-Basics.xml
  13. 11 12
      documentation/manual/ru/module_specs/Zend_Controller-Dispatcher.xml
  14. 25 29
      documentation/manual/ru/module_specs/Zend_Controller-Exceptions.xml
  15. 18 21
      documentation/manual/ru/module_specs/Zend_Controller-FrontController.xml
  16. 59 53
      documentation/manual/ru/module_specs/Zend_Controller-Migration.xml
  17. 14 19
      documentation/manual/ru/module_specs/Zend_Controller-Modular.xml
  18. 3 1
      documentation/manual/ru/module_specs/Zend_Controller-Plugins-ActionStack.xml
  19. 13 18
      documentation/manual/ru/module_specs/Zend_Controller-Plugins-ErrorHandler.xml
  20. 12 13
      documentation/manual/ru/module_specs/Zend_Controller-Plugins.xml
  21. 30 18
      documentation/manual/ru/module_specs/Zend_Controller-QuickStart.xml
  22. 23 23
      documentation/manual/ru/module_specs/Zend_Controller-Request.xml
  23. 14 19
      documentation/manual/ru/module_specs/Zend_Controller-Response.xml
  24. 191 0
      documentation/manual/ru/module_specs/Zend_Controller-Router-Route-Chain.xml
  25. 11 77
      documentation/manual/ru/module_specs/Zend_Controller-Router-Route-Hostname.xml
  26. 13 23
      documentation/manual/ru/module_specs/Zend_Controller-Router-Route-Regex.xml
  27. 3 2
      documentation/manual/ru/module_specs/Zend_Controller-Router-Route-Static.xml
  28. 201 23
      documentation/manual/ru/module_specs/Zend_Controller-Router-Route.xml
  29. 52 59
      documentation/manual/ru/module_specs/Zend_Controller-Router.xml
  30. 1 1
      documentation/manual/ru/module_specs/Zend_Db_Adapter.xml
  31. 1 1
      documentation/manual/ru/module_specs/Zend_Db_Profiler.xml
  32. 3 3
      documentation/manual/ru/module_specs/Zend_Debug.xml
  33. 1 1
      documentation/manual/ru/module_specs/Zend_Dom-Query.xml
  34. 2 2
      documentation/manual/ru/module_specs/Zend_Form-QuickStart.xml
  35. 1 1
      documentation/manual/ru/module_specs/Zend_Search_Lucene-JavaLucene.xml
  36. 2 2
      documentation/manual/ru/module_specs/Zend_Search_Lucene-Queries.xml
  37. 16 16
      documentation/manual/ru/module_specs/Zend_Search_Lucene-QueryLanguage.xml
  38. 1 1
      documentation/manual/ru/module_specs/Zend_View-Introduction.xml
  39. 1 1
      documentation/manual/ru/module_specs/Zend_View-Scripts.xml

+ 1 - 1
documentation/manual/ru/module_specs/Zend_Config_Ini.xml

@@ -57,7 +57,7 @@ $config = new Zend_Config_Ini('/path/to/config.ini',
             более сложных случаях. Допустим, конфигурационные данные
             находятся в файле <code>/path/to/config.ini</code>:
         </para>
-        <programlisting role="ini"><![CDATA[
+        <programlisting language="ini"><![CDATA[
 ; Конфигурационные данные производственного сайта
 [production]
 webhost                  = www.example.com

+ 4 - 4
documentation/manual/ru/module_specs/Zend_Config_Xml.xml

@@ -39,7 +39,7 @@
             более сложных случаях. Допустим, конфигурационные данные
             находятся в файле <code>/path/to/config.xml</code>:
         </para>
-        <programlisting role="xml"><![CDATA[
+        <programlisting language="xml"><![CDATA[
 <?xml version="1.0"?>
 <configdata>
     <production>
@@ -89,7 +89,7 @@ echo $config->database->params->dbname; // выведет "dbname"
             атрибутов в родительский узел, они потом будут преобразованы в
             потомки этого узла:
         </para>
-        <programlisting role="xml"><![CDATA[
+        <programlisting language="xml"><![CDATA[
 <?xml version="1.0"?>
 <configdata>
     <production webhost="www.example.com">
@@ -110,7 +110,7 @@ echo $config->database->params->dbname; // выведет "dbname"
             тегов дважды. Вы просто создаете пустой тег, значение которого
             содержится в атрибуте <code>value</code>:
         </para>
-        <programlisting role="xml"><![CDATA[
+        <programlisting language="xml"><![CDATA[
 <?xml version="1.0"?>
 <configdata>
     <production>
@@ -146,7 +146,7 @@ echo $config->database->params->dbname; // выведет "dbname"
             первого параметра и должна начинаться с символов
             <code>'&lt;?xml'</code>:
         </para>
-        <programlisting role="xml"><![CDATA[
+        <programlisting language="xml"><![CDATA[
 $string = <<<EOT
 <?xml version="1.0"?>
 <config>

+ 25 - 35
documentation/manual/ru/module_specs/Zend_Controller-ActionController.xml

@@ -1,10 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.controller.action">
     <title>Контроллеры действий</title>
 
     <sect2 id="zend.controller.action.introduction">
         <title>Введение</title>
         <para>
-            <code>Zend_Controller_Action</code> - абстрактный класс,
+            <classname>Zend_Controller_Action</classname> - абстрактный класс,
             который можно использовать для реализации контроллеров действий
             для последующего их использования с фронт-контроллером при
             разработке сайта, основанного на паттерне Model-View-Controller
@@ -12,13 +14,13 @@
         </para>
 
         <para>
-            Для того, чтобы использовать <code>Zend_Controller_Action</code>,
+            Для того, чтобы использовать <classname>Zend_Controller_Action</classname>,
             нужно создать его подкласс в своей действующей директории
             контроллеров (или расширить его для создания своего базового класса
             контроллеров действий). Работа с ним в основном сводится к
             созданию его подкласса и написании методов действий, соответствующих
             различным действиям, которые должен обрабатывать этот контроллер.
-            Маршрутизатор и диспетчер компоненты <code>Zend_Controller</code>
+            Маршрутизатор и диспетчер компоненты <classname>Zend_Controller</classname>
             будут считать за методы действий все методы в классе
             контроллера с именем, заканчивающимся на 'Action'.
         </para>
@@ -40,8 +42,7 @@ class FooController extends Zend_Controller_Action
         // делает что-нибудь
     }
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Приведенный выше класс <code>FooController</code> (контроллер
@@ -88,8 +89,7 @@ class FooController extends Zend_Controller_Action
             ->setParam('noViewRenderer', true);
     }
 }
-]]>
-            </programlisting>
+]]></programlisting>
 
             <para>
                 <code>initView()</code>, <code>getViewScript()</code>,
@@ -114,8 +114,7 @@ class FooController extends Zend_Controller_Action
         $this->_helper->viewRenderer->setNoRender();
     }
 }
-]]>
-            </programlisting>
+]]></programlisting>
 
             <para>
                 Основные причины для отключения <code>ViewRenderer</code> - вам
@@ -164,15 +163,14 @@ class FooController extends Zend_Controller_Action
         ));
     }
 }
-]]>
-        </programlisting>
+]]></programlisting>
     </sect2>
 
     <sect2 id="zend.controller.action.prepostdispatch">
         <title>Перехватчики Pre- и Post-Dispatch</title>
 
         <para>
-            <code>Zend_Controller_Action</code> определяет два метода, которые
+            <classname>Zend_Controller_Action</classname> определяет два метода, которые
             вызываются до и после требуемого действия,
             <code>preDispatch()</code> и <code>postDispatch()</code>. Они
             могут быть полезны в различных случаях - например, проверка
@@ -210,8 +208,7 @@ class FooController extends Zend_Controller_Action
                 <programlisting language="php"><![CDATA[
 $this->getResponse()->setHeader('Content-Type', 'text/xml');
 $this->getResponse()->appendBody($content);
-]]>
-                </programlisting>
+]]></programlisting>
             </listitem>
 
             <listitem>
@@ -262,8 +259,7 @@ if ($this->_hasParam('id') {
 } else {
     $id = 1;
 }
-]]>
-                    </programlisting>
+]]></programlisting>
                 </note>
             </listitem>
         </itemizedlist>
@@ -284,7 +280,7 @@ if ($this->_hasParam('id') {
         </note>
 
         <para>
-            <code>Zend_Controller_Action</code> предоставляет простейший и
+            <classname>Zend_Controller_Action</classname> предоставляет простейший и
             гибкий механизм интеграции видов. Два метода осуществляют это:
             <code>initView()</code> и <code>render()</code>. Первый метод
             выполняет отложенную загрузку открытого свойства <code>$view</code>,
@@ -302,9 +298,9 @@ if ($this->_hasParam('id') {
                 извлечения объекта вида, но этот объект может быть
                 инициализирован в любое время. По умолчанию
                 <code>initView()</code> заполняет свойство <code>$view</code>
-                объектом <code>Zend_View</code>, но может также использоваться
+                объектом <classname>Zend_View</classname>, но может также использоваться
                 любой класс, реализующий интерфейс
-                <code>Zend_View_Interface</code>. Если <code>$view</code> уже
+                <classname>Zend_View_Interface</classname>. Если <code>$view</code> уже
                 инициализирован, то просто возвращается это свойство.
             </para>
 
@@ -323,8 +319,7 @@ applicationOrModule/
                 index.phtml
         helpers/
         filters/
-]]>
-            </programlisting>
+]]></programlisting>
 
             <para>
                 Другими словами, предполагается, что скрипты вида находятся в
@@ -349,8 +344,7 @@ applicationOrModule/
 string render(string $action = null,
               string $name = null,
               bool $noController = false);
-]]>
-            </programlisting>
+]]></programlisting>
 
             <para>
                 <code>render()</code> рендерит скрипт вида. Если не были
@@ -415,8 +409,7 @@ class MyController extends Zend_Controller_Action
         $this->render();
     }
 }
-]]>
-            </programlisting>
+]]></programlisting>
         </sect3>
     </sect2>
 
@@ -425,7 +418,7 @@ class MyController extends Zend_Controller_Action
 
         <para>
             Кроме аксессоров и методов интеграции видов,
-            <code>Zend_Controller_Action</code> имеет несколько сервисных
+            <classname>Zend_Controller_Action</classname> имеет несколько сервисных
             методов для выполнения распространенных зачач в методах действий
             (или в методах pre- и post-dispatch).
         </para>
@@ -508,7 +501,7 @@ class MyController extends Zend_Controller_Action
 
         <para>
             Задумано, что в порядке создания контроллеров действий должны
-            создаваться подклассы от <code>Zend_Controller_Action</code>.
+            создаваться подклассы от <classname>Zend_Controller_Action</classname>.
             Как минимум, вам нужно будет определить методы действий, которые
             может вызывать контроллер.
         </para>
@@ -518,7 +511,7 @@ class MyController extends Zend_Controller_Action
             можете также обнаружить, что большинство установок или сервисных
             методов повторяются в ваших различных контроллерах. В этом случае
             создание общего базового контроллера, расширяющего
-            <code>Zend_Controller_Action</code>, может решить проблему
+            <classname>Zend_Controller_Action</classname>, может решить проблему
             избыточности.
         </para>
 
@@ -535,7 +528,7 @@ class MyController extends Zend_Controller_Action
 
             <para>
                 По умолчанию этот метод бросает исключение
-                <code>Zend_Controller_Action_Exception</code>, означающее, что
+                <classname>Zend_Controller_Action_Exception</classname>, означающее, что
                 требуемый метод не найден в контроллере. Если требуемый метод
                 заканчивается строкой 'Action', то предполагается, что было
                 запрошено действие и оно не существует; такая ошибка приводит к
@@ -567,8 +560,7 @@ class MyController extends Zend_Controller_Action
                             500);
     }
 }
-]]>
-            </programlisting>
+]]></programlisting>
 
             <para>
                 Другая возможность состоит в том, что вы можете
@@ -598,8 +590,7 @@ class MyController extends Zend_Controller_Action
                             500);
     }
 }
-]]>
-            </programlisting>
+]]></programlisting>
         </example>
 
         <para>
@@ -628,8 +619,7 @@ abstract class My_Base_Controller extends Zend_Controller_Action
         return $this->view;
     }
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Надеемся, из написанного в этом разделе вы смогли увидеть, насколько

+ 4 - 4
documentation/manual/ru/module_specs/Zend_Controller-ActionHelpers-ActionStack.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect3 id="zend.controller.actionhelpers.actionstack">
     <title>ActionStack</title>
 
@@ -51,8 +53,7 @@ class FooController extends Zend_Controller_Action
         $this->_helper->actionStack('bat', 'bar');
     }
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
     </example>
 
@@ -90,8 +91,7 @@ class FooController extends Zend_Controller_Action
         $this->_helper->actionStack($request);
     }
 }
-]]>
-        </programlisting>
+]]></programlisting>
     </example>
 </sect3>
 <!--

+ 21 - 23
documentation/manual/ru/module_specs/Zend_Controller-ActionHelpers-AutoComplete.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect3 id="zend.controller.actionhelpers.autocomplete">
     <title>AutoComplete</title>
 
@@ -43,8 +45,7 @@ class FooController extends Zend_Controller_Action
                                   ->prepareAutoCompletion($data);
     }
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
     <para>
         По умолчанию этот помощник делает следующее:
@@ -139,8 +140,7 @@ class FooController extends Zend_Controller_Action
         <programlisting language="php"><![CDATA[
 // в контроллере действий:
 $this->_helper->autoCompleteDojo($data);
-]]>
-        </programlisting>
+]]></programlisting>
 
         <example id="zend.controller.actionhelpers.autocomplete.dojo.example1">
             <title>Автодополнение с Dojo и Zend MVC</title>
@@ -166,7 +166,7 @@ $this->_helper->autoCompleteDojo($data);
                 TestNameReadStore.js со следующим содержимым:
             </para>
 
-            <programlisting role="javascript"><![CDATA[
+            <programlisting language="javascript"><![CDATA[
 dojo.provide("custom.TestNameReadStore");
 dojo.declare("custom.TestNameReadStore", dojox.data.QueryReadStore, {
     fetch:function (request) {
@@ -174,8 +174,7 @@ dojo.declare("custom.TestNameReadStore", dojox.data.QueryReadStore, {
         return this.inherited("fetch", arguments);
     }
 });
-]]>
-</programlisting>
+]]></programlisting>
 
             <para>
                 Этот класс просто наследует от класса QueryReadStore фреймворка
@@ -218,8 +217,7 @@ class TestController extends Zend_Controller_Action
         return $this->_form;
     }
 }
-]]>
-            </programlisting>
+]]></programlisting>
 
             <para>
                 Здесь мы просто создаем форму с методами 'test' и 'go'. Метод
@@ -272,8 +270,7 @@ class TestController extends Zend_Controller_Action
         $this->_helper->autoCompleteDojo($matches);
     }
 }
-]]>
-            </programlisting>
+]]></programlisting>
 
             <para>
                 В методе <code>autocompleteAction()</code> мы делаем несколько
@@ -295,23 +292,24 @@ class TestController extends Zend_Controller_Action
             </para>
 
             <programlisting language="php"><![CDATA[
-<? // установка хранилища данных: ?>
+<?php // установка хранилища данных: ?>
 <div dojoType="custom.TestNameReadStore" jsId="testStore"
-    url="<?= $this->baseUrl() ?>/unit-test/autocomplete/format/ajax"
+    url="<?php echo $this->baseUrl() ?>/unit-test/autocomplete/format/ajax"
     requestMethod="get"></div>
 
-<? // рендеринг формы: ?>
-<?= $this->form ?>
+<?php // рендеринг формы: ?>
+<?php echo $this->form ?>
 
-<? // подключение css для Dojo в HTML-заголовке: ?>
-<? $this->headStyle()->captureStart() ?>
-@import "<?= $this->baseUrl() ?>/javascript/dijit/themes/tundra/tundra.css";
-@import "<?= $this->baseUrl() ?>/javascript/dojo/resources/dojo.css";
-<? $this->headStyle()->captureEnd() ?>
+<? // подключение CSS для Dojo в HTML-заголовке: ?>
+<?php $this->headStyle()->captureStart() ?>
+@import "<?php echo $this->baseUrl()
+?>/javascript/dijit/themes/tundra/tundra.css";
+@import "<?php echo $this->baseUrl() ?>/javascript/dojo/resources/dojo.css";
+<?php $this->headStyle()->captureEnd() ?>
 
-<? // подключение javascript в HTML-заголовке, включая все
+<?php // подключение javascript в HTML-заголовке, включая все
    // необходимые библиотеки для Dojo: ?>
-<? $this->headScript()
+<?php $this->headScript()
         ->setAllowArbitraryAttributes(true)
         ->appendFile($this->baseUrl() . '/javascript/dojo/dojo.js',
             'text/javascript',
@@ -323,7 +321,7 @@ dojo.require("dojo.parser");
 dojo.require("dojox.data.QueryReadStore");
 dojo.require("dijit.form.ComboBox");
 dojo.require("custom.TestNameReadStore");
-<? $this->headScript()->captureEnd() ?>
+<?php $this->headScript()->captureEnd() ?>
 ]]></programlisting>
 
             <para>

+ 12 - 20
documentation/manual/ru/module_specs/Zend_Controller-ActionHelpers-ContextSwitch.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect3 id="zend.controller.actionhelpers.contextswitch">
     <title>ContextSwitch и AjaxContext</title>
 
@@ -65,8 +67,7 @@ class NewsController extends Zend_Controller_Action
     {
     }
 }
-]]>
-    </programlisting>
+]]></programlisting>
 
     <para>
         Предположим, нам нужно, чтобы действие <code>listAction()</code> было
@@ -87,8 +88,7 @@ class NewsController extends Zend_Controller_Action
 
     // ...
 }
-]]>
-    </programlisting>
+]]></programlisting>
 
     <para>
         Этим будет:
@@ -169,8 +169,7 @@ class NewsController extends Zend_Controller_Action
 
                 <programlisting language="php"><![CDATA[
 $this->_helper->contextSwitch()->setAutoJsonSerialization(false);
-]]>
-                </programlisting>
+]]></programlisting>
             </listitem>
 
             <listitem>
@@ -334,8 +333,7 @@ class FooController extends Zend_Controller_Action
     {
     }
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Предположим, что мы хотим добавить контекст XML к действию 'list',
@@ -354,8 +352,7 @@ class FooController extends Zend_Controller_Action
              ->initContext();
     }
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Мы можем также просто определить свойство <code>$contexts</code>
@@ -375,8 +372,7 @@ class FooController extends Zend_Controller_Action
         $this->_helper->contextSwitch()->initContext();
     }
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Этот способ менее трудоемкий, но заключает в себе больше
@@ -479,8 +475,7 @@ class NewsController extends Zend_Controller_Action
         $this->_helper->contextSwitch()->initContext();
     }
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             В некоторых случаях может потребоваться принудительное использование
@@ -491,8 +486,7 @@ class NewsController extends Zend_Controller_Action
 
         <programlisting language="php"><![CDATA[
 $contextSwitch->initContext('xml');
-]]>
-        </programlisting>
+]]></programlisting>
     </sect4>
 
     <sect4 id="zend.controller.actionhelpers.contextswitch.misc">
@@ -517,8 +511,7 @@ $contextSwitch->initContext('xml');
                 <programlisting language="php"><![CDATA[
 $contextSwitch->setAutoJsonSerialization(false);
 $contextSwitch->initContext();
-]]>
-                </programlisting>
+]]></programlisting>
 
                 <para>
                     Вы можете получить значение этого флага через метод
@@ -794,8 +787,7 @@ class CommentController extends Zend_Controller_Action
         // переменным вида и эти значения будет возвращены в формате JSON.
     }
 }
-]]>
-            </programlisting>
+]]></programlisting>
 
             <para>
                 На клиентской стороне посредством AJAX-библиотеки производятся

+ 6 - 5
documentation/manual/ru/module_specs/Zend_Controller-ActionHelpers-FlashMessenger.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect3 id="zend.controller.actionhelpers.flashmessenger">
     <title>FlashMessenger</title>
 
@@ -8,9 +10,9 @@
             которые нужно отобразить пользователю при следующем запросе.
             Для хранения сообщений до следующего запроса
             <code>FlashMessenger</code> использует
-            <code>Zend_Session_Namespace</code> . Как правило, лучше всего
-            использовать тот <code>Zend_Session</code> или
-            <code>Zend_Session_Namespace</code>, который вы инициализировали с
+            <classname>Zend_Session_Namespace</classname> . Как правило, лучше всего
+            использовать тот <classname>Zend_Session</classname> или
+            <classname>Zend_Session_Namespace</classname>, который вы инициализировали с
             помощью <code>Zend_Session::start()</code> в своем файле загрузки.
             (За более подробной информацией об использовании см.
             <link linkend="zend.session.advanced_usage.starting_a_session">Zend Session</link>).
@@ -61,7 +63,6 @@ class SomeController extends Zend_Controller_Action
         $this->render();
     }
 }
-]]>
-        </programlisting>
+]]></programlisting>
     </sect4>
 </sect3>

+ 65 - 16
documentation/manual/ru/module_specs/Zend_Controller-ActionHelpers-Json.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect3 id="zend.controller.actionhelpers.json">
     <title>JSON</title>
 
@@ -17,6 +19,19 @@
                 Отключает макеты, если они включены.
         </para></listitem>
 
+        <listitem>
+            <para>
+                Опционально в качестве второго аргумента можно передавать
+                массив опций для <code>Zend_Json::encode()</code>.
+                Этот масив опций позволяет включать макеты и кодирование
+                с использованием <classname>Zend_Json_Expr</classname>.
+            </para>
+
+            <programlisting language="php"><![CDATA[
+$this->_helper->json($data, array('enableJsonExprFinder' => true));
+]]></programlisting>
+        </listitem>
+
         <listitem><para>
                 Отключает ViewRenderer, если он включен.
         </para></listitem>
@@ -60,27 +75,61 @@ class FooController extends Zend_Controller_Action
     </programlisting>
 
     <note>
-        <title>Использование с макетами</title>
+        <title>Использование макетов</title>
 
         <para>
-            Для того, чтобы использовать отдельные макеты для JSON-ответов
-            (например, для того, чтобы помещать JSON-ответы в некоторый
-            контекст), все методы в помощнике JSON принимают второй опциональный
-            параметр - флаг для включения и отключения макетов. Передача
-            значения <code>true</code> сохранит макеты включенными:
+            Если вы имеете отдельный макет для ответов JSON (возможно, для того,
+            чтобы включить ответ JSON в некоторый контекст), то на этот случай
+            все методы в помощнике JSON принимает второй, опциональный
+            аргумент - флаг для включения/отключения макетов. Передача булевого
+            значения <code>true</code> позволит оставить макеты включенными:
         </para>
 
         <programlisting language="php"><![CDATA[
-class FooController extends Zend_Controller_Action
-{
-    public function barAction()
-    {
-        // Получение данных в формате json, макеты остаются включенными
-        $json = $this->_helper->json->encodeJson($data, true);
-    }
-}
-]]>
-        </programlisting>
+$this->_helper->json($data, true);
+]]></programlisting>
+
+        <para>
+            Вы можете также передавать массив через второй параметр.
+            Этот массив может содержать набор опций, включая опцию
+            <code>keepLayouts</code>:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$this->_helper->json($data, array('keepLayouts' => true);
+]]></programlisting>
+    </note>
+
+    <note>
+        <title>Включение кодирования через Zend_Json_Expr</title>
+
+        <para>
+            <classname>Zend_Json::encode()</classname> позволяет закодировывать
+            "родные" выражения JSON с использованием объектов
+            <code>Zend_Json_Expr</code>. Эта опция по умолчанию отключена.
+            Для того, чтобы включить эту опцию, передавайте
+            булево значение <code>true</code> через опцию
+            <code>enableJsonExprFinder</code>:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$this->_helper->json($data, array('enableJsonExprFinder' => true);
+]]></programlisting>
+
+        <para>
+            При использовании этой опции вы <emphasis>должны</emphasis>
+            передавать массив в качестве второго параметра. Это также
+            позволяет комбинировать опции друг с другом - например, с опцией
+            <code>keepLayouts</code>. Все эти опции потом передаются
+            <classname>Zend_Json::encode()</classname>.
+        </para>
+
+        <programlisting language="php"><![CDATA[
+$this->_helper->json($data, array(
+    'enableJsonExprFinder' => true,
+    'keepLayouts'          => true,
+));
+]]></programlisting>
     </note>
 </sect3>
 <!--

+ 8 - 11
documentation/manual/ru/module_specs/Zend_Controller-ActionHelpers-Redirector.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect3 id="zend.controller.actionhelpers.redirector">
     <title>Redirector</title>
 
@@ -138,7 +140,7 @@
             <para>
                 В этом примере переопределяются несколько опций, включая
                 код статуса HTTP, используемого при перенаправлении
-                ('303'), и определение URL, используемое по умолчанию при
+                (303), и определение URL, используемое по умолчанию при
                 перенаправлении.
             </para>
 
@@ -176,8 +178,7 @@ class SomeController extends Zend_Controller_Action
         return; // никогда не будет достигнуто
     }
 }
-]]>
-            </programlisting>
+]]></programlisting>
         </example>
 
         <example id="zend.controller.actionhelper.redirector.basicusage.example-2">
@@ -215,8 +216,7 @@ class AlternativeController extends Zend_Controller_Action
         // т.к. по умолчанию производится переход и завершение выполнения
         return;
     }
-}]]>
-            </programlisting>
+]]></programlisting>
         </example>
 
         <example id="zend.controller.actionhelper.redirector.basicusage.example-3">
@@ -263,8 +263,7 @@ class ForwardController extends Zend_Controller_Action
                                        );
     }
 }
-]]>
-            </programlisting>
+]]></programlisting>
         </example>
 
         <example id="zend.controller.actionhelper.redirector.basicusage.example-4">
@@ -286,8 +285,7 @@ $route = new Zend_Controller_Router_Route(
           'action' => 'view')
 );
 $router->addRoute('blogArchive', $route);
-]]>
-            </programlisting>
+]]></programlisting>
 
             <para>
                 При заданном массиве, в котором year (год), month (месяц), и day
@@ -326,8 +324,7 @@ class BlogAdminController extends Zend_Controller_Action
         );
     }
 }
-]]>
-            </programlisting>
+]]></programlisting>
         </example>
     </sect4>
 </sect3>

+ 24 - 33
documentation/manual/ru/module_specs/Zend_Controller-ActionHelpers-ViewRenderer.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect3 id="zend.controller.actionhelpers.viewrenderer">
     <title>ViewRenderer</title>
 
@@ -94,8 +96,7 @@ $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer();
 $viewRenderer->setView($view)
              ->setViewSuffix('php');
 Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
-]]>
-                    </programlisting>
+]]></programlisting>
                 </listitem>
 
                 <listitem>
@@ -105,11 +106,11 @@ Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
                     </para>
 
                     <programlisting language="php"><![CDATA[
-$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
+$viewRenderer =
+    Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
 $viewRenderer->setView($view)
              ->setViewSuffix('php');
-]]>
-                    </programlisting>
+]]></programlisting>
                 </listitem>
             </itemizedlist>
         </note>
@@ -128,8 +129,7 @@ $viewRenderer->setView($view)
 
         <programlisting language="php"><![CDATA[
 Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Во время инстанцирования контроллера действий производится вызов
@@ -175,8 +175,7 @@ class Foo_BarController extends Zend_Controller_Action
 
 // в одном из ваших скриптов вида:
 $this->foo(); // вызывает Foo_View_Helper_Foo::foo()
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             <code>ViewRenderer</code> также определяет несколько аксессоров для
@@ -294,8 +293,7 @@ $this->_helper->viewRenderer('foo');
 // Рендеринг form.phtml в сегмент ответа 'html' в обход
 // поддиректории:
 $this->_helper->viewRenderer('form', 'html', true);
-]]>
-                </programlisting>
+]]></programlisting>
 
                 <note><para>
                         <code>setRender()</code> и <code>direct()</code> в
@@ -318,8 +316,7 @@ $view    = new Zend_View(array('encoding' => 'UTF-8'));
 $options = array('noController' => true, 'neverRender' => true);
 $viewRenderer =
     new Zend_Controller_Action_Helper_ViewRenderer($view, $options);
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             <code>ViewRenderer</code> имеет несколько дополнительных методов для
@@ -466,8 +463,8 @@ $viewRenderer =
 
                     <para>
                         Внутри себя инфлектор использует фильтры
-                        <code>Zend_Filter_Word_CamelCaseToDash</code> и
-                        <code>Zend_Filter_StringToLower</code>.
+                        <classname>Zend_Filter_Word_CamelCaseToDash</classname> и
+                        <classname>Zend_Filter_StringToLower</classname>.
                     </para>
                 </listitem>
 
@@ -483,9 +480,9 @@ $viewRenderer =
 
                     <para>
                         Внутри себя инфлектор использует фильтры
-                        <code>Zend_Filter_Word_CamelCaseToDash</code>,
-                        <code>Zend_Filter_Word_UnderscoreToSeparator</code> и
-                        <code>Zend_Filter_StringToLower</code>.
+                        <classname>Zend_Filter_Word_CamelCaseToDash</classname>,
+                        <classname>Zend_Filter_Word_UnderscoreToSeparator</classname> и
+                        <classname>Zend_Filter_StringToLower</classname>.
                     </para>
                 </listitem>
 
@@ -502,9 +499,9 @@ $viewRenderer =
 
                     <para>
                         Внутри себя инфлектор использует фильтры
-                        <code>Zend_Filter_Word_CamelCaseToDash</code>,
-                        <code>Zend_Filter_PregReplace</code> и
-                        <code>Zend_Filter_StringToLower</code>.
+                        <classname>Zend_Filter_Word_CamelCaseToDash</classname>,
+                        <classname>Zend_Filter_PregReplace</classname> и
+                        <classname>Zend_Filter_StringToLower</classname>.
                     </para>
                 </listitem>
             </itemizedlist>
@@ -676,8 +673,7 @@ class Foo_BarController extends Zend_Controller_Action
         $this->_redirect('/index');
     }
 }
-]]>
-            </programlisting>
+]]></programlisting>
         </example>
 
         <note>
@@ -745,8 +741,7 @@ class Bar_BatController extends Zend_Controller_Action
         $this->_helper->viewRenderer->setNoRender();
     }
 }
-]]>
-            </programlisting>
+]]></programlisting>
         </example>
 
         <note>
@@ -803,8 +798,7 @@ class Foo_BarController extends Zend_Controller_Action
     }
 
 }
-]]>
-            </programlisting>
+]]></programlisting>
         </example>
 
         <example id="zend.controller.actionhelper.viewrenderer.basicusage.example-4">
@@ -837,8 +831,7 @@ class Foo_BarController extends Zend_Controller_Action
         $view->setEscape('htmlspecialchars');
     }
 }
-]]>
-            </programlisting>
+]]></programlisting>
         </example>
     </sect4>
 
@@ -885,8 +878,7 @@ $viewRenderer->setViewBasePathSpec('/opt/vendor/templates')
              ->setViewScriptPathNoControllerSpec(':action.:suffix')
              ->setViewSuffix('tpl');
 Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
-]]>
-            </programlisting>
+]]></programlisting>
         </example>
 
         <example id="zend.controller.actionhelper.viewrenderer.advancedusage.example-2">
@@ -919,8 +911,7 @@ class SearchController extends Zend_Controller_Action
         // рендеринг скрипта вида
     }
 }
-]]>
-            </programlisting>
+]]></programlisting>
         </example>
     </sect4>
 </sect3>

+ 23 - 31
documentation/manual/ru/module_specs/Zend_Controller-ActionHelpers.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.controller.actionhelpers" xmlns:xi="http://www.w3.org/2001/XInclude">
     <title>Помощники действий</title>
 
@@ -7,7 +9,7 @@
             Помощники действий (action helpers) дают разработчикам возможность
             добавлять функционал во время выполнения или по требованию в любые
             контроллеры действий, которые наследуют от
-            <code>Zend_Controller_Action</code>.
+            <classname>Zend_Controller_Action</classname>.
             Помощники действий помогают снизить необходимость в наследовании от
             абстрактного контроллера действий при добавлении общего
             функционала в контроллер действий.
@@ -19,7 +21,7 @@
             подобную той, которая используется в
             <link linkend="zend.view.helpers">Zend_View_Helper</link> и
             <link linkend="zend.controller.plugins">Zend_Controller_Plugin</link>.
-            Помощники действий (как и <code>Zend_View_Helper</code>) могут быть
+            Помощники действий (как и <classname>Zend_View_Helper</classname>) могут быть
             загружены и вызваны по требованию, либо инстанцироваться во время
             запроса (начальной загрузки) или создания контроллера действий
             (init()). Для того, чтобы лучше разобраться с этим, см. ниже раздел
@@ -38,7 +40,7 @@
 
         <para>
             Брокер помощников хранится как член <code>$_helper</code> класса
-            <code>Zend_Controller_Action</code>; используйте брокер для
+            <classname>Zend_Controller_Action</classname>; используйте брокер для
             получения или вызова помощников. Методы для этого включают в себя:
         </para>
 
@@ -52,8 +54,7 @@
                 <programlisting language="php"><![CDATA[
 $flashMessenger = $this->_helper->getHelper('FlashMessenger');
 $flashMessenger->addMessage('We did something in the last request');
-]]>
-                </programlisting>
+]]></programlisting>
             </listitem>
 
             <listitem>
@@ -66,8 +67,7 @@ $flashMessenger->addMessage('We did something in the last request');
                 <programlisting language="php"><![CDATA[
 $flashMessenger = $this->_helper->FlashMessenger;
 $flashMessenger->addMessage('We did something in the last request');
-]]>
-                </programlisting>
+]]></programlisting>
             </listitem>
 
             <listitem>
@@ -81,8 +81,7 @@ $flashMessenger->addMessage('We did something in the last request');
 
                 <programlisting language="php"><![CDATA[
 $this->_helper->FlashMessenger('We did something in the last request');
-]]>
-                </programlisting>
+]]></programlisting>
             </listitem>
         </itemizedlist>
 
@@ -105,7 +104,7 @@ $this->_helper->FlashMessenger('We did something in the last request');
         <title>Брокер помощников</title>
 
         <para>
-            <code>Zend_Controller_Action_HelperBroker</code> управляет
+            <classname>Zend_Controller_Action_HelperBroker</classname> управляет
             регистрацией объектов помощников и путей к помощникам, а также
             извлечением помощников по требованию.
         </para>
@@ -117,8 +116,7 @@ $this->_helper->FlashMessenger('We did something in the last request');
 
         <programlisting language="php"><![CDATA[
 Zend_Controller_Action_HelperBroker::addHelper($helper);
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Само собой, инстанцирование и передача помощников брокеру отнимают
@@ -140,8 +138,7 @@ Zend_Controller_Action_HelperBroker::addHelper($helper);
 // Добавление помощников, начинающихся
 // с My_Action_Helpers в My/Action/Helpers/
 Zend_Controller_Action_HelperBroker::addPrefix('My_Action_Helpers');
-]]>
-                </programlisting>
+]]></programlisting>
             </listitem>
 
             <listitem>
@@ -157,8 +154,7 @@ Zend_Controller_Action_HelperBroker::addPrefix('My_Action_Helpers');
 // Добавление помощников, начинающихся с Helper в Plugins/Helpers/
 Zend_Controller_Action_HelperBroker::addPath('./Plugins/Helpers',
                                              'Helper');
-]]>
-                </programlisting>
+]]></programlisting>
             </listitem>
         </itemizedlist>
 
@@ -188,8 +184,7 @@ Zend_Controller_Action_HelperBroker::addPath('./Plugins/Helpers',
 if (Zend_Controller_Action_HelperBroker::hasHelper('redirector')) {
     echo 'Redirector helper registered';
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Есть также два статических метода для извлечения помощников из
@@ -222,8 +217,7 @@ if (Zend_Controller_Action_HelperBroker::hasHelper('redirector')) {
 $redirector =
     Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Наконец, для удаления зарегистрированного помощника из брокера
@@ -237,8 +231,7 @@ $redirector =
 if (Zend_Controller_Action_HelperBroker::hasHelper('redirector')) {
     Zend_Controller_Action_HelperBroker::removeHelper('redirector')
 }
-]]>
-        </programlisting>
+]]></programlisting>
     </sect2>
 
     <sect2 id="zend.controller.actionhelper.stockhelpers">
@@ -285,11 +278,11 @@ if (Zend_Controller_Action_HelperBroker::hasHelper('redirector')) {
         <title>Написание собственных помощников</title>
 
         <para>
-            Помощники действий расширяют
-            <code>Zend_Controller_Action_Helper_Abstract</code>, абстрактный
-            класс, дающий базовый интерфейс и функционал, который требуется для
-            использования с брокером помощников. Он включает в себя следующие
-            методы:
+            Помощники действий наследуют от абстрактного класса
+            <classname>Zend_Controller_Action_Helper_Abstract</classname>,
+            который предоставляет базовый интерфейс и функционал, необходимые
+            для использования с брокером помощников. Он включает в себя
+            следующие методы:
         </para>
 
         <itemizedlist>
@@ -344,8 +337,8 @@ if (Zend_Controller_Action_HelperBroker::hasHelper('redirector')) {
                     извлекает ту часть имени класса, которая следует после
                     последнего символа подчеркивания, иначе возвращается полное
                     имя класса. Например, если класс называется
-                    <code>Zend_Controller_Action_Helper_Redirector</code>, то он
-                    вернет <code>Redirector</code>, а если класс называется
+                    <classname>Zend_Controller_Action_Helper_Redirector</classname>,
+                    то он вернет <code>Redirector</code>, а если класс называется
                     <code>FooMessage</code> то он просто вернет свое полное имя.
                 </para>
             </listitem>
@@ -365,8 +358,7 @@ if (Zend_Controller_Action_HelperBroker::hasHelper('redirector')) {
         <programlisting language="php"><![CDATA[
 // Перенаправление на /blog/view/item/id/42
 $this->_helper->redirector('item', 'view', 'blog', array('id' => 42));
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Метод брокера помощников <code>__call()</code> ищет помощника с

+ 30 - 28
documentation/manual/ru/module_specs/Zend_Controller-Basics.xml

@@ -1,11 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.controller.basics">
     <title>Основы Zend_Controller</title>
 
     <para>
-        Система <code>Zend_Controller</code> спроектирована быть легковесной,
+        Система <classname>Zend_Controller</classname> спроектирована быть легковесной,
         модульной и расширяемой. Ее минимализм допускает гибкость и некоторую
         свободу в использовании, при этом она достаточно структурирована, чтобы
-        системы, построенные с использованием <code>Zend_Controller</code>,
+        системы, построенные с использованием <classname>Zend_Controller</classname>,
         использовали некоторые общие соглашения и сходное размещение кода.
     </para>
 
@@ -20,7 +22,7 @@
     </para>
 
     <para>
-        Рабочий процесс <code>Zend_Controller</code> осуществляется несколькими
+        Рабочий процесс <classname>Zend_Controller</classname> осуществляется несколькими
         компонентами. Несмотря на то, что для использования этой системы нет
         необходимости в совершенном понимании внутренней работы всех этих
         компонент, полезно иметь практическое представление об этом процессе.
@@ -29,25 +31,25 @@
         <itemizedlist>
             <listitem>
                 <para>
-                    Фронт-контроллер (<code>Zend_Controller_Front</code>)
+                    Фронт-контроллер (<classname>Zend_Controller_Front</classname>)
                     управляет всем рабочим процессом системы
-                    <code>Zend_Controller</code>. Это одна из интерпретаций
-                    паттерна FrontController. <code>Zend_Controller_Front</code>
+                    <classname>Zend_Controller</classname>. Это одна из интерпретаций
+                    паттерна FrontController. <classname>Zend_Controller_Front</classname>
                     обрабатывает все запросы, полученные сервером, и в конечном
                     счете отвечает за делегацию запросов контроллерам действий
-                    (<code>Zend_Controller_Action</code>).
+                    (<classname>Zend_Controller_Action</classname>).
                 </para>
             </listitem>
 
             <listitem>
                 <para>
-                    <code>Zend_Controller_Request_Abstract</code> (часто
+                    <classname>Zend_Controller_Request_Abstract</classname> (часто
                     называется <code>объектом запроса</code>) представляет
                     переменные запроса и предоставляет методы для установки и
                     получения имен контроллера, действия и любых параметров
                     запроса. Кроме того, он отслеживает, было ли обработано
                     содержащееся в нем действие диспетчером
-                    <code>Zend_Controller_Dispatcher</code>.
+                    <classname>Zend_Controller_Dispatcher</classname>.
                     Расширения абстрактного объекта запроса могут
                     использоваться для инкапсуляции всех переменных
                     запроса, позволяя роутерам извлекать информацию
@@ -57,21 +59,21 @@
 
                 <para>
                     По умолчанию используется
-                    <code>Zend_Controller_Request_Http</code>. Он
+                    <classname>Zend_Controller_Request_Http</classname>. Он
                     предоставляет доступ ко всем переменным HTTP-запроса.
                 </para>
             </listitem>
 
             <listitem>
                 <para>
-                    <code>Zend_Controller_Router_Interface</code>
+                    <classname>Zend_Controller_Router_Interface</classname>
                     используется для описания маршрутизаторов.
                     Маршрутизация — это процесс исследования переменных запроса
                     для определения того, какой контроллер и какое действие в
                     этом контроллере должны получить этот запрос. Эти
                     контроллер, действие и опциональные параметры
                     устанавливаются в объекте запроса для обработки диспетчером
-                    <code>Zend_Controller_Dispatcher_Standard</code>.
+                    <classname>Zend_Controller_Dispatcher_Standard</classname>.
                     Маршрутизация производится только один раз: когда вначале
                     получен запрос и до того, как первый контроллер примет
                     управление.
@@ -79,9 +81,9 @@
 
                 <para>
                     Используемый по умолчанию маршрутизатор
-                    <code>Zend_Controller_Router_Rewrite</code> принимает
+                    <classname>Zend_Controller_Router_Rewrite</classname> принимает
                     конечную точку URI в том виде, в котором она определена в
-                    <code>Zend_Controller_Request_Http</code>, и разлагает ее на
+                    <classname>Zend_Controller_Request_Http</classname>, и разлагает ее на
                     контроллер, действие и параметры, основываясь на пути в URL.
                     Например, URL
                     <code>http://localhost/foo/bar/key/value</code>
@@ -91,7 +93,7 @@
                 </para>
 
                 <para>
-                    <code>Zend_Controller_Router_Rewrite</code> может также
+                    <classname>Zend_Controller_Router_Rewrite</classname> может также
                     использоваться для сопоставления с произвольными путями,
                     за более подробной информацией см. <link
                     linkend="zend.controller.router">документацию по Rewrite
@@ -101,7 +103,7 @@
 
             <listitem>
                 <para>
-                    <code>Zend_Controller_Dispatcher_Interface</code>
+                    <classname>Zend_Controller_Dispatcher_Interface</classname>
                     используется для описания диспетчеров.
                     Диспетчеризация — это процесс извлечения контроллера и
                     действия из объекта запроса, нахождения соответствующих
@@ -127,7 +129,7 @@
 
                 <para>
                     По умолчанию используется диспетчер
-                    <code>Zend_Controller_Dispatcher_Standard</code>.
+                    <classname>Zend_Controller_Dispatcher_Standard</classname>.
                     Он определяет контроллеры как классы с именами,
                     завершающимися словом Controller, и в которых все слова
                     начинаются со сточной буквы (MixedCase), методы действий —
@@ -172,17 +174,17 @@
 
             <listitem>
                 <para>
-                    <code>Zend_Controller_Action</code> — базовая
+                    <classname>Zend_Controller_Action</classname> — базовая
                     составляющая контроллера действий. Каждый контроллер
                     является отдельным классом, расширяющим
-                    <code>Zend_Controller_Action</code>, и этот класс
+                    <classname>Zend_Controller_Action</classname>, и этот класс
                     должен содержать один или более методов действий.
                 </para>
             </listitem>
 
             <listitem>
                 <para>
-                    <code>Zend_Controller_Response_Abstract</code>
+                    <classname>Zend_Controller_Response_Abstract</classname>
                     определяет базовый класс ответа, используемый для
                     сбора и возвращения ответов из контроллеров действий.
                     Он собирает как тело ответа, так и заголовки.
@@ -190,27 +192,27 @@
 
                 <para>
                     По умолчанию используется класс
-                    <code>Zend_Controller_Response_Http</code>, который
+                    <classname>Zend_Controller_Response_Http</classname>, который
                     подходит для использования в среде HTTP.
                 </para>
             </listitem>
         </itemizedlist>
 
     <para>
-        Рабочий процесс <code>Zend_Controller</code> относительно простой.
-        Запрос получается объектом <code>Zend_Controller_Front</code>,
+        Рабочий процесс <classname>Zend_Controller</classname> относительно простой.
+        Запрос получается объектом <classname>Zend_Controller_Front</classname>,
         который в свою очередь вызывает
-        <code>Zend_Controller_Router_Rewrite</code> для определения того, какой
+        <classname>Zend_Controller_Router_Rewrite</classname> для определения того, какой
         контроллер (и какое действие в этом контроллере) следует использовать.
-        <code>Zend_Controller_Router_Rewrite</code>
+        <classname>Zend_Controller_Router_Rewrite</classname>
         анализирует URI для установки имени контроллера и имени действия в
-        запросе. Затем <code>Zend_Controller_Front</code> входит в цикл
+        запросе. Затем <classname>Zend_Controller_Front</classname> входит в цикл
         диспетчеризации. Он вызывает
-        <code>Zend_Controller_Dispatcher_Standard</code>, передавая ему
+        <classname>Zend_Controller_Dispatcher_Standard</classname>, передавая ему
         запрос для запуска контроллера и действия, определенных в запросе
         (или тех, которые используются по умолчанию). После того, как
         контроллер завершит работу, управление возвращается
-        <code>Zend_Controller_Front</code>. Если предыдущий контроллер
+        <classname>Zend_Controller_Front</classname>. Если предыдущий контроллер
         переустановкой статуса диспетчеризации в запросе
         указал, что должен быть запущен другой контроллер, то цикл
         продолжается и выполняется запуск другого контроллера. В противном

+ 11 - 12
documentation/manual/ru/module_specs/Zend_Controller-Dispatcher.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.controller.dispatcher">
     <title>Диспетчер</title>
 
@@ -6,12 +8,12 @@
 
         <para>
             Диспетчеризация — это процесс принятия объекта запроса
-            (<code>Zend_Controller_Request_Abstract</code>), извлечения
+            (<classname>Zend_Controller_Request_Abstract</classname>), извлечения
             содержащихся в нем имени модуля, имени контроллера, имени действия и
             необязательных параметров, затем инстанцирования контроллера и
             вызова действия в нем. Если не найдены модуль, контроллер или
             действие, то будут использоваться значения по умолчанию.
-            <code>Zend_Controller_Dispatcher_Standard</code> определяет
+            <classname>Zend_Controller_Dispatcher_Standard</classname> определяет
             <code>index</code> как значение по умолчанию для контроллера и
             действия, и <code>default</code> - для модуля, но позволяет
             разработчику изменять эти значения, используя
@@ -39,8 +41,7 @@ $front->setParam('prefixDefaultModule', true);
 
 // Через диспетчер:
 $dispatcher->setParam('prefixDefaultModule', true);
-]]>
-            </programlisting>
+]]></programlisting>
 
             <para>
                 Это позволяет повторно использовать существующий модуль в
@@ -96,15 +97,14 @@ public function bazAction()
     // Foo_BarController::bazAction():
     $this->_forward('baz', 'bar', 'foo', array('baz' => 'bogus'));
 }
-]]>
-        </programlisting>
+]]></programlisting>
     </sect2>
 
     <sect2 id="zend.controller.dispatcher.subclassing">
         <title>Создание подклассов диспетчера</title>
 
         <para>
-            <code>Zend_Controller_Front</code> сначала вызывает
+            <classname>Zend_Controller_Front</classname> сначала вызывает
             маршрутизатор для получения первого действия в запросе. Затем он
             входит в цикл диспетчеризации, в котором вызывается диспетчер для
             запуска действия.
@@ -120,7 +120,7 @@ public function bazAction()
         </para>
 
         <para>
-            <code>Zend_Controller_Dispatcher_Interface</code> определяет
+            <classname>Zend_Controller_Dispatcher_Interface</classname> определяет
             следующие методы, которые требуется использовать во всех реализациях
             диспетчера:
         </para>
@@ -272,14 +272,13 @@ interface Zend_Controller_Dispatcher_Interface
      */
     public function getDefaultAction();
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Однако в большинстве случаев вам достаточно будет только расширить
-            абстрактный класс <code>Zend_Controller_Dispatcher_Abstract</code>,
+            абстрактный класс <classname>Zend_Controller_Dispatcher_Abstract</classname>,
             в котором уже определены все эти методы или класс
-            <code>Zend_Controller_Dispatcher_Standard</code> для изменения
+            <classname>Zend_Controller_Dispatcher_Standard</classname> для изменения
             функционала стандартного диспетчера.
         </para>
 

+ 25 - 29
documentation/manual/ru/module_specs/Zend_Controller-Exceptions.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.controller.exceptions">
     <title>Исключения</title>
 
@@ -16,7 +18,7 @@
             Сообщения исключений и данные обратной трассировки часто содержат
             важную системную информацию, такую, как текст запросов SQL,
             местонахождение файлов и т.п. Поэтому в целях защиты вашего сайта
-            <code>Zend_Controller_Front</code> по умолчанию отлавливает все
+            <classname>Zend_Controller_Front</classname> по умолчанию отлавливает все
             исключения и регистрирует их в объектах ответа; в свою очередь,
             объект ответа по умолчанию не отображает сообщения исключений.
         </para>
@@ -85,8 +87,7 @@ try {
 } catch (Exception $e) {
     // самостоятельная обработка исключения
 }
-]]>
-                </programlisting>
+]]></programlisting>
 
                 <para>
                     Возможно, этот метод является наиболее легким способом
@@ -137,8 +138,7 @@ if ($response->isException()) {
     $response->sendHeaders();
     $response->outputBody();
 }
-]]>
-                </programlisting>
+]]></programlisting>
 
                 <para>
                     Основное преимущество этого метода по сравнению с
@@ -194,8 +194,7 @@ $front->setParam('useDefaultControllerAlways', true);
 // или
 
 $dispatcher->setParam('useDefaultControllerAlways', true);
-]]>
-                        </programlisting>
+]]></programlisting>
 
                         <para>
                             Когда этот флаг установлен, то диспетчер будет
@@ -212,7 +211,7 @@ $dispatcher->setParam('useDefaultControllerAlways', true);
                         <para>
                             Исключение, бросаемое методом
                             <code>dispatch()</code>, является экземпляром класса
-                            <code>Zend_Controller_Dispatcher_Exception</code>,
+                            <classname>Zend_Controller_Dispatcher_Exception</classname>,
                             содержащим текст 'Invalid controller specified'
                             (указан недействительный контроллер).
                             Используйте один из методов, описанных в
@@ -238,7 +237,7 @@ $dispatcher->setParam('useDefaultControllerAlways', true);
                 <itemizedlist>
                     <listitem>
                         <para>
-                            Создать подкласс <code>Zend_Controller_Action</code>
+                            Создать подкласс <classname>Zend_Controller_Action</classname>
                             и переопределить в нем метод <code>__call()</code>.
                             Например:
                         </para>
@@ -257,8 +256,7 @@ class My_Controller_Action extends Zend_Controller_Action
         throw new Exception('Invalid method');
     }
 }
-]]>
-                        </programlisting>
+]]></programlisting>
                         <para>
                             Пример выше перехватывает любые вызовы
                             несуществующих методов действий и перенаправляет их
@@ -269,7 +267,7 @@ class My_Controller_Action extends Zend_Controller_Action
                     <listitem>
                         <para>
                             Создать подкласс
-                            <code>Zend_Controller_Dispatcher</code> и
+                            <classname>Zend_Controller_Dispatcher</classname> и
                             переопределить в нем метод <code>getAction()</code>
                             так, чтобы он проводил проверку того, существует ли
                             запрошенное действие. Например:
@@ -298,8 +296,7 @@ class My_Controller_Dispatcher extends Zend_Controller_Dispatcher
         return $action;
     }
 }
-]]>
-                        </programlisting>
+]]></programlisting>
 
                         <para>
                             Код выше проверяет существование запрошенного
@@ -327,7 +324,7 @@ class My_Controller_Dispatcher extends Zend_Controller_Dispatcher
                         </para>
 
                         <para>
-                            Создав подкласс <code>Zend_Controller_Action</code>
+                            Создав подкласс <classname>Zend_Controller_Action</classname>
                             и модифицировав метод <code>preDispatch()</code>, вы
                             можете изменить все
                             свои контроллеры так, чтобы они переходили
@@ -357,29 +354,28 @@ class My_Controller_PreDispatchPlugin extends Zend_Controller_Plugin_Abstract
 {
     public function preDispatch(Zend_Controller_Request_Abstract $request)
     {
-        $dispatcher =
-            Zend_Controller_Front::getInstance()->getDispatcher();
-        $controller = $dispatcher->getController($request);
+        $front      = Zend_Controller_Front::getInstance();
+        $dispatcher = $front->getDispatcher();
+        $class      = $dispatcher->getControllerClass($request);
         if (!$controller) {
-            $controller =
-                $dispatcher->getDefaultControllerName($request);
+            $class = $dispatcher->getDefaultControllerClass($request);
         }
-        $action     = $dispatcher->getAction($request);
 
-        if (!method_exists($controller, $action)) {
-            $defaultAction = $dispatcher->getDefaultAction();
+        $r      = new ReflectionClass($class);
+        $action = $dispatcher->getActionMethod($request);
+
+        if (!$r->hasMethod($action)) {
+            $defaultAction  = $dispatcher->getDefaultAction();
             $controllerName = $request->getControllerName();
-            $response =
-                Zend_Controller_Front::getInstance()->getResponse();
-            $response->setRedirect('/' . $controllerName .
-                                   '/' . $defaultAction);
+            $response       = $front->getResponse();
+            $response->setRedirect('/' . $controllerName
+                                  . '/' . $defaultAction);
             $response->sendHeaders();
             exit;
         }
     }
 }
-]]>
-                        </programlisting>
+]]></programlisting>
 
                         <para>
                             В этом примере мы проверяем, доступно ли в

+ 18 - 21
documentation/manual/ru/module_specs/Zend_Controller-FrontController.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.controller.front">
     <title>Фронт-контроллер</title>
 
@@ -5,17 +7,18 @@
         <title>Обзор</title>
 
         <para>
-            <code>Zend_Controller_Front</code> реализует
+            <classname>Zend_Controller_Front</classname> реализует
             <ulink url="http://www.martinfowler.com/eaaCatalog/frontController.html">паттерн
-            Front Controller</ulink>, используемый в приложениях MVC. Его
-            назначение состоит в инициализации окружения запроса, проложении
+            Front Controller</ulink>, используемый в приложениях <ulink
+                url="http://en.wikipedia.org/wiki/Model-view-controller">MVC</ulink>.
+            Его назначение состоит в инициализации окружения запроса, проложении
             маршрута приходящего запроса и последующем запуске выявленных
             действий. Он агрегирует все ответы и возвращает их по завершении
             процесса.
         </para>
 
         <para>
-            <code>Zend_Controller_Front</code> также реализует
+            <classname>Zend_Controller_Front</classname> также реализует
             <ulink url="http://en.wikipedia.org/wiki/Singleton_pattern">паттерн
             Singleton</ulink>, это означает, что в любое время может быть
             доступен только один экземпляр этого класса. Это позволяет ему также
@@ -24,7 +27,7 @@
         </para>
 
         <para>
-            <code>Zend_Controller_Front</code> регистрирует в себе <link
+            <classname>Zend_Controller_Front</classname> регистрирует в себе <link
             linkend="zend.controller.plugins">брокер плагинов</link> (plugin
             broker), что позволяет с помощью плагинов отслеживать события,
             инициируемые фронт-контроллером.
@@ -60,8 +63,7 @@
             <programlisting language="php"><![CDATA[
 // Отключение плагина ErrorHandler:
 $front->setParam('noErrorHandler', true);
-]]>
-            </programlisting>
+]]></programlisting>
 
             <para>
                 Для того, чтобы отключить <code>ViewRenderer</code>, сделайте
@@ -71,8 +73,7 @@ $front->setParam('noErrorHandler', true);
             <programlisting language="php"><![CDATA[
 // Отключение помощника ViewRenderer:
 $front->setParam('noViewRenderer', true);
-]]>
-            </programlisting>
+]]></programlisting>
         </note>
 
     </sect2>
@@ -98,8 +99,7 @@ $front->setParam('noViewRenderer', true);
 
             <programlisting language="php"><![CDATA[
 $front = Zend_Controller_Front::getInstance();
-]]>
-            </programlisting>
+]]></programlisting>
         </sect3>
 
         <sect3 id="zend.controller.front.methods.primary.setcontrollerdirectory">
@@ -132,8 +132,7 @@ $front->setControllerDirectory(array(
 
 // Добавление директории модуля 'foo':
 $front->addControllerDirectory('../modules/foo/controllers', 'foo');
-]]>
-            </programlisting>
+]]></programlisting>
 
             <note>
                 <para>
@@ -267,8 +266,7 @@ $front->addControllerDirectory('../modules/foo/controllers', 'foo');
 // Инстанцирование фронт-контроллера, установка директории контроллера и
 // выполнение диспетчеризации в одном вызове:
 Zend_Controller_Front::run('../application/controllers');
-]]>
-            </programlisting>
+]]></programlisting>
         </sect3>
     </sect2>
 
@@ -558,10 +556,10 @@ Zend_Controller_Front::run('../application/controllers');
     </sect2>
 
     <sect2 id="zend.controller.front.subclassing">
-        <title>Создание подклассов фронт-контроллера</title>
+        <title>Расширение фронт-контроллера</title>
 
         <para>
-            При создании подкласса фронт-контроллера, необходимо, как
+            При наследовании от фронт-контроллера, необходимо, как
             минимум, переопределить метод <code>getInstance()</code>.
         </para>
 
@@ -577,16 +575,15 @@ class My_Controller_Front extends Zend_Controller_Front
         return self::$_instance;
     }
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Такое переопределение метода <code>getInstance()</code> гарантирует
             то, что последующий вызов
             <code>Zend_Controller_Front::getInstance()</code> вернет экземпляр
             созданного вами подкласса вместо экземпляра
-            <code>Zend_Controller_Front</code> - это особенно полезно для
-            некоторых альтернативных маршрутизаторов и помощников видов.
+            <classname>Zend_Controller_Front</classname> - это особенно полезно
+            для некоторых альтернативных маршрутизаторов и помощников видов.
         </para>
 
         <para>

+ 59 - 53
documentation/manual/ru/module_specs/Zend_Controller-Migration.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.controller.migration">
     <title>Переход с предыдущих версий</title>
 
@@ -8,6 +10,24 @@
         архитектуру.
     </para>
 
+    <sect2 id="zend.controller.migration.fromoneseventooneeight">
+        <title>Переход с 1.7.x на 1.8.0 и более поздние версии</title>
+
+        <sect3 id="zend.controller.migration.fromoneseventooneeight.router">
+            <title>Изменения в стандартном маршруте</title>
+
+            <para>
+                Поскольку в новый стандартный маршрут были добавлены
+                переводимые сегменты, символ <code>@</code> стал
+                специальным символом в начале сегмента маршрута.
+                Для того, чтобы можно было использовать его в статических
+                сегментах, вы должны экранировать его путем добавления второго
+                символа <code>@</code>. То же самое правило теперь применяется
+                и к символу <code>:</code>.
+            </para>
+        </sect3>
+    </sect2>
+
     <sect2 id="zend.controller.migration.fromonesixtooneseven">
         <title>Переход с 1.6.x на 1.7.0 и более поздние версии</title>
 
@@ -16,7 +36,7 @@
 
             <para>
                 Пользователи обратили наше внимание на тот факт, что
-                <code>Zend_Controller_Action_Helper_ViewRenderer</code>
+                <classname>Zend_Controller_Action_Helper_ViewRenderer</classname>
                 использует не присутствующий в интерфейсе метод из
                 абстрактного класса диспетчера. Мы добавили
                 этот метод в интерфейс диспетчера для того,
@@ -30,7 +50,7 @@
                     необработанное имя контроллера (в том виде, в котором оно
                     хранится в объекте запроса) и преобразовывать его в имя
                     класса контроллера, наследующего от
-                    <code>Zend_Controller_Action</code>.
+                    <classname>Zend_Controller_Action</classname>.
                 </para></listitem>
             </itemizedlist>
         </sect3>
@@ -44,8 +64,8 @@
 
             <para>
                 Пользователи обратили наше внимание на тот факт, что
-                <code>Zend_Controller_Front</code> и
-                <code>Zend_Controller_Router_Route_Module</code> используют
+                <classname>Zend_Controller_Front</classname> и
+                <classname>Zend_Controller_Router_Route_Module</classname> используют
                 методы диспетчера, которые не определены в его интерфейсе.
                 Мы добавили следующие три метода в его интерфейс для того,
                 чтобы гарантировать работу созданного вами диспетчера с
@@ -138,7 +158,7 @@
                 <para>
                     Второй лучший вариант: ViewRenderer теперь делегирует
                     определение скриптов вида инфлектору
-                    <code>Zend_Filter_Inflector</code>; вы можете изменить
+                    <classname>Zend_Filter_Inflector</classname>; вы можете изменить
                     правила инфлектора так, чтобы он более не разделял слова в
                     имени действия знаком тире:
                 </para>
@@ -154,8 +174,7 @@ $inflector->setFilterRule(':action', array(
     ),
     'StringToLower'
 ));
-]]>
-                </programlisting>
+]]></programlisting>
 
                 <para>
                     Приведенный выше код изменит инфлектор таким образом, чтобы
@@ -182,8 +201,7 @@ $inflector->setFilterRule(':action', array(
 
                 <programlisting language="php"><![CDATA[
 $front->setParam('useCaseSensitiveActions', true);
-]]>
-</programlisting>
+]]></programlisting>
 
                 <para>
                     Это позволит вам использовать camelCase в URL-ах и они будут
@@ -226,8 +244,7 @@ $front->setParam('useCaseSensitiveActions', true);
 
         <programlisting language="php"><![CDATA[
 $front->setParam('noErrorHandler', true);
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Помощник действий <code>ViewRenderer</code> автоматизирует
@@ -249,8 +266,7 @@ $front->setParam('noErrorHandler', true);
         <programlisting language="php"><![CDATA[
 // $front является экземпляром Zend_Controller_Front
 $front->setParam('noViewRenderer', true);
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Но в долгосрочной перспективе это не лучшее решение, поскольку
@@ -288,8 +304,7 @@ $front->setParam('noViewRenderer', true);
 
         <programlisting language="php"><![CDATA[
 $this->_helper->viewRenderer->setNoRender();
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Если вы обнаружили, что ни один из методов действий не производит
@@ -305,8 +320,7 @@ public function preDispatch()
     $this->_helper->viewRenderer->setNoRender()
     // ... еще код ..
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Если вы вызываете <code>render()</code> и используете
@@ -366,8 +380,7 @@ public function preDispatch()
 // Предполагается, что $view уже определен
 $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
 Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
-]]>
-                </programlisting>
+]]></programlisting>
             </listitem>
 
             <listitem>
@@ -378,8 +391,8 @@ Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);
                 <programlisting language="php"><![CDATA[
 $viewRenderer =
     Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
-$viewRenderer->setView($view);]]>
-                </programlisting>
+$viewRenderer->setView($view);
+]]></programlisting>
             </listitem>
         </itemizedlist>
 
@@ -454,8 +467,7 @@ $viewRenderer->setView($view);]]>
 
         <programlisting language="php"><![CDATA[
 Zend_Controller_Front::run('/path/to/controllers');
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Тем не менее, структура директорий была подвергнута пересмотру,
@@ -466,17 +478,17 @@ Zend_Controller_Front::run('/path/to/controllers');
         <itemizedlist>
             <listitem>
                 <para>
-                    <code>Zend_Controller_Router</code> удален в пользу
+                    <classname>Zend_Controller_Router</classname> удален в пользу
                     использования Rewrite Router.
                 </para>
             </listitem>
 
             <listitem>
                 <para>
-                    <code>Zend_Controller_RewriteRouter</code> переименован в
-                    <code>Zend_Controller_Router_Rewrite</code>, теперь это
+                    <classname>Zend_Controller_RewriteRouter</classname> переименован в
+                    <classname>Zend_Controller_Router_Rewrite</classname>, теперь это
                     стандартный маршрутизатор, поставляемый с фреймворком.
-                    <code>Zend_Controller_Front</code> будет использовать его по
+                    <classname>Zend_Controller_Front</classname> будет использовать его по
                     умолчанию, если не был установлен другой маршрутизатор.
                 </para>
             </listitem>
@@ -484,7 +496,7 @@ Zend_Controller_Front::run('/path/to/controllers');
             <listitem>
                 <para>
                     Добавлен новый класс маршрута для использования с Rewrite
-                    Router - <code>Zend_Controller_Router_Route_Module</code>.
+                    Router - <classname>Zend_Controller_Router_Route_Module</classname>.
                     Он включает в себя маршрут по умолчанию, используемый
                     MVC, и поддерживает <link
                         linkend="zend.controller.modular">модули
@@ -494,15 +506,15 @@ Zend_Controller_Front::run('/path/to/controllers');
 
             <listitem>
                 <para>
-                    <code>Zend_Controller_Router_StaticRoute</code> переименован
-                    в <code>Zend_Controller_Router_Route_Static</code>.
+                    <classname>Zend_Controller_Router_StaticRoute</classname> переименован
+                    в <classname>Zend_Controller_Router_Route_Static</classname>.
                 </para>
             </listitem>
 
             <listitem>
                 <para>
-                    <code>Zend_Controller_Dispatcher</code> переименован в
-                    <code>Zend_Controller_Dispatcher_Standard</code>.
+                    <classname>Zend_Controller_Dispatcher</classname> переименован в
+                    <classname>Zend_Controller_Dispatcher_Standard</classname>.
                 </para>
             </listitem>
 
@@ -518,8 +530,7 @@ final protected function _forward($action,
                                   $controller = null,
                                   $module = null,
                                   array $params = null);
-]]>
-                </programlisting>
+]]></programlisting>
 
                 <para>
                     <code>$action</code> - обязательный аргумент. Если не был
@@ -545,8 +556,7 @@ final protected function _forward($action,
 
         <programlisting language="php"><![CDATA[
 Zend_Controller_Front::run('/path/to/controllers');
-]]>
-        </programlisting>
+]]></programlisting>
 
         <programlisting language="php"><![CDATA[
 /* -- создание маршрутизатора -- */
@@ -563,8 +573,7 @@ $ctrl->setRouter($router);
 /* -- установка директории контроллеров и запуск диспетчеризации -- */
 $ctrl->setControllerDirectory('/path/to/controllers');
 $ctrl->dispatch();
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Рекомендуется использовать объект ответа для сбора содержимого и
@@ -605,8 +614,7 @@ $ctrl->dispatch();
                         </para>
                         <programlisting language="php"><![CDATA[
 $front->throwExceptions(true);
-]]>
-                        </programlisting>
+]]></programlisting>
                     </listitem>
 
                     <listitem>
@@ -624,8 +632,7 @@ $front->returnResponse(true);
 $response = $front->dispatch();
 $response->renderExceptions(true);
 echo $response;
-]]>
-                        </programlisting>
+]]></programlisting>
                     </listitem>
                 </itemizedlist>
             </listitem>
@@ -634,20 +641,20 @@ echo $response;
                 <code>Zend_Controller_Dispatcher_Interface::dispatch()</code>
                 теперь принимает и возвращает объект запроса
                 <xref linkend="zend.controller.request" />
-                вместо метки <code>Zend_Controller_Dispatcher_Token</code>.
+                вместо метки <classname>Zend_Controller_Dispatcher_Token</classname>.
             </para></listitem>
 
             <listitem><para>
                 <code>Zend_Controller_Router_Interface::route()</code>
                 теперь принимает и возвращает объект ответа
                 <xref linkend="zend.controller.request" />
-                вместо метки <code>Zend_Controller_Dispatcher_Token</code>
+                вместо метки <classname>Zend_Controller_Dispatcher_Token</classname>
             </para></listitem>
 
             <listitem>
                 <para>
-                    Изменения <code>Zend_Controller_Action</code> включают в
-                    себя следующие:
+                    Изменения <classname>Zend_Controller_Action</classname> включают в
+                    себя следующее:
                 </para>
 
                 <itemizedlist>
@@ -704,7 +711,7 @@ echo $response;
                         <para>
                             Свойство <code>_action</code> больще не
                             устанавливается. Это свойство было объектом класса
-                            <code>Zend_Controller_Dispatcher_Token</code>,
+                            <classname>Zend_Controller_Dispatcher_Token</classname>,
                             которй больше не существует в текущем воплощении.
                             Единственным назначением метки (token) было
                             предоставление информации о запрошенных контроллере,
@@ -732,8 +739,8 @@ $params = $this->_getParams();
 
 // запрашивается параметр 'foo', если параметр не найден,
 // то используется значение по умолчанию 'default'
-$foo = $this->_getParam('foo', 'default');]]>
-                        </programlisting>
+$foo = $this->_getParam('foo', 'default');
+]]></programlisting>
                     </listitem>
 
                     <listitem>
@@ -755,8 +762,7 @@ public function __call($method, $args)
 
     throw new Zend_Controller_Exception('Invalid method called');
 }
-]]>
-                        </programlisting>
+]]></programlisting>
                     </listitem>
                 </itemizedlist>
             </listitem>
@@ -771,8 +777,8 @@ public function __call($method, $args)
             </para></listitem>
 
             <listitem><para>
-                <code>Zend_Controller_Plugin_Interface</code> был заменен на
-                <code>Zend_Controller_Plugin_Abstract</code>. Все методы теперь
+                <classname>Zend_Controller_Plugin_Interface</classname> был заменен на
+                <classname>Zend_Controller_Plugin_Abstract</classname>. Все методы теперь
                 принимают и возвращают объект ответа
                 <xref linkend="zend.controller.request" /> вместо метки
                 диспетчеризации.

+ 14 - 19
documentation/manual/ru/module_specs/Zend_Controller-Modular.xml

@@ -1,5 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.controller.modular">
-    <title>Использование определенной соглашением модульной структуры директорий</title>
+    <title>Использование модульной структуры директорий</title>
 
     <sect2 id="zend.controller.modular.introduction">
         <title>Введение</title>
@@ -10,8 +12,7 @@
             пример такой структуры:
         </para>
 
-        <programlisting>
-<![CDATA[
+        <programlisting language="txt"><![CDATA[
 docroot/
     index.php
 application/
@@ -46,8 +47,7 @@ application/
                 list/
             helpers/
             filters/
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             В этой парадигме имена модулей используются как префиксы к
@@ -105,8 +105,7 @@ $front->setControllerDirectory(array(
       'default' => '/path/to/application/controllers',
       'blog'    => '/path/to/application/blog/controllers'
 ));
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Метод <code>addControllerDirectory()</code> принимает необязательный
@@ -118,8 +117,7 @@ $front->setControllerDirectory(array(
         <programlisting language="php"><![CDATA[
 $front->addControllerDirectory('/path/to/application/news/controllers',
                                'news');
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Лучшее напоследок: самый легкий способ определения
@@ -142,8 +140,7 @@ $front->addControllerDirectory('/path/to/application/news/controllers',
  *             controllers/
  */
 $front->addModuleDirectory('/path/to/application/modules');
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Пример выше определит модули <code>default</code>, <code>foo</code>
@@ -171,8 +168,7 @@ $front->addModuleDirectory('/path/to/application/modules');
  */
 $front->setModuleControllerDirectoryName('con');
 $front->addModuleDirectory('/path/to/application/modules');
-]]>
-        </programlisting>
+]]></programlisting>
 
         <note><para>
             Вы можете указать, что для модулей не должна использоваться
@@ -186,8 +182,8 @@ $front->addModuleDirectory('/path/to/application/modules');
 
         <para>
             Маршрут, используемый по умолчанию в
-            <code>Zend_Controller_Router_Rewrite</code>, является объектом типа
-            <code>Zend_Controller_Router_Route_Module</code>. Этот маршрут
+            <classname>Zend_Controller_Router_Rewrite</classname>, является объектом типа
+            <classname>Zend_Controller_Router_Route_Module</classname>. Этот маршрут
             использует один из следующих шаблонов маршрутизации:
         </para>
 
@@ -211,7 +207,7 @@ $front->addModuleDirectory('/path/to/application/modules');
     </sect2>
 
     <sect2 id="zend.controller.modular.defaultcontroller">
-        <title>Молуль или глобальный контроллер по умолчанию</title>
+        <title>Модуль или глобальный контроллер по умолчанию</title>
 
         <para>
             В маршрутизаторе, используемом по умолчанию, если контроллер не был
@@ -224,15 +220,14 @@ $front->addModuleDirectory('/path/to/application/modules');
         </para>
 
         <para>
-            Если хотите всегда использовать глобальное пространство имен, то
+            Если требуется всегда использовать глобальное пространство имен, то
             установите параметр <code>useGlobalDefault</code> во
             фронт-контроллере:
         </para>
 
         <programlisting language="php"><![CDATA[
 $front->setParam('useDefaultControllerAlways', true);
-]]>
-        </programlisting>
+]]></programlisting>
     </sect2>
 </sect1>
 <!--

+ 3 - 1
documentation/manual/ru/module_specs/Zend_Controller-Plugins-ActionStack.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect3 id="zend.controller.plugins.standard.actionstack">
     <title>ActionStack</title>
 
@@ -22,7 +24,7 @@
         <listitem><para>
                 <code>getRegistry()</code> и <code>setRegistry()</code>.
                 Внутри себя <code>ActionStack</code> использует экземпляр
-                <code>Zend_Registry</code> для хранения стека. Вы можете с
+                <classname>Zend_Registry</classname> для хранения стека. Вы можете с
                 помощью этих аксессоров заменить экземпляр реестра на другой или
                 извлечь его.
         </para></listitem>

+ 13 - 18
documentation/manual/ru/module_specs/Zend_Controller-Plugins-ErrorHandler.xml

@@ -1,8 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect3 id="zend.controller.plugins.standard.errorhandler">
     <title>Zend_Controller_Plugins_ErrorHandler</title>
 
     <para>
-        <code>Zend_Controller_Plugins_ErrorHandler</code> представляет собой
+        <classname>Zend_Controller_Plugins_ErrorHandler</classname> представляет собой
         плагин для обработки исключений, брошенных вашим приложением, включая
         те, которые вызваны отсутствием запрошенного контроллера или
         действия. Он является альтернативой способам, перечисленным в <link
@@ -36,7 +38,7 @@
     </para>
 
     <para>
-        По умолчанию <code>Zend_Controller_Plugins_ErrorHandler</code> будет
+        По умолчанию <classname>Zend_Controller_Plugins_ErrorHandler</classname> будет
         производить переход к
         <code>ErrorController::errorAction()</code> в модуле по умолчанию. Вы
         можете установить альтернативные значения для перехода, используя
@@ -81,7 +83,7 @@
     </para>
 
     <para>
-        <code>Zend_Controller_Plugin_ErrorHandler</code> регистрирует
+        <classname>Zend_Controller_Plugin_ErrorHandler</classname> регистрирует
         перехватчик <code>postDispatch()</code> и проверяет, есть ли
         зарегистрированые исключения в
         <link linkend="zend.controller.response">объекте ответа</link>.
@@ -121,8 +123,7 @@ class ErrorController extends Zend_Controller_Action
         $errors = $this->_getParam('error_handler');
     }
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Имея объект ошибки, вы можете получить тип ошибки через
@@ -181,8 +182,7 @@ class ErrorController extends Zend_Controller_Action
         }
     }
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Вы можете извлекать исключение, которое инициировало вызов
@@ -195,7 +195,6 @@ public function errorAction()
 {
         $errors = $this->_getParam('error_handler');
 
-
         switch ($errors->type) {
             case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
             case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
@@ -222,8 +221,8 @@ public function errorAction()
                             $exception->getTraceAsString());
                 break;
         }
-}]]>
-        </programlisting>
+}
+]]></programlisting>
     </sect4>
 
     <sect4 id="zend.controller.plugins.standard.errorhandler.buffer">
@@ -247,8 +246,7 @@ public function errorAction()
 
         <programlisting language="php"><![CDATA[
 $this->getResponse()->clearBody();
-]]>
-        </programlisting>
+]]></programlisting>
     </sect4>
 
     <sect4 id="zend.controller.plugins.standard.errorhandler.examples">
@@ -259,8 +257,7 @@ $this->getResponse()->clearBody();
             <programlisting language="php"><![CDATA[
 $front = Zend_Controller_Front::getInstance();
 $front->registerPlugin(new Zend_Controller_Plugin_ErrorHandler());
-]]>
-            </programlisting>
+]]></programlisting>
         </example>
 
         <example id="zend.controller.plugins.standard.errorhandler.examples.example-2">
@@ -272,8 +269,7 @@ $front->registerPlugin(new Zend_Controller_Plugin_ErrorHandler(array(
     'controller' => 'static',
     'action'     => 'error'
 )));
-]]>
-            </programlisting>
+]]></programlisting>
         </example>
 
         <example id="zend.controller.plugins.standard.errorhandler.examples.example-3">
@@ -332,8 +328,7 @@ EOH;
         $this->view->content = $content;
     }
 }
-]]>
-        </programlisting>
+]]></programlisting>
     </sect4>
 </sect3>
 <!--

+ 12 - 13
documentation/manual/ru/module_specs/Zend_Controller-Plugins.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.controller.plugins" xmlns:xi="http://www.w3.org/2001/XInclude">
     <title>Плагины</title>
 
@@ -16,7 +18,7 @@
 
         <para>
             Методы событий определены в абстрактном классе
-            <code>Zend_Controller_Plugin_Abstract</code>, от которого должны
+            <classname>Zend_Controller_Plugin_Abstract</classname>, от которого должны
             наследовать все пользовательские плагины:
         </para>
 
@@ -24,7 +26,7 @@
             <listitem>
                 <para>
                     <code>routeStartup()</code> вызывается до того, как
-                    <code>Zend_Controller_Front</code> вызовет
+                    <classname>Zend_Controller_Front</classname> вызовет
                     <link linkend="zend.controller.router">маршрутизатор</link>
                     для сопоставления запроса с зарегистрированными маршрутами.
                 </para>
@@ -41,7 +43,7 @@
             <listitem>
                 <para>
                     <code>dispatchLoopStartup()</code> вызывается до того,
-                    как <code>Zend_Controller_Front</code> войдет в цикл
+                    как <classname>Zend_Controller_Front</classname> войдет в цикл
                     диспетчеризации.
                 </para>
             </listitem>
@@ -77,7 +79,7 @@
             <listitem>
                 <para>
                     <code>dispatchLoopShutdown()</code> вызывается после выхода
-                    <code>Zend_Controller_Front</code> из его цикла
+                    <classname>Zend_Controller_Front</classname> из его цикла
                     диспетчеризации.
                 </para>
             </listitem>
@@ -89,7 +91,7 @@
 
         <para>
             Для того, чтобы написать класс плагина, просто включите и расширьте
-            абстрактный класс <code>Zend_Controller_Plugin_Abstract</code>:
+            абстрактный класс <classname>Zend_Controller_Plugin_Abstract</classname>:
         </para>
 
         <programlisting language="php"><![CDATA[
@@ -97,12 +99,11 @@ class MyPlugin extends Zend_Controller_Plugin_Abstract
 {
     // ...
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Ни один из методов класса
-            <code>Zend_Controller_Plugin_Abstract</code> не является
+            <classname>Zend_Controller_Plugin_Abstract</classname> не является
             абстрактным, поэтому классы плагинов не обязательно должны
             реализовывать все из перечисленных выше методов событий.
             Разработчики плагинов могут реализовывать только те методы, которые
@@ -110,7 +111,7 @@ class MyPlugin extends Zend_Controller_Plugin_Abstract
         </para>
 
         <para>
-            <code>Zend_Controller_Plugin_Abstract</code> также делает объекты
+            <classname>Zend_Controller_Plugin_Abstract</classname> также делает объекты
             запроса и ответа доступными плагинам контроллеров через методы
             <code>getRequest()</code> и <code>getResponse()</code>,
             соответственно.
@@ -172,8 +173,7 @@ $front->setControllerDirectory('/path/to/controllers')
       ->setRouter(new Zend_Controller_Router_Rewrite())
       ->registerPlugin(new MyPlugin());
 $front->dispatch();
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             При условии, что вызываемые действия не производят вывод, и
@@ -188,8 +188,7 @@ $front->dispatch();
 <p>preDispatch() called</p>
 <p>postDispatch() called</p>
 <p>dispatchLoopShutdown() called</p>
-]]>
-        </programlisting>
+]]></programlisting>
 
         <note>
             <para>

+ 30 - 18
documentation/manual/ru/module_specs/Zend_Controller-QuickStart.xml

@@ -1,15 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.controller.quickstart">
     <title>Zend_Controller - Быстрый старт</title>
 
     <sect2 id="zend.controller.quickstart.introduction">
         <title>Введение</title>
         <para>
-            <code>Zend_Controller</code> является ядром системы MVC в Zend
+            <classname>Zend_Controller</classname> является ядром системы MVC в Zend
             Framework. Аббревиатура MVC - сокращение от
             <ulink url="http://en.wikipedia.org/wiki/Model-view-controller">Model-View-Controller</ulink>
             (модель-вид-контроллер), это паттерн проектирования, предназначенный
             для отделения логики приложения от логики представления.
-            <code>Zend_Controller_Front</code> реализует паттерн
+            <classname>Zend_Controller_Front</classname> реализует паттерн
             <ulink url="http://www.martinfowler.com/eaaCatalog/frontController.html">Front
             Controller</ulink>, в котором все запросы перехватываются
             фронт-контроллером (front controller) и перенаправляются отдельным
@@ -17,7 +19,7 @@
             производится по запрошенному URL.
         </para>
         <para>
-            Система <code>Zend_Controller</code> построена с расчетом на
+            Система <classname>Zend_Controller</classname> построена с расчетом на
             расширяемость как через наследование от уже существующих классов
             и написание новых классов, реализующих различные интерфейсы и
             абстрактные классы, образующих основу семейства классов
@@ -32,7 +34,7 @@
         <para>
             Если вам нужна более подробная информация, то сразу переходите к
             следующим разделам. Если хотите быстро начать работать с
-            <code>Zend_Controller</code>, то читайте далее.
+            <classname>Zend_Controller</classname>, то читайте далее.
         </para>
 
         <sect3 id="zend.controller.quickstart.go.directory">
@@ -89,13 +91,28 @@ RewriteRule ^.*$ - [NC,L]
 RewriteRule ^.*$ index.php [NC,L]
 ]]>
             </programlisting>
-            
+
+            <note>
+                <title>Узнайте больше о mod_rewrite</title>
+
+                <para>
+                    Приведенные выше правила перезаписи позволяют получить
+                    доступ к любому файлу в корневой для веб-документов
+                    директории вашего виртуального хоста. Если
+                    в ней есть файлы, которые нужно скрыть от посторонних глаз,
+                    то вы наверное захотите установить более строгие правила.
+                    Перейдите на сайт Apache, чтобы
+                    <ulink
+                        url="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">узнать больше о mod_rewrite</ulink>.
+                </para>
+            </note>
+
             <para>
                 Если у вас IIS 7.0, то используйте следующую
                 конфигурацию перезаписи:
             </para>
 
-            <programlisting role="xml"><![CDATA[
+            <programlisting language="xml"><![CDATA[
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
      <system.webServer>
@@ -152,8 +169,7 @@ RewriteRule ^.*$ index.php [NC,L]
 
             <programlisting language="php"><![CDATA[
 Zend_Controller_Front::run('/path/to/app/controllers');
-]]>
-            </programlisting>
+]]></programlisting>
 
             <para>
                 Этот код выполняет инстанцирование и запуск фронт-контроллера,
@@ -180,7 +196,7 @@ Zend_Controller_Front::run('/path/to/app/controllers');
             </para>
 
             <para>
-                Диспетчер <code>Zend_Controller</code> принимает значение
+                Диспетчер <classname>Zend_Controller</classname>-а принимает значение
                 контроллера и находит соответствующий ему класс. По умолчанию
                 это имя контроллера, начинающееся с заглавной буквы и со словом
                 <code>Controller</code> в конце. Таким образом, контроллер
@@ -216,8 +232,7 @@ class IndexController extends Zend_Controller_Action
     {
     }
 }
-]]>
-            </programlisting>
+]]></programlisting>
 
             <para>
                 По умолчанию включен помощник действий <link
@@ -225,7 +240,7 @@ class IndexController extends Zend_Controller_Action
                 Это означает, что, просто определив метод действия и
                 соответствующий скрипт вида, вы получите рендеринг контента.
                 По умолчанию в MVC в качестве "вида" используется
-                <code>Zend_View</code>. <code>render()</code> использует имя
+                <classname>Zend_View</classname>. <code>render()</code> использует имя
                 контроллера (например, <code>index</code>) и имя текущего
                 действия (например, <code>index</code>) для определения того,
                 какой шаблон тянуть. По умолчанию шаблоны имеют расширение
@@ -266,8 +281,7 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     <h1>Hello, World!</h1>
 </body>
 </html>
-]]>
-            </programlisting>
+]]></programlisting>
         </sect3>
 
         <sect3 id="zend.controller.quickstart.go.errorhandler">
@@ -289,8 +303,7 @@ class ErrorController extends Zend_Controller_Action
     {
     }
 }
-]]>
-            </programlisting>
+]]></programlisting>
 
             <para>
                 Согласно уже обсуждаемой выше структуре директорий этот файл
@@ -315,8 +328,7 @@ PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     <p>An error occurred; please try again later.</p>
 </body>
 </html>
-]]>
-            </programlisting>
+]]></programlisting>
         </sect3>
 
         <sect3 id="zend.controller.quickstart.go.finish">

+ 23 - 23
documentation/manual/ru/module_specs/Zend_Controller-Request.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.controller.request">
     <title>Объект запроса</title>
     <sect2 id="zend.controller.request.introduction">
@@ -6,7 +8,7 @@
             Объект запроса - это простой "объект значений"
             (<ulink url="http://www.patternsforphp.com/wiki/Value_Object">value
             object</ulink>), который передается между
-            <code>Zend_Controller_Front</code>, маршрутизатором,
+            <classname>Zend_Controller_Front</classname>, маршрутизатором,
             диспетчером и контроллерами. Он хранит в себе имена запрошенных
             модуля, контроллера, действия и необязательные параметры, а также
             остальную среду (переменные) запроса, будь это HTTP, CLI или
@@ -45,7 +47,7 @@
         <para>
             Методов, которые можно использовать в запросе, может быть больше, в
             зависимости от типа запроса. Например, используемый по умолчанию
-            запрос <code>Zend_Controller_Request_Http</code> имеет методы для
+            запрос <classname>Zend_Controller_Request_Http</classname> имеет методы для
             получения URI запроса, пути в нем, параметров <code>$_GET</code> и
             <code>$_POST</code>, и т.д.
         </para>
@@ -76,7 +78,7 @@
             <title>Доступ к данным запроса</title>
 
             <para>
-                <code>Zend_Controller_Request_Http</code> инкапсулирует доступ к
+                <classname>Zend_Controller_Request_Http</classname> инкапсулирует доступ к
                 соответствующим значениям, таким, как имя и значение ключа для
                 переменных контроллера и действия, и все дополнительные
                 параметры, полученные из URI. Он также позволяет обращаться
@@ -92,7 +94,7 @@
                 <title>Суперглобальные данные</title>
                 <para>
                     Когда получаете доступ к суперглобальным данным через
-                    <code>Zend_Controller_Request_Http</code> как к публичным
+                    <classname>Zend_Controller_Request_Http</classname> как к публичным
                     свойствам, то необходимо помнить, что имя свойства (ключ
                     суперглобального массива) сопоставляются с суперглобальными
                     массивами в определенной последовательности: 1. GET,
@@ -189,20 +191,19 @@
                     <code>$_SERVER['REQUEST_URI']</code>. Если вы используете
                     такие установки и получаете неверную маршрутизацию, то
                     должны использовать для своего объекта запроса класс
-                    <code>Zend_Controller_Request_Apache404</code> вместо
-                    <code>Zend_Controller_Request_Http</code>, используемого по
+                    <classname>Zend_Controller_Request_Apache404</classname> вместо
+                    <classname>Zend_Controller_Request_Http</classname>, используемого по
                     умолчанию.
                 </para>
 
                 <programlisting language="php"><![CDATA[
 $request = new Zend_Controller_Request_Apache404();
 $front->setRequest($request);
-]]>
-                </programlisting>
+]]></programlisting>
 
                 <para>
                     Этот класс расширяет
-                    <code>Zend_Controller_Request_Http</code> и просто изменяет
+                    <classname>Zend_Controller_Request_Http</classname> и просто изменяет
                     автоопределение URI запроса. Он может использоваться в
                     качестве замены.
                 </para>
@@ -214,9 +215,9 @@ $front->setRequest($request);
             <title>Базовый URL и поддиректории</title>
 
             <para>
-                <code>Zend_Controller_Request_Http</code> позволяет использовать
-                <code>Zend_Controller_Router_Rewrite</code> в поддиректориях.
-                <code>Zend_Controller_Request_Http</code> попытается автоматически
+                <classname>Zend_Controller_Request_Http</classname> позволяет использовать
+                <classname>Zend_Controller_Router_Rewrite</classname> в поддиректориях.
+                <classname>Zend_Controller_Request_Http</classname> попытается автоматически
                 определить ваш базовый URL и соответствующим образом установить
                 его.
             </para>
@@ -250,10 +251,10 @@ $front->setRequest($request);
                 Если базовый URL определяется некорректно, то вы можете заменить
                 его своим базовым путем с помощью метода
                 <code>setBaseUrl()</code>, который есть в классах
-                <code>Zend_Http_Request</code>,
-                <code>Zend_Controller_Request_Http</code> и
-                <code>Zend_Controller_Front</code>. Легче всего установить его
-                через <code>Zend_Controller_Front</code>, который в свою очередь
+                <classname>Zend_Http_Request</classname>,
+                <classname>Zend_Controller_Request_Http</classname> и
+                <classname>Zend_Controller_Front</classname>. Легче всего установить его
+                через <classname>Zend_Controller_Front</classname>, который в свою очередь
                 установит его в объекте запроса. Пример установки своего
                 базового URL:
             </para>
@@ -268,8 +269,7 @@ $controller->setControllerDirectory('./application/controllers')
            ->setRouter($router)
            ->setBaseUrl('/projects/myapp'); // установка базового URL!
 $response   = $controller->dispatch();
-]]>
-            </programlisting>
+]]></programlisting>
 
         </sect3>
 
@@ -302,7 +302,8 @@ $response   = $controller->dispatch();
             <title>Определение запросов AJAX</title>
 
             <para>
-                <code>Zend_Controller_Request_Http</code> имеет зачаточный метод
+                <classname>Zend_Controller_Request_Http</classname> имеет
+                рудиментарный метод
                 для определения запросов AJAX: <code>isXmlHttpRequest()</code>.
                 Этот метод проверяет наличие заголовка HTTP-запроса
                 <code>X-Requested-With</code> со значением 'XMLHttpRequest'.
@@ -326,7 +327,7 @@ $response   = $controller->dispatch();
                 заголовки HTTP-запросов. Если ваша библиотека не отправляет этот
                 заголовок, то просто добавьте его в качестве заголовка ответа,
                 чтобы быть уверенным в том, что метод
-                <code>isXmlHttpRequest()</code> работает для вас.
+                <code>isXmlHttpRequest()</code> работает в вашем случае.
             </para>
         </sect3>
     </sect2>
@@ -336,7 +337,7 @@ $response   = $controller->dispatch();
 
         <para>
             Базовый класс запроса, используемый для всех объектов запроса, -
-            абстрактный класс <code>Zend_Controller_Request_Abstract</code>.
+            абстрактный класс <classname>Zend_Controller_Request_Abstract</classname>.
             Он определяет следующие методы:
         </para>
 
@@ -422,8 +423,7 @@ abstract class Zend_Controller_Request_Abstract
      */
     public function isDispatched();
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Объект запроса является контейнером для переменных запроса. Цепочке

+ 14 - 19
documentation/manual/ru/module_specs/Zend_Controller-Response.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.controller.response">
     <title>Объект ответа</title>
 
@@ -17,8 +19,7 @@
 
         <programlisting language="php"><![CDATA[
 $front->throwExceptions(true);
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Для отправки выходных данных, включая заголовки, используйте
@@ -27,8 +28,7 @@ $front->throwExceptions(true);
 
         <programlisting language="php"><![CDATA[
 $response->sendResponse();
-]]>
-        </programlisting>
+]]></programlisting>
 
         <note>
             <para>
@@ -49,8 +49,7 @@ $response = $front->dispatch();
 // производим необходимые манипуляции с данными (например,
 // журналирование), затем отправляем выходные данные:
 $response->sendResponse();
-]]>
-            </programlisting>
+]]></programlisting>
         </note>
 
         <para>
@@ -65,8 +64,7 @@ $response->sendResponse();
 $this->getResponse()
     ->setHeader('Content-Type', 'text/html')
     ->appendBody($content);
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Этим достигается то, что все заголовки будут отправлены
@@ -118,8 +116,7 @@ $response = $front->dispatch();
 
 // В конце выводим ответ
 $response->sendResponse();
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             По умолчанию сообщения исключений не отображаются. Это поведение
@@ -142,8 +139,7 @@ $response->sendResponse();
 // или:
 $front->throwExceptions(true);
 $front->dispatch();
-]]>
-        </programlisting>
+]]></programlisting>
     </sect2>
 
     <sect2 id="zend.controller.response.headers">
@@ -308,8 +304,7 @@ class MyController extends Zend_Controller_Action
         $this->render();
     }
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             В примере выше вызов <code>/my/foo</code> приведет к тому, что
@@ -323,8 +318,7 @@ array(
     'default' => ..., // содержимое тела страницы из MyController::fooAction()
     'footer'  => ...  // содержимое низа страницы
 );
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Рендеринг производится в том порядке, в котором элементы
@@ -509,9 +503,10 @@ array(
 
         <para>
             Базовым классом ответа является
-            <code>Zend_Controller_Response_Abstract</code>, все создаваемые
-            вами подклассы должны наследовать от него или одного из его
-            потомков. Доступные методы были перечислены в предыдущих разделах.
+            <classname>Zend_Controller_Response_Abstract</classname>, все
+            создаваемые вами подклассы должны наследовать от него или одного из
+            его потомков. Доступные методы были перечислены в предыдущих
+            разделах.
         </para>
 
         <para>

+ 191 - 0
documentation/manual/ru/module_specs/Zend_Controller-Router-Route-Chain.xml

@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
+<sect3 id="zend.controller.router.routes.chain">
+    <title>Zend_Controller_Router_Route_Chain</title>
+
+    <para>
+        <classname>Zend_Controller_Router_Route_Chain</classname>
+        является маршрутом, который позволяет объединять несколько маршрутов
+        между собой. Это позволяет, например, объединять маршруты по имени
+        хоста с маршрутами по пути или несколько маршрутов по пути.
+        Объединение может быть произведено программным путем или в
+        конфигурационном файле.
+    </para>
+
+    <note>
+        <title>Приоритет параметров</title>
+        <para>
+            При объединении маршрутов параметры внешнего маршрута имеют
+            больший приоритет, чем параметры внутреннего маршрута. 
+            Таким образом, если вы определили контроллер одновременно во
+            внутреннем и внешнем маршрутах, то будет выбран контроллер из
+            внешнего маршрута.
+        </para>
+    </note>
+    
+    <para>
+        При объединении маршрутов программным путем есть два способа достижения
+        этого. Первый состоит в создании нового экземпляра класса
+        <classname>Zend_Controller_Router_Route_Chain</classname>
+        и последующем вызове метода <code>chain</code> несколько раз
+        со всеми маршрутами, которые должны быть объединены между собой.
+        Другой состоит в том, чтобы брать первый маршрут, например, маршрут по
+        имени хоста, и вызывать его метод <code>chain</code> с маршрутом,
+        который должен быть добавлен к нему.
+        При этом маршрут по имени хоста не изменяется, но будет
+        возвращен новый экземпляр класса
+        <classname>Zend_Controller_Router_Route_Chain</classname>, который
+        объединяет в себе два маршрута:
+    </para>
+
+    <programlisting language="php"><![CDATA[
+// Создаются два маршрута
+$hostnameRoute = new Zend_Controller_Router_Route_Hostname(...);
+$pathRoute     = new Zend_Controller_Router_Route(...);
+
+// Первый способ - объединение через маршрут-"цепочку
+$chainedRoute = new Zend_Controller_Router_Route_Chain();
+$chainedRoute->chain($hostnameRoute)
+             ->chain($pathRoute);
+
+// Второй способ - непосредственное объединение
+$chainedRoute = $hostnameRoute->chain($pathRoute);
+]]></programlisting>
+
+    <para>
+        При объединении маршрутов их разделителем по умолчанию будет
+        косая черта. Но может понадобиться использовать и другие разделители:
+    </para>
+
+    <programlisting language="php"><![CDATA[
+// Создаются два маршрута
+$firstRoute  = new Zend_Controller_Router_Route('foo');
+$secondRoute = new Zend_Controller_Router_Route('bar');
+
+// Объединение с использованием другого разделителя
+$chainedRoute = $firstRoute->chain($secondRoute, '-');
+
+// Результирующий маршрут: "foo-bar"
+echo $chainedRoute->assemble();
+]]></programlisting>
+
+    <sect4 id="zend.controller.router.routes.chain.config">
+        <title>Объединение маршрутов через Zend_Config</title>
+
+        <para>
+            Для объединения маршрутов в конфигурационном файле есть
+            дополнительные параметры. Наиболее простой способ состоит в
+            использовании параметра <code>chains</code>.
+            Это просто список маршрутов, которые будут
+            объединены с родительским. Ни родительский, ни дочерний
+            маршруты не будут добавлены в маршрутизатор напрямую, в него будет
+            добавлен только составленный из них маршрут. Имя объединенного
+            маршрута в маршрутизаторе будет состоять из имени родительского
+            маршрута и имени дочернего маршрута, объединенных с использованием
+            тире (-). Простая конфигурация в формате XML может выглядеть
+            следующим образом:
+        </para>
+
+        <programlisting language="xml"><![CDATA[
+<routes>
+    <www type="Zend_Controller_Router_Route_Hostname">
+        <route>www.example.com</route>
+        <chains>
+            <language type="Zend_Controller_Router_Route">
+                <route>:language</route>
+                <reqs language="[a-z]{2}">
+                <chains>
+                    <index type="Zend_Controller_Router_Route_Static">
+                        <route></route>
+                        <defaults module="default" controller="index" action="index" />
+                    </index>
+                    <imprint type="Zend_Controller_Router_Route_Static">
+                        <route>imprint</route>
+                        <defaults module="default" controller="index" action="index" />
+                    </imprint>
+                </chains>
+            </language>
+        </chains>
+    </www>
+    <users type="Zend_Controller_Router_Route_Hostname">
+        <route>users.example.com</route>
+        <chains>
+            <profile type="Zend_Controller_Router_Route">
+                <route>:username</route>
+                <defaults module="users" controller="profile" action="index" />
+            </profile>
+        </chains>
+    </users>
+    <misc type="Zend_Controller_Router_Route_Static">
+        <route>misc</route>
+    </misc>
+</routes>
+]]></programlisting>
+
+        <para>
+            Результатом будет три маршрута: <code>www-language-index</code>,
+            <code>www-language-imprint</code> и <code>users-language-profile</code>,
+            которые будут соответствовать только именам хоста, подходящим под
+            заданные определения, и маршрут <code>misc</code>, который будет
+            соответствовать любым именам хоста.
+        </para>
+
+        <para>
+            Альтернативный способ создания объединенных маршрутов состоит в
+            применении параметра <code>chain</code>,
+            который может использоваться только с маршрутами типа
+            <classname>Zend_Controller_Router_Route_Chain</classname>,
+            эти маршруты указываются на том же уровне, что и остальные:
+        </para>
+
+        <programlisting language="xml"><![CDATA[
+<routes>
+    <www type="Zend_Controller_Router_Route_Chain">
+        <route>www.example.com</route>
+    </www>
+    <language type="Zend_Controller_Router_Route">
+        <route>:language</route>
+        <reqs language="[a-z]{2}">
+    </language>
+    <index type="Zend_Controller_Router_Route_Static">
+        <route></route>
+        <defaults module="default" controller="index" action="index" />
+    </index>
+    <imprint type="Zend_Controller_Router_Route_Static">
+        <route>imprint</route>
+        <defaults module="default" controller="index" action="index" />
+    </imprint>
+
+    <www-index type="Zend_Controller_Router_Route_Chain">
+        <chain>www, language, index</chain>
+    </www-index>
+    <www-imprint type="Zend_Controller_Router_Route_Chain">
+        <chain>www, language, imprint</chain>
+    </www-imprint>
+</routes>
+]]></programlisting>
+
+        <para>
+            Вы можете также передавать параметр <code>chain</code> в виде
+            массива вместо перечисления маршрутов через запятую:
+        </para>
+
+        <programlisting language="xml"><![CDATA[
+<routes>
+    <www-index type="Zend_Controller_Router_Route_Chain">
+        <chain>www</chain>
+        <chain>language</chain>
+        <chain>index</chain>
+    </www-index>
+    <www-imprint type="Zend_Controller_Router_Route_Chain">
+        <chain>www</chain>
+        <chain>language</chain>
+        <chain>imprint</chain>
+    </www-imprint>
+</routes>
+]]></programlisting>
+    </sect4>
+</sect3>
+<!--
+vim:se ts=4 sw=4 et:
+-->

+ 11 - 77
documentation/manual/ru/module_specs/Zend_Controller-Router-Route-Hostname.xml

@@ -1,10 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect3 id="zend.controller.router.routes.hostname">
     <title>Zend_Controller_Router_Route_Hostname</title>
 
     <para>
-        <code>Zend_Controller_Router_Route_Hostname</code> является маршрутом,
-        основанным на имени хоста. Он работает аналогично стандартному маршруту,
-        но использует имя хоста в URL вместо пути.
+        <classname>Zend_Controller_Router_Route_Hostname</classname> является
+        маршрутом, основанным на имени хоста. Он работает аналогично
+        стандартному маршруту, но использует имя хоста в URL вместо пути.
     </para>
 
     <para>
@@ -27,13 +29,12 @@ $hostnameRoute = new Zend_Controller_Router_Route_Hostname(
 $plainPathRoute = new Zend_Controller_Router_Route_Static('');
 
 $router->addRoute('user', $hostnameRoute->chain($plainPathRoute);
-]]>
-    </programlisting>
+]]></programlisting>
 
     <para>
         Первым параметром в конструкторе
-        <code>Zend_Controller_Router_Route_Hostname</code> является определение
-        маршрута, которое будет сопоставляться с именем хоста.
+        <classname>Zend_Controller_Router_Route_Hostname</classname> является
+        определение маршрута, которое будет сопоставляться с именем хоста.
         Определения маршрутов содержат статические и динамические части,
         разделенные точкой ('.'). Динамические части, называемые
         переменными, помечаются знаком двоеточия:
@@ -44,83 +45,16 @@ $router->addRoute('user', $hostnameRoute->chain($plainPathRoute);
     <para>
         Технически маршруты по имени хоста могут использоваться сами по
         себе, но этого никогда не следует делать по той причине, что
-        отдельно такой маршрут может соответствовать любому
+        сам по себе такой маршрут может соответствовать любому
         пути. Поэтому нужно объединять маршруты по имени хоста
         с маршрутами по пути. Это можно делать так, как
         показано в примере выше - путем вызова
         <code>$hostnameRoute->chain($pathRoute);</code>.
         При этом <code>$hostnameRoute</code> не изменяется, но будет
         возвращен новый маршрут
-        (<code>Zend_Controller_Router_Route_Chain</code>), который может быть
-        передан маршрутизатору.
+        (<classname>Zend_Controller_Router_Route_Chain</classname>), который
+        может быть передан маршрутизатору.
     </para>
-
-    <note>
-        <title>Приоритет параметров</title>
-        <para>
-            При объединении маршрутоа по имени хоста и маршрута по пути
-            параметры маршрута по имени хоста имеют больший приоритет.
-            Таким образом, если вы определили контроллер одновременно в
-            маршрутах обоих типов, то будет выбран контроллер из
-            маршрута по имени хоста.
-        </para>
-    </note>
-
-    <sect4 id="zend.controller.router.routes.hostname.config">
-        <title>Указание маршрутов по имени хоста через <code>Zend_Config</code></title>
-
-        <para>
-            Для объединения маршрутов по имени хоста и по пути есть
-            дополнительный параметр для конфигурации -
-            <code>chains</code>. Это просто список маршрутов, который будет
-            объединен с родительским маршрутом. Ни родительский, ни дочерний
-            маршруты не будут добавлены в маршрутизатор напрямую, в него будет
-            добавлен только составленный из них маршрут. Имя объединенного
-            маршрута в маршрутизаторе будет состоять из имени родительского
-            маршрута и имени дочернего маршрута, объединенных с использованием
-            тире (-). Простая конфигугация в формате XML может выглядеть
-            следующим образом:
-        </para>
-
-        <programlisting role="xml"><![CDATA[
-<routes>
-    <www type="Zend_Controller_Router_Route_Hostname">
-        <route>www.example.com</route>
-        <chains>
-            <index type="Zend_Controller_Router_Route_Static">
-                <route></route>
-                <defaults module="default" controller="index" action="index" />
-            </index>
-            <imprint type="Zend_Controller_Router_Route_Static">
-                <route>imprint</route>
-                <defaults module="default" controller="index" action="index" />
-            </imprint>
-        </chains>
-    </www>
-    <users type="Zend_Controller_Router_Route_Hostname">
-        <route>users.example.com</route>
-        <chains>
-            <profile type="Zend_Controller_Router_Route">
-                <route>:username</route>
-                <defaults module="users" controller="profile" action="index" />
-            </profile>
-        </chains>
-    </users>
-    <misc type="Zend_Controller_Router_Route_Static">
-        <route>misc</route>
-    </misc>
-</routes>
-]]>
-        </programlisting>
-
-        <para>
-            Результатом будет три маршрута: <code>www-index</code>,
-            <code>www-imprint</code> и <code>users-profile</code>,
-            которые будут соответствовать только именам хоста, подходящим под
-            заданные определения, и маршрут <code>misc</code>, который будет
-            соответствовать любым именам хоста.
-        </para>
-    </sect4>
 </sect3>
 <!--
 vim:se ts=4 sw=4 et:

+ 13 - 23
documentation/manual/ru/module_specs/Zend_Controller-Router-Route-Regex.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect3 id="zend.controller.router.routes.regex">
     <title>Zend_Controller_Router_Route_Regex</title>
 
@@ -26,8 +28,7 @@ $route = new Zend_Controller_Router_Route_Regex(
     )
 );
 $router->addRoute('archive', $route);
-]]>
-    </programlisting>
+]]></programlisting>
 
     <para>
         Каждый определенный подшаблон регулярного выражения будет внедрен в
@@ -42,8 +43,7 @@ $values = array(
     'controller' => 'archive',
     'action'     => 'show'
 );
-]]>
-    </programlisting>
+]]></programlisting>
 
     <note>
         <para>
@@ -85,8 +85,7 @@ public function showAction()
     $request = $this->getRequest();
     $year    = $request->getParam(1); // $year = '2006';
 }
-]]>
-    </programlisting>
+]]></programlisting>
 
     <note>
         <para>
@@ -114,8 +113,7 @@ $route = new Zend_Controller_Router_Route_Regex(
     )
 );
 $router->addRoute('archive', $route);
-]]>
-    </programlisting>
+]]></programlisting>
 
     <para>
         А теперь давайте обратимся к проблеме, которую вы, должно быть, заметили
@@ -139,8 +137,7 @@ $route = new Zend_Controller_Router_Route_Regex(
     )
 );
 $router->addRoute('archive', $route);
-]]>
-    </programlisting>
+]]></programlisting>
 
     <para>
         Это приведет к тому, что в объект запроса будут добавлены следующие
@@ -153,8 +150,7 @@ $values = array(
     'controller' => 'archive',
     'action'     => 'show'
 );
-]]>
-    </programlisting>
+]]></programlisting>
 
     <para>
         Для того, чтобы соответствия работали в любом окружении, они могут быть
@@ -162,7 +158,6 @@ $values = array(
         переменных, так и индексы подшаблонов:
     </para>
 
-
     <programlisting language="php"><![CDATA[
 $route = new Zend_Controller_Router_Route_Regex(
     'archive/(\d+)',
@@ -177,8 +172,7 @@ $route = new Zend_Controller_Router_Route_Regex(
     array( ... ),
     array('year' => 1)
 );
-]]>
-    </programlisting>
+]]></programlisting>
 
     <note>
         <para>
@@ -198,8 +192,7 @@ $route = new Zend_Controller_Router_Route_Regex(
     array( ... ),
     array('year' => 1)
 );
-]]>
-    </programlisting>
+]]></programlisting>
 
     <para>
         Это приведет к тому, что в объекте запроса будут значения с разными
@@ -215,8 +208,7 @@ $values = array(
     'controller' => 'archive',
     'action'     => 'show'
 );
-]]>
-    </programlisting>
+]]></programlisting>
 
     <para>
         Поскольку регулярные выражения трудно реверсировать, то вам нужно будет
@@ -233,8 +225,7 @@ $route = new Zend_Controller_Router_Route_Regex(
     array('year' => 1),
     'archive/%s'
 );
-]]>
-    </programlisting>
+]]></programlisting>
 
     <para>
         Все это можно реализовать через объект стандартного маршрута, поэтому вы
@@ -263,8 +254,7 @@ $route = new Zend_Controller_Router_Route_Regex(
     'blog/archive/%d-%s.html'
 );
 $router->addRoute('blogArchive', $route);
-]]>
-    </programlisting>
+]]></programlisting>
 
     <para>
         Как вы можете видеть, маршруты Regex дают несравненно большую гибкость

+ 3 - 2
documentation/manual/ru/module_specs/Zend_Controller-Router-Route-Static.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect3 id="zend.controller.router.routes.static">
     <title>Zend_Controller_Router_Route_Static</title>
 
@@ -15,8 +17,7 @@ $route = new Zend_Controller_Router_Route_Static(
     array('controller' => 'auth', 'action' => 'login')
 );
 $router->addRoute('login', $route);
-]]>
-    </programlisting>
+]]></programlisting>
 
     <para>
         Этот маршрут будет соответствовать URL

+ 201 - 23
documentation/manual/ru/module_specs/Zend_Controller-Router-Route.xml

@@ -1,8 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect3 id="zend.controller.router.routes.standard">
     <title>Zend_Controller_Router_Route</title>
 
     <para>
-        <code>Zend_Controller_Router_Route</code> - стандартный маршрут
+        <classname>Zend_Controller_Router_Route</classname> - стандартный маршрут
         фреймворка. Он сочетает в себе легкость использования и гибкость
         определения маршрутов. Каждый маршрут состоит в основном из карты URL
         (статических и динамических частей (переменных)), и может быть
@@ -27,11 +29,10 @@ $route = new Zend_Controller_Router_Route(
 );
 
 $router->addRoute('user', $route);
-]]>
-    </programlisting>
+]]></programlisting>
 
     <para>
-        Первый параметр конструктора <code>Zend_Controller_Router_Route</code> -
+        Первый параметр конструктора <classname>Zend_Controller_Router_Route</classname> -
         определение маршрута, которое будет сопоставляться с URL. Определения
         маршрутов содержат статические и динамические части, разделенные
         символом косой черты ('/'). Статические части являются обычным текстом:
@@ -56,7 +57,7 @@ $router->addRoute('user', $route);
         Этот маршрут должен сработать, когда вы вводите
         <code>http://domain.com/author/martel</code> в своем броузере, в этом
         случае все его переменные будут добавлены в объект
-        <code>Zend_Controller_Request</code> и будут доступны в вашем
+        <classname>Zend_Controller_Request</classname> и будут доступны в вашем
         контроллере <code>ProfileController</code>.
         Переменные, возвращаемые в этом примере, могут быть представленые в виде
         следующего массива пар ключ/значение:
@@ -68,11 +69,10 @@ $values = array(
     'controller' => 'profile',
     'action'     => 'userinfo'
 );
-]]>
-    </programlisting>
+]]></programlisting>
 
     <para>
-        Затем <code>Zend_Controller_Dispatcher_Standard</code> должен вызвать
+        Затем <classname>Zend_Controller_Dispatcher_Standard</classname> должен вызвать
         метод <code>userinfoAction()</code> вашего класса
         <code>ProfileController</code> (используется модуль по умолчанию),
         основываясь на этих значениях. Вы сможете получать эти переменные через
@@ -88,8 +88,7 @@ public function userinfoAction()
 
     $username = $this->_getParam('username');
 }
-]]>
-    </programlisting>
+]]></programlisting>
 
     <para>
         Определение маршрута может содержать в себе еще один специальный символ
@@ -105,8 +104,7 @@ $route = new Zend_Controller_Router_Route(
     array('module' => 'default')
 );
 $router->addRoute('default', $route);
-]]>
-    </programlisting>
+]]></programlisting>
 
     <sect4 id="zend.controller.router.routes.standard.variable-defaults">
         <title>Значения переменных по умолчанию</title>
@@ -114,7 +112,7 @@ $router->addRoute('default', $route);
         <para>
             Любая переменная в маршруте может иметь значение по умолчанию, для
             этого используется второй параметр конструктора
-            <code>Zend_Controller_Router_Route</code>. Этот параметр является
+            <classname>Zend_Controller_Router_Route</classname>. Этот параметр является
             массивом с ключами, представляющими имена переменных, и со
             значениями в качестве значений переменных по умолчанию:
         </para>
@@ -125,8 +123,7 @@ $route = new Zend_Controller_Router_Route(
     array('year' => 2006)
 );
 $router->addRoute('archive', $route);
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Маршрут выше будет соответствовать URL-ам
@@ -136,11 +133,11 @@ $router->addRoute('archive', $route);
         </para>
 
         <para>
-            В этом примере переменная year будет добавлена в объект запроса.
+            В этом примере переменная <code>year</code> будет добавлена в объект запроса.
             Поскольку не была предоставлена информация для маршрутизации (не
-            определены параметры controller и action), то управление будет
+            определены параметры <code>controller</code> и <code>action</code>), то управление будет
             передано контроллеру и методу действия, используемым по умолчанию
-            (оба определены в <code>Zend_Controller_Dispatcher_Abstract</code>).
+            (оба определены в <classname>Zend_Controller_Dispatcher_Abstract</classname>).
             Для того, чтобы сделать этот пример более полезным, нужно
             передать действительные контроллер и действие в качестве значений по
             умолчанию:
@@ -156,8 +153,7 @@ $route = new Zend_Controller_Router_Route(
     )
 );
 $router->addRoute('archive', $route);
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             В результате будет вызван метод <code>showAction()</code> класса
@@ -171,7 +167,7 @@ $router->addRoute('archive', $route);
 
         <para>
             Можно передать конструктору
-            <code>Zend_Controller_Router_Route</code> третий параметр, в котором
+            <classname>Zend_Controller_Router_Route</classname> третий параметр, в котором
             установлены требования к переменным. Они определяются как части
             регулярных выражений:
         </para>
@@ -187,8 +183,7 @@ $route = new Zend_Controller_Router_Route(
     array('year' => '\d+')
 );
 $router->addRoute('archive', $route);
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             В случае маршрута, определенного таким образом, маршрутизатор будет
@@ -200,6 +195,189 @@ $router->addRoute('archive', $route);
             переход к следующему маршруту в цепочке.
         </para>
     </sect4>
+
+    <sect4 id="zend.controller.router.routes.standard.translated-segments">
+        <title>Переводимые сегменты</title>
+
+        <para>
+            Стандартный маршрут поддерживает переводимые сегменты. Для того,
+            чтобы использовать эту возможность, нужно как минимум указать,
+            какой переводчик (экземпляр <classname>Zend_Translate</classname>)
+            должен использоваться - одним из следующих способов:
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    Поместить его в реестр с ключом <code>Zend_Translate</code>.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    Установить через статический метод
+                    <classname>Zend_Controller_Router_Route::setDefaultTranslator()</classname>.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    Передать его конструктору в качестве четвертого параметра.
+                </para>
+            </listitem>
+        </itemizedlist>
+
+        <para>
+            По умолчанию используется локаль, указанная в экземпляре
+            <classname>Zend_Translate</classname>. Для того, чтобы
+            переопределить ее, вы можете установить ее значение (экземпляр
+            <classname>Zend_Locale</classname> или строка с локалью)
+            одним из следующих способов:
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    Поместить ее в реестр с ключом
+                    <classname>Zend_Locale</classname>.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    Установить через статический метод
+                    <classname>Zend_Controller_Router_Route::setDefaultLocale()</classname>.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    Передать ее конструктору в качестве пятого параметра.
+                </para>
+            </listitem>
+            <listitem>
+                <para>
+                    Передать ее как параметр <code>@locale</code> методу
+                    <code>assemble()</code>.
+                </para>
+            </listitem>
+        </itemizedlist>
+
+        <para>
+            Переводимые сегменты делятся на два типа. У статических
+            сегментов в начале ставится один символ <code>@</code>,
+            они будут переведены в соответствии текущей локалью при сборке URL
+            и преобразованы обратно в идентификатор сообщения при сопоставлении
+            URL с маршрутом.
+            У динамических сегментов в начале ставится <code>:@</code>.
+            При сборке URL данный параметр будет переведен и результат перевода
+            будет добавлен на его место.
+            При сопоставлении переведенный параметр из URL будет преобразован
+            обратно в идентификатор сообщения.
+        </para>
+
+        <note>
+            <title>Идентификаторы сообщений и отдельный языковый файл</title>
+            <para>
+                Может случайно получиться так, что идентификатор сообщения,
+                который вы собираетесь использовать в одном из своих
+                маршрутов, уже используется в ваших скриптах вида или где-то
+                еще.
+                Для того, чтобы иметь полный контроль над вашими
+                URL-ами, следует использовать отдельный языковый файл для
+                сообщений, используемых в маршруте.
+            </para>
+        </note>
+
+        <para>
+            Следующий пример демонстрирует наиболее простой способ подготовки
+            стандартного маршрута с использованием переводимых сегментов:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+// Подготовка переводчика
+$translator = new Zend_Translate('array', array(), 'en');
+$translator->addTranslation(array('archive' => 'archiv',
+                                  'year'    => 'jahr',
+                                  'month'   => 'monat',
+                                  'index'   => 'uebersicht'),
+                            'de');
+
+// Установка текущей локали для переводчика
+$translator->setLocale('en');
+
+// Установка его в качестве используемого по умолчанию для маршрутов
+Zend_Controller_Router_Route::setDefaultTranslator($translator);
+]]></programlisting>
+
+        <para>
+            Этот пример демонстрирует использование статических сегментов:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+// Создание маршрута
+$route = new Zend_Controller_Router_Route(
+    '@archive',
+    array(
+        'controller' => 'archive',
+        'action'     => 'index'
+    )
+);
+$router->addRoute('archive', $route);
+
+// Сборка URL в локали, используемой по умолчанию: archive
+$route->assemble(array());
+
+// Сборка URL в немецкой локали: archiv
+$route->assemble(array());
+]]></programlisting>
+
+        <para>
+            Вы можете использовать динамические сегменты для создания
+            переведенных версий как в случае использования маршрутов основанных
+            на модулях:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+// Создание маршрута
+$route = new Zend_Controller_Router_Route(
+    ':@controller/:@action/*',
+    array(
+        'controller' => 'index',
+        'action'     => 'index'
+    )
+);
+$router->addRoute('archive', $route);
+
+// Сборка URL в локали, используемой по умолчанию: archive/index/foo/bar
+$route->assemble(array('controller' => 'archive', 'foo' => 'bar'));
+
+// Сборка URL в немецкой локали: archiv/uebersicht/foo/bar
+$route->assemble(array('controller' => 'archive', 'foo' => 'bar'));
+]]></programlisting>
+
+        <para>
+            Вы можете также комбинировать статические и динамические сегменты:
+        </para>
+
+        <programlisting language="php"><![CDATA[
+// Создание маршрута
+$route = new Zend_Controller_Router_Route(
+    '@archive/:@mode/:value',
+    array(
+        'mode'       => 'year'
+        'value'      => 2005,
+        'controller' => 'archive',
+        'action'     => 'show'
+    ),
+    array('mode'  => '(month|year)'
+          'value' => '\d+')
+);
+$router->addRoute('archive', $route);
+
+// Сборка URL в локали, используемой по умолчанию: archive/month/5
+$route->assemble(array('mode' => 'month', 'value' => '5'));
+
+// Сборка URL в немецкой локали: archiv/monat/5
+$route->assemble(array('mode' => 'month', 'value' => '5', '@locale' => 'de'));
+]]></programlisting>
+    </sect4>
 </sect3>
 <!--
 vim:se ts=4 sw=4 et:

+ 52 - 59
documentation/manual/ru/module_specs/Zend_Controller-Router.xml

@@ -1,24 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.controller.router"  xmlns:xi="http://www.w3.org/2001/XInclude">
-    <title>Стандартный маршрутизатор: Zend_Controller_Router_Rewrite</title>
+    <title>Стандартный маршрутизатор</title>
     <sect2 id="zend.controller.router.introduction">
         <title>Введение</title>
         <para>
-            <code>Zend_Controller_Router_Rewrite</code> является стандартным
-            маршрутизатором Zend Framework. Маршрутизация - это процесс принятия
+            <classname>Zend_Controller_Router_Rewrite</classname> является стандартным
+            маршрутизатором фреймворка. Маршрутизация - это процесс принятия
             конечной точки URI (той части URI, которая
             идет после базового URL) и ее разложения на параметры
             для определения того, какой контроллер и какое действие этого
             контроллера должны получить запрос. Значения контроллера,
             действия и необязательных параметров сохраняются в объекте
-            <code>Zend_Controller_Request_Http</code>, который затем
+            <classname>Zend_Controller_Request_Http</classname>, который затем
             обрабатывается диспетчером
-            <code>Zend_Controller_Dispatcher_Standard</code>. Маршрутизация
+            <classname>Zend_Controller_Dispatcher_Standard</classname>. Маршрутизация
             производится только один раз – когда вначале
             получен запрос и до того, как первый контроллер будет запущен.
         </para>
 
         <para>
-            <code>Zend_Controller_Router_Rewrite</code> спроектирован для
+            <classname>Zend_Controller_Router_Rewrite</classname> спроектирован для
             того, чтобы обеспечить функциональность, подобную mod_rewrite,
             с использованием чистого PHP. Он отчасти основан на маршрутизации,
             используемой в Ruby on Rails и не требует каких-либо предварительных
@@ -30,11 +32,10 @@
         <programlisting language="php"><![CDATA[
 RewriteEngine on
 RewriteRule !\.(js|ico|gif|jpg|png|css|html)$ index.php
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
-            или (более предпочтителен):
+            или (более предпочтительный вариант):
         </para>
 
         <programlisting language="php"><![CDATA[
@@ -44,8 +45,7 @@ RewriteCond %{REQUEST_FILENAME} -l [OR]
 RewriteCond %{REQUEST_FILENAME} -d
 RewriteRule ^.*$ - [NC,L]
 RewriteRule ^.*$ index.php [NC,L]
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Rewrite Router может также использоваться с веб-сервером IIS версии
@@ -57,8 +57,7 @@ RewriteRule ^.*$ index.php [NC,L]
 
         <programlisting language="php"><![CDATA[
 RewriteRule ^[\w/\%]*(?:\.(?!(?:js|ico|gif|jpg|png|css|html)$)[\w\%]*$)? /index.php [I]
-]]>
-        </programlisting>
+]]></programlisting>
 
         <note>
             <title>IIS Isapi_Rewrite</title>
@@ -66,7 +65,7 @@ RewriteRule ^[\w/\%]*(?:\.(?!(?:js|ico|gif|jpg|png|css|html)$)[\w\%]*$)? /index.
                 Если используется IIS, то <code>$_SERVER['REQUEST_URI']</code>
                 не будет определен, либо будет установлен как пустая
                 строка. В этом случае
-                <code>Zend_Controller_Request_Http</code> попытается
+                <classname>Zend_Controller_Request_Http</classname> попытается
                 использовать <code>$_SERVER['HTTP_X_REWRITE_URL']</code>,
                 значение которого устанавливается расширением Isapi_Rewrite.
             </para>
@@ -77,7 +76,7 @@ RewriteRule ^[\w/\%]*(?:\.(?!(?:js|ico|gif|jpg|png|css|html)$)[\w\%]*$)? /index.
             и он может быть сконфигурирован следующим образом:
         </para>
 
-        <programlisting role="xml"><![CDATA[
+        <programlisting language="xml"><![CDATA[
 <?xml version="1.0" encoding="UTF-8"?>
 <configuration>
      <system.webServer>
@@ -110,14 +109,13 @@ RewriteRule ^[\w/\%]*(?:\.(?!(?:js|ico|gif|jpg|png|css|html)$)[\w\%]*$)? /index.
             правило перезаписи:
         </para>
 
-        <programlisting role="lighttpd"><![CDATA[
+        <programlisting language="lighttpd"><![CDATA[
 url.rewrite-once = (
     ".*\?(.*)$" => "/index.php?$1",
     ".*\.(js|ico|gif|jpg|png|css|html)$" => "$0",
     "" => "/index.php"
 )
-]]>
-        </programlisting>
+]]></programlisting>
     </sect2>
 
     <sect2 id="zend.controller.router.usage">
@@ -139,8 +137,7 @@ $router->addRoute(
                                      array('controller' => 'user',
                                            'action' => 'info'))
 );
-]]>
-        </programlisting>
+]]></programlisting>
     </sect2>
 
     <sect2 id="zend.controller.router.basic">
@@ -151,17 +148,16 @@ $router->addRoute(
             определение пользовательских маршрутов. Маршруты добавляются
             посредством вызовом метода <code>addRoute()</code> и передачей ему
             экземпляра класса, реализующего
-            <code>Zend_Controller_Router_Route</code>. Например:
+            <classname>Zend_Controller_Router_Route</classname>. Например:
         </para>
 
         <programlisting language="php"><![CDATA[
 $router->addRoute('user',
                   new Zend_Controller_Router_Route('user/:username'));
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
-            Rewrite Router поставляется вместе с пятью базовыми типами
+            Rewrite Router поставляется вместе с шестью базовыми типами
             маршрутов (один из которых является специальным):
         </para>
 
@@ -179,6 +175,9 @@ $router->addRoute('user',
                 <xref linkend="zend.controller.router.routes.hostname" />
             </para></listitem>
             <listitem><para>
+                <xref linkend="zend.controller.router.routes.chain" />
+            </para></listitem>
+            <listitem><para>
                 <xref linkend="zend.controller.router.default-routes" /> *
              </para></listitem>
         </itemizedlist>
@@ -202,15 +201,14 @@ $router->addRoute('user',
 
         <note>
             <para>
-                Наиболее часто имя маршрута используется через хелпер
-                <code>Zend_View</code> для URL:
+                Наиболее часто имя маршрута используется через хелпер для URL
+                компоненты <classname>Zend_View</classname>:
             </para>
 
             <programlisting language="php"><![CDATA[
 <a href=
-"<?= $this->url(array('username' => 'martel'), 'user') ?>">Martel</a>
-]]>
-            </programlisting>
+"<?php echo $this->url(array('username' => 'martel'), 'user') ?>">Martel</a>
+]]></programlisting>
 
             <para>
                В результате значением атрибута href будет
@@ -223,7 +221,7 @@ $router->addRoute('user',
             маршрутам и сопоставления их определений с текущим URI запроса.
             Когда найдено соответствие, то из объекта маршрута возвращаются
             значения переменных и добавляются в объект
-            <code>Zend_Controller_Request</code> для дальнейшего использования в
+            <classname>Zend_Controller_Request</classname> для дальнейшего использования в
             диспетчере и пользовательских контроллерах. Если соответствие не
             найдено, то проверяется следующий маршрут в цепочке.
         </para>
@@ -259,7 +257,7 @@ $router->addRoute('user',
         <para>
             Есть три специальные переменные, которые могут использоваться в
             маршрутах: 'module', 'controller' и 'action'. Эти
-            переменные используются диспетчером <code>Zend_Controller_Dispatcher</code>
+            переменные используются диспетчером <classname>Zend_Controller_Dispatcher</classname>
             для нахождения контроллера и действия, которым передается
             управление.
         </para>
@@ -276,10 +274,10 @@ $router->addRoute('user',
     </sect2>
 
     <sect2 id="zend.controller.router.default-routes">
-        <title>Маршруты по умолчанию</title>
+        <title>Маршруты, используемые по умолчанию</title>
 
         <para>
-            <code>Zend_Controller_Router_Rewrite</code> изначально
+            <classname>Zend_Controller_Router_Rewrite</classname> изначально
             сконфигурирован с одним маршрутом по умолчанию, который будет
             соответствовать URI вида <code>контроллер/действие</code>. Кроме
             того, в качестве первого элемента пути может быть указано имя
@@ -330,12 +328,11 @@ http://example/blog/archive/list/sort/alpha/date/desc
     action     == list
     sort       == alpha
     date       == desc
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Маршрутом, используемым по умолчанию, является объект
-            <code>Zend_Controller_Router_Route_Module</code>, сохраненный в
+            <classname>Zend_Controller_Router_Route_Module</classname>, сохраненный в
             RewriteRouter под именем (индексом) 'default'. Он создается
             приблизительно следующим образом:
         </para>
@@ -345,8 +342,7 @@ $compat = new Zend_Controller_Router_Route_Module(array(),
                                                   $dispatcher,
                                                   $request);
 $this->addRoute('default', $compat);
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Если вы не хотите использовать этот маршрут по умолчанию в своей
@@ -359,8 +355,7 @@ $this->addRoute('default', $compat);
         <programlisting language="php"><![CDATA[
 // Удаление всех маршрутов по умолчанию
 $router->removeDefaultRoutes();
-]]>
-        </programlisting>
+]]></programlisting>
 
     </sect2>
 
@@ -372,21 +367,20 @@ $router->removeDefaultRoutes();
             <code>http://domain.com/~user/application-root/</code>), в этом
             случае базовый URL приложения (<code>/~user/application-root</code>)
             должен автоматически определяться в объекте
-            <code>Zend_Controller_Request_Http</code> и соответствующим образом
+            <classname>Zend_Controller_Request_Http</classname> и соответствующим образом
             использоваться.
         </para>
 
         <para>
             Если базовый URL определяется некорректно, то вы можете
             переопределить его через метод <code>setBaseUrl()</code> объекта
-            <code>Zend_Controller_Request_Http</code> (см.
+            <classname>Zend_Controller_Request_Http</classname> (см.
             <xref linkend="zend.controller.request.http.baseurl" />):
         </para>
 
         <programlisting language="php"><![CDATA[
 $request->setBaseUrl('/~user/application-root/');
-]]>
-        </programlisting>
+]]></programlisting>
 
     </sect2>
 
@@ -404,8 +398,7 @@ $request->setBaseUrl('/~user/application-root/');
 
         <programlisting language="php"><![CDATA[
 $router->setGlobalParam('lang', 'en');
-]]>
-        </programlisting>
+]]></programlisting>
     </sect2>
 
     <sect2 id="zend.controller.router.routes">
@@ -422,16 +415,19 @@ $router->setGlobalParam('lang', 'en');
         <xi:include href="Zend_Controller-Router-Route-Hostname.xml">
             <xi:fallback><xi:include href="../../en/module_specs/Zend_Controller-Router-Route-Hostname.xml" /></xi:fallback>
         </xi:include>
+        <xi:include href="Zend_Controller-Router-Route-Chain.xml">
+            <xi:fallback><xi:include href="../../en/module_specs/Zend_Controller-Router-Route-Chain.xml" /></xi:fallback>
+        </xi:include>
     </sect2>
 
     <sect2 id="zend.controller.router.add-config">
-        <title>Использование <code>Zend_Config</code> вместе с RewriteRouter</title>
+        <title>Использование Zend_Config вместе с RewriteRouter</title>
 
         <para>
             Иногда может быть более удобным обновлять конфигурационный файл
             с новыми маршрутами, чем изменять код. Это возможно благодаря методу
             <code>addConfig()</code>. В сущности, вы создаете конфигурацию,
-            совместимую с <code>Zend_Config</code>, считываете ее в своем коде и
+            совместимую с <classname>Zend_Config</classname>, считываете ее в своем коде и
             передаете RewriteRouter.
         </para>
 
@@ -458,20 +454,18 @@ routes.archive.defaults.controller = "archive"
 routes.archive.defaults.action = "show"
 routes.archive.map.1 = "year"
 ; ИЛИ: routes.archive.map.year = 1
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Этот INI-файл может быть затем прочитан в объект
-            <code>Zend_Config</code> как показано ниже:
+            <classname>Zend_Config</classname> как показано ниже:
         </para>
 
         <programlisting language="php"><![CDATA[
 $config = new Zend_Config_Ini('/path/to/config.ini', 'production');
 $router = new Zend_Controller_Router_Rewrite();
 $router->addConfig($config, 'routes');
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             В примере выше мы говорим маршрутизатору, чтобы он использовал
@@ -482,12 +476,12 @@ $router->addConfig($config, 'routes');
             одну или более записей 'defaults'; опционально может быть одна
             или более записей 'reqs' (сокращение от 'required'). Все это
             соответствует трем аргументам, передаваемым объекту
-            <code>Zend_Controller_Router_Route_Interface</code>.
+            <classname>Zend_Controller_Router_Route_Interface</classname>.
             Опция с ключом 'type' может использоваться для определения класса,
             используемого для данного маршрута; по умолчанию используется
-            класс <code>Zend_Controller_Router_Route</code>. В примере выше
+            класс <classname>Zend_Controller_Router_Route</classname>. В примере выше
             для маршрута 'news' должен использоваться класс
-            <code>Zend_Controller_Router_Route_Static</code>.
+            <classname>Zend_Controller_Router_Route_Static</classname>.
         </para>
     </sect2>
 
@@ -505,7 +499,7 @@ $router->addConfig($config, 'routes');
         <para>
             В какой-то момент вы можете захотеть использовать другую парадигму
             маршрутизации. Интерфейс
-            <code>Zend_Controller_Router_Interface</code> дает минимальную
+            <classname>Zend_Controller_Router_Interface</classname> дает минимальную
             информацию, необходимую для создания маршрута и содержит всего один
             метод.
         </para>
@@ -520,8 +514,7 @@ interface Zend_Controller_Router_Interface
    */
   public function route(Zend_Controller_Request_Abstract $request);
 }
-]]>
-        </programlisting>
+]]></programlisting>
 
         <para>
             Маршрутизация производится только один раз - когда в систему

+ 1 - 1
documentation/manual/ru/module_specs/Zend_Db_Adapter.xml

@@ -531,7 +531,7 @@ try {
             для Zend_Db.
         </para>
 
-        <programlisting role="sql"><![CDATA[
+        <programlisting language="sql"><![CDATA[
 CREATE TABLE accounts (
   account_name      VARCHAR(100) NOT NULL PRIMARY KEY
 );

+ 1 - 1
documentation/manual/ru/module_specs/Zend_Db_Profiler.xml

@@ -102,7 +102,7 @@ $db = Zend_Db::factory('PDO_MYSQL', $params);
             <code>Zend_Config</code>, содержащим свойства, аналогичные ключам
             массива, описанного выше. К примеру, файл "config.ini" может
             содержать следующие данные:
-            <programlisting role="ini"><![CDATA[
+            <programlisting language="ini"><![CDATA[
 [main]
 db.profiler.class   = "MyProject_Db_Profiler"
 db.profiler.enabled = true

+ 3 - 3
documentation/manual/ru/module_specs/Zend_Debug.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.debug.dumping">
 
     <title>Дамп переменных</title>
@@ -13,10 +15,8 @@
     <example id="zend.debug.dumping.example">
         <title>Пример использования метода dump()</title>
         <programlisting language="php"><![CDATA[
-
 Zend_Debug::dump($var, $label=null, $echo=true);
-]]>
-        </programlisting>
+]]></programlisting>
     </example>
 
     <para>

+ 1 - 1
documentation/manual/ru/module_specs/Zend_Dom-Query.xml

@@ -118,7 +118,7 @@
                     ссылка со словом 'One' в листинге ниже:
                 </para>
 
-                <programlisting role="html"><![CDATA[
+                <programlisting language="html"><![CDATA[
 <div>
 <table>
     <tr>

+ 2 - 2
documentation/manual/ru/module_specs/Zend_Form-QuickStart.xml

@@ -317,7 +317,7 @@ $element->addDecorators(array(
             Код выше создает вывод наподобие следующего:
         </para>
 
-        <programlisting role="html"><![CDATA[
+        <programlisting language="html"><![CDATA[
 <dt><label for="username" class="required">Username</dt>
 <dd>
     <input type="text" name="username" value="123-abc" />
@@ -600,7 +600,7 @@ class UserController extends Zend_Controller_Action
             ключ для формы ('login'):
         </para>
 
-        <programlisting role="ini"><![CDATA[
+        <programlisting language="ini"><![CDATA[
 [development]
 ; общие метаданные для формы
 user.login.action = "/user/login"

+ 1 - 1
documentation/manual/ru/module_specs/Zend_Search_Lucene-JavaLucene.xml

@@ -74,7 +74,7 @@
 -->
         </para>
 
-        <programlisting role="java"><![CDATA[
+        <programlisting language="java"><![CDATA[
 /**
 * Создание индекса:
 */

+ 2 - 2
documentation/manual/ru/module_specs/Zend_Search_Lucene-Queries.xml

@@ -86,7 +86,7 @@ try {
         Query string:
 -->
         </para>
-        <programlisting role="querystring"><![CDATA[word1]]>
+        <programlisting language="querystring"><![CDATA[word1]]>
         </programlisting>
 
         <para>или</para>
@@ -199,7 +199,7 @@ $hits  = $index->find($query);]]></programlisting>
             Query string:
 -->
         </para>
-        <programlisting role="querystring"><![CDATA[+word1 author:word2 -word3]]></programlisting>
+        <programlisting language="querystring"><![CDATA[+word1 author:word2 -word3]]></programlisting>
 
         <itemizedlist>
             <listitem>

+ 16 - 16
documentation/manual/ru/module_specs/Zend_Search_Lucene-QueryLanguage.xml

@@ -127,11 +127,11 @@ Zend_Search_Lucene::setDefaultSearchField('contents');]]></programlisting>
             you can enter:
 -->
         </para>
-        <programlisting role="querystring"><![CDATA[title:"The Right Way" AND text:go]]></programlisting>
+        <programlisting language="querystring"><![CDATA[title:"The Right Way" AND text:go]]></programlisting>
         <para>
             или
         </para>
-        <programlisting role="querystring"><![CDATA[title:"Do it right" AND go]]></programlisting>
+        <programlisting language="querystring"><![CDATA[title:"Do it right" AND go]]></programlisting>
         <para>
             Если 'text' является полем, используемым по умолчанию, то указание
             поля не требуется.
@@ -148,7 +148,7 @@ Zend_Search_Lucene::setDefaultSearchField('contents');]]></programlisting>
             Note: The field is only valid for the term, phrase or subquery that it directly precedes,
             so the query
 -->
-            <programlisting role="querystring"><![CDATA[title:Do it right]]></programlisting>
+            <programlisting language="querystring"><![CDATA[title:Do it right]]></programlisting>
             будет искать в поле 'title' только "Do". Поиск "it" и "right" будет
             производиться в полях, используемых по умолчанию, если установлены
             поля по умолчанию, или по всем полям, если вместо поля по умолчанию
@@ -203,7 +203,7 @@ Zend_Search_Lucene::setDefaultSearchField('contents');]]></programlisting>
             use the tilde, "~", symbol at the end of a Phrase. For example to search for a "Zend" and
             "Framework" within 10 words of each other in a document use the search:
 -->
-            <programlisting role="querystring"><![CDATA["Zend Framework"~10]]></programlisting>
+            <programlisting language="querystring"><![CDATA["Zend Framework"~10]]></programlisting>
         </para>
     </sect2>
 
@@ -230,7 +230,7 @@ Zend_Search_Lucene::setDefaultSearchField('contents');]]></programlisting>
             Boosting allows you to control the relevance of a document by boosting its term. For example,
             if you are searching for
 -->
-            <programlisting role="querystring"><![CDATA[PHP framework]]></programlisting>
+            <programlisting language="querystring"><![CDATA[PHP framework]]></programlisting>
             и хотите, чтобы элемент 'PHP' был более релевантным, то усильте
             его, используя символ ^ с коэффициентом усиления после этого
             элемента:
@@ -238,7 +238,7 @@ Zend_Search_Lucene::setDefaultSearchField('contents');]]></programlisting>
             and you want the term "PHP" to be more relevant boost it using the ^ symbol along with the
             boost factor next to the term. You would type:
 -->
-            <programlisting role="querystring"><![CDATA[PHP^4 framework]]></programlisting>
+            <programlisting language="querystring"><![CDATA[PHP^4 framework]]></programlisting>
             Это сделает более релевантными те документы, в которых встречается
             элемент 'PHP'. Вы можете также усиливать фразы и подзапросы, как в
             примере ниже:
@@ -247,7 +247,7 @@ Zend_Search_Lucene::setDefaultSearchField('contents');]]></programlisting>
             This will make documents with the term PHP appear more relevant. You can also boost Phrase
             Terms  and subqueries as in the example:
 -->
-            <programlisting role="querystring"><![CDATA["PHP framework"^4 "Zend Framework"]]></programlisting>
+            <programlisting language="querystring"><![CDATA["PHP framework"^4 "Zend Framework"]]></programlisting>
             По умолчанию коэффициент усиления равен 1. Несмотря на то, что
             коэффициент усиления должен быть положительным числом, он может быть
             меньше 1 (например, 0.2).
@@ -310,7 +310,7 @@ Zend_Search_Lucene::setDefaultSearchField('contents');]]></programlisting>
 <!--
                 To search for documents that contain "PHP framework" and "Zend Framework" use the query:
 -->
-                <programlisting role="querystring"><![CDATA["PHP framework" AND "Zend Framework"]]></programlisting>
+                <programlisting language="querystring"><![CDATA["PHP framework" AND "Zend Framework"]]></programlisting>
             </para>
         </sect3>
 
@@ -328,7 +328,7 @@ Zend_Search_Lucene::setDefaultSearchField('contents');]]></programlisting>
 <!--
                 To search for documents that contain "PHP framework" or "Zend Framework" use the query:
 -->
-                <programlisting role="querystring"><![CDATA["PHP framework" OR "Zend Framework"]]></programlisting>
+                <programlisting language="querystring"><![CDATA["PHP framework" OR "Zend Framework"]]></programlisting>
             </para>
         </sect3>
 
@@ -350,7 +350,7 @@ Zend_Search_Lucene::setDefaultSearchField('contents');]]></programlisting>
 <!--
                 To search for documents that contain "PHP framework" but not "Zend Framework" use the query:
 -->
-                <programlisting role="querystring"><![CDATA["PHP framework" AND NOT "Zend Framework"]]></programlisting>
+                <programlisting language="querystring"><![CDATA["PHP framework" AND NOT "Zend Framework"]]></programlisting>
             </para>
         </sect3>
 
@@ -380,7 +380,7 @@ Zend_Search_Lucene::setDefaultSearchField('contents');]]></programlisting>
 <!--
                 To search for documents that must contain "Zend" and may contain "Framework" use the query:
 -->
-                <programlisting role="querystring"><![CDATA[+Zend Framework]]></programlisting>
+                <programlisting language="querystring"><![CDATA[+Zend Framework]]></programlisting>
             </para>
         </sect3>
 
@@ -399,7 +399,7 @@ Zend_Search_Lucene::setDefaultSearchField('contents');]]></programlisting>
 <!--
                 To search for documents that contain "PHP framework" but not "Zend Framework" use the query:
 -->
-                <programlisting role="querystring"><![CDATA["PHP framework" -"Zend Framework"]]></programlisting>
+                <programlisting language="querystring"><![CDATA["PHP framework" -"Zend Framework"]]></programlisting>
             </para>
         </sect3>
 
@@ -436,7 +436,7 @@ Zend_Search_Lucene::setDefaultSearchField('contents');]]></programlisting>
 <!--
                 To search for documents that requires "PHP framework" and may contain "Zend Framework" use the query:
 -->
-                <programlisting role="querystring"><![CDATA[+"PHP framework" "Zend Framework"]]></programlisting>
+                <programlisting language="querystring"><![CDATA[+"PHP framework" "Zend Framework"]]></programlisting>
             </para>
 
             <para>
@@ -474,7 +474,7 @@ Zend_Search_Lucene::setDefaultSearchField('contents');]]></programlisting>
             Java Lucene and Zend_Search_Lucene support using parentheses to group clauses to form sub queries. This can be
             useful if you want to control the boolean logic for a query or mix different boolean query styles:
 -->
-            <programlisting role="querystring"><![CDATA[+(framework OR library) +php]]></programlisting>
+            <programlisting language="querystring"><![CDATA[+(framework OR library) +php]]></programlisting>
             Zend_Search_Lucene поддердивает подзапросы на любой уровни
             вложенности.
 <!--
@@ -499,7 +499,7 @@ Zend_Search_Lucene::setDefaultSearchField('contents');]]></programlisting>
 <!--
             To search for a title that contains both the word "return" and the phrase "pink panther" use the query:
 -->
-            <programlisting role="querystring"><![CDATA[title:(+return +"pink panther")]]></programlisting>
+            <programlisting language="querystring"><![CDATA[title:(+return +"pink panther")]]></programlisting>
             Zend_Search_Lucene поддердивает подзапросы любого уровня
             вложенности.
 <!--
@@ -534,7 +534,7 @@ Zend_Search_Lucene::setDefaultSearchField('contents');]]></programlisting>
 <!--
             To escape these character use the \ before the character. For example to search for (1+1):2 use the query:
 -->
-            <programlisting role="querystring"><![CDATA[\(1\+1\)\:2]]></programlisting>
+            <programlisting language="querystring"><![CDATA[\(1\+1\)\:2]]></programlisting>
         </para>
     </sect2>
 

+ 1 - 1
documentation/manual/ru/module_specs/Zend_View-Introduction.xml

@@ -224,7 +224,7 @@ base/path/
                     Включить короткие теги в своем файле <code>.htaccess</code>:
                 </para>
 
-                <programlisting role="apache"><![CDATA[
+                <programlisting language="apache"><![CDATA[
 php_value "short_open_tag" "on"
 ]]></programlisting>
 

+ 1 - 1
documentation/manual/ru/module_specs/Zend_View-Scripts.xml

@@ -164,7 +164,7 @@ if ($this->books) {
                 Это может соответствовать следующему файлу шаблона:
             </para>
 
-            <programlisting role="html"><![CDATA[
+            <programlisting language="html"><![CDATA[
 <!-- booklist.tpl -->
 <table>
     <tr>