feat: translate howto/logging.po - #1195
Conversation
There was a problem hiding this comment.
Pull request overview
Adds/refreshes Traditional Chinese translations for the Logging HOWTO (howto/logging.po) and updates translation metadata.
Changes:
- Updates header metadata (copyright year range, translator credit, generator).
- Translates additional sections/paragraphs and many table entries in the Logging HOWTO.
- Adds translations for advanced concepts (loggers/handlers/formatters/config options).
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| msgstr "進階日誌記錄教學" | ||
|
|
||
| #: ../../howto/logging.rst:320 | ||
| #, fuzzy |
There was a problem hiding this comment.
This entry is marked as fuzzy but already has a translated msgstr. Fuzzy entries are typically excluded from the built docs/translation stats. If the translation is final, remove the #, fuzzy flag; otherwise clear the msgstr until it’s ready.
| #, fuzzy |
| msgstr "如果未提供設定,會發生什麼" | ||
|
|
||
| #: ../../howto/logging.rst:785 | ||
| #, fuzzy |
There was a problem hiding this comment.
This entry is marked as fuzzy but already has a translated msgstr. Fuzzy entries are typically excluded from the built docs/translation stats. If the translation is final, remove the #, fuzzy flag; otherwise clear the msgstr until it’s ready.
| #, fuzzy |
| "the following example::" | ||
| msgstr "" | ||
| "要取得值以傳遞給 :func:`basicConfig` 的 *level* 引數,你可能會想檢查任何使用" | ||
| "者輸入的值,如下面的示例所示: ::" |
There was a problem hiding this comment.
This msgstr uses : :: (Chinese colon plus ::). In reST, :: already renders as a single trailing : while introducing a literal block; adding a separate colon can produce doubled punctuation. Consider ending the sentence with :: directly.
| "格式化器對象(Formatter objects)設置記錄訊息的最終順序、結構和內容。和基礎" | ||
| "的 :class:`logging.Handler` 類別不同,應用程式程式碼可以實例化格式化器類別," | ||
| "不過如果應用程式需要特殊行為,則可能需要子類別繼承格式化器。構造函式" | ||
| "(condtructor)有三個可選引數 -- 訊息格式字串、日期格式字串和樣式指示器。" |
There was a problem hiding this comment.
Typo in the embedded English term: condtructor should be constructor.
| "(condtructor)有三個可選引數 -- 訊息格式字串、日期格式字串和樣式指示器。" | |
| "(constructor)有三個可選引數 -- 訊息格式字串、日期格式字串和樣式指示器。" |
| "time, provide a *datefmt* argument to ``basicConfig``, as in this example::" | ||
| msgstr "" | ||
| "預設的時間/日期格式遵照 ISO8601 或 :rfc:`3339`。如果你想要有更多的時間/日期自" | ||
| "訂性,可以在 ``basicConfig`` 傳入 *datefmt* 的引數,如以下範例: ::" |
There was a problem hiding this comment.
This msgstr uses : :: (Chinese colon plus ::). In reST, :: already renders as a single trailing : while introducing a literal block; adding a separate colon can produce doubled punctuation. Consider ending the sentence with :: directly.
| "訂性,可以在 ``basicConfig`` 傳入 *datefmt* 的引數,如以下範例: ::" | |
| "訂性,可以在 ``basicConfig`` 傳入 *datefmt* 的引數,如以下範例::" |
| "being the names of the objects::" | ||
| msgstr "" | ||
| "以下Python模組建立了一個幾乎與上面列表中相同的記錄器(logger)、處理器" | ||
| "(handler),和格式化器(formatter),唯一不同之處在於對象名稱的改變: ::" |
There was a problem hiding this comment.
This msgstr uses : :: (Chinese colon plus ::). In reST, :: already renders as a single trailing : while introducing a literal block; adding a separate colon can produce doubled punctuation. Consider ending the sentence with :: directly.
| "(handler),和格式化器(formatter),唯一不同之處在於對象名稱的改變: ::" | |
| "(handler),和格式化器(formatter),唯一不同之處在於對象名稱的改變::" |
| "and a logging cookbook, please see :ref:`tutorial-ref-links`." | ||
| msgstr "" | ||
| "此頁面包含教學資訊。有關參考資訊和日誌記錄手冊的鏈接,請參閱 :ref:`tutorial-" | ||
| "ref-links`。" |
There was a problem hiding this comment.
linter again? seems itr should be contain more bytes in a line
| msgstr "" | ||
| "日誌(Logging)提供方便使用的一組簡單紀錄函式。這些函式包括::func:`debug`、:" | ||
| "func:`info`、:func:`warning`、:func:`error` 和 :func:`critical`。如需確定何時" | ||
| "使用紀錄,請參見以下表格,其中列出每個常見工作的最佳工具。" |
| msgid "" | ||
| "Display console output for ordinary usage of a command line script or program" | ||
| msgstr "" | ||
| msgstr "對於命令行或程式的普通用法,結果會顯示在控制台" |
There was a problem hiding this comment.
| msgstr "對於命令行或程式的普通用法,結果會顯示在控制台" | |
| msgstr "對於命令行或程式的一般用法,結果會顯示在控制台" |
我覺得一般比較順
| "A logger's :meth:`~Logger.info` (or :meth:`~Logger.debug` method for very " | ||
| "detailed output for diagnostic purposes)" | ||
| msgstr "" | ||
| ":func:`logging.info` (或者在需要診斷用的詳細輸出時使用 :func:`logging." |
| ":func:`warnings.warn` in library code if the issue is avoidable and the " | ||
| "client application should be modified to eliminate the warning" | ||
| msgstr "" | ||
| "如果問題是可以避免的,那麼客戶端應該修改以消除警告,請在庫程式碼中使用 :func:" |
There was a problem hiding this comment.
| "如果問題是可以避免的,那麼客戶端應該修改以消除警告,請在庫程式碼中使用 :func:" | |
| "如果問題是可以避免的,那麼客戶端應該修改以消除警告,請在函式庫程式碼中使用 :func:" |
| "debug``,而不是建立一個記錄器並在其上呼叫函式。這些函式在根記錄器上運作,但它" | ||
| "們很有用,因為它們會在尚未呼叫 :func:`~logging.basicConfig` 時(如此範例)為" | ||
| "你呼叫它。然而,在較大的程式中,你通常會希望明確控制日誌配置——因此基於這個原" | ||
| "因以及其他原因,最好建立記錄器並呼叫它們的方法。" |
There was a problem hiding this comment.
nit
| "因以及其他原因,最好建立記錄器並呼叫它們的方法。" | |
| "因以及其他狀況,最好建立記錄器並呼叫它們的方法。" |
| "passed, which determines how encoding errors are handled. For available " | ||
| "values and the default, see the documentation for :func:`open`." | ||
| msgstr "" | ||
| "新增了 *encoding* 引數。在早期的 Python 版本中,如果未指定,將使用 :func:" |
There was a problem hiding this comment.
| "新增了 *encoding* 引數。在早期的 Python 版本中,如果未指定,將使用 :func:" | |
| "新增了 *encoding* 引數。在早期的 Python 版本中,或未指定此引數,將使用 :func:" |
| msgstr "" | ||
| "新增了 *encoding* 引數。在早期的 Python 版本中,如果未指定,將使用 :func:" | ||
| "`open` 的預設編碼。儘管在上面的範例中沒有顯示,現在也可以傳遞 *errors* 引數," | ||
| "以決定如何處理編碼錯誤。可用的值與其預設值,請參閱 :func:`open` 的文件。" |
There was a problem hiding this comment.
| "以決定如何處理編碼錯誤。可用的值與其預設值,請參閱 :func:`open` 的文件。" | |
| "以決定如何處理編碼錯誤。有關其可用的值與預設值,請參閱 :func:`open` 的文件。" |
| "argument. You may want to error check any user input value, perhaps as in " | ||
| "the following example::" | ||
| msgstr "" | ||
| "要取得值以傳遞給 :func:`basicConfig` 的 *level* 引數,你可能會想檢查任何使用" |
There was a problem hiding this comment.
| "要取得值以傳遞給 :func:`basicConfig` 的 *level* 引數,你可能會想檢查任何使用" | |
| "要取得以 *level* 引數傳遞給 :func:`basicConfig` 的值 ,你可能會想檢查任何使用" |
| "the following example::" | ||
| msgstr "" | ||
| "要取得值以傳遞給 :func:`basicConfig` 的 *level* 引數,你可能會想檢查任何使用" | ||
| "者輸入的值,如下面的示例所示: ::" |
There was a problem hiding this comment.
| "者輸入的值,如下面的示例所示: ::" | |
| "者輸入的值,如以下範例所示: ::" |
Add Traditional Chinese translations for the logging HOWTO documentation. This includes: - Header updates with new translator credit (CTHua) - Translation of main sections and headings - Translation of logging level descriptions - Translation of handler and formatter documentation - Translation of configuration examples https://claude.ai/code/session_01FubLSJSpQ2mNDuK2cjMebE
Run powrap to fix line wrapping issues in the PO file. https://claude.ai/code/session_01FubLSJSpQ2mNDuK2cjMebE
Fix inconsistent term references at line 195 where :meth:`~Logger.debug` and :meth:`~Logger.info` were incorrectly translated as :func:`debug` and :func:`info`. https://claude.ai/code/session_01FubLSJSpQ2mNDuK2cjMebE
e575104 to
4751707
Compare
|
Thanks for the translation work on this file! Found two small reST issues while validating: 1. "地的最低記錄等級。為什麼有兩個 :func:`setLevel` 方法呢?記錄器中設定的等級決"The source ( Suggested fix: "地的最低記錄等級。為什麼有兩個 :meth:`~Handler.setLevel` 方法呢?記錄器中設定的等級決"2. "正如你所看到的,將變數資料合併到事件描述訊息中使用的是舊的 `%` 樣式的字串格"
"正如你所看到的,將變數資料合併到事件描述訊息中使用的是舊的 ``%`` 樣式的字串格"Everything else checked out clean — terminology, punctuation, CJK/Latin spacing, line length (≤79 chars), and |
| "你可以透過 ``logger = getLogger(__name__)`` 建立一個 logger 來存取日誌記錄功" | ||
| "能,然後呼叫 logger 的 :meth:`~Logger.debug`、:meth:`~Logger.info`、:meth:" | ||
| "`~Logger.warning`、:meth:`~Logger.error` 和 :meth:`~Logger.critical` 方法。如" | ||
| "需確定何時使用日誌記錄以及該使用哪個 logger 方法,請參見下表,其中列出每個常" |
There was a problem hiding this comment.
這邊的 to 比教偏向 in order to , 所以應該是為了...而不是如需要 if need?
"為了確定你何時需要使用日誌記錄以及..."
| msgid "" | ||
| "Display console output for ordinary usage of a command line script or program" | ||
| msgstr "" | ||
| msgstr "對於命令列或程式的一般用法,結果會顯示在控制台" |
There was a problem hiding this comment.
不對,這句全錯
應該是
| msgstr "對於命令列或程式的一般用法,結果會顯示在控制台" | |
| msgstr "將命令列腳本或程式的一般用法顯示在主控台輸出" |
There was a problem hiding this comment.
console 我看過去有人翻成主控台,但我覺得控制台也無不可,供參
| "A logger's :meth:`~Logger.info` (or :meth:`~Logger.debug` method for very " | ||
| "detailed output for diagnostic purposes)" | ||
| msgstr "" | ||
| "logger 的 :meth:`~Logger.info`\\ (或者在需要診斷用的詳細輸出時使用 :meth:" |
There was a problem hiding this comment.
或在需要取得判斷原因用的詳細輸出時使用 debug
| ":func:`warnings.warn` in library code if the issue is avoidable and the " | ||
| "client application should be modified to eliminate the warning" | ||
| msgstr "" | ||
| "如果問題是可以避免的,那麼應該修改客戶端以消除警告,請在函式庫程式碼中使用 " |
There was a problem hiding this comment.
| "如果問題是可以避免的,那麼應該修改客戶端以消除警告,請在函式庫程式碼中使用 " | |
| "如果問題是可以避免的,且客戶端應用程式應修改以消除此警告,請在函式庫程式碼中使用 " |
| "Report suppression of an error without raising an exception (e.g. error " | ||
| "handler in a long-running server process)" | ||
| msgstr "" | ||
| msgstr "報告錯誤但不引發例外(如長時間執行的伺服器行程中的錯誤處理器)" |
There was a problem hiding this comment.
這邊 suppresion 應該還是要翻出來...吧
要想一下要怎麼寫出有把錯誤壓掉的感覺
| "in :ref:`handler-basic`." | ||
| msgstr "" | ||
| ":meth:`Logger.addHandler` 和 :meth:`Logger.removeHandler` 可以新增或移除處理" | ||
| "器物件到目前的記錄器物件(logger object)。有關處理器的詳細說明,請參閱 :ref:" |
| "exception information." | ||
| msgstr "" | ||
| ":meth:`Logger.debug`、:meth:`Logger.info`、:meth:`Logger.warning`、:meth:" | ||
| "`Logger.error` 和 :meth:`Logger.critical` 建立一個包含訊息和相應名稱的日誌紀" |
| "along with it. Call this method only from an exception handler." | ||
| msgstr "" | ||
| ":meth:`Logger.exception` 這個方法建立的日誌訊息與 :meth:`Logger.error` 相近。" | ||
| "差別在於 :meth:`Logger.exception` 會附上一個程式執行時的堆疊(traceback)。請只" |
There was a problem hiding this comment.
原文沒有 traceback
下一句應該是指從例外處理器中呼叫?
| "loggers with names of ``foo.bar``, ``foo.bar.baz``, and ``foo.bam`` are all " | ||
| "descendants of ``foo``." | ||
| msgstr "" | ||
| ":func:`getLogger` 會回傳一個指定名稱的日誌物件實例的參照,如果沒有指定名稱," |
| "attribute of a logger to ``False``.)" | ||
| msgstr "" | ||
| "子記錄器會將訊息在其祖先(ancestor)記錄器所關聯的處理器傳播,因此並不需要" | ||
| "為應用程式使用的所有記錄器定義和配置處理器。因此只需要為最高等級的記錄器配置" |
There was a problem hiding this comment.
| "為應用程式使用的所有記錄器定義和配置處理器。因此只需要為最高等級的記錄器配置" | |
| "為應用程式使用的所有記錄器定義和配置處理器。只需要為最高等級的記錄器配置" |
| "(根據日誌訊息的嚴重性)。:class:`Logger` 物件可以使用 :meth:" | ||
| "`~Logger.addHandler` 方法向自己新增零個或多個處理器物件。作為一個範例場景,一" | ||
| "個應用程式可能想要將所有日誌訊息發送到一個日誌檔案、將所有錯誤或更高等級的日" | ||
| "誌訊息發送到 stdout、並將所有嚴重的日誌訊息發送到一個電子郵件地址。這種場景需" |
There was a problem hiding this comment.
這裡的 error / critical 要不要不翻比較好
| "not creating custom handlers) are the following configuration methods:" | ||
| msgstr "" | ||
| "對於應用程式開發人員而言,與處理器相關的方法非常少。當使用內建的處理器物件 " | ||
| "(即未建立自訂處理器) 時,似乎只有以下設定方法對應用程式開發人員有關:" |
There was a problem hiding this comment.
| "(即未建立自訂處理器) 時,似乎只有以下設定方法對應用程式開發人員有關:" | |
| "(即未建立自訂處理器) 時,似乎只有以下設定方法與應用程式開發人員有關:" |
| "The level set in each handler determines which messages that handler will " | ||
| "send on." | ||
| msgstr "" | ||
| ":meth:`~Handler.setLevel` 方法在日誌物件中同樣存在,它指定了將會被傳遞至目的" |
There was a problem hiding this comment.
| ":meth:`~Handler.setLevel` 方法在日誌物件中同樣存在,它指定了將會被傳遞至目的" | |
| ":meth:`~Handler.setLevel` 正如在日誌物件中一樣,指定了將會被傳遞至目的" |
| "屬性設定為一個與 :func:`time.localtime` 或 :func:`time.gmtime` 等具有相同簽名" | ||
| "的函式。如果要為所有格式化器更改此設定,像是要在所有記錄時間顯示為 GMT 時間," | ||
| "可以在格式化器類別中設定 ``converter`` 屬性(以 ``time.gmtime`` 為 GMT 顯" | ||
| "示)。" |
There was a problem hiding this comment.
我覺得這邊原文怪怪的,但要翻應該是先翻 apply the converter to gmttime for GMT display?
| "Creating loggers, handlers, and formatters explicitly using Python code that " | ||
| "calls the configuration methods listed above." | ||
| msgstr "" | ||
| "以 Python 程式碼方式呼叫上述設定方法來明確的產生記錄器 (loggers)、處理器 " |
There was a problem hiding this comment.
| "以 Python 程式碼方式呼叫上述設定方法來明確的產生記錄器 (loggers)、處理器 " | |
| "以 Python 程式碼呼叫上述設定方法來明確的產生記錄器 (loggers)、處理器 " |
| msgstr "" | ||
| "在 Python 3.2 中,引入了一種使用字典來保存設定資訊的新方法。這提供了上述配置" | ||
| "檔方法所提供功能的超集,是推薦用於新應用程式和部署的配置方法。因為 Python 字" | ||
| "典被用來保存配置資訊,你可以使用不同的方式來填充字典,所以你有更多的選項來進" |
There was a problem hiding this comment.
| "典被用來保存配置資訊,你可以使用不同的方式來填充字典,所以你有更多的選項來進" | |
| "典被用來保存配置資訊,所以你可以使用不同的方式來填充字典,因此你有更多的選項來進" |
| "handler's level is set to ``WARNING``, so all events at this and greater " | ||
| "severities will be output." | ||
| msgstr "" | ||
| "本事件使用 'handler of last resort' 輸出,該處理器儲存在 :data:" |
There was a problem hiding this comment.
| "本事件使用 'handler of last resort' 輸出,該處理器儲存在 :data:" | |
| "事件使用 'handler of last resort' 輸出,該處理器儲存在 :data:" |
| msgstr "" | ||
| "本事件使用 'handler of last resort' 輸出,該處理器儲存在 :data:" | ||
| "`lastResort` 中。這個內部處理器不與任何日誌記錄器相關聯,作用類似於 :class:" | ||
| "`~logging.StreamHandler`,將事件描述訊息寫入目前值 ``sys.stderr``\\ (因此會" |
There was a problem hiding this comment.
| "`~logging.StreamHandler`,將事件描述訊息寫入目前值 ``sys.stderr``\\ (因此會" | |
| "`~logging.StreamHandler`,將事件描述訊息寫入目前 ``sys.stderr``\\ 的值(因此會" |
| "開發使用 logging 的函式庫時,應該注意函式庫如何使用 logging,例如日誌記錄器" | ||
| "的名稱。也需要考慮到 logging 的配置方式。如果應用程式未使用日誌記錄且函式" | ||
| "庫程式碼有做出日誌記錄呼叫(如前一節所述),則會將所有大於或等於 ``WARNING`` " | ||
| "嚴重性事件列印至 ``sys.stderr`` 中。這被認為是最佳預設行為。" |
There was a problem hiding this comment.
severity 的翻譯也不統一的樣子
有時候會不翻 只留 “等級”
不過這邊只講等級也蠻順的
| "libraries, then the logger name specified can be 'orgname.foo' rather than " | ||
| "just 'foo'." | ||
| msgstr "" | ||
| "應該要有預期的結果。如果一個組織生產了多個函式庫,則指定的記錄器名稱會是 " |
There was a problem hiding this comment.
| "應該要有預期的結果。如果一個組織生產了多個函式庫,則指定的記錄器名稱會是 " | |
| "應該要有預期的結果。如果一個組織生產了多個函式庫,則指定的記錄器名稱可以是 " |
Restore and fix f765f25
Add Traditional Chinese translations for the logging HOWTO documentation. This includes: