[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