Parcourir la source

Russian Documentation:
- Sync
- New translations

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

irina il y a 16 ans
Parent
commit
812224fbc6

+ 157 - 11
documentation/manual/ru/manual.xml.in

@@ -1,4 +1,5 @@
-<?xml version='1.0' encoding='UTF-8' ?>
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
 <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
     "@DOCBOOK_DTD@"
     "@DOCBOOK_DTD@"
 [
 [
@@ -38,6 +39,19 @@
         </xi:include>
         </xi:include>
     </chapter>
     </chapter>
 
 
+    <chapter id="zend.acl">
+        <title>Zend_Acl</title>
+        <xi:include href="module_specs/Zend_Acl.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Acl.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Acl-Refining.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Acl-Refining.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Acl-Advanced.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Acl-Advanced.xml" /></xi:fallback>
+        </xi:include>
+    </chapter>
+
     <chapter id="zend.amf">
     <chapter id="zend.amf">
         <title>Zend_Amf</title>
         <title>Zend_Amf</title>
         <xi:include href="module_specs/Zend_Amf.xml">
         <xi:include href="module_specs/Zend_Amf.xml">
@@ -48,16 +62,25 @@
         </xi:include>
         </xi:include>
     </chapter>
     </chapter>
 
 
-    <chapter id="zend.acl">
-        <title>Zend_Acl</title>
-        <xi:include href="module_specs/Zend_Acl.xml">
-            <xi:fallback><xi:include href="../en/module_specs/Zend_Acl.xml" /></xi:fallback>
+    <chapter id="zend.application">
+        <title>Zend_Application</title>
+        <xi:include href="module_specs/Zend_Application-Introduction.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Application-Introduction.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
-        <xi:include href="module_specs/Zend_Acl-Refining.xml">
-            <xi:fallback><xi:include href="../en/module_specs/Zend_Acl-Refining.xml" /></xi:fallback>
+        <xi:include href="module_specs/Zend_Application-QuickStart.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Application-QuickStart.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
-        <xi:include href="module_specs/Zend_Acl-Advanced.xml">
-            <xi:fallback><xi:include href="../en/module_specs/Zend_Acl-Advanced.xml" /></xi:fallback>
+        <xi:include href="module_specs/Zend_Application-TheoryOfOperation.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Application-TheoryOfOperation.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Application-Examples.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Application-Examples.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Application-CoreFunctionality.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Application-CoreFunctionality.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Application-AvailableResources.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Application-AvailableResources.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
     </chapter>
     </chapter>
 
 
@@ -111,6 +134,19 @@
             <xi:fallback><xi:include href="../en/module_specs/Zend_Captcha-Adapters.xml" /></xi:fallback>
             <xi:fallback><xi:include href="../en/module_specs/Zend_Captcha-Adapters.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
     </chapter>
     </chapter>
+    
+    <chapter id="zend.codegenerator">
+        <title>Zend_CodeGenerator</title>
+        <xi:include href="module_specs/Zend_CodeGenerator-Introduction.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_CodeGenerator-Introduction.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_CodeGenerator-Examples.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_CodeGenerator-Examples.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_CodeGenerator-Reference.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_CodeGenerator-Reference.xml" /></xi:fallback>
+        </xi:include>
+    </chapter>
 
 
     <chapter id="zend.config">
     <chapter id="zend.config">
         <title>Zend_Config</title>
         <title>Zend_Config</title>
@@ -514,6 +550,12 @@
         <xi:include href="module_specs/Zend_Loader.xml">
         <xi:include href="module_specs/Zend_Loader.xml">
             <xi:fallback><xi:include href="../en/module_specs/Zend_Loader.xml" /></xi:fallback>
             <xi:fallback><xi:include href="../en/module_specs/Zend_Loader.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
+        <xi:include href="module_specs/Zend_Loader-Autoloader.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Loader-Autoloader.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Loader-Autoloader-Resource.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Loader-Autoloader-Resource.xml" /></xi:fallback>
+        </xi:include>
         <xi:include href="module_specs/Zend_Loader-PluginLoader.xml">
         <xi:include href="module_specs/Zend_Loader-PluginLoader.xml">
             <xi:fallback><xi:include href="../en/module_specs/Zend_Loader-PluginLoader.xml" /></xi:fallback>
             <xi:fallback><xi:include href="../en/module_specs/Zend_Loader-PluginLoader.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
@@ -647,6 +689,19 @@
             <xi:fallback><xi:include href="../en/module_specs/Zend_Mime_Part.xml" /></xi:fallback>
             <xi:fallback><xi:include href="../en/module_specs/Zend_Mime_Part.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
     </chapter>
     </chapter>
+    
+    <chapter id="zend.navigation">
+        <title>Zend_Navigation</title>
+        <xi:include href="module_specs/Zend_Navigation-Introduction.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Navigation-Introduction.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Navigation-Pages.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Navigation-Pages.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Navigation-Containers.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Navigation-Containers.xml" /></xi:fallback>
+        </xi:include>
+    </chapter>
 
 
     <chapter id="zend.openid">
     <chapter id="zend.openid">
         <title>Zend_OpenId</title>
         <title>Zend_OpenId</title>
@@ -709,6 +764,19 @@
         </xi:include>
         </xi:include>
     </chapter>
     </chapter>
 
 
+    <chapter id="zend.reflection">
+        <title>Zend_Reflection</title>
+        <xi:include href="module_specs/Zend_Reflection-Introduction.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Reflection-Introduction.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Reflection-Examples.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Reflection-Examples.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Reflection-Reference.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Reflection-Reference.xml" /></xi:fallback>
+        </xi:include>
+    </chapter>
+
     <chapter id="zend.registry">
     <chapter id="zend.registry">
         <title>Zend_Registry</title>
         <title>Zend_Registry</title>
         <xi:include href="module_specs/Zend_Registry.xml">
         <xi:include href="module_specs/Zend_Registry.xml">
@@ -784,6 +852,33 @@
         <xi:include href="module_specs/Zend_Service_Amazon.xml">
         <xi:include href="module_specs/Zend_Service_Amazon.xml">
             <xi:fallback><xi:include href="../en/module_specs/Zend_Service_Amazon.xml" /></xi:fallback>
             <xi:fallback><xi:include href="../en/module_specs/Zend_Service_Amazon.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
+        <xi:include href="module_specs/Zend_Service_Amazon_Ec2.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Service_Amazon_Ec2.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Service_Amazon_Ec2-Instance.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Service_Amazon_Ec2-Instance.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Service_Amazon_Ec2-Image.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Service_Amazon_Ec2-Image.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Service_Amazon_Ec2-Ebs.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Service_Amazon_Ec2-Ebs.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Service_Amazon_Ec2-Elasticip.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Service_Amazon_Ec2-Elasticip.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Service_Amazon_Ec2-Keypair.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Service_Amazon_Ec2-Keypair.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Service_Amazon_Ec2-RegionsAndAvalibilityZones.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Service_Amazon_Ec2-RegionsAndAvalibilityZones.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Service_Amazon_Ec2-Securitygroups.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Service_Amazon_Ec2-Securitygroups.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Service_Amazon_S3.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Service_Amazon_S3.xml" /></xi:fallback>
+        </xi:include>
         <xi:include href="module_specs/Zend_Service_Audioscrobbler.xml">
         <xi:include href="module_specs/Zend_Service_Audioscrobbler.xml">
             <xi:fallback><xi:include href="../en/module_specs/Zend_Service_Audioscrobbler.xml" /></xi:fallback>
             <xi:fallback><xi:include href="../en/module_specs/Zend_Service_Audioscrobbler.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
@@ -860,6 +955,16 @@
         </xi:include>
         </xi:include>
     </chapter>
     </chapter>
 
 
+    <chapter id="zend.tag">
+        <title>Zend_Tag</title>
+        <xi:include href="module_specs/Zend_Tag-Introduction.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Tag-Introduction.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Tag_Cloud.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Tag_Cloud.xml" /></xi:fallback>
+        </xi:include>
+    </chapter>
+
     <chapter id="zend.test">
     <chapter id="zend.test">
         <title>Zend_Test</title>
         <title>Zend_Test</title>
         <xi:include href="module_specs/Zend_Test.xml">
         <xi:include href="module_specs/Zend_Test.xml">
@@ -889,6 +994,41 @@
             <xi:fallback><xi:include href="../en/module_specs/Zend_TimeSync-Working.xml" /></xi:fallback>
             <xi:fallback><xi:include href="../en/module_specs/Zend_TimeSync-Working.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
     </chapter>
     </chapter>
+    
+    <chapter id="zend.tool.framework">
+        <title>Zend_Tool_Framework</title>
+        <xi:include href="module_specs/Zend_Tool_Framework-Introduction.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Tool_Framework-Introduction.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Tool_Framework-CliTool.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Tool_Framework-CliTool.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Tool_Framework-Architecture.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Tool_Framework-Architecture.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Tool_Framework-WritingProviders.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Tool_Framework-WritingProviders.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Tool_Framework-SystemProviders.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Tool_Framework-SystemProviders.xml" /></xi:fallback>
+        </xi:include>
+    </chapter>
+
+    <chapter id="zend.tool.project">
+        <title>Zend_Tool_Project</title>
+        <xi:include href="module_specs/Zend_Tool_Project.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Tool_Project.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Tool_Project-CreateProject.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Tool_Project-CreateProject.xml" /></xi:fallback>
+        </xi:include>
+        <xi:include href="module_specs/Zend_Tool_Project-Providers.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Tool_Project-Providers.xml" /></xi:fallback>
+        </xi:include>
+        <!--
+        <xi:include href="module_specs/Zend_Tool_Project-Internals.xml" />
+        -->
+    </chapter>
 
 
     <chapter id="zend.translate">
     <chapter id="zend.translate">
         <title>Zend_Translate</title>
         <title>Zend_Translate</title>
@@ -918,8 +1058,8 @@
         <xi:include href="module_specs/Zend_Validate.xml">
         <xi:include href="module_specs/Zend_Validate.xml">
             <xi:fallback><xi:include href="../en/module_specs/Zend_Validate.xml" /></xi:fallback>
             <xi:fallback><xi:include href="../en/module_specs/Zend_Validate.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
-        <xi:include href="module_specs/Zend_Validate-Set.xml">
-            <xi:fallback><xi:include href="../en/module_specs/Zend_Validate-Set.xml" /></xi:fallback>
+        <xi:include href="module_specs/Zend_Validate-Set.xml" parse="xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Validate-Set.xml" parse="xml" /></xi:fallback>
         </xi:include>
         </xi:include>
         <xi:include href="module_specs/Zend_Validate-ValidatorChains.xml">
         <xi:include href="module_specs/Zend_Validate-ValidatorChains.xml">
             <xi:fallback><xi:include href="../en/module_specs/Zend_Validate-ValidatorChains.xml" /></xi:fallback>
             <xi:fallback><xi:include href="../en/module_specs/Zend_Validate-ValidatorChains.xml" /></xi:fallback>
@@ -927,6 +1067,9 @@
         <xi:include href="module_specs/Zend_Validate-WritingValidators.xml">
         <xi:include href="module_specs/Zend_Validate-WritingValidators.xml">
             <xi:fallback><xi:include href="../en/module_specs/Zend_Validate-WritingValidators.xml" /></xi:fallback>
             <xi:fallback><xi:include href="../en/module_specs/Zend_Validate-WritingValidators.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
+        <xi:include href="module_specs/Zend_Validate-Messages.xml">
+            <xi:fallback><xi:include href="../en/module_specs/Zend_Validate-Messages.xml" /></xi:fallback>
+        </xi:include>
     </chapter>
     </chapter>
 
 
     <chapter id="zend.version">
     <chapter id="zend.version">
@@ -953,6 +1096,9 @@
         <xi:include href="module_specs/Zend_View-Abstract.xml" parse="xml" >
         <xi:include href="module_specs/Zend_View-Abstract.xml" parse="xml" >
             <xi:fallback><xi:include href="../en/module_specs/Zend_View-Abstract.xml" /></xi:fallback>
             <xi:fallback><xi:include href="../en/module_specs/Zend_View-Abstract.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
+        <xi:include href="module_specs/Zend_View-Migration.xml" parse="xml" >
+            <xi:fallback><xi:include href="../en/module_specs/Zend_View-Migration.xml" /></xi:fallback>
+        </xi:include>
     </chapter>
     </chapter>
 
 
     <chapter id="zend.wildfire">
     <chapter id="zend.wildfire">

+ 11 - 1
documentation/manual/ru/module_specs/Zend_Cache-Backends.xml

@@ -219,7 +219,17 @@
                           <entry><code>false</code></entry>
                           <entry><code>false</code></entry>
                           <entry>
                           <entry>
                              <code>true</code>, если вы хотите использовать
                              <code>true</code>, если вы хотите использовать
-                             компрессию на лету
+                             компрессию "на лету"
+                          </entry>
+                      </row>
+                      <row>
+                          <entry><code>compatibility</code></entry>
+                          <entry><code>boolean</code></entry>
+                          <entry><code>false</code></entry>
+                          <entry>
+                             true, если нужно включить режим
+                             совместимости со старыми серверами и расширениями
+                             memcache
                           </entry>
                           </entry>
                       </row>
                       </row>
                   </tbody>
                   </tbody>

+ 81 - 49
documentation/manual/ru/module_specs/Zend_View-Controllers.xml

@@ -1,48 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.view.controllers">
 <sect1 id="zend.view.controllers">
     <title>Скрипты контроллеров</title>
     <title>Скрипты контроллеров</title>
 
 
     <para>
     <para>
         В контроллере вы создаете и конфигурируете экземпляр
         В контроллере вы создаете и конфигурируете экземпляр
-        <code>Zend_View</code>. Затем вы объявляете переменные для этого
+        <classname>Zend_View</classname>. Затем вы устанавливаете переменные для этого
         экземпляра и приказываете ему сгенерировать выходные данные, используя
         экземпляра и приказываете ему сгенерировать выходные данные, используя
-        указанный скрипт.
+        указанный скрипт вида.
     </para>
     </para>
 
 
     <sect2 id="zend.view.controllers.assign">
     <sect2 id="zend.view.controllers.assign">
 
 
-        <title>Объявление переменных</title>
+        <title>Установка переменных</title>
 
 
         <para>
         <para>
-            Ваш скрипт контроллера должен объявить
+            Ваш скрипт контроллера должен установить
             необходимые переменные до того, как будет передано
             необходимые переменные до того, как будет передано
-            управление скрипту вида. Обычно вы можете делать объявления по одному через объявление свойств экземпляра вида.
+            управление скрипту вида. Обычно вы можете устанавливать переменные
+            по одной через объявление свойств экземпляра вида.
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
+        <programlisting role="php"><![CDATA[
 $view = new Zend_View();
 $view = new Zend_View();
 $view->a = "Hay";
 $view->a = "Hay";
 $view->b = "Bee";
 $view->b = "Bee";
-$view->c = "Sea";]]>
-        </programlisting>
+$view->c = "Sea";
+]]></programlisting>
 
 
         <para>
         <para>
-            Однако это может оказаться утомительным, если вы уже имеете
+            Однако это может показаться утомительным, если вы уже имеете
             набор значений для присвоения в массиве или объекте.
             набор значений для присвоения в массиве или объекте.
         </para>
         </para>
 
 
         <para>
         <para>
-            Методы <code>assign()</code> дают возможность присваивать значения
+            Метод <code>assign()</code> дает возможность устанавливать значения
             из массива или объекта "партиями". Следующий пример делает
             из массива или объекта "партиями". Следующий пример делает
-            то же самое, что и предыдущий с последовательным объявлением
-            свойств.
+            то же самое, что и предыдущий с последовательной установкой
+            переменных.
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
+        <programlisting role="php"><![CDATA[
 $view = new Zend_View();
 $view = new Zend_View();
 
 
 // определение массива из пар ключ-значение, где
 // определение массива из пар ключ-значение, где
 // ключ является именем переменной,
 // ключ является именем переменной,
-// а значение - значением объявляемой переменной
+// а значение - значением устанавливаемой переменной
 $array = array(
 $array = array(
     'a' => "Hay",
     'a' => "Hay",
     'b' => "Bee",
     'b' => "Bee",
@@ -51,26 +54,26 @@ $array = array(
 $view->assign($array);
 $view->assign($array);
 
 
 // делаем то же самое с открытыми свойствами объекта;
 // делаем то же самое с открытыми свойствами объекта;
-// обратите внимание, что при объявлении мы приводим объект к массиву
+// обратите внимание, что при установке мы приводим объект к массиву
 $obj = new StdClass;
 $obj = new StdClass;
 $obj->a = "Hay";
 $obj->a = "Hay";
 $obj->b = "Bee";
 $obj->b = "Bee";
 $obj->c = "Sea";
 $obj->c = "Sea";
-$view->assign((array) $obj);]]>
-        </programlisting>
+$view->assign((array) $obj);
+]]></programlisting>
 
 
         <para>
         <para>
-            Вы можете также использовать методы для
-            последовательного объявления c передачей имени переменной
+            Вы также можете использовать этот метод для
+            последовательной установки c передачей имени переменной
             и ее значения.
             и ее значения.
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
+        <programlisting role="php"><![CDATA[
 $view = new Zend_View();
 $view = new Zend_View();
 $view->assign('a', "Hay");
 $view->assign('a', "Hay");
 $view->assign('b', "Bee");
 $view->assign('b', "Bee");
-$view->assign('c', "Sea");]]>
-        </programlisting>
+$view->assign('c', "Sea");
+]]></programlisting>
 
 
     </sect2>
     </sect2>
 
 
@@ -80,64 +83,66 @@ $view->assign('c', "Sea");]]>
 
 
         <para>
         <para>
             После того, как вы определили все необходимые переменные, контроллер
             После того, как вы определили все необходимые переменные, контроллер
-            должен дать <code>Zend_View</code> команду выполнить указанный
+            должен дать <classname>Zend_View</classname> команду выполнить указанный
             скрипт вида. Делайте это посредством вызова метода
             скрипт вида. Делайте это посредством вызова метода
             <code>render()</code>. Обратите внимание, что этот метод будет
             <code>render()</code>. Обратите внимание, что этот метод будет
             возвращать результат рендеринга, но не выводить его,
             возвращать результат рендеринга, но не выводить его,
             поэтому вам нужно самостоятельно вывести его посредством
             поэтому вам нужно самостоятельно вывести его посредством
-            <code>echo</code> или <code>print</code>, когда нужно.
+            <code>echo</code> или <code>print</code>, в том месте,
+            где это нужно.
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
+        <programlisting role="php"><![CDATA[
 $view = new Zend_View();
 $view = new Zend_View();
 $view->a = "Hay";
 $view->a = "Hay";
 $view->b = "Bee";
 $view->b = "Bee";
 $view->c = "Sea";
 $view->c = "Sea";
-echo $view->render('someView.php');]]>
-        </programlisting>
+echo $view->render('someView.php');
+]]></programlisting>
 
 
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.view.controllers.script-paths">
     <sect2 id="zend.view.controllers.script-paths">
 
 
-        <title>Пути к скриптам видов</title>
+        <title>Пути к скриптам вида</title>
 
 
         <para>
         <para>
-            По умолчанию <code>Zend_View</code> ищет скрипты
+            По умолчанию <classname>Zend_View</classname> ищет скрипты
             вида относительно вызывающего скрипта.
             вида относительно вызывающего скрипта.
-            Например, если скрипт контроллера находится в
-            <code>/path/to/app/controllers</code> и он вызывает
-            <code>$view->render('someView.php')</code>, то
-            <code>Zend_View</code> будет искать
-            <code>/path/to/app/controllers/someView.php</code>.
+            Например, если скрипт контроллера находится в директории
+            "/path/to/app/controllers" и он вызывает скрипт вида
+            следующим образом: <code>$view->render('someView.php')</code>, то
+            <classname>Zend_View</classname> будет искать скрипт вида по пути
+            "/path/to/app/controllers/someView.php".
         </para>
         </para>
 
 
         <para>
         <para>
-            Очевидно, ваши скрипты вида могут находиться в другом месте.
-            Чтобы указать <code>Zend_View</code>, где искать скрипты вида,
+            Очевидно, что ваши скрипты вида могут находиться в любом другом
+            месте. Чтобы указать <classname>Zend_View</classname>, где искать скрипты вида,
             используйте метод <code>setScriptPath()</code>.
             используйте метод <code>setScriptPath()</code>.
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
+        <programlisting role="php"><![CDATA[
 $view = new Zend_View();
 $view = new Zend_View();
-$view->setScriptPath('/path/to/app/views');]]>
-        </programlisting>
+$view->setScriptPath('/path/to/app/views');
+]]></programlisting>
 
 
         <para>
         <para>
             Теперь, когда вы вызываете <code>$view->render('someView.php')</code>,
             Теперь, когда вы вызываете <code>$view->render('someView.php')</code>,
-            он будет искать <code>/path/to/app/views/someView.php</code>.
+            он будет искать файл "/path/to/app/views/someView.php".
         </para>
         </para>
 
 
         <para>
         <para>
-            Фактически вы можете "складывать" в стек пути,
+            Вы можете "складывать" в стек пути,
             используя метод <code>addScriptPath()</code>. Если вы добавили
             используя метод <code>addScriptPath()</code>. Если вы добавили
-            пути в стек, то <code>Zend_View</code> будет искать запрошенный
-            скрипт вида в этих путях, начиная с пути, добавленного последним.
+            пути в стек, то <classname>Zend_View</classname> будет искать запрошенный
+            скрипт вида по этим путям, начиная с пути, добавленного последним.
             Это дает возможность замещать скрипты видов, принятые по умолчанию,
             Это дает возможность замещать скрипты видов, принятые по умолчанию,
-            другими, это позволяет создавать специальные "темы" и "скины" для всех или только определенных видов.
+            другими, это позволяет создавать специальные "темы" и "скины"
+            для всех или только определенных видов.
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
+        <programlisting role="php"><![CDATA[
 $view = new Zend_View();
 $view = new Zend_View();
 $view->addScriptPath('/path/to/app/views');
 $view->addScriptPath('/path/to/app/views');
 $view->addScriptPath('/path/to/custom/');
 $view->addScriptPath('/path/to/custom/');
@@ -145,11 +150,38 @@ $view->addScriptPath('/path/to/custom/');
 // теперь, когда вы вызываете $view->render('booklist.php'), Zend_View
 // теперь, когда вы вызываете $view->render('booklist.php'), Zend_View
 // будет искать "/path/to/custom/booklist.php",
 // будет искать "/path/to/custom/booklist.php",
 // затем "/path/to/app/views/booklist.php",
 // затем "/path/to/app/views/booklist.php",
-// и под конец "booklist.php" в текущем каталоге.]]>
-        </programlisting>
-
+// и, наконец, "booklist.php" в текущем каталоге.
+]]></programlisting>
+
+        <note>
+            <title>Никогда не используйте пользовательский ввод при установке
+            путей к скриптам вида</title>
+
+            <para>
+                <classname>Zend_View</classname> использует пути к скриптам для поиска
+                и рендеринга скриптов вида. Эти директории должны быть заранее
+                известны и находиться под вашим контролем.
+                <emphasis>Никогда</emphasis> не устанавливайте пути к скриптам
+                вида на основе пользовательского ввода.
+                Например, для атаки может использоваться следующий ввод:
+            </para>
+
+            <programlisting role="php"><![CDATA[
+// $_GET['foo'] == '../../../etc'
+$view->addScriptPath($_GET['foo']);
+$view->render('passwd');
+]]></programlisting>
+
+            <para>
+                Хотя этот пример надуманный, он ясно демонстрирует
+                потенциальную уязвимость. Если вы <emphasis>не можете</emphasis>
+                обойтись без использования пользовательского ввода при установке
+                пути к скриптам вида, то должным образом фильтруйте ввод и
+                удостоверяйтесь, что полученный путь находится под контролем
+                вашего приложения.
+            </para>
+        </note>
     </sect2>
     </sect2>
-
 </sect1>
 </sect1>
 <!--
 <!--
 vim:se ts=4 sw=4 et:
 vim:se ts=4 sw=4 et:

+ 54 - 0
documentation/manual/ru/module_specs/Zend_View-Helpers-Action.xml

