Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
10794fd
Translate the second half of `library/pdb.po` (#991)
mattwang44 Nov 16, 2024
4f8f280
feat: translate time in 3.13 (#979)
ken71301 Nov 20, 2024
9e4dde8
Translate `library/sys.monitoring` (#892)
mattwang44 Nov 22, 2024
2f9db7b
fix: remove the translation since it caused the page to miss some tex…
ken71301 Nov 22, 2024
fc9f0d6
Sync with CPython 3.13 (#998)
pydoc-zh-tw[bot] Nov 30, 2024
85fadd9
build(deps): bump JamesIves/github-pages-deploy-action from 4.6.8 to …
dependabot[bot] Dec 1, 2024
c4c0d58
Sync with CPython 3.13 (#1002)
pydoc-zh-tw[bot] Dec 15, 2024
cc66b14
fix(library/tempfile): add a missing backtick (#1009)
oToToT Dec 20, 2024
e7b5675
Update translation for library/enum, library/exceptions and howto/sor…
mindihx Dec 23, 2024
059c1dd
Translate library/http.cookies
mindihx Dec 23, 2024
e5cecf1
Update translation for library/http.cookies
mindihx Dec 24, 2024
43ad743
Update translation in code comment for library/http.cookies
mindihx Dec 24, 2024
f3042a1
Sync with CPython 3.13 (#1008)
pydoc-zh-tw[bot] Dec 29, 2024
cb35f7e
build(deps): bump JamesIves/github-pages-deploy-action (#1016)
dependabot[bot] Jan 1, 2025
55c563a
feat: translate library/socket.po intro section
weijay0804 Dec 1, 2023
c9b1c2f
feat: update with reviewer's suggestions
weijay0804 Feb 26, 2024
88d1d54
feat: update with reviewer's suggestions
weijay0804 Dec 30, 2024
27ee90f
fix: 修正 socket.po 中的函數名稱錯誤
weijay0804 Jan 6, 2025
241ff06
fix(glossary): typo
mattwang44 Jan 15, 2025
c347ae2
Merge pull request #1017 from python/glossary-typo
mattwang44 Jan 15, 2025
e2bf6ce
Sync with CPython 3.13 (#1015)
pydoc-zh-tw[bot] Feb 7, 2025
5864e8f
translate the second half of `library/signal.po` (#995)
mattwang44 Feb 7, 2025
e6a2349
translate `extending/building.po`
mattwang44 Feb 7, 2025
0ee2e18
Merge pull request #1021 from mattwang44/extending/building
josix Feb 8, 2025
06b05d9
Update translation for library/pathlib.po (#1013)
mindihx Feb 15, 2025
cc8bdcc
Translate "Function" and "Exception" part of `library/re.po` (#996)
mattwang44 Feb 23, 2025
ef944ec
translate extending/extending.po - part 1 (#1023)
mattwang44 Feb 23, 2025
1cc7e8d
translate `library/stringprep.po` (#1024)
mattwang44 Feb 23, 2025
aa8e180
build(deps): bump JamesIves/github-pages-deploy-action (#1025)
dependabot[bot] Mar 7, 2025
6f11b03
deps: assign python version in ci (#1028)
mattwang44 Mar 7, 2025
e0c216c
build(deps): bump abatilo/actions-poetry from 3 to 4 (#1018)
dependabot[bot] Mar 7, 2025
fa64c76
translate library/random.po (#1027)
Dr-XYZ Mar 8, 2025
2851e68
translate library/os (#1029)
Super1115 Mar 11, 2025
d48b8ca
Merge pull request #1014 from mindihx/library/http.cookies
josix Mar 15, 2025
bc8c692
chore: Replace python3 -m venv and pip with uv for virtual environmen…
josix Mar 15, 2025
3a5eeb5
Merge pull request #1030 from python/migrate-to-uv
josix Mar 15, 2025
2fe2781
fix: add uv to gh-page ci
josix Mar 15, 2025
1a480de
替換:調用/訪問/當前/類別名/搜索/模塊/内/组/獲取/数/示例/文檔/操作系統 (#1022)
PeterDaveHello Apr 21, 2025
b923740
fix(ci): setup uv in sync workflow (#1032)
mattwang44 Apr 24, 2025
2df827a
build(deps): bump astral-sh/setup-uv from 5 to 6 (#1033)
dependabot[bot] May 4, 2025
6ce1539
Sync with CPython 3.13 (#1019)
pydoc-zh-tw[bot] May 4, 2025
c3d3dee
translate `c-api/time.po` (#1034)
mattwang44 May 6, 2025
017f963
feat(script): run powrap in sync workflow (#1039)
mattwang44 May 6, 2025
90fc0c3
Sync with CPython 3.13 (#1040)
pydoc-zh-tw[bot] May 6, 2025
cc5597f
Sync with CPython 3.13 (#1041)
pydoc-zh-tw[bot] May 10, 2025
28c15ae
sync with cpython 26b6ab49 (#1042)
pydoc-zh-tw[bot] May 11, 2025
4f401c5
Translate library/cmd.po rst: 13-99 (#1045)
Dr-XYZ May 14, 2025
d57b852
Translate library/winsound.po (#1048)
Dr-XYZ May 20, 2025
7827847
Translate library/cmd.po rst: 110-343 (#1046)
Dr-XYZ May 20, 2025
f8ef476
Translate library/venv.po (#1050)
Dr-XYZ May 26, 2025
64f8366
Translate library/trace.po (#1052)
Dr-XYZ Jun 22, 2025
8363086
Translate library/zoneinfo.po (#1057)
Dr-XYZ Jun 23, 2025
302966f
translate c-api/contextvars #1053 (#1054)
husohome Jun 27, 2025
4376f03
Translate /libaray/frameworks.po (#1062)
LamentXU123 Jun 27, 2025
69c41fe
Sync with CPython 3.13 (#1063)
pydoc-zh-tw[bot] Jun 27, 2025
2362d9b
Translate libaray/ipc.po (#1064)
LamentXU123 Jun 27, 2025
914c60e
Translate library/zipfile.po (#1059)
Dr-XYZ Jun 27, 2025
46864fb
Translate library/fileformats.po (#1068)
LamentXU123 Jun 27, 2025
c49d6ee
Translate `c-api/marshal.po` (#1069)
mattwang44 Jun 30, 2025
b99d2c7
Translate libaray/superseded.po (#1073)
LamentXU123 Jun 30, 2025
c652bc1
Translate library/custominterp.po (#1071)
LamentXU123 Jun 30, 2025
f8fa2e6
Translate library/tty.po (#1076)
LamentXU123 Jun 30, 2025
ebd40d0
build(deps): bump stefanzweifel/git-auto-commit-action from 5 to 6 (#…
dependabot[bot] Jul 1, 2025
e7481c5
Update getpass.po (#1083)
LamentXU123 Jul 5, 2025
1625451
Translate library/grp.po (#1074)
LamentXU123 Jul 5, 2025
3731dfb
Translate library/http.cookiejar.po (#1066)
LamentXU123 Jul 6, 2025
84daa78
Sync with CPython 3.13 (#1080)
pydoc-zh-tw[bot] Jul 6, 2025
6bcf5e3
Translate `library/asyncio.po` (#1088)
LamentXU123 Jul 7, 2025
e063e01
feat(script): add link to po in summarizing script
mattwang44 Jul 7, 2025
2a181fa
feat(script): allow manually running summarize_progress
mattwang44 Jul 7, 2025
1a524c9
fix(script): fix summarize script
mattwang44 Jul 7, 2025
0860a65
Sync with CPython 3.13 (#1089)
pydoc-zh-tw[bot] Jul 7, 2025
a9f9fea
Translate `library/linecache.po` (#1092)
LamentXU123 Jul 7, 2025
aec3f95
Sync with CPython 3.13 (#1091)
pydoc-zh-tw[bot] Jul 7, 2025
d785c51
Translate `library/xml.sax.utils.po` (#1097)
LamentXU123 Jul 11, 2025
6a2d4f6
fix translation of escape (#1098)
LamentXU123 Jul 12, 2025
b208964
Translate `library/pyclbr.po` (#1095)
LamentXU123 Jul 12, 2025
6facb37
translate (#1079)
Dr-XYZ Jul 12, 2025
e0fc19e
fix syntax issue found by sphinx-lint (#1101)
mattwang44 Jul 12, 2025
c63f0d6
Initial plan
Copilot Jul 12, 2025
516c417
Implement terminology extraction tools and generate translation dicti…
Copilot Jul 12, 2025
f722995
Remove extraction scripts, keep CSV dictionaries as requested
Copilot Jul 12, 2025
2400cb0
Regenerate CSV files with proper Python terminology and consolidation…
Copilot Jul 12, 2025
f5bab5a
Translate `tutorial/appendix.po`
LamentXU123 Jul 13, 2025
d9180ea
Fix CI
LamentXU123 Jul 13, 2025
c559608
Merge pull request #1107 from LamentXU123/appendix-trans
josix Jul 13, 2025
d0b3e70
Sync with CPython 3.13 (#1093)
pydoc-zh-tw[bot] Jul 13, 2025
217fb79
Apply translation improvements from @mattwang44 feedback
Copilot Jul 13, 2025
44309fb
Translate library/zipapp.po (#1108)
Dr-XYZ Jul 13, 2025
885bdf5
Merge pull request #1105 from python/copilot/fix-1104
josix Jul 13, 2025
a9a4bed
Translate c-api/objimpl.po to Traditional Chinese (#1112)
Copilot Jul 14, 2025
75e9a91
Translate library/code.po (#997)
mattwang44 Jul 14, 2025
0a5b23f
Complete translation of all tutorial .po files (#1114)
Copilot Jul 14, 2025
bd39cbc
Sync with CPython 3.13 (#1109)
pydoc-zh-tw[bot] Jul 14, 2025
a5b2754
Translate library/warnings.po (#1115)
Dr-XYZ Jul 14, 2025
7a66339
Complete translation of library/struct.po to Traditional Chinese (#1117)
Copilot Jul 14, 2025
e367c7f
Translate untranslated entries from PR 1109 (Sync with CPython 3.13) …
Copilot Jul 14, 2025
813de09
feat: add create issue link to summary table
mattwang44 Jul 15, 2025
e37da89
fix: wrong args seq
mattwang44 Jul 15, 2025
c71602e
fix: issue display in summary table
mattwang44 Jul 15, 2025
a7e006c
fix: fix displayed file path
mattwang44 Jul 15, 2025
15c239b
feat(summary): show string count
mattwang44 Jul 16, 2025
2eb2be8
fix(script): fix wrong polib usage
mattwang44 Jul 16, 2025
c9f4af1
fix(script): wrong subscription index
mattwang44 Jul 16, 2025
98b5eea
Translate c-api/hash.po to Traditional Chinese (#1122)
Copilot Jul 16, 2025
0b2c140
Sync with CPython 3.13 (#1118)
pydoc-zh-tw[bot] Jul 16, 2025
6e856b4
feat: deploy PR preview to gh pages
mattwang44 Jul 17, 2025
a1aaf1f
fix: replace archived action for gen app token
mattwang44 Jul 17, 2025
3f47875
fix: use app token to push to gh-pages branch
mattwang44 Jul 17, 2025
707a327
Merge pull request #1127 from python/pr-preview
josix Jul 18, 2025
7ecda97
fix(ci): cannot run doc preview for PR from forked repo (#1131)
mattwang44 Jul 18, 2025
6c367bc
Translate library/pydoc.po (#1126)
Dr-XYZ Jul 22, 2025
a8c0d8e
Sync with CPython 3.13 (#1123)
pydoc-zh-tw[bot] Jul 28, 2025
39d0d2f
Complete translation of howto/timerfd.po to Traditional Chinese (#1130)
Copilot Jul 28, 2025
965b5a5
translate library/contextvars.po
husohome Jul 12, 2025
a03c8a9
Translate library/tkinter.po (#1119)
Dr-XYZ Jul 31, 2025
ba7e03a
Translate library/tkinter.dnd.po (#1138)
Dr-XYZ Aug 21, 2025
a9d1fe5
Sync with CPython 3.13 (#1133)
pydoc-zh-tw[bot] Aug 22, 2025
d0fbe11
Merge branch 'argparse' into 3.13-argparse-conflict-resolving
SkyLull Aug 30, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
26 changes: 25 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
name: build

concurrency: preview-${{ github.ref }}

permissions:
contents: write
pull-requests: write

on:
pull_request:

Expand All @@ -9,8 +15,26 @@ jobs:
steps:
- uses: actions/checkout@v4

- uses: actions/setup-python@v5
with:
python-version: "3.13"

- name: Install Dependencies
run: sudo apt-get install gettext

- name: Validate
- name: Install uv
uses: astral-sh/setup-uv@v6

- name: Build HTML Docs
run: VERSION=${{ github.event.repository.default_branch }} JOBS=4 MODE=html make all

- name: Deploy PR Doc Preview
# PR from the forked repo would be denied as the permission is not granted.
# Allow only PR from this repo.
if: ${{ ( github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name ) }}
uses: rossjrw/pr-preview-action@v1
with:
source-dir: ../cpython/Doc/build/html
preview-branch: gh-pages
umbrella-dir: pr-preview
action: auto
14 changes: 9 additions & 5 deletions .github/workflows/deploy-gh-page.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,17 @@ jobs:
- name: Install Dependencies
run: sudo apt-get install gettext

- name: Install uv
uses: astral-sh/setup-uv@v6

- name: Build
run: JOBS=4 MODE=html make all

- name: Deploy to gh page
uses: JamesIves/github-pages-deploy-action@v4.6.8
uses: JamesIves/github-pages-deploy-action@v4.7.3
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH: gh-pages
FOLDER: ../cpython/Doc/build/html
CLEAN: true
token: ${{ secrets.GITHUB_TOKEN }}
branch: gh-pages
folder: ../cpython/Doc/build/html
clean: true
clean-exclude: pr-preview/
15 changes: 9 additions & 6 deletions .github/workflows/py313-sync-cpython.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,20 +30,23 @@ jobs:
- name: Install Dependencies
run: sudo apt-get install gettext

- name: Install uv
uses: astral-sh/setup-uv@v6

- name: Sync with CPython
run: make clone && make merge && make rm_cpython
run: make clone merge rm_cpython wrap

- uses: tibdex/github-app-token@v2
id: generate-token
- uses: actions/create-github-app-token@v2
id: app-token
with:
app_id: ${{ secrets.APP_ID }}
private_key: ${{ secrets.APP_PRIVATE_KEY }}
app-id: ${{ secrets.APP_ID }}
private-key: ${{ secrets.APP_PRIVATE_KEY }}

- name: Create Pull Request
id: cpr
uses: peter-evans/create-pull-request@v6
with:
token: ${{ steps.generate-token.outputs.token }}
token: ${{ steps.app-token.outputs.token }}
commit-message: sync with cpython ${{ env.LATEST_COMMIT_ID }}
committer: GitHub <noreply@github.com>
author: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Expand Down
7 changes: 4 additions & 3 deletions .github/workflows/summarize_progress.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
name: summarize_progress

on:
workflow_dispatch:
schedule:
- cron: '30 23 * * 5'

Expand All @@ -16,7 +17,7 @@ jobs:
- uses: actions/checkout@v4

- name: Install poetry
uses: abatilo/actions-poetry@v3
uses: abatilo/actions-poetry@v4

- name: Execute Check Process
run: |
Expand All @@ -37,7 +38,7 @@ jobs:
shell: bash

- name: Commit wiki code
uses: stefanzweifel/git-auto-commit-action@v5
uses: stefanzweifel/git-auto-commit-action@v6
with:
commit_message: Weekly Update -- Summarize Progress
repository: markdown
repository: markdown
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
repos:
- repo: https://git.afpy.org/AFPy/powrap
# there's no release tag in repo, use the latest commit hash id instead
rev: a34a9fed116d24562fbe4bb8d456ade85f056c36
rev: v1.0.2
hooks:
- id: powrap
1 change: 1 addition & 0 deletions .scripts/google_translate/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@
'變量': '變數', # variable
'常量': '常數', # constant
'添加': '新增', # add
'轉義': '跳脫', # escape
'基類': '基底類別', # base class
}

Expand Down
100 changes: 55 additions & 45 deletions .scripts/summarize_progress/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,6 @@
from pathlib import Path


def entry_check(pofile: polib.POFile) -> str:
'''
Check the po file with how many entries are translated or not.
'''

lines_tranlated = len(pofile.translated_entries())
lines_untranlated = len(pofile.untranslated_entries())

if lines_tranlated == 0:
result = "❌"
elif lines_untranlated == 0:
result = "✅"
else:
lines_all = lines_tranlated + lines_untranlated
progress = lines_tranlated / lines_all
progress_percentage = round(progress * 100, 2)
result = f"{progress_percentage} %"

return result


def get_open_issues_count() -> int:
'''
Fetch GitHub API to get the number of OPEN ISSUES.
Expand Down Expand Up @@ -89,20 +68,23 @@ def get_github_issues() -> list:


def format_line_table_header() -> list:
return [f"|Filename|Progress|Issue|Assignee|\r\n",
return [f"|Filename|Progress (#string)|Issue|Assignee|\r\n",
f"|-------:|:-------|:----|:-------|\r\n"]


def format_issue_link(url: str) -> str:
return f"[{url.split('/')[-1]}]({url})" if len(url) > 0 else ''


def format_line_file(filename: str, data: dict) -> str:
return f"|`{filename}`|{data['progress']}|{format_issue_link(data['issue'])}|{data['assignee']}|\r\n"
def format_line_po_issue_display(issue_link: str, issue_number: str, progress: float, create_issue_link: str) -> str:
if issue_link:
return f"[{issue_number}]({issue_link})"
if progress != 100.:
return f"[create issue]({create_issue_link})"
return ""


def format_line_directory(dirname: str) -> str:
return f"## {dirname}\r\n"
def format_line_po(filename: str, po_link: str, progress: str, num_entries: str, issue_display: str, assignee: str) -> str:
progress_display = f"{progress} %"
if progress == 100:
progress_display = "✅"
return f"|[`{filename}`]({po_link})|{progress_display} ({num_entries:,})|{issue_display}|{assignee}|\r\n"


if __name__ == "__main__":
Expand All @@ -117,11 +99,17 @@ def format_line_directory(dirname: str) -> str:
for filepath in glob.glob(str(BASE_DIR / "**/*.po"), recursive=True):
path = Path(filepath)
filename = path.name
dirname = path.parent.name if path.parent.name != BASE_DIR.name else '/'
dirname = path.parent.name if path.parent.name != BASE_DIR.name else 'root'
po = polib.pofile(filepath)

num_entries = len(list(filter(lambda e: not e.obsolete, po)))
num_translated = len(po.translated_entries())
summary.setdefault(dirname, {})[filename] = {
'progress': entry_check(po),
'po_info': {
'num_entries': num_entries,
'num_translated': num_translated,
'progress': round(num_translated / num_entries * 100, 2),
},
'issue': '',
'assignee': '',
}
Expand All @@ -137,25 +125,47 @@ def format_line_directory(dirname: str) -> str:
pass

'''
Adding Space for Formatting Markdown Link
'''

'''
Format the lines that will write into the markdown file,
Format the lines that will be written into the markdown file,
also sort the directory name and file name.
'''
writeliner = []
summary_sorted = dict(sorted(summary.items()))
total_entries, total_translated = 0, 0
for dirname, filedict in summary_sorted.items():
writeliner.append(format_line_directory(dirname))
writeliner.extend(format_line_table_header())

dir_total_entries, dir_total_translated = 0, 0
lines = []
filedict_sorted = dict(sorted(filedict.items()))
for filename, filedata in filedict_sorted.items():
writeliner.append(format_line_file(filename, filedata))
file_path = f"{dirname}/{filename}" if dirname else filename
po_link = f"https://github.com/python/python-docs-zh-tw/tree/3.13/{file_path}"
issue_link = filedata['issue']
issue_number = f"#{issue_link.split('/')[-1]}"
create_issue_link = f"https://github.com/python/python-docs-zh-tw/issues/new?title=Translate%20`{file_path}`"
issue_display = format_line_po_issue_display(issue_link, issue_number, filedata['po_info']['progress'], create_issue_link)
line_po = format_line_po(
filename,
po_link,
filedata['po_info']['progress'],
filedata['po_info']['num_entries'],
issue_display,
filedata['assignee'],
)
lines.append(line_po)

dir_total_entries += filedata['po_info']['num_entries']
dir_total_translated += filedata['po_info']['num_translated']

dir_progress = round(dir_total_translated / dir_total_entries * 100, 2)
writeliner.append(f"## {dirname} ({dir_progress}%)\r\n")
writeliner.extend(format_line_table_header())
writeliner.extend(lines)

total_entries += dir_total_entries
total_translated += dir_total_translated

overall_progress = round(total_translated / total_entries * 100, 2)
title = f"## Overall Progress: {overall_progress}% ({total_translated:,} / {total_entries:,})\r\n"
writeliner = [title] + writeliner

with open(
f"summarize_progress/result.md",
"w",
) as file:
with open(f"summarize_progress/result.md", "w") as file:
file.writelines(writeliner)
14 changes: 9 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -89,21 +89,21 @@ prepare_cpython: ## Prepare CPython clone at `../cpython/`.


$(VENV)/bin/activate:
python3 -m venv $(VENV)
uv venv $(VENV)

$(VENV)/bin/sphinx-build: $(VENV)/bin/activate
. $(VENV)/bin/activate; python3 -m pip install sphinx python-docs-theme
. $(VENV)/bin/activate; uv pip install sphinx python-docs-theme

$(VENV)/bin/sphinx-lint: $(VENV)/bin/activate
. $(VENV)/bin/activate; python3 -m pip install sphinx-lint
. $(VENV)/bin/activate; uv pip install sphinx-lint

$(VENV)/bin/blurb: $(VENV)/bin/activate
. $(VENV)/bin/activate; python3 -m pip install blurb
. $(VENV)/bin/activate; uv pip install blurb


.PHONY: upgrade_venv
upgrade_venv: $(VENV)/bin/activate ## Upgrade the venv that compiles the doc
@. $(VENV)/bin/activate; python3 -m pip install -q --upgrade sphinx python-docs-theme blurb sphinx-lint
@. $(VENV)/bin/activate; uv pip install -q --upgrade sphinx python-docs-theme blurb sphinx-lint


.PHONY: progress
Expand Down Expand Up @@ -156,6 +156,10 @@ rm_cpython: ## Remove cloned cpython repo
lint: $(VENV)/bin/sphinx-lint ## Run sphinx-lint
$(VENV)/bin/sphinx-lint --enable default-role

.PHONY: wrap
wrap: ## Run powrap on modified po files
uvx powrap --modified

# This allows us to accept extra arguments (by doing nothing when we get a job that doesn't match, rather than throwing an error)
%:
@:
5 changes: 3 additions & 2 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ the PSF for inclusion in the documentation.
請注意此予翻譯專案的授權:Python 的說明文件是以全球的志工社群來維護。透過張貼\
此專案在 Transifex、GitHub 以及其他公眾場合,以及邀請你參與,我們向你提出一個\
協議:你必須將你對於 Python 說明文件或是 Python 說明文件翻譯的貢獻以 CC0\
(請參考 https://creativecommons.org/publicdomain/zero/1.0/legalcode/
(請參考 https://creativecommons.org/publicdomain/zero/1.0/legalcode/
)的方式授權給 PSF 使用。你可以公開地聲明你所貢獻翻譯的部分,並且如果你的翻譯被 PSF
採用,你可以(但並不須要)送出一個修改,其包含在 Misc/ACKS 或是 TRANSLATORS
檔案裡增加合適的注釋。雖然這個說明文件貢獻協議並沒有說明 PSF 有義務納入你的\
Expand Down Expand Up @@ -84,6 +84,7 @@ the PSF for inclusion in the documentation.
- `安裝好 git <https://help.github.com/articles/set-up-git/>`_\ (Windows
上請參考 https://gitforwindows.org/)
- 一個 ``.po`` 檔的編輯器。推薦使用 `Poedit <https://poedit.net>`_,若熟悉 po 檔用一般文字編輯器亦可。
- 參考 `uv Installation <https://docs.astral.sh/uv/getting-started/installation/>`_ 安裝 uv,以便在本機端預覽翻譯成果。
- macOS 的使用者還需要先利用 `homebrew <https://brew.sh/index_zh-tw>`_ 安裝 gettext,屆時 Sphinx 會使用到。

.. code-block:: bash
Expand Down Expand Up @@ -232,7 +233,7 @@ the PSF for inclusion in the documentation.
其中最簡單的貢獻方式就是更新 *fuzzy entries*,讓曾經翻譯的內容保持與最新版本的文件
同步。請參考\ `尋找有翻譯過但需校閱的 fuzzy entries`_ 段落。

此外,當前的目標為完成 **Tutorial** 的翻譯,因此在 ``tutorial/`` 底下的所有
此外,目前的目標為完成 **Tutorial** 的翻譯,因此在 ``tutorial/`` 底下的所有
po 檔皆為首要的翻譯對象。你也可以幫忙校對已經翻譯過的內容。


Expand Down
Loading
Loading