Skip to content

Sync with CPython 3.13 #1041

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
May 10, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 27 additions & 26 deletions c-api/stable.po
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ msgstr ""
#: ../../c-api/stable.rst:15
msgid ""
"CPython's Application Binary Interface (ABI) is forward- and backwards-"
"compatible across a minor release (if these are compiled the same way; see :"
"ref:`stable-abi-platform` below). So, code compiled for Python 3.10.0 will "
"work on 3.10.8 and vice versa, but will need to be compiled separately for "
"3.9.x and 3.11.x."
"compatible across a minor release (if these are compiled the same way; "
"see :ref:`stable-abi-platform` below). So, code compiled for Python 3.10.0 "
"will work on 3.10.8 and vice versa, but will need to be compiled separately "
"for 3.9.x and 3.11.x."
msgstr ""
"CPython 的應用程式二進位介面 (Application Binary Interface, ABI) 在次要版本中"
"是向前和向後相容的(如果它們以相同的方式編譯;請參閱下面的\\ :ref:`stable-"
Expand All @@ -65,8 +65,8 @@ msgid ""
"releases. When :c:macro:`Py_LIMITED_API` is defined, only this subset is "
"exposed from ``Python.h``."
msgstr ""
":ref:`受限 API <limited-c-api>`,在多個次要版本之間相容。當有定義 :c:macro:"
"`Py_LIMITED_API` 時,只有這個子集會從 ``Python.h`` 公開。"
":ref:`受限 API <limited-c-api>`,在多個次要版本之間相容。當有定"
"義 :c:macro:`Py_LIMITED_API` 時,只有這個子集會從 ``Python.h`` 公開。"

#: ../../c-api/stable.rst:29
msgid "These are discussed in more detail below."
Expand All @@ -76,14 +76,14 @@ msgstr "下面將更詳細地討論這些內容。"
msgid ""
"Names prefixed by an underscore, such as ``_Py_InternalState``, are private "
"API that can change without notice even in patch releases. If you need to "
"use this API, consider reaching out to `CPython developers <https://discuss."
"python.org/c/core-dev/c-api/30>`_ to discuss adding public API for your use "
"case."
"use this API, consider reaching out to `CPython developers <https://"
"discuss.python.org/c/core-dev/c-api/30>`_ to discuss adding public API for "
"your use case."
msgstr ""
"帶有底線前綴的名稱是私有 API (private API),像是 ``_Py_InternalState``,即使"
"在補丁版本 (patch release) 中也可能被更改,不會另行通知。如果你需要使用這個 "
"API,可以聯繫 `CPython 開發者 <https://discuss.python.org/c/core-dev/c-"
"api/30>`_ 並針對你的使用方法來討論是否新增公開的 API。"
"API,可以聯繫 `CPython 開發者 <https://discuss.python.org/c/core-dev/c-api/"
"30>`_ 並針對你的使用方法來討論是否新增公開的 API。"

#: ../../c-api/stable.rst:40
msgid "Unstable C API"
Expand Down Expand Up @@ -156,9 +156,9 @@ msgid ""
"extension will be ABI-compatible with all Python 3 releases from the "
"specified one onward, and can use Limited API introduced up to that version."
msgstr ""
"將 ``Py_LIMITED_API`` 定義為對應於你的擴充有支援的最低 Python 版本的 :c:"
"macro:`PY_VERSION_HEX` 值。該擴充與從指定版本開始的所有 Python 3 版本之 ABI "
"相容,並且可以使用過去版本有引入的受限 API。"
"將 ``Py_LIMITED_API`` 定義為對應於你的擴充有支援的最低 Python 版本"
"的 :c:macro:`PY_VERSION_HEX` 值。該擴充與從指定版本開始的所有 Python 3 版本"
"之 ABI 相容,並且可以使用過去版本有引入的受限 API。"

