├── .gitignore ├── .tx └── config ├── TEAM.md ├── README.md ├── .github ├── scripts │ └── manage_translation.py └── workflows │ └── update-and-build.yml ├── Makefile └── RESOURCE.md /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | venv/ 3 | tx 4 | LICENSE 5 | -------------------------------------------------------------------------------- /.tx/config: -------------------------------------------------------------------------------- 1 | [main] 2 | host = https://api.transifex.com 3 | -------------------------------------------------------------------------------- /TEAM.md: -------------------------------------------------------------------------------- 1 | | | Роль | Переклав | Переглянув | Вичитав | 2 | |:---|:---|:---|:---|:---| 3 | | u:kazanzhy | coordinator | 48858 | 301 | 0 | 4 | | u:cocoatomo | coordinator | 0 | 0 | 0 | 5 | | u:szrubkowski | reviewer | 0 | 0 | 0 | 6 | | u:serhii_pavlenko | reviewer | 13 | 1 | 0 | 7 | | u:andriisoldatenko | reviewer | 0 | 0 | 0 | 8 | | u:yolgaai | reviewer | 53 | 91 | 0 | 9 | | u:orgkhnargh | reviewer | 0 | 0 | 0 | 10 | | u:IamTetiana | reviewer | 0 | 0 | 0 | 11 | | u:alex.solonenko | reviewer | 0 | 0 | 0 | 12 | | u:arthurdnu | reviewer | 0 | 0 | 0 | 13 | | u:byme8 | reviewer | 5 | 13 | 0 | 14 | | u:OlegVMelnyk | reviewer | 0 | 0 | 0 | 15 | | u:dmitriy.golub | reviewer | 0 | 0 | 0 | 16 | | u:fedorov.mykhailo | reviewer | 0 | 0 | 0 | 17 | | u:nazar_q | reviewer | 0 | 0 | 0 | 18 | | u:nickolai.zt | reviewer | 0 | 0 | 0 | 19 | | u:roykoand | reviewer | 0 | 0 | 0 | 20 | | u:brabadu | reviewer | 0 | 0 | 0 | 21 | | u:NadiiaGorash | reviewer | 6 | 74 | 0 | 22 | | u:melnnnika | reviewer | 0 | 0 | 0 | 23 | | u:andrii_the_wise | reviewer | 0 | 0 | 0 | 24 | | u:kuzyo.taras | reviewer | 3 | 38 | 0 | 25 | | u:serhiy.romanov | reviewer | 0 | 0 | 0 | 26 | | u:kvrware | reviewer | 0 | 0 | 0 | 27 | | u:hyzyla | reviewer | 0 | 4 | 0 | 28 | | u:kari0space | reviewer | 0 | 0 | 0 | 29 | | u:VKa5 | reviewer | 67 | 369 | 0 | 30 | | u:ElonMaks | reviewer | 0 | 0 | 0 | 31 | | u:danberg | reviewer | 0 | 0 | 0 | 32 | | u:webknjaz | reviewer | 0 | 0 | 0 | 33 | | u:healplease | reviewer | 0 | 0 | 0 | 34 | | u:hellowfacey | reviewer | 16 | 0 | 0 | 35 | | u:Meliowant | reviewer | 0 | 0 | 0 | 36 | | u:chernyshov.eugene | reviewer | 0 | 0 | 0 | 37 | | u:atymoshchuk | reviewer | 0 | 0 | 0 | 38 | | u:CrispCrow | reviewer | 0 | 1 | 0 | 39 | | u:rotbartsemen | reviewer | 0 | 0 | 0 | 40 | | u:artemdwo | reviewer | 0 | 0 | 0 | 41 | | u:odinneodin | reviewer | 0 | 0 | 0 | 42 | | u:staaceyD | reviewer | 10 | 0 | 0 | 43 | | u:vk777 | reviewer | 0 | 0 | 0 | 44 | | u:selfkilla666 | reviewer | 0 | 0 | 0 | 45 | | u:Sofiiia18 | reviewer | 0 | 0 | 0 | 46 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Український переклад документації Python 2 | ======================================== 3 | ![build](https://github.com/python/python-docs-uk/workflows/.github/workflows/update-and-build.yml/badge.svg) 4 | 5 | Якщо ви знайшли помилку або маєте пропозицію, 6 | [додати issue](https://github.com/python/python-docs-uk/issues) у цьому проєкті або запропонуйте зміни: 7 | 8 | * Зареєструйтесь на платформі [Transifex](https://www.transifex.com/) 9 | * Перейдіть на сторінку [документації Python](https://www.transifex.com/python-doc/python-newest/). 10 | * Натисніть кнопку „Join Team”, оберіть українську (uk) мову та натисніть „Join”, щоб приєднатися до команди. 11 | * Приєднавшись до команди, виберіть ресурс, що хочете виправити/оновити. 12 | * Ваш прогрес буде відображатися у файлі [TEAM.md](TEAM.md). 13 | 14 | Додаткову інформацію про використання Transifex дивіться [в документації](https://docs.transifex.com/getting-started-1/translators). 15 | 16 | Українська мова з’явиться в меню вибору мови docs.python.org, [коли будуть повністю перекладені](https://www.python.org/dev/peps/pep-0545/#add-translation-to-the-language-switcher): 17 | * `bugs`, 18 | * всі ресурси в каталозі `tutorial`, 19 | * `library/functions`. 20 | Поточний прогрес у файлі [RESOURCE.md](RESOURCE.md) 21 | 22 | **Як переглянути останню збірку документації?** 23 | 24 | Завантажте останню створену документацію зі списку артефактів в останній дії GitHub (вкладка Actions). 25 | Переклади завантажуються з Transifex до цього репозиторію щодня. 26 | Документація на python.org оновлюється приблизно раз на день. 27 | 28 | **Канали зв'язку** 29 | 30 | * [Telegram-чат перекладачів](https://t.me/+dXwqHZ0KPKYyNDc6) 31 | * [Python translations working group](https://mail.python.org/mailman3/lists/translation.python.org/) 32 | * [Python Documentation Special Interest Group](https://www.python.org/community/sigs/current/doc-sig/) 33 | 34 | **Ліцензія** 35 | 36 | Запрошуючи вас до спільного створення проєкту на платформі Transifex, ми пропонуємо договір на передачу ваших перекладів 37 | Python Software Foundation [по ліцензії CC0](https://creativecommons.org/publicdomain/zero/1.0/deed.uk). 38 | Натомість ви побачите, що ви є перекладачем тієї частини, яку ви переклали. 39 | Ви висловлюєте свою згоду з цією угодою, надаючи свою роботу для включення в документацію. 40 | 41 | **Налаштування** 42 | * `pip install transifex-python` 43 | * Згенерувати [ключ API](https://app.transifex.com/user/settings/api/) та зберегти локально 44 | * `export TX_TOKEN=token_from_previous_step` 45 | 46 | **Оновлення статистики** 47 | * `.github/scripts/manage_translation.py recreate_resource_stats` 48 | * `.github/scripts/manage_translation.py recreate_team_stats` 49 | 50 | **Оновлення локального перекладу** 51 | * `.github/scripts/manage_translation.py recreate_config` 52 | * `tx pull -l uk --force --skip` 53 | 54 | **Подяка** 55 | * Maciej Olko - Polish team 56 | * Julien Palard - French team 57 | * Tomo Cocoa - Japanese team 58 | -------------------------------------------------------------------------------- /.github/scripts/manage_translation.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # 3 | # This python file contains utility scripts to manage Python docs Ukrainian translation. 4 | # It has to be run inside the python-docs-uk git root directory. 5 | 6 | import os 7 | import re 8 | from argparse import ArgumentParser 9 | from pathlib import Path 10 | 11 | from transifex.api import transifex_api 12 | 13 | 14 | transifex_api.setup(auth=os.getenv('TX_TOKEN')) 15 | 16 | RESOURCE_NAME_MAP = {'glossary_': 'glossary'} 17 | 18 | LANG = 'uk' 19 | 20 | ORGANISATION_ID = 'o:python-doc' 21 | PROJECT_ID = 'o:python-doc:p:python-newest' 22 | LANGUAGE_ID = f'l:{LANG}' 23 | ORGANISATION = transifex_api.Organization.get(id=ORGANISATION_ID) 24 | PROJECT = transifex_api.Project.get(id=PROJECT_ID) 25 | LANGUAGE = transifex_api.Language.get(id=LANGUAGE_ID) 26 | 27 | 28 | def _slug_to_file_path(slug: str) -> Path: 29 | """Set of rules how to transform slug to translation file path""" 30 | file_path = RESOURCE_NAME_MAP.get(slug, slug) # Legacy slug to file mapping 31 | file_path = file_path.replace('--', '/') 32 | if re.match(r'\d+_\d+', file_path): 33 | file_path = file_path.replace('_', '.') 34 | file_path = file_path + '.po' 35 | return Path(file_path) 36 | 37 | 38 | def recreate_config() -> None: 39 | """Regenerate Transifex client config for all resources.""" 40 | resources = transifex_api.Resource.filter(project=PROJECT).all() 41 | with open('.tx/config', 'w') as fo: 42 | fo.writelines(('[main]\n', 'host = https://api.transifex.com\n',)) 43 | for resource in resources: 44 | path = _slug_to_file_path(resource.slug) 45 | fo.writelines(( 46 | '\n', 47 | f'[{resource.id}]\n', 48 | f'file_filter = {path}\n', 49 | 'type = PO\n', 50 | 'source_lang = en\n', 51 | 'minimum_perc = 0\n', 52 | f'trans.{LANG} = {path}\n', 53 | f'source_file = {path}\n', 54 | f'resource_name = {resource.name}\n' 55 | )) 56 | 57 | 58 | def recreate_resource_stats() -> None: 59 | """Create resource stats.""" 60 | stats = transifex_api.ResourceLanguageStats.filter(project=PROJECT, language=LANGUAGE).all() 61 | with open('RESOURCE.md', 'w') as fo: 62 | fo.writelines(('| Файл | Перекладено | Переглянуто | Вичитано |\n', '|:-----|:-----|:-----|:-----|\n')) 63 | for stat in stats: 64 | file_name = _slug_to_file_path(stat.id.split(':')[5]) 65 | translated_pct = round(100 * stat.attributes['translated_words'] / stat.attributes['total_words'], 1) 66 | reviewed_pct = round(100 * stat.attributes['reviewed_words'] / stat.attributes['total_words'], 1) 67 | proofread_pct = round(100 * stat.attributes['proofread_words'] / stat.attributes['total_words'], 1) 68 | fo.writelines(f'| {file_name} | {translated_pct} % | {reviewed_pct} % | {proofread_pct} % |\n') 69 | 70 | 71 | def recreate_team_stats() -> None: 72 | """Create contributor stats""" 73 | members = transifex_api.TeamMembership.filter(organization=ORGANISATION, language=LANGUAGE).all() 74 | 75 | users = {member.user.id: member.attributes['role'] for member in members} 76 | translators = dict.fromkeys(users.keys(), 0) 77 | reviewers = dict.fromkeys(users.keys(), 0) 78 | proofreaders = dict.fromkeys(users.keys(), 0) 79 | 80 | resources = transifex_api.Resource.filter(project=PROJECT).all() 81 | for resource in resources: 82 | translations = transifex_api.ResourceTranslation.filter(resource=resource, language=LANGUAGE).all() 83 | for translation in translations: 84 | if translation.relationships['translator']: 85 | translators[translation.relationships['translator']['data']['id']] += 1 86 | if translation.relationships['reviewer']: 87 | reviewers[translation.relationships['reviewer']['data']['id']] += 1 88 | if translation.relationships['proofreader']: 89 | proofreaders[translation.relationships['proofreader']['data']['id']] += 1 90 | 91 | with open('TEAM.md', 'w') as fo: 92 | fo.writelines(('| | Роль | Переклав | Переглянув | Вичитав |\n', '|:---|:---|:---|:---|:---|\n',)) 93 | for user, role in users.items(): 94 | fo.writelines(f"| {user} | {role} | {translators[user]} | {reviewers[user]} | {proofreaders[user]} |\n") 95 | 96 | 97 | if __name__ == "__main__": 98 | RUNNABLE_SCRIPTS = ('recreate_config', 'recreate_resource_stats', 'recreate_team_stats') 99 | 100 | parser = ArgumentParser() 101 | parser.add_argument('cmd', nargs=1, choices=RUNNABLE_SCRIPTS) 102 | options = parser.parse_args() 103 | 104 | eval(options.cmd[0])() 105 | -------------------------------------------------------------------------------- /.github/workflows/update-and-build.yml: -------------------------------------------------------------------------------- 1 | name: Translation and Linting Workflow 2 | 3 | on: 4 | schedule: 5 | - cron: '0 6 * * *' 6 | push: 7 | branches: ['main'] 8 | pull_request: 9 | branches: ['main'] 10 | workflow_dispatch: 11 | 12 | jobs: 13 | 14 | update-translation: 15 | runs-on: ubuntu-latest 16 | strategy: 17 | matrix: 18 | version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] 19 | steps: 20 | - uses: styfle/cancel-workflow-action@main 21 | with: 22 | access_token: ${{ secrets.GITHUB_TOKEN }} 23 | - uses: actions/setup-python@master 24 | with: 25 | python-version: '3.12' 26 | - run: sudo apt-get install -y gettext rsync 27 | - run: pip install transifex-python six sphinx-intl blurb 28 | - run: curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash 29 | working-directory: /usr/local/bin 30 | - uses: actions/checkout@master 31 | with: 32 | repository: python/cpython 33 | ref: main 34 | - run: make gettext 35 | working-directory: ./Doc 36 | - run: sphinx-intl create-txconfig 37 | working-directory: ./Doc/build 38 | - run: sphinx-intl update-txconfig-resources --transifex-organization-name python-doc --transifex-project-name python-newest -d . -p gettext 39 | working-directory: ./Doc/build 40 | env: 41 | TX_TOKEN: ${{ secrets.TX_TOKEN }} 42 | - run: tx pull -l uk --force --skip 43 | working-directory: ./Doc/build 44 | env: 45 | TX_TOKEN: ${{ secrets.TX_TOKEN }} 46 | - run: find -name "*.po" -exec msgcat --no-location -o {} {} \; 47 | working-directory: ./Doc/build 48 | - uses: actions/checkout@master 49 | with: 50 | ref: ${{ matrix.version }} 51 | path: ./Doc/build/uk/LC_MESSAGES 52 | - run: | 53 | git config --local user.email github-actions@github.com 54 | git config --local user.name "GitHub Action's update-translation job" 55 | git add -f . 56 | git commit -m 'Update translation from Transifex' || true 57 | working-directory: ./Doc/build/uk/LC_MESSAGES 58 | - uses: ad-m/github-push-action@master 59 | with: 60 | branch: ${{ matrix.version }} 61 | github_token: ${{ secrets.GITHUB_TOKEN }} 62 | directory: ./Doc/build/uk/LC_MESSAGES 63 | 64 | lint-translation: 65 | runs-on: ubuntu-latest 66 | strategy: 67 | matrix: 68 | version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] 69 | needs: ['update-translation'] 70 | continue-on-error: true 71 | steps: 72 | - uses: actions/setup-python@master 73 | with: 74 | python-version: '3.12' 75 | - run: pip install sphinx-lint 76 | - uses: actions/checkout@master 77 | with: 78 | ref: ${{ matrix.version }} 79 | - uses: rffontenelle/sphinx-lint-problem-matcher@v1.0.0 80 | - run: sphinx-lint 81 | 82 | build-translation: 83 | runs-on: ubuntu-latest 84 | strategy: 85 | matrix: 86 | version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] 87 | format: [html, latex] 88 | needs: ['update-translation'] 89 | steps: 90 | - uses: actions/setup-python@master 91 | with: 92 | python-version: '3.12' 93 | - uses: actions/checkout@master 94 | with: 95 | repository: python/cpython 96 | ref: ${{ matrix.version }} 97 | - run: make venv 98 | working-directory: ./Doc 99 | - uses: actions/checkout@master 100 | with: 101 | ref: ${{ matrix.version }} 102 | path: Doc/locales/uk/LC_MESSAGES 103 | - run: git pull 104 | working-directory: ./Doc/locales/uk/LC_MESSAGES 105 | - uses: sphinx-doc/github-problem-matcher@v1.1 106 | - run: make -e SPHINXOPTS="-D language='uk' -D gettext_compact=0 --keep-going --color" SPHINXERRORHANDLING="" ${{ matrix.format }} 107 | working-directory: ./Doc 108 | - uses: actions/upload-artifact@master 109 | if: success() || failure() 110 | with: 111 | name: build-${{ matrix.version }}-${{ matrix.format }} 112 | path: Doc/build/${{ matrix.format }} 113 | 114 | output-pdf: 115 | runs-on: ubuntu-latest 116 | strategy: 117 | matrix: 118 | version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13'] 119 | needs: ['build-translation'] 120 | steps: 121 | - uses: actions/download-artifact@master 122 | with: 123 | name: build-${{ matrix.version }}-latex 124 | - run: sudo apt-get update 125 | - run: sudo apt-get install -y latexmk texlive-xetex fonts-freefont-otf xindy 126 | - run: make 127 | - uses: actions/upload-artifact@master 128 | with: 129 | name: build-${{ matrix.version }}-pdf 130 | path: . 131 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for uk Python Documentation 2 | # 3 | # Here is what you can do: 4 | # 5 | # - make # Automatically build an HTML local version 6 | # - make todo # To list remaining tasks 7 | # - make verifs # To check for correctness: wrapping, spelling 8 | # - make wrap # To check for wrapping 9 | # - make spell # To check for spelling 10 | # - make merge # To merge pot from upstream 11 | # - make fuzzy # To find fuzzy strings 12 | # - make progress # To compute current progression 13 | # 14 | # Modes are: autobuild-stable, autobuild-dev, and autobuild-html, 15 | # documented in gen/src/3.6/Doc/Makefile as we're only delegating the 16 | # real work to the Python Doc Makefile. 17 | 18 | # Configuration 19 | 20 | # The CPYTHON_CURRENT_COMMIT is the commit, in the cpython repository, 21 | # from which we generated our po files. We use it here so when we 22 | # test build, we're building with the .rst files that generated our 23 | # .po files. 24 | CPYTHON_CURRENT_COMMIT := eec8e61992fb654d4cf58de4d727c18622b8303e 25 | 26 | CPYTHON_PATH := ../cpython/ 27 | 28 | LANGUAGE := uk 29 | BRANCH := 3.11 30 | 31 | EXCLUDED := whatsnew/ c-api/ 32 | 33 | # Internal variables 34 | 35 | UPSTREAM := https://github.com/python/cpython 36 | 37 | PYTHON := $(shell which python3) 38 | MODE := html 39 | POSPELL_TMP_DIR := .pospell/ 40 | JOBS := auto 41 | 42 | # Detect OS 43 | 44 | ifeq '$(findstring ;,$(PATH))' ';' 45 | detected_OS := Windows 46 | else 47 | detected_OS := $(shell uname 2>/dev/null || echo Unknown) 48 | detected_OS := $(patsubst CYGWIN%,Cygwin,$(detected_OS)) 49 | detected_OS := $(patsubst MSYS%,MSYS,$(detected_OS)) 50 | detected_OS := $(patsubst MINGW%,MSYS,$(detected_OS)) 51 | endif 52 | 53 | ifeq ($(detected_OS),Darwin) # Mac OS X 54 | CP_CMD := gcp # accessible with `brew install coreutils` or `brew upgrade coreutils` 55 | else 56 | CP_CMD := cp 57 | endif 58 | 59 | .PHONY: all 60 | all: ensure_prerequisites 61 | git -C $(CPYTHON_PATH) checkout $(CPYTHON_CURRENT_COMMIT) 62 | mkdir -p locales/$(LANGUAGE)/LC_MESSAGES/ 63 | $(CP_CMD) -u --parents *.po */*.po locales/$(LANGUAGE)/LC_MESSAGES/ 64 | $(MAKE) -C $(CPYTHON_PATH)/Doc/ \ 65 | SPHINXOPTS='-qW -j$(JOBS) \ 66 | -D locale_dirs=$(abspath locales) \ 67 | -D language=$(LANGUAGE) \ 68 | -D gettext_compact=0 \ 69 | -D latex_engine=xelatex \ 70 | -D latex_elements.inputenc= \ 71 | -D latex_elements.fontenc=' \ 72 | $(MODE) 73 | git -C $(CPYTHON_PATH) checkout - 74 | @echo "Build success, open file://$(abspath $(CPYTHON_PATH))/Doc/build/html/index.html or run 'make serve' to see them." 75 | 76 | 77 | .PHONY: ensure_prerequisites 78 | ensure_prerequisites: 79 | @if [ -z $(CPYTHON_PATH) ]; then \ 80 | echo "Your CPYTHON_PATH is empty, please provide one."; \ 81 | exit 1; \ 82 | fi 83 | @if ! [ -d $(CPYTHON_PATH) ]; then \ 84 | echo "Building the translation requires a cpython clone."; \ 85 | echo "Please provide the path to a clone using the CPYTHON_PATH variable."; \ 86 | echo "(Currently CPYTHON_PATH is $(CPYTHON_PATH)."; \ 87 | echo "So you may want to run:"; \ 88 | echo ""; \ 89 | echo " git clone $(UPSTREAM) $(CPYTHON_PATH)"; \ 90 | exit 1; \ 91 | fi 92 | @if [ -n "$$(git -C $(CPYTHON_PATH) status --porcelain)" ]; then \ 93 | echo "Your cpython clone at $(CPYTHON_PATH) is not clean."; \ 94 | echo "In order to avoid breaking things, please clean it first."; \ 95 | exit 1; \ 96 | fi 97 | @if ! (blurb help >/dev/null 2>&1 && sphinx-build --version >/dev/null 2>&1); then \ 98 | git -C $(CPYTHON_PATH) checkout $(BRANCH); \ 99 | echo "You're missing dependencies, please enable a venv and install:"; \ 100 | echo ""; \ 101 | echo " python -m pip install -r requirements.txt -r $(CPYTHON_PATH)/Doc/requirements.txt"; \ 102 | exit 1; \ 103 | fi 104 | 105 | .PHONY: sphinx-lint 106 | sphinx-lint: 107 | @echo "Checking all files using sphinx-lint..." 108 | @sphinx-lint --enable all --disable line-too-long **/*.po 109 | 110 | .PHONY: serve 111 | serve: 112 | $(MAKE) -C $(CPYTHON_PATH)/Doc/ serve 113 | 114 | 115 | .PHONY: progress 116 | progress: 117 | @$(PYTHON) -c 'import sys; print("{:.1%}".format(int(sys.argv[1]) / int(sys.argv[2])))' \ 118 | $(shell msgcat *.po */*.po | msgattrib --translated | grep -c '^msgid') \ 119 | $(shell msgcat *.po */*.po | grep -c '^msgid') 120 | 121 | 122 | .PHONY: todo 123 | todo: ensure_prerequisites 124 | potodo --exclude venv .venv $(EXCLUDED) 125 | 126 | .PHONY: wrap 127 | wrap: ensure_prerequisites 128 | @echo "Verify wrapping" 129 | powrap --check --quiet *.po **/*.po 130 | 131 | SRCS = $(shell git diff --name-only $(BRANCH) | grep '.po$$') 132 | # foo/bar.po => $(POSPELL_TMP_DIR)/foo/bar.po.out 133 | DESTS = $(addprefix $(POSPELL_TMP_DIR)/,$(addsuffix .out,$(SRCS))) 134 | 135 | .PHONY: spell 136 | spell: ensure_prerequisites $(DESTS) 137 | 138 | $(POSPELL_TMP_DIR)/%.po.out: %.po dict 139 | @echo "Pospell checking $<..." 140 | mkdir -p $(@D) 141 | pospell -p dict -l fr_FR $< && touch $@ 142 | 143 | .PHONY: fuzzy 144 | fuzzy: ensure_prerequisites 145 | potodo -f --exclude venv .venv $(EXCLUDED) 146 | 147 | .PHONY: verifs 148 | verifs: wrap spell 149 | 150 | .PHONY: merge 151 | merge: ensure_prerequisites 152 | @echo "Merge from $(UPSTREAM)" 153 | git -C $(CPYTHON_PATH) checkout $(BRANCH) 154 | git -C $(CPYTHON_PATH) pull --ff-only 155 | (cd $(CPYTHON_PATH)/Doc; sphinx-build -Q -b gettext -D gettext_compact=0 . ../pot) 156 | find $(CPYTHON_PATH)/pot/ -name '*.pot' |\ 157 | while read -r POT; \ 158 | do \ 159 | PO="./$$(echo "$$POT" | sed "s#$(CPYTHON_PATH)/pot/##; s#\.pot\$$#.po#")"; \ 160 | mkdir -p "$$(dirname "$$PO")"; \ 161 | if [ -f "$$PO" ]; \ 162 | then \ 163 | msgmerge --backup=off --force-po -U "$$PO" "$$POT"; \ 164 | else \ 165 | msgcat -o "$$PO" "$$POT"; \ 166 | fi \ 167 | done 168 | rm -fr $(CPYTHON_PATH)/pot/ 169 | sed -i 's|^#: .*Doc/|#: |' *.po */*.po 170 | powrap -m 171 | @printf "\n%s %s\n" "Replace CPYTHON_CURRENT_COMMIT in Makefile by: " $(shell git -C $(CPYTHON_PATH) rev-parse HEAD) 172 | @printf 'To add, you can use:\n git status -s | grep "^ M .*\.po" | cut -d" " -f3 | while read -r file; do if [ $$(git diff "$$file" | wc -l) -gt 13 ]; then git add "$$file"; fi ; done\n' 173 | 174 | .PHONY: clean 175 | clean: 176 | @echo "Cleaning *.mo and $(POSPELL_TMP_DIR)" 177 | rm -fr $(POSPELL_TMP_DIR) 178 | find -name '*.mo' -delete 179 | -------------------------------------------------------------------------------- /RESOURCE.md: -------------------------------------------------------------------------------- 1 | | Файл | Перекладено | Переглянуто | Вичитано | 2 | |:-----|:-----|:-----|:-----| 3 | | about.po | 70.8 % | 70.8 % | 0.0 % | 4 | | bugs.po | 100.0 % | 90.9 % | 0.0 % | 5 | | contents.po | 100.0 % | 100.0 % | 0.0 % | 6 | | copyright.po | 100.0 % | 82.0 % | 0.0 % | 7 | | glossary.po | 67.6 % | 18.4 % | 0.0 % | 8 | | license.po | 4.2 % | 4.2 % | 0.0 % | 9 | | sphinx.po | 17.4 % | 17.2 % | 0.0 % | 10 | | c-api/abstract.po | 100.0 % | 100.0 % | 0.0 % | 11 | | c-api/allocation.po | 60.7 % | 17.0 % | 0.0 % | 12 | | c-api/apiabiversion.po | 100.0 % | 0.0 % | 0.0 % | 13 | | c-api/arg.po | 52.0 % | 0.3 % | 0.0 % | 14 | | c-api/bool.po | 11.6 % | 0.0 % | 0.0 % | 15 | | c-api/buffer.po | 73.9 % | 0.0 % | 0.0 % | 16 | | c-api/bytearray.po | 83.5 % | 0.0 % | 0.0 % | 17 | | c-api/bytes.po | 79.7 % | 0.0 % | 0.0 % | 18 | | c-api/call.po | 74.3 % | 0.0 % | 0.0 % | 19 | | c-api/capsule.po | 71.0 % | 0.0 % | 0.0 % | 20 | | c-api/cell.po | 73.6 % | 0.0 % | 0.0 % | 21 | | c-api/code.po | 7.6 % | 0.0 % | 0.0 % | 22 | | c-api/codec.po | 100.0 % | 0.0 % | 0.0 % | 23 | | c-api/complex.po | 41.9 % | 0.0 % | 0.0 % | 24 | | c-api/concrete.po | 100.0 % | 0.0 % | 0.0 % | 25 | | c-api/contextvars.po | 100.0 % | 0.0 % | 0.0 % | 26 | | c-api/conversion.po | 60.5 % | 6.9 % | 0.0 % | 27 | | c-api/coro.po | 100.0 % | 0.0 % | 0.0 % | 28 | | c-api/datetime.po | 47.1 % | 4.5 % | 0.0 % | 29 | | c-api/descriptor.po | 100.0 % | 0.0 % | 0.0 % | 30 | | c-api/dict.po | 33.3 % | 0.0 % | 0.0 % | 31 | | c-api/exceptions.po | 54.2 % | 0.0 % | 0.0 % | 32 | | c-api/file.po | 62.0 % | 0.0 % | 0.0 % | 33 | | c-api/float.po | 12.2 % | 0.0 % | 0.0 % | 34 | | c-api/function.po | 30.4 % | 0.0 % | 0.0 % | 35 | | c-api/gcsupport.po | 65.3 % | 0.0 % | 0.0 % | 36 | | c-api/gen.po | 100.0 % | 0.0 % | 0.0 % | 37 | | c-api/import.po | 47.5 % | 0.0 % | 0.0 % | 38 | | c-api/index.po | 100.0 % | 0.0 % | 0.0 % | 39 | | c-api/init.po | 51.4 % | 0.0 % | 0.0 % | 40 | | c-api/init_config.po | 60.1 % | 0.0 % | 0.0 % | 41 | | c-api/intro.po | 54.2 % | 0.0 % | 0.0 % | 42 | | c-api/iter.po | 75.7 % | 21.2 % | 0.0 % | 43 | | c-api/iterator.po | 100.0 % | 0.0 % | 0.0 % | 44 | | c-api/list.po | 64.1 % | 0.0 % | 0.0 % | 45 | | c-api/long.po | 18.3 % | 0.0 % | 0.0 % | 46 | | c-api/mapping.po | 27.5 % | 0.0 % | 0.0 % | 47 | | c-api/marshal.po | 37.2 % | 0.0 % | 0.0 % | 48 | | c-api/memory.po | 64.5 % | 0.0 % | 0.0 % | 49 | | c-api/memoryview.po | 92.1 % | 0.0 % | 0.0 % | 50 | | c-api/method.po | 87.0 % | 0.0 % | 0.0 % | 51 | | c-api/module.po | 55.5 % | 0.0 % | 0.0 % | 52 | | c-api/none.po | 7.5 % | 0.0 % | 0.0 % | 53 | | c-api/number.po | 89.2 % | 0.0 % | 0.0 % | 54 | | c-api/object.po | 43.6 % | 0.0 % | 0.0 % | 55 | | c-api/objimpl.po | 100.0 % | 0.0 % | 0.0 % | 56 | | c-api/refcounting.po | 16.8 % | 0.0 % | 0.0 % | 57 | | c-api/reflection.po | 33.0 % | 0.0 % | 0.0 % | 58 | | c-api/sequence.po | 93.6 % | 0.0 % | 0.0 % | 59 | | c-api/set.po | 76.2 % | 2.9 % | 0.0 % | 60 | | c-api/slice.po | 61.6 % | 0.0 % | 0.0 % | 61 | | c-api/stable.po | 51.4 % | 0.0 % | 0.0 % | 62 | | c-api/structures.po | 22.7 % | 0.0 % | 0.0 % | 63 | | c-api/sys.po | 68.5 % | 0.0 % | 0.0 % | 64 | | c-api/tuple.po | 54.9 % | 0.0 % | 0.0 % | 65 | | c-api/type.po | 35.9 % | 0.0 % | 0.0 % | 66 | | c-api/typehints.po | 30.6 % | 0.0 % | 0.0 % | 67 | | c-api/typeobj.po | 51.0 % | 0.0 % | 0.0 % | 68 | | c-api/unicode.po | 44.8 % | 0.0 % | 0.0 % | 69 | | c-api/utilities.po | 100.0 % | 0.0 % | 0.0 % | 70 | | c-api/veryhigh.po | 80.1 % | 0.0 % | 0.0 % | 71 | | c-api/weakref.po | 15.8 % | 0.0 % | 0.0 % | 72 | | distributing/index.po | 100.0 % | 0.0 % | 0.0 % | 73 | | extending/building.po | 57.1 % | 0.0 % | 0.0 % | 74 | | extending/embedding.po | 66.4 % | 0.0 % | 0.0 % | 75 | | extending/extending.po | 65.0 % | 0.0 % | 0.0 % | 76 | | extending/index.po | 86.4 % | 0.0 % | 0.0 % | 77 | | extending/newtypes.po | 56.2 % | 0.0 % | 0.0 % | 78 | | extending/newtypes_tutorial.po | 31.8 % | 0.0 % | 0.0 % | 79 | | extending/windows.po | 86.0 % | 0.0 % | 0.0 % | 80 | | faq/design.po | 69.1 % | 69.1 % | 0.0 % | 81 | | faq/extending.po | 75.0 % | 75.0 % | 0.0 % | 82 | | faq/general.po | 68.8 % | 68.0 % | 0.0 % | 83 | | faq/gui.po | 63.4 % | 63.4 % | 0.0 % | 84 | | faq/index.po | 100.0 % | 100.0 % | 0.0 % | 85 | | faq/installed.po | 100.0 % | 100.0 % | 0.0 % | 86 | | faq/library.po | 70.5 % | 0.0 % | 0.0 % | 87 | | faq/programming.po | 64.3 % | 0.0 % | 0.0 % | 88 | | faq/windows.po | 83.9 % | 0.0 % | 0.0 % | 89 | | howto/annotations.po | 84.7 % | 0.0 % | 0.0 % | 90 | | howto/argparse.po | 36.3 % | 0.0 % | 0.0 % | 91 | | howto/clinic.po | 100.0 % | 0.0 % | 0.0 % | 92 | | howto/cporting.po | 100.0 % | 0.0 % | 0.0 % | 93 | | howto/curses.po | 63.7 % | 0.0 % | 0.0 % | 94 | | howto/descriptor.po | 37.0 % | 0.0 % | 0.0 % | 95 | | howto/enum.po | 30.1 % | 0.0 % | 0.0 % | 96 | | howto/functional.po | 79.5 % | 0.0 % | 0.0 % | 97 | | howto/index.po | 4.6 % | 0.0 % | 0.0 % | 98 | | howto/instrumentation.po | 51.8 % | 0.0 % | 0.0 % | 99 | | howto/ipaddress.po | 81.7 % | 0.0 % | 0.0 % | 100 | | howto/logging-cookbook.po | 38.7 % | 0.0 % | 0.0 % | 101 | | howto/logging.po | 77.1 % | 0.0 % | 0.0 % | 102 | | howto/pyporting.po | 15.9 % | 0.0 % | 0.0 % | 103 | | howto/regex.po | 90.6 % | 90.3 % | 0.0 % | 104 | | howto/sockets.po | 93.5 % | 0.0 % | 0.0 % | 105 | | howto/sorting.po | 42.9 % | 0.3 % | 0.0 % | 106 | | howto/unicode.po | 82.8 % | 0.0 % | 0.0 % | 107 | | howto/urllib2.po | 59.4 % | 0.0 % | 0.0 % | 108 | | installing/index.po | 83.9 % | 0.0 % | 0.0 % | 109 | | library/__future__.po | 58.8 % | 0.0 % | 0.0 % | 110 | | library/__main__.po | 65.9 % | 0.0 % | 0.0 % | 111 | | library/_thread.po | 74.7 % | 0.0 % | 0.0 % | 112 | | library/abc.po | 42.8 % | 0.0 % | 0.0 % | 113 | | library/allos.po | 100.0 % | 0.0 % | 0.0 % | 114 | | library/archiving.po | 100.0 % | 0.0 % | 0.0 % | 115 | | library/argparse.po | 37.3 % | 0.0 % | 0.0 % | 116 | | library/array.po | 53.7 % | 0.0 % | 0.0 % | 117 | | library/ast.po | 48.2 % | 0.0 % | 0.0 % | 118 | | library/asyncio-api-index.po | 80.2 % | 0.0 % | 0.0 % | 119 | | library/asyncio-dev.po | 59.5 % | 0.0 % | 0.0 % | 120 | | library/asyncio-eventloop.po | 66.4 % | 0.0 % | 0.0 % | 121 | | library/asyncio-exceptions.po | 86.2 % | 0.0 % | 0.0 % | 122 | | library/asyncio-future.po | 77.8 % | 0.0 % | 0.0 % | 123 | | library/asyncio-llapi-index.po | 91.2 % | 0.0 % | 0.0 % | 124 | | library/asyncio-platforms.po | 79.8 % | 0.0 % | 0.0 % | 125 | | library/asyncio-policy.po | 74.5 % | 0.0 % | 0.0 % | 126 | | library/asyncio-protocol.po | 76.2 % | 0.0 % | 0.0 % | 127 | | library/asyncio-queue.po | 55.2 % | 0.0 % | 0.0 % | 128 | | library/asyncio-stream.po | 59.4 % | 0.0 % | 0.0 % | 129 | | library/asyncio-subprocess.po | 70.7 % | 0.0 % | 0.0 % | 130 | | library/asyncio-sync.po | 57.7 % | 0.0 % | 0.0 % | 131 | | library/asyncio-task.po | 34.8 % | 0.0 % | 0.0 % | 132 | | library/asyncio.po | 54.2 % | 50.0 % | 0.0 % | 133 | | library/atexit.po | 72.6 % | 0.0 % | 0.0 % | 134 | | library/audit_events.po | 73.0 % | 0.0 % | 0.0 % | 135 | | library/base64.po | 84.8 % | 0.0 % | 0.0 % | 136 | | library/bdb.po | 48.7 % | 0.0 % | 0.0 % | 137 | | library/binary.po | 100.0 % | 0.0 % | 0.0 % | 138 | | library/binascii.po | 83.2 % | 0.0 % | 0.0 % | 139 | | library/bisect.po | 22.8 % | 0.0 % | 0.0 % | 140 | | library/builtins.po | 63.1 % | 0.0 % | 0.0 % | 141 | | library/bz2.po | 82.4 % | 0.0 % | 0.0 % | 142 | | library/calendar.po | 48.4 % | 0.0 % | 0.0 % | 143 | | library/cmath.po | 27.1 % | 0.0 % | 0.0 % | 144 | | library/cmd.po | 40.4 % | 0.0 % | 0.0 % | 145 | | library/code.po | 67.8 % | 0.0 % | 0.0 % | 146 | | library/codecs.po | 95.1 % | 0.0 % | 0.0 % | 147 | | library/codeop.po | 44.8 % | 0.0 % | 0.0 % | 148 | | library/collections_abc.po | 25.5 % | 0.0 % | 0.0 % | 149 | | library/collections.po | 66.4 % | 0.0 % | 0.0 % | 150 | | library/colorsys.po | 41.8 % | 0.0 % | 0.0 % | 151 | | library/compileall.po | 88.0 % | 0.0 % | 0.0 % | 152 | | library/concurrency.po | 100.0 % | 3.4 % | 0.0 % | 153 | | library/concurrent_futures.po | 52.4 % | 0.0 % | 0.0 % | 154 | | library/concurrent.po | 82.4 % | 0.0 % | 0.0 % | 155 | | library/configparser.po | 64.5 % | 0.0 % | 0.0 % | 156 | | library/constants.po | 49.5 % | 0.0 % | 0.0 % | 157 | | library/contextlib.po | 58.0 % | 0.0 % | 0.0 % | 158 | | library/contextvars.po | 48.2 % | 0.0 % | 0.0 % | 159 | | library/copy.po | 66.8 % | 0.0 % | 0.0 % | 160 | | library/copyreg.po | 51.4 % | 0.0 % | 0.0 % | 161 | | library/crypto.po | 7.1 % | 0.0 % | 0.0 % | 162 | | library/csv.po | 56.8 % | 0.0 % | 0.0 % | 163 | | library/ctypes.po | 48.9 % | 0.0 % | 0.0 % | 164 | | library/curses_ascii.po | 97.6 % | 0.0 % | 0.0 % | 165 | | library/curses_panel.po | 97.5 % | 0.0 % | 0.0 % | 166 | | library/curses.po | 92.5 % | 0.0 % | 0.0 % | 167 | | library/custominterp.po | 19.4 % | 0.0 % | 0.0 % | 168 | | library/dataclasses.po | 10.8 % | 0.0 % | 0.0 % | 169 | | library/datatypes.po | 100.0 % | 0.0 % | 0.0 % | 170 | | library/datetime.po | 45.7 % | 1.3 % | 0.0 % | 171 | | library/dbm.po | 18.4 % | 0.0 % | 0.0 % | 172 | | library/debug.po | 100.0 % | 0.0 % | 0.0 % | 173 | | library/decimal.po | 54.2 % | 0.0 % | 0.0 % | 174 | | library/development.po | 100.0 % | 0.0 % | 0.0 % | 175 | | library/devmode.po | 75.1 % | 0.0 % | 0.0 % | 176 | | library/dialog.po | 100.0 % | 0.0 % | 0.0 % | 177 | | library/difflib.po | 71.4 % | 0.0 % | 0.0 % | 178 | | library/dis.po | 23.1 % | 0.0 % | 0.0 % | 179 | | library/distribution.po | 100.0 % | 0.0 % | 0.0 % | 180 | | library/doctest.po | 74.4 % | 0.0 % | 0.0 % | 181 | | library/email_charset.po | 86.8 % | 0.0 % | 0.0 % | 182 | | library/email_compat32-message.po | 91.6 % | 0.0 % | 0.0 % | 183 | | library/email_contentmanager.po | 86.5 % | 0.0 % | 0.0 % | 184 | | library/email_encoders.po | 81.5 % | 0.0 % | 0.0 % | 185 | | library/email_errors.po | 42.6 % | 0.0 % | 0.0 % | 186 | | library/email_examples.po | 14.1 % | 0.0 % | 0.0 % | 187 | | library/email_generator.po | 83.4 % | 0.0 % | 0.0 % | 188 | | library/email_header.po | 90.7 % | 0.0 % | 0.0 % | 189 | | library/email_headerregistry.po | 88.7 % | 0.0 % | 0.0 % | 190 | | library/email_iterators.po | 91.1 % | 0.0 % | 0.0 % | 191 | | library/email_message.po | 89.5 % | 0.0 % | 0.0 % | 192 | | library/email_mime.po | 81.2 % | 0.0 % | 0.0 % | 193 | | library/email_parser.po | 94.9 % | 0.0 % | 0.0 % | 194 | | library/email_policy.po | 93.3 % | 0.0 % | 0.0 % | 195 | | library/email.po | 91.2 % | 0.0 % | 0.0 % | 196 | | library/email_utils.po | 84.4 % | 0.0 % | 0.0 % | 197 | | library/ensurepip.po | 81.3 % | 0.0 % | 0.0 % | 198 | | library/enum.po | 2.4 % | 0.0 % | 0.0 % | 199 | | library/errno.po | 84.6 % | 0.0 % | 0.0 % | 200 | | library/exceptions.po | 61.6 % | 0.0 % | 0.0 % | 201 | | library/faulthandler.po | 61.0 % | 0.0 % | 0.0 % | 202 | | library/fcntl.po | 22.9 % | 0.0 % | 0.0 % | 203 | | library/filecmp.po | 80.4 % | 0.0 % | 0.0 % | 204 | | library/fileformats.po | 100.0 % | 0.0 % | 0.0 % | 205 | | library/fileinput.po | 83.0 % | 0.0 % | 0.0 % | 206 | | library/filesys.po | 100.0 % | 0.0 % | 0.0 % | 207 | | library/fnmatch.po | 46.6 % | 14.0 % | 0.0 % | 208 | | library/fractions.po | 27.9 % | 0.0 % | 0.0 % | 209 | | library/frameworks.po | 100.0 % | 0.0 % | 0.0 % | 210 | | library/ftplib.po | 52.5 % | 0.0 % | 0.0 % | 211 | | library/functional.po | 100.0 % | 0.0 % | 0.0 % | 212 | | library/functions.po | 59.4 % | 2.7 % | 0.0 % | 213 | | library/functools.po | 50.2 % | 0.0 % | 0.0 % | 214 | | library/gc.po | 81.6 % | 0.0 % | 0.0 % | 215 | | library/getopt.po | 30.9 % | 0.0 % | 0.0 % | 216 | | library/getpass.po | 59.3 % | 0.0 % | 0.0 % | 217 | | library/gettext.po | 63.3 % | 0.0 % | 0.0 % | 218 | | library/glob.po | 52.8 % | 0.0 % | 0.0 % | 219 | | library/graphlib.po | 70.8 % | 0.0 % | 0.0 % | 220 | | library/grp.po | 93.2 % | 0.0 % | 0.0 % | 221 | | library/gzip.po | 57.4 % | 0.0 % | 0.0 % | 222 | | library/hashlib.po | 61.9 % | 0.0 % | 0.0 % | 223 | | library/heapq.po | 79.8 % | 0.0 % | 0.0 % | 224 | | library/hmac.po | 81.0 % | 0.0 % | 0.0 % | 225 | | library/html_entities.po | 73.1 % | 0.0 % | 0.0 % | 226 | | library/html_parser.po | 67.3 % | 0.0 % | 0.0 % | 227 | | library/html.po | 100.0 % | 0.0 % | 0.0 % | 228 | | library/http_client.po | 60.5 % | 0.0 % | 0.0 % | 229 | | library/http_cookiejar.po | 92.1 % | 0.0 % | 0.0 % | 230 | | library/http_cookies.po | 62.7 % | 0.0 % | 0.0 % | 231 | | library/http.po | 42.8 % | 0.0 % | 0.0 % | 232 | | library/http_server.po | 64.8 % | 0.0 % | 0.0 % | 233 | | library/i18n.po | 100.0 % | 0.0 % | 0.0 % | 234 | | library/idle.po | 84.0 % | 0.0 % | 0.0 % | 235 | | library/imaplib.po | 78.3 % | 0.0 % | 0.0 % | 236 | | library/importlib_metadata.po | 11.6 % | 0.0 % | 0.0 % | 237 | | library/importlib.po | 58.5 % | 0.0 % | 0.0 % | 238 | | library/index.po | 100.0 % | 0.0 % | 0.0 % | 239 | | library/inspect.po | 58.7 % | 0.0 % | 0.0 % | 240 | | library/internet.po | 90.9 % | 0.0 % | 0.0 % | 241 | | library/intro.po | 38.0 % | 0.0 % | 0.0 % | 242 | | library/io.po | 72.2 % | 0.1 % | 0.0 % | 243 | | library/ipaddress.po | 89.3 % | 0.0 % | 0.0 % | 244 | | library/ipc.po | 100.0 % | 0.0 % | 0.0 % | 245 | | library/itertools.po | 20.5 % | 1.4 % | 0.0 % | 246 | | library/json.po | 49.0 % | 0.0 % | 0.0 % | 247 | | library/keyword.po | 100.0 % | 0.0 % | 0.0 % | 248 | | library/language.po | 100.0 % | 0.0 % | 0.0 % | 249 | | library/linecache.po | 94.5 % | 0.0 % | 0.0 % | 250 | | library/locale.po | 68.3 % | 0.0 % | 0.0 % | 251 | | library/logging_config.po | 70.5 % | 0.0 % | 0.0 % | 252 | | library/logging_handlers.po | 87.8 % | 0.0 % | 0.0 % | 253 | | library/logging.po | 70.1 % | 0.0 % | 0.0 % | 254 | | library/lzma.po | 90.1 % | 0.0 % | 0.0 % | 255 | | library/mailbox.po | 53.4 % | 0.0 % | 0.0 % | 256 | | library/markup.po | 100.0 % | 0.0 % | 0.0 % | 257 | | library/marshal.po | 32.8 % | 0.0 % | 0.0 % | 258 | | library/math.po | 56.2 % | 0.0 % | 0.0 % | 259 | | library/mimetypes.po | 81.9 % | 0.0 % | 0.0 % | 260 | | library/mm.po | 100.0 % | 0.0 % | 0.0 % | 261 | | library/mmap.po | 70.1 % | 69.4 % | 0.0 % | 262 | | library/modulefinder.po | 75.9 % | 0.0 % | 0.0 % | 263 | | library/modules.po | 100.0 % | 0.0 % | 0.0 % | 264 | | library/msvcrt.po | 25.2 % | 0.0 % | 0.0 % | 265 | | library/multiprocessing.po | 70.0 % | 0.0 % | 0.0 % | 266 | | library/multiprocessing_shared_memory.po | 3.9 % | 2.8 % | 0.0 % | 267 | | library/netdata.po | 100.0 % | 0.0 % | 0.0 % | 268 | | library/netrc.po | 73.1 % | 0.0 % | 0.0 % | 269 | | library/numbers.po | 42.1 % | 0.0 % | 0.0 % | 270 | | library/numeric.po | 100.0 % | 0.0 % | 0.0 % | 271 | | library/operator.po | 84.5 % | 0.0 % | 0.0 % | 272 | | library/optparse.po | 69.8 % | 0.0 % | 0.0 % | 273 | | library/os_path.po | 59.2 % | 0.0 % | 0.0 % | 274 | | library/os.po | 68.1 % | 0.0 % | 0.0 % | 275 | | library/pathlib.po | 29.5 % | 0.0 % | 0.0 % | 276 | | library/pdb.po | 50.1 % | 0.0 % | 0.0 % | 277 | | library/persistence.po | 100.0 % | 0.0 % | 0.0 % | 278 | | library/pickle.po | 66.1 % | 0.0 % | 0.0 % | 279 | | library/pickletools.po | 88.9 % | 0.0 % | 0.0 % | 280 | | library/pkgutil.po | 83.4 % | 0.0 % | 0.0 % | 281 | | library/platform.po | 70.4 % | 0.0 % | 0.0 % | 282 | | library/plistlib.po | 64.3 % | 0.0 % | 0.0 % | 283 | | library/poplib.po | 86.8 % | 0.0 % | 0.0 % | 284 | | library/posix.po | 68.0 % | 0.0 % | 0.0 % | 285 | | library/pprint.po | 31.7 % | 0.0 % | 0.0 % | 286 | | library/profile.po | 86.5 % | 0.0 % | 0.0 % | 287 | | library/pty.po | 79.7 % | 0.0 % | 0.0 % | 288 | | library/pwd.po | 68.3 % | 0.0 % | 0.0 % | 289 | | library/py_compile.po | 77.4 % | 0.0 % | 0.0 % | 290 | | library/pyclbr.po | 71.0 % | 0.0 % | 0.0 % | 291 | | library/pydoc.po | 31.5 % | 0.0 % | 0.0 % | 292 | | library/pyexpat.po | 85.3 % | 0.0 % | 0.0 % | 293 | | library/python.po | 100.0 % | 0.0 % | 0.0 % | 294 | | library/queue.po | 57.8 % | 0.0 % | 0.0 % | 295 | | library/quopri.po | 95.8 % | 0.0 % | 0.0 % | 296 | | library/random.po | 46.8 % | 0.4 % | 0.0 % | 297 | | library/re.po | 49.5 % | 0.0 % | 0.0 % | 298 | | library/readline.po | 27.1 % | 0.0 % | 0.0 % | 299 | | library/reprlib.po | 48.5 % | 0.0 % | 0.0 % | 300 | | library/resource.po | 86.1 % | 0.0 % | 0.0 % | 301 | | library/rlcompleter.po | 21.4 % | 0.0 % | 0.0 % | 302 | | library/runpy.po | 34.3 % | 0.0 % | 0.0 % | 303 | | library/sched.po | 76.3 % | 0.0 % | 0.0 % | 304 | | library/secrets.po | 66.9 % | 0.0 % | 0.0 % | 305 | | library/select.po | 62.4 % | 0.0 % | 0.0 % | 306 | | library/selectors.po | 81.4 % | 0.0 % | 0.0 % | 307 | | library/shelve.po | 65.8 % | 0.0 % | 0.0 % | 308 | | library/shlex.po | 93.8 % | 0.0 % | 0.0 % | 309 | | library/shutil.po | 61.0 % | 0.0 % | 0.0 % | 310 | | library/signal.po | 80.4 % | 0.0 % | 0.0 % | 311 | | library/site.po | 61.1 % | 0.0 % | 0.0 % | 312 | | library/smtplib.po | 80.1 % | 0.0 % | 0.0 % | 313 | | library/socket.po | 62.1 % | 0.0 % | 0.0 % | 314 | | library/socketserver.po | 59.8 % | 0.0 % | 0.0 % | 315 | | library/sqlite3.po | 9.7 % | 0.0 % | 0.0 % | 316 | | library/ssl.po | 72.9 % | 0.0 % | 0.0 % | 317 | | library/stat.po | 76.1 % | 0.0 % | 0.0 % | 318 | | library/statistics.po | 54.5 % | 0.0 % | 0.0 % | 319 | | library/stdtypes.po | 73.6 % | 0.0 % | 0.0 % | 320 | | library/string.po | 63.2 % | 0.0 % | 0.0 % | 321 | | library/stringprep.po | 90.1 % | 0.0 % | 0.0 % | 322 | | library/struct.po | 47.8 % | 0.0 % | 0.0 % | 323 | | library/subprocess.po | 64.9 % | 0.0 % | 0.0 % | 324 | | library/superseded.po | 1.4 % | 0.0 % | 0.0 % | 325 | | library/symtable.po | 47.1 % | 0.0 % | 0.0 % | 326 | | library/sys.po | 64.6 % | 0.0 % | 0.0 % | 327 | | library/sysconfig.po | 59.3 % | 0.0 % | 0.0 % | 328 | | library/syslog.po | 61.6 % | 0.0 % | 0.0 % | 329 | | library/tabnanny.po | 100.0 % | 0.0 % | 0.0 % | 330 | | library/tarfile.po | 54.3 % | 0.0 % | 0.0 % | 331 | | library/tempfile.po | 54.0 % | 0.0 % | 0.0 % | 332 | | library/termios.po | 69.7 % | 0.0 % | 0.0 % | 333 | | library/test.po | 86.3 % | 0.0 % | 0.0 % | 334 | | library/text.po | 100.0 % | 0.0 % | 0.0 % | 335 | | library/textwrap.po | 77.9 % | 0.0 % | 0.0 % | 336 | | library/threading.po | 80.0 % | 0.0 % | 0.0 % | 337 | | library/time.po | 73.0 % | 0.0 % | 0.0 % | 338 | | library/timeit.po | 66.0 % | 0.0 % | 0.0 % | 339 | | library/tk.po | 77.3 % | 0.0 % | 0.0 % | 340 | | library/tkinter_colorchooser.po | 100.0 % | 0.0 % | 0.0 % | 341 | | library/tkinter_dnd.po | 86.9 % | 0.0 % | 0.0 % | 342 | | library/tkinter_font.po | 100.0 % | 0.0 % | 0.0 % | 343 | | library/tkinter_messagebox.po | 2.1 % | 0.0 % | 0.0 % | 344 | | library/tkinter.po | 91.2 % | 0.0 % | 0.0 % | 345 | | library/tkinter_scrolledtext.po | 100.0 % | 0.0 % | 0.0 % | 346 | | library/tkinter_ttk.po | 86.8 % | 0.0 % | 0.0 % | 347 | | library/token.po | 21.0 % | 0.0 % | 0.0 % | 348 | | library/tokenize.po | 64.8 % | 0.0 % | 0.0 % | 349 | | library/trace.po | 87.8 % | 0.0 % | 0.0 % | 350 | | library/traceback.po | 20.3 % | 0.0 % | 0.0 % | 351 | | library/tracemalloc.po | 74.2 % | 0.0 % | 0.0 % | 352 | | library/tty.po | 14.6 % | 0.0 % | 0.0 % | 353 | | library/turtle.po | 59.8 % | 0.0 % | 0.0 % | 354 | | library/types.po | 64.7 % | 0.0 % | 0.0 % | 355 | | library/typing.po | 16.1 % | 0.0 % | 0.0 % | 356 | | library/unicodedata.po | 93.8 % | 0.0 % | 0.0 % | 357 | | library/unittest_mock-examples.po | 78.8 % | 0.0 % | 0.0 % | 358 | | library/unittest_mock.po | 70.3 % | 0.0 % | 0.0 % | 359 | | library/unittest.po | 83.3 % | 0.0 % | 0.0 % | 360 | | library/unix.po | 100.0 % | 0.0 % | 0.0 % | 361 | | library/urllib_error.po | 54.0 % | 0.0 % | 0.0 % | 362 | | library/urllib_parse.po | 78.4 % | 0.0 % | 0.0 % | 363 | | library/urllib.po | 100.0 % | 0.0 % | 0.0 % | 364 | | library/urllib_request.po | 75.6 % | 0.0 % | 0.0 % | 365 | | library/urllib_robotparser.po | 86.4 % | 0.0 % | 0.0 % | 366 | | library/uuid.po | 60.3 % | 0.0 % | 0.0 % | 367 | | library/venv.po | 19.2 % | 0.3 % | 0.0 % | 368 | | library/warnings.po | 77.3 % | 0.0 % | 0.0 % | 369 | | library/wave.po | 61.7 % | 0.0 % | 0.0 % | 370 | | library/weakref.po | 72.3 % | 0.0 % | 0.0 % | 371 | | library/webbrowser.po | 66.9 % | 0.0 % | 0.0 % | 372 | | library/windows.po | 100.0 % | 0.0 % | 0.0 % | 373 | | library/winreg.po | 91.4 % | 0.0 % | 0.0 % | 374 | | library/winsound.po | 58.7 % | 0.0 % | 0.0 % | 375 | | library/wsgiref.po | 72.3 % | 0.0 % | 0.0 % | 376 | | library/xml_dom_minidom.po | 80.6 % | 0.0 % | 0.0 % | 377 | | library/xml_dom.po | 98.9 % | 0.0 % | 0.0 % | 378 | | library/xml_dom_pulldom.po | 78.7 % | 0.0 % | 0.0 % | 379 | | library/xml_etree_elementtree.po | 77.5 % | 0.0 % | 0.0 % | 380 | | library/xml.po | 62.1 % | 0.0 % | 0.0 % | 381 | | library/xml_sax_handler.po | 95.2 % | 0.0 % | 0.0 % | 382 | | library/xml_sax.po | 99.3 % | 0.0 % | 0.0 % | 383 | | library/xml_sax_reader.po | 99.5 % | 0.0 % | 0.0 % | 384 | | library/xml_sax_utils.po | 79.1 % | 0.0 % | 0.0 % | 385 | | library/xmlrpc_client.po | 69.2 % | 0.0 % | 0.0 % | 386 | | library/xmlrpc.po | 89.2 % | 0.0 % | 0.0 % | 387 | | library/xmlrpc_server.po | 72.6 % | 0.0 % | 0.0 % | 388 | | library/zipapp.po | 88.4 % | 0.0 % | 0.0 % | 389 | | library/zipfile.po | 75.0 % | 0.0 % | 0.0 % | 390 | | library/zipimport.po | 89.2 % | 0.0 % | 0.0 % | 391 | | library/zlib.po | 90.7 % | 0.0 % | 0.0 % | 392 | | library/zoneinfo.po | 82.2 % | 0.0 % | 0.0 % | 393 | | reference/compound_stmts.po | 58.1 % | 0.0 % | 0.0 % | 394 | | reference/datamodel.po | 49.6 % | 0.0 % | 0.0 % | 395 | | reference/executionmodel.po | 50.1 % | 0.0 % | 0.0 % | 396 | | reference/expressions.po | 63.6 % | 0.0 % | 0.0 % | 397 | | reference/grammar.po | 0.5 % | 0.0 % | 0.0 % | 398 | | reference/import.po | 83.4 % | 0.0 % | 0.0 % | 399 | | reference/index.po | 100.0 % | 0.0 % | 0.0 % | 400 | | reference/introduction.po | 79.2 % | 0.0 % | 0.0 % | 401 | | reference/lexical_analysis.po | 65.1 % | 0.0 % | 0.0 % | 402 | | reference/simple_stmts.po | 65.9 % | 0.0 % | 0.0 % | 403 | | reference/toplevel_components.po | 96.8 % | 0.0 % | 0.0 % | 404 | | tutorial/appendix.po | 58.4 % | 39.9 % | 0.0 % | 405 | | tutorial/appetite.po | 100.0 % | 100.0 % | 0.0 % | 406 | | tutorial/classes.po | 63.8 % | 0.0 % | 0.0 % | 407 | | tutorial/controlflow.po | 60.1 % | 0.0 % | 0.0 % | 408 | | tutorial/datastructures.po | 54.6 % | 0.6 % | 0.0 % | 409 | | tutorial/errors.po | 36.0 % | 17.4 % | 0.0 % | 410 | | tutorial/floatingpoint.po | 33.7 % | 0.0 % | 0.0 % | 411 | | tutorial/index.po | 100.0 % | 100.0 % | 0.0 % | 412 | | tutorial/inputoutput.po | 61.1 % | 0.0 % | 0.0 % | 413 | | tutorial/interactive.po | 77.2 % | 0.0 % | 0.0 % | 414 | | tutorial/interpreter.po | 79.9 % | 0.0 % | 0.0 % | 415 | | tutorial/introduction.po | 51.8 % | 0.0 % | 0.0 % | 416 | | tutorial/modules.po | 56.1 % | 0.0 % | 0.0 % | 417 | | tutorial/stdlib.po | 59.7 % | 0.0 % | 0.0 % | 418 | | tutorial/stdlib2.po | 54.4 % | 0.0 % | 0.0 % | 419 | | tutorial/venv.po | 50.5 % | 0.0 % | 0.0 % | 420 | | tutorial/whatnow.po | 100.0 % | 77.2 % | 0.0 % | 421 | | using/cmdline.po | 59.8 % | 0.0 % | 0.0 % | 422 | | using/configure.po | 31.8 % | 0.0 % | 0.0 % | 423 | | using/editors.po | 25.0 % | 0.0 % | 0.0 % | 424 | | using/index.po | 100.0 % | 0.0 % | 0.0 % | 425 | | using/mac.po | 1.3 % | 0.0 % | 0.0 % | 426 | | using/unix.po | 53.4 % | 0.0 % | 0.0 % | 427 | | using/windows.po | 67.3 % | 0.0 % | 0.0 % | 428 | | whatsnew/2_0.po | 61.1 % | 0.0 % | 0.0 % | 429 | | whatsnew/2_1.po | 62.3 % | 0.0 % | 0.0 % | 430 | | whatsnew/2_2.po | 57.2 % | 0.0 % | 0.0 % | 431 | | whatsnew/2_3.po | 49.5 % | 0.0 % | 0.0 % | 432 | | whatsnew/2_4.po | 73.1 % | 0.0 % | 0.0 % | 433 | | whatsnew/2_5.po | 74.2 % | 0.0 % | 0.0 % | 434 | | whatsnew/2_6.po | 71.9 % | 0.0 % | 0.0 % | 435 | | whatsnew/2_7.po | 64.4 % | 0.0 % | 0.0 % | 436 | | whatsnew/3_0.po | 65.0 % | 0.0 % | 0.0 % | 437 | | whatsnew/3_1.po | 62.8 % | 0.0 % | 0.0 % | 438 | | whatsnew/3_10.po | 65.9 % | 0.0 % | 0.0 % | 439 | | whatsnew/3_2.po | 63.9 % | 0.0 % | 0.0 % | 440 | | whatsnew/3_3.po | 82.1 % | 0.0 % | 0.0 % | 441 | | whatsnew/3_4.po | 86.0 % | 0.0 % | 0.0 % | 442 | | whatsnew/3_5.po | 83.1 % | 0.2 % | 0.0 % | 443 | | whatsnew/3_6.po | 80.8 % | 0.0 % | 0.0 % | 444 | | whatsnew/3_7.po | 86.3 % | 0.0 % | 0.0 % | 445 | | whatsnew/3_8.po | 77.1 % | 0.0 % | 0.0 % | 446 | | whatsnew/3_9.po | 69.0 % | 0.0 % | 0.0 % | 447 | | whatsnew/changelog.po | 0.1 % | 0.0 % | 0.0 % | 448 | | whatsnew/index.po | 100.0 % | 0.0 % | 0.0 % | 449 | | library/security_warnings.po | 60.9 % | 0.0 % | 0.0 % | 450 | | c-api/frame.po | 0.0 % | 0.0 % | 0.0 % | 451 | | howto/isolating-extensions.po | 0.2 % | 0.0 % | 0.0 % | 452 | | library/asyncio-extending.po | 0.0 % | 0.0 % | 0.0 % | 453 | | library/asyncio-runner.po | 0.2 % | 0.0 % | 0.0 % | 454 | | library/importlib_resources.po | 0.2 % | 0.0 % | 0.0 % | 455 | | library/importlib_resources_abc.po | 56.6 % | 0.0 % | 0.0 % | 456 | | library/sys_path_init.po | 0.3 % | 0.0 % | 0.0 % | 457 | | library/tomllib.po | 5.8 % | 0.0 % | 0.0 % | 458 | | whatsnew/3_11.po | 1.2 % | 0.0 % | 0.0 % | 459 | | c-api/perfmaps.po | 0.0 % | 0.0 % | 0.0 % | 460 | | howto/perf_profiling.po | 0.1 % | 0.0 % | 0.0 % | 461 | | whatsnew/3_12.po | 3.4 % | 0.0 % | 0.0 % | 462 | | library/sys_monitoring.po | 0.0 % | 0.0 % | 0.0 % | 463 | | library/cmdline.po | 0.0 % | 0.0 % | 0.0 % | 464 | | c-api/hash.po | 0.0 % | 0.0 % | 0.0 % | 465 | | howto/gdb_helpers.po | 0.1 % | 0.0 % | 0.0 % | 466 | | howto/mro.po | 0.1 % | 0.0 % | 0.0 % | 467 | | c-api/monitoring.po | 0.2 % | 0.0 % | 0.0 % | 468 | | c-api/time.po | 0.3 % | 0.0 % | 0.0 % | 469 | | howto/timerfd.po | 0.2 % | 0.0 % | 0.0 % | 470 | | using/ios.po | 0.0 % | 0.0 % | 0.0 % | 471 | | whatsnew/3_13.po | 4.3 % | 0.0 % | 0.0 % | 472 | | howto/free-threading-extensions.po | 0.1 % | 0.0 % | 0.0 % | 473 | | deprecations/pending-removal-in-3_14.po | 0.0 % | 0.0 % | 0.0 % | 474 | | deprecations/pending-removal-in-3_15.po | 0.0 % | 0.0 % | 0.0 % | 475 | | deprecations/pending-removal-in-3_16.po | 0.0 % | 0.0 % | 0.0 % | 476 | | deprecations/pending-removal-in-future.po | 0.0 % | 0.0 % | 0.0 % | 477 | | deprecations/pending-removal-in-3_13.po | 0.0 % | 0.0 % | 0.0 % | 478 | | deprecations/index.po | 0.0 % | 0.0 % | 0.0 % | 479 | | deprecations/c-api-pending-removal-in-3_14.po | 0.0 % | 0.0 % | 0.0 % | 480 | | deprecations/c-api-pending-removal-in-3_15.po | 0.0 % | 0.0 % | 0.0 % | 481 | | deprecations/c-api-pending-removal-in-future.po | 0.0 % | 0.0 % | 0.0 % | 482 | | using/android.po | 0.0 % | 0.0 % | 0.0 % | 483 | | howto/free-threading-python.po | 0.4 % | 0.0 % | 0.0 % | 484 | | howto/argparse-optparse.po | 52.8 % | 0.0 % | 0.0 % | 485 | | library/aifc.po | 0.0 % | 0.0 % | 0.0 % | 486 | | library/asynchat.po | 0.0 % | 0.0 % | 0.0 % | 487 | | library/asyncore.po | 0.0 % | 0.0 % | 0.0 % | 488 | | library/audioop.po | 0.0 % | 0.0 % | 0.0 % | 489 | | library/cgi.po | 0.0 % | 0.0 % | 0.0 % | 490 | | library/cgitb.po | 0.0 % | 0.0 % | 0.0 % | 491 | | library/chunk.po | 0.0 % | 0.0 % | 0.0 % | 492 | | library/crypt.po | 0.0 % | 0.0 % | 0.0 % | 493 | | library/distutils.po | 0.0 % | 0.0 % | 0.0 % | 494 | | library/imghdr.po | 0.0 % | 0.0 % | 0.0 % | 495 | | library/imp.po | 0.0 % | 0.0 % | 0.0 % | 496 | | library/mailcap.po | 0.0 % | 0.0 % | 0.0 % | 497 | | library/msilib.po | 0.0 % | 0.0 % | 0.0 % | 498 | | library/nntplib.po | 0.0 % | 0.0 % | 0.0 % | 499 | | library/nis.po | 0.0 % | 0.0 % | 0.0 % | 500 | | library/ossaudiodev.po | 0.0 % | 0.0 % | 0.0 % | 501 | | library/pipes.po | 0.0 % | 0.0 % | 0.0 % | 502 | | library/removed.po | 0.0 % | 0.0 % | 0.0 % | 503 | | library/smtpd.po | 0.0 % | 0.0 % | 0.0 % | 504 | | library/sndhdr.po | 0.0 % | 0.0 % | 0.0 % | 505 | | library/spwd.po | 0.0 % | 0.0 % | 0.0 % | 506 | | library/sunau.po | 0.0 % | 0.0 % | 0.0 % | 507 | | library/telnetlib.po | 0.0 % | 0.0 % | 0.0 % | 508 | | library/uu.po | 0.0 % | 0.0 % | 0.0 % | 509 | | library/xdrlib.po | 0.0 % | 0.0 % | 0.0 % | 510 | | library/cmdlinelibs.po | 0.0 % | 0.0 % | 0.0 % | 511 | --------------------------------------------------------------------------------