8000 Merge branch 'python:3.10' into 3.10 · python/python-docs-zh-tw@0df5b4f · GitHub
[go: up one dir, main page]

Skip to content

Commit 0df5b4f

Browse files
authored
Merge branch 'python:3.10' into 3.10
2 parents 5063f2c + 852bd76 commit 0df5b4f

File tree

1 file changed

+100
-19
lines changed

1 file changed

+100
-19
lines changed

library/asyncio-dev.po

Lines changed: 100 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,120 +1,142 @@
1-
# SOME DESCRIPTIVE TITLE.
21
# Copyright (C) 2001-2022, Python Software Foundation
32
# This file is distributed under the same license as the Python package.
43
#
54
# Translators:
5+
# Adrian Liaw <adrianliaw2000@gmail.com>, 2018
6+
# Matt Wang <mattwang44gmail.com>, 2022
67
msgid ""
78
msgstr ""
89
"Project-Id-Version: Python 3.10\n"
910
"Report-Msgid-Bugs-To: \n"
1011
"POT-Creation-Date: 2021-09-13 00:11+0000\n"
11-
"PO-Revision-Date: 2018-05-23 14:38+0000\n"
12-
"Last-Translator: Adrian Liaw <adrianliaw2000@gmail.com>\n"
12+
"PO-Revision-Date: 2022-06-11 15:29+0800\n"
13+
"Last-Translator: Matt Wang <mattwang44gmail.com>\n"
1314
"Language-Team: Chinese - TAIWAN (https://github.com/python/python-docs-zh-"
1415
"tw)\n"
1516
"Language: zh_TW\n"
1617
"MIME-Version: 1.0\n"
1718
"Content-Type: text/plain; charset=UTF-8\n"
1819
"Content-Transfer-Encoding: 8bit\n"
1920
"Plural-Forms: nplurals=1; plural=0;\n"
21+
"X-Generator: Poedit 3.1\n"
2022

2123
#: ../../library/asyncio-dev.rst:7
2224
msgid "Developing with asyncio"
23-
msgstr ""
25+
msgstr "使用 asyncio 開發"
2426

2527
#: ../../library/asyncio-dev.rst:9
2628
msgid ""
2729
"Asynchronous programming is different from classic \"sequential\" "
2830
"programming."
2931
msgstr ""
32+
"非同步程式設計 (asynchronous programming) 與傳統的\"順序\"程式設計 "
33+
"(sequential programming) 不同。"
3034

3135
#: ../../library/asyncio-dev.rst:12
3236
msgid ""
3337
"This page lists common mistakes and traps and explains how to avoid them."
34-
msgstr ""
38+
msgstr "本頁列出常見的錯誤和陷阱,並解釋如何避免它們。"
3539

3640
#: ../../library/asyncio-dev.rst:19
3741
msgid "Debug Mode"
38-
msgstr ""
42+
msgstr "除錯模式"
3943

4044
#: ../../library/asyncio-dev.rst:21
4145
msgid ""
4246
"By default asyncio runs in production mode. In order to ease the "
4347
"development asyncio has a *debug mode*."
4448
msgstr ""
49+
"在預設情況下 asyncio 以正式生產模式 (production mode) 執行。為了讓開發更輕"
50+
"鬆,asyncio 還有一種\\ *除錯模式 (debug mode)*\\ 。"
4551

4652
#: ../../library/asyncio-dev.rst:24
4753
msgid "There are several ways to enable asyncio debug mode:"
48-
msgstr ""
54+
msgstr "有幾種方法可以啟用 asyncio 除錯模式:"
4955

5056
#: ../../library/asyncio-dev.rst:26
5157
msgid "Setting the :envvar:`PYTHONASYNCIODEBUG` environment variable to ``1``."
52-
msgstr ""
58+
msgstr "將 :envvar:`PYTHONASYNCIODEBUG` 環境變數設定為 ``1``。"
5359

5460
#: ../../library/asyncio-dev.rst:28
5561
msgid "Using the :ref:`Python Development Mode <devmode>`."
56-
msgstr ""
62+
msgstr "使用 :ref:`Python 開發模式 (Development Mode) <devmode>`。"
5763

5864
#: ../../library/asyncio-dev.rst:30
5965
msgid "Passing ``debug=True`` to :func:`asyncio.run`."
60-
msgstr ""
66+
msgstr "將 ``debug=True`` 傳遞給 :func:`asyncio.run`。"
6167

6268
#: ../../library/asyncio-dev.rst:32
6369
msgid "Calling :meth:`loop.set_debug`."
64-
msgstr ""
70+
msgstr "呼叫 :meth:`loop.set_debug`。"
6571

