-
-
Notifications
You must be signed in to change notification settings - Fork 13
/
Copy pathurllib2.po
1031 lines (931 loc) · 50.4 KB
/
urllib2.po
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# SOME DESCRIPTIVE TITLE.
# Copyright (C) 2001-2025, Python Software Foundation
# This file is distributed under the same license as the Python package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
# Translators:
# Dmytro Kazanzhy, 2022
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Python 3.13\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-04-18 14:18+0000\n"
"PO-Revision-Date: 2021-06-28 00:53+0000\n"
"Last-Translator: Dmytro Kazanzhy, 2022\n"
"Language-Team: Ukrainian (https://app.transifex.com/python-doc/teams/5390/uk/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: uk\n"
"Plural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\n"
#: ../../howto/urllib2.rst:5
msgid "HOWTO Fetch Internet Resources Using The urllib Package"
msgstr "HOWTO Отримати Інтернет-ресурси за допомогою пакета urllib"
#: ../../howto/urllib2.rst:0
msgid "Author"
msgstr "Автор"
#: ../../howto/urllib2.rst:7
msgid "`Michael Foord <https://agileabstractions.com/>`_"
msgstr ""
#: ../../howto/urllib2.rst:11
msgid "Introduction"
msgstr "вступ"
#: ../../howto/urllib2.rst:15
msgid ""
"You may also find useful the following article on fetching web resources "
"with Python:"
msgstr ""
"Вам також може бути корисною наступна стаття про отримання веб-ресурсів за "
"допомогою Python:"
#: ../../howto/urllib2.rst:18
msgid ""
"`Basic Authentication "
"<https://web.archive.org/web/20201215133350/http://www.voidspace.org.uk/python/articles/authentication.shtml>`_"
msgstr ""
#: ../../howto/urllib2.rst:20
msgid "A tutorial on *Basic Authentication*, with examples in Python."
msgstr "Посібник із *базової автентифікації* з прикладами на Python."
#: ../../howto/urllib2.rst:22
msgid ""
"**urllib.request** is a Python module for fetching URLs (Uniform Resource "
"Locators). It offers a very simple interface, in the form of the *urlopen* "
"function. This is capable of fetching URLs using a variety of different "
"protocols. It also offers a slightly more complex interface for handling "
"common situations - like basic authentication, cookies, proxies and so on. "
"These are provided by objects called handlers and openers."
msgstr ""
"**urllib.request** — це модуль Python для отримання URL-адрес (уніфікованих "
"покажчиків ресурсів). Він пропонує дуже простий інтерфейс у формі функції "
"*urlopen*. Це здатне отримувати URL-адреси за допомогою різних протоколів. "
"Він також пропонує дещо складніший інтерфейс для обробки поширених ситуацій,"
" таких як базова автентифікація, файли cookie, проксі тощо. Вони "
"забезпечуються об’єктами, які називаються обробниками та відкривачами."
#: ../../howto/urllib2.rst:29
msgid ""
"urllib.request supports fetching URLs for many \"URL schemes\" (identified "
"by the string before the ``\":\"`` in URL - for example ``\"ftp\"`` is the "
"URL scheme of ``\"ftp://python.org/\"``) using their associated network "
"protocols (e.g. FTP, HTTP). This tutorial focuses on the most common case, "
"HTTP."
msgstr ""
"urllib.request підтримує отримання URL-адрес для багатьох \"схем URL-адрес\""
" (визначених рядком перед ``\":\"`` в URL-адресі - наприклад, ``\"ftp\"`` є "
"схемою URL-адреси ``\"ftp:// python.org/\"``), використовуючи відповідні "
"мережеві протоколи (наприклад, FTP, HTTP). Цей підручник присвячено "
"найпоширенішому випадку, HTTP."
#: ../../howto/urllib2.rst:34
msgid ""
"For straightforward situations *urlopen* is very easy to use. But as soon as"
" you encounter errors or non-trivial cases when opening HTTP URLs, you will "
"need some understanding of the HyperText Transfer Protocol. The most "
"comprehensive and authoritative reference to HTTP is :rfc:`2616`. This is a "
"technical document and not intended to be easy to read. This HOWTO aims to "
"illustrate using *urllib*, with enough detail about HTTP to help you "
"through. It is not intended to replace the :mod:`urllib.request` docs, but "
"is supplementary to them."
msgstr ""
"Для простих ситуацій *urlopen* дуже простий у використанні. Але як тільки ви"
" зіткнетеся з помилками або нетривіальними випадками під час відкриття URL-"
"адрес HTTP, вам знадобиться деяке розуміння протоколу передачі гіпертексту. "
"Найбільш повним і авторитетним посиланням на HTTP є :rfc:`2616`. Це "
"технічний документ, який не призначений для легкого читання. Цей HOWTO має "
"на меті проілюструвати використання *urllib* з достатньою кількістю деталей "
"про HTTP, щоб допомогти вам у цьому. Він не призначений для заміни "
"документів :mod:`urllib.request`, а є доповненням до них."
#: ../../howto/urllib2.rst:44
msgid "Fetching URLs"
msgstr "Отримання URL-адрес"
#: ../../howto/urllib2.rst:46
msgid "The simplest way to use urllib.request is as follows::"
msgstr "Найпростіший спосіб використання urllib.request такий:"
#: ../../howto/urllib2.rst:48
msgid ""
"import urllib.request\n"
"with urllib.request.urlopen('http://python.org/') as response:\n"
" html = response.read()"
msgstr ""
#: ../../howto/urllib2.rst:52
msgid ""
"If you wish to retrieve a resource via URL and store it in a temporary "
"location, you can do so via the :func:`shutil.copyfileobj` and "
":func:`tempfile.NamedTemporaryFile` functions::"
msgstr ""
"Якщо ви бажаєте отримати ресурс через URL-адресу та зберегти його у "
"тимчасовому місці, ви можете зробити це за допомогою функцій "
":func:`shutil.copyfileobj` і :func:`tempfile.NamedTemporaryFile`::"
#: ../../howto/urllib2.rst:56
msgid ""
"import shutil\n"
"import tempfile\n"
"import urllib.request\n"
"\n"
"with urllib.request.urlopen('http://python.org/') as response:\n"
" with tempfile.NamedTemporaryFile(delete=False) as tmp_file:\n"
" shutil.copyfileobj(response, tmp_file)\n"
"\n"
"with open(tmp_file.name) as html:\n"
" pass"
msgstr ""
#: ../../howto/urllib2.rst:67
msgid ""
"Many uses of urllib will be that simple (note that instead of an 'http:' URL"
" we could have used a URL starting with 'ftp:', 'file:', etc.). However, "
"it's the purpose of this tutorial to explain the more complicated cases, "
"concentrating on HTTP."
msgstr ""
"У багатьох випадках використання urllib буде таким простим (зауважте, що "
"замість URL-адреси \"http:\" ми могли б використовувати URL-адресу, яка "
"починається з \"ftp:\", \"file:\" тощо). Однак мета цього підручника — "
"пояснити складніші випадки, зосереджуючись на HTTP."
#: ../../howto/urllib2.rst:72
msgid ""
"HTTP is based on requests and responses - the client makes requests and "
"servers send responses. urllib.request mirrors this with a ``Request`` "
"object which represents the HTTP request you are making. In its simplest "
"form you create a Request object that specifies the URL you want to fetch. "
"Calling ``urlopen`` with this Request object returns a response object for "
"the URL requested. This response is a file-like object, which means you can "
"for example call ``.read()`` on the response::"
msgstr ""
"HTTP базується на запитах і відповідях - клієнт робить запити, а сервери "
"надсилають відповіді. urllib.request відображає це за допомогою об’єкта "
"``Request``, який представляє HTTP-запит, який ви робите. У найпростішій "
"формі ви створюєте об’єкт Request, який визначає URL-адресу, яку ви хочете "
"отримати. Виклик ``urlopen`` із цим об’єктом Request повертає об’єкт "
"відповіді для запитуваної URL-адреси. Ця відповідь є файлоподібним об’єктом,"
" що означає, що ви можете, наприклад, викликати ``.read()`` у відповіді::"
#: ../../howto/urllib2.rst:80
msgid ""
"import urllib.request\n"
"\n"
"req = urllib.request.Request('http://python.org/')\n"
"with urllib.request.urlopen(req) as response:\n"
" the_page = response.read()"
msgstr ""
#: ../../howto/urllib2.rst:86
msgid ""
"Note that urllib.request makes use of the same Request interface to handle "
"all URL schemes. For example, you can make an FTP request like so::"
msgstr ""
"Зауважте, що urllib.request використовує той самий інтерфейс Request для "
"обробки всіх схем URL-адрес. Наприклад, ви можете зробити FTP-запит так:"
#: ../../howto/urllib2.rst:89
msgid "req = urllib.request.Request('ftp://example.com/')"
msgstr ""
#: ../../howto/urllib2.rst:91
msgid ""
"In the case of HTTP, there are two extra things that Request objects allow "
"you to do: First, you can pass data to be sent to the server. Second, you "
"can pass extra information (\"metadata\") *about* the data or about the "
"request itself, to the server - this information is sent as HTTP "
"\"headers\". Let's look at each of these in turn."
msgstr ""
"У випадку HTTP об’єкти Request дозволяють робити дві додаткові речі: по-"
"перше, ви можете передавати дані для надсилання на сервер. По-друге, ви "
"можете передати на сервер додаткову інформацію (\"метадані\") *про* дані або"
" про сам запит — ця інформація надсилається як \"заголовки\" HTTP. Давайте "
"по черзі розглянемо кожен із них."
#: ../../howto/urllib2.rst:98
msgid "Data"
msgstr "Дані"
#: ../../howto/urllib2.rst:100
msgid ""
"Sometimes you want to send data to a URL (often the URL will refer to a CGI "
"(Common Gateway Interface) script or other web application). With HTTP, this"
" is often done using what's known as a **POST** request. This is often what "
"your browser does when you submit a HTML form that you filled in on the web."
" Not all POSTs have to come from forms: you can use a POST to transmit "
"arbitrary data to your own application. In the common case of HTML forms, "
"the data needs to be encoded in a standard way, and then passed to the "
"Request object as the ``data`` argument. The encoding is done using a "
"function from the :mod:`urllib.parse` library. ::"
msgstr ""
"Іноді потрібно надіслати дані за URL-адресою (часто URL-адреса "
"посилатиметься на сценарій CGI (Common Gateway Interface) або іншу веб-"
"програму). За допомогою HTTP це часто робиться за допомогою так званого "
"запиту **POST**. Це часто робить ваш браузер, коли ви надсилаєте форму HTML,"
" яку ви заповнили в Інтернеті. Не всі повідомлення POST мають надходити з "
"форм: ви можете використовувати POST для передачі довільних даних у власну "
"програму. У звичайному випадку форм HTML дані потрібно закодувати "
"стандартним способом, а потім передати в об’єкт Request як аргумент "
"``data``. Кодування виконується за допомогою функції з бібліотеки "
":mod:`urllib.parse`. ::"
#: ../../howto/urllib2.rst:110
msgid ""
"import urllib.parse\n"
"import urllib.request\n"
"\n"
"url = 'http://www.someserver.com/cgi-bin/register.cgi'\n"
"values = {'name' : 'Michael Foord',\n"
" 'location' : 'Northampton',\n"
" 'language' : 'Python' }\n"
"\n"
"data = urllib.parse.urlencode(values)\n"
"data = data.encode('ascii') # data should be bytes\n"
"req = urllib.request.Request(url, data)\n"
"with urllib.request.urlopen(req) as response:\n"
" the_page = response.read()"
msgstr ""
#: ../../howto/urllib2.rst:124
msgid ""
"Note that other encodings are sometimes required (e.g. for file upload from "
"HTML forms - see `HTML Specification, Form Submission "
"<https://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13>`_ for more "
"details)."
msgstr ""
"Зауважте, що іноді потрібні інші кодування (наприклад, для завантаження "
"файлів із форм HTML – див. `Специфікація HTML, Подання форми "
"<https://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13>`_ для "
"отримання додаткової інформації)."
#: ../../howto/urllib2.rst:129
msgid ""
"If you do not pass the ``data`` argument, urllib uses a **GET** request. One"
" way in which GET and POST requests differ is that POST requests often have "
"\"side-effects\": they change the state of the system in some way (for "
"example by placing an order with the website for a hundredweight of tinned "
"spam to be delivered to your door). Though the HTTP standard makes it clear"
" that POSTs are intended to *always* cause side-effects, and GET requests "
"*never* to cause side-effects, nothing prevents a GET request from having "
"side-effects, nor a POST requests from having no side-effects. Data can also"
" be passed in an HTTP GET request by encoding it in the URL itself."
msgstr ""
"Якщо ви не передаєте аргумент ``data``, urllib використовує запит **GET**. "
"Запити GET і POST відрізняються тим, що запити POST часто мають \"побічні "
"ефекти\": вони певним чином змінюють стан системи (наприклад, розміщуючи на "
"веб-сайті замовлення на доставку сотень консервованого спаму). до ваших "
"дверей). Хоча стандарт HTTP чітко визначає, що POST призначені *завжди* "
"спричиняти побічні ефекти, а запити GET *ніколи* не спричиняти побічних "
"ефектів, ніщо не заважає запитам GET мати побічні ефекти, а запитам POST — "
"не мати побічних ефектів. побічні ефекти. Дані також можна передати в запиті"
" HTTP GET, закодувавши їх у самій URL-адресі."
#: ../../howto/urllib2.rst:139
msgid "This is done as follows::"
msgstr "Це робиться наступним чином:"
#: ../../howto/urllib2.rst:141
msgid ""
">>> import urllib.request\n"
">>> import urllib.parse\n"
">>> data = {}\n"
">>> data['name'] = 'Somebody Here'\n"
">>> data['location'] = 'Northampton'\n"
">>> data['language'] = 'Python'\n"
">>> url_values = urllib.parse.urlencode(data)\n"
">>> print(url_values) # The order may differ from below.\n"
"name=Somebody+Here&language=Python&location=Northampton\n"
">>> url = 'http://www.example.com/example.cgi'\n"
">>> full_url = url + '?' + url_values\n"
">>> data = urllib.request.urlopen(full_url)"
msgstr ""
#: ../../howto/urllib2.rst:154
msgid ""
"Notice that the full URL is created by adding a ``?`` to the URL, followed "
"by the encoded values."
msgstr ""
"Зауважте, що повна URL-адреса створюється шляхом додавання ``?`` до URL-"
"адреси, а потім закодованих значень."
#: ../../howto/urllib2.rst:158
msgid "Headers"
msgstr "Заголовки"
#: ../../howto/urllib2.rst:160
msgid ""
"We'll discuss here one particular HTTP header, to illustrate how to add "
"headers to your HTTP request."
msgstr ""
"Ми обговоримо тут один конкретний HTTP-заголовок, щоб проілюструвати, як "
"додати заголовки до вашого HTTP-запиту."
#: ../../howto/urllib2.rst:163
msgid ""
"Some websites [#]_ dislike being browsed by programs, or send different "
"versions to different browsers [#]_. By default urllib identifies itself as "
"``Python-urllib/x.y`` (where ``x`` and ``y`` are the major and minor version"
" numbers of the Python release, e.g. ``Python-urllib/2.5``), which may "
"confuse the site, or just plain not work. The way a browser identifies "
"itself is through the ``User-Agent`` header [#]_. When you create a Request "
"object you can pass a dictionary of headers in. The following example makes "
"the same request as above, but identifies itself as a version of Internet "
"Explorer [#]_. ::"
msgstr ""
"Деяким веб-сайтам [#]_ не подобається, коли їх переглядають програми, або "
"вони надсилають різні версії в різні браузери [#]_. За замовчуванням urllib "
"ідентифікує себе як ``Python-urllib/x.y`` (де ``x`` і ``y`` — номер основної"
" та другорядної версій випуску Python, наприклад ``Python-urllib/2.5`` ), що"
" може заплутати сайт або просто не працювати. Браузер ідентифікує себе через"
" заголовок ``User-Agent`` [#]_. Коли ви створюєте об’єкт Request, ви можете "
"передати словник заголовків. Наступний приклад робить той самий запит, що й "
"вище, але ідентифікує себе як версію Internet Explorer [#]_. ::"
#: ../../howto/urllib2.rst:174
msgid ""
"import urllib.parse\n"
"import urllib.request\n"
"\n"
"url = 'http://www.someserver.com/cgi-bin/register.cgi'\n"
"user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)'\n"
"values = {'name': 'Michael Foord',\n"
" 'location': 'Northampton',\n"
" 'language': 'Python' }\n"
"headers = {'User-Agent': user_agent}\n"
"\n"
"data = urllib.parse.urlencode(values)\n"
"data = data.encode('ascii')\n"
"req = urllib.request.Request(url, data, headers)\n"
"with urllib.request.urlopen(req) as response:\n"
" the_page = response.read()"
msgstr ""
#: ../../howto/urllib2.rst:190
msgid ""
"The response also has two useful methods. See the section on `info and "
"geturl`_ which comes after we have a look at what happens when things go "
"wrong."
msgstr ""
"Відповідь також має два корисні методи. Перегляньте розділ про `info та "
"geturl`_, який йде після того, як ми подивимося, що відбувається, коли щось "
"йде не так."
#: ../../howto/urllib2.rst:195
msgid "Handling Exceptions"
msgstr "Обробка винятків"
#: ../../howto/urllib2.rst:197
msgid ""
"*urlopen* raises :exc:`~urllib.error.URLError` when it cannot handle a "
"response (though as usual with Python APIs, built-in exceptions such as "
":exc:`ValueError`, :exc:`TypeError` etc. may also be raised)."
msgstr ""
#: ../../howto/urllib2.rst:201
msgid ""
":exc:`~urllib.error.HTTPError` is the subclass of "
":exc:`~urllib.error.URLError` raised in the specific case of HTTP URLs."
msgstr ""
#: ../../howto/urllib2.rst:204
msgid ""
"The exception classes are exported from the :mod:`urllib.error` module."
msgstr "Класи винятків експортуються з модуля :mod:`urllib.error`."
#: ../../howto/urllib2.rst:207
msgid "URLError"
msgstr "URLError"
#: ../../howto/urllib2.rst:209
msgid ""
"Often, URLError is raised because there is no network connection (no route "
"to the specified server), or the specified server doesn't exist. In this "
"case, the exception raised will have a 'reason' attribute, which is a tuple "
"containing an error code and a text error message."
msgstr ""
"Часто URLError виникає через відсутність підключення до мережі (немає "
"маршруту до вказаного сервера) або вказаний сервер не існує. У цьому випадку"
" викликаний виняток матиме атрибут \"причина\", який є кортежем, що містить "
"код помилки та текстове повідомлення про помилку."
#: ../../howto/urllib2.rst:214
msgid "e.g. ::"
msgstr "напр. ::"
#: ../../howto/urllib2.rst:216
msgid ""
">>> req = urllib.request.Request('http://www.pretend_server.org')\n"
">>> try: urllib.request.urlopen(req)\n"
"... except urllib.error.URLError as e:\n"
"... print(e.reason)\n"
"...\n"
"(4, 'getaddrinfo failed')"
msgstr ""
#: ../../howto/urllib2.rst:225
msgid "HTTPError"
msgstr "HTTPError"
#: ../../howto/urllib2.rst:227
msgid ""
"Every HTTP response from the server contains a numeric \"status code\". "
"Sometimes the status code indicates that the server is unable to fulfil the "
"request. The default handlers will handle some of these responses for you "
"(for example, if the response is a \"redirection\" that requests the client "
"fetch the document from a different URL, urllib will handle that for you). "
"For those it can't handle, urlopen will raise an "
":exc:`~urllib.error.HTTPError`. Typical errors include '404' (page not "
"found), '403' (request forbidden), and '401' (authentication required)."
msgstr ""
#: ../../howto/urllib2.rst:235
msgid ""
"See section 10 of :rfc:`2616` for a reference on all the HTTP error codes."
msgstr ""
"Перегляньте розділ 10 :rfc:`2616` для довідки про всі коди помилок HTTP."
#: ../../howto/urllib2.rst:237
msgid ""
"The :exc:`~urllib.error.HTTPError` instance raised will have an integer "
"'code' attribute, which corresponds to the error sent by the server."
msgstr ""
#: ../../howto/urllib2.rst:241
msgid "Error Codes"
msgstr "Коди помилок"
#: ../../howto/urllib2.rst:243
msgid ""
"Because the default handlers handle redirects (codes in the 300 range), and "
"codes in the 100--299 range indicate success, you will usually only see "
"error codes in the 400--599 range."
msgstr ""
"Оскільки обробники за замовчуванням обробляють переспрямування (коди в "
"діапазоні 300), а коди в діапазоні 100--299 вказують на успіх, зазвичай ви "
"побачите коди помилок лише в діапазоні 400--599."
#: ../../howto/urllib2.rst:247
msgid ""
":attr:`http.server.BaseHTTPRequestHandler.responses` is a useful dictionary "
"of response codes in that shows all the response codes used by :rfc:`2616`. "
"The dictionary is reproduced here for convenience ::"
msgstr ""
":attr:`http.server.BaseHTTPRequestHandler.responses` — це корисний словник "
"кодів відповідей, який показує всі коди відповідей, які використовує "
":rfc:`2616`. Для зручності словник наведено тут ::"
#: ../../howto/urllib2.rst:251
msgid ""
"# Table mapping response codes to messages; entries have the\n"
"# form {code: (shortmessage, longmessage)}.\n"
"responses = {\n"
" 100: ('Continue', 'Request received, please continue'),\n"
" 101: ('Switching Protocols',\n"
" 'Switching to new protocol; obey Upgrade header'),\n"
"\n"
" 200: ('OK', 'Request fulfilled, document follows'),\n"
" 201: ('Created', 'Document created, URL follows'),\n"
" 202: ('Accepted',\n"
" 'Request accepted, processing continues off-line'),\n"
" 203: ('Non-Authoritative Information', 'Request fulfilled from cache'),\n"
" 204: ('No Content', 'Request fulfilled, nothing follows'),\n"
" 205: ('Reset Content', 'Clear input form for further input.'),\n"
" 206: ('Partial Content', 'Partial content follows.'),\n"
"\n"
" 300: ('Multiple Choices',\n"
" 'Object has several resources -- see URI list'),\n"
" 301: ('Moved Permanently', 'Object moved permanently -- see URI list'),\n"
" 302: ('Found', 'Object moved temporarily -- see URI list'),\n"
" 303: ('See Other', 'Object moved -- see Method and URL list'),\n"
" 304: ('Not Modified',\n"
" 'Document has not changed since given time'),\n"
" 305: ('Use Proxy',\n"
" 'You must use proxy specified in Location to access this '\n"
" 'resource.'),\n"
" 307: ('Temporary Redirect',\n"
" 'Object moved temporarily -- see URI list'),\n"
"\n"
" 400: ('Bad Request',\n"
" 'Bad request syntax or unsupported method'),\n"
" 401: ('Unauthorized',\n"
" 'No permission -- see authorization schemes'),\n"
" 402: ('Payment Required',\n"
" 'No payment -- see charging schemes'),\n"
" 403: ('Forbidden',\n"
" 'Request forbidden -- authorization will not help'),\n"
" 404: ('Not Found', 'Nothing matches the given URI'),\n"
" 405: ('Method Not Allowed',\n"
" 'Specified method is invalid for this server.'),\n"
" 406: ('Not Acceptable', 'URI not available in preferred format.'),\n"
" 407: ('Proxy Authentication Required', 'You must authenticate with '\n"
" 'this proxy before proceeding.'),\n"
" 408: ('Request Timeout', 'Request timed out; try again later.'),\n"
" 409: ('Conflict', 'Request conflict.'),\n"
" 410: ('Gone',\n"
" 'URI no longer exists and has been permanently removed.'),\n"
" 411: ('Length Required', 'Client must specify Content-Length.'),\n"
" 412: ('Precondition Failed', 'Precondition in headers is false.'),\n"
" 413: ('Request Entity Too Large', 'Entity is too large.'),\n"
" 414: ('Request-URI Too Long', 'URI is too long.'),\n"
" 415: ('Unsupported Media Type', 'Entity body in unsupported format.'),\n"
" 416: ('Requested Range Not Satisfiable',\n"
" 'Cannot satisfy request range.'),\n"
" 417: ('Expectation Failed',\n"
" 'Expect condition could not be satisfied.'),\n"
"\n"
" 500: ('Internal Server Error', 'Server got itself in trouble'),\n"
" 501: ('Not Implemented',\n"
" 'Server does not support this operation'),\n"
" 502: ('Bad Gateway', 'Invalid responses from another server/proxy.'),\n"
" 503: ('Service Unavailable',\n"
" 'The server cannot process the request due to a high load'),\n"
" 504: ('Gateway Timeout',\n"
" 'The gateway server did not receive a timely response'),\n"
" 505: ('HTTP Version Not Supported', 'Cannot fulfill request.'),\n"
" }"
msgstr ""
#: ../../howto/urllib2.rst:319
msgid ""
"When an error is raised the server responds by returning an HTTP error code "
"*and* an error page. You can use the :exc:`~urllib.error.HTTPError` instance"
" as a response on the page returned. This means that as well as the code "
"attribute, it also has read, geturl, and info, methods as returned by the "
"``urllib.response`` module::"
msgstr ""
#: ../../howto/urllib2.rst:324
msgid ""
">>> req = urllib.request.Request('http://www.python.org/fish.html')\n"
">>> try:\n"
"... urllib.request.urlopen(req)\n"
"... except urllib.error.HTTPError as e:\n"
"... print(e.code)\n"
"... print(e.read())\n"
"...\n"
"404\n"
"b'<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n"
" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\\n\\n\\n<html\n"
" ...\n"
" <title>Page Not Found</title>\\n\n"
" ..."
msgstr ""
#: ../../howto/urllib2.rst:339
msgid "Wrapping it Up"
msgstr "Загортання"
#: ../../howto/urllib2.rst:341
msgid ""
"So if you want to be prepared for :exc:`~urllib.error.HTTPError` *or* "
":exc:`~urllib.error.URLError` there are two basic approaches. I prefer the "
"second approach."
msgstr ""
#: ../../howto/urllib2.rst:345
msgid "Number 1"
msgstr "Номер 1"
#: ../../howto/urllib2.rst:350
msgid ""
"from urllib.request import Request, urlopen\n"
"from urllib.error import URLError, HTTPError\n"
"req = Request(someurl)\n"
"try:\n"
" response = urlopen(req)\n"
"except HTTPError as e:\n"
" print('The server couldn\\'t fulfill the request.')\n"
" print('Error code: ', e.code)\n"
"except URLError as e:\n"
" print('We failed to reach a server.')\n"
" print('Reason: ', e.reason)\n"
"else:\n"
" # everything is fine"
msgstr ""
#: ../../howto/urllib2.rst:367
msgid ""
"The ``except HTTPError`` *must* come first, otherwise ``except URLError`` "
"will *also* catch an :exc:`~urllib.error.HTTPError`."
msgstr ""
#: ../../howto/urllib2.rst:371
msgid "Number 2"
msgstr "Номер 2"
#: ../../howto/urllib2.rst:375
msgid ""
"from urllib.request import Request, urlopen\n"
"from urllib.error import URLError\n"
"req = Request(someurl)\n"
"try:\n"
" response = urlopen(req)\n"
"except URLError as e:\n"
" if hasattr(e, 'reason'):\n"
" print('We failed to reach a server.')\n"
" print('Reason: ', e.reason)\n"
" elif hasattr(e, 'code'):\n"
" print('The server couldn\\'t fulfill the request.')\n"
" print('Error code: ', e.code)\n"
"else:\n"
" # everything is fine"
msgstr ""
#: ../../howto/urllib2.rst:392
msgid "info and geturl"
msgstr "інформація та geturl"
#: ../../howto/urllib2.rst:394
msgid ""
"The response returned by urlopen (or the :exc:`~urllib.error.HTTPError` "
"instance) has two useful methods :meth:`!info` and :meth:`!geturl` and is "
"defined in the module :mod:`urllib.response`."
msgstr ""
#: ../../howto/urllib2.rst:398
msgid ""
"**geturl** - this returns the real URL of the page fetched. This is useful "
"because ``urlopen`` (or the opener object used) may have followed a "
"redirect. The URL of the page fetched may not be the same as the URL "
"requested."
msgstr ""
"**geturl** - повертає справжню URL-адресу отриманої сторінки. Це корисно, "
"оскільки ``urlopen`` (або використаний об’єкт відкриття) міг слідувати за "
"перенаправленням. URL-адреса отриманої сторінки може не збігатися з "
"запитуваною URL-адресою."
#: ../../howto/urllib2.rst:402
msgid ""
"**info** - this returns a dictionary-like object that describes the page "
"fetched, particularly the headers sent by the server. It is currently an "
":class:`http.client.HTTPMessage` instance."
msgstr ""
"**info** - це повертає об’єкт, схожий на словник, який описує отриману "
"сторінку, зокрема заголовки, надіслані сервером. Зараз це екземпляр "
":class:`http.client.HTTPMessage`."
#: ../../howto/urllib2.rst:406
msgid ""
"Typical headers include 'Content-length', 'Content-type', and so on. See the"
" `Quick Reference to HTTP Headers <https://jkorpela.fi/http.html>`_ for a "
"useful listing of HTTP headers with brief explanations of their meaning and "
"use."
msgstr ""
#: ../../howto/urllib2.rst:413
msgid "Openers and Handlers"
msgstr "Відкривачки та обробники"
#: ../../howto/urllib2.rst:415
msgid ""
"When you fetch a URL you use an opener (an instance of the perhaps "
"confusingly named :class:`urllib.request.OpenerDirector`). Normally we have "
"been using the default opener - via ``urlopen`` - but you can create custom "
"openers. Openers use handlers. All the \"heavy lifting\" is done by the "
"handlers. Each handler knows how to open URLs for a particular URL scheme "
"(http, ftp, etc.), or how to handle an aspect of URL opening, for example "
"HTTP redirections or HTTP cookies."
msgstr ""
#: ../../howto/urllib2.rst:423
msgid ""
"You will want to create openers if you want to fetch URLs with specific "
"handlers installed, for example to get an opener that handles cookies, or to"
" get an opener that does not handle redirections."
msgstr ""
"Ви захочете створити відкривачі, якщо хочете отримати URL-адреси з "
"установленими певними обробниками, наприклад, щоб отримати відкривач, який "
"обробляє файли cookie, або щоб отримати відкривач, який не обробляє "
"переспрямування."
#: ../../howto/urllib2.rst:427
msgid ""
"To create an opener, instantiate an ``OpenerDirector``, and then call "
"``.add_handler(some_handler_instance)`` repeatedly."
msgstr ""
"Щоб створити відкривач, створіть екземпляр ``OpenerDirector``, а потім "
"кілька разів викличте ``.add_handler(some_handler_instance)``."
#: ../../howto/urllib2.rst:430
msgid ""
"Alternatively, you can use ``build_opener``, which is a convenience function"
" for creating opener objects with a single function call. ``build_opener`` "
"adds several handlers by default, but provides a quick way to add more "
"and/or override the default handlers."
msgstr ""
"Крім того, ви можете використовувати ``build_opener``, яка є зручною "
"функцією для створення відкриваючих об’єктів за допомогою одного виклику "
"функції. ``build_opener`` додає кілька обробників за замовчуванням, але "
"забезпечує швидкий спосіб додати більше та/або замінити обробники за "
"замовчуванням."
#: ../../howto/urllib2.rst:435
msgid ""
"Other sorts of handlers you might want to can handle proxies, "
"authentication, and other common but slightly specialised situations."
msgstr ""
"Інші типи обробників, які вам можуть знадобитися, можуть обробляти проксі, "
"автентифікацію та інші типові, але трохи спеціалізовані ситуації."
#: ../../howto/urllib2.rst:438
msgid ""
"``install_opener`` can be used to make an ``opener`` object the (global) "
"default opener. This means that calls to ``urlopen`` will use the opener you"
" have installed."
msgstr ""
"``install_opener`` можна використовувати, щоб зробити об’єкт ``opener`` "
"(глобальним) відкривачем за замовчуванням. Це означає, що виклики "
"``urlopen`` використовуватимуть встановлений вами відкривач."
#: ../../howto/urllib2.rst:442
msgid ""
"Opener objects have an ``open`` method, which can be called directly to "
"fetch urls in the same way as the ``urlopen`` function: there's no need to "
"call ``install_opener``, except as a convenience."
msgstr ""
"Об’єкти Opener мають метод ``open``, який можна викликати безпосередньо для "
"отримання URL-адрес так само, як і функцію ``urlopen``: немає необхідності "
"викликати ``install_opener``, окрім як для зручності."
#: ../../howto/urllib2.rst:448
msgid "Basic Authentication"
msgstr "Базова автентифікація"
#: ../../howto/urllib2.rst:450
msgid ""
"To illustrate creating and installing a handler we will use the "
"``HTTPBasicAuthHandler``. For a more detailed discussion of this subject -- "
"including an explanation of how Basic Authentication works - see the `Basic "
"Authentication Tutorial "
"<https://web.archive.org/web/20201215133350/http://www.voidspace.org.uk/python/articles/authentication.shtml>`__."
msgstr ""
#: ../../howto/urllib2.rst:456
msgid ""
"When authentication is required, the server sends a header (as well as the "
"401 error code) requesting authentication. This specifies the "
"authentication scheme and a 'realm'. The header looks like: ``WWW-"
"Authenticate: SCHEME realm=\"REALM\"``."
msgstr ""
"Коли потрібна автентифікація, сервер надсилає заголовок (а також код помилки"
" 401) із запитом на автентифікацію. Це визначає схему автентифікації та "
"\"сферу\". Заголовок виглядає так: ``WWW-Authenticate: SCHEME "
"realm=\"REALM\"``."
#: ../../howto/urllib2.rst:461
msgid "e.g."
msgstr "напр."
#: ../../howto/urllib2.rst:463
msgid "WWW-Authenticate: Basic realm=\"cPanel Users\""
msgstr ""
#: ../../howto/urllib2.rst:468
msgid ""
"The client should then retry the request with the appropriate name and "
"password for the realm included as a header in the request. This is 'basic "
"authentication'. In order to simplify this process we can create an instance"
" of ``HTTPBasicAuthHandler`` and an opener to use this handler."
msgstr ""
"Потім клієнт повинен повторити запит із відповідним іменем і паролем для "
"області, включеними як заголовок запиту. Це \"базова автентифікація\". Щоб "
"спростити цей процес, ми можемо створити екземпляр ``HTTPBasicAuthHandler`` "
"і засіб відкриття для використання цього обробника."
#: ../../howto/urllib2.rst:473
msgid ""
"The ``HTTPBasicAuthHandler`` uses an object called a password manager to "
"handle the mapping of URLs and realms to passwords and usernames. If you "
"know what the realm is (from the authentication header sent by the server), "
"then you can use a ``HTTPPasswordMgr``. Frequently one doesn't care what the"
" realm is. In that case, it is convenient to use "
"``HTTPPasswordMgrWithDefaultRealm``. This allows you to specify a default "
"username and password for a URL. This will be supplied in the absence of you"
" providing an alternative combination for a specific realm. We indicate this"
" by providing ``None`` as the realm argument to the ``add_password`` method."
msgstr ""
"``HTTPBasicAuthHandler`` використовує об’єкт під назвою менеджер паролів для"
" обробки зіставлення URL-адрес і областей з паролями та іменами "
"користувачів. Якщо ви знаєте, що таке область (із заголовка автентифікації, "
"надісланого сервером), ви можете використовувати ``HTTPPasswordMgr``. Часто "
"байдуже, що таке царство. У такому випадку зручно використовувати "
"``HTTPPasswordMgrWithDefaultRealm``. Це дозволяє вказати ім’я користувача та"
" пароль за умовчанням для URL-адреси. Це буде надано, якщо ви не надасте "
"альтернативну комбінацію для певного царства. Ми вказуємо на це, надаючи "
"``None`` як аргумент області для методу ``add_password``."
#: ../../howto/urllib2.rst:483
msgid ""
"The top-level URL is the first URL that requires authentication. URLs "
"\"deeper\" than the URL you pass to .add_password() will also match. ::"
msgstr ""
"URL-адреса верхнього рівня – це перша URL-адреса, яка вимагає "
"автентифікації. URL-адреси, \"глибші\" за URL-адресу, яку ви передаєте в "
".add_password(), також відповідатимуть. ::"
#: ../../howto/urllib2.rst:486
msgid ""
"# create a password manager\n"
"password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()\n"
"\n"
"# Add the username and password.\n"
"# If we knew the realm, we could use it instead of None.\n"
"top_level_url = \"http://example.com/foo/\"\n"
"password_mgr.add_password(None, top_level_url, username, password)\n"
"\n"
"handler = urllib.request.HTTPBasicAuthHandler(password_mgr)\n"
"\n"
"# create \"opener\" (OpenerDirector instance)\n"
"opener = urllib.request.build_opener(handler)\n"
"\n"
"# use the opener to fetch a URL\n"
"opener.open(a_url)\n"
"\n"
"# Install the opener.\n"
"# Now all calls to urllib.request.urlopen use our opener.\n"
"urllib.request.install_opener(opener)"
msgstr ""
#: ../../howto/urllib2.rst:508
msgid ""
"In the above example we only supplied our ``HTTPBasicAuthHandler`` to "
"``build_opener``. By default openers have the handlers for normal situations"
" -- ``ProxyHandler`` (if a proxy setting such as an :envvar:`!http_proxy` "
"environment variable is set), ``UnknownHandler``, ``HTTPHandler``, "
"``HTTPDefaultErrorHandler``, ``HTTPRedirectHandler``, ``FTPHandler``, "
"``FileHandler``, ``DataHandler``, ``HTTPErrorProcessor``."
msgstr ""
#: ../../howto/urllib2.rst:515
msgid ""
"``top_level_url`` is in fact *either* a full URL (including the 'http:' "
"scheme component and the hostname and optionally the port number) e.g. "
"``\"http://example.com/\"`` *or* an \"authority\" (i.e. the hostname, "
"optionally including the port number) e.g. ``\"example.com\"`` or "
"``\"example.com:8080\"`` (the latter example includes a port number). The "
"authority, if present, must NOT contain the \"userinfo\" component - for "
"example ``\"joe:password@example.com\"`` is not correct."
msgstr ""
"``top_level_url`` насправді є *або* повною URL-адресою (включно з "
"компонентом схеми 'http:' та ім'ям хоста та, необов'язково, номером порту), "
"напр. ``\"http://example.com/\"`` *або* \"орган\" (тобто ім’я хоста, "
"необов’язково включаючи номер порту), наприклад. ``\"example.com\"`` або "
"``\"example.com:8080\"`` (останній приклад містить номер порту). "
"Повноваження, якщо вони присутні, НЕ повинні містити компонент \"userinfo\" "
"- наприклад, ``\"joe:password@example.com\"`` є неправильним."
#: ../../howto/urllib2.rst:525
msgid "Proxies"
msgstr "Проксі"
#: ../../howto/urllib2.rst:527
msgid ""
"**urllib** will auto-detect your proxy settings and use those. This is "
"through the ``ProxyHandler``, which is part of the normal handler chain when"
" a proxy setting is detected. Normally that's a good thing, but there are "
"occasions when it may not be helpful [#]_. One way to do this is to setup "
"our own ``ProxyHandler``, with no proxies defined. This is done using "
"similar steps to setting up a `Basic Authentication`_ handler: ::"
msgstr ""
"**urllib** автоматично визначить ваші налаштування проксі та використає їх. "
"Це відбувається через ``ProxyHandler``, який є частиною звичайного ланцюжка "
"обробників, коли виявляється налаштування проксі. Зазвичай це добре, але "
"бувають випадки, коли це може бути некорисним [#]_. Один із способів зробити"
" це — налаштувати наш власний ``ProxyHandler`` без визначених проксі. Це "
"робиться за допомогою подібних кроків до налаштування обробника `Basic "
"Authentication`_: ::"
#: ../../howto/urllib2.rst:534
msgid ""
">>> proxy_support = urllib.request.ProxyHandler({})\n"
">>> opener = urllib.request.build_opener(proxy_support)\n"
">>> urllib.request.install_opener(opener)"
msgstr ""
#: ../../howto/urllib2.rst:540
msgid ""
"Currently ``urllib.request`` *does not* support fetching of ``https`` "
"locations through a proxy. However, this can be enabled by extending "
"urllib.request as shown in the recipe [#]_."
msgstr ""
"Наразі ``urllib.request`` *не* підтримує отримання адрес ``https`` через "
"проксі. Однак це можна ввімкнути, розширивши urllib.request, як показано в "
"рецепті [#]_."
#: ../../howto/urllib2.rst:546
msgid ""
"``HTTP_PROXY`` will be ignored if a variable ``REQUEST_METHOD`` is set; see "
"the documentation on :func:`~urllib.request.getproxies`."
msgstr ""
"``HTTP_PROXY`` ігноруватиметься, якщо встановлено змінну ``REQUEST_METHOD``;"
" перегляньте документацію на :func:`~urllib.request.getproxies`."
#: ../../howto/urllib2.rst:551
msgid "Sockets and Layers"
msgstr "Розетки та шари"
#: ../../howto/urllib2.rst:553
msgid ""
"The Python support for fetching resources from the web is layered. urllib "
"uses the :mod:`http.client` library, which in turn uses the socket library."
msgstr ""
"Підтримка Python для отримання ресурсів з Інтернету є багаторівневою. urllib"
" використовує бібліотеку :mod:`http.client`, яка, у свою чергу, використовує"
" бібліотеку сокетів."
#: ../../howto/urllib2.rst:556
msgid ""
"As of Python 2.3 you can specify how long a socket should wait for a "
"response before timing out. This can be useful in applications which have to"
" fetch web pages. By default the socket module has *no timeout* and can "
"hang. Currently, the socket timeout is not exposed at the http.client or "
"urllib.request levels. However, you can set the default timeout globally for"
" all sockets using ::"
msgstr ""
"Починаючи з Python 2.3, ви можете вказати, як довго сокет повинен чекати "
"відповіді перед закінченням часу очікування. Це може бути корисним у "
"програмах, які мають отримати веб-сторінки. За замовчуванням модуль сокета "
"*не має часу очікування* і може зависати. Наразі час очікування сокета не "
"розкривається на рівнях http.client або urllib.request. Однак ви можете "
"глобально встановити тайм-аут за замовчуванням для всіх сокетів за допомогою"
" ::"
#: ../../howto/urllib2.rst:562
msgid ""
"import socket\n"
"import urllib.request\n"
"\n"
"# timeout in seconds\n"
"timeout = 10\n"
"socket.setdefaulttimeout(timeout)\n"
"\n"
"# this call to urllib.request.urlopen now uses the default timeout\n"
"# we have set in the socket module\n"
"req = urllib.request.Request('http://www.voidspace.org.uk')\n"
"response = urllib.request.urlopen(req)"
msgstr ""
#: ../../howto/urllib2.rst:579
msgid "Footnotes"
msgstr "Виноски"
#: ../../howto/urllib2.rst:581
msgid "This document was reviewed and revised by John Lee."
msgstr "Цей документ переглянув і відредагував Джон Лі."
#: ../../howto/urllib2.rst:583
msgid "Google for example."
msgstr "Google наприклад."
#: ../../howto/urllib2.rst:584
msgid ""
"Browser sniffing is a very bad practice for website design - building sites "
"using web standards is much more sensible. Unfortunately a lot of sites "
"still send different versions to different browsers."
msgstr ""
"Перегляд веб-переглядача є дуже поганою практикою для дизайну веб-сайтів - "
"створювати сайти за допомогою веб-стандартів набагато розумніше. На жаль, "
"багато сайтів досі надсилають різні версії в різні браузери."
#: ../../howto/urllib2.rst:587
msgid ""
"The user agent for MSIE 6 is *'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT"
" 5.1; SV1; .NET CLR 1.1.4322)'*"