[Zope3-checkins] SVN: Zope3/trunk/src/zope/interface/human.ru.txt Updated (mostly done) russian translation for the human.txt

Dmitry Vasiliev dima at hlabs.spb.ru
Fri Apr 14 15:59:23 EDT 2006


Log message for revision 66947:
  Updated (mostly done) russian translation for the human.txt
  

Changed:
  U   Zope3/trunk/src/zope/interface/human.ru.txt

-=-
Modified: Zope3/trunk/src/zope/interface/human.ru.txt
===================================================================
--- Zope3/trunk/src/zope/interface/human.ru.txt	2006-04-14 14:25:26 UTC (rev 66946)
+++ Zope3/trunk/src/zope/interface/human.ru.txt	2006-04-14 19:59:22 UTC (rev 66947)
@@ -2,17 +2,17 @@
 Использование реестра адаптеров
 ===============================
 
-Данный документ содержит небольшую демонстрацию пакета ``zope.interface`` и
-его реестра адаптеров. Документ рассчитывался как конкретный, но более узкий
-пример того как использовать интерфейсы и адаптеры вне Zope 3.
+Данный документ содержит небольшую демонстрацию пакета ``zope.interface`` и его
+реестра адаптеров. Документ рассчитывался как конкретный, но более узкий пример
+того как использовать интерфейсы и адаптеры вне Zope 3.
 
 Сначала нам необходимо импортировать пакет для работы с интерфейсами.
 
   >>> import zope.interface
 
-Теперь мы разработаем интерфейс для нашего объекта - простого файла. Наш
-файл будет содержать всего один атрибут - body, в котором фактически будет
-сохранено содержимое файла.
+Теперь мы разработаем интерфейс для нашего объекта - простого файла. Наш файл
+будет содержать всего один атрибут - body, в котором фактически будет сохранено
+содержимое файла.
 
   >>> class IFile(zope.interface.Interface):
   ...
@@ -21,8 +21,8 @@
 
 Для статистики нам часто необходимо знать размер файла. Но было бы несколько
 топорно релизовывать определение размера прямо для объекта файла, т.к. размер
-больше относится к мета-данным. Таким образом мы создаем еще один интерфейс
-для представления размера какого-либо объекта.
+больше относится к мета-данным. Таким образом мы создаем еще один интерфейс для
+представления размера какого-либо объекта.
 
   >>> class ISize(zope.interface.Interface):
   ...
@@ -42,10 +42,11 @@
 
 Дальше мы создаем адаптер, который будет предоставлять интерфейс `ISize`
 получая любой объект предоставляющий интерфейс `IFile`. По соглашению мы
