From 3242cd89a5cc60c5d1570ec00109595df82b43da Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 25 Aug 2025 17:17:57 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20[pre-commit.ci]=20Auto=20format?= =?UTF-8?q?=20from=20pre-commit.com=20hooks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/translate.py | 46 +++++++++++++++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 11 deletions(-) diff --git a/scripts/translate.py b/scripts/translate.py index 36dc6c021..398e5aecb 100644 --- a/scripts/translate.py +++ b/scripts/translate.py @@ -1,10 +1,10 @@ import secrets import subprocess +from collections.abc import Iterable from functools import lru_cache -from pathlib import Path from os import sep as pathsep +from pathlib import Path from typing import Annotated -from collections.abc import Iterable import git import typer @@ -356,10 +356,21 @@ def generate_en_path(*, lang: str, path: Path) -> Path: @app.command() def translate_page( *, - language: Annotated[str, typer.Option(envvar="LANGUAGE", help="Target language, e.g. `es`, `fr`, `de`")], - en_path: Annotated[Path, typer.Option(envvar="EN_PATH", help="Path to the English source, relative to the FastAPI root directory, e.g. `docs/en/docs/index.md`")], + language: Annotated[ + str, + typer.Option(envvar="LANGUAGE", help="Target language, e.g. `es`, `fr`, `de`"), + ], + en_path: Annotated[ + Path, + typer.Option( + envvar="EN_PATH", + help="Path to the English source, relative to the FastAPI root directory, e.g. `docs/en/docs/index.md`", + ), + ], ) -> None: - assert language != "en", "`en` is the source language, choose another language as translation target" + assert language != "en", ( + "`en` is the source language, choose another language as translation target" + ) langs = get_langs() language_name = langs[language] lang_path = Path(f"docs/{language}") @@ -452,13 +463,25 @@ def iter_en_paths_to_translate() -> Iterable[Path]: @app.command() def translate_lang( - language: Annotated[str, typer.Option(envvar="LANGUAGE", help="Target language, e.g. `es`, `fr`, `de`")], - mode: Annotated[str, typer.Option(help="Which files of the target language to translate, one of: `missing`, `existing`, `all`")] = "missing", + language: Annotated[ + str, + typer.Option(envvar="LANGUAGE", help="Target language, e.g. `es`, `fr`, `de`"), + ], + mode: Annotated[ + str, + typer.Option( + help="Which files of the target language to translate, one of: `missing`, `existing`, `all`" + ), + ] = "missing", verbose: Annotated[bool, typer.Option(help="Print all paths")] = False, - preview: Annotated[bool, typer.Option(help="Show what will be done, but do not translate")] = False + preview: Annotated[ + bool, typer.Option(help="Show what will be done, but do not translate") + ] = False, ) -> None: allowed_modes = ["missing", "existing", "all"] - assert mode in allowed_modes, f"`mode` parameter must be one of {", ".join(f"`{mode}`" for mode in allowed_modes)}" + assert mode in allowed_modes, ( + f"`mode` parameter must be one of {', '.join(f'`{mode}`' for mode in allowed_modes)}" + ) translatable_paths = list(iter_en_paths_to_translate()) missing_paths: list[Path] = [] @@ -475,12 +498,13 @@ def translate_lang( print(f" - {p}") else: print() + print_pathinfo("translatable paths", translatable_paths) print_pathinfo("paths with a translation", existing_paths) print_pathinfo("paths with no translation", missing_paths) print(f"Mode: translate {mode}") - if mode == 'missing' or (mode == "all" and len(existing_paths) == 0): + if mode == "missing" or (mode == "all" and len(existing_paths) == 0): tbd_paths = missing_paths action = "translate" elif mode == "existing" or (mode == "all" and len(missing_paths) == 0): @@ -493,7 +517,7 @@ def translate_lang( if not preview: for c, p in enumerate(tbd_paths): - print(f"({c+1}/{len(tbd_paths)}) Translating: {p}") + print(f"({c + 1}/{len(tbd_paths)}) Translating: {p}") translate_page(language=language, en_path=p) print(f"Done translating: {p}")