6672
#: ../../library/asyncio-dev.rst:34
6773
msgid "In addition to enabling the debug mode, consider also:"
68-
msgstr ""
74+
msgstr "除了啟用除錯模式外,還要考慮:"
6975

7076
#: ../../library/asyncio-dev.rst:36
7177
msgid ""
7278
"setting the log level of the :ref:`asyncio logger <asyncio-logger>` to :py:"
7379
"data:`logging.DEBUG`, for example the following snippet of code can be run "
7480
"at startup of the application::"
7581
msgstr ""
82+
"將 :ref:`asyncio logger(日誌記錄器) <asyncio-logger>`\\ 的日誌級别設置為 :"
83+
"py:data:`logging.DEBUG`,例如下面的程式片段可以在應用程式啟動時運行:\n"
84+
"\n"
85+
"::"
7686

7787
#: ../../library/asyncio-dev.rst:42
7888
msgid ""
7989
"configuring the :mod:`warnings` module to display :exc:`ResourceWarning` "
8090
"warnings. One way of doing that is by using the :option:`-W` ``default`` "
8191
"command line option."
8292
msgstr ""
93+
"配置 :mod:`warnings` 模組以顯示 :exc:`ResourceWarning` 警告。一種方法是使用 :"
94+
"option:`-W` ``default`` 命令列選項。"
8395

8496
#: ../../library/asyncio-dev.rst:47
8597
msgid "When the debug mode is enabled:"
86-
msgstr ""
98+
msgstr "啟用除錯模式時:"
8799

88100
#: ../../library/asyncio-dev.rst:49
89101
msgid ""
90102
"asyncio checks for :ref:`coroutines that were not awaited <asyncio-coroutine-"
91103
"not-scheduled>` and logs them; this mitigates the \"forgotten await\" "
92104
"pitfall."
93105
msgstr ""
106+
"asyncio 會檢查\\ :ref:`未被等待的協程 <asyncio-coroutine-not-scheduled>`\\ 並"
107+
"記錄他們;這會減輕\"被遺忘的等待 (forgotten await)\" 問題。"
94108

95109
#: ../../library/asyncio-dev.rst:53
96110
msgid ""
97111
"Many non-threadsafe asyncio APIs (such as :meth:`loop.call_soon` and :meth:"
98112
"`loop.call_at` methods) raise an exception if they are called from a wrong "
99113
"thread."
100114
msgstr ""
115+
"許多非執行緒安全 (non-threadsafe) 的 asyncio APIs(例如 :meth:`loop."
116+
"call_soon` 和 :meth:`loop.call_at` 方法),如果從錯誤的執行緒呼叫就會引發例"
117+
"外。"
101118

102119
#: ../../library/asyncio-dev.rst:57
103120
msgid ""
104121
"The execution time of the I/O selector is logged if it takes too long to "
105122
"perform an I/O operation."
106123
msgstr ""
124+
"如果執行一個 I/O 操作花費的時間太長,則將 I/O 選擇器 (selector) 的執行時間記"
125+
"錄到日誌中。"
107126

108127
#: ../../library/asyncio-dev.rst:60
109128
msgid ""
110129
"Callbacks taking longer than 100ms are logged. The :attr:`loop."
111130
"slow_callback_duration` attribute can be used to set the minimum execution "
112131
"duration in seconds that is considered \"slow\"."
113132
msgstr ""
133+
"執行時間超過 100 毫秒的回呼 (callback) 將會被記錄於日誌。屬性 :attr:`loop."
134+
"slow_callback_duration` 可用於設定以秒為單位的最小執行持續時間,超過這個值執"
135+
"行時間就會被視為\"緩慢\"。"
114136

115137
#: ../../library/asyncio-dev.rst:68
116138
msgid "Concurrency and Multithreading"
117-
msgstr ""
139+
msgstr "並行性和多執行緒 (Concurrency and Multithreading)"
118140

119141
#: ../../library/asyncio-dev.rst:70
120142
msgid ""
@@ -124,12 +146,20 @@ msgid ""
124146
"``await`` expression, the running Task gets suspended, and the event loop "
125147
"executes the next Task."
126148
msgstr ""
149+
"事件迴圈在執行緒中運行(通常是主執行緒),並在其執行緒中執行所有回呼和 "
150+
"Tasks(任務)。當一個 Task 在事件迴圈中運行時,沒有其他 Task 可以在同一個執行"
151+
"緒中運行。當一個 Task 執行一個 ``await`` 運算式時,正在執行的 Task 會被暫停,"
152+
"而事件迴圈會執行下一個 Task。"
127153