#: ../../c-api/stable.rst:83
msgid ""
Expand Down Expand Up @@ -211,8 +211,8 @@ msgstr ""
#: ../../c-api/stable.rst:111
msgid ""
"On Windows, extensions that use the Stable ABI should be linked against "
"``python3.dll`` rather than a version-specific library such as ``python39."
"dll``."
"``python3.dll`` rather than a version-specific library such as "
"``python39.dll``."
msgstr ""
"在 Windows 上,使用穩定 ABI 的擴充應該連接到 ``python3.dll`` 而不是特定版本的"
"函式庫,例如 ``python39.dll``。"
Expand Down Expand Up @@ -256,9 +256,9 @@ msgid ""
"variant :c:func:`PyList_GET_ITEM` is not. The macro can be faster because it "
"can rely on version-specific implementation details of the list object."
msgstr ""
"例如,雖然 :c:func:`PyList_GetItem` 可用,但它的「不安全」巨集變體 :c:func:"
"`PyList_GET_ITEM` 為不可用。巨集運行可以更快,因為它可以依賴 list 物件的特定"
"版本實作細節。"
"例如,雖然 :c:func:`PyList_GetItem` 可用,但它的「不安全」巨集變"
"體 :c:func:`PyList_GET_ITEM` 為不可用。巨集運行可以更快,因為它可以依賴 list "
"物件的特定版本實作細節。"

#: ../../c-api/stable.rst:138
msgid ""
Expand All @@ -280,7 +280,7 @@ msgid ""
"where a version-specific one is not available – for example, for prereleases "
"of an upcoming Python version."
msgstr ""
"通過省略 ``Py_LIMITED_API`` 定義,可以使用特定版本的 ABI 編譯受限 API 擴充。"
"透過省略 ``Py_LIMITED_API`` 定義,可以使用特定版本的 ABI 編譯受限 API 擴充。"
"這可以提高該 Python 版本的性能,但會限制相容性。使用 ``Py_LIMITED_API`` 編譯"
"將產生一個擴充,可以在特定版本的擴充不可用的地方發布 — 例如,用於即將發布的 "
"Python 版本的預發布版本 (prerelease)。"
Expand All @@ -292,9 +292,10 @@ msgstr "受限 API 注意事項"
#: ../../c-api/stable.rst:154
msgid ""
"Note that compiling with ``Py_LIMITED_API`` is *not* a complete guarantee "
"that code conforms to the :ref:`Limited API <limited-c-api>` or the :ref:"
"`Stable ABI <stable-abi>`. ``Py_LIMITED_API`` only covers definitions, but "
"an API also includes other issues, such as expected semantics."
"that code conforms to the :ref:`Limited API <limited-c-api>` or "
"the :ref:`Stable ABI <stable-abi>`. ``Py_LIMITED_API`` only covers "
"definitions, but an API also includes other issues, such as expected "
"semantics."
msgstr ""
"請注意,使用 ``Py_LIMITED_API`` 進行編譯\\ *不*\\ 完全保證程式碼符合\\ :ref:`"
"受限 API <limited-c-api>` 或\\ :ref:`穩定 ABI <stable-abi>`。"
Expand Down Expand Up @@ -361,9 +362,9 @@ msgstr "平台注意事項"
#: ../../c-api/stable.rst:189
msgid ""
"ABI stability depends not only on Python, but also on the compiler used, "
"lower-level libraries and compiler options. For the purposes of the :ref:"
"`Stable ABI <stable-abi>`, these details define a “platform”. They usually "
"depend on the OS type and processor architecture"
"lower-level libraries and compiler options. For the purposes of "
"the :ref:`Stable ABI <stable-abi>`, these details define a “platform”. They "
"usually depend on the OS type and processor architecture"
msgstr ""
"ABI 穩定性不僅取決於 Python,還取決於使用的編譯器、低階函式庫和編譯器選項。出"
"於\\ :ref:`穩定 ABI <stable-abi>` 的目的,這些細節定義了一個「平台」。它們通"
Expand Down
120 changes: 61 additions & 59 deletions faq/extending.po
Original file line number Diff line number Diff line change
Expand Up @@ -34,11 +34,11 @@ msgstr "我可以在 C 中建立自己的函式嗎?"
#: ../../faq/extending.rst:18
msgid ""
"Yes, you can create built-in modules containing functions, variables, "
"exceptions and even new types in C. This is explained in the document :ref:"
"`extending-index`."
"exceptions and even new types in C. This is explained in the "
"document :ref:`extending-index`."
msgstr ""
"是的,你可以在 C 中建立包含函式、變數、例外甚至新型別的內建模組,:ref:"
"`extending-index` 文件中有相關說明。"
"是的,你可以在 C 中建立包含函式、變數、例外甚至新型別的內建模"
"組,:ref:`extending-index` 文件中有相關說明。"