@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
+<sect3 id="zend.view.helpers.initial.action">
+    <title>Помощник Action</title>
+
+    <para>
+        Помощник видов <code>Action</code> позволяет скриптам вида
+        вызывать действия из контроллеров, при этом будет
+        возвращаться результат из объекта ответа. Он может использоваться
+        в том случае, когда какое-то действие генерирует
+        повторно используемое содержимое или содержимое для "виджетов".
+    </para>
+
+    <para>
+        Действия, которые производят внутренний переход
+        (<code>_forward()</code>) или перенаправление на другую страницу,
+        считаются недопустимыми и будут возвращать пустую строку.
+    </para>
+
+    <para>
+        API помощника <code>Action</code> аналогичен тому, который
+        использует большинство MVC-компонент при вызове действий:
+        <code>action($action,
+            $controller, $module = null, array $params = array())</code>.
+        Параметры <code>$action</code> и <code>$controller</code>
+        являются обязательными; если не был указан модуль, то используется
+        модуль по умолчанию.
+    </para>
+
+    <example id="zend.view.helpers.initial.action.usage">
+        <title>Использование помощника Action</title>
+
+        <para>
+            Допустим, вы имеете контроллер
+            <code>CommentController</code> с методом действия
+            <code>listAction()</code>, который желаете вызывать
+            с тем, чтобы получать список комментариев для текущего запроса:
+        </para>
+
+        <programlisting role="php"><![CDATA[
+<div id="sidebar right">
+    <div class="item">
+        <?php echo $this->action('list',
+                                 'comment',
+                                 null,
+                                 array('count' => 10)); ?>
+    </div>
+</div>
+]]></programlisting>
+    </example>
+</sect3>
+<!--
+vim:se ts=4 sw=4 et:
+-->

+ 96 - 0
documentation/manual/ru/module_specs/Zend_View-Helpers-Doctype.xml

@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
+<sect3 id="zend.view.helpers.initial.doctype">
+    <title>Помощник Doctype</title>
+
+    <para>
+        Валидные HTML- и XHTML-документы должны включать в себя декларацию
+        <code>DOCTYPE</code>. Написание этих деклараций сложно для
+        запоминания, кроме того, от выбранного типа документа зависит то, как
+        должны выводиться элементы в вашем документе (например, экранирование
+        через CDATA в элементах <code>&lt;script&gt;</code> и
+        <code>&lt;style&gt;</code>).
+    </para>
+
+    <para>
+        Помощник <code>Doctype</code> позволяет указать один из следующих
+        типов:
+    </para>
+
+    <itemizedlist>
+        <listitem><para><code>XHTML11</code></para></listitem>
+        <listitem><para><code>XHTML1_STRICT</code></para></listitem>
+        <listitem><para><code>XHTML1_TRANSITIONAL</code></para></listitem>
+        <listitem><para><code>XHTML1_FRAMESET</code></para></listitem>
+        <listitem><para><code>XHTML_BASIC1</code></para></listitem>
+        <listitem><para><code>HTML4_STRICT</code></para></listitem>
+        <listitem><para><code>HTML4_LOOSE</code></para></listitem>
+        <listitem><para><code>HTML4_FRAMESET</code></para></listitem>
+        <listitem><para><code>HTML5</code></para></listitem>
+    </itemizedlist>
+
+    <para>
+        Вы можете также определить любой другой тип, если он является
+        синтаксически корректным.
+    </para>
+
+    <para>
+        Помощник <code>Doctype</code> является частной реализацией 
+        <link linkend="zend.view.helpers.initial.placeholder">помощника
+            Placeholder</link>.
+    </para>
+
+    <example id="zend.view.helpers.initial.doctype.basicusage">
+        <title>Использование помощника Doctype</title>
+
+        <para>
+            Вы можете указать декларацию DOCTYPE в любой момент времени. Но
+            помощники, использующие эту декларацию при формированиии вывода,
+            увидят ее только после того, как она была определена.
+            Поэтому лучше всего указывать ее в вашем файле загрузки:
+        </para>
+
+        <programlisting role="php"><![CDATA[
+$doctypeHelper = new Zend_View_Helper_Doctype();
+$doctypeHelper->doctype('XHTML1_STRICT');
+]]></programlisting>
+
+        <para>
+            И затем выводить ее в самом начале вашего скрипта вида:
+        </para>
+
+        <programlisting role="php"><![CDATA[
+<?php echo $this->doctype() ?>
+]]></programlisting>
+
+    </example>
+
+    <example id="zend.view.helpers.initial.doctype.retrieving">
+        <title>Извлечение DOCTYPE</title>
+
+        <para>
+            Если нужно узнать тип документа, то вы можете сделать
+            это путем вызова метода <code>getDoctype()</code> объекта,
+            возвращаемого при вызове помощника.
+        </para>
+
+        <programlisting role="php"><![CDATA[
+$doctype = $view->doctype()->getDoctype();
+]]></programlisting>
+
+        <para>
+            Часто требуется только узнать, соответствует ли декларация языку
+            XHTML или нет. В этом случае метода <code>isXhtml()</code> будет
+            достаточно:
+        </para>
+
+        <programlisting role="php"><![CDATA[
+if ($view->doctype()->isXhtml()) {
+    // сделать что-то
+}
+]]></programlisting>
+    </example>
+</sect3>
+<!--
+vim:se ts=4 sw=4 et:
+-->

+ 104 - 0
documentation/manual/ru/module_specs/Zend_View-Helpers-HeadLink.xml

@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
+<sect3 id="zend.view.helpers.initial.headlink">
+    <title>Помощник HeadLink</title>
+
+    <para>
+        HTML-элемент <code>&lt;link&gt;</code> все чаще используется для
+        создания связей с различными ресурсами - таблицами стилей,
+        лентами новостей, пиктограммами (favicon), обратными ссылками (trackback)
+        и многим другим.
+        Помощник <code>HeadLink</code> предоставляет простой интерфейс
+        для создания и агрегирования этих элементов с целью последующего
+        извлечения и вывода в вашем скрипте макета (layout script).
+    </para>
+
+    <para>
+        Помощник <code>HeadLink</code> имеет специальные методы для добавления
+        таблиц стилей в его стек:
+    </para>
+
+    <itemizedlist>
+        <listitem><para><code>appendStylesheet($href, $media,
+                    $conditionalStylesheet, $extras)</code></para></listitem>
+        <listitem><para><code>offsetSetStylesheet($index, $href, $media,
+                    $conditionalStylesheet, $extras)</code></para></listitem>
+        <listitem><para><code>prependStylesheet($href, $media,
+                    $conditionalStylesheet, $extras)</code></para></listitem>
+        <listitem><para><code>setStylesheet($href, $media,
+                    $conditionalStylesheet, $extras)</code></para></listitem>
+    </itemizedlist>
+
+    <para>
+        По умолчанию аргумент <code>$media</code> имеет значение 'screen',
+        но через него могут передаваться и другие допустимые значения атрибута
+        media. <code>$conditionalStylesheet</code> может быть либо
+        строкой, либо иметь булево значение false, он используется
+        для определения того, требуется ли использовать специальные
+        комментарии для предотвращения загрузки данной таблицы стилей на
+        определенных платформах.
+        <code>$extras</code> является массивом дополнительных атрибутов,
+        которые вы хотите добавить в элемент.
+    </para>
+
+    <para>
+        Помощник <code>HeadLink</code> также имеет специальные методы
+        для добавления альтернативных связей в его стек:
+    </para>
+
+    <itemizedlist>
+        <listitem><para><code>appendAlternate($href, $type,
+                    $title, $extras)</code></para></listitem>
+        <listitem><para><code>offsetSetAlternate($index, $href, $type,
+                    $title, $extras)</code></para></listitem>
+        <listitem><para><code>prependAlternate($href, $type,
+                    $title, $extras)</code></para></listitem>
+        <listitem><para><code>setAlternate($href, $type,
+                    $title, $extras)</code></para></listitem>
+    </itemizedlist>
+
+    <para>
+        Метод <code>headLink()</code> позволяет указывать все
+        атрибуты, необходимые для элемента <code>&lt;link&gt;</code>,
+        он также позволяет указывать место размещения -
+        новый элемент либо замещает все остальные элементы, либо добавляется в
+        начало/конец стека.
+    </para>
+
+    <para>
+        Помощник <code>HeadLink</code> является частной реализацией
+        <link linkend="zend.view.helpers.initial.placeholder">помощника
+            Placeholder</link>.
+    </para>
+
+    <example id="zend.view.helpers.initial.headlink.basicusage">
+        <title>Использование помощника HeadLink</title>
+
+        <para>
+            Вы можете указывать <code>headLink</code> в любой момент времени.
+            Глобальные ссылки обычно указываются в скрипте макета,
+            а специальные (для отдельных страниц) - в скриптах вида.
+            В вашем скрипте макета, в разделе &lt;head&gt;, вы "выводите"
+            помощника, при этом будут выведены ссылки, которые вы добавили
+            ранее.
+        </para>
+
+        <programlisting role="php"><![CDATA[
+<?php // установка ссылок в скрипте вида:
+$this->headLink()->appendStylesheet('/styles/basic.css')
+                 ->headLink(array('rel' => 'favicon',
+                                  'href' => '/img/favicon.ico'),
+                                  'PREPEND')
+                 ->prependStylesheet('/styles/moz.css',
+                                     'screen',
+                                     true,
+                                     array('id' => 'my_stylesheet'));
+?>
+<?php // вывод ссылок: ?>
+<?php echo $this->headLink() ?>
+]]></programlisting>
+    </example>
+</sect3>
+<!--
+vim:se ts=4 sw=4 et:
+-->

+ 145 - 0
documentation/manual/ru/module_specs/Zend_View-Helpers-HeadMeta.xml

@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
+<sect3 id="zend.view.helpers.initial.headmeta">
+    <title>Помощник HeadMeta</title>
+
+    <para>
+        Элемент <code>&lt;meta&gt;</code> используется для добавления
+        мета-информации о вашем HTML-документе, обычно это ключевые слова,
+        кодировка документа, директивы управления кэшированием и т.д.
+        Метатег может быть одного из следующих типов: 'http-equiv' или 'name',
+        должен содержать атрибут 'content', также он может иметь атрибуты
+        'lang' и 'scheme'.
+    </para>
+
+    <para>
+        Помощник <code>HeadMeta</code> поддерживает следующие методы для
+        установки и добавления метатегов:
+    </para>
+
+    <itemizedlist>
+        <listitem><para><code>appendName($keyValue, $content,
+                    $conditionalName)</code></para></listitem>
+        <listitem><para><code>offsetSetName($index, $keyValue, $content,
+                    $conditionalName)</code></para></listitem>
+        <listitem><para><code>prependName($keyValue, $content,
+                    $conditionalName)</code></para></listitem>
+        <listitem><para><code>setName($keyValue, $content,
+                    $modifiers)</code></para></listitem>
+        <listitem><para><code>appendHttpEquiv($keyValue, $content,
+                    $conditionalHttpEquiv)</code></para></listitem>
+        <listitem><para><code>offsetSetHttpEquiv($index, $keyValue, $content,
+                    $conditionalHttpEquiv)</code></para></listitem>
+        <listitem><para><code>prependHttpEquiv($keyValue, $content,
+                    $conditionalHttpEquiv)</code></para></listitem>
+        <listitem><para><code>setHttpEquiv($keyValue, $content,
+                    $modifiers)</code></para></listitem>
+    </itemizedlist>
+
+    <para>
+        Параметр <code>$keyValue</code> используется для установки значения
+        атрибута 'name' или 'http-equiv'; <code>$content</code> является
+        значением атрибута 'content', а <code>$modifiers</code> - необязательный
+        параметр, который может быть ассоциативным массивом с ключами 'lang'
+        и/или 'scheme'.
+    </para>
+
+    <para>
+        Вы можете также устанавливать метатеги, используя метод
+        <code>headMeta()</code>, который имеет следующую сигнатуру:
+        <code>headMeta($content,
+            $keyValue, $keyType = 'name', $modifiers = array(), $placement =
+            'APPEND')</code>. Через <code>$keyValue</code> передается содержимое
+        ключа, указанного в <code>$keyType</code> (ключом может быть 'name' или
+        'http-equiv'). <code>$placement</code> может иметь одно из следующих
+        значений: 'SET' (замена всех ранее сохраненных значений), 'APPEND'
+        (добавление в конец стека) или 'PREPEND' (добавление в начало стека).
+    </para>
+
+    <para>
+        <code>HeadMeta</code> перегружает методы <code>append()</code>,
+        <code>offsetSet()</code>, <code>prepend()</code> и <code>set()</code>
+        с целью принудительного использования специальных методов, перечисленных
+        выше. Внутри себя помощник сохраняет каждый элемент в виде маркера
+        <code>stdClass</code>, который затем преобразовывается в строку через
+        метод <code>itemToString()</code>. Это позволяет производить проверку
+        элементов в стеке и при необходимости модифицировать их, просто
+        извлекая объект и изменяя его.
+    </para>
+
+    <para>
+        Помощник <code>HeadMeta</code> является частной реализацией 
+        <link linkend="zend.view.helpers.initial.placeholder">помощника
+            Placeholder</link>.
+    </para>
+
+    <example id="zend.view.helpers.initial.headmeta.basicusage">
+        <title>Использование помощника HeadMeta</title>
+
+        <para>
+            Вы можете указывать новые метатеги в любой момент времени. Обычно
+            это правила кэширования для клиентской стороны и ключевые слова для
+            поисковой оптимизации.
+        </para>
+
+        <para>
+            Например, если вы хотите указать ключевые слова для поисковой
+            оптимизации, то вам нужно создать метатег с именем 'keywords'
+            и ключевыми словами для вашей страницы:
+        </para>
+
+        <programlisting role="php"><![CDATA[
+// установка мета-ключевых слов
+$this->headMeta()->appendName('keywords', 'framework php productivity');
+]]></programlisting>
+
+        <para>
+            Если требуется установить правила кэширования для
+            клиентской стороны, то вы можете установить теги http-equiv
+            с требуемыми правилами кэширования:
+        </para>
+
+        <programlisting role="php"><![CDATA[
+// отключает кэширование на клиентской стороне
+$this->headMeta()->appendHttpEquiv('expires',
+                                   'Wed, 26 Feb 1997 08:21:57 GMT')
+                 ->appendHttpEquiv('pragma', 'no-cache')
+                 ->appendHttpEquiv('Cache-Control', 'no-cache');
+]]></programlisting>
+
+        <para>
+            Другие распространенные случаи использования - установка типа
+            содержимого, кодировки и языка документа:
+        </para>
+
+        <programlisting role="php"><![CDATA[
+// установка типа содержимого и кодировки
+$this->headMeta()->appendHttpEquiv('Content-Type',
+                                   'text/html; charset=UTF-8')
+                 ->appendHttpEquiv('Content-Language', 'en-US');
+]]></programlisting>
+
+        <para>
+            И последний пример - мета-обновление как простой способ отображения
+            промежуточного сообщения до перенаправления:
+        </para>
+
+        <programlisting role="php"><![CDATA[
+// установка мета-обновления через 3 секунды с новым URL:
+$this->headMeta()->appendHttpEquiv('Refresh',
+                                   '3;URL=http://www.some.org/some.html');
+]]></programlisting>
+
+        <para>
+            Когда все будет готово для помещения тегов в макет, просто
+            "выводите" помощника:
+        </para>
+
+        <programlisting role="php"><![CDATA[
+<?php echo $this->headMeta() ?>
+]]></programlisting>
+    </example>
+</sect3>
+<!--
+vim:se ts=4 sw=4 et:
+-->

+ 238 - 0
documentation/manual/ru/module_specs/Zend_View-Helpers-HeadScript.xml

@@ -0,0 +1,238 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
+<sect3 id="zend.view.helpers.initial.headscript">
+    <title>Помощник HeadScript Helper</title>
+
+    <para>
+        HTML-элемент <code>&lt;script&gt;</code> используется для добавления
+        скриптового кода, исполняемого на клиентской стороне, как
+        непосредственно в документ, так и через ссылки на удаленные ресурсы,
+        содержащие этот код. Помощник <code>HeadScript</code> позволяет
+        использовать оба способа включения.
+    </para>
+
+    <para>
+        Помощник <code>HeadScript</code> поддерживает следующие методы для
+        установки и добавления скриптов:
+    </para>
+
+    <itemizedlist>
+        <listitem><para><code>appendFile($src, $type = 'text/javascript',
+                    $attrs = array())</code></para></listitem>
+        <listitem><para><code>offsetSetFile($index, $src, $type = 'text/javascript',
+                    $attrs = array())</code></para></listitem>
+        <listitem><para><code>prependFile($src, $type = 'text/javascript',
+                    $attrs = array())</code></para></listitem>
+        <listitem><para><code>setFile($src, $type = 'text/javascript',
+                    $attrs = array())</code></para></listitem>
+        <listitem><para><code>appendScript($script, $type = 'text/javascript',
+                    $attrs = array())</code></para></listitem>
+        <listitem><para><code>offsetSetScript($index, $script, $type = 'text/javascript',
+                    $attrs = array())</code></para></listitem>
+        <listitem><para><code>prependScript($script, $type = 'text/javascript',
+                    $attrs = array())</code></para></listitem>
+        <listitem><para><code>setScript($script, $type = 'text/javascript',
+                    $attrs = array())</code></para></listitem>
+    </itemizedlist>
+
+    <para>
+        В методах <code>*File()</code> через параметр <code>$src</code>
+        указывается местоположение скрипта, который требуется загрузить; обычно
+        оно указывется в виде URL или пути к нему.
+        В методах <code>*Script()</code> через параметр <code>$script</code>
+        передается скриптовый код, который требуется включить в
+        элемент <code>&lt;script&gt;</code>.
+    </para>
+
+    <note>
+        <title>Установка условных комментариев</title>
+
+        <para>
+            <code>HeadScript</code> поддерживает включение тега в условные
+            комментарии с тем, чтобы скрыть его от определенных
+            браузеров. Для того, чтобы добавить условные теги,
+            передавайте условие через параметр
+            <code>$attrs</code> в вызове метода, как показано в примере:
+        </para>
+
+        <example id="zend.view.helpers.initial.headscript.conditional">
+            <title>Скрипты с условными комментариями</title>
+            <programlisting role="php"><![CDATA[
+// добавление скриптов
+$this->headScript()->appendFile(
+    '/js/prototype.js',
+    'text/javascript',
+    array('conditional' => 'lt IE 7')
+);
+]]></programlisting>
+        </example>
+    </note>
+
+    <para>
+        <code>HeadScript</code> также позволяет "захватывать" вывод скриптов;
+        это может быть полезным при создании скриптов
+        программным способом. Пример использования этой возможности будут
+        показан ниже.
+    </para>
+
+    <para>
+        Для быстрого добавления скриптовых элементов Вы можете использовать
+        метод <code>headScript()</code>, сигнатура этого метода -
+        <code>headScript($mode = 'FILE', $spec, $placement = 'APPEND')</code>.
+        Параметр <code>$mode</code> может иметь значение 'FILE' или 'SCRIPT',
+        в зависимости от того, ссылаетесь ли вы на уже существующий скрипт или
+        передаете код для влючения в элемент
+        <code>&lt;script&gt;</code>. <code>$spec</code> содержит либо путь к
+        файлу, к которому нужно добавить ссылку, либо сам скриптовый код.
+        <code>$placement</code> должен иметь одно из следующих значений:
+        'APPEND', 'PREPEND' или 'SET'.
+    </para>
+
+    <para>
+        <code>HeadScript</code> перегружает методы <code>append()</code>,
+        <code>offsetSet()</code>, <code>prepend()</code> и <code>set()</code>
+        с целью принудительного использования специальных методов, перечисленных
+        выше. Внутри себя помощник сохраняет каждый элемент в виде маркера
+        <code>stdClass</code>, который затем преобразовывается в строку через
+        метод <code>itemToString()</code>. Это позволяет производить проверку
+        элементов в стеке и при необходимости модифицировать их, просто
+        извлекая объект и изменяя его.
+    </para>
+
+    <para>
+        Помощник <code>HeadScript</code> является частной реализацией 
+        <link linkend="zend.view.helpers.initial.placeholder">помощника
+            Placeholder</link>.
+    </para>
+
+    <note>
+        <title>Используйте InlineScript для скриптов в теле документа</title>
+
+        <para>
+            Для добавления скриптов внутри HTML-элемента <code>body</code>
+            должен использоваться
+            родственный помощник <link
+                linkend="zend.view.helpers.initial.inlinescript">InlineScript</link>.
+            Помещение скриптов в конец документа является хорошей практикой
+            для повышения скорости отдачи страницы, особенно если используются
+            сторонние скрипты-аналитики.
+        </para>
+    </note>
+
+    <note>
+        <title>Установка произвольных атрибутов по умолчанию отключена</title>
+
+        <para>
+            По умолчанию <code>HeadScript</code> будет генерировать только
+            атрибуты, соответствующие спецификации W3C.
+            В список этих атрибутов входят 'type', 'charset', 'defer',
+            'language' и 'src'. Однако некоторые JavaScript фреймворки,
+            а в особенности <ulink url="http://www.dojotoolkit.org/">Dojo</ulink>,
+            используют специальные атрибуты в целях изменения поведения. Вы
+            можете разрешить использование таких атрибутов, воспользовавшись
+            методом <code>setAllowArbitraryAttributes()</code>:
+        </para>
+
+        <programlisting role="php"><![CDATA[
+$this->headScript()->setAllowArbitraryAttributes(true);
+]]></programlisting>
+    </note>
+
+    <example id="zend.view.helpers.initial.headscript.basicusage">
+        <title>Использование помощника HeadScript</title>
+
+        <para>
+            Вы можете указывать скрипты для добавления в документ в любой момент
+            времени. Как было указано ранее, это могут быть как ссылки на
+            файлы со скриптами, так и сами скрипты.
+        </para>
+
+        <programlisting role="php"><![CDATA[
+// добавление скриптов
+$this->headScript()->appendFile('/js/prototype.js')
+                   ->appendScript($onloadScript);
+]]></programlisting>
+
+        <para>
+            Порядок следования часто важен в скриптах, интерпретируемых на
+            стороне клиента - например, нужно быть уверенным в том, что
+            библиотеки загружаются в порядке, обусловленном
+            зависимостями между ними. В этом случае используйте специальные
+            методы методы для добавления в начало, конец, и по определенному
+            смещению:
+        </para>
+
+        <programlisting role="php"><![CDATA[
+// Размещение скриптов в определенном порядке
+
+// Добавление по определенному смещению
+$this->headScript()->offsetSetFile(100, '/js/myfuncs.js');
+
+// Используем эффекты из библиотеки script.aculo.us
+// (будет добавлена с использованием следующего смещения, 101)
+$this->headScript()->appendFile('/js/scriptaculous.js');
+
+// Но скрипт prototype всегда должен загружаться первым:
+$this->headScript()->prependFile('/js/prototype.js');
+]]></programlisting>
+
+        <para>
+            Когда все будет готово для размещения скриптов в макете, просто
+            "выводите" помощника:
+        </para>
+
+        <programlisting role="php"><![CDATA[
+<?php echo $this->headScript() ?>
+]]></programlisting>
+    </example>
+
+    <example id="zend.view.helpers.initial.headscript.capture">
+        <title>Составление скриптов с использованием помощника HeadScript</title>
+
+        <para>
+            Иногда нужно генерировать скрипты программым способом.
+            Хотя вы можете использовать конкатенацию строк, синтаксис heredoc
+            и т.п., часто бывает легче создать скрипт с включением PHP-тегов.
+            <code>HeadScript</code> позволяет делать это, захватывая
+            вывод в стек:
+        </para>
+
+        <programlisting role="php"><![CDATA[
+<?php $this->headScript()->captureStart() ?>
+var action = '<?php echo $this->baseUrl ?>';
+$('foo_form').action = action;
+<?php $this->headScript()->captureEnd() ?>
+]]></programlisting>
+
+        <para>
+            Используются следующие допущения:
+        </para>
+
+        <itemizedlist>
+            <listitem><para>
+                    Скрипт будет добавлен в конец стека. Если требуется
+                    переопределить содержимое стека или добавить скрипт в
+                    конец стека, то передавайте соответственно
+                    'SET' или 'PREPEND' в качестве первого аргумента
+                    <code>captureStart()</code>.
+            </para></listitem>
+
+            <listitem><para>
+                    По умолчанию предполагается, что MIME-тип скрипта -
+                    'text/javascript'. Если требуется указать другой тип
+                    скрипта, то передавайте его в качестве второго аргумента
+                    <code>captureStart()</code>.
+            </para></listitem>
+
+            <listitem><para>
+                    Если вы хотите указать какие-либо дополнительные аргументы
+                    для тега <code>&lt;script&gt;</code>, то передавайте их
+                    в массиве в качестве третьего аргумента
+                    <code>captureStart()</code>.
+            </para></listitem>
+        </itemizedlist>
+    </example>
+</sect3>
+<!--
+vim:se ts=4 sw=4 et:
+-->

