diff --git a/library/xmlrpc.server.po b/library/xmlrpc.server.po index 7ea3d87f10..dd98b45ae4 100644 --- a/library/xmlrpc.server.po +++ b/library/xmlrpc.server.po @@ -32,6 +32,9 @@ msgid "" "class:`SimpleXMLRPCServer`, or embedded in a CGI environment, using :class:" "`CGIXMLRPCRequestHandler`." msgstr "" +":mod:`xmlrpc.server` 模組為以 Python 撰寫的 XML-RPC 伺服器提供了基本的伺服器" +"框架。伺服器可以是獨立執行的(使用 :class:`SimpleXMLRPCServer`),或嵌入在 " +"CGI 環境中(使用 :class:`CGIXMLRPCRequestHandler`)。" #: ../../library/xmlrpc.server.rst:22 msgid "" @@ -39,6 +42,8 @@ msgid "" "constructed data. If you need to parse untrusted or unauthenticated data, " "see :ref:`xml-security`." msgstr "" +":mod:`xmlrpc.server` 模組對於惡意建構的資料並不安全。如果你需要剖析不受信任或" +"未經驗證的資料,請參閱 :ref:`xml-security`。" #: ../../includes/wasm-notavail.rst:3 msgid "Availability" @@ -71,11 +76,22 @@ msgid "" "function and controls which types are processed when date/times values or " "binary data are received; it defaults to false." msgstr "" +"建立一個新的伺服器實例。此類別提供了可被 XML-RPC 協定呼叫之函式的註冊方法。" +"*requestHandler* 參數應該是請求處理器實例的工廠(factory);它預設為 :class:" +"`SimpleXMLRPCRequestHandler`。*addr* 和 *requestHandler* 參數會傳遞給 :class:" +"`socketserver.TCPServer` 建構函式。如果 *logRequests* 為 true(預設值),請求會" +"被記錄;將此參數設定為 false 將關閉記錄。*allow_none* 和 *encoding* 參數會傳" +"遞給 :mod:`xmlrpc.client` 並控制從伺服器回傳的 XML-RPC 回應。*bind_and_" +"activate* 參數控制建構函式是否立即呼叫 :meth:`server_bind` 和 :meth:`server_" +"activate`;它預設為 true。將其設定為 false 允許程式碼在位址被綁定之前操作 " +"*allow_reuse_address* 類別變數。*use_builtin_types* 參數會傳遞給 :func:" +"`~xmlrpc.client.loads` 函式,並控制在接收到日期/時間值或二進位資料時要處理哪" +"些型別;它預設為 false。" #: ../../library/xmlrpc.server.rst:48 ../../library/xmlrpc.server.rst:62 #: ../../library/xmlrpc.server.rst:374 msgid "The *use_builtin_types* flag was added." -msgstr "" +msgstr "新增 *use_builtin_types* 旗標。" #: ../../library/xmlrpc.server.rst:55 msgid "" @@ -86,6 +102,10 @@ msgid "" "function and controls which types are processed when date/times values or " "binary data are received; it defaults to false." msgstr "" +"建立一個新的實例以在 CGI 環境中處理 XML-RPC 請求。*allow_none* 和 *encoding* " +"參數會傳遞給 :mod:`xmlrpc.client` 並控制從伺服器回傳的 XML-RPC 回應。*use_" +"builtin_types* 參數會傳遞給 :func:`~xmlrpc.client.loads` 函式,並控制在接收到" +"日期/時間值或二進位資料時要處理哪些型別;它預設為 false。" #: ../../library/xmlrpc.server.rst:68 msgid "" @@ -93,6 +113,8 @@ msgid "" "``POST`` requests and modifies logging so that the *logRequests* parameter " "to the :class:`SimpleXMLRPCServer` constructor parameter is honored." msgstr "" +"建立一個新的請求處理器實例。此請求處理器支援 ``POST`` 請求,並修改日誌記錄功能以" +"遵守 :class:`SimpleXMLRPCServer` 建構函式的 *logRequests* 參數。" #: ../../library/xmlrpc.server.rst:76 msgid "SimpleXMLRPCServer Objects" @@ -104,6 +126,8 @@ msgid "" "TCPServer` and provides a means of creating simple, stand alone XML-RPC " "servers." msgstr "" +":class:`SimpleXMLRPCServer` 類別是基於 :class:`socketserver.TCPServer` 的,並提供" +"了建立簡單、獨立 XML-RPC 伺服器的方式。" #: ../../library/xmlrpc.server.rst:85 ../../library/xmlrpc.server.rst:299 msgid "" @@ -112,6 +136,9 @@ msgid "" "attr:`function.__name__` will be used. *name* is a string, and may contain " "characters not legal in Python identifiers, including the period character." msgstr "" +"註冊一個可以回應 XML-RPC 請求的函式。如果有給定 *name*,它將成為與 " +"*function* 關聯的方法名稱,否則將使用 :attr:`function.__name__`。*name* 是一" +"個字串,可以包含在 Python 識別符中不合法的字元,包括句點字元。" #: ../../library/xmlrpc.server.rst:90 ../../library/xmlrpc.server.rst:304 msgid "" @@ -119,6 +146,9 @@ msgid "" "*name* can only be given as a keyword argument to register *function* under " "*name*. If no *name* is given, :attr:`function.__name__` will be used." msgstr "" +"此方法也可以用作裝飾器。當用作裝飾器時,*name* 只能作為關鍵字引數給定,以在 " +"*name* 下註冊 *function*。如果沒有給定 *name*,將使用 :attr:`function." +"__name__`。" #: ../../library/xmlrpc.server.rst:94 ../../library/xmlrpc.server.rst:308 msgid ":meth:`register_function` can be used as a decorator." @@ -137,6 +167,13 @@ msgid "" "*instance* does not have a :meth:`_dispatch` method, it is searched for an " "attribute matching the name of the requested method." msgstr "" +"註冊一個物件,用於公開尚未使用 :meth:`register_function` 註冊的方法名稱。如" +"果 *instance* 包含 :meth:`_dispatch` 方法,它會被呼叫並傳入請求的方法名稱和來" +"自請求的參數。其 API 為 ``def _dispatch(self, method, params)``\\ (注意 " +"*params* 不代表可變引數列表)。如果它呼叫底層函式來執行其任務,該函式會以 " +"``func(*params)`` 的方式被呼叫,展開參數列表。來自 :meth:`_dispatch` 的回傳值" +"會作為結果回傳給用戶端。如果 *instance* 沒有 :meth:`_dispatch` 方法,則會搜尋" +"與請求方法名稱匹配的屬性。" #: ../../library/xmlrpc.server.rst:111 msgid "" @@ -148,6 +185,10 @@ msgid "" "parameters from the request, and the return value is passed back to the " "client." msgstr "" +"如果可選的 *allow_dotted_names* 引數為 true 且實例沒有 :meth:`_dispatch` 方" +"法,那麼如果請求的方法名稱包含句點,方法名稱的每個組成部分會被單獨搜尋,從而" +"執行簡單的階層式搜尋。從此搜尋中找到的值會以來自請求的參數被呼叫,並將回傳值" +"傳回給用戶端。" #: ../../library/xmlrpc.server.rst:120 msgid "" @@ -155,16 +196,20 @@ msgid "" "module's global variables and may allow intruders to execute arbitrary code " "on your machine. Only use this option on a secure, closed network." msgstr "" +"啟用 *allow_dotted_names* 選項允許入侵者存取你模組的全域變數,並可能允許入侵" +"者在你的機器上執行任意程式碼。請在安全、封閉的網路上才使用此選項。" #: ../../library/xmlrpc.server.rst:127 msgid "" "Registers the XML-RPC introspection functions ``system.listMethods``, " "``system.methodHelp`` and ``system.methodSignature``." msgstr "" +"註冊 XML-RPC 自我檢查函式 (introspection functions) ``system.listMethods``、" +"``system.methodHelp`` 和 ``system.methodSignature``。" #: ../../library/xmlrpc.server.rst:133 msgid "Registers the XML-RPC multicall function system.multicall." -msgstr "" +msgstr "註冊 XML-RPC 多重呼叫函式 (multicall function) system.multicall。" #: ../../library/xmlrpc.server.rst:138 msgid "" @@ -173,6 +218,9 @@ msgid "" "result in a 404 \"no such page\" HTTP error. If this tuple is empty, all " "paths will be considered valid. The default value is ``('/', '/RPC2')``." msgstr "" +"一個屬性值,必須是一個元組,列出接收 XML-RPC 請求的 URL 的有效路徑部分。發布" +"到其他路徑的請求將導致 404 \"no such page\" HTTP 錯誤。如果此元組為空,所有路" +"徑都將被視為有效。預設值為 ``('/', '/RPC2')``。" #: ../../library/xmlrpc.server.rst:147 msgid "SimpleXMLRPCServer Example" @@ -180,7 +228,7 @@ msgstr "SimpleXMLRPCServer 範例" #: ../../library/xmlrpc.server.rst:148 msgid "Server code::" -msgstr "" +msgstr "伺服器程式碼: ::" #: ../../library/xmlrpc.server.rst:150 msgid "" @@ -216,12 +264,41 @@ msgid "" " # Run the server's main loop\n" " server.serve_forever()" msgstr "" +"from xmlrpc.server import SimpleXMLRPCServer\n" +"from xmlrpc.server import SimpleXMLRPCRequestHandler\n" +"\n" +"# 限制為特定路徑。\n" +"class RequestHandler(SimpleXMLRPCRequestHandler):\n" +" rpc_paths = ('/RPC2',)\n" +"\n" +"# 建立伺服器\n" +"with SimpleXMLRPCServer(('localhost', 8000),\n" +" requestHandler=RequestHandler) as server:\n" +" server.register_introspection_functions()\n" +"\n" +" # 註冊 pow() 函式;這將使用 pow.__name__ 的值作為名稱,即 'pow'。\n" +" server.register_function(pow)\n" +"\n" +" # 以不同的名稱註冊函式\n" +" def adder_function(x, y):\n" +" return x + y\n" +" server.register_function(adder_function, 'add')\n" +"\n" +" # 註冊一個實例;該實例的所有方法都會被發布為 XML-RPC 方法(在此例中僅 'mul')。\n" +" class MyFuncs:\n" +" def mul(self, x, y):\n" +" return x * y\n" +"\n" +" server.register_instance(MyFuncs())\n" +"\n" +" # 執行伺服器的主迴圈\n" +" server.serve_forever()" #: ../../library/xmlrpc.server.rst:182 msgid "" "The following client code will call the methods made available by the " "preceding server::" -msgstr "" +msgstr "以下用戶端程式碼將呼叫前述伺服器提供的方法: ::" #: ../../library/xmlrpc.server.rst:185 msgid "" @@ -235,12 +312,23 @@ msgid "" "# Print list of available methods\n" "print(s.system.listMethods())" msgstr "" +"import xmlrpc.client\n" +"\n" +"s = xmlrpc.client.ServerProxy('http://localhost:8000')\n" +"print(s.pow(2,3)) # 回傳 2**3 = 8\n" +"print(s.add(2,3)) # 回傳 5\n" +"print(s.mul(5,2)) # 回傳 5*2 = 10\n" +"\n" +"# 印出可用方法列表\n" +"print(s.system.listMethods())" #: ../../library/xmlrpc.server.rst:195 msgid "" ":meth:`register_function` can also be used as a decorator. The previous " "server example can register functions in a decorator way::" msgstr "" +":meth:`register_function` 也可以用作裝飾器。前述的伺服器範例可以用裝飾器方式註" +"冊函式: ::" #: ../../library/xmlrpc.server.rst:198 msgid "" @@ -272,12 +360,39 @@ msgid "" "\n" " server.serve_forever()" msgstr "" +"from xmlrpc.server import SimpleXMLRPCServer\n" +"from xmlrpc.server import SimpleXMLRPCRequestHandler\n" +"\n" +"class RequestHandler(SimpleXMLRPCRequestHandler):\n" +" rpc_paths = ('/RPC2',)\n" +"\n" +"with SimpleXMLRPCServer(('localhost', 8000),\n" +" requestHandler=RequestHandler) as server:\n" +" server.register_introspection_functions()\n" +"\n" +" # 註冊 pow() 函式;這將使用 pow.__name__ 的值作為名稱,即 'pow'。\n" +" server.register_function(pow)\n" +"\n" +" # 使用 register_function 作為裝飾器以不同的名稱註冊函式。\n" +" # *name* 只能作為關鍵字引數給定。\n" +" @server.register_function(name='add')\n" +" def adder_function(x, y):\n" +" return x + y\n" +"\n" +" # 以 function.__name__ 註冊函式。\n" +" @server.register_function\n" +" def mul(x, y):\n" +" return x * y\n" +"\n" +" server.serve_forever()" #: ../../library/xmlrpc.server.rst:226 msgid "" "The following example included in the :file:`Lib/xmlrpc/server.py` module " "shows a server allowing dotted names and registering a multicall function." msgstr "" +"以下包含在 :file:`Lib/xmlrpc/server.py` 模組中的範例展示了一個允許點分隔名稱並" +"註冊多重呼叫函式的伺服器。" #: ../../library/xmlrpc.server.rst:231 msgid "" @@ -285,6 +400,8 @@ msgid "" "module's global variables and may allow intruders to execute arbitrary code " "on your machine. Only use this example only within a secure, closed network." msgstr "" +"啟用 *allow_dotted_names* 選項來允許入侵者存取你模組的全域變數,並可能允許入侵" +"者在你的機器上執行任意程式碼。請在安全、封閉的網路中才使用此範例。" #: ../../library/xmlrpc.server.rst:237 msgid "" @@ -311,10 +428,32 @@ msgid "" " print(\"\\nKeyboard interrupt received, exiting.\")\n" " sys.exit(0)" msgstr "" +"import datetime\n" +"\n" +"class ExampleService:\n" +" def getData(self):\n" +" return '42'\n" +"\n" +" class currentTime:\n" +" @staticmethod\n" +" def getCurrentTime():\n" +" return datetime.datetime.now()\n" +"\n" +"with SimpleXMLRPCServer((\"localhost\", 8000)) as server:\n" +" server.register_function(pow)\n" +" server.register_function(lambda x,y: x+y, 'add')\n" +" server.register_instance(ExampleService(), allow_dotted_names=True)\n" +" server.register_multicall_functions()\n" +" print('Serving XML-RPC on localhost port 8000')\n" +" try:\n" +" server.serve_forever()\n" +" except KeyboardInterrupt:\n" +" print(\"\\nKeyboard interrupt received, exiting.\")\n" +" sys.exit(0)" #: ../../library/xmlrpc.server.rst:260 msgid "This ExampleService demo can be invoked from the command line::" -msgstr "" +msgstr "此 ExampleService 示範可以從命令列觸發: ::" #: ../../library/xmlrpc.server.rst:262 msgid "python -m xmlrpc.server" @@ -324,7 +463,7 @@ msgstr "python -m xmlrpc.server" msgid "" "The client that interacts with the above server is included in ``Lib/xmlrpc/" "client.py``::" -msgstr "" +msgstr "與上述伺服器互動的用戶端被包含在 ``Lib/xmlrpc/client.py`` 中: ::" #: ../../library/xmlrpc.server.rst:268 msgid "" @@ -345,11 +484,27 @@ msgid "" "except Error as v:\n" " print(\"ERROR\", v)" msgstr "" +"server = ServerProxy(\"http://localhost:8000\")\n" +"\n" +"try:\n" +" print(server.currentTime.getCurrentTime())\n" +"except Error as v:\n" +" print(\"ERROR\", v)\n" +"\n" +"multi = MultiCall(server)\n" +"multi.getData()\n" +"multi.pow(2,9)\n" +"multi.add(1,2)\n" +"try:\n" +" for response in multi():\n" +" print(response)\n" +"except Error as v:\n" +" print(\"ERROR\", v)" #: ../../library/xmlrpc.server.rst:285 msgid "" "This client which interacts with the demo XMLRPC server can be invoked as::" -msgstr "" +msgstr "與示範 XMLRPC 伺服器互動的此用戶端可以如下呼叫: ::" #: ../../library/xmlrpc.server.rst:287 msgid "python -m xmlrpc.client" @@ -364,6 +519,8 @@ msgid "" "The :class:`CGIXMLRPCRequestHandler` class can be used to handle XML-RPC " "requests sent to Python CGI scripts." msgstr "" +":class:`CGIXMLRPCRequestHandler` 類別可用於處理發送到 Python CGI 指令稿的 XML-" +"RPC 請求。" #: ../../library/xmlrpc.server.rst:314 msgid "" @@ -379,16 +536,24 @@ msgid "" "the parameters from the request, and the return value is passed back to " "the client." msgstr "" +"註冊一個物件,用於公開尚未使用 :meth:`register_function` 註冊的方法名稱。如" +"果實例包含 :meth:`_dispatch` 方法,它會以請求的方法名稱和來自請求的參數來被" +"呼叫;回傳值會作為結果回傳給用戶端。如果實例沒有 :meth:`_dispatch` 方法,則" +"會搜尋與請求方法名稱匹配的屬性;如果請求的方法名稱包含句點,方法名稱的每個組" +"成部分會被單獨搜尋,從而執行簡單的階層式搜尋。從此搜尋中找到的值會以來自請求" +"的參數被呼叫,並將回傳值傳回給用戶端。" #: ../../library/xmlrpc.server.rst:328 msgid "" "Register the XML-RPC introspection functions ``system.listMethods``, " "``system.methodHelp`` and ``system.methodSignature``." msgstr "" +"註冊 XML-RPC 自我檢查函式 ``system.listMethods``、``system.methodHelp`` 和 " +"``system.methodSignature``。" #: ../../library/xmlrpc.server.rst:334 msgid "Register the XML-RPC multicall function ``system.multicall``." -msgstr "" +msgstr "註冊 XML-RPC 多重呼叫函式 ``system.multicall``。" #: ../../library/xmlrpc.server.rst:339 msgid "" @@ -396,6 +561,8 @@ msgid "" "data provided by the HTTP server, otherwise the contents of stdin will be " "used." msgstr "" +"處理 XML-RPC 請求。如果給定 *request_text*,它應該是 HTTP 伺服器提供的 POST " +"資料,否則將使用 stdin 的內容。" #: ../../library/xmlrpc.server.rst:342 msgid "Example::" @@ -429,7 +596,7 @@ msgstr "" #: ../../library/xmlrpc.server.rst:358 msgid "Documenting XMLRPC server" -msgstr "" +msgstr "記錄 XMLRPC 伺服器" #: ../../library/xmlrpc.server.rst:360 msgid "" @@ -438,6 +605,9 @@ msgid "" "class:`DocXMLRPCServer`, or embedded in a CGI environment, using :class:" "`DocCGIXMLRPCRequestHandler`." msgstr "" +"這些類別擴充了上述類別,來為 HTTP GET 請求於回應中提供 HTML 文件。伺服器可以是獨立" +"執行的(使用 :class:`DocXMLRPCServer`),或嵌入在 CGI 環境中(使用 :class:" +"`DocCGIXMLRPCRequestHandler`)。" #: ../../library/xmlrpc.server.rst:370 msgid "" @@ -445,10 +615,12 @@ msgid "" "class:`SimpleXMLRPCServer`; *requestHandler* defaults to :class:" "`DocXMLRPCRequestHandler`." msgstr "" +"建立一個新的伺服器實例。所有參數的意義與 :class:`SimpleXMLRPCServer` 相同;" +"*requestHandler* 預設為 :class:`DocXMLRPCRequestHandler`。" #: ../../library/xmlrpc.server.rst:380 msgid "Create a new instance to handle XML-RPC requests in a CGI environment." -msgstr "" +msgstr "建立一個新的實例以在 CGI 環境中處理 XML-RPC 請求。" #: ../../library/xmlrpc.server.rst:385 msgid "" @@ -457,6 +629,9 @@ msgid "" "*logRequests* parameter to the :class:`DocXMLRPCServer` constructor " "parameter is honored." msgstr "" +"建立一個新的請求處理器實例。此請求處理器支援 XML-RPC POST 請求、文件 GET 請" +"求,並修改日誌記錄功能以遵守 :class:`DocXMLRPCServer` 建構函式的 *logRequests* 參" +"數。" #: ../../library/xmlrpc.server.rst:394 msgid "DocXMLRPCServer Objects" @@ -471,18 +646,24 @@ msgid "" "documentation. This allows a server to provide its own web-based " "documentation." msgstr "" +":class:`DocXMLRPCServer` 類別衍生自 :class:`SimpleXMLRPCServer`,並提供了建立" +"自我記錄 (self-documenting) 的獨立 XML-RPC 伺服器的方式。HTTP POST 請求會被作為 XML-RPC 方法呼叫來" +"處理。HTTP GET 請求會透過產生 pydoc 風格的 HTML 文件來處理。這允許伺服器提供自己的網頁文件。" #: ../../library/xmlrpc.server.rst:405 ../../library/xmlrpc.server.rst:433 msgid "" "Set the title used in the generated HTML documentation. This title will be " "used inside the HTML \"title\" element." msgstr "" +"設定在產生的 HTML 文件中使用的標題。此標題將用於 HTML \"title\" 元素內。" #: ../../library/xmlrpc.server.rst:411 ../../library/xmlrpc.server.rst:439 msgid "" "Set the name used in the generated HTML documentation. This name will appear " "at the top of the generated documentation inside a \"h1\" element." msgstr "" +"設定在產生的 HTML 文件中使用的名稱。此名稱將顯示在產生的文件頂部的 \"h1\" 元素" +"內。" #: ../../library/xmlrpc.server.rst:417 ../../library/xmlrpc.server.rst:445 msgid "" @@ -490,6 +671,8 @@ msgid "" "description will appear as a paragraph, below the server name, in the " "documentation." msgstr "" +"設定在產生的 HTML 文件中使用的描述。此描述將作為一個段落顯示在文件中伺服器名稱的" +"下方。" #: ../../library/xmlrpc.server.rst:422 msgid "DocCGIXMLRPCRequestHandler" @@ -503,3 +686,7 @@ msgid "" "HTTP GET requests are handled by generating pydoc-style HTML documentation. " "This allows a server to provide its own web-based documentation." msgstr "" +":class:`DocCGIXMLRPCRequestHandler` 類別衍生自 :class:" +"`CGIXMLRPCRequestHandler`,並提供了建立自我記錄的 XML-RPC CGI 指令稿的方法。" +"HTTP POST 請求會被作為 XML-RPC 方法呼叫來處理。HTTP GET 請求會透過產生 pydoc 風" +"格的 HTML 文件來處理。這允許伺服器提供自己的網頁文件。"