#: ../../faq/extending.rst:22
msgid "Most intermediate or advanced Python books will also cover this topic."
Expand Down Expand Up @@ -73,16 +73,16 @@ msgstr "要編寫你自己的 C 擴充有許多替代方法,取決於你要執
#: ../../faq/extending.rst:44
#, fuzzy
msgid ""
"`Cython <https://cython.org>`_ and its relative `Pyrex <https://www.csse."
"canterbury.ac.nz/greg.ewing/python/Pyrex/>`_ are compilers that accept a "
"slightly modified form of Python and generate the corresponding C code. "
"Cython and Pyrex make it possible to write an extension without having to "
"learn Python's C API."
"`Cython <https://cython.org>`_ and its relative `Pyrex <https://"
"www.csse.canterbury.ac.nz/greg.ewing/python/Pyrex/>`_ are compilers that "
"accept a slightly modified form of Python and generate the corresponding C "
"code. Cython and Pyrex make it possible to write an extension without "
"having to learn Python's C API."
msgstr ""
"`Cython <https://cython.org>`_ 及其相關的 `Pyrex <https://www.csse."
"canterbury.ac.nz/greg.ewing/python/Pyrex/>`_ 是接受稍微修改 Python 形式並生成"
"相應的 C 程式碼。 Cython 和 Pyrex 使編寫擴充程式成為可能,而無需學習 Python "
"的 C API。"
"`Cython <https://cython.org>`_ 及其相關的 `Pyrex <https://"
"www.csse.canterbury.ac.nz/greg.ewing/python/Pyrex/>`_ 是接受稍微修改 Python "
"形式並生成相應的 C 程式碼。 Cython 和 Pyrex 使編寫擴充程式成為可能,而無需學"
"習 Python 的 C API。"

#: ../../faq/extending.rst:50
#, fuzzy
Expand Down Expand Up @@ -111,15 +111,15 @@ msgid ""
"The highest-level function to do this is :c:func:`PyRun_SimpleString` which "
"takes a single string argument to be executed in the context of the module "
"``__main__`` and returns ``0`` for success and ``-1`` when an exception "
"occurred (including :exc:`SyntaxError`). If you want more control, use :c:"
"func:`PyRun_String`; see the source for :c:func:`PyRun_SimpleString` in "
"``Python/pythonrun.c``."
"occurred (including :exc:`SyntaxError`). If you want more control, "
"use :c:func:`PyRun_String`; see the source for :c:func:`PyRun_SimpleString` "
"in ``Python/pythonrun.c``."
msgstr ""
"執行此操作的最高級別函式是 :c:func:`PyRun_SimpleString`,它採用單個字串引數在"
"模組 ``__main__`` 的上下文中執行,並回傳 ``0`` 表示成功,``- 1`` 發生例外時"
"(包括 :exc:`SyntaxError`)。如果你想要更多的控制,使用 :c:func:"
"`PyRun_String`;在 ``Python/pythonrun.c`` 中查看 :c:func:"
"`PyRun_SimpleString` 的原始碼。"
"(包括 :exc:`SyntaxError`)。如果你想要更多的控制,使"
"用 :c:func:`PyRun_String`;在 ``Python/pythonrun.c`` 中查"
"看 :c:func:`PyRun_SimpleString` 的原始碼。"

#: ../../faq/extending.rst:72
#, fuzzy
Expand All @@ -133,8 +133,8 @@ msgid ""
"start symbol :c:data:`Py_eval_input`; it parses an expression, evaluates it "
"and returns its value."
msgstr ""
"呼叫上一個問題中的函式 :c:func:`PyRun_String` 開始符號 :c:data:"
"`Py_eval_input`;它解析一個運算式,對其求值並回傳它的值。"
"呼叫上一個問題中的函式 :c:func:`PyRun_String` 開始符"
"號 :c:data:`Py_eval_input`;它解析一個運算式,對其求值並回傳它的值。"

#: ../../faq/extending.rst:80
msgid "How do I extract C values from a Python object?"
Expand All @@ -145,33 +145,34 @@ msgstr "如何從 Python 物件中提取 C 值?"
msgid ""
"That depends on the object's type. If it's a tuple, :c:func:`PyTuple_Size` "
"returns its length and :c:func:`PyTuple_GetItem` returns the item at a "
"specified index. Lists have similar functions, :c:func:`PyList_Size` and :c:"
"func:`PyList_GetItem`."
"specified index. Lists have similar functions, :c:func:`PyList_Size` "
"and :c:func:`PyList_GetItem`."
msgstr ""
"這取決於物件的型別。如果它是一個元組,:c:func:`PyTuple_Size` 回傳它的長度,:"
"c:func:`PyTuple_GetItem` 回傳指定索引的項目。列表具有類似的函式:c:func:"
"`PyList_Size` 和 :c:func:`PyList_GetItem`。"
"這取決於物件的型別。如果它是一個元組,:c:func:`PyTuple_Size` 回傳它的長"
"度,:c:func:`PyTuple_GetItem` 回傳指定索引的項目。列表具有類似的函式:"
"c:func:`PyList_Size` 和 :c:func:`PyList_GetItem`。"