128154
#: ../../library/asyncio-dev.rst:76
129155
msgid ""
130156
"To schedule a :term:`callback` from another OS thread, the :meth:`loop."
131157
"call_soon_threadsafe` method should be used. Example::"
132158
msgstr ""
159+
"要從不同的 OS 執行緒為一個 :term:`callback` 排程,應該使用 :meth:`loop."
160+
"call_soon_threadsafe` 方法。例如:\n"
161+
"\n"
162+
"::"
133163

134164
#: ../../library/asyncio-dev.rst:81
135165
msgid ""
@@ -138,19 +168,29 @@ msgid ""
138168
"a callback. If there's a need for such code to call a low-level asyncio "
139169
"API, the :meth:`loop.call_soon_threadsafe` method should be used, e.g.::"
140170
msgstr ""
171+
"幾乎所有 asyncio 物件都不支援執行緒安全 (thread safe),這通常不是問題,除非"
172+
"在 Task 或回呼函式之外有程式需要和它們一起運作。如果需要這樣的程式來呼叫低階 "
173+
"asyncio API,應該使用 :meth:`loop.call_soon_threadsafe` 方法,例如:\n"
174+
"\n"
175+
"::"
141176

142177
#: ../../library/asyncio-dev.rst:89
143178
msgid ""
144179
"To schedule a coroutine object from a different OS thread, the :func:"
145180
"`run_coroutine_threadsafe` function should be used. It returns a :class:"
146181
"`concurrent.futures.Future` to access the result::"
147182
msgstr ""
183+
"要從不同的 OS 執行緒為一個協程物件排程,應該使用 :func:"
184+
"`run_coroutine_threadsafe` 函式。它會回傳一個 :class:`concurrent.futures."
185+
"Future` 以存取結果:\n"
186+
"\n"
187+
"::"
148188

149189
#: ../../library/asyncio-dev.rst:102
150190
msgid ""
151191
"To handle signals and to execute subprocesses, the event loop must be run in "
152192
"the main thread."
153-
msgstr ""
193+
msgstr "為了能夠處理訊號和執行子行程,事件迴圈必須於主執行緒中運行。"
154194

155195
#: ../../library/asyncio-dev.rst:105
156196
msgid ""
@@ -159,6 +199,9 @@ msgid ""
159199
"different OS thread without blocking the OS thread that the event loop runs "
160200
"in."
161201
msgstr ""
202+
":meth:`loop.run_in_executor` 方法可以和 :class:`concurrent.futures."
203+
"ThreadPoolExecutor` 一起使用,這能夠在作業系統上另一個不同的執行緒中執行阻塞"
204+
"程式,且避免阻塞執行事件迴圈的執行緒。"
162205

163206
#: ../../library/asyncio-dev.rst:110
164207
msgid ""
@@ -172,51 +215,73 @@ msgid ""
172215
"a :class:`concurrent.futures.ProcessPoolExecutor` to execute code in a "
173216
"different process."
174217
msgstr ""
218+
"目前沒有什麼辦法能直接從另一個行程(例如透過 :mod:`multiprocessing` 啟動的程"
219+
"序)來為協程或回呼排程。\\ :ref:`事件迴圈方法 <asyncio-event-loop>`\\ 小節列"
220+
"出了可以從 pipes(管道)讀取並監視 file descriptor(檔案描述器)而不會阻塞事"
221+
"件迴圈的 API。此外,asyncio 的\\ :ref:`子行程 <asyncio-subprocess>` API 提供"
222+
"了一種啟動行程並從事件迴圈與其通訊的辦法。最後,之前提到的 :meth:`loop."
223+
"run_in_executor` 方法也可和 :class:`concurrent.futures.ProcessPoolExecutor` "
224+
"搭配使用,以在另一個行程中執行程式。"
175225

176226
#: ../../library/asyncio-dev.rst:124
177227
msgid "Running Blocking Code"
178-
msgstr ""
228+
msgstr "執行阻塞的程式"
179229

180230
#: ../../library/asyncio-dev.rst:126
181231
msgid ""
182232
"Blocking (CPU-bound) code should not be called directly. For example, if a "
183233
"function performs a CPU-intensive calculation for 1 second, all concurrent "
184234
"asyncio Tasks and IO operations would be delayed by 1 second."
185235
msgstr ""
236+
"不應該直接呼叫阻塞(CPU 密集型)程式。例如一個執行 1 秒 CPU 密集型計算的函"
237+
"式,那麼所有並行非同步 Tasks 和 IO 操作都會被延遲 1 秒。"
186238