+ 198 - 84
documentation/manual/ru/module_specs/Zend_View-Helpers.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.view.helpers" xmlns:xi="http://www.w3.org/2001/XInclude">
 <sect1 id="zend.view.helpers" xmlns:xi="http://www.w3.org/2001/XInclude">
 
 
     <title>Помощники видов</title>
     <title>Помощники видов</title>
@@ -6,7 +8,7 @@
         Часто бывает так, что в скриптах вида необходимо повторно выполнять
         Часто бывает так, что в скриптах вида необходимо повторно выполнять
         определенный набор функций; например, формирование даты,
         определенный набор функций; например, формирование даты,
         генерация элементов формы, отображение ссылок. Вы можете использовать
         генерация элементов формы, отображение ссылок. Вы можете использовать
-        помощников (вспомогательные классы) для выполнения этих действий.
+        помощников для выполнения этих действий.
     </para>
     </para>
 
 
     <para>
     <para>
@@ -16,7 +18,7 @@
         установке путей к помощникам видов), последней частью имени класа
         установке путей к помощникам видов), последней частью имени класа
         является имя помощника. Все слова этой части должны писаться слитно,
         является имя помощника. Все слова этой части должны писаться слитно,
         первые буквы слов - в верхнем регистре (TitleCapped); таким образом мы
         первые буквы слов - в верхнем регистре (TitleCapped); таким образом мы
-        получаем имя класа <code>Zend_View_Helper_FooBar</code>. Класс должен
+        получаем имя класа <classname>Zend_View_Helper_FooBar</classname>. Класс должен
         содержать как минимум один метод, названный по имени помощника в формате
         содержать как минимум один метод, названный по имени помощника в формате
         camelCase: <code>fooBar()</code>.
         camelCase: <code>fooBar()</code>.
     </para>
     </para>
@@ -24,15 +26,15 @@
     <note>
     <note>
         <title>Следите за регистром</title>
         <title>Следите за регистром</title>
         <para>
         <para>
-            Имена помощников всегда должны быть в формате camelCase, т.е. они
-            никогда не начинаются с символа в верхнем регистре. Имя для класса
-            начинается с символа в верхнем регистре, но реально выполняемый
-            метод должен быть в формате camelCase.
+            Имена помощников всегда должны быть в стиле camelCased, т.е. они
+            никогда не начинаются с символа в верхнем регистре. Имя класса
+            имеет стиль MixedCase (т.е. начинается с символа в верхнем регистре),
+            но реально выполняемый метод должен быть в стиле camelCase.
         </para>
         </para>
     </note>
     </note>
 
 
     <note>
     <note>
-        <title>Путь к помощникам по умолчанию</title>
+        <title>Используемый по умолчанию путь к помощникам</title>
 
 
         <para>
         <para>
             Используемый по умолчанию путь к помощникам всегда указывает на
             Используемый по умолчанию путь к помощникам всегда указывает на
@@ -47,10 +49,10 @@
     <para>
     <para>
         Для того, чтобы использовать помощника в своем скрипте вида, вызывайте
         Для того, чтобы использовать помощника в своем скрипте вида, вызывайте
         его, используя <code>$this->имяПомощника()</code>.
         его, используя <code>$this->имяПомощника()</code>.
-        <code>Zend_View</code> внутри себя загрузит класс
+        В этом случае <classname>Zend_View</classname> загрузит класс
         <code>Zend_View_Helper_ИмяПомощника</code>, создаст его экземпляр и
         <code>Zend_View_Helper_ИмяПомощника</code>, создаст его экземпляр и
         вызовет его метод <code>имяПомощника()</code>. Экземпляр объекта
         вызовет его метод <code>имяПомощника()</code>. Экземпляр объекта
-        сохраняется в экземпляре <code>Zend_View</code> и будет повторно
+        сохраняется в экземпляре <classname>Zend_View</classname> и будет повторно
         использоваться им во всех будущих вызовах
         использоваться им во всех будущих вызовах
         <code>$this->имяПомощника()</code>.
         <code>$this->имяПомощника()</code>.
     </para>
     </para>
@@ -60,7 +62,7 @@
         <title>Начальный набор помощников</title>
         <title>Начальный набор помощников</title>
 
 
         <para>
         <para>
-            <code>Zend_View</code> поставляется с начальным набором помощников,
+            <classname>Zend_View</classname> поставляется с начальным набором помощников,
             большинство из которых связано с генерацией элементов форм и
             большинство из которых связано с генерацией элементов форм и
             автоматически экранирует весь вывод. Кроме этого, есть помощники для
             автоматически экранирует весь вывод. Кроме этого, есть помощники для
             создания HTML-списков, URL-ов на основе маршрутов, и объявления
             создания HTML-списков, URL-ов на основе маршрутов, и объявления
@@ -70,10 +72,11 @@
         <itemizedlist>
         <itemizedlist>
 
 
             <listitem><para>
             <listitem><para>
-                <code>declareVars():</code> В основном для использования вместе
-                с <code>strictVars()</code>. Этот помощник может использоваться
-                для объявления переменных шаблонов, которые могут быть или не
-                быть в объекте вида, и для установки значений по умолчанию.
+                <code>declareVars():</code> В основном предназначен для
+                использования вместе с <code>strictVars()</code>. Этот
+                помощник может использоваться для объявления переменных
+                шаблонов, которые не обязательно присутствуют в объекте
+                вида, и для установки значений по умолчанию.
                 Массивы, переданные методу в качестве аргуметов, будут
                 Массивы, переданные методу в качестве аргуметов, будут
                 использованы для установки значений по умолчанию; иначе, если
                 использованы для установки значений по умолчанию; иначе, если
                 переменная не существует, то ее значением будет пустая строка.
                 переменная не существует, то ее значением будет пустая строка.
@@ -95,24 +98,104 @@
                 <code>form</code>. Если параметр <code>$content</code> передан и
                 <code>form</code>. Если параметр <code>$content</code> передан и
                 не имеет значение false, то это содержимое добавляется между
                 не имеет значение false, то это содержимое добавляется между
                 открывающим и закрывающим тегами формы. Если же
                 открывающим и закрывающим тегами формы. Если же
-                <code>$content</code> имеет булево значение false (по
+                <code>$content</code> имеет булево значение false (значение по
                 умолчанию), то будет сгенерирован только открывающий тег формы.
                 умолчанию), то будет сгенерирован только открывающий тег формы.
             </para></listitem>
             </para></listitem>
 
 
             <listitem><para>
             <listitem><para>
                 <code>formButton($name, $value, $attribs)</code>: Создает элемент
                 <code>formButton($name, $value, $attribs)</code>: Создает элемент
-                <code>&lt;input type="button" /&gt;</code>.
+                <code>&lt;button /&gt;</code>.
             </para></listitem>
             </para></listitem>