#: ../../faq/extending.rst:87
#, fuzzy
msgid ""
"For bytes, :c:func:`PyBytes_Size` returns its length and :c:func:"
"`PyBytes_AsStringAndSize` provides a pointer to its value and its length. "
"Note that Python bytes objects may contain null bytes so C's :c:func:`!"
"strlen` should not be used."
"For bytes, :c:func:`PyBytes_Size` returns its length "
"and :c:func:`PyBytes_AsStringAndSize` provides a pointer to its value and "
"its length. Note that Python bytes objects may contain null bytes so "
"C's :c:func:`!strlen` should not be used."
msgstr ""
"對於位元組,:c:func:`PyBytes_Size` 回傳它的長度,:c:func:"
"`PyBytes_AsStringAndSize` 提供指向它的值和長度的指標。請注意,Python 位元組物"
"件可能包含空位元組,因此不應使用 C 的 :c:func:`!strlen`。"
"對於位元組,:c:func:`PyBytes_Size` 回傳它的長"
"度,:c:func:`PyBytes_AsStringAndSize` 提供指向它的值和長度的指標。請注意,"
"Python 位元組物件可能包含空位元組,因此不應使用 C 的 :c:func:`!strlen`。"

#: ../../faq/extending.rst:92
msgid ""
"To test the type of an object, first make sure it isn't ``NULL``, and then "
"use :c:func:`PyBytes_Check`, :c:func:`PyTuple_Check`, :c:func:"
"`PyList_Check`, etc."
"use :c:func:`PyBytes_Check`, :c:func:`PyTuple_Check`, :c:func:`PyList_Check`, "
"etc."
msgstr ""
"要測試物件的型別,首先確保它不是 ``NULL``,然後再使用 :c:func:"
"`PyBytes_Check`、:c:func:`PyTuple_Check`、:c:func:`PyList_Check` 等函式。"
"要測試物件的型別,首先確保它不是 ``NULL``,然後再使"
"用 :c:func:`PyBytes_Check`、:c:func:`PyTuple_Check`、:c:func:`PyList_Check` "
"等函式。"

#: ../../faq/extending.rst:95
#, fuzzy
Expand All @@ -184,9 +185,10 @@ msgid ""
"al.) and mappings in the PyMapping APIs."
msgstr ""
"還有一個針對 Python 物件的高級 API,它由所謂的「抽象」介面提供——閱讀 "
"``Include/abstract.h`` 了解更多詳細資訊。它允許使用 :c:func:"
"`PySequence_Length`、:c:func:`PySequence_GetItem` 等呼叫以及許多其他有用的協"
"議(例如數字 (:c:func:`PyNumber_Index) ` 等)和 PyMapping API 中的對映。"
"``Include/abstract.h`` 了解更多詳細資訊。它允許使"
"用 :c:func:`PySequence_Length`、:c:func:`PySequence_GetItem` 等呼叫以及許多其"
"他有用的協議(例如數字 (:c:func:`PyNumber_Index) ` 等)和 PyMapping API 中的"
"對映。"

#: ../../faq/extending.rst:104
msgid "How do I use Py_BuildValue() to create a tuple of arbitrary length?"
Expand Down Expand Up @@ -229,8 +231,8 @@ msgid ""
"defined. You are responsible for eventually :c:func:`Py_DECREF`\\ 'ing the "
"return value."
msgstr ""
"這適用於任何具有方法的物件——無論是內建的還是使用者定義的。你負責最終 :c:func:"
"`Py_DECREF`\\ 'ing 回傳值。"
"這適用於任何具有方法的物件——無論是內建的還是使用者定義的。你負責最"
"終 :c:func:`Py_DECREF`\\ 'ing 回傳值。"

#: ../../faq/extending.rst:124
msgid ""
Expand Down Expand Up @@ -277,9 +279,9 @@ msgid ""
"print_error, or just allow the standard traceback mechanism to work. Then, "
"the output will go wherever your ``write()`` method sends it."
msgstr ""
"在 Python 程式碼中,定義一個支援 ``write()`` 方法的物件。將此物件分配給 :"
"data:`sys.stdout` 和 :data:`sys.stderr`。呼叫 print_error,或者只允許標準的回"
"溯機制起作用。然後,輸出將到達你的 ``write()`` 方法發送它的任何地方。"
"在 Python 程式碼中,定義一個支援 ``write()`` 方法的物件。將此物件分配"
"給 :data:`sys.stdout` 和 :data:`sys.stderr`。呼叫 print_error,或者只允許標準"
"的回溯機制起作用。然後,輸出將到達你的 ``write()`` 方法發送它的任何地方。"

#: ../../faq/extending.rst:149
msgid "The easiest way to do this is to use the :class:`io.StringIO` class:"
Expand Down Expand Up @@ -356,11 +358,11 @@ msgstr "module = PyImport_ImportModule(\"<modulename>\");"
#: ../../faq/extending.rst:188
#, fuzzy
msgid ""
"If the module hasn't been imported yet (i.e. it is not yet present in :data:"
"`sys.modules`), this initializes the module; otherwise it simply returns the "
"value of ``sys.modules[\"<modulename>\"]``. Note that it doesn't enter the "
"module into any namespace -- it only ensures it has been initialized and is "
"stored in :data:`sys.modules`."
"If the module hasn't been imported yet (i.e. it is not yet present "
"in :data:`sys.modules`), this initializes the module; otherwise it simply "
"returns the value of ``sys.modules[\"<modulename>\"]``. Note that it "
"doesn't enter the module into any namespace -- it only ensures it has been "
"initialized and is stored in :data:`sys.modules`."
msgstr ""
"如果模組還沒有被引入(即它還沒有出現在 :data:`sys.modules` 中),這會初始化模"
"組;否則它只回傳 ``sys.modules[\"<modulename>\"]`` 的值。請注意,它不會將模組"
Expand Down Expand Up @@ -516,9 +518,9 @@ msgid ""
"``Parser/myreadline.c`` for more hints."
msgstr ""
"在 C 中執行此操作的最簡單方法是呼叫:c:func:`PyRun_InteractiveLoop`(可能在單"
"獨的執行緒中)並讓 Python 直譯器為你處理輸入。你還可以將 :c:func:"
"`PyOS_ReadlineFunctionPointer` 設定為指向你的自定義輸入函式。有關更多提示,請"
"參閱``Modules/readline.c`` 和``Parser/myreadline.c``。"
"獨的執行緒中)並讓 Python 直譯器為你處理輸入。你還可以"
"將 :c:func:`PyOS_ReadlineFunctionPointer` 設定為指向你的自定義輸入函式。有關"
"更多提示,請參閱``Modules/readline.c`` 和``Parser/myreadline.c``。"

#: ../../faq/extending.rst:275
msgid "How do I find undefined g++ symbols __builtin_new or __pure_virtual?"
Expand All @@ -541,22 +543,22 @@ msgid ""
"Can I create an object class with some methods implemented in C and others "
"in Python (e.g. through inheritance)?"
msgstr ""
"我可以用一些用 C 實作的方法和用 Python 實作的其他方法(例如通過繼承)建立一個"
"我可以用一些用 C 實作的方法和用 Python 實作的其他方法(例如透過繼承)建立一個"
"物件類別嗎?"

#: ../../faq/extending.rst:285
msgid ""
"Yes, you can inherit from built-in classes such as :class:`int`, :class:"
"`list`, :class:`dict`, etc."
"Yes, you can inherit from built-in classes such "
"as :class:`int`, :class:`list`, :class:`dict`, etc."
msgstr ""
"是的,你可以繼承內建類別,例如 :class:`int`、:class:`list`、:class:`dict` "
"等。"

#: ../../faq/extending.rst:288
msgid ""
"The Boost Python Library (BPL, https://www.boost.org/libs/python/doc/index."
"html) provides a way of doing this from C++ (i.e. you can inherit from an "
"extension class written in C++ using the BPL)."
"The Boost Python Library (BPL, https://www.boost.org/libs/python/doc/"
"index.html) provides a way of doing this from C++ (i.e. you can inherit from "
"an extension class written in C++ using the BPL)."
msgstr ""
"Boost Python 函式庫(BPL,https://www.boost.org/libs/python/doc/index.html)"
"提供了一種從 C++ 執行此操作的方法(即你可以使用 BPL 來繼承用 C++ 編寫的擴充類"
Expand Down
Loading