| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -107,12 +107,6 @@ python3 scripts/update_python_version.py v3.15.0 --keep-src | |||
| 107 | 107 | ||
| 108 | 108 | این اسکریپت نسخهٔ مشخصشدهٔ CPython را کلون میکند، قالبهای gettext (`*.pot`) را از روی آن میسازد، فایلهای `.po` موجود را با `msgmerge` بهروزرسانی میکند، برای صفحات جدید فایل `.po` تازه میسازد و در پایان همهٔ فایلها را با `msgfmt --check` صحتسنجی میکند. بعد از اجرای آن، خروجی را بازبینی کنید و اعتبارهای سربرگ را (در صورت نیاز با `scripts/update_po_headers.py`) بهروزرسانی کنید. | |
| 109 | 109 | ||
| 110 | - ## اولویتها | ||
| 111 | - | ||
| 112 | - اگر تازهکار هستید، اول روی فایلهایی تمرکز کنید که برای قرار گرفتن فارسی در «تغییردهندهٔ زبان» (language switcher) مستندات پایتون لازماند: | ||
| 113 | - | ||
| 114 | - - `bugs.po` | ||
| 115 | - - همهٔ فایلهای `tutorial/` | ||
| 116 | - - `library/functions.po` | ||
| 110 | + ## مقدار ترجمهی باقیمانده | ||
| 117 | 111 | ||
| 118 | 112 | با `python3 scripts/translation_status.py --only-incomplete` میتوانید وضعیت دقیق هر فایل را ببینید. | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -31,17 +31,31 @@ def file_stats(path: Path): | |||
| 31 | 31 | ) | |
| 32 | 32 | ||
| 33 | 33 | ||
| 34 | - def collect_files(paths): | ||
| 34 | + def collect_files(paths, exclude=None): | ||
| 35 | + exclude = {Path(e).resolve() for e in (exclude or [])} | ||
| 35 | 36 | files = [] | |
| 37 | + | ||
| 38 | + def is_excluded(path): | ||
| 39 | + resolved = path.resolve() | ||
| 40 | + return resolved in exclude or any( | ||
| 41 | + parent in exclude for parent in resolved.parents | ||
| 42 | + ) | ||
| 43 | + | ||
| 36 | 44 | for arg in paths: | |
| 37 | 45 | p = Path(arg) | |
| 38 | 46 | if p.is_dir(): | |
| 47 | + if is_excluded(p): | ||
| 48 | + continue | ||
| 39 | 49 | for f in p.rglob("*.po"): | |
| 40 | 50 | if any(part.startswith(".") for part in f.parts): | |
| 41 | 51 | continue | |
| 52 | + if is_excluded(f): | ||
| 53 | + continue | ||
| 42 | 54 | files.append(f) | |
| 43 | 55 | elif p.suffix == ".po": | |
| 44 | - files.append(p) | ||
| 56 | + if not is_excluded(p): | ||
| 57 | + files.append(p) | ||
| 58 | + | ||
| 45 | 59 | return files | |
| 46 | 60 | ||
| 47 | 61 | ||
@@ -66,10 +80,14 @@ def main(): | |||
| 66 | 80 | action="store_true", | |
| 67 | 81 | help="Hide files that are already fully translated", | |
| 68 | 82 | ) | |
| 83 | + parser.add_argument( | ||
| 84 | + "--exclude", | ||
| 85 | + nargs="*", | ||
| 86 | + help="Exclude files or directories from scan", | ||
| 87 | + ) | ||
| 69 | 88 | parser.add_argument("--format", choices=["text", "markdown", "csv"], default="text") | |
| 70 | 89 | args = parser.parse_args() | |
| 71 | - | ||
| 72 | - files = collect_files(args.paths) | ||
| 90 | + files = collect_files(args.paths, args.exclude) | ||
| 73 | 91 | if not files: | |
| 74 | 92 | print("No .po files found.") | |
| 75 | 93 | sys.exit(1) | |
| Back | FazBrowse Home | New Git URL |
0 commit comments