187239
#: ../../library/asyncio-dev.rst:131
188240
msgid ""
189241
"An executor can be used to run a task in a different thread or even in a "
190242
"different process to avoid blocking the OS thread with the event loop. See "
191243
"the :meth:`loop.run_in_executor` method for more details."
192244
msgstr ""
245+
"一個 executor(執行器)可以被用來在不同的執行緒、或甚至不同的行程中執行任務,"
246+
"以避免使用事件迴圈阻塞 OS 執行緒。詳情請見 :meth:`loop.run_in_executor` 方"
247+
"法。"
193248

194249
#:< 1CF5 /span> ../../library/asyncio-dev.rst:140
195250
msgid "Logging"
196-
msgstr ""
251+
msgstr "日誌記錄"
197252

198253
#: ../../library/asyncio-dev.rst:142
199254
msgid ""
200255
"asyncio uses the :mod:`logging` module and all logging is performed via the "
201256
"``\"asyncio\"`` logger."
202257
msgstr ""
258+
"asyncio 使用 :mod:`logging` 模組,所有日誌記錄都是透過 ``\"asyncio\"`` "
259+
"logger 執行的。"
203260

204261
#: ../../library/asyncio-dev.rst:145
205262
msgid ""
206263
"The default log level is :py:data:`logging.INFO`, which can be easily "
207264
"adjusted::"
208265
msgstr ""
266+
"日誌級別被預設為 :py:data:`logging.INFO`,它可以很容易地被調整:\n"
267+
"\n"
268+
"::"
209269

210270
#: ../../library/asyncio-dev.rst:154
211271
msgid "Detect never-awaited coroutines"
212-
msgstr ""
272+
msgstr "偵測從未被等待的 (never-awaited) 協程"
213273

214274
#: ../../library/asyncio-dev.rst:156
215275
msgid ""
216276
"When a coroutine function is called, but not awaited (e.g. ``coro()`` "
217277
"instead of ``await coro()``) or the coroutine is not scheduled with :meth:"
218278
"`asyncio.create_task`, asyncio will emit a :exc:`RuntimeWarning`::"
219279
msgstr ""
280+
"當協程函式被呼叫而不是被等待時(即執行 ``coro()`` 而不是 ``await coro()``)或"
281+
"者協程沒有透過 :meth:`asyncio.create_task` 被排程,asyncio 將會發出 :exc:"
282+
"`RuntimeWarning`:\n"
283+
"\n"
284+
"::"
220285

221286
#: ../../library/asyncio-dev.rst:171 ../../library/asyncio-dev.rst:216
222287
msgid "Output::"
@@ -228,16 +293,22 @@ msgstr ""
228293
#: ../../library/asyncio-dev.rst:176 ../../library/asyncio-dev.rst:232
229294
msgid "Output in debug mode::"
230295
msgstr ""
296+
"除錯模式中的輸出:\n"
297+
"\n"
298+
"::"
231299

232300
#: ../../library/asyncio-dev.rst:189
233301
msgid ""
234302
"The usual fix is to either await the coroutine or call the :meth:`asyncio."
235303
"create_task` function::"
236304
msgstr ""
305+
"常用的修復方法是去等待協程或者呼叫 :meth:`asyncio.create_task` 函式:\n"
306+
"\n"
307+
"::"
237308

238309
#: ../../library/asyncio-dev.rst:197
239310
msgid "Detect never-retrieved exceptions"
240-
msgstr ""
311+
msgstr "偵測從未被獲取的 (never-retrieved) 例外"
241312

242313
#: ../../library/asyncio-dev.rst:199
243314
msgid ""
@@ -246,13 +317,23 @@ msgid ""
246317
"this case, asyncio would emit a log message when the Future object is "
247318
"garbage collected."
248319
msgstr ""
320+
"如果呼叫 :meth:`Future.set_exception`,但 Future 物件從未被等待,例外將無法被"
321+
"傳播 (propagate) 到使用者程式。在這種情況下,當 Future 物件被垃圾回收 "
322+
"(garbage collected) 時,asyncio 將發出一則日誌訊息。"
249323

250324
#: ../../library/asyncio-dev.rst:204
251325
msgid "Example of an unhandled exception::"
252326
msgstr ""
327+
"未處理例外的例子:\n"
328+
"\n"
329+
"::"
253330

254331
#: ../../library/asyncio-dev.rst:227
255332
msgid ""
256333
":ref:`Enable the debug mode <asyncio-debug-mode>` to get the traceback where "
257334
"the task was created::"
258335
msgstr ""
336+
":ref:`啟用除錯模式 <asyncio-debug-mode>`\\ 以取得任務建立處的追蹤資訊 "
337+
"(traceback):\n"
338+
"\n"
339+
"::"

0 commit comments

Comments
 (0)
0