+            
+            <listitem>
+                <para>
+                    <code>formCheckbox($name, $value, $attribs, $options)</code>:
+                    Создает элемент <code>&lt;input type="checkbox" /&gt;</code>
+                    (флажок опций).
+                </para>
 
 
-            <listitem><para>
-                <code>formCheckbox($name, $value, $attribs, $options)</code>:
-                Создает элемент <code>&lt;input type="checkbox" /&gt;</code>
-                (флажок опций). Параметр <code>$options</code> является
-                массивом, в котором первым значением является "выбранное"
-                (checked) значение, вторым — "невыбранное" значение (по
-                умолчанию это '1' и '0'). Если <code>$value</code> соответствует
-                "выбранному" значению, то этот флажок опций будет выбран.
-            </para></listitem>
+                <para>
+                    По умолчанию, если не был передан параметры <code>$value</code>
+                    и <code>$options</code>, то значение '1' соотвествует
+                    выбранному состоянию, '0' - не выбранному. Если был передан
+                    параметр <code>$value</code>, но
+                    не передан <code>$options</code>, то значение
+                    <code>$value</code> соотвествует выбранному состоянию.
+                </para>
+
+                <para>
+                    <code>$options</code> должен быть массивом. Если это
+                    индексный массив, то первое значение соответствует
+                    выбранному состоянию, второе - не выбранному состоянию,
+                    все остальные значения игнорируются. Вы можете также
+                    передавать массив с ключами 'checked' и 'unChecked'.
+                </para>
+
+                <para>
+                    Если параметр $options был передан, и <code>$value</code>
+                    соответствует значению в выбранном состоянии, то элемент
+                    будет помечен как выбранный. Вы можете также помечать
+                    элемент как выбранный или не выбранный путем передачи
+                    значения булевого типа для атрибута 'checked'.
+                </para>
+
+                <para>
+                    Наверное, лучше всего проиллюстрировать это примерами:
+                </para>
+
+                <programlisting role="php"><![CDATA[
+// '1' и '0' в качестве значений для выбранного/ не выбранного состояний
+// флажок не выбран
+echo $this->formCheckbox('foo');
+
+// '1' и '0' в качестве значений для выбранного/ не выбранного состояний
+// флажок выбран
+echo $this->formCheckbox('foo', null, array('checked' => true));
+
+// 'bar' и '0' в качестве значений для выбранного/ не выбранного состояний
+// флажок не выбран
+echo $this->formCheckbox('foo', 'bar');
+
+// 'bar' и '0' в качестве значений для выбранного/ не выбранного состояний
+// флажок выбран
+echo $this->formCheckbox('foo', 'bar', array('checked' => true));
+
+// 'bar' и 'baz' в качестве значений для выбранного/ не выбранного состояний
+// флажок не выбран
+echo $this->formCheckbox('foo', null, null, array('bar', 'baz');
+
+// 'bar' и 'baz' в качестве значений для выбранного/ не выбранного состояний
+// флажок не выбран
+echo $this->formCheckbox('foo', null, null, array(
+    'checked' => 'bar',
+    'unChecked' => 'baz'
+));
+
+// 'bar' и 'baz' в качестве значений для выбранного/ не выбранного состояний
+// флажок выбран
+echo $this->formCheckbox('foo', 'bar', null, array('bar', 'baz');
+echo $this->formCheckbox('foo',
+                         null,
+                         array('checked' => true),
+                         array('bar', 'baz');
+
+// 'bar' и 'baz' в качестве значений для выбранного/ не выбранного состояний
+// флажок не выбран
+echo $this->formCheckbox('foo', 'baz', null, array('bar', 'baz');
+echo $this->formCheckbox('foo',
+                         null,
+                         array('checked' => false),
+                         array('bar', 'baz');
+]]></programlisting>
+
+                <para>
+                    Во всех случаях разметка предваряется скрытым элементом
+                    <code>&lt;input type="hidden" /&gt;</code>
+                    со значением для не выбранного состояния. Таким образом,
+                    и в том случае, если флажок опций не был выбран, вы будете
+                    получать корректное значение, возвращаемое вашей форме.
+                </para>
+            </listitem>
 
 
             <listitem>
             <listitem>
                 <para>
                 <para>
@@ -151,7 +234,7 @@
             </listitem>
             </listitem>
 
 
             <listitem><para>
             <listitem><para>
-                <code>formFile($name, $value, $attribs)</code>: Создает
+                <code>formFile($name, $attribs)</code>: Создает
                 элемент <code>&lt;input type="file" /&gt;</code>.
                 элемент <code>&lt;input type="file" /&gt;</code>.
             </para></listitem>
             </para></listitem>
 
 
@@ -197,7 +280,7 @@
 
 
             <listitem><para>
             <listitem><para>
                 <code>formReset($name, $value, $attribs)</code>: Создает
                 <code>formReset($name, $value, $attribs)</code>: Создает
-                элемент <code>&lt;input type="password" /&gt;</code>.
+                элемент <code>&lt;input type="reset" /&gt;</code>.
             </para></listitem>
             </para></listitem>
 
 
             <listitem><para>
             <listitem><para>
@@ -227,7 +310,7 @@
 
 
             <listitem><para>
             <listitem><para>
                 <code>url($urlOptions, $name, $reset):</code> Создает строку
                 <code>url($urlOptions, $name, $reset):</code> Создает строку
-                URL, основываясь на машруте с именем $name.
+                URL, основываясь на машруте с именем <code>$name</code>.
                 <code>$urlOptions</code> должен быть ассоциативным массивом пар
                 <code>$urlOptions</code> должен быть ассоциативным массивом пар
                 ключ-значение для использования в данном маршруте.
                 ключ-значение для использования в данном маршруте.
             </para></listitem>
             </para></listitem>
@@ -250,12 +333,12 @@
 
 
         <para>
         <para>
             Использовать их в скрипте вида очень просто, вот пример.
             Использовать их в скрипте вида очень просто, вот пример.
-            Обратите внимание, что это все, что вам нужно для их вызова —
+            Обратите внимание, все, что вам нужно - это вызывать их,
             помощники будут загружаться и инстанцироваться автоматически, по
             помощники будут загружаться и инстанцироваться автоматически, по
             мере необходимости.
             мере необходимости.
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
+        <programlisting role="php"><![CDATA[
 // в скрипте вида $this ссылается на экземпляр Zend_View
 // в скрипте вида $this ссылается на экземпляр Zend_View
 //
 //
 // предположим, вы уже имеете последовательность опций $countries
 // предположим, вы уже имеете последовательность опций $countries
@@ -264,23 +347,24 @@
 ?>
 ?>
 <form action="action.php" method="post">
 <form action="action.php" method="post">
     <p><label>Your Email:
     <p><label>Your Email:
-        <?php echo $this->formText('email', 'you@example.com', array('size' => 32)) ?>
+<?php echo $this->formText('email', 'you@example.com', array('size' => 32)) ?>
     </label></p>
     </label></p>
     <p><label>Your Country:
     <p><label>Your Country:
-        <?php echo $this->formSelect('country', 'us', null, $this->countries) ?>
+<?php echo $this->formSelect('country', 'us', null, $this->countries) ?>
     </label></p>
     </label></p>
     <p><label>Would you like to opt in?
     <p><label>Would you like to opt in?
-        <?php echo $this->formCheckbox('opt_in', 'yes', null, array('yes', 'no')) ?>
+<?php echo $this->formCheckbox('opt_in', 'yes', null, array('yes', 'no')) ?>
     </label></p>
     </label></p>
-</form>]]>
-        </programlisting>
+</form>
+]]></programlisting>
 
 
         <para>
         <para>
             Результирующие выходные данные этого скрипта вида будут выглядеть
             Результирующие выходные данные этого скрипта вида будут выглядеть
-            наподобие этих:
+            примерно следующим образом:
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<form action="action.php" method="post">
+        <programlisting role="php"><![CDATA[
+<form action="action.php" method="post">
     <p><label>Your Email:
     <p><label>Your Email:
         <input type="text" name="email" value="you@example.com" size="32" />
         <input type="text" name="email" value="you@example.com" size="32" />
     </label></p>
     </label></p>
@@ -295,12 +379,15 @@
         <input type="hidden" name="opt_in" value="no" />
         <input type="hidden" name="opt_in" value="no" />
         <input type="checkbox" name="opt_in" value="yes" checked="checked" />
         <input type="checkbox" name="opt_in" value="yes" checked="checked" />
     </label></p>
     </label></p>
-</form>]]>
-        </programlisting>
+</form>
+]]></programlisting>
 
 
         <xi:include href="Zend_View-Helpers-Action.xml">
         <xi:include href="Zend_View-Helpers-Action.xml">
             <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-Action.xml" /></xi:fallback>
             <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-Action.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
+        <xi:include href="Zend_View-Helpers-Cycle.xml">
+            <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-Cycle.xml" /></xi:fallback>
+        </xi:include>
         <xi:include href="Zend_View-Helpers-Partial.xml">
         <xi:include href="Zend_View-Helpers-Partial.xml">
             <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-Partial.xml" /></xi:fallback>
             <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-Partial.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
@@ -325,12 +412,18 @@
         <xi:include href="Zend_View-Helpers-HeadTitle.xml">
         <xi:include href="Zend_View-Helpers-HeadTitle.xml">
             <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-HeadTitle.xml" /></xi:fallback>
             <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-HeadTitle.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
+        <xi:include href="Zend_View-Helpers-HtmlObject.xml">
+            <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-HtmlObject.xml" /></xi:fallback>
+        </xi:include>
         <xi:include href="Zend_View-Helpers-InlineScript.xml">
         <xi:include href="Zend_View-Helpers-InlineScript.xml">
             <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-InlineScript.xml" /></xi:fallback>
             <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-InlineScript.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
         <xi:include href="Zend_View-Helpers-Json.xml">
         <xi:include href="Zend_View-Helpers-Json.xml">
             <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-Json.xml" /></xi:fallback>
             <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-Json.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
+        <xi:include href="Zend_View-Helpers-Navigation.xml">
+            <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-Navigation.xml" /></xi:fallback>
+        </xi:include>
         <xi:include href="Zend_View-Helpers-Translate.xml">
         <xi:include href="Zend_View-Helpers-Translate.xml">
             <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-Translate.xml" /></xi:fallback>
             <xi:fallback><xi:include href="../../en/module_specs/Zend_View-Helpers-Translate.xml" /></xi:fallback>
         </xi:include>
         </xi:include>
@@ -342,34 +435,34 @@
 
 
         <para>
         <para>
             Как и для скриптов вида, ваш контроллер может задать
             Как и для скриптов вида, ваш контроллер может задать
-            стек путей, в которых <code>Zend_View</code> должен искать
-            классы помощников. По умолчанию <code>Zend_View</code>
+            стек путей, в которых <classname>Zend_View</classname> должен искать
+            классы помощников. По умолчанию <classname>Zend_View</classname>
             ищет классы помощников в <code>Zend/View/Helper/*</code>. Используя
             ищет классы помощников в <code>Zend/View/Helper/*</code>. Используя
             методы <code>setHelperPath()</code> и <code>addHelperPath()</code>,
             методы <code>setHelperPath()</code> и <code>addHelperPath()</code>,
-            вы можете укзать <code>Zend_View</code>, чтобы он искал классы
+            вы можете укзать <classname>Zend_View</classname>, чтобы он искал классы
             помощников в других местах. Кроме этого, вы можете указать префикс
             помощников в других местах. Кроме этого, вы можете указать префикс
             класса, используемый для помощников, находящихся в данном пути;
             класса, используемый для помощников, находящихся в данном пути;
             префикс обеспечивает пространство имен. Если префикс не указан, то
             префикс обеспечивает пространство имен. Если префикс не указан, то
             по умолчанию используется 'Zend_View_Helper_'.
             по умолчанию используется 'Zend_View_Helper_'.
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
+        <programlisting role="php"><![CDATA[
 $view = new Zend_View();
 $view = new Zend_View();
 
 
 // Устанавливает путь /path/to/more/helpers с префиксом 'My_View_Helper'
 // Устанавливает путь /path/to/more/helpers с префиксом 'My_View_Helper'
-$view->setHelperPath('/path/to/more/helpers', 'My_View_Helper');]]>
-        </programlisting>
+$view->setHelperPath('/path/to/more/helpers', 'My_View_Helper');
+]]></programlisting>
 
 
         <para>
         <para>
-            Фактически вы можете "складывать" в стек пути, используя метод
+            Вы можете "складывать" в стек пути, используя метод
             <code>addHelperPath()</code>. Если вы добавили
             <code>addHelperPath()</code>. Если вы добавили
-            пути в стек, то <code>Zend_View</code> будет искать запрошенный
+            пути в стек, то <classname>Zend_View</classname> будет искать запрошенный
             класс помощника в этих путях, начиная с пути, добавленного
             класс помощника в этих путях, начиная с пути, добавленного
-            последним. Это дает возможность добавлять к начальному набору своих
-            помощников (или даже замещать имеющиеся).
+            последним. Это дает возможность добавлять своих
+            помощников к начальному набору (или даже замещать имеющиеся).
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
+        <programlisting role="php"><![CDATA[
 $view = new Zend_View();
 $view = new Zend_View();
 // Добавить /path/to/some/helpers с префиксом для классов 'My_View_Helper'
 // Добавить /path/to/some/helpers с префиксом для классов 'My_View_Helper'
 $view->addHelperPath('/path/to/some/helpers', 'My_View_Helper);
 $view->addHelperPath('/path/to/some/helpers', 'My_View_Helper);
@@ -377,10 +470,11 @@ $view->addHelperPath('/path/to/some/helpers', 'My_View_Helper);
 $view->addHelperPath('/other/path/to/helpers', 'Your_View_Helper');
 $view->addHelperPath('/other/path/to/helpers', 'Your_View_Helper');
 
 
 // теперь, когда вы вызываете $this->helperName(), Zend_View будет искать
 // теперь, когда вы вызываете $this->helperName(), Zend_View будет искать
-// "/other/path/to/helpers/HelperName.php" с классом "My_View_Helper_HelperName",
-// затем "/path/to/some/helpers/HelperName" с классом "Your_View_Helper_HelperName",
-// и под конец "Zend/View/Helper/HelperName.php" с классом "Zend_View_Helper_HelperName".]]>
-        </programlisting>
+// "/path/to/some/helpers/HelperName" с классом
+// "Your_View_Helper_HelperName", затем "/other/path/to/helpers/HelperName.php"
+// с классом "My_View_Helper_HelperName", и под конец
+// "Zend/View/Helper/HelperName.php" с классом "Zend_View_Helper_HelperName".
+]]></programlisting>
 
 
     </sect2>
     </sect2>
 
 
@@ -389,28 +483,41 @@ $view->addHelperPath('/other/path/to/helpers', 'Your_View_Helper');
         <title>Написание собственных помощников</title>
         <title>Написание собственных помощников</title>
 
 
         <para>
         <para>
-            Написать собственного помощника довольно просто — просто следуйте
+            Написать собственного помощника довольно легко, просто следуйте
             этим правилам:
             этим правилам:
         </para>
         </para>
 
 
         <itemizedlist>
         <itemizedlist>
 
 
             <listitem><para>
             <listitem><para>
+                Хотя это и не является совершенно необходимым, мы рекомендуем
+                при создании своего помощника реализовывать интерфейс
+                <classname>Zend_View_Helper_Interface</classname>
+                или наследовать от класса <classname>Zend_View_Helper_Abstract</classname>.
+                Добавленные в версии 1.6.0, они определяют только метод
+                <code>setView()</code>, но в будущих релизах
+                мы планируем реализовать паттерн "стратегия", который
+                значительно упростит следование правилам по именованию,
+                изложенным ниже. Следование этой рекомендации сейчас
+                поможет в будущем избежать изменений в вашем коде.
+            </para></listitem>
+
+            <listitem><para>
                 Имя класса должно, как минимум, заканчиваться именем
                 Имя класса должно, как минимум, заканчиваться именем
-                помощника в формате CamelCaps. Т.е. если вы пишете помощника с
-                именем "specialPurpose", то минимальное имя класса должно быть
-                "SpecialPurpose". Вы можете
+                помощника в стиле MixedCaps (СмешанныйРегистр). Т.е. если вы
+                пишете помощника с именем "specialPurpose", то наиболее короткое
+                имя класса должно быть "SpecialPurpose". Вы можете
                 (и должны) давать классам имена с префиксом, рекомендуется
                 (и должны) давать классам имена с префиксом, рекомендуется
                 использовать 'View_Helper' как часть этого префикса:
                 использовать 'View_Helper' как часть этого префикса:
-                "My_View_Helper_SpecialPurpose" (Вам нужно будет передать этот
+                "My_View_Helper_SpecialPurpose". Вам нужно будет передать этот
                 префикс с или без завершающего знака подчеркивания методу
                 префикс с или без завершающего знака подчеркивания методу
-                <code>addHelperPath()</code> или <code>setHelperPath()</code>).
+                <code>addHelperPath()</code> или <code>setHelperPath()</code>.
             </para></listitem>
             </para></listitem>
 
 
             <listitem><para>
             <listitem><para>
                 Класс должен иметь открытый метод, имя которого
                 Класс должен иметь открытый метод, имя которого
                 соответствует имени помощника. Это метод, который будет
                 соответствует имени помощника. Это метод, который будет
-                вызываться, когда ваш шаблон выполняет вызов
+                вызываться, когда в вашем шаблоне производится вызов
                 <code>$this->specialPurpose()</code>. В нашем примере с
                 <code>$this->specialPurpose()</code>. В нашем примере с
                 помощником "specialPurpose" объявление требуемого метода должно
                 помощником "specialPurpose" объявление требуемого метода должно
                 быть <code>public function specialPurpose()</code>.
                 быть <code>public function specialPurpose()</code>.
@@ -431,16 +538,17 @@ $view->addHelperPath('/other/path/to/helpers', 'Your_View_Helper');
 
 
         <para>
         <para>
             Размещайте класс помощника где-либо в одном из находящихся в
             Размещайте класс помощника где-либо в одном из находящихся в
-            стеке путей к помощникам, и <code>Zend_View</code> будет
+            стеке путей к помощникам, и <classname>Zend_View</classname> будет
             автоматически загружать, инстанцировать, сохранять и выполнять его.
             автоматически загружать, инстанцировать, сохранять и выполнять его.
         </para>
         </para>
 
 
         <para>
         <para>
-            Вот пример кода нашего помощника "SpecialPurpose":
+            Вот пример кода нашего помощника <code>SpecialPurpose</code>:
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
-class My_View_Helper_SpecialPurpose {
+        <programlisting role="php"><![CDATA[
+class My_View_Helper_SpecialPurpose extends Zend_View_Helper_Abstract
+{
     protected $_count = 0;
     protected $_count = 0;
     public function specialPurpose()
     public function specialPurpose()
     {
     {
@@ -449,41 +557,41 @@ class My_View_Helper_SpecialPurpose {
         return htmlspecialchars($output);
         return htmlspecialchars($output);
     }
     }
 }
 }
-}]]>
-        </programlisting>
+]]></programlisting>
 
 
         <para>
         <para>
             Далее в скрипте вида вы можете вызывать помощника
             Далее в скрипте вида вы можете вызывать помощника
             <code>SpecialPurpose</code> сколько угодно раз. Он будет
             <code>SpecialPurpose</code> сколько угодно раз. Он будет
-            инстанцирован один раз, и сохраняется в течение существования
-            экземпляра <code>Zend_View</code>.
+            инстанцирован один раз, и существует, пока существует
+            экземпляр <classname>Zend_View</classname>.
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
+        <programlisting role="php"><![CDATA[
 // помните, что в скрипте вида $this ссылается на экземпляр Zend_View
 // помните, что в скрипте вида $this ссылается на экземпляр Zend_View
 echo $this->specialPurpose();
 echo $this->specialPurpose();
 echo $this->specialPurpose();
 echo $this->specialPurpose();
-echo $this->specialPurpose();]]>
-        </programlisting>
+echo $this->specialPurpose();
+]]></programlisting>
 
 
         <para>
         <para>
-            Результат должен выглядеть наподобие следующего:
+            Результат должен быть примерно следующим:
         </para>
         </para>
-        <programlisting role="php"><![CDATA[I have seen 'The Jerk' 1 time(s).
+        <programlisting role="php"><![CDATA[
+I have seen 'The Jerk' 1 time(s).
 I have seen 'The Jerk' 2 time(s).
 I have seen 'The Jerk' 2 time(s).
-I have seen 'The Jerk' 3 time(s).]]>
-        </programlisting>
+I have seen 'The Jerk' 3 time(s).
+]]></programlisting>
 
 
         <para>
         <para>
-            Иногда бывает, что нужен доступ к объекту <code>Zend_View</code> -
+            Иногда бывает, что нужен доступ к объекту <classname>Zend_View</classname> -
             например, нужно получить зарегистрированное значение кодировки
             например, нужно получить зарегистрированное значение кодировки
             или произвести рендеринг другого скрипта вида как часть
             или произвести рендеринг другого скрипта вида как часть
             действий, выполняемых вашим помощником. Для того, чтобы можно было
             действий, выполняемых вашим помощником. Для того, чтобы можно было
             получить доступ к объекту вида, ваш класс помощника должен иметь
             получить доступ к объекту вида, ваш класс помощника должен иметь
-            метод <code>setView($view)</code>, пример которого показан ниже:
+            метод <code>setView($view)</code>, его пример показан ниже:
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
+        <programlisting role="php"><![CDATA[
 class My_View_Helper_ScriptPath
 class My_View_Helper_ScriptPath
 {
 {
     public $view;
     public $view;
@@ -497,15 +605,21 @@ class My_View_Helper_ScriptPath
     {
     {
         return $this->view->getScriptPath($script);
         return $this->view->getScriptPath($script);
     }
     }
-}]]>
-        </programlisting>
+}
+]]></programlisting>
 
 
         <para>
         <para>
             Если ваш класс помощника имеет метод <code>setView()</code>, то он
             Если ваш класс помощника имеет метод <code>setView()</code>, то он
             будет вызываться при первом инстанцировании класса помощника и его
             будет вызываться при первом инстанцировании класса помощника и его
-            передаче текущему объекту вида. На ваше усмотрение остается то, как
-            в вашем классе помощника должен сохраняться объект вида и
-            производиться доступ к нему.
+            передаче текущему объекту вида. Реализация
+            сохранения объекта вида и доступа к нему в вашем классе помощника
+            остаются на ваше усмотрение.
+        </para>
+        
+        <para>
+            Если вы наследуете своего помощника от
+            <classname>Zend_View_Helper_Abstract</classname>, то вам не нужно определять
+            этот метод, поскольку он уже определен в родительском классе.
         </para>
         </para>
 
 
     </sect2>
     </sect2>

+ 127 - 31
documentation/manual/ru/module_specs/Zend_View-Introduction.xml

@@ -1,9 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.view.introduction">
 <sect1 id="zend.view.introduction">
 
 
     <title>Введение</title>
     <title>Введение</title>
 
 
     <para>
     <para>
-        <code>Zend_View</code> является классом для работы с частью вид (view)
+        <classname>Zend_View</classname> является классом для работы с частью вид (view)
         паттерна модель-вид-контроллер (model-view-controller). То есть он
         паттерна модель-вид-контроллер (model-view-controller). То есть он
         предназначен для того, чтобы помочь отделить скрипты видов от
         предназначен для того, чтобы помочь отделить скрипты видов от
         скриптов моделей и контроллеров. Он предоставляет систему помощников,
         скриптов моделей и контроллеров. Он предоставляет систему помощников,
@@ -11,19 +13,19 @@
     </para>
     </para>
 
 
     <para>
     <para>
-        <code>Zend_View</code> является независимым от выбранной системы
-        шаблонов: вы можете использовать PHP в качестве языка шаблонов или
+        <classname>Zend_View</classname> не зависит от выбранной вами системы
+        шаблонов - вы можете использовать PHP в качестве языка шаблонов или
         создавать экземпляры других систем шаблонов и работать с ними
         создавать экземпляры других систем шаблонов и работать с ними
         в ваших скриптах вида.
         в ваших скриптах вида.
     </para>
     </para>
 
 
     <para>
     <para>
-        Использование <code>Zend_View</code> в основном состоит из двух шагов:
+        По существу применение <classname>Zend_View</classname> состоит из двух шагов:
 
 
-        1.  Ваш скрипт контроллера создает экземпляр <code>Zend_View</code> и
+        1.  Ваш скрипт контроллера создает экземпляр <classname>Zend_View</classname> и
         объявляет переменные этого экземпляра.
         объявляет переменные этого экземпляра.
 
 
-        2. Контроллер приказывает <code>Zend_View</code> воспроизвести
+        2. Контроллер приказывает <classname>Zend_View</classname> воспроизвести
         данный вид, посредством этого производится контроль за скриптом
         данный вид, посредством этого производится контроль за скриптом
         вида, который генерирует выходные данные вида.
         вида, который генерирует выходные данные вида.
     </para>
     </para>
@@ -38,7 +40,7 @@
             Скрипт контроллера может выглядеть наподобие этого:
             Скрипт контроллера может выглядеть наподобие этого:
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
+        <programlisting role="php"><![CDATA[
 // использование модели для получения данных о заголовках и авторах книг
 // использование модели для получения данных о заголовках и авторах книг
 $data = array(
 $data = array(
     array(
     array(
@@ -61,8 +63,8 @@ $view = new Zend_View();
 $view->books = $data;
 $view->books = $data;
 
 
 // и выполняем скрипт вида "booklist.php"
 // и выполняем скрипт вида "booklist.php"
-echo $view->render('booklist.php');]]>
-        </programlisting>
+echo $view->render('booklist.php');
+]]></programlisting>
 
 
     </sect2>
     </sect2>
 
 
@@ -73,17 +75,18 @@ echo $view->render('booklist.php');]]>
         <para>
         <para>
             Теперь нам нужен сопутствующий скрипт вида "booklist.php".
             Теперь нам нужен сопутствующий скрипт вида "booklist.php".
             Это такой же скрипт PHP, как и остальные, за одним исключением:
             Это такой же скрипт PHP, как и остальные, за одним исключением:
-            он выполняется в области видимости экземпляра <code>Zend_View</code>,
+            он выполняется в области видимости экземпляра <classname>Zend_View</classname>,
             это означает, что <code>$this</code> ссылается на
             это означает, что <code>$this</code> ссылается на
-            экземпляр <code>Zend_View</code>. Переменные, присваиваемые в
+            экземпляр <classname>Zend_View</classname>. Переменные, присваиваемые в
             контроллере для скрипта вида, являются открытыми свойствами
             контроллере для скрипта вида, являются открытыми свойствами
-            экземпляра <code>Zend_View</code>. Таким образом, базовый скрипт
+            экземпляра <classname>Zend_View</classname>. Таким образом, базовый скрипт
             вида может выглядеть следующим образом:
             вида может выглядеть следующим образом:
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php if ($this->books): ?>
+        <programlisting role="php"><![CDATA[
+<?php if ($this->books): ?>
 
 
-    <!-- Таблица нескольких книг. -->
+    <!-- Таблица из нескольких книг. -->
     <table>
     <table>
         <tr>
         <tr>
             <th>Author</th>
             <th>Author</th>
@@ -103,8 +106,8 @@ echo $view->render('booklist.php');]]>
 
 
     <p>Нет книг для отображения.</p>
     <p>Нет книг для отображения.</p>
 
 
-<?php endif;]]>
-        </programlisting>
+<?php endif; ?>
+]]></programlisting>
 
 
         <para>
         <para>
             Обратите внимание, что мы используем метод <code>escape()</code>
             Обратите внимание, что мы используем метод <code>escape()</code>
@@ -117,7 +120,7 @@ echo $view->render('booklist.php');]]>
         <title>Опции</title>
         <title>Опции</title>
 
 
         <para>
         <para>
-            <code>Zend_View</code> имеет несколько опций, которые могут
+            <classname>Zend_View</classname> имеет несколько опций, которые могут
             использоваться для управления поведением ваших скриптов вида:
             использоваться для управления поведением ваших скриптов вида:
         </para>
         </para>
 
 
@@ -134,12 +137,12 @@ echo $view->render('booklist.php');]]>
 base/path/
 base/path/
     helpers/
     helpers/
     filters/
     filters/
-    scripts/]]>
-                </programlisting>
+    scripts/
+]]></programlisting>
 
 
                 <para>
                 <para>
                     Эта опция может быть установлена через методы
                     Эта опция может быть установлена через методы
-                    <code>setBasePath()</code>, <code>addBasePath()</code>, или
+                    <code>setBasePath()</code>, <code>addBasePath()</code> или
                     опцию <code>basePath</code> для конструктора.
                     опцию <code>basePath</code> для конструктора.
                 </para>
                 </para>
             </listitem>
             </listitem>
@@ -156,20 +159,20 @@ base/path/
             <listitem><para>
             <listitem><para>
                 <code>escape</code> - обратный вызов, который следует
                 <code>escape</code> - обратный вызов, который следует
                 использовать для метода <code>escape()</code>. Может быть
                 использовать для метода <code>escape()</code>. Может быть
-                установлена через метод <code>setEscape()</code> или опцию
+                установлен через метод <code>setEscape()</code> или опцию
                 <code>escape</code> для конструктора.
                 <code>escape</code> для конструктора.
             </para></listitem>
             </para></listitem>
 
 
             <listitem><para>
             <listitem><para>
                 <code>filter</code> - фильтр, который следует использовать после
                 <code>filter</code> - фильтр, который следует использовать после
-                рендеринга скрипта вида. Может быть установлена через методы
+                рендеринга скрипта вида. Может быть установлен через методы
                 <code>setFilter()</code>, <code>addFilter()</code>, или опцию
                 <code>setFilter()</code>, <code>addFilter()</code>, или опцию
                 <code>filter</code> для конструктора.
                 <code>filter</code> для конструктора.
             </para></listitem>
             </para></listitem>
 
 
             <listitem><para>
             <listitem><para>
                 <code>strictVars</code> - если опция установлена, то
                 <code>strictVars</code> - если опция установлена, то
-                <code>Zend_View</code> генерирует уведомления (notices) и
+                <classname>Zend_View</classname> генерирует уведомления (notices) и
                 предупреждения (warnings), когда производится обращение к
                 предупреждения (warnings), когда производится обращение к
                 неинициализированной переменной. Опция может быть
                 неинициализированной переменной. Опция может быть
                 установлена посредством вызова <code>strictVars(true)</code> или
                 установлена посредством вызова <code>strictVars(true)</code> или
@@ -178,15 +181,105 @@ base/path/
         </itemizedlist>
         </itemizedlist>
     </sect2>
     </sect2>
 
 
+    <sect2 id="zend.view.introduction.shortTags">
+        <title>Короткие теги в скриптах вида</title>
+
+        <para>
+            В нашей документации и примерах мы применяем короткие теги PHP:
+            <code>&lt;?</code> and <code>&lt;?=</code>. Кроме того, мы обычно
+            используем <ulink
+                url="http://us.php.net/manual/en/control-structures.alternative-syntax.php">альтернативный
+                синтаксис для управляющих структур</ulink>. Их удобно
+            использовать при написании скриптов вида, они делают конструкции
+            более лаконичными и позволяют размещать операторы без лишних
+            переходов на другую строку.
+        </para>
+
+        <para>
+            Несмотря на это, многие разработчики
+            предпочитают использовать длинную форму записи для обеспечения
+            валидности или переносимости кода. Например, в рекомендуемой
+            конфигурации PHP
+            (файл php.ini.recommended) опция <code>short_open_tag</code>
+            отключена. Также, если вы используете XML в своих скриптах
+            вида, то с короткими открывающими тегами PHP они не будут проходить
+            валидацию.
+        </para>
+
+        <para>
+            Кроме того, если вы используете короткие теги, и опция
+            <code>short_open_tag</code> отключена, то скрипты вида будут либо
+            приводить к ошибкам выполнения, либо просто выводить пользователю
+            код, включенный в эти теги.
+        </para>
+
+        <para>
+            В последнем случае, если вы хотите использовать короткие теги,
+            но они отключены, у вас есть два возможных решения:
+        </para>
+
+        <itemizedlist>
+            <listitem>
+                <para>
+                    Включить короткие теги в своем файле <code>.htaccess</code>:
+                </para>
+
+                <programlisting role="apache"><![CDATA[
+php_value "short_open_tag" "on"
+]]></programlisting>
+
+                <para>
+                    Это будет действовать только в том случае, если у вас есть
+                    права на создание и использование файлов <code>.htaccess</code>.
+                    Эта директива также может быть добавлена в
+                    конфигурационный файл <code>httpd.conf</code>.
+                </para>
+            </listitem>
+
+            <listitem>
+                <para>
+                    Включить обертку потока (stream wrapper), которая будет
+                    на лету преобразовывать короткие теги в полные:
+                </para>
+
+        <programlisting role="php"><![CDATA[
+$view->setUseStreamWrapper(true);
+]]></programlisting>
+
+                <para>
+                    В этом вызове <classname>Zend_View_Stream</classname> регистрируется в
+                    качестве обертки потока к скриптам вида, благодаря этому
+                    код будет работать так же, как если бы короткие теги были
+                    были включены.
+                </para>
+            </listitem>
+        </itemizedlist>
+
+        <note>
+            <title>Обертка потока для скриптов вида снижает производительность</title>
+
+            <para>
+                Использование обертки потока <emphasis>снижает</emphasis>
+                производительность вашего приложения.
+                Мы рекомендуем включать короткие
+                теги, переписывать свои скрипты вида с тем, чтобы
+                использовалась полная форма записи тегов, либо использовать
+                продуманную стратегию частичного или полного кэширования
+                содержимого страниц.
+            </para>
+        </note>
+    </sect2>
+
     <sect2 id="zend.view.introduction.accessors">
     <sect2 id="zend.view.introduction.accessors">
         <title>Вспомогательные аксессоры</title>
         <title>Вспомогательные аксессоры</title>
 
 
         <para>
         <para>
-            Скорее всего, вам никогда не понадобится вызывать методы
-            <code>assign()</code>, <code>render()</code> или перечисленные ниже
-            для установки/добавления фильтров, помощников, и путей к скриптам
-            вида. Тем не менее, если вы хотите самостоятельно расширить класс
-            <code>Zend_View</code> или нуждаетесь в доступе к его внутренностям,
+            Скорее всего, вам никогда не понадобится вызывать
+            <code>assign()</code>, <code>render()</code> и другие
+            перечисленные ниже методы
+            для установки/добавления фильтров, помощников, путей к скриптам
+            вида. Тем не менее, если требуется расширить класс
+            <classname>Zend_View</classname> или нужен доступ к его внутреннему коду,
             то можно использовать следующие аксессоры:
             то можно использовать следующие аксессоры:
         </para>
         </para>
 
 
@@ -215,7 +308,8 @@ base/path/
 
 
             <listitem>
             <listitem>
                 <para>
                 <para>
-                    <code>getScriptPaths()</code> возвращает все зарегистрированные пути к скриптам вида.
+                    <code>getScriptPaths()</code> возвращает все
+                    зарегистрированные пути к скриптам вида.
                 </para>
                 </para>
             </listitem>
             </listitem>
 
 
@@ -229,7 +323,8 @@ base/path/
 
 
             <listitem>
             <listitem>
                 <para>
                 <para>
-                    <code>getHelperPaths()</code> возвращает все зарегистрированные пути к классам помощников.
+                    <code>getHelperPaths()</code> возвращает все
+                    зарегистрированные пути к классам помощников.
                 </para>
                 </para>
             </listitem>
             </listitem>
 
 
@@ -243,7 +338,8 @@ base/path/
 
 
             <listitem>
             <listitem>
                 <para>
                 <para>
-                    <code>getFilterPaths()</code> возвращает все зарегистрированные пути к классам фильтров.
+                    <code>getFilterPaths()</code> возвращает все
+                    зарегистрированные пути к классам фильтров.
                 </para>
                 </para>
             </listitem>
             </listitem>
         </itemizedlist>
         </itemizedlist>

+ 131 - 54
documentation/manual/ru/module_specs/Zend_View-Scripts.xml

@@ -1,32 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.view.scripts">
 <sect1 id="zend.view.scripts">
 
 
     <title>Скрипты видов</title>
     <title>Скрипты видов</title>
 
 
     <para>
     <para>
         После того, как ваш контроллер определил переменные и вызвал
         После того, как ваш контроллер определил переменные и вызвал
-        метод <code>render()</code>, <code>Zend_View</code> включает
+        метод <code>render()</code>, <classname>Zend_View</classname> включает
         требуемый скрипт вида и выполняет его в области
         требуемый скрипт вида и выполняет его в области
-        видимости <code>Zend_View</code>. Поэтому в вашем скрипте представления
-        ссылки на $this в действительности будут ссылаться на сам экземляр
-        <code>Zend_View</code>.
+        видимости экземпляра <classname>Zend_View</classname>. Поэтому в вашем скрипте
+        вида ссылки на $this в действительности будут ссылаться на
+        сам экземляр <classname>Zend_View</classname>.
     </para>
     </para>
 
 
     <para>
     <para>
-        Переменные, объявленные для вида в контроллере, ссылаются на
-        свойства экземпляра. Например, если контроллер объявил
-        переменную 'something', то вы можете ссылаться на нее как
-        на <code>$this->something</code> в скрипте вида (это дает
-        вам возможность отслеживать, какие переменные были объявлены
-        для скрипта, и какие были объявлены самим скриптом).
+        Переменные, устанавливаемые в контроллере для скрипта вида, являются
+        свойствами экземпляра <classname>Zend_View</classname>. Например, если контроллер
+        установил переменную 'something', то в скрипте вида вы можете ссылаться
+        на нее следующим образом: <code>$this->something</code>. Это дает
+        возможность отслеживать, какие переменные были установлены
+        извне для скрипта, и какие были установлены в самом скрипте.
     </para>
     </para>
 
 
     <para>
     <para>
-        Ниже приведен пример скрипта представления из введения:
+        Ниже приведен пример скрипта вида из введения:
     </para>
     </para>
 
 
-    <programlisting role="php"><![CDATA[<?php if ($this->books): ?>
+    <programlisting role="php"><![CDATA[
+<?php if ($this->books): ?>
 
 
-    <!-- Таблица нескольких книг. -->
+    <!-- Таблица из нескольких книг. -->
     <table>
     <table>
         <tr>
         <tr>
             <th>Author</th>
             <th>Author</th>
@@ -46,8 +49,8 @@
 
 
     <p>Нет книг для отображения.</p>
     <p>Нет книг для отображения.</p>
 
 
-<?php endif; ?>]]>
-    </programlisting>
+<?php endif;?>
+]]></programlisting>
 
 
     <sect2 id="zend.view.scripts.escaping">
     <sect2 id="zend.view.scripts.escaping">
 
 
@@ -59,34 +62,33 @@
             экранирован; помимо прочего, это помогает
             экранирован; помимо прочего, это помогает
             предотвратить XSS-атаки.
             предотвратить XSS-атаки.
             За исключением тех случаев, когда используются функции,
             За исключением тех случаев, когда используются функции,
-            методы или помощники, которые делают экранирование
-            сами, вы должны всегда экранировать переменные, когда выводите их.
+            методы или помощники, которые сами производят экранирование,
+            вы должны всегда экранировать переменные, когда выводите их.
         </para>
         </para>
 
 
         <para>
         <para>
-            <code>Zend_View</code> снабжен методом <code>escape()</code>,
+            <classname>Zend_View</classname> снабжен методом <code>escape()</code>,
             который выполняет экранирование.
             который выполняет экранирование.
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
-// плохая практика для скриптов вида
+        <programlisting role="php"><![CDATA[
+// плохая практика
 echo $this->variable;
 echo $this->variable;
 
 
-// хорошая практика для скриптов вида
+// хорошая практика
 echo $this->escape($this->variable);
 echo $this->escape($this->variable);
-?>]]>
-        </programlisting>
+]]></programlisting>
 
 
         <para>
         <para>
             По умолчанию метод <code>escape()</code> использует функцию PHP
             По умолчанию метод <code>escape()</code> использует функцию PHP
             <code>htmlspecialchars()</code> для экранирования. Но, в зависимости
             <code>htmlspecialchars()</code> для экранирования. Но, в зависимости
             от вашего окружения, может потребоваться выполнять экранирование
             от вашего окружения, может потребоваться выполнять экранирование
             по-иному. Используйте метод <code>setEscape()</code> на уровне
             по-иному. Используйте метод <code>setEscape()</code> на уровне
-            контроллера, чтобы указать <code>Zend_View</code>, какую
+            контроллера, чтобы указать <classname>Zend_View</classname>, какую
             экранирующую функцию обратного вызова использовать.
             экранирующую функцию обратного вызова использовать.
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
+        <programlisting role="php"><![CDATA[
 // создание экземпляра Zend_View
 // создание экземпляра Zend_View
 $view = new Zend_View();
 $view = new Zend_View();
 
 
@@ -103,12 +105,11 @@ $view->setEscape(array($obj, 'methodName'));
 
 
 // и затем воспроизводим вид
 // и затем воспроизводим вид
 echo $view->render(...);
 echo $view->render(...);
-?>]]>
-        </programlisting>
+]]></programlisting>
 
 
         <para>
         <para>
             Функции или методы обратного вызова должны принимать значение,
             Функции или методы обратного вызова должны принимать значение,
-            которое требуется экранировать как первый параметр,
+            которое требуется экранировать, как первый параметр,
             все остальные параметры должны быть необязательными.
             все остальные параметры должны быть необязательными.
         </para>
         </para>
 
 
@@ -120,11 +121,11 @@ echo $view->render(...);
 
 
         <para>
         <para>
             Хотя PHP сам по себе представляет собой мощный шаблонизатор,
             Хотя PHP сам по себе представляет собой мощный шаблонизатор,
-            многие разработчики считают его избыточным или слишком сложным для
-            верстальщиков и поэтому предпочитают использовать другие
-            шаблонизаторы. Zend_View предоставляет 2 пути для этого: первый –
-            через скрипты вида, второй - посредством реализации интерфейса
-            Zend_View_Interface.
+            многие разработчики считают его избыточным или сложным для
+            верстальщиков и предпочитают использовать другие
+            шаблонизаторы. <classname>Zend_View</classname> предоставляет два пути для
+            этого: первый - через скрипты вида, второй - посредством реализации
+            интерфейса <classname>Zend_View_Interface</classname>.
         </para>
         </para>
 
 
         <sect3 id="zend.view.scripts.templates.scripts">
         <sect3 id="zend.view.scripts.templates.scripts">
@@ -136,7 +137,7 @@ echo $view->render(...);
                 шаблоны в стиле PHPLIB).
                 шаблоны в стиле PHPLIB).
             </para>
             </para>
 
 
-            <programlisting role="php"><![CDATA[<?php
+            <programlisting role="php"><![CDATA[
 include_once 'template.inc';
 include_once 'template.inc';
 $tpl = new Template();
 $tpl = new Template();
 
 
@@ -157,7 +158,7 @@ if ($this->books) {
     $tpl->setFile("nobooks", "nobooks.tpl")
     $tpl->setFile("nobooks", "nobooks.tpl")
     $tpl->pparse("output", "nobooks");
     $tpl->pparse("output", "nobooks");
 }
 }
-?>]]></programlisting>
+]]></programlisting>
 
 
             <para>
             <para>
                 Это может соответствовать следующему файлу шаблона:
                 Это может соответствовать следующему файлу шаблона:
@@ -189,8 +190,9 @@ if ($this->books) {
             <title>Шаблонизаторы с использованием Zend_View_Interface</title>
             <title>Шаблонизаторы с использованием Zend_View_Interface</title>
 
 
             <para>
             <para>
-                Некоторым может быть удобнее использовать совместимый с
-                Zend_View шаблонизатор. <code>Zend_View_Interface</code>
+                Некоторые считают более удобным использовать совместимый с
+                <classname>Zend_View</classname> шаблонизатор.
+                <classname>Zend_View_Interface</classname>
                 предоставляет минимально необходимый для
                 предоставляет минимально необходимый для
                 совместимости интерфейс:
                 совместимости интерфейс:
             </para>
             </para>
@@ -207,6 +209,21 @@ public function getEngine();
 public function setScriptPath($path);
 public function setScriptPath($path);
 
 
 /**
 /**
+ * Устанавливает базовый путь ко всем необходимым скрипту вида ресурсам
+ */
+public function setBasePath($path, $prefix = 'Zend_View');
+
+/**
+ * Устанавливает дополнительный базовый путь к необходимым скрипту вида ресурсам
+ */
+public function addBasePath($path, $prefix = 'Zend_View');
+
+/**
+ * Возвращает текущие пути к скриптам
+ */
+public function getScriptPaths();
+
+/**
  * Переопределение методов для присвоения значений переменным шаблонов как
  * Переопределение методов для присвоения значений переменным шаблонов как
  * свойствам объекта
  * свойствам объекта
  */
  */
@@ -233,15 +250,12 @@ public function render($name);
 ]]></programlisting>
 ]]></programlisting>
 
 
             <para>
             <para>
