88# Yusuke Miyazaki <miyazaki.dev@gmail.com>, 2021
99# mollinaca, 2021
1010# Shin Saito, 2021
11+ # 菊池 健志, 2023
1112#
1213#, fuzzy
1314msgid ""
1415msgstr ""
1516"Project-Id-Version : Python 3.11\n "
1617"Report-Msgid-Bugs-To : \n "
17- "POT-Creation-Date : 2023-01-13 14:15 +0000\n "
18+ "POT-Creation-Date : 2023-02-03 14:14 +0000\n "
1819"PO-Revision-Date : 2021-06-28 00:51+0000\n "
19- "Last-Translator : Shin Saito, 2021 \n "
20+ "Last-Translator : 菊池 健志, 2023 \n "
2021"Language-Team : Japanese (https://www.transifex.com/python-doc/teams/5390/ "
2122"ja/)\n "
2223"MIME-Version : 1.0\n "
@@ -304,6 +305,15 @@ msgid ""
304305"interpreter's main loop, this aborts the currently executing Python code and "
305306"tries to find an exception handler specified by the Python programmer."
306307msgstr ""
308+ "関数 *g* を呼び出す *f* が、前者の関数の呼び出しに失敗したことを検出すると、 "
309+ "*f* 自体はエラー値 (大抵は ``NULL`` や ``-1``) を返さねばなりません。しか"
310+ "し、 ``PyErr_*`` 関数群のいずれかを呼び出す必要は *ありません* --- なぜな"
311+ "ら、 *g* がすでに呼び出しているからです。次いで *f* を呼び出したコードもエ"
312+ "ラーを示す値を *自らを呼び出したコード* に返すことになりますが、同様に "
313+ "``PyErr_*`` は *呼び出しません* 。以下同様に続きます --- エラーの最も詳しい原"
314+ "因は、最初にエラーを検出した関数がすでに報告しているからです。エラーが "
315+ "Python インタプリタのメインループに到達すると、現在実行中の Python コードは一"
316+ "時停止し、 Python プログラマが指定した例外ハンドラを探し出そうとします。"
307317
308318#: ../../extending/extending.rst:168
309319msgid ""
@@ -313,6 +323,11 @@ msgid ""
313323"cause information about the cause of the error to be lost: most operations "
314324"can fail for a variety of reasons.)"
315325msgstr ""
326+ "(モジュールが ``PyErr_*`` 関数をもう一度呼び出して、より詳細なエラーメッセー"
327+ "ジを提供するような状況があります。このような状況ではそうすべきです。とはい"
328+ "え、一般的な規則としては、この関数を何度も呼び出す必要はなく、ともすればエ"
329+ "ラーの原因に関する情報を失う結果になりがちです: これにより、ほとんどの操作が"
330+ "様々な理由から失敗するかもしれません)"
316331
317332#: ../../extending/extending.rst:174
318333msgid ""
@@ -508,6 +523,10 @@ msgid ""
508523"``None``. You need this idiom to do so (which is implemented by the :c:"
509524"macro:`Py_RETURN_NONE` macro)::"
510525msgstr ""
526+ "何ら有用な値を返さない関数 (:c:expr:`void` を返す関数) に対応する Python の関"
527+ "数は ``None`` を返さねばなりません。関数に ``None`` を返させるには、以下のよ"
528+ "うな慣用句を使います (この慣用句は :c:macro:`Py_RETURN_NONE` マクロに実装され"
529+ "ています)::"
511530
512531#: ../../extending/extending.rst:308
513532msgid ""
@@ -1696,6 +1715,13 @@ msgid ""
16961715"module, retrieve the value of this name, and then retrieve the pointer from "
16971716"the Capsule."
16981717msgstr ""
1718+ "Python はある拡張モジュールの C レベルの情報 (ポインタ) を別のモジュールに渡"
1719+ "すための特殊な機構: Capsule (カプセル)を提供しています。 Capsule はポインタ "
1720+ "(:c:expr:`void \\ *`) を記憶する Python のデータ型です。 Capsule は C API を介"
1721+ "してのみ生成したりアクセスしたりできますが、他の Python オブジェクトと同じよ"
1722+ "うに受け渡しできます。とりわけ、Capsule は拡張モジュールの名前空間内にある名"
1723+ "前に代入できます。他の拡張モジュールはこのモジュールを import でき、次に名前"
1724+ "を取得し、最後にCapsule へのポインタを取得します。"
16991725
17001726#: ../../extending/extending.rst:1180
17011727msgid ""
@@ -1721,6 +1747,12 @@ msgid ""
17211747"of runtime type-safety; there is no feasible way to tell one unnamed Capsule "
17221748"from another."
17231749msgstr ""
1750+ "どの方法を選ぶにしても、 Capsule の name を正しく設定することは重要です。 :c:"
1751+ "func:`PyCapsule_New` は name 引数 (:c:expr:`const char \\ *`) を取ります。 "
1752+ "``NULL`` を name に渡すことも許可されていますが、 name を設定することを強く推"
1753+ "奨します。正しく名前を付けられた Capsule はある程度の実行時型安全性を持ちま"
1754+ "す。名前を付けられていない Capsule を他の Capsule と区別する現実的な方法はあ"
1755+ "りません。"
17241756
17251757#: ../../extending/extending.rst:1193
17261758msgid ""
@@ -1752,6 +1784,13 @@ msgid ""
17521784"takes care of importing the module and retrieving its C API pointers; client "
17531785"modules only have to call this macro before accessing the C API."
17541786msgstr ""
1787+ "以下の例では、名前を公開するモジュールの作者にほとんどの負荷が掛かりますが、"
1788+ "よく使われるライブラリを作る際に適切なアプローチを実演します。このアプローチ"
1789+ "では、全ての C API ポインタ (例中では一つだけですが!) を、 Capsule の値とな"
1790+ "る :c:expr:`void` ポインタの配列に保存します。拡張モジュールに対応するヘッダ"
1791+ "ファイルは、モジュールの import と C API ポインタを取得するよう手配するマクロ"
1792+ "を提供します; クライアントモジュールは、C API にアクセスする前にこのマクロを"
1793+ "呼ぶだけです。"
17551794
17561795#: ../../extending/extending.rst:1211
17571796msgid ""
0 commit comments