Skip to content

translate c-api/contextvars #1053 #1054

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 6 commits into from
Jun 27, 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
66 changes: 48 additions & 18 deletions c-api/contextvars.po
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,29 @@ msgstr ""
"Project-Id-Version: Python 3.13\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-09-01 22:24+0800\n"
"PO-Revision-Date: 2018-07-15 18:56+0800\n"
"PO-Revision-Date: 2025-06-27 00:11+0800\n"
"Last-Translator: \n"
"Language-Team: Chinese - TAIWAN (https://github.com/python/python-docs-zh-"
"tw)\n"
"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.6\n"

#: ../../c-api/contextvars.rst:6
msgid "Context Variables Objects"
msgstr "情境變數物件"
msgstr "情境變數物件(Context Variables Objects)"

#: ../../c-api/contextvars.rst:15
msgid ""
"In Python 3.7.1 the signatures of all context variables C APIs were "
"**changed** to use :c:type:`PyObject` pointers instead of :c:type:"
"`PyContext`, :c:type:`PyContextVar`, and :c:type:`PyContextToken`, e.g.::"
msgstr ""
"在 Python 3.7.1 中所有情境變數 C API 的簽名都被\\ **改為**\\ 使用 :c:type:"
"`PyObject` 指標,而不是 :c:type:`PyContext`、:c:type:`PyContextVar` 或 :c:"
"type:`PyContextToken`,例如:"

#: ../../c-api/contextvars.rst:20
msgid ""
Expand All @@ -34,6 +38,11 @@ msgid ""
"// in 3.7.1+:\n"
"PyObject *PyContext_New(void);"
msgstr ""
"// 在 3.7.0:\n"
"PyContext *PyContext_New(void);\n"
"\n"
"// 在 3.7.1+:\n"
"PyObject *PyContext_New(void);"

#: ../../c-api/contextvars.rst:26
msgid "See :issue:`34762` for more details."
Expand All @@ -42,94 +51,103 @@ msgstr "更多細節請見 :issue:`34762`。"
#: ../../c-api/contextvars.rst:29
msgid ""
"This section details the public C API for the :mod:`contextvars` module."
msgstr ""
msgstr "本節詳述 :mod:`contextvars` 模組的公開 C API。"

#: ../../c-api/contextvars.rst:33
msgid ""
"The C structure used to represent a :class:`contextvars.Context` object."
msgstr ""
msgstr "用來代表 :class:`contextvars.Context` 物件的 C 結構。"

#: ../../c-api/contextvars.rst:38
msgid ""
"The C structure used to represent a :class:`contextvars.ContextVar` object."
msgstr ""
msgstr "用來代表 :class:`contextvars.ContextVar` 物件的 C 結構。"

#: ../../c-api/contextvars.rst:43
msgid "The C structure used to represent a :class:`contextvars.Token` object."
msgstr ""
msgstr "用來代表 :class:`contextvars.Token` 物件的 C 結構。"

#: ../../c-api/contextvars.rst:47
msgid "The type object representing the *context* type."
msgstr ""
msgstr "代表 *context* 型別的型別物件。"

#: ../../c-api/contextvars.rst:51
msgid "The type object representing the *context variable* type."
msgstr ""
msgstr "代表 *情境變數* 型別的型別物件。"

#: ../../c-api/contextvars.rst:55
msgid "The type object representing the *context variable token* type."
msgstr ""
msgstr "代表 *情境變數 token* 型別的型別物件。"

#: ../../c-api/contextvars.rst:58
msgid "Type-check macros:"
msgstr ""
msgstr "型別檢查巨集:"

#: ../../c-api/contextvars.rst:62
msgid ""
"Return true if *o* is of type :c:data:`PyContext_Type`. *o* must not be "
"``NULL``. This function always succeeds."
msgstr ""
"如果 *o* 的型別為 :c:data:`PyContext_Type` 則回傳 true。*o* 不得為 ``NULL``。"
"此函式一定會成功回傳。"

#: ../../c-api/contextvars.rst:67
msgid ""
"Return true if *o* is of type :c:data:`PyContextVar_Type`. *o* must not be "
"``NULL``. This function always succeeds."
msgstr ""
"如果 *o* 的類型為 :c:data:`PyContextVar_Type` 則回傳 true。*o* 不得為 "
"``NULL``。此函式一定會成功回傳。"

#: ../../c-api/contextvars.rst:72
msgid ""
"Return true if *o* is of type :c:data:`PyContextToken_Type`. *o* must not be "
"``NULL``. This function always succeeds."
msgstr ""
"如果 *o* 的類型為 :c:data:`PyContextToken_Type` 則回傳 true。 *o* 不得為 "
"``NULL``。此函式一定會成功回傳。"

#: ../../c-api/contextvars.rst:76
msgid "Context object management functions:"
msgstr ""
msgstr "情境物件管理函式:"

#: ../../c-api/contextvars.rst:80
msgid ""
"Create a new empty context object. Returns ``NULL`` if an error has "
"occurred."
msgstr ""
msgstr "建立一個新的空的情境物件。 如果發生錯誤,則回傳 ``NULL``。"