-                Используя этот интерфейс, легко сделать "обертку" для
-                шаблонизаторов сторонних разработчиков. В примере показан
+                Используя этот интерфейс, относительно легко сделать "обертку"
+                для шаблонизаторов сторонних разработчиков. В примере показан
                 вариант "обертки" для Smarty:
                 вариант "обертки" для Smarty:
             </para>
             </para>
 
 
             <programlisting role="php"><![CDATA[
             <programlisting role="php"><![CDATA[
-require_once 'Zend/View/Interface.php';
-require_once 'Smarty.class.php';
-
 class Zend_View_Smarty implements Zend_View_Interface
 class Zend_View_Smarty implements Zend_View_Interface
 {
 {
     /**
     /**
@@ -297,10 +311,44 @@ class Zend_View_Smarty implements Zend_View_Interface
     }
     }
 
 
     /**
     /**
+     * Извлечение текущего пути к шаблонам
+     *
+     * @return string
+     */
+    public function getScriptPaths()
+    {
+        return array($this->_smarty->template_dir);
+    }
+
+    /**
+     * Метод-"псевдоним" для setScriptPath
+     *
+     * @param string $path
+     * @param string $prefix Не используется
+     * @return void
+     */
+    public function setBasePath($path, $prefix = 'Zend_View')
+    {
+        return $this->setScriptPath($path);
+    }
+
+    /**
+     * Метод-"псевдоним" для setScriptPath
+     *
+     * @param string $path
+     * @param string $prefix Не используется
+     * @return void
+     */
+    public function addBasePath($path, $prefix = 'Zend_View')
+    {
+        return $this->setScriptPath($path);
+    }
+
+    /**
      * Присвоение значения переменной шаблона
      * Присвоение значения переменной шаблона
      *
      *
-     * @param string $key The variable name.
-     * @param mixed $val The variable value.
+     * @param string $key Имя переменной
+     * @param mixed $val Значение переменной
      * @return void
      * @return void
      */
      */
     public function __set($key, $val)
     public function __set($key, $val)
@@ -311,8 +359,8 @@ class Zend_View_Smarty implements Zend_View_Interface
     /**
     /**
      * Получение значения переменной
      * Получение значения переменной
      *
      *
-     * @param string $key The variable name.
-     * @return mixed The variable value.
+     * @param string $key Имя переменной
+     * @return mixed Значение переменной
      */
      */
     public function __get($key)
     public function __get($key)
     {
     {
@@ -388,17 +436,46 @@ class Zend_View_Smarty implements Zend_View_Interface
 
 
             <para>
             <para>
                 В этом примере вы можете инстанцировать класс
                 В этом примере вы можете инстанцировать класс
-                <code>Zend_View_Smarty</code> вместо <code>Zend_View</code> и
-                использовать его подобно тому, как используется
-                <code>Zend_View</code>.
+                <classname>Zend_View_Smarty</classname> вместо <classname>Zend_View</classname> и
+                использовать его так же, как используется
+                <classname>Zend_View</classname>.
             </para>
             </para>
 
 
             <programlisting role="php"><![CDATA[
             <programlisting role="php"><![CDATA[
-$view = new Zend_View_Smarty();
-$view->setScriptPath('/path/to/templates');
-$view->book = 'Zend PHP 5 Certification Study Guide';
-$view->author = 'Davey Shafik and Ben Ramsey'
-$rendered = $view->render('bookinfo.tpl');
+//Пример 1. В initView() инициализатора
+$view = new Zend_View_Smarty('/path/to/templates');
+$viewRenderer =
+    new Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
+$viewRenderer->setView($view)
+             ->setViewBasePathSpec($view->_smarty->template_dir)
+             ->setViewScriptPathSpec(':controller/:action.:suffix')
+             ->setViewScriptPathNoControllerSpec(':action.:suffix')
+             ->setViewSuffix('tpl');
+
+//Пример 2. Использование в контроллере действии остается тем же
+class FooController extends Zend_Controller_Action
+{
+    public function barAction()
+    {
+        $this->view->book   = 'Zend PHP 5 Certification Study Guide';
+        $this->view->author = 'Davey Shafik and Ben Ramsey'
+    }
+}
+
+//Пример 3. Инициализация вида в контроллере действий
+class FooController extends Zend_Controller_Action
+{
+    public function init()
+    {
+        $this->view   = new Zend_View_Smarty('/path/to/templates');
+        $viewRenderer = $this->_helper->getHelper('viewRenderer');
+        $viewRenderer->setView($this->view)
+                     ->setViewBasePathSpec($view->_smarty->template_dir)
+                     ->setViewScriptPathSpec(':controller/:action.:suffix')
+                     ->setViewScriptPathNoControllerSpec(':action.:suffix')
+                     ->setViewSuffix('tpl');
+    }
+}
 ]]></programlisting>
 ]]></programlisting>
 
 
         </sect3>
         </sect3>

+ 4 - 13
documentation/manual/ru/module_specs/Zend_XmlRpc.xml

@@ -1,29 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.xmlrpc.introduction">
 <sect1 id="zend.xmlrpc.introduction">
     <title>Введение</title>
     <title>Введение</title>
 
 
     <para>
     <para>
-        Согласно информации, размещенной на его
-        <ulink url="http://www.xmlrpc.com/">начальной странице</ulink> XML-RPC
+        Согласно информации, размещенной на стартовой странице
+        <ulink url="http://www.xmlrpc.com/">официального сайта</ulink>, XML-RPC
         является "... удаленным вызовом процедур с использованием HTTP для
         является "... удаленным вызовом процедур с использованием HTTP для
         передачи данных и XML для кодирования. XML-RPC разработан в расчете
         передачи данных и XML для кодирования. XML-RPC разработан в расчете
         на максимально простое использование, и в то же время позволяет
         на максимально простое использование, и в то же время позволяет
         передавать, обрабатывать и возвращать сложные структуры данных."
         передавать, обрабатывать и возвращать сложные структуры данных."
-<!--
-        From its <ulink url="http://www.xmlrpc.com/">home page</ulink>,
-        XML-RPC is described as a "...remote procedure calling using HTTP as the
-        transport and XML as the encoding. XML-RPC is designed to be as simple
-        as possible, while allowing complex data structures to be transmitted,
-        processed and returned."
--->
     </para>
     </para>
 
 
     <para>
     <para>
         Zend Framework поддерживает как использование удаленных XML-RPC
         Zend Framework поддерживает как использование удаленных XML-RPC
         сервисов, так и создание новых XML-RPC серверов.
         сервисов, так и создание новых XML-RPC серверов.
-<!--
-        Zend Framework provides support for both consuming remote XML-RPC
-        services and building new XML-RPC servers.
--->
     </para>
     </para>
 </sect1>
 </sect1>
 <!--
 <!--

+ 156 - 360
documentation/manual/ru/module_specs/Zend_XmlRpc_Client.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.xmlrpc.client">
 <sect1 id="zend.xmlrpc.client">
     <title>Zend_XmlRpc_Client</title>
     <title>Zend_XmlRpc_Client</title>
 
 
@@ -6,36 +8,23 @@
 
 
         <para>
         <para>
             Zend Framework поддерживает клиентское использование удаленных
             Zend Framework поддерживает клиентское использование удаленных
-            XML-RPC сервисов через пакет <code>Zend_XmlRpc_Client</code>.
+            XML-RPC сервисов через пакет <classname>Zend_XmlRpc_Client</classname>.
             Его основные возможности включают в себя автоматическое
             Его основные возможности включают в себя автоматическое
             преобразование типов между PHP и XML-RPC, прокси-объект сервера и
             преобразование типов между PHP и XML-RPC, прокси-объект сервера и
             доступ к средствам интроспекции на сервере.
             доступ к средствам интроспекции на сервере.
-<!--
-            Zend Framework provides support for consuming remote XML-RPC
-            services as a client in the <code>Zend_XmlRpc_Client</code>
-            package. Its major features include automatic type conversion
-            between PHP and XML-RPC, a server proxy object, and access to
-            server introspection capabilities.
--->
         </para>
         </para>
 
 
     </sect2>
     </sect2>
 
 
 
 
     <sect2 id="zend.xmlrpc.client.method-calls">
     <sect2 id="zend.xmlrpc.client.method-calls">
-        <title>Вызов методов<!--Method Calls--></title>
+        <title>Вызов методов</title>
 
 
         <para>
         <para>
-            Конструктор <code>Zend_XmlRpc_Client</code> принимает URL удаленного
+            Конструктор <classname>Zend_XmlRpc_Client</classname> принимает URL удаленного
             XML-RPC сервера в качестве первого параметра. Новый экземпляр класса
             XML-RPC сервера в качестве первого параметра. Новый экземпляр класса
             может использоваться для вызова любых удаленных методов этого
             может использоваться для вызова любых удаленных методов этого
             сервера.
             сервера.
-<!--
-            The constructor of <code>Zend_XmlRpc_Client</code> receives the
-            URL of the remote XML-RPC server endpoint as its first parameter.
-            The new instance returned may be used to call any number of
-            remote methods at that endpoint.
--->
         </para>
         </para>
 
 
         <para>
         <para>
@@ -43,29 +32,18 @@
             и используйте его метод <code>call()</code>. В примере ниже
             и используйте его метод <code>call()</code>. В примере ниже
             используется демонстрационный XML-RPC сервер на веб-сайте Zend
             используется демонстрационный XML-RPC сервер на веб-сайте Zend
             Framework. Вы можете использовать его для тестирования или изучения
             Framework. Вы можете использовать его для тестирования или изучения
-            компонент <code>Zend_XmlRpc</code>.
-<!--
-            To call a remote method with the XML-RPC client, instantiate it
-            and use the <code>call()</code> instance method. The code sample
-            below uses a demonstration XML-RPC server on the Zend Framework
-            website. You can use it for testing or exploring the
-            <code>Zend_XmlRpc</code> components.
--->
+            компонент <classname>Zend_XmlRpc</classname>.
         </para>
         </para>
 
 
-        <example>
-            <title>Вызов метода XML-RPC<!--XML-RPC Method Call--></title>
-            <programlisting role="php"><![CDATA[<?php
-
-require_once 'Zend/XmlRpc/Client.php';
-
+        <example id="zend.xmlrpc.client.method-calls.example-1">
+            <title>Вызов метода XML-RPC</title>
+            <programlisting role="php"><![CDATA[
 $client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');
 $client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');
 
 
 echo $client->call('test.sayHello');
 echo $client->call('test.sayHello');
 
 
 // hello
 // hello
-
-?>]]></programlisting>
+]]></programlisting>
         </example>
         </example>
 
 
         <para>
         <para>
@@ -73,12 +51,6 @@ echo $client->call('test.sayHello');
             автоматически приведено к эквивалентному типу в PHP. В примере выше
             автоматически приведено к эквивалентному типу в PHP. В примере выше
             возвращается строка (тип <code>string</code> в PHP), и она уже
             возвращается строка (тип <code>string</code> в PHP), и она уже
             готова к применению.
             готова к применению.
-<!--
-            The XML-RPC value returned from the remote method call will be
-            automatically unmarshaled and cast to the equivalent PHP native
-            type. In the example above, a PHP <code>string</code> is returned
-            and is immediately ready to be used.
--->
         </para>
         </para>
 
 
         <para>
         <para>
@@ -87,21 +59,11 @@ echo $client->call('test.sayHello');
             каких-либо параметров, то они могут быть переданы методу
             каких-либо параметров, то они могут быть переданы методу
             <code>call()</code> через второй необязательный параметр в виде
             <code>call()</code> через второй необязательный параметр в виде
             массива значений для последующей передачи удаленному методу:
             массива значений для последующей передачи удаленному методу:
-<!--
-            The first parameter of the <code>call()</code> method receives the
-            name of the remote method to call. If the remote method requires
-            any parameters, these can be sent by supplying a second, optional
-            parameter to <code>call()</code> with an <code>array</code> of
-            values to pass to the remote method:
--->
         </para>
         </para>
 
 
-        <example>
-            <title>Вызов метода XML-RPC с параметрами<!--XML-RPC Method Call with Parameters--></title>
-            <programlisting role="php"><![CDATA[<?php
-
-require_once 'Zend/XmlRpc/Client.php';
-
+        <example id="zend.xmlrpc.client.method-calls.example-2">
+            <title>Вызов метода XML-RPC с параметрами</title>
+            <programlisting role="php"><![CDATA[
 $client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');
 $client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');
 
 
 $arg1 = 1.1;
 $arg1 = 1.1;
@@ -109,62 +71,42 @@ $arg2 = 'foo';
 
 
 $result = $client->call('test.sayHello', array($arg1, $arg2));
 $result = $client->call('test.sayHello', array($arg1, $arg2));
 
 
-?>]]></programlisting>
+// возвращаемый результат имеет "родной" для PHP тип
+]]></programlisting>
         </example>
         </example>
 
 
         <para>
         <para>
             Если удаленный метод не требует параметров, то этот необязательный
             Если удаленный метод не требует параметров, то этот необязательный
             параметр можно опустить или передать пустой массив. Массив
             параметр можно опустить или передать пустой массив. Массив
             параметров для удаленного метода может содержать значения "родного"
             параметров для удаленного метода может содержать значения "родного"
-            для PHP типа, объекты <code>Zend_XmlRpc_Value</code>, либо
+            для PHP типа, объекты <classname>Zend_XmlRpc_Value</classname>, либо
             и то и другое вместе.
             и то и другое вместе.
-<!--
-            If the remote method doesn't require parameters, this optional
-            parameter may either be left out or an empty <code>array()</code>
-            passed to it. The array of parameters for the remote method can
-            contain native PHP types, <code>Zend_XmlRpc_Value</code>
-            objects, or a mix of each.
--->
         </para>
         </para>
 
 
         <para>
         <para>
             Метод <code>call()</code> будет автоматически преобразовывать ответ
             Метод <code>call()</code> будет автоматически преобразовывать ответ
             XML-RPC и возвращать его в эквивалентном "родном" для PHP типе.
             XML-RPC и возвращать его в эквивалентном "родном" для PHP типе.
-            Кроме этого, можно получить объект <code>Zend_XmlRpc_Response</code>
+            Кроме этого, можно получить объект <classname>Zend_XmlRpc_Response</classname>
             для возвращенного значения, вызвав метод
             для возвращенного значения, вызвав метод
             <code>getLastResponse()</code> после вызова <code>call()</code>.
             <code>getLastResponse()</code> после вызова <code>call()</code>.
-<!--
-            The <code>call()</code> method will automatically convert the
-            XML-RPC response and return its equivalent PHP native type. A
-            <code>Zend_XmlRpc_Response</code> object for the return value will
-            also be available by calling the <code>getLastResponse()</code>
-            method after the call.
--->
         </para>
         </para>
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.xmlrpc.value.parameters">
     <sect2 id="zend.xmlrpc.value.parameters">
-        <title>Типы и их преобразование<!--Types and Conversions--></title>
+        <title>Типы и их преобразование</title>
         <para>
         <para>
-            Некоторых удаленных методов требуют передачи параметров при вызове.
-            Они предоставляются методу <code>call()</code> объекта
-            <code>Zend_XmlRpc_Client</code> в виде массива во втором параметре.
-            Каждый параметр может быть передан в "родном" для PHP типе, который
-            будет автоматически преобразован, или как объект, представляющий
+            Некоторые удаленные методы требуют передачи параметров при вызове.
+            Они передаются методу <code>call()</code> объекта
+            <classname>Zend_XmlRpc_Client</classname> в виде массива во втором параметре.
+            Любой параметр может быть передан в "родном" для PHP типе, который
+            будет автоматически преобразован в соответствующий тип XML-RPC,
+            или как объект, представляющий
             определенный тип в XML-RPC (один из объектов
             определенный тип в XML-RPC (один из объектов
-            <code>Zend_XmlRpc_Value</code>).
-<!--
-            Some remote method calls require parameters.  These are given to
-            the <code>call()</code> method of <code>Zend_XmlRpc_Client</code>
-            as an array in the second parameter.  Each parameter may be
-            given as either a native PHP type which will be automatically
-            converted, or as an object representing a specific XML-RPC type
-            (one of the <code>Zend_XmlRpc_Value</code> objects).
--->
+            <classname>Zend_XmlRpc_Value</classname>).
         </para>
         </para>
 
 
         <sect3 id="zend.xmlrpc.value.parameters.php-native">
         <sect3 id="zend.xmlrpc.value.parameters.php-native">
-            <title>Параметры в "родном" для PHP типе<!--PHP Native Types as Parameters--></title>
+            <title>Параметры в "родном" для PHP типе</title>
             <para>
             <para>
                 Параметры могут передаваться методу <code>call()</code> как
                 Параметры могут передаваться методу <code>call()</code> как
                 переменные "родного" для PHP типа, это могут быть типы
                 переменные "родного" для PHP типа, это могут быть типы
@@ -172,25 +114,16 @@ $result = $client->call('test.sayHello', array($arg1, $arg2));
                 <code>boolean</code>, <code>array</code> или
                 <code>boolean</code>, <code>array</code> или
                 <code>object</code>. В этом случае каждый из этих типов будет
                 <code>object</code>. В этом случае каждый из этих типов будет
                 автоматически определен и преобразован в один из типов XML-RPC
                 автоматически определен и преобразован в один из типов XML-RPC
-                согласно этой таблице:
-<!--
-                Parameters may be passed to <code>call()</code> as native PHP
-                variables, meaning as a <code>string</code>,
-                <code>integer</code>, <code>float</code>,
-                <code>boolean</code>, <code>array</code>, or an
-                <code>object</code>. In this case, each PHP native type will
-                be auto-detected and converted into one of the XML-RPC types
-                according to this table:
--->
+                согласно следующей таблице:
             </para>
             </para>
 
 
             <table>
             <table>
-                <title>Преобразование типов PHP и XML-RPC<!--PHP and XML-RPC Type Conversions--></title>
+                <title>Преобразование типов PHP и XML-RPC</title>
                 <tgroup cols="2">
                 <tgroup cols="2">
                     <thead>
                     <thead>
                         <row>
                         <row>
-                            <entry>Тип в PHP<!--PHP Native Type--></entry>
-                            <entry>Тип в XML-RPC<!--XML-RPC Type--></entry>
+                            <entry>Тип в PHP</entry>
+                            <entry>Тип в XML-RPC</entry>
                         </row>
                         </row>
                     </thead>
                     </thead>
                     <tbody>
                     <tbody>
@@ -225,19 +158,53 @@ $result = $client->call('test.sayHello', array($arg1, $arg2));
                     </tbody>
                     </tbody>
                 </tgroup>
                 </tgroup>
             </table>
             </table>
+
+            <note>
+                <title>Какому типу будет соответствовать пустой массив?</title>
+
+                <para>
+                    Передача пустого массива методу XML-RPC несет в себе
+                    потенциальную проблему, т.к. он может быть представлен
+                    и массивом, и структурой. <classname>Zend_XmlRpc_Client</classname>
+                    в этом случае делает запрос к методу сервера
+                    <code>system.methodSignature</code> для определения
+                    требуемого типа аргумента и производит соответствующее
+                    преобразование.
+                </para>
+
+                <para>
+                    Но такое решение само по себе тоже может быть источником
+                    проблем. Во-первых, сервера, которые не поддерживают метод
+                    <code>system.methodSignature</code>, будут журналировать это
+                    как ошибочные вызовы, в этом случае
+                    <classname>Zend_XmlRpc_Client</classname> будет производить
+                    преобразование значения к типу array в XML-RPC.
+                    Кроме того, это приводит к дополнительным вызовам к
+                    удаленному серверу в случае передачи аргументов в виде
+                    массивов.
+                </para>
+
+                <para>
+                    Для того, чтобы полностью отключить эти вызовы, вы можете
+                    вызвать метод <code>setSkipSystemLookup()</code> до
+                    собственно запроса к методу XML-RPC:
+                </para>
+
+                <programlisting role="php"><![CDATA[
+$client->setSkipSystemLookup(true);
+$result = $client->call('foo.bar', array(array()));
+]]></programlisting>
+            </note>
+
         </sect3>
         </sect3>
 
 
         <sect3 id="zend.xmlrpc.value.parameters.xmlrpc-value">
         <sect3 id="zend.xmlrpc.value.parameters.xmlrpc-value">
-            <title>Параметры в виде объектов <code>Zend_XmlRpc_Value</code><!--<code>Zend_XmlRpc_Value</code> Objects as Parameters--></title>
+            <title>Параметры в виде объектов Zend_XmlRpc_Value</title>
             <para>
             <para>
                 Параметры могут также создаваться как экземпляры
                 Параметры могут также создаваться как экземпляры
-                <code>Zend_XmlRpc_Value</code> для точного указания типа
+                <classname>Zend_XmlRpc_Value</classname> для точного указания типа
                 XML-RPC. Основные причины для этого:
                 XML-RPC. Основные причины для этого:
-<!--
-                Parameters may also be created as <code>Zend_XmlRpc_Value</code>
-                instances to specify an exact XML-RPC type.  The primary reasons
-                for doing this are:
--->
+
                 <itemizedlist>
                 <itemizedlist>
                     <listitem>
                     <listitem>
                         <para>
                         <para>
@@ -246,12 +213,6 @@ $result = $client->call('test.sayHello', array($arg1, $arg2));
                             (т.е. процедура требует целочисленное значение, а
                             (т.е. процедура требует целочисленное значение, а
                             вы можете получать его из БД в виде
                             вы можете получать его из БД в виде
                             строки)
                             строки)
-<!--
-                            When you want to make sure the correct parameter
-                            type is passed to the procedure (i.e. the
-                            procedure requires an integer and you may get it
-                            from a database as a string)
--->
                         </para>
                         </para>
                     </listitem>
                     </listitem>
                     <listitem>
                     <listitem>
@@ -259,99 +220,80 @@ $result = $client->call('test.sayHello', array($arg1, $arg2));
                             Удаленная процедура требует тип <code>base64</code>
                             Удаленная процедура требует тип <code>base64</code>
                             или <code>dateTime.iso8601</code> (которых нет среди
                             или <code>dateTime.iso8601</code> (которых нет среди
                             "родных" для PHP типов).
                             "родных" для PHP типов).
-<!--
-                            When the procedure requires <code>base64</code> or
-                            <code>dateTime.iso8601</code> type (which doesn't exists as a
-                            PHP native type)
--->
                         </para>
                         </para>
                     </listitem>
                     </listitem>
                     <listitem>
                     <listitem>
                         <para>
                         <para>
                             Автоматическое преобразование может работать
                             Автоматическое преобразование может работать
                             неправильно (например, вы хотите передать пустую
                             неправильно (например, вы хотите передать пустую
-                            структуру XML-RPC как параметр. Пустая структура
-                            представляется в PHP пустым массивом, но когда вы
-                            передаете пустой массив как параметр, он
-                            будет преобразован в массив XML-RPC, так как не
+                            структуру XML-RPC в качестве параметра. Пустая структура
+                            представляется в PHP пустым массивом, но если вы
+                            передаете пустой массив в качестве параметра, то он
+                            преобразовывается в массив XML-RPC, т.к. не
                             является ассоциативным массивом)
                             является ассоциативным массивом)
-<!--
-                            When auto-conversion may fail (i.e. you want to
-                            pass an empty XML-RPC struct as a parameter. Empty
-                            structs are represented as empty arrays in PHP
-                            but, if you give an empty array as a parameter it
-                            will be auto-converted to an XML-RPC array since
-                            it's not an associative array)
--->
                         </para>
                         </para>
                     </listitem>
                     </listitem>
                 </itemizedlist>
                 </itemizedlist>
             </para>
             </para>
 
 
             <para>
             <para>
-                Есть два пути создания объектов <code>Zend_XmlRpc_Value</code> ―
+                Есть два способа создания объектов <classname>Zend_XmlRpc_Value</classname> ―
                 непосредственное инстанцирование одного из подклассов
                 непосредственное инстанцирование одного из подклассов
-                <code>Zend_XmlRpc_Value</code> и использование статического
+                <classname>Zend_XmlRpc_Value</classname> и использование статического
                 фабричного метода
                 фабричного метода
-                <code>Zend_XmlRpc_Value::getXmlRpcValue()</code>.
-<!--
-                There are two ways to create a <code>Zend_XmlRpc_Value</code>
-                object: instantiate one of the <code>Zend_XmlRpc_Value</code>
-                subclasses directly, or use the static factory method
-                <code>Zend_XmlRpc_Value::getXmlRpcValue()</code>.
--->
+                <classname>Zend_XmlRpc_Value::getXmlRpcValue()</classname>.
             </para>
             </para>
 
 
-            <table>
-                <title>Объекты <code>Zend_XmlRpc_Value</code> для типов XML-RPC<!-- <code>Zend_XmlRpc_Value</code> Objects for XML-RPC Types--></title>
+            <table id="zend.xmlrpc.value.parameters.xmlrpc-value.table-1">
+                <title>Объекты Zend_XmlRpc_Value для типов XML-RPC</title>
                 <tgroup cols="3">
                 <tgroup cols="3">
                     <thead>
                     <thead>
                         <row>
                         <row>
                             <entry>Тип XML-RPC</entry>
                             <entry>Тип XML-RPC</entry>
-                            <entry>Константа <code>Zend_XmlRpc_Value</code></entry>
-                            <entry>Объект <code>Zend_XmlRpc_Value</code></entry>
+                            <entry>Константа <classname>Zend_XmlRpc_Value</classname></entry>
+                            <entry>Объект <classname>Zend_XmlRpc_Value</classname></entry>
                         </row>
                         </row>
                     </thead>
                     </thead>
                     <tbody>
                     <tbody>
                         <row>
                         <row>
                             <entry>int</entry>
                             <entry>int</entry>
                             <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_INTEGER</code></entry>
                             <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_INTEGER</code></entry>
-                            <entry><code>Zend_XmlRpc_Value_Integer</code></entry>
+                            <entry><classname>Zend_XmlRpc_Value_Integer</classname></entry>
                         </row>
                         </row>
                         <row>
                         <row>
                             <entry>double</entry>
                             <entry>double</entry>
                             <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_DOUBLE</code></entry>
                             <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_DOUBLE</code></entry>
-                            <entry><code>Zend_XmlRpc_Value_Double</code></entry>
+                            <entry><classname>Zend_XmlRpc_Value_Double</classname></entry>
                         </row>
                         </row>
                         <row>
                         <row>
                             <entry>boolean</entry>
                             <entry>boolean</entry>
                             <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_BOOLEAN</code></entry>
                             <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_BOOLEAN</code></entry>
-                            <entry><code>Zend_XmlRpc_Value_Boolean</code></entry>
+                            <entry><classname>Zend_XmlRpc_Value_Boolean</classname></entry>
                         </row>
                         </row>
                         <row>
                         <row>
                             <entry>string</entry>
                             <entry>string</entry>
                             <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_STRING</code></entry>
                             <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_STRING</code></entry>
-                            <entry><code>Zend_XmlRpc_Value_String</code></entry>
+                            <entry><classname>Zend_XmlRpc_Value_String</classname></entry>
                         </row>
                         </row>
                         <row>
                         <row>
                             <entry>base64</entry>
                             <entry>base64</entry>
                             <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_BASE64</code></entry>
                             <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_BASE64</code></entry>
-                            <entry><code>Zend_XmlRpc_Value_Base64</code></entry>
+                            <entry><classname>Zend_XmlRpc_Value_Base64</classname></entry>
                         </row>
                         </row>
                         <row>
                         <row>
                             <entry>dateTime.iso8601</entry>
                             <entry>dateTime.iso8601</entry>
                             <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_DATETIME</code></entry>
                             <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_DATETIME</code></entry>
-                            <entry><code>Zend_XmlRpc_Value_DateTime</code></entry>
+                            <entry><classname>Zend_XmlRpc_Value_DateTime</classname></entry>
                         </row>
                         </row>
                         <row>
                         <row>
                             <entry>array</entry>
                             <entry>array</entry>
                             <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_ARRAY</code></entry>
                             <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_ARRAY</code></entry>
-                            <entry><code>Zend_XmlRpc_Value_Array</code></entry>
+                            <entry><classname>Zend_XmlRpc_Value_Array</classname></entry>
                         </row>
                         </row>
                         <row>
                         <row>
                             <entry>struct</entry>
                             <entry>struct</entry>
                             <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_STRUCT</code></entry>
                             <entry><code>Zend_XmlRpc_Value::XMLRPC_TYPE_STRUCT</code></entry>
-                            <entry><code>Zend_XmlRpc_Value_Struct</code></entry>
+                            <entry><classname>Zend_XmlRpc_Value_Struct</classname></entry>
                         </row>
                         </row>
                     </tbody>
                     </tbody>
                 </tgroup>
                 </tgroup>
@@ -359,25 +301,16 @@ $result = $client->call('test.sayHello', array($arg1, $arg2));
 
 
             <para>
             <para>
                 <note>
                 <note>
-                    <title>Автоматическое преобразование<!--Automatic Conversion--></title>
+                    <title>Автоматическое преобразование</title>
                     <para>
                     <para>
                         Когда создается новый объект
                         Когда создается новый объект
-                        <code>Zend_XmlRpc_Value</code>, его значение
+                        <classname>Zend_XmlRpc_Value</classname>, его значение
                         устанавливается в "родном" для PHP типе. Тип в PHP будет
                         устанавливается в "родном" для PHP типе. Тип в PHP будет
                         преобразован к определенному типу средствами PHP.
                         преобразован к определенному типу средствами PHP.
                         Например, если в качестве значения для объекта
                         Например, если в качестве значения для объекта
-                        <code>Zend_XmlRpc_Value_Integer</code> была передана
-                        строка, то она будет преобразована с помощью
-                        <code>(int)$value</code>.
-<!--
-                        When building a new <code>Zend_XmlRpc_Value</code>
-                        object, its value is set by a PHP type. The PHP type
-                        will be will be converted to the specified type using
-                        PHP casting. For example, if a string is given as a
-                        value to the <code>Zend_XmlRpc_Value_Integer</code>
-                        object, it will be converted using
+                        <classname>Zend_XmlRpc_Value_Integer</classname> была передана
+                        строка, то она будет преобразована через
                         <code>(int)$value</code>.
                         <code>(int)$value</code>.
--->
                     </para>
                     </para>
                 </note>
                 </note>
             </para>
             </para>
@@ -385,43 +318,28 @@ $result = $client->call('test.sayHello', array($arg1, $arg2));
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.xmlrpc.client.requests-and-responses">
     <sect2 id="zend.xmlrpc.client.requests-and-responses">
-        <title>Прокси-объект сервера<!--Server Proxy Object--></title>
+        <title>Прокси-объект сервера</title>
         <para>
         <para>
             Другим способом вызова удаленных методов через клиента XML-RPC
             Другим способом вызова удаленных методов через клиента XML-RPC
             является использование "заместителя" сервера. Это PHP-объект,
             является использование "заместителя" сервера. Это PHP-объект,
             который предоставляет интерфейс к удаленному пространству имен
             который предоставляет интерфейс к удаленному пространству имен
-            XML-RPC, делая работу с ним настолько близкой к работе с обычным
-            объектом в PHP, насколько это возможно.
-<!--
-            Another way to call remote methods with the XML-RPC client is to
-            use the server proxy.  This is a PHP object that proxies a remote
-            XML-RPC namespace, making it work as close to a native PHP object
-            as possible.
--->
+            XML-RPC, делая работу с ним максимально близкой к работе с обычным
+            объектом в PHP.
         </para>
         </para>
 
 
         <para>
         <para>
             Для того, чтобы инстанцировать "заместителя" сервера, вызовите
             Для того, чтобы инстанцировать "заместителя" сервера, вызовите
             метод <code>getProxy()</code> объекта
             метод <code>getProxy()</code> объекта
-            <code>Zend_XmlRpc_Client</code>. Любые вызовы методов прокси-объекта
+            <classname>Zend_XmlRpc_Client</classname>. Он вернет объект класса
+            <classname>Zend_XmlRpc_Client_ServerProxy</classname>.
+            Любые вызовы методов прокси-объекта
             сервера будет перенаправлены к удаленному серверу, параметры могут
             сервера будет перенаправлены к удаленному серверу, параметры могут
             передаваться так же, как и для любых других методов в PHP.
             передаваться так же, как и для любых других методов в PHP.
-<!--
-            To instantiate a server proxy, call the <code>getProxy()</code>
-            instance method of <code>Zend_XmlRpc_Client</code>. This will
-            return an instance of <code>Zend_XmlRpc_Client_ServerProxy</code>.
-            Any method call on the server proxy object will be forwarded to
-            the remote, and parameters may be passed like any other PHP
-            method.
--->
         </para>
         </para>
 
 
-        <example>
-            <title>Прокси-объект к пространству имен по умолчанию<!--Proxy the Default Namespace--></title>
-            <programlisting role="php"><![CDATA[<?php
-
-require_once 'Zend/XmlRpc/Client.php';
-
+        <example id="zend.xmlrpc.client.requests-and-responses.example-1">
+            <title>Прокси-объект к пространству имен по умолчанию</title>
+            <programlisting role="php"><![CDATA[
 $client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');
 $client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');
 
 
 // Создание прокси-объекта к пространству имен по умолчанию
 // Создание прокси-объекта к пространству имен по умолчанию
@@ -429,9 +347,7 @@ $server = $client->getProxy();
 
 
 $hello = $server->test->sayHello(1, 2);
 $hello = $server->test->sayHello(1, 2);
 // test.Hello(1, 2) возвращает "hello"
 // test.Hello(1, 2) возвращает "hello"
-
-?>]]>
-            </programlisting>
+]]></programlisting>
         </example>
         </example>
 
 
         <para>
         <para>
@@ -439,31 +355,20 @@ $hello = $server->test->sayHello(1, 2);
             указывающий, к какому пространству имен следует создать
             указывающий, к какому пространству имен следует создать
             прокси-объект. Если этот аргумент не был указан, то то будет
             прокси-объект. Если этот аргумент не был указан, то то будет
             использоваться пространство имен по умолчанию. В следующем примере
             использоваться пространство имен по умолчанию. В следующем примере
-            используется пространство имен <code>test</code>.
-<!--
-            The <code>getProxy()</code> method receives an optional argument
-            specifying which namespace of the remote server to proxy. If it
-            does not receive a namespace, the default namespace will be
-            proxied.  In the next example, the <code>test</code> namespace
-            will be proxied:
--->
+            используется пространство имен <code>test</code>:
         </para>
         </para>
 
 
-        <example>
-            <title>Прокси-объект к любому пространству имен<!--Proxy Any Namespace--></title>
-            <programlisting role="php"><![CDATA[<?php
-
-require_once 'Zend/XmlRpc/Client.php';
-
+        <example id="zend.xmlrpc.client.requests-and-responses.example-2">
+            <title>Прокси-объект к произвольному пространству имен</title>
+            <programlisting role="php"><![CDATA[
 $client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');
 $client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');
 
 
-// ... Proxy the "test" namespace
+// Создание прокси-объекта к пространству имен "test"
 $test  = $client->getProxy('test');
 $test  = $client->getProxy('test');
 
 
 $hello = $test->sayHello(1, 2);
 $hello = $test->sayHello(1, 2);
 // test.Hello(1,2) возвращает "hello"
 // test.Hello(1,2) возвращает "hello"
-
-?>]]></programlisting>
+]]></programlisting>
         </example>
         </example>
 
 
         <para>
         <para>
@@ -472,52 +377,31 @@ $hello = $test->sayHello(1, 2);
             прокси-объект сервера. Например, если сервер в примере выше имеет
             прокси-объект сервера. Например, если сервер в примере выше имеет
             метод <code>test.foo.bar()</code>, то он может вызываться следующим
             метод <code>test.foo.bar()</code>, то он может вызываться следующим
             образом: <code>$test->foo->bar()</code>.
             образом: <code>$test->foo->bar()</code>.
-<!--
-            If the remote server supports nested namespaces of any depth,
-            these can also be used through the server proxy. For example, if
-            the server in the example above had a method
-            <code>test.foo.bar()</code>, it could be called as
-            <code>$test->foo->bar()</code>.
--->
         </para>
         </para>
     </sect2>
     </sect2>
 
 
 
 
     <sect2 id="zend.xmlrpc.client.error-handling">
     <sect2 id="zend.xmlrpc.client.error-handling">
-        <title>Обработка ошибок<!--Error Handling--></title>
+        <title>Обработка ошибок</title>
         <para>
         <para>
-            При вызове методов XML-RPC могут происходить два типа ошибок: HTTP и
-            XML-RPC. <code>Zend_XmlRpc_Client</code> распознает оба типа,
+            При вызове методов XML-RPC могут могут быть ошибки двух типов: HTTP и
+            XML-RPC. <classname>Zend_XmlRpc_Client</classname> распознает оба типа,
             позволяя обнаруживать и отлавливать их независимо друг от друга.
             позволяя обнаруживать и отлавливать их независимо друг от друга.
-<!--
-            Two kinds of errors can occur during an XML-RPC method call: HTTP
-            errors and XML-RPC faults. The <code>Zend_XmlRpc_Client</code>
-            recognizes each and provides the ability to detect and trap them
-            independently.
--->
         </para>
         </para>
 
 
         <sect3 id="zend.xmlrpc.client.error-handling.http">
         <sect3 id="zend.xmlrpc.client.error-handling.http">
-            <title>Ошибки HTTP<!--HTTP Errors--></title>
+            <title>Ошибки HTTP</title>
 
 
             <para>
             <para>
-                Если произошла ошибка HTTP, например, удаленный HTTP-сервер
-                вернул код <code>404 Not Found</code>, то будет сгенерировано
-                исключение <code>Zend_XmlRpc_Client_HttpException</code>.
-<!--
-                If any HTTP error occurs, such as the remote HTTP server
-                returns a <code>404 Not Found</code>, a
-                <code>Zend_XmlRpc_Client_HttpException</code> will be thrown.
--->
+                Если произошла ошибка HTTP - например, удаленный HTTP-сервер
+                вернул код <code>404 Not Found</code>, - то будет сгенерировано
+                исключение <classname>Zend_XmlRpc_Client_HttpException</classname>.
             </para>
             </para>
 
 
-            <example>
-                <title>Обработка ошибок HTTP<!--Handling HTTP Errors--></title>
-
-                <programlisting role="php"><![CDATA[<?php
-
-require_once 'Zend/XmlRpc/Client.php';
+            <example id="zend.xmlrpc.client.error-handling.http.example-1">
+                <title>Обработка ошибок HTTP</title>
 
 
+                <programlisting role="php"><![CDATA[
 $client = new Zend_XmlRpc_Client('http://foo/404');
 $client = new Zend_XmlRpc_Client('http://foo/404');
 
 
 try {
 try {
@@ -530,64 +414,40 @@ try {
     // $e->getMessage() возвращает "Not Found"
     // $e->getMessage() возвращает "Not Found"
 
 
 }
 }
-
-?>]]></programlisting>
+]]></programlisting>
             </example>
             </example>
 
 
             <para>
             <para>
                 Независимо от того, какой клиент XML-RPC используется, всякий
                 Независимо от того, какой клиент XML-RPC используется, всякий
                 раз, когда происходит ошибка HTTP, генерируется исключение
                 раз, когда происходит ошибка HTTP, генерируется исключение
-                <code>Zend_XmlRpc_Client_HttpException</code>.
-<!--
-                Regardless of how the XML-RPC client is used, the
-                <code>Zend_XmlRpc_Client_HttpException</code> will be thrown
-                whenever an HTTP error occurs.
--->
+                <classname>Zend_XmlRpc_Client_HttpException</classname>.
             </para>
             </para>
         </sect3>
         </sect3>
 
 
         <sect3 id="zend.xmlrpc.client.error-handling.faults">
         <sect3 id="zend.xmlrpc.client.error-handling.faults">
-            <title>Ошибки XML-RPC<!--XML-RPC Faults--></title>
+            <title>Ошибки XML-RPC</title>
 
 
             <para>
             <para>
                 Ошибка XML-RPC аналогична исключению в PHP. Это специальный тип,
                 Ошибка XML-RPC аналогична исключению в PHP. Это специальный тип,
                 возвращаемый при вызове метода XML-RPC и включающий в себя код и
                 возвращаемый при вызове метода XML-RPC и включающий в себя код и
-                сообщение ошибки. Ошибки XML-RPC обрабатываются по-разному
+                сообщение ошибки. Ошибки XML-RPC обрабатываются по-разному,
                 в зависимости от контекста использования
                 в зависимости от контекста использования
-                <code>Zend_XmlRpc_Client</code>.
-<!--
-                An XML-RPC fault is analogous to a PHP exception. It is a
-                special type returned from an XML-RPC method call that has
-                both an error code and an error message. XML-RPC faults are
-                handled differently depending on the context of how the
-                <code>Zend_XmlRpc_Client</code> is used.
--->
+                <classname>Zend_XmlRpc_Client</classname>.
             </para>
             </para>
 
 
             <para>
             <para>
                Если используется метод <code>call()</code> или прокси-объект
                Если используется метод <code>call()</code> или прокси-объект
                сервера, то ошибка XML-RPC приведет к тому, что будет
                сервера, то ошибка XML-RPC приведет к тому, что будет
                сгенерировано исключение
                сгенерировано исключение
-               <code>Zend_XmlRpc_Client_FaultException</code>. Код и сообщение
+               <classname>Zend_XmlRpc_Client_FaultException</classname>. Код и сообщение
                исключения будут в точности соответствовать значениям в
                исключения будут в точности соответствовать значениям в
                возвращенном ответе с сообщением об ошибке.
                возвращенном ответе с сообщением об ошибке.
-<!--
-                When the <code>call()</code> method or the server
-                proxy object is used, an XML-RPC fault will result in a
-                <code>Zend_XmlRpc_Client_FaultException</code> being thrown.
-                The code and message of the exception will map directly to
-                their respective values in the original XML-RPC fault
-                response.
--->
             </para>
             </para>
 
 
-            <example>
-                <title>Обработка ошибок XML-RPC<!--Handling XML-RPC Faults--></title>
-
-                <programlisting role="php"><![CDATA[<?php
-
-require_once 'Zend/XmlRpc/Client.php';
+            <example id="zend.xmlrpc.client.error-handling.faults.example-1">
+                <title>Обработка ошибок XML-RPC</title>
 
 
+                <programlisting role="php"><![CDATA[
 $client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');
 $client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');
 
 
 try {
 try {
@@ -600,103 +460,66 @@ try {
     // $e->getMessage() возвращает "Unknown method"
     // $e->getMessage() возвращает "Unknown method"
 
 
 }
 }
-
-?>]]></programlisting>
+]]></programlisting>
             </example>
             </example>
 
 
             <para>
             <para>
                 Если для выполнения запроса используется метод
                 Если для выполнения запроса используется метод
                 <code>call()</code>, то в случае ошибки будет сгенерировано
                 <code>call()</code>, то в случае ошибки будет сгенерировано
-                исключение <code>Zend_XmlRpc_FaultException</code>. Объект
-                <code>Zend_XmlRpc_Response</code>, содержащий возвращенную
+                исключение <classname>Zend_XmlRpc_FaultException</classname>. Объект
+                <classname>Zend_XmlRpc_Response</classname>, содержащий возвращенную
                 ошибку, можно также получить через метод
                 ошибку, можно также получить через метод
                 <code>getLastResponse()</code>.
                 <code>getLastResponse()</code>.
-<!--
-                When the <code>call()</code> method is used to make the
-                request, the <code>Zend_XmlRpc_FaultException</code> will be
-                thrown on fault. A <code>Zend_XmlRpc_Response</code> object
-                containing the fault will also be available by calling
-                <code>getLastResponse()</code>.
--->
             </para>
             </para>
 
 
             <para>
             <para>
                 Если для выполнения запроса используется метод
                 Если для выполнения запроса используется метод
                 <code>doRequest()</code>, то исключение не генерируется. Вместо
                 <code>doRequest()</code>, то исключение не генерируется. Вместо
-                этого будет возвращен объект <code>Zend_XmlRpc_Response</code>,
+                этого будет возвращен объект <classname>Zend_XmlRpc_Response</classname>,
                 содержащий возвращенную XML-RPC ошибку. Проверить, содержит ли
                 содержащий возвращенную XML-RPC ошибку. Проверить, содержит ли
                 объект ошибку, можно через метод <code>isFault()</code> объекта
                 объект ошибку, можно через метод <code>isFault()</code> объекта
-                <code>Zend_XmlRpc_Response</code>.
-<!--
-                When the <code>doRequest()</code> method is used to make the
-                request, it will not throw the exception. Instead, it will
-                return a <code>Zend_XmlRpc_Response</code> object returned
-                will containing the fault. This can be checked with
-                <code>isFault()</code> instance method of
-                <code>Zend_XmlRpc_Response</code>.
--->
+                <classname>Zend_XmlRpc_Response</classname>.
             </para>
             </para>
         </sect3>
         </sect3>
 
 
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.xmlrpc.client.introspection">
     <sect2 id="zend.xmlrpc.client.introspection">
-        <title>Интроспекция сервера<!--Server Introspection--></title>
+        <title>Интроспекция сервера</title>
         <para>
         <para>
-            Некоторые XML-RPC сервера де-факто поддерживают интроспекцию методов
+            Некоторые XML-RPC сервера поддерживают интроспекцию методов
             под пространством имен <code>system.</code>.
             под пространством имен <code>system.</code>.
-            <code>Zend_XmlRpc_Client</code> предоставляет специальную поддержку
+            <classname>Zend_XmlRpc_Client</classname> предоставляет специальную поддержку
             для серверов с этой возможностью.
             для серверов с этой возможностью.
-<!--
-            Some XML-RPC servers support the de facto introspection methods under the XML-RPC
-            <code>system.</code> namespace.  <code>Zend_XmlRpc_Client</code> provides special
-            support for servers with these capabilities.
--->
         </para>
         </para>
 
 
         <para>
         <para>
-            Экземпляр <code>Zend_XmlRpc_Client_ServerIntrospection</code> может
+            Экземпляр <classname>Zend_XmlRpc_Client_ServerIntrospection</classname> может
             быть получен через вызов метода <code>getIntrospector()</code>
             быть получен через вызов метода <code>getIntrospector()</code>
-            класса <code>Zend_XmlRpcClient</code>. Далее он может использоваться
+            класса <classname>Zend_XmlRpcClient</classname>. Далее он может использоваться
             для выполнения операций интроспекции на сервере.
             для выполнения операций интроспекции на сервере.
-<!--
-            A <code>Zend_XmlRpc_Client_ServerIntrospection</code> instance may be retrieved by calling
-            the <code>getIntrospector()</code> method of <code>Zend_XmlRpcClient</code>.  It can
-            then be used to perform introspection operations on the server.
--->
         </para>
         </para>
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.xmlrpc.client.request-to-response">
     <sect2 id="zend.xmlrpc.client.request-to-response">
-        <title>От запроса к ответу<!--From Request to Response--></title>
+        <title>От запроса к ответу</title>
         <para>
         <para>
-            Метод <code>call()</code> экземпляра <code>Zend_XmlRpc_Client</code>
+            Метод <code>call()</code> экземпляра <classname>Zend_XmlRpc_Client</classname>
             в процессе выполнения строит объект запроса
             в процессе выполнения строит объект запроса
-            (<code>Zend_XmlRpc_Request</code>) и передает его другому методу
+            (<classname>Zend_XmlRpc_Request</classname>) и передает его другому методу
             <code>doRequest()</code>, который возвращает объект ответа
             <code>doRequest()</code>, который возвращает объект ответа
-            (<code>Zend_XmlRpc_Response</code>).
-<!--
-            Under the hood, the <code>call()</code> instance method of <code>Zend_XmlRpc_Client</code>
-            builds a request object (<code>Zend_XmlRpc_Request</code>) and sends it to another method,
-            <code>doRequest()</code>, that returns a response object (<code>Zend_XmlRpc_Response</code>).
--->
+            (<classname>Zend_XmlRpc_Response</classname>).
         </para>
         </para>
 
 
         <para>
         <para>
             Метод <code>doRequest()</code> также доступен для непосредственного
             Метод <code>doRequest()</code> также доступен для непосредственного
             использования:
             использования:
-<!--
-            The <code>doRequest()</code> method is also available for use directly:
--->
         </para>
         </para>
 
 
-        <example>
-            <title>Выполнение запроса<!--Processing Request to Response--></title>
-
-            <programlisting role="php"><![CDATA[<?php
-
-require_once 'Zend/XmlRpc/Client.php';
+        <example id="zend.xmlrpc.client.request-to-response.example-1">
+            <title>Выполнение запроса</title>
 
 
+            <programlisting role="php"><![CDATA[
 $client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');
 $client = new Zend_XmlRpc_Client('http://framework.zend.com/xmlrpc');
 
 
 $request = new Zend_XmlRpc_Request();
 $request = new Zend_XmlRpc_Request();
@@ -707,41 +530,26 @@ $client->doRequest($request);
 
 
 // $server->getLastRequest() возвращает экземпляр Zend_XmlRpc_Request
 // $server->getLastRequest() возвращает экземпляр Zend_XmlRpc_Request
 // $server->getLastResponse() возвращает экземпляр Zend_XmlRpc_Response
 // $server->getLastResponse() возвращает экземпляр Zend_XmlRpc_Response
-
-?>]]></programlisting>
+]]></programlisting>
         </example>
         </example>
 
 
         <para>
         <para>
-            Всегда после того, как через клиента был вызван метод XML-RPC (через
+            После того, как через клиента был вызван метод XML-RPC (через
             методы <code>call()</code>, <code>doRequest()</code> или через
             методы <code>call()</code>, <code>doRequest()</code> или через
-            прокси-объект сервера), можно получить объекты последнего запроса и
+            прокси-объект сервера), всегда можно получить объекты последнего запроса и
             ответа на него через методы <code>getLastRequest()</code> и
             ответа на него через методы <code>getLastRequest()</code> и
             <code>getLastResponse()</code> соответственно.
             <code>getLastResponse()</code> соответственно.
-<!--
-            Whenever an XML-RPC method call is made by the client through any
-            means, either the <code>call()</code> method,
-            <code>doRequest()</code> method, or server proxy, the last request
-            object and its resultant response object will always be available
-            through the methods <code>getLastRequest()</code> and
-            <code>getLastResponse()</code> respectively.
--->
         </para>
         </para>
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.xmlrpc.client.http-client">
     <sect2 id="zend.xmlrpc.client.http-client">
-        <title>HTTP-клиент и тестирование<!--HTTP Client and Testing--></title>
+        <title>HTTP-клиент и тестирование</title>
 
 
         <para>
         <para>
             Ни в одном из предыдущих примеров не указывался HTTP-клиент. В
             Ни в одном из предыдущих примеров не указывался HTTP-клиент. В
-            этом случае создается новый экземпляр <code>Zend_Http_Client</code>
+            этом случае создается новый экземпляр <classname>Zend_Http_Client</classname>
             с настройками по умолчанию и автоматически используется
             с настройками по умолчанию и автоматически используется
-            клиентом <code>Zend_XmlRpc_Client</code>.
-<!--
-            In all of the prior examples, an HTTP client was never specified.
-            When this is the case, a new instance of
-            <code>Zend_Http_Client</code> will be created with its default
-            options and used by <code>Zend_XmlRpc_Client</code> automatically.
--->
+            клиентом <classname>Zend_XmlRpc_Client</classname>.
         </para>
         </para>
 
 
         <para>
         <para>
@@ -750,27 +558,15 @@ $client->doRequest($request);
             использование HTTP-клиента по умолчанию. Тем не менее, метод
             использование HTTP-клиента по умолчанию. Тем не менее, метод
             <code>setHttpClient()</code> позволяет установить HTTP-клиент,
             <code>setHttpClient()</code> позволяет установить HTTP-клиент,
             отличный от принятого по умолчанию.
             отличный от принятого по умолчанию.
-<!--
-            The HTTP client can be retrieved at any time with the
-            <code>getHttpClient()</code> method. For most cases, the default
-            HTTP client will be sufficient. However, the
-            <code>setHttpClient()</code> method allows for a different HTTP
-            client instance to be injected.
--->
         </para>
         </para>
 
 
         <para>
         <para>
             <code>setHttpClient()</code> может быть полезен при
             <code>setHttpClient()</code> может быть полезен при
             unit-тестировании. При совместном использовании с
             unit-тестировании. При совместном использовании с
-            <code>Zend_Http_Client_Adapter_Test</code> можно имитировать
-            удаленные сервисы для тестирования. За примером того, как можно это
-            реализовать, см. unit-тесты для <code>Zend_XmlRpc_Client</code>.
-<!--
-            The <code>setHttpClient()</code> is particularly useful for unit testing.  When combined
-            with the <code>Zend_Http_Client_Adapter_Test</code>, remote services can be mocked
-            out for testing.  See the unit tests for <code>Zend_XmlRpc_Client</code> for examples
-            of how to do this.
--->
+            <classname>Zend_Http_Client_Adapter_Test</classname> можно имитировать
+            удаленные сервисы для тестирования. В качестве примера реализации
+            рассмотрите unit-тесты для <classname>Zend_XmlRpc_Client</classname>,
+            входящие в поставку Zend Framework.
         </para>
         </para>
     </sect2>
     </sect2>
 
 

+ 145 - 345
documentation/manual/ru/module_specs/Zend_XmlRpc_Server.xml

@@ -1,3 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Reviewed: no -->
 <sect1 id="zend.xmlrpc.server">
 <sect1 id="zend.xmlrpc.server">
     <title>Zend_XmlRpc_Server</title>
     <title>Zend_XmlRpc_Server</title>
 
 
@@ -5,153 +7,96 @@
         <title>Введение</title>
         <title>Введение</title>
 
 
         <para>
         <para>
-            Zend_XmlRpc_Server задуман как полнофункциональный XML-RPC сервер,
-            следующий <ulink url="http://www.xmlrpc.com/spec">спецификациям
-            на www.xmlrpc.com</ulink>. Кроме того, он реализует метод
-            <code>system.multicall()</code>, позволяющий добавлять несколько
+            <classname>Zend_XmlRpc_Server</classname> задуман как полнофункциональный XML-RPC сервер,
+            следующий <ulink url="http://www.xmlrpc.com/spec">спецификациям,
+            приведенным на www.xmlrpc.com</ulink>. Кроме того, он реализует метод
+            <code>system.multicall()</code>, позволяющий объединять несколько
             запросов в один.
             запросов в один.
-<!--
-            Zend_XmlRpc_Server is intended as a fully-featured XML-RPC server,
-            following <ulink url="http://www.xmlrpc.com/spec">the specifications
-            outlined at www.xmlrpc.com</ulink>. Additionally, it implements the
-            system.multicall() method, allowing boxcarring of requests.
--->
         </para>
         </para>
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.xmlrpc.server.usage">
     <sect2 id="zend.xmlrpc.server.usage">
-        <title>Основы использования<!--Basic Usage--></title>
+        <title>Основы использования</title>
 
 
         <para>
         <para>
-            Наиболее простой пример использования:
-<!--
-            An example of the most basic use case:
--->
+            Простой пример использования:
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
-require_once 'Zend/XmlRpc/Server.php';
-require_once 'My/Service/Class.php';
-
+        <programlisting role="php"><![CDATA[
 $server = new Zend_XmlRpc_Server();
 $server = new Zend_XmlRpc_Server();
 $server->setClass('My_Service_Class');
 $server->setClass('My_Service_Class');
-echo $server->handle();]]></programlisting>
+echo $server->handle();
+]]></programlisting>
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.xmlrpc.server.structure">
     <sect2 id="zend.xmlrpc.server.structure">
-        <title>Структура сервера<!--Server Structure--></title>
+        <title>Структура сервера</title>
 
 
         <para>
         <para>
-            Zend_XmlRpc_Server состоит из множества компонент от собственно
+            <classname>Zend_XmlRpc_Server</classname> состоит из множества компонент от собственно
             сервера до объектов запросов, ответов и сообщений об ошибке.
             сервера до объектов запросов, ответов и сообщений об ошибке.
-<!--
-            Zend_XmlRpc_Server is composed of a variety of components, ranging
-            from the server itself to request, response, and fault objects.
--->
         </para>
         </para>
 
 
         <para>
         <para>
-            Для загрузки Zend_XmlRpc_Server разработчик должен прикрепить классы
+            Для загрузки <classname>Zend_XmlRpc_Server</classname> разработчик должен прикрепить классы
             или функции к серверу через методы <code>setClass()</code> и
             или функции к серверу через методы <code>setClass()</code> и
             <code>addFunction()</code>.
             <code>addFunction()</code>.
-<!--
-            To bootstrap Zend_XmlRpc_Server, the developer must attach one or
-            more classes or functions to the server, via the
-            <code>setClass()</code> and <code>addFunction()</code> methods.
--->
         </para>
         </para>
 
 
         <para>
         <para>
-            После этого можно передать объект <code>Zend_XmlRpc_Request</code>
+            После этого можно передать объект <classname>Zend_XmlRpc_Request</classname>
             методу <code>Zend_XmlRpc_Server::handle()</code>; если он не был
             методу <code>Zend_XmlRpc_Server::handle()</code>; если он не был
             передан, то будет проинциализирован объект
             передан, то будет проинциализирован объект
-            <code>Zend_XmlRpc_Request_Http</code>, при этом данные запроса
+            <classname>Zend_XmlRpc_Request_Http</classname>, при этом данные запроса
             берутся из <code>php://input</code>.
             берутся из <code>php://input</code>.
-<!--
-            Once done, you may either pass a <code>Zend_XmlRpc_Request</code>
-            object to <code>Zend_XmlRpc_Server::handle()</code>, or it will
-            instantiate a <code>Zend_XmlRpc_Request_Http</code> object if none
-            is provided - thus grabbing the request from
-            <code>php://input</code>.
--->
         </para>
         </para>
 
 
         <para>
         <para>
             Затем <code>Zend_XmlRpc_Server::handle()</code> пытается определить
             Затем <code>Zend_XmlRpc_Server::handle()</code> пытается определить
             подходящий обработчик, основываясь на запрошенном методе. После
             подходящий обработчик, основываясь на запрошенном методе. После
-            этого он возвращает основанный на
-            <code>Zend_XmlRpc_Response</code> объект ответа или объект сообщения
-            об ошибке <code>Zend_XmlRpc_Server_Fault</code>. Эти объекты имеют
+            этого он возвращает объект ответа, основанный на
+            <classname>Zend_XmlRpc_Response</classname>, или объект сообщения
+            об ошибке <classname>Zend_XmlRpc_Server_Fault</classname>. Эти объекты имеют
             метод <code>__toString()</code>, который возвращает валидный XML-RPC
             метод <code>__toString()</code>, который возвращает валидный XML-RPC
             ответ в формате XML, что позволяет выводить эти объекты
             ответ в формате XML, что позволяет выводить эти объекты
-            непосредственно через <code>echo()</code>.
-<!--
-            <code>Zend_XmlRpc_Server::handle()</code> then attempts to
-            dispatch to the appropriate handler based on the method
-            requested. It then returns either a
-            <code>Zend_XmlRpc_Response</code>-based object or a
-            <code>Zend_XmlRpc_Server_Fault</code>object. These objects both have
-            <code>__toString()</code> methods that create valid XML-RPC XML
-            responses, allowing them to be directly echoed.
--->
+            через <code>echo</code>.
         </para>
         </para>
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.xmlrpc.server.conventions">
     <sect2 id="zend.xmlrpc.server.conventions">
-        <title>Соглашения<!--Conventions--></title>
+        <title>Соглашения</title>
         <para>
         <para>
-            Zend_XmlRpc_Server позволяет разработчикам прикреплять функции и
-            методы класса, которые называются "диспетчерируемыми XML-RPC
-            методами". Через Zend_Server_Reflection он проводит интроспекцию по
+            <classname>Zend_XmlRpc_Server</classname> позволяет прикреплять функции и
+            методы класса - т.н. доступные для диспетчеризации XML-RPC
+            методы. С помощью <classname>Zend_Server_Reflection</classname> он проводит интроспекцию по
             всем прикрепленным методам, используя docblock'и функций и методов
             всем прикрепленным методам, используя docblock'и функций и методов
             для установки текста справки и сигнатур методов.
             для установки текста справки и сигнатур методов.
-<!--
-            Zend_XmlRpc_Server allows the developer to attach functions and
-            class method calls as dispatchable XML-RPC methods. Via
-            Zend_Server_Reflection, it does introspection on all attached
-            methods, using the function and method docblocks to determine the
-            method help text and method signatures.
--->
         </para>
         </para>
 
 
         <para>
         <para>
-            Не обязательно, чтобы типы в XML-RPC один-в-один соответствовали
+            Не обязательно, чтобы типы в XML-RPC в точности соответствовали
             типам в PHP. Тем не менее, для наилучшего результата код пытается
             типам в PHP. Тем не менее, для наилучшего результата код пытается
             угадать наиболее подходящий тип, основываясь на значениях
             угадать наиболее подходящий тип, основываясь на значениях
             дескрипторов @param и @return. Некоторые типы в XML-RPC не имеют
             дескрипторов @param и @return. Некоторые типы в XML-RPC не имеют
-            эквивалентов в PHP и должны указываться в phpdoc. В их список
+            эквивалентов в PHP и должны указываться в PHPDoc. В их список
             входят:
             входят:
-<!--
-            XML-RPC types do not necessarily map one-to-one to PHP types.
-            However, the code will do its best to guess the appropriate type
-            based on the values listed in @param and @return lines. Some XML-RPC
-            types have no immediate PHP equivalent, however, and should be
-            hinted using the XML-RPC type in the phpdoc. These include:
--->
         </para>
         </para>
 
 
         <itemizedlist>
         <itemizedlist>
             <listitem>
             <listitem>
                 <para>
                 <para>
-                    dateTime.iso8601, дата в формате YYYYMMDDTHH:mm:ss
-<!--
-                    dateTime.iso8601, a string formatted as
-                    YYYYMMDDTHH:mm:ss
--->
+                    dateTime.iso8601 - дата в формате YYYYMMDDTHH:mm:ss
                 </para>
                 </para>
             </listitem>
             </listitem>
-            <listitem><para>base64, данные, закодированные по алгоритму base64</para></listitem>
-            <listitem><para>struct, любой ассоциативный массив</para></listitem>
+            <listitem><para>base64 - данные, закодированные по алгоритму base64</para></listitem>
+            <listitem><para>struct - любой ассоциативный массив</para></listitem>
         </itemizedlist>
         </itemizedlist>
 
 
         <para>
         <para>
             Пример того, как указывается XML-RPC тип
             Пример того, как указывается XML-RPC тип
-<!--
-            An example of how to hint follows:
--->
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
+        <programlisting role="php"><![CDATA[
 /**
 /**
 * Это пример функции
 * Это пример функции
 *
 *
@@ -162,19 +107,13 @@ echo $server->handle();]]></programlisting>
 */
 */
 function myFunc($val1, $val2, $val3)
 function myFunc($val1, $val2, $val3)
 {
 {
-}]]></programlisting>
+]]></programlisting>
 
 
         <para>
         <para>
             PhpDocumentor не проводит валидацию типов, определенных для
             PhpDocumentor не проводит валидацию типов, определенных для
             параметров или возвращаемых значений, поэтому это не должно
             параметров или возвращаемых значений, поэтому это не должно
-            повлиять на вашу документацию по API. Указание типов необходимо,
+            влиять на вашу документацию по API. Указание типов необходимо,
             если сервер проводит валидацию передаваемых методу параметров.
             если сервер проводит валидацию передаваемых методу параметров.
-<!--
-            PhpDocumentor does no validation of the types specified for params
-            or return values, so this will have no impact on your API
-            documentation. Providing the hinting is necessary, however, when the
-            server is validating the parameters provided to the method call.
--->
         </para>
         </para>
 
 
         <para>
         <para>
@@ -183,19 +122,12 @@ function myFunc($val1, $val2, $val3)
             значений; спецификация XML-RPC даже рекомендует, чтобы
             значений; спецификация XML-RPC даже рекомендует, чтобы
             system.methodSignature возвращал массив всех
             system.methodSignature возвращал массив всех
             возможных сигнатур метода (т.е. все возможные комбинации параметров
             возможных сигнатур метода (т.е. все возможные комбинации параметров
-            и возвращаемых значений). Вы можете делать это точно так же, как
-            обычно делаете для PhpDocumentor, используя оператор '|'.
-<!--
-            It is perfectly valid to specify multiple types for both params and
-            return values; the XML-RPC specification even suggests that
-            system.methodSignature should return an array of all possible method
-            signatures (i.e., all possible combinations of param and return
-            values). You may do so just as you normally would with
-            PhpDocumentor, using the '|' operator:
--->
+            и возвращаемых значений). Вы можете делать это в точности так же,
+            как это обычно делается для PhpDocumentor - с использованием
+            оператора '|':
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
+        <programlisting role="php"><![CDATA[
 /**
 /**
 * Это пример функции
 * Это пример функции
 *
 *
@@ -206,37 +138,26 @@ function myFunc($val1, $val2, $val3)
 */
 */
 function myFunc($val1, $val2, $val3)
 function myFunc($val1, $val2, $val3)
 {
 {
-}]]></programlisting>
+}
+]]></programlisting>
 
 
         <para>
         <para>
-            Тем не менее, следует учесть, что множество сигнатур может сбить с
-            толку разработчиков, использующих данный веб-сервис; иначе говоря,
+            Тем не менее, следует учесть, что обилие сигнатур может сбивать с
+            толку разработчиков, использующих данный веб-сервис. Другими словами,
             следует стремится к тому, чтобы XML-RPC метод имел только одну
             следует стремится к тому, чтобы XML-RPC метод имел только одну
             сигнатуру.
             сигнатуру.
-<!--
-            One note, however: allowing multiple signatures can lead to
-            confusion for developers using the services; generally speaking, an
-            XML-RPC method should only have a single signature.
--->
         </para>
         </para>
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.xmlrpc.server.namespaces">
     <sect2 id="zend.xmlrpc.server.namespaces">
-        <title>Использование пространства имен<!--Utilizing Namespaces--></title>
+        <title>Использование пространств имен</title>
 
 
         <para>
         <para>
-            В XML-RPC есть такое понятие, как пространства имен; по существу,
-            это позволяет группировать методы посредством разделенных точкой
-            пространств имен. Это позволяет предотвратить конфликты имен
+            В XML-RPC есть такое понятие, как пространства имен. Они позволяют
+            группировать методы посредством разделенных точкой
+            имен пространств. Это позволяет предотвратить конфликты имен
             методов, предоставляемых разными классами. Например, обычно XML-RPC
             методов, предоставляемых разными классами. Например, обычно XML-RPC
             сервер предоставляет несколько методов в пространстве имен 'system':
             сервер предоставляет несколько методов в пространстве имен 'system':
-<!--
-            XML-RPC has a concept of namespacing; basically, it allows grouping
-            XML-RPC methods by dot-delimited namespaces. This helps prevent
-            naming collisions between methods served by different classes. As an
-            example, the XML-RPC server is expected to server several methods in
-            the 'system' namespace:
--->
         </para>
         </para>
 
 
         <itemizedlist>
         <itemizedlist>
@@ -247,11 +168,7 @@ function myFunc($val1, $val2, $val3)
 
 
         <para>
         <para>
             В нашем случае они соответствуют методам с теми же именами в
             В нашем случае они соответствуют методам с теми же именами в
-            Zend_XmlRpc_Server.
-<!--
-            Internally, these map to the methods of the same name in
-            Zend_XmlRpc_Server.
--->
+            <classname>Zend_XmlRpc_Server</classname>.
         </para>
         </para>
 
 
         <para>
         <para>
@@ -259,181 +176,115 @@ function myFunc($val1, $val2, $val3)
             методов, то просто укажите пространство имен в качестве параметра
             методов, то просто укажите пространство имен в качестве параметра
             при вызове соответствующего метода для прикрепления функции или
             при вызове соответствующего метода для прикрепления функции или
             класса:
             класса:
-<!--
-            If you want to add namespaces to the methods you serve, simply
-            provide a namespace to the appropriate method when attaching a
-            function or class:
--->
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
+        <programlisting role="php"><![CDATA[
 // Все открытые методы в My_Service_Class можно будет вызывать как
 // Все открытые методы в My_Service_Class можно будет вызывать как
 // myservice.имя_метода
 // myservice.имя_метода
 $server->setClass('My_Service_Class', 'myservice');
 $server->setClass('My_Service_Class', 'myservice');
 
 
 // Функцию 'somefunc' можно будет вызывать как funcs.somefunc
 // Функцию 'somefunc' можно будет вызывать как funcs.somefunc
-$server->addFunction('somefunc', 'funcs');]]></programlisting>
+$server->addFunction('somefunc', 'funcs');
+]]></programlisting>
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.xmlrpc.server.request">
     <sect2 id="zend.xmlrpc.server.request">
-        <title>Специальные объекты запросов<!--Custom Request Objects--></title>
+        <title>Использование своих объектов запросов</title>
 
 
         <para>
         <para>
             В большинстве случаев вы можете использовать включенный по умолчанию
             В большинстве случаев вы можете использовать включенный по умолчанию
-            в Zend_XmlRpc_Server тип запроса – Zend_XmlRpc_Request_Http. Тем не
-            менее, может потребоваться использование XML-RPC через CLI, GUI или
-            другие окружения, журналирование приходящих запросов. Для этого вы
-            можете создавать специальные объекты запроса, которые наследуют от
-            Zend_XmlRpc_Request. Важно помнить при этом, что
-            методы getMethod() и getParams() должны быть реализованы таким
+            в <classname>Zend_XmlRpc_Server</classname> тип запроса –
+            <classname>Zend_XmlRpc_Request_Http</classname>. Тем не
+            менее, может потребоваться использование XML-RPC в окружениях
+            CLI, GUI и т.п., журналирование приходящих запросов. Для этого вы
+            можете создавать свои классы запросов, которые наследуют от
+            <classname>Zend_XmlRpc_Request</classname>. Важно помнить при этом, что
+            методы <code>getMethod()</code> и <code>getParams()</code>
+            должны быть реализованы таким
             образом, чтобы XML-RPC сервер мог получить из них ту информацию,
             образом, чтобы XML-RPC сервер мог получить из них ту информацию,
             которая необходима для обработки запроса.
             которая необходима для обработки запроса.
-<!--
-            Most of the time, you'll simply use the default request type
-            included with Zend_XmlRpc_Server, Zend_XmlRpc_Request_Http. However,
-            there may be times when you need XML-RPC to be available via the CLI,
-            a GUI, or other environment, or want to log incoming requests. To do
-            so, you may create a custom request object that extends
-            Zend_XmlRpc_Request. The most important thing to remember is to
-            ensure that the getMethod() and getParams() methods are implemented
-            so that the XML-RPC server can retrieve that information in order to
-            dispatch the request.
--->
         </para>
         </para>
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.xmlrpc.server.response">
     <sect2 id="zend.xmlrpc.server.response">
-        <title>Специальные объекты ответов<!--Custom Responses--></title>
+        <title>Использование своих объектов ответов</title>
 
 
         <para>
         <para>
-            Как и в случае объектов запросов, Zend_XmlRpc_Server может
-            возвращать специальные объекты ответов; по умолчанию возвращается
-            объект Zend_XmlRpc_Response_Http, который отправляет соответствующий
-            XML-RPC заголовок <code>Content-Type</code>. Одними из возможных
-            целей использования специальных объектов являются журналирование
-            ответов или отправка ответов обратно на STDOUT.
-<!--
-            Similar to request objects, Zend_XmlRpc_Server can return custom
-            response objects; by default, a Zend_XmlRpc_Response_Http object is
-            returned, which sends an appropriate Content-Type HTTP header for
-            use with XML-RPC. Possible uses of a custom object would be to log
-            responses, or to send responses back to STDOUT.
--->
+            Как и в случае объектов запросов, <classname>Zend_XmlRpc_Server</classname> может
+            возвращать объекты других типов; по умолчанию возвращается
+            объект <classname>Zend_XmlRpc_Response_Http</classname>, который отправляет соответствующий
+            XML-RPC заголовок <code>Content-Type</code>. Целью создания своих
+            типов ответов могут быть возможность журналирования
+            ответов или отправки ответов обратно в STDOUT.
         </para>
         </para>
 
 
         <para>
         <para>
-            Для того чтобы использовать специальный класс ответа, используйте
+            Для того чтобы использовать свой класс ответа, вызывайте
             метод <code>Zend_XmlRpc_Server::setResponseClass()</code> до вызова
             метод <code>Zend_XmlRpc_Server::setResponseClass()</code> до вызова
             метода <code>handle()</code>.
             метода <code>handle()</code>.
-<!--
-            To use a custom response class, use
-            Zend_XmlRpc_Server::setResponseClass() prior to calling handle().
--->
         </para>
         </para>
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.xmlrpc.server.fault">
     <sect2 id="zend.xmlrpc.server.fault">
-        <title>Обработка исключений через сообщения об ошибке<!--Handling Exceptions via Faults--></title>
+        <title>Обработка исключений через сообщения об ошибке</title>
 
 
         <para>
         <para>
-            Zend_XmlRpc_Server отлавливает исключения, сгенерированные
+            <classname>Zend_XmlRpc_Server</classname> отлавливает исключения, сгенерированные
             вызываемым методом и генерирует ответ с сообщением об ошибке сразу,
             вызываемым методом и генерирует ответ с сообщением об ошибке сразу,
             как только исключение поймано. Однако по умолчанию сообщение и код
             как только исключение поймано. Однако по умолчанию сообщение и код
             исключения не используются в ответе с сообщением об ошибке. Это
             исключения не используются в ответе с сообщением об ошибке. Это
             сделано намеренно для того, чтобы защитить ваш код, т.к. многие
             сделано намеренно для того, чтобы защитить ваш код, т.к. многие
-            исключения могут предоставлять информацию о коде приложения или
-            среде выполнения, предназначенные разработчику.
-<!--
-            Zend_XmlRpc_Server catches Exceptions generated by a dispatched
-            method, and generates an XML-RPC fault response when such an
-            exception is caught. By default, however, the exception messages and
-            codes are not used in a fault response. This is an intentional
-            decision to protect your code; many exceptions expose more
-            information about the code or environment than a developer would
-            necessarily intend (a prime example includes database abstraction or
-            access layer exceptions).
--->
+            исключения могут выдавать информацию о коде приложения или
+            среде выполнения, обычно предназначенные разработчику.
         </para>
         </para>
 
 
         <para>
         <para>
             Тем не менее, можно включать классы исключений в список разрешенных
             Тем не менее, можно включать классы исключений в список разрешенных
-            для отображения в ответах с сообщением об ошибке. Для этого
-            используйте Zend_XmlRpc_Server_Fault::attachFaultException() для
-            включения данного класса исключения в список разрешенных.
-<!--
-            Exception classes can be whitelisted to be used as fault responses,
-            however. To do so, simply utilize
-            Zend_XmlRpc_Server_Fault::attachFaultException() to pass an
-            exception class to whitelist:
--->
+            к отображению в ответах с сообщением об ошибке. Для этого
+            используйте <code>Zend_XmlRpc_Server_Fault::attachFaultException()</code>
+            для включения данного класса исключения в список разрешенных.
         </para>
         </para>
 
 
-        <programlisting role="php"><![CDATA[<?php
-Zend_XmlRpc_Server_Fault::attachFaultException('My_Project_Exception');]]></programlisting>
+        <programlisting role="php"><![CDATA[
+Zend_XmlRpc_Server_Fault::attachFaultException('My_Project_Exception');
+]]></programlisting>
 
 
         <para>
         <para>
             Если вы используете класс исключения, от которого наследуют другие
             Если вы используете класс исключения, от которого наследуют другие
             исключения в проекте, то можете cразу включить все "семейство"
             исключения в проекте, то можете cразу включить все "семейство"
-            исключений в список разрешенных. Zend_XmlRpc_Server_Exceptions
+            исключений в список разрешенных. Исключения
+            <classname>Zend_XmlRpc_Server_Exception</classname>
             всегда находится в списке разрешенных исключений для того, чтобы
             всегда находится в списке разрешенных исключений для того, чтобы
-            сообщать об определенных внутренних ошибках (вызов несуществующего
+            сообщать об отдельных внутренних ошибках (вызов несуществующего
             метода и т.д.).
             метода и т.д.).
-<!--
-            If you utilize an exception class that your other project exceptions
-            inherit, you can then whitelist a whole family of exceptions at a
-            time. Zend_XmlRpc_Server_Exceptions are always whitelisted, to
-            allow reporting specific internal errors (undefined methods, etc.).
--->
         </para>
         </para>
 
 
         <para>
         <para>
             На любое исключение, не включенное в список разрешенных, будет
             На любое исключение, не включенное в список разрешенных, будет
             генерироваться ответ с кодом ошибки '404' и сообщением 'Unknown
             генерироваться ответ с кодом ошибки '404' и сообщением 'Unknown
             error'.
             error'.
-<!--
-            Any exception not specifically whitelisted will generate a fault
-            response with a code of '404' and a message of 'Unknown error'.
--->
         </para>
         </para>
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.xmlrpc.server.caching">
     <sect2 id="zend.xmlrpc.server.caching">
-        <title>Кэширование определений сервера между запросами<!--Caching Server Definitions Between Requests--></title>
+        <title>Кэширование определений сервера между запросами</title>
         <para>
         <para>
             Прикрепление большого количества классов к экземпляру XML-RPC
             Прикрепление большого количества классов к экземпляру XML-RPC
             сервера может отнимать много ресурсов – каждый класс должен
             сервера может отнимать много ресурсов – каждый класс должен
             проверяться с использованием Reflection API (через
             проверяться с использованием Reflection API (через
-            Zend_Server_Reflection), который создает список всех возможных
+            <classname>Zend_Server_Reflection</classname>), который создает список всех возможных
             сигнатур методов для передачи классу сервера.
             сигнатур методов для передачи классу сервера.
-<!--
-            Attaching many classes to an XML-RPC server instance can utilize a
-            lot of resources; each class must introspect using the Reflection
-            API (via Zend_Server_Reflection), which in turn generates a list of
-            all possible method signatures to provide to the server class.
--->
         </para>
         </para>
         <para>
         <para>
-            Чтобы сократить потерю производительности, можно использовать
-            Zend_XmlRpc_Server_Cache для кэширования определений сервера между
-            запросами. Если комбинировать его с __autoload(), то это может дать
+            Чтобы снизить ущерб производительности, можно использовать
+            <classname>Zend_XmlRpc_Server_Cache</classname> для кэширования определений сервера между
+            запросами. Если комбинировать его с <code>__autoload()</code>, то это может дать
             значительный прирост производительности.
             значительный прирост производительности.
-<!--
-            To reduce this performance hit somewhat, Zend_XmlRpc_Server_Cache
-            can be used to cache the server definition between requests. When
-            combined with __autoload(), this can greatly increase performance.
--->
         </para>
         </para>
         <para>
         <para>
             Пример использования:
             Пример использования:
-<!--
-            An sample usage follows:
--->
         </para>
         </para>
-        <programlisting role="php"><![CDATA[<?php
-require_once 'Zend/Loader.php';
-require_once 'Zend/XmlRpc/Server.php';
-require_once 'Zend/XmlRpc/Server/Cache.php';
-
+        <programlisting role="php"><![CDATA[
 function __autoload($class)
 function __autoload($class)
 {
 {
     Zend_Loader::loadClass($class);
     Zend_Loader::loadClass($class);
@@ -447,58 +298,41 @@ if (!Zend_XmlRpc_Server_Cache::get($cacheFile, $server)) {
     require_once 'My/Services/Paste.php';
     require_once 'My/Services/Paste.php';
     require_once 'My/Services/Tape.php';
     require_once 'My/Services/Tape.php';
 
 
-    $server->setClass('My_Services_Glue', 'glue');
-    $server->setClass('My_Services_Paste', 'paste');
-    $server->setClass('My_Services_Tape', 'tape');
+    $server->setClass('My_Services_Glue', 'glue');   // пространство имен glue
+    $server->setClass('My_Services_Paste', 'paste'); // пространство имен paste
+    $server->setClass('My_Services_Tape', 'tape');   // пространство имен tape
 
 
     Zend_XmlRpc_Server_Cache::save($cacheFile, $server);
     Zend_XmlRpc_Server_Cache::save($cacheFile, $server);
 }
 }
 
 
-echo $server->handle();]]></programlisting>
+echo $server->handle();
+]]></programlisting>
         <para>
         <para>
             В этом примере производится попытка получить определение сервера из
             В этом примере производится попытка получить определение сервера из
             файла xmlrpc.cache, находящегося в той же директории, что и скрипт.
             файла xmlrpc.cache, находящегося в той же директории, что и скрипт.
             Если попытка не удалась, то загружаются нужные классы и
             Если попытка не удалась, то загружаются нужные классы и
             прикрепляются к экземпляру сервера, затем создается новый файл кэша
             прикрепляются к экземпляру сервера, затем создается новый файл кэша
             с определением сервера.
             с определением сервера.
-<!--
-            The above example attempts to retrieve a server definition from
-            xmlrpc.cache in the same directory as the script. If unsuccessful,
-            it loads the service classes it needs, attaches them to the server
-            instance, and then attempts to create a new cache file with the
-            server definition.
--->
         </para>
         </para>
     </sect2>
     </sect2>
 
 
     <sect2 id="zend.xmlrpc.server.use">
     <sect2 id="zend.xmlrpc.server.use">
-        <title>Примеры использования<!--Usage Examples--></title>
+        <title>Примеры использования</title>
         <para>
         <para>
-            Ниже приведено несколько примеров использования, показывающий полный
-            набор возможных вариантов, доступных разработчикам. Примеры
-            использования построены на основе предоставленных ранее примеров.
-<!--
-            Below are several usage examples, showing the full spectrum of
-            options available to developers. Usage examples will each build
-            on the previous example provided.
--->
+            Здесь приведены несколько примеров использования, демонстрирующих полный
+            набор возможностей, доступных разработчикам. Примеры
+            построены на основе предоставленных ранее примеров.
         </para>
         </para>
         <sect3 id="zend.xmlrpc.server.use.case1">
         <sect3 id="zend.xmlrpc.server.use.case1">
-            <title>Основы использования<!--Basic Usage--></title>
+            <title>Основы использования</title>
 
 
             <para>
             <para>
                 В примере ниже прикрепляется функция в качестве
                 В примере ниже прикрепляется функция в качестве
-                диспетчерируемого XML-RPC метода и обрабатываются входящие
-                вызовы.
-<!--
-                The example below attaches a function as a dispatchable XML-RPC
-                method and handles incoming calls.
--->
+                доступного для диспетчеризации XML-RPC метода и обрабатываются
+                входящие вызовы.
             </para>
             </para>
 
 
-            <programlisting role="php"><![CDATA[<?php
-require_once 'Zend/XmlRpc/Server.php';
-
+            <programlisting role="php"><![CDATA[
 /**
 /**
  * Возвращает сумму MD5 переданного значения
  * Возвращает сумму MD5 переданного значения
  *
  *
@@ -512,101 +346,84 @@ function md5Value($value)
 
 
 $server = new Zend_XmlRpc_Server();
 $server = new Zend_XmlRpc_Server();
 $server->addFunction('md5Value');
 $server->addFunction('md5Value');
-echo $server->handle();]]></programlisting>
+echo $server->handle();
+]]></programlisting>
         </sect3>
         </sect3>
 
 
         <sect3 id="zend.xmlrpc.server.use.case2">
         <sect3 id="zend.xmlrpc.server.use.case2">
-            <title>Прикрепление класса<!--Attaching a class--></title>
+            <title>Прикрепление класса</title>
 
 
             <para>
             <para>
                 Пример ниже иллюстрирует прикрепление открытых методов класса
                 Пример ниже иллюстрирует прикрепление открытых методов класса
-                как диспетчерируемых XML-RPC методов.
-<!--
-                The example below illustrates attaching a class' public methods
-                as dispatchable XML-RPC methods.
--->
+                в качестве доступных для диспетчеризации XML-RPC методов.
             </para>
             </para>
 
 
-            <programlisting role="php"><![CDATA[<?php
-require_once 'Zend/XmlRpc/Server.php';
+            <programlisting role="php"><![CDATA[
 require_once 'Services/Comb.php';
 require_once 'Services/Comb.php';
 
 
 $server = new Zend_XmlRpc_Server();
 $server = new Zend_XmlRpc_Server();
 $server->setClass('Services_Comb');
 $server->setClass('Services_Comb');
-echo $server->handle();]]></programlisting>
+echo $server->handle();
+]]></programlisting>
         </sect3>
         </sect3>
 
 
         <sect3 id="zend.xmlrpc.server.use.case3">
         <sect3 id="zend.xmlrpc.server.use.case3">
-            <title>Прикрепление нескольких классов с использованием пространств имен<!--Attaching several classes using namespaces--></title>
+            <title>Прикрепление нескольких классов с использованием пространств имен</title>
 
 
             <para>
             <para>
                 Пример ниже демонстрирует прикрепление нескольких классов,
                 Пример ниже демонстрирует прикрепление нескольких классов,
                 каждый со своим пространством имен.
                 каждый со своим пространством имен.
-<!--
-                The example below illustrates attaching several classes, each
-                with their own namespace.
--->
             </para>
             </para>
 
 
-            <programlisting role="php"><![CDATA[<?php
-require_once 'Zend/XmlRpc/Server.php';
+            <programlisting role="php"><![CDATA[
 require_once 'Services/Comb.php';
 require_once 'Services/Comb.php';
 require_once 'Services/Brush.php';
 require_once 'Services/Brush.php';
 require_once 'Services/Pick.php';
 require_once 'Services/Pick.php';
 
 
 $server = new Zend_XmlRpc_Server();
 $server = new Zend_XmlRpc_Server();
-$server->setClass('Services_Comb', 'comb');
-$server->setClass('Services_Brush', 'brush');
-$server->setClass('Services_Pick', 'pick');
-echo $server->handle();]]></programlisting>
+$server->setClass('Services_Comb', 'comb');   // методы, вызываемые как comb.*
+$server->setClass('Services_Brush', 'brush'); // методы, вызываемые как brush.*
+$server->setClass('Services_Pick', 'pick');   // методы, вызываемые как pick.*
+echo $server->handle();
+]]></programlisting>
         </sect3>
         </sect3>
 
 
         <sect3 id="zend.xmlrpc.server.use.case4">
         <sect3 id="zend.xmlrpc.server.use.case4">
-            <title>Указание исключений как используемых для ответов с сообщением об ошибке<!--Specifying exceptions to use as valid fault responses--></title>
+            <title>Указание исключений в качестве используемых для ответов с сообщением об ошибке</title>
 
 
             <para>
             <para>
-                Пример ниже позволяет любым наследующим от Services_Exception
+                Пример ниже позволяет любым наследующим от
+                <code>Services_Exception</code>
                 классам предоставлять свои коды и сообщения для подстановки в
                 классам предоставлять свои коды и сообщения для подстановки в
                 ответ с сообщением об ошибке.
                 ответ с сообщением об ошибке.
-<!--
-                The example below allows any Services_Exception-derived class to
-                report its code and message in the fault response.
--->
             </para>
             </para>
 
 
-            <programlisting role="php"><![CDATA[<?php
-require_once 'Zend/XmlRpc/Server.php';
-require_once 'Zend/XmlRpc/Server/Fault.php';
+            <programlisting role="php"><![CDATA[
 require_once 'Services/Exception.php';
 require_once 'Services/Exception.php';
 require_once 'Services/Comb.php';
 require_once 'Services/Comb.php';
 require_once 'Services/Brush.php';
 require_once 'Services/Brush.php';
 require_once 'Services/Pick.php';
 require_once 'Services/Pick.php';
 
 
-// Включение Services_Exceptions в список разрешенных исключений
+// Allow Services_Exceptions to report as fault responses
 Zend_XmlRpc_Server_Fault::attachFaultException('Services_Exception');
 Zend_XmlRpc_Server_Fault::attachFaultException('Services_Exception');
 
 
 $server = new Zend_XmlRpc_Server();
 $server = new Zend_XmlRpc_Server();
-$server->setClass('Services_Comb', 'comb');
-$server->setClass('Services_Brush', 'brush');
-$server->setClass('Services_Pick', 'pick');
-echo $server->handle();]]></programlisting>
+$server->setClass('Services_Comb', 'comb');   // методы, вызываемые как comb.*
+$server->setClass('Services_Brush', 'brush'); // методы, вызываемые как brush.*
+$server->setClass('Services_Pick', 'pick');   // методы, вызываемые как pick.*
+echo $server->handle();
+]]></programlisting>
         </sect3>
         </sect3>
 
 
         <sect3 id="zend.xmlrpc.server.use.case5">
         <sect3 id="zend.xmlrpc.server.use.case5">
-            <title>Использование специальных объектов запроса<!--Utilizing a custom request object--></title>
+            <title>Использование своих объектов запроса</title>
 
 
             <para>
             <para>
                 В примере ниже инстанцируется специальный объект запроса и
                 В примере ниже инстанцируется специальный объект запроса и
                 передается серверу для обработки.
                 передается серверу для обработки.
-<!--
-                The example below instantiates a custom request object and
-                passes it to the server to handle.
--->
             </para>
             </para>
 
 
-            <programlisting role="php"><![CDATA[<?php
-require_once 'Zend/XmlRpc/Server.php';
-require_once 'Zend/XmlRpc/Server/Fault.php';
+            <programlisting role="php"><![CDATA[
 require_once 'Services/Request.php';
 require_once 'Services/Request.php';
 require_once 'Services/Exception.php';
 require_once 'Services/Exception.php';
 require_once 'Services/Comb.php';
 require_once 'Services/Comb.php';
@@ -617,31 +434,26 @@ require_once 'Services/Pick.php';
 Zend_XmlRpc_Server_Fault::attachFaultException('Services_Exception');
 Zend_XmlRpc_Server_Fault::attachFaultException('Services_Exception');
 
 
 $server = new Zend_XmlRpc_Server();
 $server = new Zend_XmlRpc_Server();
-$server->setClass('Services_Comb', 'comb');
-$server->setClass('Services_Brush', 'brush');
-$server->setClass('Services_Pick', 'pick');
+$server->setClass('Services_Comb', 'comb');   // методы, вызываемые как comb.*
+$server->setClass('Services_Brush', 'brush'); // методы, вызываемые как brush.*
+$server->setClass('Services_Pick', 'pick');   // методы, вызываемые как pick.*
 
 
 // Создание объекта запроса
 // Создание объекта запроса
 $request = new Services_Request();
 $request = new Services_Request();
 
 
-echo $server->handle($request);]]></programlisting>
+echo $server->handle($request);
+]]></programlisting>
         </sect3>
         </sect3>
 
 
         <sect3 id="zend.xmlrpc.server.use.case6">
         <sect3 id="zend.xmlrpc.server.use.case6">
-            <title>Использование специальных объектов ответа<!--Utilizing a custom response object--></title>
+            <title>Использование своих объектов ответа</title>
 
 
             <para>
             <para>
                 Пример ниже демонстрирует указание специального класса ответа
                 Пример ниже демонстрирует указание специального класса ответа
                 для возвращаемого ответа.
                 для возвращаемого ответа.
-<!--
-                The example below illustrates specifying a custom response class
-                for the returned response.
--->
             </para>
             </para>
 
 
-            <programlisting role="php"><![CDATA[<?php
-require_once 'Zend/XmlRpc/Server.php';
-require_once 'Zend/XmlRpc/Server/Fault.php';
+            <programlisting role="php"><![CDATA[
 require_once 'Services/Request.php';
 require_once 'Services/Request.php';
 require_once 'Services/Response.php';
 require_once 'Services/Response.php';
 require_once 'Services/Exception.php';
 require_once 'Services/Exception.php';
@@ -653,42 +465,29 @@ require_once 'Services/Pick.php';
 Zend_XmlRpc_Server_Fault::attachFaultException('Services_Exception');
 Zend_XmlRpc_Server_Fault::attachFaultException('Services_Exception');
 
 
 $server = new Zend_XmlRpc_Server();
 $server = new Zend_XmlRpc_Server();
-$server->setClass('Services_Comb', 'comb');
-$server->setClass('Services_Brush', 'brush');
-$server->setClass('Services_Pick', 'pick');
+$server->setClass('Services_Comb', 'comb');   // методы, вызываемые как comb.*
+$server->setClass('Services_Brush', 'brush'); // методы, вызываемые как brush.*
+$server->setClass('Services_Pick', 'pick');   // методы, вызываемые как pick.*
 
 
 // Создание объекта запроса
 // Создание объекта запроса
 $request = new Services_Request();
 $request = new Services_Request();
 
 
-// Должен использоваться специальный класс ответа
+// Установка другого класса ответа
 $server->setResponseClass('Services_Response');
 $server->setResponseClass('Services_Response');
 
 
-echo $server->handle($request);]]></programlisting>
+echo $server->handle($request);
+]]></programlisting>
         </sect3>
         </sect3>
 
 
         <sect3 id="zend.xmlrpc.server.use.case7">
         <sect3 id="zend.xmlrpc.server.use.case7">
-            <title>Кэширование определений сервера между запросами<!--Cache server definitions between requests--></title>
+            <title>Кэширование определений сервера между запросами</title>
 
 
             <para>
             <para>
                 Пример ниже демонстрирует кэширование определений сервера между
                 Пример ниже демонстрирует кэширование определений сервера между
                 запросами.
                 запросами.
-<!--
-                The example below illustrates caching server definitions
-                between requests.
--->
             </para>
             </para>
 
 
-            <programlisting role="php"><![CDATA[<?php
-require_once 'Zend/XmlRpc/Server.php';
-require_once 'Zend/XmlRpc/Server/Fault.php';
-require_once 'Zend/XmlRpc/Server/Cache.php';
-require_once 'Services/Request.php';
-require_once 'Services/Response.php';
-require_once 'Services/Exception.php';
-require_once 'Services/Comb.php';
-require_once 'Services/Brush.php';
-require_once 'Services/Pick.php';
-
+            <programlisting role="php"><![CDATA[
 // Указание файла кэша
 // Указание файла кэша
 $cacheFile = dirname(__FILE__) . '/xmlrpc.cache';
 $cacheFile = dirname(__FILE__) . '/xmlrpc.cache';
 
 
@@ -699,21 +498,22 @@ $server = new Zend_XmlRpc_Server();
 
 
 // Попытка получить определение сервера из кэша
 // Попытка получить определение сервера из кэша
 if (!Zend_XmlRpc_Server_Cache::get($cacheFile, $server)) {
 if (!Zend_XmlRpc_Server_Cache::get($cacheFile, $server)) {
-    $server->setClass('Services_Comb', 'comb');
-    $server->setClass('Services_Brush', 'brush');
-    $server->setClass('Services_Pick', 'pick');
+    $server->setClass('Services_Comb', 'comb');   // методы, вызываемые как comb.*
+    $server->setClass('Services_Brush', 'brush'); // методы, вызываемые как brush.*
+    $server->setClass('Services_Pick', 'pick');   // методы, вызываемые как pick.*
 
 
     // Сохранение в кэш
     // Сохранение в кэш
-    Zend_XmlRpc_Server_Cache::save($cacheFile, $server));
+    Zend_XmlRpc_Server_Cache::save($cacheFile, $server);
 }
 }
 
 
 // Создание объекта запроса
 // Создание объекта запроса
 $request = new Services_Request();
 $request = new Services_Request();
 
 
-// Должен использоваться специальный класс ответа
+// Установка другого класса ответа
 $server->setResponseClass('Services_Response');
 $server->setResponseClass('Services_Response');
 
 
-echo $server->handle($request);]]></programlisting>
+echo $server->handle($request);
+]]></programlisting>
         </sect3>
         </sect3>
     </sect2>
     </sect2>
 </sect1>
 </sect1>