-используем атрибут `__used_for__` для указания интерфейса который мы ожидаем
-предоставляет адаптируемый объект, `IFile` в нашем случае. На самом деле этот
-атрибут используется только для документирования. В случае если адаптер
-используется для нескольких интерфейсов можно указать их все в виде кортежа.
+используем атрибут `__used_for__` для указания интерфейса который как мы
+ожидаем предоставляет адаптируемый объект, `IFile` в нашем случае. На самом
+деле этот атрибут используется только для документирования. В случае если
+адаптер используется для нескольких интерфейсов можно указать их все в виде
+кортежа.
 
 Опять же по соглашению конструктор адаптера получает один аргумент - context
 (контекст). В нашем случае контекст - это экземпляр `IFile` (объект,
@@ -66,9 +67,9 @@
   ...          return len(self.context.body)
   ...
 
-Теперь когда мы написали наш адаптер мы должны зарегистрировать его в
-реестре адаптеров, что бы его можно было запросить когда он понадобится.
-Здесь нет какого-либо глобального реестра адаптеров, таким образом мы должны
+Теперь когда мы написали наш адаптер мы должны зарегистрировать его в реестре
+адаптеров, что бы его можно было запросить когда он понадобится. Здесь нет
+какого-либо глобального реестра адаптеров, таким образом мы должны
 самостоятельно создать для нашего примера реестр.
 
   >>> from zope.interface.adapter import AdapterRegistry
@@ -84,7 +85,7 @@
 этой ситуации конструктор адаптера будет требовать новый аргумент для каждого
 оригинального интерфейса.
 
-Второй аргумент метода `register()` это интерфейс который предоставляет
+Второй аргумент метода `register()` - это интерфейс который предоставляет
 адаптер, в нашем случае `ISize`. Третий аргумент - имя адаптера. Сейчас нам не
 важно имя адаптера и мы передаем его как пустую строку. Обычно имена полезны
 если используются адаптеры для одинакового набора интерфейсов, но в различных
@@ -97,33 +98,31 @@
   >>> registry.lookup1(IFile, ISize, '')
   <class '__main__.FileSize'>
 
-Попробуем более практичный пример. Создадим экземпляр `File` и создадим
-адаптер использующий запрос реестра.
+Попробуем более практичный пример. Создадим экземпляр `File` и создадим адаптер
+использующий запрос реестра. Затем мы увидим возвращает ли адаптер корректный
+размер при вызове `getSize()`.
 
-Let's get a little bit more practical. Let's create a `File` instance and
-create the adapter using a registry lookup. Then we see whether the adapter
-returns the correct size by calling `getSize()`.
-
   >>> file = File()
   >>> size = registry.lookup1(IFile, ISize, '')(file)
   >>> size.getSize()
   7
 
-However, this is not very practical, since I have to manually pass in the
-arguments to the lookup method. There is some syntactic candy that will allow
-us to get an adapter instance by simply calling `ISize(file)`. To make use of
-this functionality, we need to add our registry to the adapter_hooks list,
-which is a member of the adapters module. This list stores a collection of
-callables that are automatically invoked when IFoo(obj) is called; their
-purpose is to locate adapters that implement an interface for a certain
-context instance.
+На самом деле это не очень практично, т.к. нам нужно самим передавать все
+аргументы методу запроса. Существует некоторый "синтаксический лединец" который
+позволяет нам получить экземпляр адаптера просто вызвав `ISize(file)`. Что бы
+использовать эту функциональность нам понадобится добавить наш реестр к списку
+adapter_hooks, который находится в модуле с адаптерами. Этот список хранит
+коллекцию вызываемых объектов которые вызываются автоматически когда вызывается
+IFoo(obj); их предназначение - найти адаптеры которые реализуют интерфейс
+для определенного экземпляра контекста.
 
-You are required to implement your own adapter hook; this example covers one
-of the simplest hooks that use the registry, but you could implement one that
-used an adapter cache or persistent adapters, for instance. The helper hook is
-required to expect as first argument the desired output interface (for us
-`ISize`) and as the second argument the context of the adapter (here
-`file`). The function returns an adapter, i.e. a `FileSize` instance.
+Необходимо реализовать свою собственную функцию для поиска адаптера; данный
+пример описывает одну из простейших функций для использования с реестром, но
+также можно реализовать поисковые функции которые, например, используют
+кэширование, или адаптеры сохраняемые в базе. Функция поиска должна принимать
+желаемый на выходе интерфейс (в нашем случае `ISize`) как первый аргумент и
+контекст для адаптации (`file`) как второй. Функция должна вернуть адаптер,
+т.е. экзмепляр `FileSize`.
 
   >>> def hook(provided, object):
   ...     adapter = registry.lookup1(zope.interface.providedBy(object),
@@ -131,25 +130,25 @@
   ...     return adapter(object)
   ...
 
-We now just add the hook to an `adapter_hooks` list.
+Теперь мы просто добавляем нашу функцию к списку `adapter_hooks`.
 
   >>> from zope.interface.interface import adapter_hooks
   >>> adapter_hooks.append(hook)
 
-Once the hook is registered, you can use the desired syntax.
+Как только функция зарегистрирована мы можем использовать желаемый синтаксис.
 
   >>> size = ISize(file)
   >>> size.getSize()
   7
 
-Now we have to cleanup after ourselves, so that others after us have a clean
-`adapter_hooks` list.
+После нам нужно прибраться за собой, что бы другие получили чистый список
+`adaper_hooks` после нас.
 
   >>> adapter_hooks.remove(hook)
 
-That's it. I have intentionally left out a discussion of named adapters and
-multi-adapters, since this text is intended as a practical and simple
-introduction to Zope 3 interfaces and adapters. You might want to read the
-`adapter.txt` in the `zope.interface` package for a more formal, referencial
-and complete treatment of the package. Warning: People have reported that
-`adapter.txt` makes their brain feel soft!
+Это все. Здесь намеренно отложена дискуссия об именованных и мульти-адаптерах,
+т.к. данный текст рассчитан как практическое и простое введение в интерфейсы и
+адаптеры Zope 3. Для более подробной информации имеет смысл прочитать
+`adapter.txt` из пакета `zope.interface`, что бы получить более формальное,
+справочное и полное трактование пакета. Внимание: многие жаловались, что
+`adapter.txt` приводит их мозг к расплавленному состоянию!



More information about the Zope3-Checkins mailing list