#: ../../c-api/contextvars.rst:85
msgid ""
"Create a shallow copy of the passed *ctx* context object. Returns ``NULL`` "
"if an error has occurred."
msgstr ""
msgstr "建立傳入的 *ctx* 情境物件的淺層複製 (shallow copy)。如果發生錯誤,則回傳 ``NULL``。"

#: ../../c-api/contextvars.rst:90
msgid ""
"Create a shallow copy of the current thread context. Returns ``NULL`` if an "
"error has occurred."
msgstr ""
msgstr "建立目前執行緒上的情境的淺層複製。如果發生錯誤,則回傳 ``NULL``。"

#: ../../c-api/contextvars.rst:95
msgid ""
"Set *ctx* as the current context for the current thread. Returns ``0`` on "
"success, and ``-1`` on error."
msgstr ""
"設定 *ctx* 為目前執行緒上的目前情境。成功時回傳 ``0``,錯誤時回傳 ``-1``。"

#: ../../c-api/contextvars.rst:100
msgid ""
"Deactivate the *ctx* context and restore the previous context as the current "
"context for the current thread. Returns ``0`` on success, and ``-1`` on "
"error."
msgstr ""
"關閉 *ctx* 情境,並將目前執行緒的目前情境設回之前的情境。 成功時回傳 ``0``,"
"錯誤時回傳 ``-1``。"

#: ../../c-api/contextvars.rst:105
msgid "Context variable functions:"
msgstr ""
msgstr "情境變數函式:"

#: ../../c-api/contextvars.rst:109
msgid ""
Expand All @@ -138,45 +156,57 @@ msgid ""
"value for the context variable, or ``NULL`` for no default. If an error has "
"occurred, this function returns ``NULL``."
msgstr ""
"建立一個新的 ``ContextVar`` 物件。*name* 參數用於自我檢查(introspection)和"
"除錯目的。*def* 參數指定情境變數的預設值,亦可用 ``NULL`` 表示沒有預設值。 如"
"果發生錯誤,此函式會回傳 ``NULL``。"

#: ../../c-api/contextvars.rst:116
msgid ""
"Get the value of a context variable. Returns ``-1`` if an error has "
"occurred during lookup, and ``0`` if no error occurred, whether or not a "
"value was found."
msgstr ""
"取得情境變數的值。如果在查找過程中發生錯誤則回傳 ``-1``,如果沒有發生錯誤則無"
"論是否找到值都會回傳 ``0``。"

#: ../../c-api/contextvars.rst:120
msgid ""
"If the context variable was found, *value* will be a pointer to it. If the "
"context variable was *not* found, *value* will point to:"
msgstr ""
"如果找到情境變數,*value* 將會是指向它的指標。如果 *沒有* 找到情境變數,"
"*value* 將會指到:"

#: ../../c-api/contextvars.rst:123
msgid "*default_value*, if not ``NULL``;"
msgstr ""
msgstr "*default_value* 預設值,但前提是預設值不是 ``NULL``;"

#: ../../c-api/contextvars.rst:124
msgid "the default value of *var*, if not ``NULL``;"
msgstr ""
msgstr "*var* 的預設值,但前提是預設值不是 ``NULL``;"

#: ../../c-api/contextvars.rst:125
msgid "``NULL``"
msgstr "``NULL``"

#: ../../c-api/contextvars.rst:127
msgid "Except for ``NULL``, the function returns a new reference."
msgstr ""
msgstr "除了 ``NULL`` 之外,此函式會回傳一個新的參照(reference)。"

#: ../../c-api/contextvars.rst:131
msgid ""
"Set the value of *var* to *value* in the current context. Returns a new "
"token object for this change, or ``NULL`` if an error has occurred."
msgstr ""
"在目前的情境中將 *var* 的值設為 *value*。會回傳一個用來代表此變更的新 token "
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: token 有好的翻譯嗎?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

因為這裡的 token 應該不是以下意思:

  1. CSRF token -- security token
  2. NLP 的 tokenization 之後的那種 token
    而是比較接近像這樣的東西
    {{username}}, ${API_URL}, %DATE% <-- 會填入真正的值
    應該是比較接近 template language 裡面 variables/ placeholders 的概念
    所以可能可以乾脆翻成
  3. 佔位符

第二名的選項

  1. 硬翻的話可能是「標記」,但我覺得會要附一下原文(token)才看得懂...

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

好的我覺得可以就不翻譯放原文!
每次看到 token 都希望能好好翻譯不過都沒能成功,所以才跟你搜集一下意見 🙏🏽

"物件,如果發生錯誤則回傳 ``NULL``。"

#: ../../c-api/contextvars.rst:136
msgid ""
"Reset the state of the *var* context variable to that it was in before :c:"
"func:`PyContextVar_Set` that returned the *token* was called. This function "
"returns ``0`` on success and ``-1`` on error."
msgstr ""
"將 *var* 情境變數的狀態設回之前的狀態,亦即上一次回傳 token 的 :c:func:"
"`PyContextVar_Set` 被呼叫前的狀態。此函式在成功時回傳 ``0``,錯誤時回傳 "
"``-1``。"
Loading