diff --git a/locales/ja/LC_MESSAGES/messages.po b/locales/ja/LC_MESSAGES/messages.po index edaf28cdc..02734ccd4 100644 --- a/locales/ja/LC_MESSAGES/messages.po +++ b/locales/ja/LC_MESSAGES/messages.po @@ -10,7 +10,7 @@ msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-06-19 16:34+0000\n" -"PO-Revision-Date: 2024-11-03 06:00+0000\n" +"PO-Revision-Date: 2024-11-20 02:00+0000\n" "Last-Translator: moto kawasaki \n" "Language-Team: Japanese \n" @@ -19,7 +19,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.8.2\n" +"X-Generator: Weblate 5.9-dev\n" #: ../source/contribute.rst:5 msgid "Contribute to this guide" @@ -2644,7 +2644,7 @@ msgstr "" #: ../source/discussions/versioning.rst:158 #: ../source/specifications/version-specifiers.rst:114 msgid "Local version identifiers" -msgstr "ローカルバージョン指定子" +msgstr "ローカルバージョン識別子" #: ../source/discussions/versioning.rst:160 msgid "" @@ -24675,7 +24675,7 @@ msgstr "" #: ../source/specifications/version-specifiers.rst:43 msgid "Version scheme" -msgstr "バージョン枠組み" +msgstr "バージョン番号枠組み" #: ../source/specifications/version-specifiers.rst:45 msgid "" @@ -25532,10 +25532,15 @@ msgid "" "using the ``.`` character. This allows versions such as ``1.0+ubuntu-1`` to " "be normalized to ``1.0+ubuntu.1``." msgstr "" +"構成部分のセパレータとして ``.`` を使うことに加えて、" +"ローカルバージョン番号を使えば ``-`` や ``_`` " +"の使用も受け入れ可能です。標準形式は、 ``.`` " +"文字を使うことです。これによって、標準化すれば ``1.0+ubuntu.1`` となる ``1." +"0+ubuntu-1`` のようなバージョン番号も許容されます。" #: ../source/specifications/version-specifiers.rst:519 msgid "Preceding v character" -msgstr "" +msgstr "先駆する v の文字" #: ../source/specifications/version-specifiers.rst:521 msgid "" @@ -25545,10 +25550,15 @@ msgid "" "version. The same version with and without the ``v`` is considered " "equivalent." msgstr "" +"よくあるバージョン番号の表記方法である ``v1.0`` の形をサポートするために、" +"バージョン番号は単独の ``v`` の文字が先行していても構いません。この文字は、あ" +"らゆる目的において無視されなければならず、バージョン番号の標準化された形式で" +"は省略されるべきです。 ``v`` " +"の有無だけが異なるバージョン番号は、同一のものと見做されます。" #: ../source/specifications/version-specifiers.rst:528 msgid "Leading and Trailing Whitespace" -msgstr "" +msgstr "先行する空白文字や後続する空白文字" #: ../source/specifications/version-specifiers.rst:530 msgid "" @@ -25558,11 +25568,17 @@ msgid "" "be handled sensibly, such as a version like ``1.0\\n`` which normalizes to " "``1.0``." msgstr "" +"先行する空白文字や後続する空白文字は暗黙の裡に無視されなければならず、バージ" +"ョン番号の標準化された形式では除去されなければなりません。これには ``\"\"`` " +"・ ``\\t`` ・ ``\\n" +"`` ・ ``\\r`` ・ ``\\f`` ・ ``\\v`` が含まれます。これによって、標準化すれば " +"``1.0`` となる ``1.0\\n" +"`` のようなバージョン番号に見られる、偶然に入り込んだ空白文字を実用的に取り扱" +"うことができます。" #: ../source/specifications/version-specifiers.rst:537 -#, fuzzy msgid "Examples of compliant version schemes" -msgstr "規定に合致したバージョン番号の例を次に示す::" +msgstr "枠組みに合致したバージョン番号の例" #: ../source/specifications/version-specifiers.rst:539 msgid "" @@ -25573,6 +25589,12 @@ msgid "" "figuring out the relative order of versions, even though the rules above " "ensure all compliant tools will order them consistently." msgstr "" +"標準のバージョン番号の枠組みは、公開・非公開の Python プロジェクトにおける識" +"別の慣行を広い範囲で包含するように設計されています。実際上、ある単独のプロジ" +"ェクトでこの枠組みが提供するあらゆる自由度を使おうと試みるなら、上述のルール" +"に従うすべてのツールが首尾一貫して順序をつけることができる一方で、人間のユー" +"ザにとってはバージョン番号間の相対的な順序を解き明かすことに困難を感じること" +"になるでしょう。" #: ../source/specifications/version-specifiers.rst:546 msgid "" @@ -25581,36 +25603,41 @@ msgid "" "ensuring that the \"latest release\" and the \"latest stable release\" can " "be easily determined, both by human users and automated tools." msgstr "" +"この後に、プロジェクトがそのリリースを識別するために選択するかもしれない異な" +"るアプローチで、 \"最新リリース\" と \"最新のステーブルリリース\" を人間も自" +"動化ツールも簡単に決定できることが保証されたもののいくつかの例を示します。" #: ../source/specifications/version-specifiers.rst:551 -#, fuzzy msgid "Simple \"major.minor\" versioning::" -msgstr "一連番号によるバージョン付与" +msgstr "単純な \"メジャー.マイナー\" バージョン付け::" #: ../source/specifications/version-specifiers.rst:560 msgid "Simple \"major.minor.micro\" versioning::" -msgstr "" +msgstr "単純な \"メジャー.マイナー.マイクロ\" バージョン付け::" #: ../source/specifications/version-specifiers.rst:568 msgid "" "\"major.minor\" versioning with alpha, beta and candidate pre-releases::" -msgstr "" +msgstr "アルファ・ベータや公開候補 のようなプレリリースを伴う \"メジャー." +"マイナー\" バージョン付け::" #: ../source/specifications/version-specifiers.rst:580 msgid "" "\"major.minor\" versioning with developmental releases, release candidates " "and post-releases for minor corrections::" msgstr "" +"開発リリース 、リリース候補 " +"やポストリリースのある \"メジャー.マイナー\" バージョン付け::" #: ../source/specifications/version-specifiers.rst:595 msgid "" "Date based releases, using an incrementing serial within each year, skipping " "zero::" -msgstr "" +msgstr "ゼロを飛ばして各年の中で増加するシリアル値を使った日付ベースのリリース番号::" #: ../source/specifications/version-specifiers.rst:609 msgid "Summary of permitted suffixes and relative ordering" -msgstr "" +msgstr "許容される接尾辞と相対的な順序付けのまとめ" #: ../source/specifications/version-specifiers.rst:613 msgid "" @@ -25618,6 +25645,9 @@ msgid "" "process distribution metadata, rather than developers of Python " "distributions deciding on a versioning scheme." msgstr "" +"この節では、バージョニング方法を決めようとしている Python 配布物の開発者向け" +"というよりは、むしろ、一義的には配布物のメタデータを自動的に処理するツールの" +"作者に向けて書かれています。" #: ../source/specifications/version-specifiers.rst:617 msgid "" @@ -25625,6 +25655,9 @@ msgid "" "numeric value of the given epoch. If no epoch segment is present, the " "implicit numeric value is ``0``." msgstr "" +"バージョン識別子のエポック構成部分は、当該エポックの数値としての値に従って整" +"序されなければなりません。エポック構成部分が存在しない場合には、暗黙のうちに " +"``0`` の値と解釈します。" #: ../source/specifications/version-specifiers.rst:621 msgid "" @@ -25632,18 +25665,24 @@ msgid "" "as Python's tuple sorting when the normalized release segment is parsed as " "follows::" msgstr "" +"バージョン識別子のリリース構成部分は、" +"標準化されたリリース構成部分を解釈する時には以下のように Python " +"のタプルソーティングと同じ順序で格納されていなければなりません::" #: ../source/specifications/version-specifiers.rst:627 msgid "" "All release segments involved in the comparison MUST be converted to a " "consistent length by padding shorter segments with zeros as needed." -msgstr "" +msgstr "比較に関わるすべてのリリース構成部分は、必要に応じて不足する構成部分にゼロを" +"補填することで長さを一致させなければなりません。" #: ../source/specifications/version-specifiers.rst:630 msgid "" "Within a numeric release (``1.0``, ``2.7.3``), the following suffixes are " "permitted and MUST be ordered as shown::" msgstr "" +"リリース番号の数字部分 (``1.0`` や ``2.7.3``) の中では、後述の接尾辞が許され" +"ており、下に示す通りに順序付けをしなければなりません::" #: ../source/specifications/version-specifiers.rst:635 msgid "" @@ -25652,6 +25691,11 @@ msgid "" "same ``N`` for both a ``c`` and a ``rc`` in the same release segment as " "ambiguous and remain in compliance with the specification." msgstr "" +"``c`` が意味の上で ``rc`` と同等のものであると見做されていて、恰も本当に " +"``rc`` であるかのように並べ替えされる点を銘記してください。ツール群は、" +"同じリリース構成部分内に ``c`` と ``rc`` の両方に同一の ``N`` を付けたものが" +"来た場合には曖昧であるとしてこれを拒否しても構いませんが、これでも仕様には合" +"致しています。" #: ../source/specifications/version-specifiers.rst:640 msgid "" @@ -25659,12 +25703,16 @@ msgid "" "(``1.0rc1``, ``1.0c1``), the following suffixes are permitted and MUST be " "ordered as shown::" msgstr "" +"アルファ (``1.0a1``) 、ベータ (``1.0b1``) 、あるいはリリース候補 (``1.0rc1``" +", ``1.0c1``) の中では、後述の接尾辞が許されていて、示される通りに並べ替えられ" +"なければなりません::" #: ../source/specifications/version-specifiers.rst:646 msgid "" "Within a post-release (``1.0.post1``), the following suffixes are permitted " "and MUST be ordered as shown::" -msgstr "" +msgstr "ポストリリース (``1.0.post1``) の中では、後述の接尾辞が許されていて、示す通り" +"に並べ替えられなければなりません::" #: ../source/specifications/version-specifiers.rst:651 msgid "" @@ -25672,20 +25720,26 @@ msgid "" "used immediately following a numeric version (e.g. ``1.0.dev456``, ``1.0." "post1``)." msgstr "" +"バージョン番号の数字部分の直後に置く場合 (例えば ``1.0.dev456`` や ``1.0." +"post1``) であっても、 ``devN`` と ``postN`` " +"は、常にドットに後続しなければならないことを銘記してください。" #: ../source/specifications/version-specifiers.rst:655 msgid "" "Within a pre-release, post-release or development release segment with a " "shared prefix, ordering MUST be by the value of the numeric component." msgstr "" +"共通の先行部分を持つプレリリース構成部分、ポストリリース構成部分、あるいは開" +"発リリース構成部分の中で、数値部分の値に従って順序付けをしなければなりません" +"。" #: ../source/specifications/version-specifiers.rst:658 msgid "The following example covers many of the possible combinations::" -msgstr "" +msgstr "可能なバージョン番号の例を以下に示します::" #: ../source/specifications/version-specifiers.rst:683 msgid "Version ordering across different metadata versions" -msgstr "" +msgstr "相異なるメタデータバージョンを通してバージョン番号を順序付けする" #: ../source/specifications/version-specifiers.rst:685 msgid "" @@ -25693,6 +25747,10 @@ msgid "" "standard version identification or ordering scheme. However metadata v1.2 (:" "pep:`345`) does specify a scheme which is defined in :pep:`386`." msgstr "" +"メタデータ v1.0 (pep:`241`) および メタデータ (:pep:`314`) は、標準となるバー" +"ジョン番号の識別や順序付けの枠組みを指定していません。しかしながら、" +"メタデータ v1.2 (:pep:`345`) では、 :pep:`386` " +"で定義された枠組みを指定しています。" #: ../source/specifications/version-specifiers.rst:689 msgid "" @@ -25704,6 +25762,13 @@ msgid "" "requirements necessitate a standardization across one parsing mechanism to " "be used for all versions of a project." msgstr "" +"単純なインストーラ API の特性の故に、特定の配布物がどのバージョンのメタデータ" +"を使っているかをインストーラが意識することは不可能です。さらに、インストーラ" +"は、どのバージョンをインストールするべきであるかを決定するために、すべての、" +"または、可能な限り多くのバージョンのプロジェクトを含む合理的に優先順位付けさ" +"れたリストを作成することができるように要求されています。これらの要求事項によ" +"って、あるプロジェクトのすべてのバージョンにおいてひとつの解析メカニズムが使" +"われるような標準化が必要とされます。" #: ../source/specifications/version-specifiers.rst:697 msgid "" @@ -25714,17 +25779,23 @@ msgid "" "and ordering schemes if no versions complying with this specification are " "available." msgstr "" +"上記のことによって、この仕様では、全てのメタデータのバージョンに使われなけれ" +"ばならず、メタデータ v1.2 であってさえも :pep:`386` を上書きする形で使われな" +"ければなりません。ツール類は、この仕様に示された規則に従って解釈できないバー" +"ジョン番号をすべて無視するべきですが、この仕様に合致するバージョン番号がひと" +"つも利用可能でない時には、それぞれの実装で定義されたバージョン番号の解釈や順" +"序付けにフォールバックしても構いません。" #: ../source/specifications/version-specifiers.rst:703 msgid "" "Distribution users may wish to explicitly remove non-compliant versions from " "any private package indexes they control." -msgstr "" +msgstr "配布物のユーザは、自分が管理するプライベートなパッケージインデックスにおいて" +"、合致しないバージョン番号を明示的に除去しても構いません。" #: ../source/specifications/version-specifiers.rst:708 -#, fuzzy msgid "Compatibility with other version schemes" -msgstr "universal wheelsの取り扱い" +msgstr "他のバージョン番号の枠組みとの互換性" #: ../source/specifications/version-specifiers.rst:710 msgid "" @@ -25734,6 +25805,11 @@ msgid "" "the metadata while the translated public version is published in the version " "field." msgstr "" +"プロジェクトの中には、この使用で定義された公開のバージョン番号枠組みに合致す" +"るために翻訳を要求するようなバージョン番号枠組みを使うことを選択するものもあ" +"ります。そのような場合には、当該プロジェクトに特有のバージョン番号をメタデー" +"タに格納しておく一方で、公開のバージョン番号を version " +"フィールドに置くことができます。" #: ../source/specifications/version-specifiers.rst:715 msgid "" @@ -25741,6 +25817,10 @@ msgid "" "ordering of published releases, while still allowing developers to use the " "internal versioning scheme they prefer for their projects." msgstr "" +"これによって、自動化された配布物ツール類が公開されたリリース群の一貫性のある" +"形で正確な順序付けを提供することができる一方、開発者側では依然として自分たち" +"のプロジェクト向けに好みの内部的なバージョン番号枠組みを使うことが許されます" +"。" #: ../source/specifications/version-specifiers.rst:723 msgid "" @@ -25752,6 +25832,12 @@ msgid "" "on other distributions, and when publishing a distribution that others rely " "on." msgstr "" +"`セマンティックバージョニング`_ は、リリース番号の異なる要素の重要性に関して" +"、この仕様以前から慣例として認められた人気のあるバージョン番号の識別の枠組み" +"です。あるプロジェクトがセマンティックバージョニングの詳細を受け入れないこと" +"を選択した場合であっても、他の配布物に依存する時や他のプロジェクトが依存する" +"配布物を公開する時に発生する多くの課題を網羅するためにも、この枠組みは理解し" +"ておくに値します。" #: ../source/specifications/version-specifiers.rst:730 msgid "" @@ -25760,6 +25846,10 @@ msgid "" "specification) are fully compatible with the version scheme defined in this " "specification, and abiding by these aspects is encouraged." msgstr "" +"(2.0.0 仕様の1-8 節の) セマンティックバージョニングの (\"メジャー.マイナー." +"マイクロ\" としてこの仕様に記されている) \"メジャー.マイナー.パッチ\" の形は" +"、この仕様で定義されるバージョン番号枠組みと完全に互換であり、この形を受容す" +"ることが推奨されています。" #: ../source/specifications/version-specifiers.rst:735 msgid "" @@ -25767,6 +25857,10 @@ msgid "" "sign (builds - clause 11) are *not* compatible with this specification and " "are not permitted in the public version field." msgstr "" +"ハイフンを含むセマンティックバージョン (pre-releases - clause 10) " +"やプラス記号を含むセマンティックバージョン (builds - clause 11) は、" +"この仕様と *互換性がなく* " +"、公開のバージョン番号フィールドでは許されていません。" #: ../source/specifications/version-specifiers.rst:739 msgid "" @@ -25774,16 +25868,18 @@ msgid "" "labels to compatible public versions is to use the ``.devN`` suffix to " "specify the appropriate version order." msgstr "" +"ソースラベルに基づいたそのようなセマンティックバージョニングを公開バージョン" +"番号と互換性のあるものに翻訳する可能なメカニズムの一つは、 ``.devN`` " +"接尾辞を使って適切なバージョン番号の順序を指定することです。" #: ../source/specifications/version-specifiers.rst:743 msgid "" "Specific build information may also be included in local version labels." -msgstr "" +msgstr "特定のビルド情報も、ローカルのバージョン番号のラベルに含めても構いません。" #: ../source/specifications/version-specifiers.rst:749 -#, fuzzy msgid "DVCS based version labels" -msgstr "日付ベースのバージョン付与" +msgstr "DVCS に基づいたバージョン番号のラベル" #: ../source/specifications/version-specifiers.rst:751 msgid "" @@ -25792,6 +25888,10 @@ msgid "" "As hashes cannot be ordered reliably such versions are not permitted in the " "public version field." msgstr "" +"多くのビルドツールは、バージョン識別子に識別のためのハッシュ値を付加するため" +"に、 Git や Mercurial のような分散バージョン管理システムを統合しています。ハ" +"ッシュ値は信頼できる形で順序付けすることができないので、そのようなバージョン" +"番号は公開のバージョンフィールドでは許されません。" #: ../source/specifications/version-specifiers.rst:756 msgid "" @@ -25799,16 +25899,19 @@ msgid "" "uniquely identify such releases for publication, while the original DVCS " "based label can be stored in the project metadata." msgstr "" +"セマンティックバージョニングの場合と同様に、元の DVCS ベースのラベルをプロジ" +"ェクトのメタデータに格納することができない一方で、そのようなリリースを公開す" +"る際に一意に識別するために、公開の ``.devN`` 接尾辞をつけても構いません。" #: ../source/specifications/version-specifiers.rst:760 msgid "" "Identifying hash information may also be included in local version labels." -msgstr "" +msgstr "ハッシュ値の情報を識別することは、ローカルのバージョン番号ラベルに含めても構" +"いません。" #: ../source/specifications/version-specifiers.rst:764 -#, fuzzy msgid "Olson database versioning" -msgstr "日付ベースのバージョン付与" +msgstr "Olson データベースによるバージョニング" #: ../source/specifications/version-specifiers.rst:766 msgid "" @@ -25816,6 +25919,9 @@ msgid "" "Olson timezone database versioning scheme: the year followed by a lowercase " "character indicating the version of the database within that year." msgstr "" +"``pytz`` プロジェクトは、バージョニング方法を対応する Olson " +"タイムゾーンデータベースのバージョニング方法から継承しています: 年と、それに" +"後続する小文字の文字でその年の中でのデータベースのバージョンを示すもの。" #: ../source/specifications/version-specifiers.rst:770 msgid "" @@ -25824,46 +25930,53 @@ msgid "" "release) and is incremented with each subsequent database update within the " "year." msgstr "" +"これは、 ``.`` として (訳註、標準に) " +"適合する公開のバージョン識別子に翻訳することができ、そこでは ('' " +"リリースに対して) シリアル番号が0か1から始まって、その年の内にデータベース" +"が更新される度に1づつ増加されます。" #: ../source/specifications/version-specifiers.rst:775 msgid "" "As with other translated version identifiers, the corresponding Olson " "database version could be recorded in the project metadata." msgstr "" +"他の翻訳されたバージョン識別子と同様に、対応する Olson データベースのバージョ" +"ン番号は、そのプロジェクトのメタデータに記録しておくことが可能です。" #: ../source/specifications/version-specifiers.rst:782 msgid "" "A version specifier consists of a series of version clauses, separated by " "commas. For example::" -msgstr "" +msgstr "バージョン指定子は、一連のバージョン番号節をコンマで区切ったものから構成され" +"ます。例えば::" #: ../source/specifications/version-specifiers.rst:787 msgid "The comparison operator determines the kind of version clause:" -msgstr "" +msgstr "比較演算子がバージョン番号節の種類を決定します:" #: ../source/specifications/version-specifiers.rst:789 msgid "``~=``: `Compatible release`_ clause" -msgstr "" +msgstr "``~=``: `互換性のあるリリース `_ 節" #: ../source/specifications/version-specifiers.rst:790 msgid "``==``: `Version matching`_ clause" -msgstr "" +msgstr "``==``: `バージョン番号のマッチング `_ 節" #: ../source/specifications/version-specifiers.rst:791 msgid "``!=``: `Version exclusion`_ clause" -msgstr "" +msgstr "``!=``: `バージョンの除外 `_ 節" #: ../source/specifications/version-specifiers.rst:792 msgid "``<=``, ``>=``: `Inclusive ordered comparison`_ clause" -msgstr "" +msgstr "``<=``, ``>=``: `境界を含む順序比較 `_ 節" #: ../source/specifications/version-specifiers.rst:793 msgid "``<``, ``>``: `Exclusive ordered comparison`_ clause" -msgstr "" +msgstr "``<``, ``>``: `境界を含まない順序比較 `_ 節" #: ../source/specifications/version-specifiers.rst:794 msgid "``===``: `Arbitrary equality`_ clause." -msgstr "" +msgstr "``===``: `あらゆる意味での同一性 `_ clause." #: ../source/specifications/version-specifiers.rst:796 msgid "" @@ -25871,12 +25984,16 @@ msgid "" "version must match all given version clauses in order to match the specifier " "as a whole." msgstr "" +"コンマ (\",\") は、論理 **積** 演算子と同一のものです: 候補バージョン番号は、" +"全体として指定子に合致するために、すべての与えられた節が合致しなければなりま" +"せん。" #: ../source/specifications/version-specifiers.rst:800 msgid "" "Whitespace between a conditional operator and the following version " "identifier is optional, as is the whitespace around the commas." -msgstr "" +msgstr "条件演算子とその後のバージョン識別子の間の空白文字は、コンマの周囲の空白文字" +"と同様にオプションです。" #: ../source/specifications/version-specifiers.rst:803 msgid "" @@ -25886,6 +26003,11 @@ msgid "" "releases are considered as candidate versions SHOULD be handled as described " "in `Handling of pre-releases`_." msgstr "" +"複数の候補バージョンがバージョン識別子に合致する時には、好ましいバージョンは" +"、標準の `バージョン番号枠組み `_ で定義された首尾一貫する順" +"序付けによって決定される最新のバージョンです。プレリリースが候補バージョンだ" +"と見做されるか否かは、 `プレリリースの取り扱い `_ " +"に記述されているとおりに扱われるべきです。" #: ../source/specifications/version-specifiers.rst:809 msgid "" @@ -25893,10 +26015,13 @@ msgid "" "permitted in version specifiers, and local version labels MUST be ignored " "entirely when checking if candidate versions match a given version specifier." msgstr "" +"以下で特に注記される場合を除いて、バージョン指定子内ではローカルバージョン指" +"定子は許されてはならず、あるバージョン指定子に合致する候補バージョンかどうか" +"を調べる際にはローカルバージョンラベルは完全に無視されなければなりません。" #: ../source/specifications/version-specifiers.rst:818 msgid "Compatible release" -msgstr "" +msgstr "互換性のあるリリース " #: ../source/specifications/version-specifiers.rst:820 msgid "" @@ -25904,6 +26029,9 @@ msgid "" "``~=`` and a version identifier. It matches any candidate version that is " "expected to be compatible with the specified version." msgstr "" +"互換性のあるリリース節は、互換リリース演算子 ``~=`` とバージョン識別子から構" +"成されます。指定されたバージョンと互換性があるものと期待されるすべての候補バ" +"ージョンに合致します。" #: ../source/specifications/version-specifiers.rst:824 msgid "" @@ -25911,12 +26039,16 @@ msgid "" "`Version scheme`_. Local version identifiers are NOT permitted in this " "version specifier." msgstr "" +"指定されたバージョン識別子は、 `バージョン番号枠組み , 2023, 2024. # 大王叫我来巡山 , 2024. # Peter Shen , 2024. +# hello_wac , 2024. msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-10-30 00:39+0000\n" -"PO-Revision-Date: 2024-09-21 00:40+0000\n" -"Last-Translator: 大王叫我来巡山 \n" +"PO-Revision-Date: 2024-11-12 08:00+0000\n" +"Last-Translator: hello_wac \n" "Language-Team: Chinese (Simplified Han script) \n" "Language: zh_Hans\n" @@ -41,11 +41,11 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.8-dev\n" +"X-Generator: Weblate 5.8.2\n" #: ../source/contribute.rst:5 msgid "Contribute to this guide" -msgstr "为指南作贡献" +msgstr "OOp" #: ../source/contribute.rst:7 msgid "" @@ -746,9 +746,8 @@ msgid "Configuration management" msgstr "配置管理" #: ../source/discussions/distribution-package-vs-import-package.rst:5 -#, fuzzy msgid "Distribution package vs. import package" -msgstr "发行版与导入包比较" +msgstr "分发包与导入包比较" #: ../source/discussions/distribution-package-vs-import-package.rst:7 msgid "" @@ -757,6 +756,9 @@ msgid "" "related meanings in Python packaging, \"distribution package\" and \"import " "package\"." msgstr "" +"多个不同的概念通常会用 \"package\" 一词来表示。本页面将澄清 Python 打包管理中" +"涉及的两个概念,他们既相关又有不同的含义,以及他们之间的区别,即 \"分发包" +"\"(distribution package)和 \"导入包\"(import package)。" #: ../source/discussions/distribution-package-vs-import-package.rst:13 msgid "What's a distribution package?" @@ -773,6 +775,12 @@ msgid "" "Alternatively, the term \"distribution package\" can be used to refer to a " "specific file that contains a certain version of a project." msgstr "" +"分发包(distribution package)是可安装的一段软件。通常情况下,它与 \"项目" +"\"(project)同义。当你输入 ``pip install pkg`` ,或在 ``pyproject.toml`` 文" +"件中写入 ``dependencies = [\"pkg\"]`` 时, ``pkg`` 就是一个分发包的名称。当你" +"在 PyPI_(目前最广为人知的 Python 库和工具的集中安装源)上搜索或浏览时,所看" +"到的列表就是分发包的列表。另外,\"分发包\" 这个术语也可以用来指代包含项目特定" +"版本的某个文件。" #: ../source/discussions/distribution-package-vs-import-package.rst:24 msgid "" @@ -781,6 +789,9 @@ msgid "" "by the system package manager of the `Linux distribution `_, which " "is a different meaning." msgstr "" +"请注意,在 Linux 领域中,“分发软件包”通常缩写为 “distro package” 或简单称为 " +"“package”,指的是由 ` Linux 发行版 `_ 的系统包管理器提供的内容,这" +"与 Python 中的含义不同。" #: ../source/discussions/distribution-package-vs-import-package.rst:31 msgid "What's an import package?" @@ -796,6 +807,11 @@ msgid "" "is a directory on the file system, containing modules as ``.py`` files and " "subpackages as subdirectories." msgstr "" +"导入包(import package)是一个 Python 模块。因此,当你在 Python 代码中编写 " +"``import pkg`` 或 ``from pkg import func`` 时, ``pkg`` 就是导入包的名称。更" +"准确地说,导入包是可以包含子模块的特殊 Python 模块。例如, ``numpy`` 包包含" +"像 ``numpy.linalg`` 和 ``numpy.fft`` 这样的模块。通常,导入包是文件系统中的一" +"个目录,其中包含作为 ``.py`` 文件的模块和作为子目录的子包。" #: ../source/discussions/distribution-package-vs-import-package.rst:42 msgid "" @@ -824,6 +840,9 @@ msgid "" "blindly install the PyPI package ``foo`` if you see ``import foo``; this may " "install an unintended, and potentially even malicious package.)" msgstr "" +"然而,这只是一种约定。PyPI 和其他包索引 **并不强制要求** 分发包的名称与其提供" +"的导入包之间存在任何关系。(其结果是,当你看到 ``import foo`` 时,不能盲目地" +"安装 PyPI 包 ``foo`` ;这样可能会安装一个非预期的,甚至是恶意的包。)" #: ../source/discussions/distribution-package-vs-import-package.rst:59 msgid "" @@ -836,6 +855,11 @@ msgid "" "generally, a fork of an existing library is a common reason for differing " "names between the distribution package and the import package." msgstr "" +"一个分发包可以提供一个名称不同的导入包。一个例子是广受欢迎的图像处理库 " +"Pillow_ 。它的分发包名称是 ``Pillow``,但它提供的导入包名称是 ``PIL``。这是出" +"于历史原因:Pillow 最初是 PIL 库的一个分支,因此它保留了 ``PIL`` 作为导入名" +"称,以便现有的 PIL 用户可以轻松切换到 Pillow 。更普遍来说,现有库的分支是导致" +"分发包和导入包名称不同的常见原因。" #: ../source/discussions/distribution-package-vs-import-package.rst:69 msgid "" @@ -844,6 +868,9 @@ msgid "" "packages with the same name can be provided by several distribution " "packages. Again, forks are a common reason for this." msgstr "" +"在特定的包索引(如 PyPI)上,分发包名称必须是唯一的。另一方面,导入包则没有这种" +"要求。多个分发包可以提供同名的导入包。同样地,分支(fork)是导致这种情况的常" +"见原因。" #: ../source/discussions/distribution-package-vs-import-package.rst:74 msgid "" @@ -852,10 +879,13 @@ msgid "" "which provides both an ``attrs`` import package with a newer API, and an " "``attr`` import package with an older but supported API." msgstr "" +"相反,一个分发包也可以提供多个导入包,尽管这种情况较为少见。一个例子是 " +"attrs_ 分发包,它提供了一个带有较新 API 的 ``attrs`` 导入包,以及一个较旧但仍" +"受支持的 ``attr`` 导入包。" #: ../source/discussions/distribution-package-vs-import-package.rst:81 msgid "How do distribution package names and import package names compare?" -msgstr "" +msgstr "分发包名称和导入包名称如何比较?" #: ../source/discussions/distribution-package-vs-import-package.rst:83 msgid "" @@ -864,6 +894,9 @@ msgid "" "[#non-identifier-mod-name]_. In particular, they use underscores ``_`` as " "word separator and they are case-sensitive." msgstr "" +"导入包的名称应为有效的 Python 标识符(具体规则可以在 Python 文档中找到::ref:" +"``)[#non-identifier-mod-name]_ 。特别地,它们使用下划" +"线 ``_`` 作为单词分隔符,并且区分大小写。" #: ../source/discussions/distribution-package-vs-import-package.rst:88 msgid "" @@ -875,6 +908,11 @@ msgid "" "``pip install awesome-package`` (the precise rules are given in the :ref:" "`name normalization specification `)." msgstr "" +"另一方面,分发包可以使用连字符 ``-`` 或下划线 ``_`` 。它们还可以包含点号 ``." +"`` ,这有时用于打包 :ref:`命名空间包` 的子包。" +"对于大多数用途,它们对大小写和 ``-`` 与 ``_`` 的区别不敏感,例如, ``pip " +"install Awesome_Package`` 和 ``pip install awesome-package`` 是相同的(具体规" +"则可以在 ```` 名称规范中找到)。" #: ../source/discussions/distribution-package-vs-import-package.rst:101 msgid "" @@ -882,6 +920,8 @@ msgid "" "have a valid Python identifier as their name, using :doc:`importlib `, this is vanishingly rare and strongly discouraged." msgstr "" +"尽管从技术上讲,通过使用 :doc:`importlib ` 可以导入" +"名称不是有效 Python 标识符的包/模块,但这种情况极为罕见且强烈不推荐。" #: ../source/discussions/index.rst:4 msgid "" @@ -935,8 +975,8 @@ msgid "" "breaks the compatibility of your project with v2 of 'A' and later, so it " "makes sense to not allow v2:" msgstr "" -"项目A在v2版本中添加了一个改变,该改变将打破你项目向后的兼容性,所以排除v2版本" -"是合理的:" +"也可以了解到,项目 'A' 在其 v2 版本中引入了一个更改,破坏了你的项目与 'A' 的 " +"v2 及以后的版本的兼容性,因此不允许使用 v2 是有意义的:" #: ../source/discussions/install-requires-vs-requirements.rst:49 msgid "" @@ -1025,15 +1065,14 @@ msgstr "" "caremad.io/posts/2013/07/setup-vs-requirement/ 。" #: ../source/discussions/package-formats.rst:5 -#, fuzzy msgid "Package Formats" -msgstr "上传软件包" +msgstr "包的格式" #: ../source/discussions/package-formats.rst:7 msgid "" "This page discusses the file formats that are used to distribute Python " "packages and the differences between them." -msgstr "" +msgstr "本页讨论了用于分发 Python 包的文件格式及其之间的区别。" #: ../source/discussions/package-formats.rst:10 msgid "" @@ -1046,11 +1085,16 @@ msgid "" "publishing a package on PyPI (or elsewhere), you should always upload both " "an sdist and one or more wheel." msgstr "" +"在像 PyPI_ 这样的包索引中,你会找到两种格式的文件:**源代码分发包**(简称 " +"**sdists**)和 **二进制分发包**,通常称为 **wheels**。例如,`PyPI 上的 pip " +"23.3.1 页面 `_ 允许你下载两个文件,``pip-23.3.1.tar.gz`` 和 " +"``pip-23.3.1-py3-none-any.whl``。前者是一个 sdist,后者是一个 wheel。如下面所" +"解释的,这两者有不同的用途。当在 PyPI(或其他地方)发布包时,你应该始终上传一" +"个 sdist 和一个或多个 wheel 文件。" #: ../source/discussions/package-formats.rst:21 -#, fuzzy msgid "What is a source distribution?" -msgstr "什么是分发包?" +msgstr "什么是源分发?" #: ../source/discussions/package-formats.rst:23 msgid "" @@ -1062,6 +1106,11 @@ msgid "" "INFO`` file follows the format specified in :ref:`core-metadata` and is not " "intended to be written by hand [#core-metadata-format]_." msgstr "" +"从概念上讲,源代码分发包是原始形式的源代码归档。具体来说,sdist 是一个 ``." +"tar.gz`` 压缩包,包含源代码以及一个额外的特殊文件 ``PKG-INFO`` ,该文件存储项" +"目的元数据。这个文件的存在帮助打包工具提高效率,因为它不需要自己计算元数据。 " +"``PKG-INFO`` 文件遵循 :ref:`core-metadata` 中规定的格式,并不打算手动编写 " +"[#core-metadata-format]_ 。" #: ../source/discussions/package-formats.rst:31 msgid "" @@ -1070,6 +1119,10 @@ msgid "" "(like Linux and macOS), or :ref:`the command line interface of Python's " "tarfile module ` on any platform." msgstr "" +"因此,你可以通过使用标准的工具解压缩 sdist 来检查其内容,这些工具用于处理 " +"tar 归档文件,例如在 UNIX 平台(如 Linux 和 macOS)上使用 ``tar -xvf`` ,或者" +"在任何平台上使用 :ref:`Python tarfile 模块的命令行界面 ` 。" #: ../source/discussions/package-formats.rst:36 msgid "" @@ -1081,28 +1134,37 @@ msgid "" "Homebrew and MacPorts on macOS, ...), who, for various reasons, may prefer " "them over, e.g., pulling from a Git repository." msgstr "" +"Sdists 在打包生态系统中有多个用途。当标准的 Python 包安装工具 :ref:`pip` 无法" +"找到要安装的 wheel 时,它会回退到下载源代码分发包,从中编译一个 wheel 并安装" +"这个 wheel。此外,sdists 经常作为下游打包者(如 Linux 发行版、Conda、macOS 上" +"的 Homebrew 和 MacPorts 等)的包源,因为各种原因,他们可能会更倾向于使用源代" +"码分发包,而不是例如从 Git 仓库中拉取代码。" #: ../source/discussions/package-formats.rst:44 msgid "" "A source distribution is recognized by its file name, which has the form :" "samp:`{package_name}-{version}.tar.gz`, e.g., ``pip-23.3.1.tar.gz``." msgstr "" +"源分发通过其文件名识别,其格式为: :samp:`{package_name}-{version}.tar.gz`," +"例如 ``pip-23.3.1.tar.gz`` 。" #: ../source/discussions/package-formats.rst:50 msgid "" "If you want technical details on the sdist format, read the :ref:`sdist " "specification `." msgstr "" +"如果您需要有关 sdist 格式的技术细节,请阅读: :ref:`sdist 规范 ` 。" #: ../source/discussions/package-formats.rst:55 msgid "What is a wheel?" -msgstr "" +msgstr "什么是 wheel ?" #: ../source/discussions/package-formats.rst:57 msgid "" "Conceptually, a wheel contains exactly the files that need to be copied when " "installing the package." -msgstr "" +msgstr "从概念上讲,wheel 包含在安装包时所需要复制的文件。" #: ../source/discussions/package-formats.rst:60 msgid "" @@ -1113,6 +1175,10 @@ msgid "" "files) but compiled, executable code (like ``.so`` files on Linux or DLLs on " "Windows)." msgstr "" +"对于包含 :term:`扩展模块 ` 的包(这些模块用 C、C++ 和 Rust " +"等编译语言编写,需要编译成平台相关的机器代码),sdists 和 wheels 之间存在很大" +"区别。对于这些包,wheels 不包含源代码(如 C 源文件),而是包含已编译的可执行" +"代码(例如 Linux 上的 ``.so`` 文件或 Windows 上的 DLL 文件)。" #: ../source/discussions/package-formats.rst:66 msgid "" @@ -1123,6 +1189,10 @@ msgid "" "Python interpreter (unless the :ref:`Python stable ABI ` " "is used)." msgstr "" +"此外,虽然每个版本的项目只有一个 sdist,但可能有多个 wheels。同样,这在扩展模" +"块的上下文中最为相关。扩展模块的编译代码与操作系统和处理器架构相关,通常还与 " +"Python 解释器的版本相关(除非使用 :ref:`Python 稳定 ABI ` )。" #: ../source/discussions/package-formats.rst:72 msgid "" @@ -1131,6 +1201,9 @@ msgid "" "versions. Python is an interpreted language, which does not need ahead-of-" "time compilation, so wheels contain ``.py`` files just like sdists." msgstr "" +"对于纯 Python 包,sdists 和 wheels 之间的区别较小。通常情况下,所有平台和 " +"Python 版本共享一个单一的 wheel。Python 是一种解释型语言,不需要预编译,因此 " +"wheels 和 sdists 一样,包含 ``.py`` 文件。" #: ../source/discussions/package-formats.rst:77 msgid "" @@ -1140,6 +1213,10 @@ msgid "" "Python version instead of one single wheel. Instead, installers like :ref:" "`pip` generate them while installing the package." msgstr "" +"如果你对 ``.pyc`` 字节码文件有所疑问:它们不包含在 wheels 中,因为生成它们的" +"成本很低,而且包含它们会不必要地迫使大量包为每个 Python 版本分发一个 wheel," +"而不是一个单一的 wheel。相反,像 :ref:`pip` 这样的安装工具会在安装包时生成这" +"些文件。" #: ../source/discussions/package-formats.rst:83 msgid "" @@ -1152,6 +1229,11 @@ msgid "" "along with a hash of their content, as a safety check of the download's " "integrity." msgstr "" +"尽管如此,即使对于纯 Python 项目,sdists 和 wheels 之间仍然存在重要的区别。" +"Wheels 的目的是包含要安装的内容,并且不包含其他内容。特别是,wheels 不应包含" +"测试和文档,而 sdists 通常会包含这些。此外,wheel 格式比 sdist 更复杂。例如," +"它包含一个特殊文件—— ``RECORD`` ,该文件列出了 wheel 中的所有文件及其内容的哈" +"希值,用作下载完整性的安全检查。" #: ../source/discussions/package-formats.rst:91 msgid "" @@ -1166,6 +1248,13 @@ msgid "" "for your users, since a wheel is directly installable. By only including " "files that must be installed, wheels also make for smaller downloads." msgstr "" +"乍一看,你可能会想,\"纯粹的基础\" Python 项目是否真的需要 wheels。请记住,由" +"于 sdists 的灵活性,像 pip 这样的安装工具不能直接从 sdists 安装——它们需要首先" +"通过调用 sdist 指定的 :term:`build backend` 来构建一个 wheel(构建后端在构建 " +"wheel 时可能会执行各种转换,例如编译 C 扩展)。因此,即使是纯 Python 项目,你" +"也应该始终将 *sdist* 和 *wheel* 都上传到 PyPI 或其他包索引。这会使你的用户安" +"装速度更快,因为 wheel 可以直接安装。通过只包含必须安装的文件,wheels 也使得" +"下载文件更小。" #: ../source/discussions/package-formats.rst:102 msgid "" @@ -1176,6 +1265,11 @@ msgid "" "interface of Python's zipfile module `. This can " "be very useful to check that the wheel includes all the files you need it to." msgstr "" +"在技术层面上,wheel 是一个 ZIP 归档文件(与 sdist 的 TAR 归档文件不同)。你可" +"以通过像处理普通 ZIP 归档文件一样解压它来检查其内容,例如,在 Linux 和 macOS " +"等 UNIX 平台上使用 ``unzip`` ,在 Windows 上使用 Powershell 的 ``Expand-" +"Archive`` ,或使用 :ref:`Python zipfile 模块的命令行界面 ` 。这对于检查 wheel 是否包含你需要的所有文件非常有用。" #: ../source/discussions/package-formats.rst:109 msgid "" @@ -1185,6 +1279,10 @@ msgid "" "equivalent of ``PKG-INFO`` in sdists, as well as ``RECORD``. This can be " "useful to ensure no files are missing from your wheels." msgstr "" +"在 wheel 中,你会找到包的文件,以及一个名为 :samp:`{package_name}-{version}." +"dist-info` 的额外目录。该目录包含多个文件,其中包括 ``METADATA`` 文件,它相当" +"于 sdist 中的 ``PKG-INFO`` ,以及 ``RECORD`` 文件。这对于确保你的 wheel 中没" +"有缺失文件非常有用。" #: ../source/discussions/package-formats.rst:115 msgid "" @@ -1194,6 +1292,10 @@ msgid "" "the wheel is compatible with. For example, the name ``pip-23.3.1-py3-none-" "any.whl`` means that:" msgstr "" +"一个 wheel 的文件名(忽略一些很少使用的特性)看起来是这样的: :samp:" +"`{package_name}-{version}-{python_tag}-{abi_tag}-{platform_tag}.whl`。这种命" +"名约定用于标识 wheel 与哪些平台和 Python 版本兼容。例如,文件名 ``pip-23.3.1-" +"py3-none-any.whl`` 意味着:" #: ../source/discussions/package-formats.rst:121 msgid "" @@ -1201,31 +1303,36 @@ msgid "" "whether CPython, the most widely used Python implementation, or an " "alternative implementation like PyPy_;" msgstr "" +"( ``py3`` )这个 wheel 可以安装在任何 Python 3 的实现上,无论是最广泛使用的 " +"Python 实现 CPython,还是像 PyPy_ 这样的替代实现;" #: ../source/discussions/package-formats.rst:124 msgid "(``none``) It does not depend on the Python version;" -msgstr "" +msgstr "( ``none`` ) 不依赖于 Python 版本;" #: ../source/discussions/package-formats.rst:125 msgid "(``any``) It does not depend on the platform." -msgstr "" +msgstr "(``any``) 它不依赖于任何平台。" #: ../source/discussions/package-formats.rst:127 msgid "" "The pattern ``py3-none-any`` is common for pure Python projects. Packages " "with extension modules typically ship multiple wheels with more complex tags." msgstr "" +"``py3-none-any`` 这个模式通常用于纯 Python 项目。包含扩展模块的包通常会提供多" +"个具有更复杂标签的 wheels 。" #: ../source/discussions/package-formats.rst:130 msgid "" "All technical details on the wheel format can be found in the :ref:`wheel " "specification `." msgstr "" +"有关 wheel 格式的所有技术细节均可在: :ref:`wheel 规范 ` 中找到。" #: ../source/discussions/package-formats.rst:138 -#, fuzzy msgid "What about eggs?" -msgstr "那其他命令呢?" +msgstr "那么 eggs 格式呢?" #: ../source/discussions/package-formats.rst:140 msgid "" @@ -1233,14 +1340,14 @@ msgid "" "format. It should not be used anymore. Since August 2023, PyPI `rejects egg " "uploads `_." msgstr "" +"\"Egg\" 是一种旧的包格式,已经被 wheel 格式取代。现在不应再使用它。从 2023 " +"年 8 月起,PyPI 已经 `拒绝上传 egg 格式包 `_ 。" #: ../source/discussions/package-formats.rst:144 -#, fuzzy msgid "Here's a breakdown of the important differences between wheel and egg." msgstr "下面是关于 :term:`Wheel` 和 :term:`Egg` 之间的重要区别。" #: ../source/discussions/package-formats.rst:146 -#, fuzzy msgid "" "The egg format was introduced by :ref:`setuptools` in 2004, whereas the " "wheel format was introduced by :pep:`427` in 2012." @@ -1249,7 +1356,6 @@ msgstr "" "是由 :pep:`427` 在2012年引入。" #: ../source/discussions/package-formats.rst:149 -#, fuzzy msgid "" "Wheel has an :doc:`official standard specification `. Egg did not." @@ -1258,19 +1364,17 @@ msgstr "" "format>`,而 :term:`Egg` 没有。" #: ../source/discussions/package-formats.rst:152 -#, fuzzy msgid "" "Wheel is a :term:`distribution ` format, i.e a " "packaging format. [#wheel-importable]_ Egg was both a distribution format " "and a runtime installation format (if left zipped), and was designed to be " "importable." msgstr "" -":term:`Wheel`是一种 :term:`distribution `格式,也就是一" -"种打包格式。[1]_ :term:`Egg`既是一种发行格式,也是一种运行时的安装格式(如果" -"留下压缩包),并被设计为可导入。" +":term:`Wheel`是一种 :term:`分发 `格式,也就是一种打包格" +"式。 [1]_ :term:`Egg` 既是一种发行格式,也是一种运行时的安装格式(如果留下压" +"缩包),并被设计为可导入。" #: ../source/discussions/package-formats.rst:156 -#, fuzzy msgid "" "Wheel archives do not include ``.pyc`` files. Therefore, when the " "distribution only contains Python files (i.e. no compiled extensions), and " @@ -1278,21 +1382,19 @@ msgid "" "\"universal\", similar to an :term:`sdist `." msgstr "" -":term:`Wheel`档案不包括 .pyc 文件。因此,当发行版只包含 Python 文件(即没有编" -"译的扩展),并且与 Python 2 和 3 兼容时,wheel 有可能是 「通用」的,类似于 :" -"term:`sdist `。" +":term:`Wheel`格式不包括 ``.pyc`` 文件。因此,当发行版只包含 Python 文件(即没" +"有编译的扩展),并且与 Python 2 和 3 兼容时,wheel 有可能是 「通用」的,类似" +"于 :term:`sdist ` (源分发)。" #: ../source/discussions/package-formats.rst:161 -#, fuzzy msgid "" "Wheel uses standard :ref:`.dist-info directories `. Egg used ``.egg-info``." msgstr "" -":term:`Wheel` 使用 :pep:`PEP376-compliant <376>```.dist-info`` 目录。 Egg 使" +"Wheel 使用标准 :ref:`.dist-info 目录 ` 。Egg 使" "用 ``.egg-info`` 。" #: ../source/discussions/package-formats.rst:164 -#, fuzzy msgid "" "Wheel has a :ref:`richer file naming convention `. A " "single wheel archive can indicate its compatibility with a number of Python " @@ -1302,16 +1404,14 @@ msgstr "" "可以表明它与许多 Python 语言版本和工具、ABI 以及系统架构的兼容性。" #: ../source/discussions/package-formats.rst:168 -#, fuzzy msgid "" "Wheel is versioned. Every wheel file contains the version of the wheel " "specification and the implementation that packaged it." msgstr "" -":term:`Wheel`是有版本的。每个 wheel 文件都包含 wheel 规范的版本和包装它的工" +":term:`Wheel` 是有版本的。每个 wheel 文件都包含 wheel 规范的版本和包装它的工" "具。" #: ../source/discussions/package-formats.rst:171 -#, fuzzy msgid "" "Wheel is internally organized by `sysconfig path type `_, therefore making it " @@ -1329,6 +1429,10 @@ msgid "" "backend, typically ``[project]`` in ``pyproject.toml``, and translated by " "the build backend into ``PKG-INFO``." msgstr "" +"该格式是基于电子邮件的。尽管今天不太可能选择这种格式,但出于向后兼容性考虑," +"它仍然作为规范格式保留下来。从用户的角度来看,这通常是不可见的,因为元数据是" +"以构建后端可以理解的方式由用户指定的,通常是在 ``pyproject.toml`` 中的 " +"``[project]`` 部分,并由构建后端转换为 ``PKG-INFO`` 文件。" #: ../source/discussions/package-formats.rst:184 msgid "" @@ -1336,8 +1440,8 @@ msgid "" "format, although :ref:`this is not officially supported at this time `." msgstr "" -"在某些情况下,wheels 可用作可导入的运行时格式,尽管 :ref:` 目前官方并不支持 " -" `。" +"在某些情况下,wheels 可以作为可导入的运行时格式使用,尽管 :ref:`目前官方并不" +"支持这种用法 ` 。" #: ../source/discussions/pip-vs-easy-install.rst:6 msgid "pip vs easy_install" @@ -1513,6 +1617,10 @@ msgid "" "example (a similar practice is used by other tools like *nox* and its :file:" "`noxfile.py` configuration file, or *pytest* and :file:`conftest.py`)." msgstr "" +"Setuptools 完全可以作为打包 Python 项目的 :term:`构建后端` 使用。而 :file:" +"`setup.py` 是一个有效的 :ref:`setuptools` 配置文件,它恰好是用 Python 编写" +"的,而不是使用 *TOML* (例如,其他工具如 *nox* 及其 :file:`noxfile.py` 配置文" +"件,或 *pytest* 及其 :file:`conftest.py` 文件也采用类似做法)。" #: ../source/discussions/setup-py-deprecated.rst:18 msgid "" @@ -1557,7 +1665,7 @@ msgstr "相反,应该使用什么命令?" #: ../source/discussions/setup-py-deprecated.rst:33 #: ../source/guides/modernize-setup-py-project.rst:30 msgid "Deprecated" -msgstr "废弃" +msgstr "弃用" #: ../source/discussions/setup-py-deprecated.rst:33 #: ../source/guides/modernize-setup-py-project.rst:30 @@ -1585,6 +1693,9 @@ msgid "" "what ``python -m build`` does. If necessary the ``--sdist`` and ``--wheel`` " "options can be used to generate only one or the other." msgstr "" +"这需要 :ref:`build` 依赖项。建议始终构建并发布项目的源代码分发包和 wheel,这" +"正是 ``python -m build`` 所做的。如果需要,可以使用 ``--sdist`` 和 ``--" +"wheel`` 选项仅生成其中之一。" #: ../source/discussions/setup-py-deprecated.rst:52 msgid "" @@ -1597,6 +1708,12 @@ msgid "" "on the local filesystem as argument to its ``install`` sub-command. So this " "would also be a valid command: ``python -m pip install path/to/project``." msgstr "" +"为了安装基于 setuptools 的项目,过去通常会运行 :file:`setup.py` 的 " +"``install`` 命令,例如: ``python setup.py install`` 。如今,推荐的方法是直接" +"使用 :ref:`pip` , 命令如下: ``python -m pip install .`` 。其中点号 ``.`` 实" +"际上是一个文件系统路径,表示当前目录的路径符号。实际上, *pip* 接受本地文件系" +"统上项目源代码目录的路径作为其 ``install`` 子命令的参数。因此,以下命令也是有" +"效的: ``python -m pip install path/to/project`` 。" #: ../source/discussions/setup-py-deprecated.rst:65 msgid "" @@ -1604,6 +1721,9 @@ msgid "" "``python setup.py develop`` one can use the ``--editable`` option of pip's " "*install* sub-command: ``python -m pip install --editable .``." msgstr "" +"至于 *develop* 模式,也就是 *editable* 模式的安装,除了使用 ``python setup." +"py develop`` ,还可以使用 pip 的 *install* 子命令的 ``--editable`` 选项: " +"``python -m pip install --editable .`` 。" #: ../source/discussions/setup-py-deprecated.rst:70 msgid "" @@ -1615,6 +1735,11 @@ msgid "" "generate only one or the other. Note that the build tool needs to be " "installed separately." msgstr "" +"构建 :term:`源代码分发包 ` 和 :term:" +"`wheels ` 的一种推荐、简单且直接的方法是使用 :ref:`build` 工具,命令如" +"下: ``python -m build``,该命令会触发生成这两种分发格式。如果需要,可以使用 " +"``--sdist`` 和 ``--wheel`` 选项仅生成其中之一。请注意,build 工具需要单独安" +"装。" #: ../source/discussions/setup-py-deprecated.rst:80 msgid "" @@ -1669,6 +1794,8 @@ msgid "" "But might be necessary on other :term:`package indexes ` (for " "example :ref:`devpi`)." msgstr "" +"在 :term:`PyPI ` 上不必要,也不被支持。但在其" +"他 :term:`包索引 ` 上可能是必要的(例如 :ref:`devpi` )。" #: ../source/discussions/setup-py-deprecated.rst:112 msgid "``python setup.py --version``" @@ -1677,7 +1804,7 @@ msgstr "``python setup.py --version``" #: ../source/discussions/setup-py-deprecated.rst:114 msgid "" "A possible replacement solution (among others) is to rely on setuptools-scm_:" -msgstr "" +msgstr "一种可能的替代解决方案(除其他外)是依赖 setuptools-scm_ :" #: ../source/discussions/setup-py-deprecated.rst:116 msgid "``python -m setuptools_scm``" @@ -1806,7 +1933,7 @@ msgstr "" #: ../source/discussions/setup-py-deprecated.rst:166 msgid "What about custom build steps?" -msgstr "" +msgstr "自定义构建步骤要怎么做?" #: ../source/discussions/setup-py-deprecated.rst:168 msgid "" @@ -1814,6 +1941,9 @@ msgid "" "``build_py``, ``build_ext``, and ``bdist_wheel`` or add new build steps are " "not deprecated. Those will be automatically called as expected." msgstr "" +"自定义构建步骤,例如覆盖现有步骤(如 ``build_py`` 、 ``build_ext`` 和 " +"``bdist_wheel`` )或添加新的构建步骤,并没有被弃用。这些步骤将会按预期自动调" +"用。" #: ../source/discussions/setup-py-deprecated.rst:175 #: ../source/guides/modernize-setup-py-project.rst:21 @@ -1854,16 +1984,19 @@ msgid "" "table is to assume that the :term:`build backend ` is " "setuptools." msgstr "" +"在没有 :file:`pyproject.toml` 文件及其 ``[build-system]`` 表的情况下, :term:" +"`构建前端 ` 的标准回退行为是默认假设 :term:`构建后端 ` 是 setuptools。" #: ../source/discussions/setup-py-deprecated.rst:204 msgid "Why? What does it all mean?" -msgstr "" +msgstr "为什么?这一切意味着什么?" #: ../source/discussions/setup-py-deprecated.rst:206 msgid "" "One way to look at it is that the scope of setuptools has now been reduced " "to the role of a build backend." -msgstr "" +msgstr "一种看法是,setuptools 的作用范围现在已被缩小至构建后端的角色。" #: ../source/discussions/setup-py-deprecated.rst:211 #: ../source/guides/modernize-setup-py-project.rst:244 @@ -1880,17 +2013,15 @@ msgstr ":doc:`setuptools:deprecated/commands`" #: ../source/discussions/single-source-version.rst:5 msgid "Single-sourcing the Project Version" -msgstr "" +msgstr "单一来源项目版本" #: ../source/discussions/single-source-version.rst:7 -#, fuzzy msgid "Complete" -msgstr "不完全" +msgstr "完成" #: ../source/discussions/single-source-version.rst:8 -#, fuzzy msgid "2024-10-07" -msgstr "2021-8-24" +msgstr "2024-10-07" #: ../source/discussions/single-source-version.rst:10 msgid "" @@ -1900,6 +2031,10 @@ msgid "" "same version specifier as :func:`importlib.metadata.version` reports for the " "distribution package (as described in :ref:`runtime-version-access`)." msgstr "" +"许多 Python :term:`分发包 ` 发布一个单一的 Python :" +"term:`导入包 ` ,在这种情况下,希望导入包上的运行时 " +"``__version__`` 属性报告与 :func:`importlib.metadata.version` 为分发包报告的" +"相同版本说明符(如 :ref:`运行时版本访问 ` 中所述)。" #: ../source/discussions/single-source-version.rst:16 msgid "" @@ -1907,34 +2042,41 @@ msgid "" "a version control system *tag* (such as ``v1.2.3``) rather than being " "manually updated in the source code." msgstr "" +"此外,通常希望该版本信息是从版本控制系统的 *标签* (如 ``v1.2.3`` )中派生" +"的,而不是手动在源代码中更新。" #: ../source/discussions/single-source-version.rst:20 msgid "" "Some projects may choose to simply live with the data entry duplication, and " "rely on automated testing to ensure the different values do not diverge." msgstr "" +"一些项目可能选择容忍数据输入的重复,并依赖自动化测试来确保不同的值不会出现偏" +"差。" #: ../source/discussions/single-source-version.rst:23 msgid "" "Alternatively, a project's chosen build system may offer a way to define a " "single source of truth for the version number." -msgstr "" +msgstr "另外,项目选择的构建系统可能提供一种方法来定义版本号的单一权威来源。" #: ../source/discussions/single-source-version.rst:26 msgid "In general, the options are:" -msgstr "" +msgstr "一般而言,选项包括:" #: ../source/discussions/single-source-version.rst:28 msgid "" "If the code is in a version control system (VCS), such as Git, then the " "version can be extracted from the VCS." msgstr "" +"如果代码位于版本控制系统 (VCS)(例如 Git)中,则可以从 VCS 中提取版本。" #: ../source/discussions/single-source-version.rst:30 msgid "" "The version can be hard-coded into the :file:`pyproject.toml` file -- and " "the build system can copy it into other locations it may be required." msgstr "" +"该版本可以硬编码到: :file:`pyproject.toml` 文件中——并且构建系统可以将其复制" +"到可能需要的其他位置。" #: ../source/discussions/single-source-version.rst:33 msgid "" @@ -1944,10 +2086,14 @@ msgid "" "attribute in a particular module, such as :file:`__init__.py`. The build " "system can then extract it from the runtime location at build time." msgstr "" +"版本字符串可以被硬编码到源代码中——可以是在一个特殊用途的文件中,例如 :file:" +"`_version.txt`(该文件必须作为项目源代码分发包的一部分进行发布),或者作为特" +"定模块中的一个属性,例如 :file:`__init__.py` 。构建系统随后可以在构建时从运行" +"时位置提取它。" #: ../source/discussions/single-source-version.rst:38 msgid "Consult your build system's documentation for their recommended method." -msgstr "" +msgstr "请查阅您的构建系统文档以了解其推荐的方法。" #: ../source/discussions/single-source-version.rst:40 msgid "" @@ -1957,40 +2103,48 @@ msgid "" "``importlib.metadata.version(\"dist-name\")`` report the same value (note: " "for many projects, ``import_name`` and ``dist-name`` will be the same name)." msgstr "" +"当目标是让分发包及其关联的导入包共享相同的版本时,建议项目包括一个自动化测试" +"用例,确保 ``import_name.__version__`` 和 ``importlib.metadata." +"version(\"dist-name\")`` 报告相同的值(注意:对于许多项目, ``import_name`` " +"和 ``dist-name`` 将是相同的名称)。" #: ../source/discussions/single-source-version.rst:50 msgid "Build System Version Handling" -msgstr "" +msgstr "构建系统版本处理" #: ../source/discussions/single-source-version.rst:52 msgid "" "The following are links to some build system's documentation for handling " "version strings." -msgstr "" +msgstr "以下是一些用于处理版本字符串的构建系统文档的链接。" #: ../source/discussions/single-source-version.rst:54 msgid "`Flit `_" -msgstr "" +msgstr "`Flit 分发 `_" #: ../source/discussions/single-source-version.rst:56 -#, fuzzy msgid "`Hatchling `_" -msgstr "`Apache `_" +msgstr "`Hatchling 项目管理器 `_" #: ../source/discussions/single-source-version.rst:58 msgid "" "`PDM `_" msgstr "" +"`PDM `_" #: ../source/discussions/single-source-version.rst:60 msgid "" "`Setuptools `_" msgstr "" +"`Setuptools 工具 `_" #: ../source/discussions/single-source-version.rst:62 msgid "`setuptools_scm `_" msgstr "" +"`setuptools_scm 提取 Python 包版本 `_" #: ../source/discussions/src-layout-vs-flat-layout.rst:5 msgid "src layout vs flat layout" @@ -2035,6 +2189,9 @@ msgid "" "` is used for development and a " "regular installation is used for testing)." msgstr "" +"这意味着 `src` 布局在项目的开发工作流程中涉及一个额外的步骤(通常,在开发中使" +"用 :doc:`可编辑安装 ` ,在测试中使用常" +"规安装)。" #: ../source/discussions/src-layout-vs-flat-layout.rst:56 msgid "" @@ -2071,6 +2228,8 @@ msgid "" "userguide/development_mode>` is only able to import files that were meant to " "be importable." msgstr "" +"`src` 布局有助于确保 :doc:`可编辑安装 ` 仅能导入那些本应可导入的文件。" #: ../source/discussions/src-layout-vs-flat-layout.rst:74 msgid "" @@ -2078,6 +2237,8 @@ msgid "" "using a `path configuration file `_ that adds the directory to the import path." msgstr "" +"当可编辑安装使用 `路径配置文件 `_ 来实现并将目录添加到导入路径时,这一点尤为重要。" #: ../source/discussions/src-layout-vs-flat-layout.rst:78 msgid "" @@ -2086,10 +2247,13 @@ msgid "" "``noxfile.py``) on the import path. This would make certain imports work in " "editable installations but not regular installations." msgstr "" +"扁平布局会将其他项目文件(例如: ``README.md`` 、 ``tox.ini`` )和打包/工具配" +"置文件(例如: ``setup.py`` 、 ``noxfile.py`` )添加到导入路径。这会使某些导" +"入在可编辑安装中工作,但在常规安装中无法工作。" #: ../source/discussions/src-layout-vs-flat-layout.rst:86 msgid "Running a command-line interface from source with src-layout" -msgstr "" +msgstr "从源代码使用 `src` 布局中运行命令行界面" #: ../source/discussions/src-layout-vs-flat-layout.rst:88 msgid "" @@ -2101,6 +2265,11 @@ msgid "" "the package folder to Python's :py:data:`sys.path` when called via its :" "file:`__main__.py` file:" msgstr "" +"由于前述的 `src` 布局的特点,命令行界面不能直接从 :term:`源代码树 ` 运行,而需要将包安装为 :doc:`开发模式 ` 以便进行测试。由于在某些情况下这可能不太实际,一个解决方法" +"是在通过其 :file:`__main__.py` 文件调用时,将包文件夹添加到 Python 的 :py:" +"data:`sys.path` 中:" #: ../source/discussions/versioning.rst:6 #: ../source/specifications/simple-repository-api.rst:310 @@ -2109,7 +2278,7 @@ msgstr "版本" #: ../source/discussions/versioning.rst:8 msgid "This discussion covers all aspects of versioning Python packages." -msgstr "" +msgstr "本讨论涵盖了 Python 包版本控制的所有方面。" #: ../source/discussions/versioning.rst:12 msgid "Valid version numbers" @@ -2124,10 +2293,14 @@ msgid "" "`specification of version specifiers `. Here are some " "examples of version numbers [#version-examples]_:" msgstr "" +"不同的 Python 项目可能根据各自的需求使用不同的版本控制方案,但为了与像 :ref:" +"`pip` 这样的工具兼容,所有这些项目都需要遵循一个灵活的版本标识符格式,权威参" +"考是 :ref:`版本规范说明 ` 。以下是一些版本号的示例 " +"[#version-examples]_ :" #: ../source/discussions/versioning.rst:21 msgid "A simple version (final release): ``1.2.0``" -msgstr "" +msgstr "简单版本(最终版本): ``1.2.0``" #: ../source/discussions/versioning.rst:22 msgid "A development release: ``1.2.0.dev1``" @@ -2135,37 +2308,37 @@ msgstr "开发版本:``1.2.0.dev1``" #: ../source/discussions/versioning.rst:23 msgid "An alpha release: ``1.2.0a1``" -msgstr "" +msgstr "alpha 版本: ``1.2.0a1``" #: ../source/discussions/versioning.rst:24 msgid "A beta release: ``1.2.0b1``" -msgstr "" +msgstr "测试版本: ``1.2.0b1``" #: ../source/discussions/versioning.rst:25 msgid "A release candidate: ``1.2.0rc1``" -msgstr "" +msgstr "发布版本: ``1.2.0rc1``" #: ../source/discussions/versioning.rst:26 msgid "A post-release: ``1.2.0.post1``" -msgstr "" +msgstr "后续发布: ``1.2.0.post1``" #: ../source/discussions/versioning.rst:27 msgid "" "A post-release of an alpha release (possible, but discouraged): ``1.2.0a1." "post1``" -msgstr "" +msgstr "alpha 版本的后续发布(可能,但不鼓励): ``1.2.0a1.post1``" #: ../source/discussions/versioning.rst:28 msgid "A simple version with only two components: ``23.12``" -msgstr "" +msgstr "仅包含两个组件的简单版本:``23.12``" #: ../source/discussions/versioning.rst:29 msgid "A simple version with just one component: ``42``" -msgstr "" +msgstr "只有一个组件的简单版本:``42``" #: ../source/discussions/versioning.rst:30 msgid "A version with an epoch: ``1!1.0``" -msgstr "" +msgstr "带有时期的版本:``1!1.0``" #: ../source/discussions/versioning.rst:32 msgid "" @@ -2176,6 +2349,10 @@ msgid "" "versions of dependencies to install, unless explicitly requested (e.g., with " "``pip install pkg==1.1a3`` or ``pip install --pre pkg``)." msgstr "" +"项目可以使用一系列的预发布版本,以便在最终发布之前支持用户进行测试。步骤顺序" +"为:alpha 版本、beta 版本、候选发布版本、最终发布版本。默认情况下,pip 和其他" +"现代 Python 包安装器在决定安装哪些依赖版本时,会忽略预发布版本,除非明确请求" +"(例如,使用 ``pip install pkg==1.1a3`` 或 ``pip install --pre pkg`` )。" #: ../source/discussions/versioning.rst:39 msgid "" @@ -2183,6 +2360,8 @@ msgid "" "a development cycle, for example, a nightly build, or a build from the " "latest source in a Linux distribution." msgstr "" +"开发版本的目的是支持在开发周期初期发布的版本,例如,每日构建版本或来自 Linux " +"发行版最新源代码的构建版本。" #: ../source/discussions/versioning.rst:43 msgid "" @@ -2192,6 +2371,9 @@ msgid "" "with a new final release (e.g., incrementing the third component when using " "semantic versioning)." msgstr "" +"后发布版本用于修复最终版本中的轻微错误,这些错误不会影响分发的软件,例如修正" +"发布说明中的错误。它们不应用于修复 bug;这些应该通过发布新的最终版本来处理" +"(例如,在使用语义版本控制时,增加第三个版本号)。" #: ../source/discussions/versioning.rst:49 msgid "" @@ -2203,10 +2385,15 @@ msgid "" "epoch, as in \"1!1.0\", in order to be treated as more recent than the old " "version numbers." msgstr "" +"最后,epoch(纪元)是一个很少使用的特性,用于在更改版本控制方案时修正排序顺" +"序。例如,如果一个项目使用日历版本控制,版本号如 23.12,然后切换到语义版本控" +"制,版本号如 1.0,那么 1.0 和 23.12 的比较顺序将会错误。为了修正这一点,新的" +"版本号应该具有明确的 epoch,例如 \"1!1.0\",这样可以确保它比旧的版本号更为新" +"颖。" #: ../source/discussions/versioning.rst:59 msgid "Semantic versioning vs. calendar versioning" -msgstr "" +msgstr "语义版本控制与日历版本控制" #: ../source/discussions/versioning.rst:61 msgid "" @@ -2215,6 +2402,8 @@ msgid "" "new release of a package. Two versioning schemes are commonly used for " "Python packages, semantic versioning and calendar versioning." msgstr "" +"版本控制方案是对版本号各个部分的正式解释方式,并决定在新版本发布时应该使用哪" +"个版本号。Python 包常用的两种版本控制方案是语义版本控制和日历版本控制。" #: ../source/discussions/versioning.rst:68 msgid "" @@ -2223,6 +2412,8 @@ msgid "" "That view may differ from the end-users' perception of what said formalized " "versioning scheme promises them." msgstr "" +"选择使用哪个版本号是由项目的维护者决定的。这实际上意味着版本号的提升反映了维" +"护者的观点。这个观点可能与最终用户对该正式版本控制方案承诺的理解有所不同。" #: ../source/discussions/versioning.rst:74 msgid "" @@ -2232,30 +2423,35 @@ msgid "" "when security vulnerability needs to be addressed. Security releases often " "come in patch versions but contain breaking changes inevitably." msgstr "" +"选择下一个版本号时有已知的例外情况。维护者可能会有意识地选择打破“最后一个版本" +"段只包含向后兼容的更改”这一假设。其中一个例子是当需要解决安全漏洞时。安全更新" +"通常以补丁版本发布,但不可避免地包含破坏性更改。" #: ../source/discussions/versioning.rst:84 #: ../source/specifications/version-specifiers.rst:723 msgid "Semantic versioning" -msgstr "" +msgstr "语义版本控制" #: ../source/discussions/versioning.rst:86 msgid "" "The idea of *semantic versioning* (or SemVer) is to use 3-part version " "numbers, *major.minor.patch*, where the project author increments:" msgstr "" +"*语义版本控制* (或称 SemVer)的理念是使用三部分版本号, *major.minor." +"patch* ,其中项目作者根据以下规则进行版本号递增:" #: ../source/discussions/versioning.rst:89 msgid "*major* when they make incompatible API changes," -msgstr "" +msgstr "*重大(major)* 当他们进行不兼容的 API 更改时," #: ../source/discussions/versioning.rst:90 msgid "" "*minor* when they add functionality in a backwards-compatible manner, and" -msgstr "" +msgstr "*轻微(minor)* 当他们以向后兼容的方式添加功能时,以及" #: ../source/discussions/versioning.rst:91 msgid "*patch*, when they make backwards-compatible bug fixes." -msgstr "" +msgstr "*补丁(patch)*,当他们进行向后兼容的错误修复时。" #: ../source/discussions/versioning.rst:93 msgid "" @@ -2268,6 +2464,11 @@ msgid "" "strictness]_. Conversely, a bump of the major version number is sometimes " "used to signal significant but backwards-compatible new features." msgstr "" +"大多数 Python 项目使用类似于语义版本控制的版本方案。然而,大多数项目,尤其是" +"较大的项目,并不严格遵循语义版本控制,因为许多变化在技术上是破坏兼容性的,但" +"仅影响一小部分用户。这类项目通常在不兼容性较大时递增主版本号,或用来表示项目" +"的重大变化,而不是为了任何微小的不兼容性 [#semver-strictness] 。相反,主版本" +"号的递增有时也用来表示重要但向后兼容的新特性。" #: ../source/discussions/versioning.rst:103 msgid "" @@ -2280,12 +2481,20 @@ msgid "" "equivalent to ``name >= X.Y.Z, == X.Y.*``, i.e., it requires at least X.Y.Z " "and allows a later release with same X and Y but higher Z." msgstr "" +"对于那些确实使用严格语义版本控制的项目,这种方法允许用户使用 :ref:`兼容发布版" +"本说明符 ` ,并使用 ``~=`` 运算符。例" +"如, ``name ~= X.Y`` 大致等价于 ``name >= X.Y, == X.*`` ,即它要求至少是 X.Y " +"版本,并允许任何 X 不变且 Y 较大的后续版本。同样, ``name ~= X.Y.Z`` 大致等价" +"于 ``name >= X.Y.Z, == X.Y.*`` ,即要求至少是 X.Y.Z 版本,并允许任何 X 和 Y " +"相同但 Z 较大的后续版本。" #: ../source/discussions/versioning.rst:112 msgid "" "Python projects adopting semantic versioning should abide by clauses 1-8 of " "the `Semantic Versioning 2.0.0 specification `_." msgstr "" +"采用语义版本控制的 Python 项目应遵守 `语义版本控制 2.0.0 规范 ` 的" +"第 1-8 条。" #: ../source/discussions/versioning.rst:115 msgid "" @@ -2297,6 +2506,11 @@ msgid "" "contain backwards-incompatible API changes (:doc:`NumPy versioning policy " "`)." msgstr "" +"流行的 :doc:`Sphinx ` 文档生成器是一个使用严格语义版本控制的示" +"例项目( :doc:`Sphinx 版本控制政策 ` )。著" +"名的 :doc:`NumPy ` 科学计算包明确使用“宽松”语义版本控制,其中递" +"增次要版本可能包含向后不兼容的 API 更改( :doc:`NumPy 版本控制政策 ` )。" #: ../source/discussions/versioning.rst:124 msgid "Calendar versioning" @@ -2308,6 +2522,8 @@ msgid "" "with a regular time based release cadence and a deprecation process that " "provides warnings for a number of releases prior to removal of a feature." msgstr "" +"语义版本控制并不适用于所有项目,例如具有基于定期时间的发布节奏和弃用流程的项" +"目,这些弃用流程会在删除某个功能之前为多个版本提供警告。" #: ../source/discussions/versioning.rst:130 msgid "" @@ -2315,23 +2531,25 @@ msgid "" "`_ (CalVer), is that it is straightforward to tell how old the base " "feature set of a particular release is given just the version number." msgstr "" +"基于日期的版本控制,或称为 `日历版本控制 `_(CalVer)的一个主要优势" +"是,通过版本号就可以直接判断特定发布的基础功能集已经有多旧。" #: ../source/discussions/versioning.rst:134 msgid "" "Calendar version numbers typically take the form *year.month* (for example, " "23.12 for December 2023)." msgstr "" +"日历版本号通常采用 *year.month* 的形式(例如,2023 年 12 月为 23.12)。" #: ../source/discussions/versioning.rst:137 msgid "" ":doc:`Pip `, the standard Python package installer, uses calendar " "versioning." -msgstr "" +msgstr ":doc:`Pip ` ,标准 Python 包安装程序,使用日历版本控制。" #: ../source/discussions/versioning.rst:142 -#, fuzzy msgid "Other schemes" -msgstr "版本" +msgstr "其他模式" #: ../source/discussions/versioning.rst:144 msgid "" @@ -2341,6 +2559,9 @@ msgid "" "as an end user, as serial version numbers convey little or no information " "regarding API backwards compatibility." msgstr "" +"序列版本控制指的是一种最简单的版本控制方案,它由一个每次发布时递增的单一数字" +"组成。虽然序列版本控制对于开发者来说非常容易管理,但对于最终用户来说却是最难" +"追踪的,因为序列版本号几乎不提供关于 API 向后兼容性的任何信息。" #: ../source/discussions/versioning.rst:150 msgid "" @@ -2350,6 +2571,9 @@ msgid "" "release, but doesn't otherwise commit to a particular release cadence within " "the year." msgstr "" +"上述版本控制方案可以组合使用。例如,一个项目可以将基于日期的版本控制与序列版" +"本控制结合,创建一个 *年.序列(year.serial)* 的编号方案,这样既能直观地传达一" +"个版本的发布大致年份,同时又不承诺在该年内的具体发布频率。" #: ../source/discussions/versioning.rst:157 #: ../source/specifications/version-specifiers.rst:114 @@ -2364,6 +2588,10 @@ msgid "" "which can be used to identify local development builds not intended for " "publication, or modified variants of a release maintained by a redistributor." msgstr "" +"公共版本标识符旨在支持通过 :term:`PyPI ` 进行分" +"发。Python 打包工具还支持 :ref:`本地版本标识符 ` " +"的概念,可以用来标识不打算公开发布的本地开发构建,或由重新分发者维护的已修改" +"版本。" #: ../source/discussions/versioning.rst:165 msgid "" @@ -2376,6 +2604,11 @@ msgid "" "dev1+gd00980f\", or if the repository has untracked changes, like \"0.5." "dev1+gd00980f.d20231217\"." msgstr "" +"本地版本标识符的形式是一个公共版本标识符,后跟 \"+\" 和本地版本标签。例如,应" +"用了 Fedora 特定补丁的包可能会有版本 \"1.2.1+fedora.4\"。另一个例子是由 " +"setuptools-scm_ (一个读取 Git 数据的 setuptools 插件) 计算的版本。在有一些" +"提交的 Git 仓库中,setuptools-scm 会生成类似 \"0.5.dev1+gd00980f\" 的版本,或" +"者如果仓库有未跟踪的更改,则生成类似 \"0.5.dev1+gd00980f.d20231217\" 的版本。" #: ../source/discussions/versioning.rst:177 msgid "Accessing version information at runtime" @@ -4001,12 +4234,17 @@ msgid "" "plugin. Another package supporting this kind of plugin can use the metadata " "to discover that plugin." msgstr "" +"包可以拥有在 :ref:`entry-points` 中描述的插件元数据。通过指定这些元数据,包声" +"明它包含某种特定类型的插件。另一个支持这种插件的包可以使用这些元数据来发现该" +"插件。" #: ../source/guides/creating-and-discovering-plugins.rst:128 msgid "" "For example if you have a package named ``myapp-plugin-a`` and it includes " "the following in its ``pyproject.toml``:" msgstr "" +"例如,如果您有一个名为 ``myapp-plugin-a`` 的包,并且它的 ``pyproject.toml`` " +"中包含以下内容:" #: ../source/guides/creating-and-discovering-plugins.rst:136 msgid "" @@ -4020,12 +4258,15 @@ msgid "" "In this example, ``discovered_plugins`` would be a collection of type :class:" "`importlib.metadata.EntryPoint`:" msgstr "" +"在这个例子中, ``discovered_plugins`` 将是一个类型为 :class:`importlib." +"metadata.EntryPoint` 的集合:" #: ../source/guides/creating-and-discovering-plugins.rst:160 msgid "" "Now the module of your choice can be imported by executing " "``discovered_plugins['a'].load()``." msgstr "" +"现在可以通过执行 ``discovered_plugins['a'].load()`` 来导入您选择的模块。" #: ../source/guides/creating-and-discovering-plugins.rst:163 msgid "" @@ -4033,6 +4274,8 @@ msgid "" "has a lot of options. It's recommended to read over the entire section on :" "doc:`entry points ` ." msgstr "" +"在 :file:`setup.py` 中的 ``entry_point`` 规范相当灵活,具有很多选项。建议仔细" +"阅读整个关于 :doc:`entry points ` 的章节。" #: ../source/guides/creating-and-discovering-plugins.rst:167 msgid "" @@ -4040,11 +4283,12 @@ msgid "" "library/importlib.metadata>`, most packaging tools other than setuptools " "provide support for defining entry points." msgstr "" +"由于此规范是 :doc:`标准库的一部分 `,因此" +"除了 setuptools 之外,大多数打包工具都提供了定义 entry points 的支持。" #: ../source/guides/creating-command-line-tools.rst:5 -#, fuzzy msgid "Creating and packaging command-line tools" -msgstr "安装独立命令行工具" +msgstr "创建以及打包命令行工具" #: ../source/guides/creating-command-line-tools.rst:7 msgid "" @@ -4054,11 +4298,14 @@ msgid "" "exposing the executable scripts of packages (and available manual pages) for " "use on the command-line." msgstr "" +"本指南将引导您创建和打包一个独立的命令行应用程序,该应用程序可以通过 :ref:" +"`pipx` 安装,pipx 是一个创建和管理 :term:`Python 虚拟环境 ` 的工具,并暴露包的可执行脚本(以及可用的手册页)以供命令行使" +"用。" #: ../source/guides/creating-command-line-tools.rst:12 -#, fuzzy msgid "Creating the package" -msgstr "升级软件包" +msgstr "创建包" #: ../source/guides/creating-command-line-tools.rst:14 msgid "" @@ -4066,17 +4313,19 @@ msgid "" "the sake of an example, we'll build a simple tool outputting a greeting (a " "string) for a person based on arguments given on the command-line." msgstr "" +"首先,创建一个源代码树用于该 :term:`项目 ` 。为了举例说明,我们将构" +"建一个简单的工具,根据命令行提供的参数输出对某个人的问候(一个字符串)。" #: ../source/guides/creating-command-line-tools.rst:17 #: ../source/guides/tool-recommendations.rst:45 msgid "Todo" -msgstr "" +msgstr "待办" #: ../source/guides/creating-command-line-tools.rst:17 msgid "" "Advise on the optimal structure of a Python package in another guide or " "discussion and link to it here." -msgstr "" +msgstr "在另一个指南或讨论中对 Python 包的最佳结构提出建议,并在此处链接。" #: ../source/guides/creating-command-line-tools.rst:19 msgid ""