diff --git a/docs/specs/DEVX-162-registry-push-race-historical.md b/docs/specs/DEVX-162-registry-push-race-historical.md new file mode 100644 index 0000000..d6572c3 --- /dev/null +++ b/docs/specs/DEVX-162-registry-push-race-historical.md @@ -0,0 +1,41 @@ +# DEVX-162: Fix registry push race condition: serialize uploads + retry on HTTP 500 + +## Problem +The Gitea container registry (v1.27.2) has a known race condition in +`BlobUploader.Append()` where concurrent blob uploads cause the file +offset and DB model to get out of sync, producing HTTP 500 "offset +mismatch between file and model" errors. This causes the build-images +workflow to fail intermittently when pushing runner images. + +The `package_blob_upload` table accumulates stale entries from failed +uploads that worsen the problem over time. + +## Approach +Two fixes in devx (a third fix — scheduled cleanup — is tracked +separately as OBL-INFRA-537): + +1. Set `DOCKER_MAX_CONCURRENT_UPLOADS=1` in the build-images workflow + to serialize blob uploads and avoid the race condition. + +2. Add HTTP 500 retry logic to `push_image` in `build_image.py`. + When a push fails with HTTP 500 (not "already exists"), retry up + to 3 times with exponential backoff (5s, 10s, 20s). + +REQ-1: Build-images workflow sets DOCKER_MAX_CONCURRENT_UPLOADS=1 +REQ-2: push_image retries on HTTP 500 with exponential backoff +REQ-3: All existing tests pass with 100% coverage + +## Test Plan +- Unit tests for retry logic (mock subprocess) +- Manual: trigger build-images workflow and verify push succeeds + +## Deploy Plan +- Merge to master + +## Rollback Plan +- Revert the merge commit + +## Acceptance Criteria +- [x] REQ-1: Build-images workflow sets DOCKER_MAX_CONCURRENT_UPLOADS=1 +- [x] REQ-2: push_image retries on HTTP 500 with exponential backoff +- [x] REQ-3: All existing tests pass with 100% coverage diff --git a/docs/specs/DEVX-162.md b/docs/specs/DEVX-162.md index d6572c3..55d1b81 100644 --- a/docs/specs/DEVX-162.md +++ b/docs/specs/DEVX-162.md @@ -1,41 +1,58 @@ -# DEVX-162: Fix registry push race condition: serialize uploads + retry on HTTP 500 +# DEVX-162: Fix Gitea repo-variable read contract and fail closed on unknown nightly status ## Problem -The Gitea container registry (v1.27.2) has a known race condition in -`BlobUploader.Append()` where concurrent blob uploads cause the file -offset and DB model to get out of sync, producing HTTP 500 "offset -mismatch between file and model" errors. This causes the build-images -workflow to fail intermittently when pushing runner images. -The `package_blob_upload` table accumulates stale entries from failed -uploads that worsen the problem over time. +`GiteaClient.get_repo_variable()` reads `body["value"]`, but the deployed +Gitea returns the variable payload in the `data` field: + +```json +{"owner_id":0,"repo_id":1,"name":"NIGHTLY_STATUS","data":"passed:5842","description":""} +``` + +Every read therefore returns `None`. `devx.ci.nightly_gate --action check` +interprets `None` as "bootstrap — allow deploy," so a real `failed:` status +is invisible and the gate is permanently fail-open. Infra nightly run 5800 set +`NIGHTLY_STATUS=passed:5800` while platform/customer integration tests were +still failing — and even a correct `failed` value would have been ignored. + +Additionally, an unrecognized non-empty status currently allows deploys +(fail-open instead of fail-closed). + +Verified against the live API: `POST`/`PUT` accept `{"value": ...}` and work; +only the GET response uses `data`. The earlier `DEVX-162` spec (registry push +race) is preserved as `DEVX-162-registry-push-race-historical.md`. ## Approach -Two fixes in devx (a third fix — scheduled cleanup — is tracked -separately as OBL-INFRA-537): -1. Set `DOCKER_MAX_CONCURRENT_UPLOADS=1` in the build-images workflow - to serialize blob uploads and avoid the race condition. +REQ-1: `src/devx/api_clients.py` — `get_repo_variable` reads `data` first +and falls back to `value` for older server/fixture compatibility. Write +path unchanged (PUT/POST `{"value": ...}` verified live: 201/204). -2. Add HTTP 500 retry logic to `push_image` in `build_image.py`. - When a push fails with HTTP 500 (not "already exists"), retry up - to 3 times with exponential backoff (5s, 10s, 20s). +REQ-2: `src/devx/ci/nightly_gate.py` — unknown non-empty status blocks the +deploy (fail closed) instead of allowing it. Unset (bootstrap) still +allows. -REQ-1: Build-images workflow sets DOCKER_MAX_CONCURRENT_UPLOADS=1 -REQ-2: push_image retries on HTTP 500 with exponential backoff -REQ-3: All existing tests pass with 100% coverage +REQ-3: Tests cover the `data` field, the `value` fallback, and fail-closed +unknown status. ## Test Plan -- Unit tests for retry logic (mock subprocess) -- Manual: trigger build-images workflow and verify push succeeds + +- `pytest tests/unit/test_api_clients.py tests/unit/test_nightly_gate.py` +- `make lint-all` (ruff, pyright, bandit, translations) ## Deploy Plan -- Merge to master + +Merge via auto-merge; post-merge workflow publishes a new devx package to the +Gitea PyPI registry and opens the infra dependency-bump PR automatically. ## Rollback Plan -- Revert the merge commit + +Revert the commit; infra's pinned devx version keeps the previous behavior +until the dependency PR lands. ## Acceptance Criteria -- [x] REQ-1: Build-images workflow sets DOCKER_MAX_CONCURRENT_UPLOADS=1 -- [x] REQ-2: push_image retries on HTTP 500 with exponential backoff -- [x] REQ-3: All existing tests pass with 100% coverage + +- [x] `get_repo_variable` returns the `data` field and falls back to `value`. +- [x] Unknown nightly status exits non-zero and writes `nightly-gate-passed=false`. +- [x] Unit tests cover `data`, `value` fallback and fail-closed unknown status. +- [x] `make lint-all` and unit tests pass. diff --git a/src/devx/api_clients.py b/src/devx/api_clients.py index 5b595a9..a68a969 100644 --- a/src/devx/api_clients.py +++ b/src/devx/api_clients.py @@ -392,7 +392,10 @@ class GiteaClient: """ try: r = self._request("GET", f"/actions/variables/{name}") - return r.json().get("value") + body = r.json() + if "data" in body: + return body["data"] + return body.get("value") except APIError as e: if e.status == 404: return None diff --git a/src/devx/ci/nightly_gate.py b/src/devx/ci/nightly_gate.py index fae7b02..b21310a 100644 --- a/src/devx/ci/nightly_gate.py +++ b/src/devx/ci/nightly_gate.py @@ -97,10 +97,17 @@ def cli(repo: str, action: str, run_id: str, github_output: bool) -> None: write_github_output("nightly-status", status) raise click.ClickException(_("Nightly gate failed — staging deploy blocked.")) else: - click.echo(f"[nightly-gate] Unknown nightly status: {status} — allowing deploy.") + click.echo( + _( + "[nightly-gate] Unknown nightly status: {status} — blocking deploy (fail closed).", + status=status, + ), + err=True, + ) if github_output: - write_github_output("nightly-gate-passed", "true") + write_github_output("nightly-gate-passed", "false") write_github_output("nightly-status", status) + raise click.ClickException(_("Unknown nightly status — staging deploy blocked.")) elif action == "set-passed": set_nightly_status(client, f"passed:{run_id}" if run_id else "passed") diff --git a/src/devx/translations.json b/src/devx/translations.json index 1e8d2c3..1fae5ed 100644 --- a/src/devx/translations.json +++ b/src/devx/translations.json @@ -1,63 +1,51 @@ { "\n=== Summary ===": { - "bg": "\n=== Summary ===", - "de": "\n=== Summary ===", + "bg": "\n=== Обобщение ===", + "de": "\n=== Zusammenfassung ===", "en": "\n=== Summary ===", "pl": "\n=== Podsumowanie ===", - "ru": "\n=== Summary ===", - "zh": "\n=== Summary ===", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "\n=== Сводка ===", + "zh": "\n=== 摘要 ===" }, "\nAll documentation coverage checks passed!": { - "bg": "\nAll documentation coverage checks passed!", - "de": "\nAll documentation coverage checks passed!", + "bg": "\nВсички проверки за покритие на документацията преминаха успешно!", + "de": "\nAlle Dokumentations-Abdeckungsprüfungen bestanden!", "en": "\nAll documentation coverage checks passed!", "pl": "\nWszystkie kontrole pokrycia dokumentacji zakończone pomyślnie!", - "ru": "\nAll documentation coverage checks passed!", - "zh": "\nAll documentation coverage checks passed!", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "\nВсе проверки покрытия документации пройдены!", + "zh": "\n所有文档覆盖率检查均已通过!" }, "\nCHANGELOG version ordering:": { - "bg": "\nCHANGELOG version ordering:", - "de": "\nCHANGELOG version ordering:", + "bg": "\nПодреждане на версиите в CHANGELOG:", + "de": "\nReihenfolge der CHANGELOG-Versionen:", "en": "\nCHANGELOG version ordering:", "pl": "\nKolejność wersji w CHANGELOG:", - "ru": "\nCHANGELOG version ordering:", - "zh": "\nCHANGELOG version ordering:", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "\nПорядок версий в CHANGELOG:", + "zh": "\nCHANGELOG 版本顺序:" }, "\nChecking CI script documentation in ci-cd-workflow.md...": { - "bg": "\nChecking CI script documentation in ci-cd-workflow.md...", - "de": "\nChecking CI script documentation in ci-cd-workflow.md...", + "bg": "\nПроверка на документацията за CI скриптове в ci-cd-workflow.md...", + "de": "\nPrüfe CI-Skript-Dokumentation in ci-cd-workflow.md...", "en": "\nChecking CI script documentation in ci-cd-workflow.md...", "pl": "\nSprawdzanie dokumentacji skryptów CI w ci-cd-workflow.md...", - "ru": "\nChecking CI script documentation in ci-cd-workflow.md...", - "zh": "\nChecking CI script documentation in ci-cd-workflow.md...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "\nПроверка документации CI-скриптов в ci-cd-workflow.md...", + "zh": "\n正在检查 ci-cd-workflow.md 中的 CI 脚本文档..." }, "\nChecking module documentation in architecture.md...": { - "bg": "\nChecking module documentation in architecture.md...", - "de": "\nChecking module documentation in architecture.md...", + "bg": "\nПроверка на документацията за модулите в architecture.md...", + "de": "\nPrüfe Moduldokumentation in architecture.md...", "en": "\nChecking module documentation in architecture.md...", "pl": "\nSprawdzanie dokumentacji modułów w architecture.md...", - "ru": "\nChecking module documentation in architecture.md...", - "zh": "\nChecking module documentation in architecture.md...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "\nПроверка документации модулей в architecture.md...", + "zh": "\n正在检查 architecture.md 中的模块文档..." }, "\nDoc coverage: {covered}/{total} ({pct}%)": { - "bg": "\nDoc coverage: {covered}/{total} ({pct}%)", - "de": "\nDoc coverage: {covered}/{total} ({pct}%)", + "bg": "\nПокритие на документацията: {covered}/{total} ({pct}%)", + "de": "\nDokumentationsabdeckung: {covered}/{total} ({pct}%)", "en": "\nDoc coverage: {covered}/{total} ({pct}%)", "pl": "\nPokrycie dokumentacji: {covered}/{total} ({pct}%)", - "ru": "\nDoc coverage: {covered}/{total} ({pct}%)", - "zh": "\nDoc coverage: {covered}/{total} ({pct}%)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "\nПокрытие документации: {covered}/{total} ({pct}%)", + "zh": "\n文档覆盖率:{covered}/{total} ({pct}%)" }, "\nDone! Synced: {synced}, Pruned: {pruned}": { "bg": "", @@ -65,29 +53,23 @@ "en": "\nDone! Synced: {synced}, Pruned: {pruned}", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "\nDone. Deleted {deleted}, kept {kept}, failed {failed}.": { - "bg": "\nDone. Deleted {deleted}, kept {kept}, failed {failed}.", - "de": "\nDone. Deleted {deleted}, kept {kept}, failed {failed}.", + "bg": "\nГотово. Изтрити: {deleted}, запазени: {kept}, неуспешни: {failed}.", + "de": "\nFertig. Gelöscht: {deleted}, behalten: {kept}, fehlgeschlagen: {failed}.", "en": "\nDone. Deleted {deleted}, kept {kept}, failed {failed}.", - "pl": "\nDone. Deleted {deleted}, kept {kept}, failed {failed}.", - "ru": "\nDone. Deleted {deleted}, kept {kept}, failed {failed}.", - "zh": "\nDone. Deleted {deleted}, kept {kept}, failed {failed}.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "\nGotowe. Usunięto: {deleted}, zachowano: {kept}, błędów: {failed}.", + "ru": "\nГотово. Удалено: {deleted}, сохранено: {kept}, ошибок: {failed}.", + "zh": "\n完成。已删除 {deleted},保留 {kept},失败 {failed}。" }, "\nERROR: Documentation coverage is not 100%. Use --fail-on-missing to enforce.": { - "bg": "\nERROR: Documentation coverage is not 100%. Use --fail-on-missing to enforce.", - "de": "\nERROR: Documentation coverage is not 100%. Use --fail-on-missing to enforce.", + "bg": "\nГРЕШКА: Покритието на документацията не е 100%. Използвайте --fail-on-missing за налагане.", + "de": "\nFEHLER: Die Dokumentationsabdeckung beträgt nicht 100%. Mit --fail-on-missing erzwingen.", "en": "\nERROR: Documentation coverage is not 100%. Use --fail-on-missing to enforce.", "pl": "\nBŁĄD: Pokrycie dokumentacji nie wynosi 100%. Użyj --fail-on-missing, aby to wymusić.", - "ru": "\nERROR: Documentation coverage is not 100%. Use --fail-on-missing to enforce.", - "zh": "\nERROR: Documentation coverage is not 100%. Use --fail-on-missing to enforce.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "\nОШИБКА: Покрытие документации не составляет 100%. Используйте --fail-on-missing для принудительной проверки.", + "zh": "\n错误:文档覆盖率未达到 100%。使用 --fail-on-missing 强制执行。" }, "\nFAIL: {n} stale version reference(s) found:": { "bg": "", @@ -95,19 +77,15 @@ "en": "\nFAIL: {n} stale version reference(s) found:", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "\nFix the misaligned tags before creating new releases. Run 'python3 -m devx.ci.release --verify' for a full report.": { - "bg": "\nFix the misaligned tags before creating new releases. Run 'python3 -m devx.ci.release --verify' for a full report.", - "de": "\nFix the misaligned tags before creating new releases. Run 'python3 -m devx.ci.release --verify' for a full report.", + "bg": "\nКоригирайте несъответстващите тагове преди създаване на нови версии. Изпълнете 'python3 -m devx.ci.release --verify' за пълен отчет.", + "de": "\nKorrigieren Sie die falsch zugeordneten Tags, bevor Sie neue Releases erstellen. Führen Sie 'python3 -m devx.ci.release --verify' für einen vollständigen Bericht aus.", "en": "\nFix the misaligned tags before creating new releases. Run 'python3 -m devx.ci.release --verify' for a full report.", "pl": "\nNapraw niezgodne tagi przed utworzeniem nowych wydań. Uruchom 'python3 -m devx.ci.release --verify', aby uzyskać pełny raport.", - "ru": "\nFix the misaligned tags before creating new releases. Run 'python3 -m devx.ci.release --verify' for a full report.", - "zh": "\nFix the misaligned tags before creating new releases. Run 'python3 -m devx.ci.release --verify' for a full report.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "\nИсправьте несоответствующие теги перед созданием новых релизов. Выполните 'python3 -m devx.ci.release --verify' для полного отчёта.", + "zh": "\n请在创建新版本之前修正不匹配的标签。运行 'python3 -m devx.ci.release --verify' 获取完整报告。" }, "\nFixed {n} stale version reference(s).": { "bg": "", @@ -115,49 +93,39 @@ "en": "\nFixed {n} stale version reference(s).", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "\nGenerated {count} badges:": { - "bg": "\nGenerated {count} badges:", - "de": "\nGenerated {count} badges:", + "bg": "\nГенерирани {count} значка:", + "de": "\n{count} Badges generiert:", "en": "\nGenerated {count} badges:", - "pl": "\nGenerated {count} badges:", - "ru": "\nGenerated {count} badges:", - "zh": "\nGenerated {count} badges:", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "\nWygenerowano {count} odznak:", + "ru": "\nСгенерировано значков: {count}:", + "zh": "\n已生成 {count} 个徽章:" }, "\nKeeping {kept}, would delete {count}": { - "bg": "\nKeeping {kept}, would delete {count}", - "de": "\nKeeping {kept}, would delete {count}", + "bg": "\nЗапазени {kept}, ще бъдат изтрити {count}", + "de": "\nBehalte {kept}, würde {count} löschen", "en": "\nKeeping {kept}, would delete {count}", - "pl": "\nKeeping {kept}, would delete {count}", - "ru": "\nKeeping {kept}, would delete {count}", - "zh": "\nKeeping {kept}, would delete {count}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "\nZachowano {kept}, usunięto by {count}", + "ru": "\nСохранено {kept}, будет удалено {count}", + "zh": "\n保留 {kept},将删除 {count}" }, "\nLatest tag: {tag}": { - "bg": "\nLatest tag: {tag}", - "de": "\nLatest tag: {tag}", + "bg": "\nПоследен таг: {tag}", + "de": "\nNeuestes Tag: {tag}", "en": "\nLatest tag: {tag}", "pl": "\nNajnowszy tag: {tag}", - "ru": "\nLatest tag: {tag}", - "zh": "\nLatest tag: {tag}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "\nПоследний тег: {tag}", + "zh": "\n最新标签:{tag}" }, "\nMissing documentation:": { - "bg": "\nMissing documentation:", - "de": "\nMissing documentation:", + "bg": "\nЛипсваща документация:", + "de": "\nFehlende Dokumentation:", "en": "\nMissing documentation:", "pl": "\nBrakująca dokumentacja:", - "ru": "\nMissing documentation:", - "zh": "\nMissing documentation:", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "\nОтсутствующая документация:", + "zh": "\n缺失的文档:" }, "\nNo stale version references found.": { "bg": "", @@ -165,9 +133,7 @@ "en": "\nNo stale version references found.", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "\nPASS: All version references are current.": { "bg": "", @@ -175,19 +141,15 @@ "en": "\nPASS: All version references are current.", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "\nResult: {status}": { - "bg": "\nResult: {status}", - "de": "\nResult: {status}", + "bg": "\nРезултат: {status}", + "de": "\nErgebnis: {status}", "en": "\nResult: {status}", "pl": "\nWynik: {status}", - "ru": "\nResult: {status}", - "zh": "\nResult: {status}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "\nРезультат: {status}", + "zh": "\n结果:{status}" }, "\nRun with --fix to auto-update version references.": { "bg": "", @@ -195,49 +157,39 @@ "en": "\nRun with --fix to auto-update version references.", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "\nTag → Commit alignment:": { - "bg": "\nTag → Commit alignment:", - "de": "\nTag → Commit alignment:", + "bg": "\nСъответствие таг → комит:", + "de": "\nTag-→-Commit-Zuordnung:", "en": "\nTag → Commit alignment:", "pl": "\nTag → Commit: zgodność:", - "ru": "\nTag → Commit alignment:", - "zh": "\nTag → Commit alignment:", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "\nСоответствие тег → коммит:", + "zh": "\n标签 → 提交对应关系:" }, "\nTest isolation check FAILED: {count} violation(s) in {files} file(s).\n": { - "bg": "\nTest isolation check FAILED: {count} violation(s) in {files} file(s).\n", - "de": "\nTest isolation check FAILED: {count} violation(s) in {files} file(s).\n", + "bg": "\nПроверката за изолация на тестовете СЕ ПРОВАЛИ: {count} нарушение(я) във {files} файл(а).\n", + "de": "\nTestisolierungsprüfung FEHLGESCHLAGEN: {count} Verstoß/Verstöße in {files} Datei(en).\n", "en": "\nTest isolation check FAILED: {count} violation(s) in {files} file(s).\n", - "pl": "\nTest isolation check FAILED: {count} violation(s) in {files} file(s).\n", - "ru": "\nTest isolation check FAILED: {count} violation(s) in {files} file(s).\n", - "zh": "\nTest isolation check FAILED: {count} violation(s) in {files} file(s).\n", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "\nKontrola izolacji testów NIEUDANA: {count} naruszeń w {files} plikach.\n", + "ru": "\nПроверка изоляции тестов ПРОВАЛЕНА: {count} нарушение(й) в {files} файл(ах).\n", + "zh": "\n测试隔离检查失败:{files} 个文件中存在 {count} 处违规。\n" }, "\nUntagged release commits:": { - "bg": "\nUntagged release commits:", - "de": "\nUntagged release commits:", + "bg": "\nРелийз комити без таг:", + "de": "\nRelease-Commits ohne Tag:", "en": "\nUntagged release commits:", "pl": "\nCommity wydania bez tagu:", - "ru": "\nUntagged release commits:", - "zh": "\nUntagged release commits:", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "\nРелизные коммиты без тега:", + "zh": "\n未打标签的发布提交:" }, "\nUser-facing changes ({count}):": { - "bg": "\nUser-facing changes ({count}):", - "de": "\nUser-facing changes ({count}):", + "bg": "\nВидими за потребителя промени ({count}):", + "de": "\nNutzersichtbare Änderungen ({count}):", "en": "\nUser-facing changes ({count}):", "pl": "\nZmiany widoczne dla użytkownika ({count}):", - "ru": "\nUser-facing changes ({count}):", - "zh": "\nUser-facing changes ({count}):", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "\nПользовательские изменения ({count}):", + "zh": "\n面向用户的更改({count}):" }, "\nVerification passed — all wiki pages exist.": { "bg": "", @@ -245,9 +197,7 @@ "en": "\nVerification passed — all wiki pages exist.", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "\nVerifying wiki pages...": { "bg": "", @@ -255,49 +205,39 @@ "en": "\nVerifying wiki pages...", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "\nWorkflow-only changes ({count}):": { - "bg": "\nWorkflow-only changes ({count}):", - "de": "\nWorkflow-only changes ({count}):", + "bg": "\nПромени само в workflow ({count}):", + "de": "\nNur-Workflow-Änderungen ({count}):", "en": "\nWorkflow-only changes ({count}):", "pl": "\nZmiany tylko w workflow ({count}):", - "ru": "\nWorkflow-only changes ({count}):", - "zh": "\nWorkflow-only changes ({count}):", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "\nИзменения только в workflow ({count}):", + "zh": "\n仅工作流更改({count}):" }, "\n[check_test_coverage] Fix: add the missing test file(s) before committing.": { - "bg": "\n[check_test_coverage] Fix: add the missing test file(s) before committing.", - "de": "\n[check_test_coverage] Fix: add the missing test file(s) before committing.", + "bg": "\n[check_test_coverage] Корекция: добавете липсващите тестови файл(ове) преди комит.", + "de": "\n[check_test_coverage] Behebung: fehlende Testdatei(en) vor dem Commit hinzufügen.", "en": "\n[check_test_coverage] Fix: add the missing test file(s) before committing.", - "pl": "\n[check_test_coverage] Fix: add the missing test file(s) before committing.", - "ru": "\n[check_test_coverage] Fix: add the missing test file(s) before committing.", - "zh": "\n[check_test_coverage] Fix: add the missing test file(s) before committing.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "\n[check_test_coverage] Poprawka: dodaj brakujące pliki testowe przed commitem.", + "ru": "\n[check_test_coverage] Исправление: добавьте недостающие тестовые файл(ы) перед коммитом.", + "zh": "\n[check_test_coverage] 修复:提交前添加缺失的测试文件。" }, "\n[dry-run] Changelog:\n{changelog}": { - "bg": "\n[dry-run] Changelog:\n{changelog}", - "de": "\n[dry-run] Changelog:\n{changelog}", + "bg": "\n[dry-run] Списък на промените:\n{changelog}", + "de": "\n[dry-run] Änderungsprotokoll:\n{changelog}", "en": "\n[dry-run] Changelog:\n{changelog}", - "pl": "\n[dry-run] Changelog:\n{changelog}", - "ru": "\n[dry-run] Changelog:\n{changelog}", - "zh": "\n[dry-run] Changelog:\n{changelog}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "\n[dry-run] Dziennik zmian:\n{changelog}", + "ru": "\n[dry-run] Журнал изменений:\n{changelog}", + "zh": "\n[dry-run] 变更日志:\n{changelog}" }, "\n{label} files changed ({count}):": { - "bg": "\n{label} files changed ({count}):", - "de": "\n{label} files changed ({count}):", + "bg": "\nПроменени файлове — {label} ({count}):", + "de": "\n{label} geänderte Dateien ({count}):", "en": "\n{label} files changed ({count}):", "pl": "\n{label} plików zmienionych ({count}):", - "ru": "\n{label} files changed ({count}):", - "zh": "\n{label} files changed ({count}):", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "\nИзменённые файлы — {label} ({count}):", + "zh": "\n{label} 个已更改文件({count}):" }, "\n{separator}": { "bg": "\n{separator}", @@ -305,49 +245,39 @@ "en": "\n{separator}", "pl": "\n{separator}", "ru": "\n{separator}", - "zh": "\n{separator}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "\n{separator}" }, "\n{tag} files ({count}):": { - "bg": "\n{tag} files ({count}):", - "de": "\n{tag} files ({count}):", + "bg": "\n{tag} файла ({count}):", + "de": "\n{tag} Dateien ({count}):", "en": "\n{tag} files ({count}):", "pl": "\nPliki {tag} ({count}):", - "ru": "\n{tag} files ({count}):", - "zh": "\n{tag} files ({count}):", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "\n{tag} файлов ({count}):", + "zh": "\n{tag} 个文件({count}):" }, " Could not fetch logs: {error}": { - "bg": " Could not fetch logs: {error}", - "de": " Could not fetch logs: {error}", + "bg": " Неуспешно извличане на логове: {error}", + "de": " Logs konnten nicht abgerufen werden: {error}", "en": " Could not fetch logs: {error}", - "pl": " Could not fetch logs: {error}", - "ru": " Could not fetch logs: {error}", - "zh": " Could not fetch logs: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " Nie udało się pobrać logów: {error}", + "ru": " Не удалось получить логи: {error}", + "zh": " 无法获取日志:{error}" }, " pytest stderr (last 300 chars): {stderr}": { - "bg": " pytest stderr (last 300 chars): {stderr}", - "de": " pytest stderr (last 300 chars): {stderr}", + "bg": " pytest stderr (последни 300 символа): {stderr}", + "de": " pytest stderr (letzte 300 Zeichen): {stderr}", "en": " pytest stderr (last 300 chars): {stderr}", - "pl": " pytest stderr (last 300 chars): {stderr}", - "ru": " pytest stderr (last 300 chars): {stderr}", - "zh": " pytest stderr (last 300 chars): {stderr}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " pytest stderr (ostatnie 300 znaków): {stderr}", + "ru": " pytest stderr (последние 300 символов): {stderr}", + "zh": " pytest stderr(最后 300 个字符):{stderr}" }, " pytest stdout (last 300 chars): {stdout}": { - "bg": " pytest stdout (last 300 chars): {stdout}", - "de": " pytest stdout (last 300 chars): {stdout}", + "bg": " pytest stdout (последни 300 символа): {stdout}", + "de": " pytest stdout (letzte 300 Zeichen): {stdout}", "en": " pytest stdout (last 300 chars): {stdout}", - "pl": " pytest stdout (last 300 chars): {stdout}", - "ru": " pytest stdout (last 300 chars): {stdout}", - "zh": " pytest stdout (last 300 chars): {stdout}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " pytest stdout (ostatnie 300 znaków): {stdout}", + "ru": " pytest stdout (последние 300 символов): {stdout}", + "zh": " pytest stdout(最后 300 个字符):{stdout}" }, " stderr: {stderr}": { "bg": " stderr: {stderr}", @@ -355,9 +285,7 @@ "en": " stderr: {stderr}", "pl": " stderr: {stderr}", "ru": " stderr: {stderr}", - "zh": " stderr: {stderr}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": " stderr: {stderr}" }, " - Auto-delete branch after merge: yes": { "bg": " - Автоматично изтриване на клон след сливане: да", @@ -365,9 +293,7 @@ "en": " - Auto-delete branch after merge: yes", "pl": " - Auto-usuwanie gałęzi po scaleniu: tak", "ru": " - Автоудаление ветки после слияния: да", - "zh": " - 合并后自动删除分支: 是", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": " - 合并后自动删除分支: 是" }, " - Block admin merge override: yes": { "bg": " - Блокиране на admin merge override: да", @@ -375,9 +301,7 @@ "en": " - Block admin merge override: yes", "pl": " - Blokuj admin merge override: tak", "ru": " - Блокировать admin merge override: да", - "zh": " - 阻止管理员合并覆盖:是", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": " - 阻止管理员合并覆盖:是" }, " - Block outdated branches: yes": { "bg": " - Блокиране на остарели клонове: да", @@ -385,9 +309,7 @@ "en": " - Block outdated branches: yes", "pl": " - Blokowanie nieaktualnych gałęzi: tak", "ru": " - Блокировать устаревшие ветки: да", - "zh": " - 阻止过时分支: 是", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": " - 阻止过时分支: 是" }, " - Block rejected reviews: yes": { "bg": " - Блокиране на отхвърлени рецензии: да", @@ -395,19 +317,15 @@ "en": " - Block rejected reviews: yes", "pl": " - Blokowanie odrzuconych recenzji: tak", "ru": " - Блокировать отклонённые ревью: да", - "zh": " - 阻止被拒绝的审查: 是", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": " - 阻止被拒绝的审查: 是" }, " - Direct pushes: BLOCKED (require PR, whitelisted users can push)": { - "bg": " - Direct pushes: BLOCKED (require PR, whitelisted users can push)", - "de": " - Direct pushes: BLOCKED (require PR, whitelisted users can push)", + "bg": " - Директни push-ове: БЛОКИРАНИ (изисква се PR; разрешени потребители могат да push-ват)", + "de": " - Direkte Pushes: BLOCKIERT (PR erforderlich, freigegebene Benutzer dürfen pushen)", "en": " - Direct pushes: BLOCKED (require PR, whitelisted users can push)", "pl": " - Bezpośrednie push-e: ZABLOKOWANE (wymagają PR, użytkownicy z białej listy mogą pushować)", - "ru": " - Direct pushes: BLOCKED (require PR, whitelisted users can push)", - "zh": " - Direct pushes: BLOCKED (require PR, whitelisted users can push)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": " - Прямые push: ЗАБЛОКИРОВАНЫ (требуется PR; разрешённые пользователи могут push)", + "zh": " - 直接推送:已阻止(需要 PR,白名单用户可推送)" }, " - Dismiss stale approvals: yes": { "bg": " - Анулиране на остарели одобрения: да", @@ -415,9 +333,7 @@ "en": " - Dismiss stale approvals: yes", "pl": " - Odrzucanie nieaktualnych zatwierdzeń: tak", "ru": " - Отклонять устаревшие одобрения: да", - "zh": " - 忽略过时审批: 是", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": " - 忽略过时审批: 是" }, " - Required approvals: {count}": { "bg": " - Необходими одобрения: {count}", @@ -425,9 +341,7 @@ "en": " - Required approvals: {count}", "pl": " - Wymagane zatwierdzenia: {count}", "ru": " - Требуемые одобрения: {count}", - "zh": " - 必需审批数: {count}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": " - 必需审批数: {count}" }, " - Required status checks: {checks}": { "bg": " - Необходими проверки на състоянието: {checks}", @@ -435,19 +349,15 @@ "en": " - Required status checks: {checks}", "pl": " - Wymagane kontrole statusu: {checks}", "ru": " - Требуемые проверки статуса: {checks}", - "zh": " - 必需状态检查: {checks}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": " - 必需状态检查: {checks}" }, " - {count} standard labels verified": { - "bg": " - {count} standard labels verified", - "de": " - {count} standard labels verified", + "bg": " - {count} стандартни етикета проверени", + "de": " - {count} Standard-Labels geprüft", "en": " - {count} standard labels verified", - "pl": " - {count} standard labels verified", - "ru": " - {count} standard labels verified", - "zh": " - {count} standard labels verified", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " - {count} standardowych etykiet zweryfikowanych", + "ru": " - {count} стандартных меток проверено", + "zh": " - 已验证 {count} 个标准标签" }, " -> {dir}": { "bg": " -> {dir}", @@ -455,9 +365,7 @@ "en": " -> {dir}", "pl": " -> {dir}", "ru": " -> {dir}", - "zh": " -> {dir}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": " -> {dir}" }, " ... and {n} more": { "bg": "", @@ -465,69 +373,55 @@ "en": " ... and {n} more", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, " Auto-fixed trailing whitespace in {n} files": { - "bg": " Auto-fixed trailing whitespace in {n} files", - "de": " Auto-fixed trailing whitespace in {n} files", + "bg": " Автоматично коригирани крайни интервали в {n} файла", + "de": " Abschließende Leerzeichen in {n} Dateien automatisch korrigiert", "en": " Auto-fixed trailing whitespace in {n} files", - "pl": " Auto-fixed trailing whitespace in {n} files", - "ru": " Auto-fixed trailing whitespace in {n} files", - "zh": " Auto-fixed trailing whitespace in {n} files", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " Automatycznie poprawiono końcowe białe znaki w {n} plikach", + "ru": " Автоматически исправлены конечные пробелы в {n} файлах", + "zh": " 已自动修复 {n} 个文件中的行尾空白" }, " Collecting code quality...": { - "bg": " Collecting code quality...", - "de": " Collecting code quality...", + "bg": " Събиране на качество на кода...", + "de": " Codequalität wird erfasst...", "en": " Collecting code quality...", - "pl": " Collecting code quality...", - "ru": " Collecting code quality...", - "zh": " Collecting code quality...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " Zbieranie jakości kodu...", + "ru": " Сбор данных о качестве кода...", + "zh": " 正在收集代码质量..." }, " Collecting coverage and tests...": { - "bg": " Collecting coverage and tests...", - "de": " Collecting coverage and tests...", + "bg": " Събиране на покритие и тестове...", + "de": " Coverage und Tests werden erfasst...", "en": " Collecting coverage and tests...", - "pl": " Collecting coverage and tests...", - "ru": " Collecting coverage and tests...", - "zh": " Collecting coverage and tests...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " Zbieranie pokrycia i testów...", + "ru": " Сбор покрытия и тестов...", + "zh": " 正在收集覆盖率和测试..." }, " Collecting doc coverage...": { - "bg": " Collecting doc coverage...", - "de": " Collecting doc coverage...", + "bg": " Събиране на покритие на документацията...", + "de": " Dokumentationsabdeckung wird erfasst...", "en": " Collecting doc coverage...", - "pl": " Collecting doc coverage...", - "ru": " Collecting doc coverage...", - "zh": " Collecting doc coverage...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " Zbieranie pokrycia dokumentacji...", + "ru": " Сбор покрытия документации...", + "zh": " 正在收集文档覆盖率..." }, " Collecting version...": { - "bg": " Collecting version...", - "de": " Collecting version...", + "bg": " Събиране на версия...", + "de": " Version wird erfasst...", "en": " Collecting version...", - "pl": " Collecting version...", - "ru": " Collecting version...", - "zh": " Collecting version...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " Zbieranie wersji...", + "ru": " Сбор версии...", + "zh": " 正在收集版本..." }, " Deleted: {version}": { - "bg": " Deleted: {version}", - "de": " Deleted: {version}", + "bg": " Изтрито: {version}", + "de": " Gelöscht: {version}", "en": " Deleted: {version}", - "pl": " Deleted: {version}", - "ru": " Deleted: {version}", - "zh": " Deleted: {version}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " Usunięto: {version}", + "ru": " Удалено: {version}", + "zh": " 已删除:{version}" }, " FAIL: {title} — page not found in wiki!": { "bg": "", @@ -535,29 +429,23 @@ "en": " FAIL: {title} — page not found in wiki!", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, " FAILED to delete: {version}": { - "bg": " FAILED to delete: {version}", - "de": " FAILED to delete: {version}", + "bg": " НЕУСПЕШНО изтриване: {version}", + "de": " Löschen FEHLGESCHLAGEN: {version}", "en": " FAILED to delete: {version}", - "pl": " FAILED to delete: {version}", - "ru": " FAILED to delete: {version}", - "zh": " FAILED to delete: {version}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " NIE UDAŁO się usunąć: {version}", + "ru": " НЕ УДАЛОСЬ удалить: {version}", + "zh": " 删除失败:{version}" }, " Fix the PR title with:\n python3 -m devx.ci.fix_pr_title --repo {repo} --pr-number {pr}\n Or manually set the PR title to: '{expected}'": { - "bg": " Fix the PR title with:\n python3 -m devx.ci.fix_pr_title --repo {repo} --pr-number {pr}\n Or manually set the PR title to: '{expected}'", - "de": " Fix the PR title with:\n python3 -m devx.ci.fix_pr_title --repo {repo} --pr-number {pr}\n Or manually set the PR title to: '{expected}'", + "bg": " Коригирайте заглавието на PR с:\n python3 -m devx.ci.fix_pr_title --repo {repo} --pr-number {pr}\n Или ръчно задайте заглавие на PR: '{expected}'", + "de": " Korrigieren Sie den PR-Titel mit:\n python3 -m devx.ci.fix_pr_title --repo {repo} --pr-number {pr}\n Oder setzen Sie den PR-Titel manuell auf: '{expected}'", "en": " Fix the PR title with:\n python3 -m devx.ci.fix_pr_title --repo {repo} --pr-number {pr}\n Or manually set the PR title to: '{expected}'", - "pl": " Fix the PR title with:\n python3 -m devx.ci.fix_pr_title --repo {repo} --pr-number {pr}\n Or manually set the PR title to: '{expected}'", - "ru": " Fix the PR title with:\n python3 -m devx.ci.fix_pr_title --repo {repo} --pr-number {pr}\n Or manually set the PR title to: '{expected}'", - "zh": " Fix the PR title with:\n python3 -m devx.ci.fix_pr_title --repo {repo} --pr-number {pr}\n Or manually set the PR title to: '{expected}'", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " Popraw tytuł PR poleceniem:\n python3 -m devx.ci.fix_pr_title --repo {repo} --pr-number {pr}\n Lub ręcznie ustaw tytuł PR na: '{expected}'", + "ru": " Исправьте заголовок PR командой:\n python3 -m devx.ci.fix_pr_title --repo {repo} --pr-number {pr}\n Или вручную установите заголовок PR: '{expected}'", + "zh": " 使用以下命令修复 PR 标题:\n python3 -m devx.ci.fix_pr_title --repo {repo} --pr-number {pr}\n 或手动将 PR 标题设置为:'{expected}'" }, " Fixed {fixes} version ref(s) in {file}": { "bg": "", @@ -565,49 +453,47 @@ "en": " Fixed {fixes} version ref(s) in {file}", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, " Generated: {path}": { - "bg": " Generated: {path}", - "de": " Generated: {path}", + "bg": " Генерирано: {path}", + "de": " Generiert: {path}", "en": " Generated: {path}", - "pl": " Generated: {path}", - "ru": " Generated: {path}", - "zh": " Generated: {path}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " Wygenerowano: {path}", + "ru": " Сгенерировано: {path}", + "zh": " 已生成:{path}" + }, + " HTTP 500 from registry, retrying in {wait:.0f}s (attempt {attempt}/5)...": { + "bg": " HTTP 500 от регистъра, повторен опит след {wait:.0f}с (опит {attempt}/5)...", + "de": " HTTP 500 vom Registry, Wiederholung in {wait:.0f}s (Versuch {attempt}/5)...", + "en": "HTTP 500 from registry, retrying in {wait:.0f}s (attempt {attempt}/5)...", + "pl": " HTTP 500 z rejestru, ponawianie za {wait:.0f}s (próba {attempt}/5)...", + "ru": " HTTP 500 от реестра, повтор через {wait:.0f}с (попытка {attempt}/5)...", + "zh": " 注册表返回 HTTP 500,{wait:.0f}秒后重试(第{attempt}/5次尝试)..." }, " MISSING: {cmd}": { - "bg": " MISSING: {cmd}", - "de": " MISSING: {cmd}", + "bg": " ЛИПСВА: {cmd}", + "de": " FEHLT: {cmd}", "en": " MISSING: {cmd}", - "pl": " MISSING: {cmd}", - "ru": " MISSING: {cmd}", - "zh": " MISSING: {cmd}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " BRAKUJE: {cmd}", + "ru": " ОТСУТСТВУЕТ: {cmd}", + "zh": " 缺失:{cmd}" }, " MISSING: {module}": { - "bg": " MISSING: {module}", - "de": " MISSING: {module}", + "bg": " ЛИПСВА: {module}", + "de": " FEHLT: {module}", "en": " MISSING: {module}", "pl": " BRAK: {module}", - "ru": " MISSING: {module}", - "zh": " MISSING: {module}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": " ОТСУТСТВУЕТ: {module}", + "zh": " 缺失:{module}" }, " MISSING: {script}": { - "bg": " MISSING: {script}", - "de": " MISSING: {script}", + "bg": " ЛИПСВА: {script}", + "de": " FEHLT: {script}", "en": " MISSING: {script}", "pl": " BRAK: {script}", - "ru": " MISSING: {script}", - "zh": " MISSING: {script}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": " ОТСУТСТВУЕТ: {script}", + "zh": " 缺失:{script}" }, " OK: {cmd}": { "bg": " OK: {cmd}", @@ -615,9 +501,7 @@ "en": " OK: {cmd}", "pl": " OK: {cmd}", "ru": " OK: {cmd}", - "zh": " OK: {cmd}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": " 正常:{cmd}" }, " OK: {module}": { "bg": " OK: {module}", @@ -625,9 +509,7 @@ "en": " OK: {module}", "pl": " OK: {module}", "ru": " OK: {module}", - "zh": " OK: {module}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": " 正常:{module}" }, " OK: {script}": { "bg": " OK: {script}", @@ -635,9 +517,7 @@ "en": " OK: {script}", "pl": " OK: {script}", "ru": " OK: {script}", - "zh": " OK: {script}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": " 正常:{script}" }, " OK: {title}": { "bg": "", @@ -645,19 +525,15 @@ "en": " OK: {title}", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, " Package: {pkg}": { - "bg": " Package: {pkg}", - "de": " Package: {pkg}", + "bg": " Пакет: {pkg}", + "de": " Paket: {pkg}", "en": " Package: {pkg}", - "pl": " Package: {pkg}", - "ru": " Package: {pkg}", - "zh": " Package: {pkg}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " Pakiet: {pkg}", + "ru": " Пакет: {pkg}", + "zh": " 包:{pkg}" }, " Pruned: {file} (not in mapping)": { "bg": "", @@ -665,29 +541,23 @@ "en": " Pruned: {file} (not in mapping)", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, " Quality checks: {checks}": { - "bg": " Quality checks: {checks}", - "de": " Quality checks: {checks}", + "bg": " Проверки на качеството: {checks}", + "de": " Qualitätsprüfungen: {checks}", "en": " Quality checks: {checks}", - "pl": " Quality checks: {checks}", - "ru": " Quality checks: {checks}", - "zh": " Quality checks: {checks}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " Kontrole jakości: {checks}", + "ru": " Проверки качества: {checks}", + "zh": " 质量检查:{checks}" }, " Repo root: {root}": { - "bg": " Repo root: {root}", - "de": " Repo root: {root}", + "bg": " Корен на репозитория: {root}", + "de": " Repo-Wurzel: {root}", "en": " Repo root: {root}", - "pl": " Repo root: {root}", - "ru": " Repo root: {root}", - "zh": " Repo root: {root}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " Katalog główny repo: {root}", + "ru": " Корень репозитория: {root}", + "zh": " 仓库根目录:{root}" }, " Run 'make install-checkmake' to install the Makefile linter.": { "bg": " Изпълнете 'make install-checkmake' за инсталиране на Makefile линтера.", @@ -695,9 +565,7 @@ "en": " Run 'make install-checkmake' to install the Makefile linter.", "pl": " Uruchom 'make install-checkmake', aby zainstalować linter Makefile.", "ru": " Выполните 'make install-checkmake' для установки линтера Makefile.", - "zh": " 运行 'make install-checkmake' 来安装 Makefile 检查器。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": " 运行 'make install-checkmake' 来安装 Makefile 检查器。" }, " Synced: {title} → {file}": { "bg": "", @@ -705,19 +573,15 @@ "en": " Synced: {title} → {file}", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, " Test paths: {testpaths}": { - "bg": " Test paths: {testpaths}", - "de": " Test paths: {testpaths}", + "bg": " Тестови пътища: {testpaths}", + "de": " Testpfade: {testpaths}", "en": " Test paths: {testpaths}", - "pl": " Test paths: {testpaths}", - "ru": " Test paths: {testpaths}", - "zh": " Test paths: {testpaths}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " Ścieżki testów: {testpaths}", + "ru": " Пути тестов: {testpaths}", + "zh": " 测试路径:{testpaths}" }, " WARN: Mapped file {file} is empty, skipping": { "bg": "", @@ -725,9 +589,7 @@ "en": " WARN: Mapped file {file} is empty, skipping", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, " WARN: Mapped file {file} not found, skipping": { "bg": "", @@ -735,109 +597,87 @@ "en": " WARN: Mapped file {file} not found, skipping", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, " WARNING: Could not extract coverage from pytest output (rc={rc})": { - "bg": " WARNING: Could not extract coverage from pytest output (rc={rc})", - "de": " WARNING: Could not extract coverage from pytest output (rc={rc})", + "bg": " ПРЕДУПРЕЖДЕНИЕ: Не може да се извлече покритие от pytest изхода (rc={rc})", + "de": " WARNUNG: Coverage konnte nicht aus pytest-Ausgabe extrahiert werden (rc={rc})", "en": " WARNING: Could not extract coverage from pytest output (rc={rc})", - "pl": " WARNING: Could not extract coverage from pytest output (rc={rc})", - "ru": " WARNING: Could not extract coverage from pytest output (rc={rc})", - "zh": " WARNING: Could not extract coverage from pytest output (rc={rc})", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " OSTRZEŻENIE: Nie można wyodrębnić pokrycia z wyjścia pytest (rc={rc})", + "ru": " ПРЕДУПРЕЖДЕНИЕ: Не удалось извлечь покрытие из вывода pytest (rc={rc})", + "zh": " 警告:无法从 pytest 输出中提取覆盖率 (rc={rc})" }, " WARNING: Could not extract doc coverage (rc={rc})": { - "bg": " WARNING: Could not extract doc coverage (rc={rc})", - "de": " WARNING: Could not extract doc coverage (rc={rc})", + "bg": " ПРЕДУПРЕЖДЕНИЕ: Не може да се извлече покритие на документацията (rc={rc})", + "de": " WARNUNG: Dokumentationsabdeckung konnte nicht extrahiert werden (rc={rc})", "en": " WARNING: Could not extract doc coverage (rc={rc})", - "pl": " WARNING: Could not extract doc coverage (rc={rc})", - "ru": " WARNING: Could not extract doc coverage (rc={rc})", - "zh": " WARNING: Could not extract doc coverage (rc={rc})", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " OSTRZEŻENIE: Nie można wyodrębnić pokrycia dokumentacji (rc={rc})", + "ru": " ПРЕДУПРЕЖДЕНИЕ: Не удалось извлечь покрытие документации (rc={rc})", + "zh": " 警告:无法提取文档覆盖率 (rc={rc})" }, " WARNING: Could not extract test count from pytest output (rc={rc})": { - "bg": " WARNING: Could not extract test count from pytest output (rc={rc})", - "de": " WARNING: Could not extract test count from pytest output (rc={rc})", + "bg": " ПРЕДУПРЕЖДЕНИЕ: Не може да се извлече брой тестове от pytest изхода (rc={rc})", + "de": " WARNUNG: Testanzahl konnte nicht aus pytest-Ausgabe extrahiert werden (rc={rc})", "en": " WARNING: Could not extract test count from pytest output (rc={rc})", - "pl": " WARNING: Could not extract test count from pytest output (rc={rc})", - "ru": " WARNING: Could not extract test count from pytest output (rc={rc})", - "zh": " WARNING: Could not extract test count from pytest output (rc={rc})", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " OSTRZEŻENIE: Nie można wyodrębnić liczby testów z wyjścia pytest (rc={rc})", + "ru": " ПРЕДУПРЕЖДЕНИЕ: Не удалось извлечь число тестов из вывода pytest (rc={rc})", + "zh": " 警告:无法从 pytest 输出中提取测试数量 (rc={rc})" }, " WARNING: No Python package found under src/ — version badge will show 'unknown'": { - "bg": " WARNING: No Python package found under src/ — version badge will show 'unknown'", - "de": " WARNING: No Python package found under src/ — version badge will show 'unknown'", + "bg": " ПРЕДУПРЕЖДЕНИЕ: Не е намерен Python пакет под src/ — значкът за версия ще показва 'unknown'", + "de": " WARNUNG: Kein Python-Paket unter src/ gefunden — Versions-Badge zeigt 'unknown'", "en": " WARNING: No Python package found under src/ — version badge will show 'unknown'", - "pl": " WARNING: No Python package found under src/ — version badge will show 'unknown'", - "ru": " WARNING: No Python package found under src/ — version badge will show 'unknown'", - "zh": " WARNING: No Python package found under src/ — version badge will show 'unknown'", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " OSTRZEŻENIE: Nie znaleziono pakietu Python pod src/ — odznaka wersji pokaże 'unknown'", + "ru": " ПРЕДУПРЕЖДЕНИЕ: Python-пакет не найден в src/ — значок версии покажет 'unknown'", + "zh": " 警告:src/ 下未找到 Python 包——版本徽章将显示 'unknown'" }, " WARNING: No __version__ found in {init_file} — version badge will show 'unknown'": { - "bg": " WARNING: No __version__ found in {init_file} — version badge will show 'unknown'", - "de": " WARNING: No __version__ found in {init_file} — version badge will show 'unknown'", + "bg": " ПРЕДУПРЕЖДЕНИЕ: Не е намерен __version__ в {init_file} — значкът за версия ще показва 'unknown'", + "de": " WARNUNG: Kein __version__ in {init_file} gefunden — Versions-Badge zeigt 'unknown'", "en": " WARNING: No __version__ found in {init_file} — version badge will show 'unknown'", - "pl": " WARNING: No __version__ found in {init_file} — version badge will show 'unknown'", - "ru": " WARNING: No __version__ found in {init_file} — version badge will show 'unknown'", - "zh": " WARNING: No __version__ found in {init_file} — version badge will show 'unknown'", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " OSTRZEŻENIE: Nie znaleziono __version__ w {init_file} — odznaka wersji pokaże 'unknown'", + "ru": " ПРЕДУПРЕЖДЕНИЕ: __version__ не найден в {init_file} — значок версии покажет 'unknown'", + "zh": " 警告:{init_file} 中未找到 __version__——版本徽章将显示 'unknown'" }, " WARNING: No coverage target detected (no src/ package, no --cov in pyproject.toml)": { - "bg": " WARNING: No coverage target detected (no src/ package, no --cov in pyproject.toml)", - "de": " WARNING: No coverage target detected (no src/ package, no --cov in pyproject.toml)", + "bg": " ПРЕДУПРЕЖДЕНИЕ: Не е открита цел за покритие (няма src/ пакет, няма --cov в pyproject.toml)", + "de": " WARNUNG: Kein Coverage-Ziel erkannt (kein src/-Paket, kein --cov in pyproject.toml)", "en": " WARNING: No coverage target detected (no src/ package, no --cov in pyproject.toml)", - "pl": " WARNING: No coverage target detected (no src/ package, no --cov in pyproject.toml)", - "ru": " WARNING: No coverage target detected (no src/ package, no --cov in pyproject.toml)", - "zh": " WARNING: No coverage target detected (no src/ package, no --cov in pyproject.toml)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " OSTRZEŻENIE: Nie wykryto celu pokrycia (brak pakietu src/, brak --cov w pyproject.toml)", + "ru": " ПРЕДУПРЕЖДЕНИЕ: Цель покрытия не обнаружена (нет пакета src/, нет --cov в pyproject.toml)", + "zh": " 警告:未检测到覆盖率目标(无 src/ 包,pyproject.toml 中无 --cov)" }, " WARNING: {init_file} not found — version badge will show 'unknown'": { - "bg": " WARNING: {init_file} not found — version badge will show 'unknown'", - "de": " WARNING: {init_file} not found — version badge will show 'unknown'", + "bg": " ПРЕДУПРЕЖДЕНИЕ: {init_file} не е намерен — значкът за версия ще показва 'unknown'", + "de": " WARNUNG: {init_file} nicht gefunden — Versions-Badge zeigt 'unknown'", "en": " WARNING: {init_file} not found — version badge will show 'unknown'", - "pl": " WARNING: {init_file} not found — version badge will show 'unknown'", - "ru": " WARNING: {init_file} not found — version badge will show 'unknown'", - "zh": " WARNING: {init_file} not found — version badge will show 'unknown'", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " OSTRZEŻENIE: Nie znaleziono {init_file} — odznaka wersji pokaże 'unknown'", + "ru": " ПРЕДУПРЕЖДЕНИЕ: {init_file} не найден — значок версии покажет 'unknown'", + "zh": " 警告:未找到 {init_file}——版本徽章将显示 'unknown'" }, " WARNING: {name} failed (rc={rc})": { - "bg": " WARNING: {name} failed (rc={rc})", - "de": " WARNING: {name} failed (rc={rc})", + "bg": " ПРЕДУПРЕЖДЕНИЕ: {name} се провали (rc={rc})", + "de": " WARNUNG: {name} fehlgeschlagen (rc={rc})", "en": " WARNING: {name} failed (rc={rc})", - "pl": " WARNING: {name} failed (rc={rc})", - "ru": " WARNING: {name} failed (rc={rc})", - "zh": " WARNING: {name} failed (rc={rc})", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " OSTRZEŻENIE: {name} nie powiodło się (rc={rc})", + "ru": " ПРЕДУПРЕЖДЕНИЕ: {name} завершился с ошибкой (rc={rc})", + "zh": " 警告:{name} 失败 (rc={rc})" }, " WARNING: {name} not installed — skipping (counted as pass)": { - "bg": " WARNING: {name} not installed — skipping (counted as pass)", - "de": " WARNING: {name} not installed — skipping (counted as pass)", + "bg": " ПРЕДУПРЕЖДЕНИЕ: {name} не е инсталиран — пропуска се (отчита се като успешно)", + "de": " WARNUNG: {name} nicht installiert — übersprungen (als bestanden gezählt)", "en": " WARNING: {name} not installed — skipping (counted as pass)", - "pl": " WARNING: {name} not installed — skipping (counted as pass)", - "ru": " WARNING: {name} not installed — skipping (counted as pass)", - "zh": " WARNING: {name} not installed — skipping (counted as pass)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " OSTRZEŻENIE: {name} nie jest zainstalowane — pomijanie (liczone jako zaliczone)", + "ru": " ПРЕДУПРЕЖДЕНИЕ: {name} не установлен — пропускается (засчитывается как успех)", + "zh": " 警告:{name} 未安装——跳过(计为通过)" }, " [dry-run] Would delete: {version}": { - "bg": " [dry-run] Would delete: {version}", - "de": " [dry-run] Would delete: {version}", + "bg": " [dry-run] Ще бъде изтрито: {version}", + "de": " [dry-run] Würde löschen: {version}", "en": " [dry-run] Would delete: {version}", - "pl": " [dry-run] Would delete: {version}", - "ru": " [dry-run] Would delete: {version}", - "zh": " [dry-run] Would delete: {version}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " [dry-run] Usunięto by: {version}", + "ru": " [dry-run] Было бы удалено: {version}", + "zh": " [dry-run] 将删除:{version}" }, " {name}: {label}={message} ({color})": { "bg": " {name}: {label}={message} ({color})", @@ -845,9 +685,7 @@ "en": " {name}: {label}={message} ({color})", "pl": " {name}: {label}={message} ({color})", "ru": " {name}: {label}={message} ({color})", - "zh": " {name}: {label}={message} ({color})", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": " {name}: {label}={message} ({color})" }, " {n} long lines found (warnings only)": { "bg": "", @@ -855,9 +693,7 @@ "en": " {n} long lines found (warnings only)", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, " {n} orphan docs found (warnings only)": { "bg": "", @@ -865,19 +701,15 @@ "en": " {n} orphan docs found (warnings only)", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, " {n} stale docs found (warnings only)": { - "bg": " {n} stale docs found (warnings only)", - "de": " {n} stale docs found (warnings only)", + "bg": " Намерени {n} остарели документа (само предупреждения)", + "de": " {n} veraltete Dokumente gefunden (nur Warnungen)", "en": " {n} stale docs found (warnings only)", - "pl": " {n} stale docs found (warnings only)", - "ru": " {n} stale docs found (warnings only)", - "zh": " {n} stale docs found (warnings only)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " Znaleziono {n} nieaktualnych dokumentów (tylko ostrzeżenia)", + "ru": " Найдено {n} устаревших документов (только предупреждения)", + "zh": " 发现 {n} 个过时文档(仅警告)" }, " {tool}: found at {path}": { "bg": " {tool}: намерен на {path}", @@ -885,129 +717,103 @@ "en": " {tool}: found at {path}", "pl": " {tool}: znaleziono w {path}", "ru": " {tool}: найден в {path}", - "zh": " {tool}: 在 {path} 找到", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": " {tool}: 在 {path} 找到" }, " {version} (created: {created})": { - "bg": " {version} (created: {created})", - "de": " {version} (created: {created})", + "bg": " {version} (създадено: {created})", + "de": " {version} (erstellt: {created})", "en": " {version} (created: {created})", - "pl": " {version} (created: {created})", - "ru": " {version} (created: {created})", - "zh": " {version} (created: {created})", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": " {version} (utworzono: {created})", + "ru": " {version} (создано: {created})", + "zh": " {version}(创建于:{created})" }, "--push requires --registry": { - "bg": "--push requires --registry", - "de": "--push requires --registry", + "bg": "--push изисква --registry", + "de": "--push erfordert --registry", "en": "--push requires --registry", - "pl": "--push requires --registry", - "ru": "--push requires --registry", - "zh": "--push requires --registry", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "--push wymaga --registry", + "ru": "--push требует --registry", + "zh": "--push 需要 --registry" }, "--skip-build: skipping package build and PyPI publish.": { - "bg": "--skip-build: skipping package build and PyPI publish.", - "de": "--skip-build: skipping package build and PyPI publish.", + "bg": "--skip-build: пропуска се изграждане на пакета и публикуване в PyPI.", + "de": "--skip-build: Paket-Build und PyPI-Veröffentlichung werden übersprungen.", "en": "--skip-build: skipping package build and PyPI publish.", "pl": "--skip-build: pomijanie budowania pakietu i publikacji PyPI.", - "ru": "--skip-build: skipping package build and PyPI publish.", - "zh": "--skip-build: skipping package build and PyPI publish.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "--skip-build: сборка пакета и публикация в PyPI пропускаются.", + "zh": "--skip-build:跳过包构建和 PyPI 发布。" }, "=== Release Alignment Verification ===\n": { - "bg": "=== Release Alignment Verification ===\n", - "de": "=== Release Alignment Verification ===\n", + "bg": "=== Проверка на съответствието на версиите ===\n", + "de": "=== Release-Abgleich-Verifizierung ===\n", "en": "=== Release Alignment Verification ===\n", "pl": "=== Weryfikacja zgodności wydań ===\n", - "ru": "=== Release Alignment Verification ===\n", - "zh": "=== Release Alignment Verification ===\n", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "=== Проверка соответствия релизов ===\n", + "zh": "=== 发布一致性验证 ===\n" }, "API poll warning: {exc}": { - "bg": "API poll warning: {exc}", - "de": "API poll warning: {exc}", + "bg": "Предупреждение при API запитване: {exc}", + "de": "Warnung bei API-Abfrage: {exc}", "en": "API poll warning: {exc}", "pl": "Ostrzeżenie sondowania API: {exc}", - "ru": "API poll warning: {exc}", - "zh": "API poll warning: {exc}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Предупреждение при опросе API: {exc}", + "zh": "API 轮询警告:{exc}" }, "Acceptance Criteria has {count} unchecked item(s). All AC items must be checked (- [x]) before merge.": { - "bg": "Acceptance Criteria has {count} unchecked item(s). All AC items must be checked (- [x]) before merge.", - "de": "Acceptance Criteria has {count} unchecked item(s). All AC items must be checked (- [x]) before merge.", + "bg": "Acceptance Criteria има {count} неотметнати елемента. Всички AC елементи трябва да са отметнати (- [x]) преди merge.", + "de": "Acceptance Criteria enthält {count} nicht abgehakte Elemente. Alle AC-Elemente müssen vor dem Merge abgehakt sein (- [x]).", "en": "Acceptance Criteria has {count} unchecked item(s). All AC items must be checked (- [x]) before merge.", - "pl": "Acceptance Criteria has {count} unchecked item(s). All AC items must be checked (- [x]) before merge.", - "ru": "Acceptance Criteria has {count} unchecked item(s). All AC items must be checked (- [x]) before merge.", - "zh": "Acceptance Criteria has {count} unchecked item(s). All AC items must be checked (- [x]) before merge.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Acceptance Criteria ma {count} niezaznaczonych elementów. Wszystkie elementy AC muszą być zaznaczone (- [x]) przed merge.", + "ru": "Acceptance Criteria содержит {count} неотмеченных элементов. Все элементы AC должны быть отмечены (- [x]) перед merge.", + "zh": "验收标准有 {count} 个未勾选项目。所有 AC 项目必须在合并前勾选(- [x])。" }, "Acceptance Criteria section has no checklist items. Add at least one '- [ ] item'.": { - "bg": "Acceptance Criteria section has no checklist items. Add at least one '- [ ] item'.", - "de": "Acceptance Criteria section has no checklist items. Add at least one '- [ ] item'.", + "bg": "Секцията Acceptance Criteria няма елементи от checklist. Добавете поне един '- [ ] item'.", + "de": "Der Abschnitt Acceptance Criteria enthält keine Checklisten-Elemente. Mindestens ein '- [ ] item' hinzufügen.", "en": "Acceptance Criteria section has no checklist items. Add at least one '- [ ] item'.", - "pl": "Acceptance Criteria section has no checklist items. Add at least one '- [ ] item'.", - "ru": "Acceptance Criteria section has no checklist items. Add at least one '- [ ] item'.", - "zh": "Acceptance Criteria section has no checklist items. Add at least one '- [ ] item'.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Sekcja Acceptance Criteria nie zawiera elementów checklisty. Dodaj co najmniej jeden '- [ ] item'.", + "ru": "Раздел Acceptance Criteria не содержит элементов чек-листа. Добавьте хотя бы один '- [ ] item'.", + "zh": "验收标准部分没有清单项目。至少添加一个 '- [ ] item'。" }, "Action to perform": { - "bg": "Action to perform", - "de": "Action to perform", + "bg": "Действие за изпълнение", + "de": "Auszuführende Aktion", "en": "Action to perform", - "pl": "Action to perform", - "ru": "Action to perform", - "zh": "Action to perform", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Akcja do wykonania", + "ru": "Выполняемое действие", + "zh": "要执行的操作" }, "Add @patch(\"subprocess.run\") or patch the calling function to fix this.": { - "bg": "Add @patch(\"subprocess.run\") or patch the calling function to fix this.", - "de": "Add @patch(\"subprocess.run\") or patch the calling function to fix this.", + "bg": "Добавете @patch(\"subprocess.run\") или patch-нете извикващата функция, за да коригирате това.", + "de": "Fügen Sie @patch(\"subprocess.run\") hinzu oder patchen Sie die aufrufende Funktion.", "en": "Add @patch(\"subprocess.run\") or patch the calling function to fix this.", - "pl": "Add @patch(\"subprocess.run\") or patch the calling function to fix this.", - "ru": "Add @patch(\"subprocess.run\") or patch the calling function to fix this.", - "zh": "Add @patch(\"subprocess.run\") or patch the calling function to fix this.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Dodaj @patch(\"subprocess.run\") lub załataj funkcję wywołującą, aby to naprawić.", + "ru": "Добавьте @patch(\"subprocess.run\") или исправьте вызывающую функцию.", + "zh": "添加 @patch(\"subprocess.run\") 或修补调用函数以修复此问题。" }, "Added label '{label}' to PR #{pr}.": { - "bg": "Added label '{label}' to PR #{pr}.", - "de": "Added label '{label}' to PR #{pr}.", + "bg": "Добавен етикет '{label}' към PR #{pr}.", + "de": "Label '{label}' zu PR #{pr} hinzugefügt.", "en": "Added label '{label}' to PR #{pr}.", - "pl": "Added label '{label}' to PR #{pr}.", - "ru": "Added label '{label}' to PR #{pr}.", - "zh": "Added label '{label}' to PR #{pr}.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Dodano etykietę '{label}' do PR #{pr}.", + "ru": "Добавлена метка '{label}' к PR #{pr}.", + "zh": "已向 PR #{pr} 添加标签 '{label}'。" }, "Additional directory to scan (default: scripts, tests). Can be repeated.": { - "bg": "Additional directory to scan (default: scripts, tests). Can be repeated.", - "de": "Additional directory to scan (default: scripts, tests). Can be repeated.", + "bg": "Допълнителна директория за сканиране (по подразбиране: scripts, tests). Може да се повтаря.", + "de": "Zusätzliches zu scannendes Verzeichnis (Standard: scripts, tests). Wiederholbar.", "en": "Additional directory to scan (default: scripts, tests). Can be repeated.", - "pl": "Additional directory to scan (default: scripts, tests). Can be repeated.", - "ru": "Additional directory to scan (default: scripts, tests). Can be repeated.", - "zh": "Additional directory to scan (default: scripts, tests). Can be repeated.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Dodatkowy katalog do skanowania (domyślnie: scripts, tests). Można powtarzać.", + "ru": "Дополнительная директория для сканирования (по умолчанию: scripts, tests). Можно повторять.", + "zh": "要扫描的附加目录(默认:scripts、tests)。可重复使用。" }, "Additional excluded patterns (in addition to defaults)": { - "bg": "Additional excluded patterns (in addition to defaults)", - "de": "Additional excluded patterns (in addition to defaults)", + "bg": "Допълнителни изключени шаблони (в допълнение към подразбираните)", + "de": "Zusätzliche ausgeschlossene Muster (zusätzlich zu den Standardwerten)", "en": "Additional excluded patterns (in addition to defaults)", - "pl": "Additional excluded patterns (in addition to defaults)", - "ru": "Additional excluded patterns (in addition to defaults)", - "zh": "Additional excluded patterns (in addition to defaults)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Dodatkowe wykluczone wzorce (oprócz domyślnych)", + "ru": "Дополнительные исключённые шаблоны (в дополнение к стандартным)", + "zh": "附加排除模式(除默认模式外)" }, "Allow empty tag (PR mode where SHA is concrete).": { "bg": "Позволи празен таг (PR режим, където SHA е конкретен).", @@ -1015,19 +821,15 @@ "en": "Allow empty tag (PR mode where SHA is concrete).", "pl": "Zezwalaj na pusty tag (tryb PR, w którym SHA jest konkretne).", "ru": "Разрешить пустой тег (режим PR, где SHA конкретен).", - "zh": "允许空标签(SHA 为具体值的 PR 模式)。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "允许空标签(SHA 为具体值的 PR 模式)。" }, "Allow missing spec (warn only, don't fail)": { - "bg": "Allow missing spec (warn only, don't fail)", - "de": "Allow missing spec (warn only, don't fail)", + "bg": "Позволи липсващ spec (само предупреждение, без грешка)", + "de": "Fehlende Spec erlauben (nur warnen, nicht fehlschlagen)", "en": "Allow missing spec (warn only, don't fail)", - "pl": "Allow missing spec (warn only, don't fail)", - "ru": "Allow missing spec (warn only, don't fail)", - "zh": "Allow missing spec (warn only, don't fail)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Zezwól na brakujący spec (tylko ostrzeżenie, bez błędu)", + "ru": "Разрешить отсутствующий spec (только предупреждение, без ошибки)", + "zh": "允许缺少规范(仅警告,不失败)" }, "Another runner failed. Stopping this runner early.": { "bg": "Друг runner се провали. Спиране на този runner по-рано.", @@ -1035,99 +837,79 @@ "en": "Another runner failed. Stopping this runner early.", "pl": "Inny runner zakończył się niepowodzeniem. Wczesne zatrzymanie tego runnera.", "ru": "Другой runner завершился с ошибкой. Останавливаю этот runner досрочно.", - "zh": "另一个 runner 失败。提前停止此 runner。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "另一个 runner 失败。提前停止此 runner。" }, "Assigned {count} files to runner {runner_index}": { - "bg": "Assigned {count} files to runner {runner_index}", - "de": "Assigned {count} files to runner {runner_index}", + "bg": "Разпределени {count} файла към runner {runner_index}", + "de": "{count} Dateien an Runner {runner_index} zugewiesen", "en": "Assigned {count} files to runner {runner_index}", - "pl": "Assigned {count} files to runner {runner_index}", - "ru": "Assigned {count} files to runner {runner_index}", - "zh": "Assigned {count} files to runner {runner_index}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Przypisano {count} plików do runnera {runner_index}", + "ru": "Назначено {count} файлов раннеру {runner_index}", + "zh": "已将 {count} 个文件分配给 runner {runner_index}" }, "Assigned {count} items to runner {runner_index}: {encoded}": { - "bg": "Assigned {count} items to runner {runner_index}: {encoded}", - "de": "Assigned {count} items to runner {runner_index}: {encoded}", + "bg": "Разпределени {count} елемента към runner {runner_index}: {encoded}", + "de": "{count} Elemente an Runner {runner_index} zugewiesen: {encoded}", "en": "Assigned {count} items to runner {runner_index}: {encoded}", - "pl": "Assigned {count} items to runner {runner_index}: {encoded}", - "ru": "Assigned {count} items to runner {runner_index}: {encoded}", - "zh": "Assigned {count} items to runner {runner_index}: {encoded}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Przypisano {count} elementów do runnera {runner_index}: {encoded}", + "ru": "Назначено {count} элементов раннеру {runner_index}: {encoded}", + "zh": "已将 {count} 个项目分配给 runner {runner_index}:{encoded}" }, "Auto-rebase failed with HTTP {status}: {message}\nRebase manually:\n git fetch origin master && git rebase origin/master && git push --force-with-lease\nThen re-add the ready-to-merge label.": { - "bg": "Auto-rebase failed with HTTP {status}: {message}\nRebase manually:\n git fetch origin master && git rebase origin/master && git push --force-with-lease\nThen re-add the ready-to-merge label.", - "de": "Auto-rebase failed with HTTP {status}: {message}\nRebase manually:\n git fetch origin master && git rebase origin/master && git push --force-with-lease\nThen re-add the ready-to-merge label.", + "bg": "Автоматичният rebase се провали с HTTP {status}: {message}\nНаправете rebase ръчно:\n git fetch origin master && git rebase origin/master && git push --force-with-lease\nСлед това добавете отново етикета ready-to-merge.", + "de": "Auto-Rebase mit HTTP {status} fehlgeschlagen: {message}\nManuell rebasen:\n git fetch origin master && git rebase origin/master && git push --force-with-lease\nDann das ready-to-merge-Label erneut hinzufügen.", "en": "Auto-rebase failed with HTTP {status}: {message}\nRebase manually:\n git fetch origin master && git rebase origin/master && git push --force-with-lease\nThen re-add the ready-to-merge label.", - "pl": "Auto-rebase failed with HTTP {status}: {message}\nRebase manually:\n git fetch origin master && git rebase origin/master && git push --force-with-lease\nThen re-add the ready-to-merge label.", - "ru": "Auto-rebase failed with HTTP {status}: {message}\nRebase manually:\n git fetch origin master && git rebase origin/master && git push --force-with-lease\nThen re-add the ready-to-merge label.", - "zh": "Auto-rebase failed with HTTP {status}: {message}\nRebase manually:\n git fetch origin master && git rebase origin/master && git push --force-with-lease\nThen re-add the ready-to-merge label.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Automatyczny rebase nie powiódł się z HTTP {status}: {message}\nWykonaj rebase ręcznie:\n git fetch origin master && git rebase origin/master && git push --force-with-lease\nNastępnie ponownie dodaj etykietę ready-to-merge.", + "ru": "Автоматический rebase завершился с HTTP {status}: {message}\nВыполните rebase вручную:\n git fetch origin master && git rebase origin/master && git push --force-with-lease\nЗатем снова добавьте метку ready-to-merge.", + "zh": "自动 rebase 失败,HTTP {status}:{message}\n请手动 rebase:\n git fetch origin master && git rebase origin/master && git push --force-with-lease\n然后重新添加 ready-to-merge 标签。" }, "Automated CI commit (badge) — skipping post-merge jobs.": { - "bg": "Automated CI commit (badge) — skipping post-merge jobs.", - "de": "Automated CI commit (badge) — skipping post-merge jobs.", + "bg": "Автоматизиран CI комит (значка) — пропускат се post-merge задачите.", + "de": "Automatisierter CI-Commit (Badge) — Post-Merge-Jobs werden übersprungen.", "en": "Automated CI commit (badge) — skipping post-merge jobs.", - "pl": "Automated CI commit (badge) — skipping post-merge jobs.", - "ru": "Automated CI commit (badge) — skipping post-merge jobs.", - "zh": "Automated CI commit (badge) — skipping post-merge jobs.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Zautomatyzowany commit CI (odznaka) — pomijanie zadań post-merge.", + "ru": "Автоматический CI-коммит (значок) — post-merge задачи пропускаются.", + "zh": "自动 CI 提交(徽章)——跳过后续合并任务。" }, "Badge push attempt {attempt}/{retries} failed — retrying: {error}": { - "bg": "Badge push attempt {attempt}/{retries} failed — retrying: {error}", - "de": "Badge push attempt {attempt}/{retries} failed — retrying: {error}", + "bg": "Опит {attempt}/{retries} за push на значки се провали — повторен опит: {error}", + "de": "Badge-Push-Versuch {attempt}/{retries} fehlgeschlagen — erneuter Versuch: {error}", "en": "Badge push attempt {attempt}/{retries} failed — retrying: {error}", - "pl": "Badge push attempt {attempt}/{retries} failed — retrying: {error}", - "ru": "Badge push attempt {attempt}/{retries} failed — retrying: {error}", - "zh": "Badge push attempt {attempt}/{retries} failed — retrying: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Próba {attempt}/{retries} push odznak nie powiodła się — ponawianie: {error}", + "ru": "Попытка {attempt}/{retries} push значков не удалась — повтор: {error}", + "zh": "徽章推送尝试 {attempt}/{retries} 失败——正在重试:{error}" }, "Badge push failed after {retries} attempts: {error}": { - "bg": "Badge push failed after {retries} attempts: {error}", - "de": "Badge push failed after {retries} attempts: {error}", + "bg": "Push на значки се провали след {retries} опита: {error}", + "de": "Badge-Push nach {retries} Versuchen fehlgeschlagen: {error}", "en": "Badge push failed after {retries} attempts: {error}", - "pl": "Badge push failed after {retries} attempts: {error}", - "ru": "Badge push failed after {retries} attempts: {error}", - "zh": "Badge push failed after {retries} attempts: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Push odznak nie powiódł się po {retries} próbach: {error}", + "ru": "Push значков не удался после {retries} попыток: {error}", + "zh": "徽章推送在 {retries} 次尝试后失败:{error}" }, "Badges commit SHA: {sha}": { - "bg": "Badges commit SHA: {sha}", - "de": "Badges commit SHA: {sha}", + "bg": "SHA на комита със значки: {sha}", + "de": "SHA des Badge-Commits: {sha}", "en": "Badges commit SHA: {sha}", - "pl": "Badges commit SHA: {sha}", - "ru": "Badges commit SHA: {sha}", - "zh": "Badges commit SHA: {sha}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "SHA commita z odznakami: {sha}", + "ru": "SHA коммита значков: {sha}", + "zh": "徽章提交 SHA:{sha}" }, "Badges pushed to badges branch": { - "bg": "Badges pushed to badges branch", - "de": "Badges pushed to badges branch", + "bg": "Значките са push-нати към клона badges", + "de": "Badges zum badges-Branch gepusht", "en": "Badges pushed to badges branch", - "pl": "Badges pushed to badges branch", - "ru": "Badges pushed to badges branch", - "zh": "Badges pushed to badges branch", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Odznaki wypchnięte do gałęzi badges", + "ru": "Значки отправлены в ветку badges", + "zh": "徽章已推送到 badges 分支" }, "Base ref for diff": { - "bg": "Base ref for diff", - "de": "Base ref for diff", + "bg": "Базов ref за diff", + "de": "Basis-Ref für Diff", "en": "Base ref for diff", - "pl": "Base ref for diff", - "ru": "Base ref for diff", - "zh": "Base ref for diff", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Bazowy ref dla diff", + "ru": "Базовый ref для diff", + "zh": "用于 diff 的基准 ref" }, "Branch '{branch}' does not contain a task ID.\n Expected format: {prefix}-N-short-description": { "bg": "Клон '{branch}' не съдържа ID на задача.\n Очакван формат: {prefix}-N-кратко-описание", @@ -1135,9 +917,7 @@ "en": "Branch '{branch}' does not contain a task ID.\n Expected format: {prefix}-N-short-description", "pl": "Gałąź '{branch}' nie zawiera ID zadania.\n Oczekiwany format: {prefix}-N-krótki-opis", "ru": "Ветка '{branch}' не содержит ID задачи.\n Ожидаемый формат: {prefix}-N-краткое-описание", - "zh": "分支 '{branch}' 不包含任务 ID。\n 预期格式: {prefix}-N-简短描述", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "分支 '{branch}' 不包含任务 ID。\n 预期格式: {prefix}-N-简短描述" }, "Branch '{branch}' does not contain a task ID.\n Expected format: {prefix}-N-short-description\n Example: {prefix}-42-add-feature\n Fix: rename the branch or create a Vikunja task first:\n python -m devx.tools.create_task --title \"Task title\"": { "bg": "Клон '{branch}' не съдържа ID на задача.\n Очакван формат: {prefix}-N-кратко-описание\n Пример: {prefix}-42-add-feature\n Решение: преименувайте клона или създайте Vikunja задача:\n python -m devx.tools.create_task --title \"Заглавие на задача\"", @@ -1145,189 +925,151 @@ "en": "Branch '{branch}' does not contain a task ID.\n Expected format: {prefix}-N-short-description\n Example: {prefix}-42-add-feature\n Fix: rename the branch or create a Vikunja task first:\n python -m devx.tools.create_task --title \"Task title\"", "pl": "Gałąź '{branch}' nie zawiera ID zadania.\n Oczekiwany format: {prefix}-N-krótki-opis\n Przykład: {prefix}-42-add-feature\n Naprawa: zmień nazwę gałęzi lub utwórz zadanie Vikunja:\n python -m devx.tools.create_task --title \"Tytuł zadania\"", "ru": "Ветка '{branch}' не содержит ID задачи.\n Ожидаемый формат: {prefix}-N-краткое-описание\n Пример: {prefix}-42-add-feature\n Исправление: переименуйте ветку или создайте задачу Vikunja:\n python -m devx.tools.create_task --title \"Заголовок задачи\"", - "zh": "分支 '{branch}' 不包含任务 ID。\n 预期格式: {prefix}-N-简短描述\n 示例: {prefix}-42-add-feature\n 修复: 重命名分支或先创建 Vikunja 任务:\n python -m devx.tools.create_task --title \"任务标题\"", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "分支 '{branch}' 不包含任务 ID。\n 预期格式: {prefix}-N-简短描述\n 示例: {prefix}-42-add-feature\n 修复: 重命名分支或先创建 Vikunja 任务:\n python -m devx.tools.create_task --title \"任务标题\"" }, "Branch is already up-to-date with origin/master.": { - "bg": "Branch is already up-to-date with origin/master.", - "de": "Branch is already up-to-date with origin/master.", + "bg": "Клонът вече е актуален спрямо origin/master.", + "de": "Branch ist bereits aktuell mit origin/master.", "en": "Branch is already up-to-date with origin/master.", - "pl": "Branch is already up-to-date with origin/master.", - "ru": "Branch is already up-to-date with origin/master.", - "zh": "Branch is already up-to-date with origin/master.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Gałąź jest już aktualna względem origin/master.", + "ru": "Ветка уже актуальна относительно origin/master.", + "zh": "分支已与 origin/master 同步。" }, "Branch is behind master. Auto-rebasing via Gitea API...\nA new CI run will start automatically after the rebase.\nThe next auto-merge attempt will merge this PR.": { - "bg": "Branch is behind master. Auto-rebasing via Gitea API...\nA new CI run will start automatically after the rebase.\nThe next auto-merge attempt will merge this PR.", - "de": "Branch is behind master. Auto-rebasing via Gitea API...\nA new CI run will start automatically after the rebase.\nThe next auto-merge attempt will merge this PR.", + "bg": "Клонът изостава от master. Автоматичен rebase чрез Gitea API...\nНов CI run ще стартира автоматично след rebase.\nСледващият опит за auto-merge ще слее този PR.", + "de": "Branch liegt hinter master. Auto-Rebase via Gitea API...\nEin neuer CI-Lauf startet nach dem Rebase automatisch.\nDer nächste Auto-Merge-Versuch mergt diesen PR.", "en": "Branch is behind master. Auto-rebasing via Gitea API...\nA new CI run will start automatically after the rebase.\nThe next auto-merge attempt will merge this PR.", - "pl": "Branch is behind master. Auto-rebasing via Gitea API...\nA new CI run will start automatically after the rebase.\nThe next auto-merge attempt will merge this PR.", - "ru": "Branch is behind master. Auto-rebasing via Gitea API...\nA new CI run will start automatically after the rebase.\nThe next auto-merge attempt will merge this PR.", - "zh": "Branch is behind master. Auto-rebasing via Gitea API...\nA new CI run will start automatically after the rebase.\nThe next auto-merge attempt will merge this PR.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Gałąź jest za master. Automatyczny rebase przez Gitea API...\nNowy przebieg CI rozpocznie się automatycznie po rebase.\nNastępna próba auto-merge połączy ten PR.", + "ru": "Ветка отстаёт от master. Автоматический rebase через Gitea API...\nНовый CI-запуск начнётся автоматически после rebase.\nСледующая попытка auto-merge сольёт этот PR.", + "zh": "分支落后于 master。正在通过 Gitea API 自动 rebase...\nrebase 后将自动开始新的 CI 运行。\n下一次自动合并尝试将合并此 PR。" }, "Branch is behind origin/master. Rebase first: git fetch origin master && git rebase origin/master": { - "bg": "Branch is behind origin/master. Rebase first: git fetch origin master && git rebase origin/master", - "de": "Branch is behind origin/master. Rebase first: git fetch origin master && git rebase origin/master", + "bg": "Клонът изостава от origin/master. Първо rebase: git fetch origin master && git rebase origin/master", + "de": "Branch liegt hinter origin/master. Zuerst rebasen: git fetch origin master && git rebase origin/master", "en": "Branch is behind origin/master. Rebase first: git fetch origin master && git rebase origin/master", - "pl": "Branch is behind origin/master. Rebase first: git fetch origin master && git rebase origin/master", - "ru": "Branch is behind origin/master. Rebase first: git fetch origin master && git rebase origin/master", - "zh": "Branch is behind origin/master. Rebase first: git fetch origin master && git rebase origin/master", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Gałąź jest za origin/master. Najpierw wykonaj rebase: git fetch origin master && git rebase origin/master", + "ru": "Ветка отстаёт от origin/master. Сначала rebase: git fetch origin master && git rebase origin/master", + "zh": "分支落后于 origin/master。请先 rebase:git fetch origin master && git rebase origin/master" }, "Branch is {count} commit(s) behind master. Rebasing...": { - "bg": "Branch is {count} commit(s) behind master. Rebasing...", - "de": "Branch is {count} commit(s) behind master. Rebasing...", + "bg": "Клонът изостава с {count} комит(а) от master. Rebase...", + "de": "Branch ist {count} Commit(s) hinter master. Rebase läuft...", "en": "Branch is {count} commit(s) behind master. Rebasing...", - "pl": "Branch is {count} commit(s) behind master. Rebasing...", - "ru": "Branch is {count} commit(s) behind master. Rebasing...", - "zh": "Branch is {count} commit(s) behind master. Rebasing...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Gałąź jest o {count} commit(ów) za master. Rebase...", + "ru": "Ветка отстаёт на {count} коммит(ов) от master. Rebase...", + "zh": "分支落后 master {count} 个提交。正在 rebase..." }, "Branch name (auto-fetched from PR if not given)": { - "bg": "Branch name (auto-fetched from PR if not given)", - "de": "Branch name (auto-fetched from PR if not given)", + "bg": "Име на клон (извлича се автоматично от PR, ако не е зададено)", + "de": "Branch-Name (wird aus PR abgerufen, falls nicht angegeben)", "en": "Branch name (auto-fetched from PR if not given)", - "pl": "Branch name (auto-fetched from PR if not given)", - "ru": "Branch name (auto-fetched from PR if not given)", - "zh": "Branch name (auto-fetched from PR if not given)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nazwa gałęzi (pobierana automatycznie z PR, jeśli nie podano)", + "ru": "Имя ветки (извлекается из PR, если не указано)", + "zh": "分支名称(未提供时从 PR 自动获取)" }, "Branch name (e.g., DEVX-256-fix-foo)": { - "bg": "Branch name (e.g., DEVX-256-fix-foo)", - "de": "Branch name (e.g., DEVX-256-fix-foo)", + "bg": "Име на клон (напр. DEVX-256-fix-foo)", + "de": "Branch-Name (z. B. DEVX-256-fix-foo)", "en": "Branch name (e.g., DEVX-256-fix-foo)", - "pl": "Branch name (e.g., DEVX-256-fix-foo)", - "ru": "Branch name (e.g., DEVX-256-fix-foo)", - "zh": "Branch name (e.g., DEVX-256-fix-foo)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nazwa gałęzi (np. DEVX-256-fix-foo)", + "ru": "Имя ветки (напр. DEVX-256-fix-foo)", + "zh": "分支名称(例如 DEVX-256-fix-foo)" }, "Branch name (e.g., OBL-INFRA-531-fix-foo)": { - "bg": "Branch name (e.g., OBL-INFRA-531-fix-foo)", - "de": "Branch name (e.g., OBL-INFRA-531-fix-foo)", + "bg": "Име на клон (напр. OBL-INFRA-531-fix-foo)", + "de": "Branch-Name (z. B. OBL-INFRA-531-fix-foo)", "en": "Branch name (e.g., OBL-INFRA-531-fix-foo)", - "pl": "Branch name (e.g., OBL-INFRA-531-fix-foo)", - "ru": "Branch name (e.g., OBL-INFRA-531-fix-foo)", - "zh": "Branch name (e.g., OBL-INFRA-531-fix-foo)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nazwa gałęzi (np. OBL-INFRA-531-fix-foo)", + "ru": "Имя ветки (напр. OBL-INFRA-531-fix-foo)", + "zh": "分支名称(例如 OBL-INFRA-531-fix-foo)" }, "Branch name must contain a task ID.": { - "bg": "Branch name must contain a task ID.", - "de": "Branch name must contain a task ID.", + "bg": "Името на клона трябва да съдържа task ID.", + "de": "Der Branch-Name muss eine Task-ID enthalten.", "en": "Branch name must contain a task ID.", - "pl": "Branch name must contain a task ID.", - "ru": "Branch name must contain a task ID.", - "zh": "Branch name must contain a task ID.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nazwa gałęzi musi zawierać ID zadania.", + "ru": "Имя ветки должно содержать ID задачи.", + "zh": "分支名称必须包含任务 ID。" }, "Build failed for {name}": { - "bg": "Build failed for {name}", - "de": "Build failed for {name}", + "bg": "Изграждането на {name} се провали", + "de": "Build für {name} fehlgeschlagen", "en": "Build failed for {name}", - "pl": "Build failed for {name}", - "ru": "Build failed for {name}", - "zh": "Build failed for {name}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Budowanie {name} nie powiodło się", + "ru": "Сборка {name} не удалась", + "zh": "{name} 构建失败" }, "Bumping version: {current} -> v{new_version}": { - "bg": "Bumping version: {current} -> v{new_version}", - "de": "Bumping version: {current} -> v{new_version}", + "bg": "Увеличаване на версията: {current} -> v{new_version}", + "de": "Version wird erhöht: {current} -> v{new_version}", "en": "Bumping version: {current} -> v{new_version}", "pl": "Zmiana wersji: {current} -> v{new_version}", - "ru": "Bumping version: {current} -> v{new_version}", - "zh": "Bumping version: {current} -> v{new_version}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Повышение версии: {current} -> v{new_version}", + "zh": "升级版本:{current} -> v{new_version}" }, "CI checks did not complete within timeout.": { - "bg": "CI checks did not complete within timeout.", - "de": "CI checks did not complete within timeout.", + "bg": "CI проверките не завършиха в рамките на таймаута.", + "de": "CI-Checks wurden nicht innerhalb des Timeouts abgeschlossen.", "en": "CI checks did not complete within timeout.", - "pl": "CI checks did not complete within timeout.", - "ru": "CI checks did not complete within timeout.", - "zh": "CI checks did not complete within timeout.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Kontrole CI nie zakończyły się w ramach limitu czasu.", + "ru": "CI-проверки не завершились в течение таймаута.", + "zh": "CI 检查未在超时时间内完成。" }, "CI checks failed.": { - "bg": "CI checks failed.", - "de": "CI checks failed.", + "bg": "CI проверките се провалиха.", + "de": "CI-Checks fehlgeschlagen.", "en": "CI checks failed.", - "pl": "CI checks failed.", - "ru": "CI checks failed.", - "zh": "CI checks failed.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Kontrole CI nie powiodły się.", + "ru": "CI-проверки завершились с ошибкой.", + "zh": "CI 检查失败。" }, "CI run ID (for set-failed/set-passed)": { - "bg": "CI run ID (for set-failed/set-passed)", - "de": "CI run ID (for set-failed/set-passed)", + "bg": "ID на CI run (за set-failed/set-passed)", + "de": "CI-Run-ID (für set-failed/set-passed)", "en": "CI run ID (for set-failed/set-passed)", - "pl": "CI run ID (for set-failed/set-passed)", - "ru": "CI run ID (for set-failed/set-passed)", - "zh": "CI run ID (for set-failed/set-passed)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "ID przebiegu CI (dla set-failed/set-passed)", + "ru": "ID CI-запуска (для set-failed/set-passed)", + "zh": "CI 运行 ID(用于 set-failed/set-passed)" }, "CI run ID that triggered the publish": { - "bg": "CI run ID that triggered the publish", - "de": "CI run ID that triggered the publish", + "bg": "ID на CI run, който задейства публикуването", + "de": "CI-Run-ID, die die Veröffentlichung ausgelöst hat", "en": "CI run ID that triggered the publish", - "pl": "CI run ID that triggered the publish", - "ru": "CI run ID that triggered the publish", - "zh": "CI run ID that triggered the publish", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "ID przebiegu CI, który wyzwolił publikację", + "ru": "ID CI-запуска, инициировавшего публикацию", + "zh": "触发发布的 CI 运行 ID" }, "CI_GITEA_API_TOKEN not set: {error}": { - "bg": "CI_GITEA_API_TOKEN not set: {error}", - "de": "CI_GITEA_API_TOKEN not set: {error}", + "bg": "CI_GITEA_API_TOKEN не е зададен: {error}", + "de": "CI_GITEA_API_TOKEN nicht gesetzt: {error}", "en": "CI_GITEA_API_TOKEN not set: {error}", - "pl": "CI_GITEA_API_TOKEN not set: {error}", - "ru": "CI_GITEA_API_TOKEN not set: {error}", - "zh": "CI_GITEA_API_TOKEN not set: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "CI_GITEA_API_TOKEN nie jest ustawiony: {error}", + "ru": "CI_GITEA_API_TOKEN не задан: {error}", + "zh": "未设置 CI_GITEA_API_TOKEN:{error}" }, "CI_GITEA_TOKEN environment variable required": { - "bg": "CI_GITEA_TOKEN environment variable required", - "de": "CI_GITEA_TOKEN environment variable required", + "bg": "Изисква се променлива на средата CI_GITEA_TOKEN", + "de": "Umgebungsvariable CI_GITEA_TOKEN erforderlich", "en": "CI_GITEA_TOKEN environment variable required", - "pl": "CI_GITEA_TOKEN environment variable required", - "ru": "CI_GITEA_TOKEN environment variable required", - "zh": "CI_GITEA_TOKEN environment variable required", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Wymagana zmienna środowiskowa CI_GITEA_TOKEN", + "ru": "Требуется переменная окружения CI_GITEA_TOKEN", + "zh": "需要环境变量 CI_GITEA_TOKEN" }, "CI_GITEA_TOKEN is not set.": { - "bg": "CI_GITEA_TOKEN is not set.", - "de": "CI_GITEA_TOKEN is not set.", + "bg": "CI_GITEA_TOKEN не е зададен.", + "de": "CI_GITEA_TOKEN ist nicht gesetzt.", "en": "CI_GITEA_TOKEN is not set.", - "pl": "CI_GITEA_TOKEN is not set.", - "ru": "CI_GITEA_TOKEN is not set.", - "zh": "CI_GITEA_TOKEN is not set.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "CI_GITEA_TOKEN nie jest ustawiony.", + "ru": "CI_GITEA_TOKEN не задан.", + "zh": "未设置 CI_GITEA_TOKEN。" }, "CI_GITEA_TOKEN is not set. Add it to .env or export it.": { - "bg": "CI_GITEA_TOKEN is not set. Add it to .env or export it.", - "de": "CI_GITEA_TOKEN is not set. Add it to .env or export it.", + "bg": "CI_GITEA_TOKEN не е зададен. Добавете го в .env или го експортирайте.", + "de": "CI_GITEA_TOKEN ist nicht gesetzt. Zu .env hinzufügen oder exportieren.", "en": "CI_GITEA_TOKEN is not set. Add it to .env or export it.", - "pl": "CI_GITEA_TOKEN is not set. Add it to .env or export it.", - "ru": "CI_GITEA_TOKEN is not set. Add it to .env or export it.", - "zh": "CI_GITEA_TOKEN is not set. Add it to .env or export it.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "CI_GITEA_TOKEN nie jest ustawiony. Dodaj go do .env lub wyeksportuj.", + "ru": "CI_GITEA_TOKEN не задан. Добавьте его в .env или экспортируйте.", + "zh": "未设置 CI_GITEA_TOKEN。请添加到 .env 或导出。" }, "CI_GITEA_TOKEN is not set. Required to create a PR.": { "bg": "CI_GITEA_TOKEN не е зададен. Необходим за създаване на PR.", @@ -1335,19 +1077,15 @@ "en": "CI_GITEA_TOKEN is not set. Required to create a PR.", "pl": "CI_GITEA_TOKEN nie jest ustawiony. Wymagany do utworzenia PR.", "ru": "CI_GITEA_TOKEN не установлен. Требуется для создания PR.", - "zh": "CI_GITEA_TOKEN 未设置。创建 PR 所需。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "CI_GITEA_TOKEN 未设置。创建 PR 所需。" }, "CI_GITEA_TOKEN not set — skipping login configuration.": { - "bg": "CI_GITEA_TOKEN not set — skipping login configuration.", - "de": "CI_GITEA_TOKEN not set — skipping login configuration.", + "bg": "CI_GITEA_TOKEN не е зададен — пропуска се конфигурацията за вход.", + "de": "CI_GITEA_TOKEN nicht gesetzt — Login-Konfiguration wird übersprungen.", "en": "CI_GITEA_TOKEN not set — skipping login configuration.", - "pl": "CI_GITEA_TOKEN not set — skipping login configuration.", - "ru": "CI_GITEA_TOKEN not set — skipping login configuration.", - "zh": "CI_GITEA_TOKEN not set — skipping login configuration.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "CI_GITEA_TOKEN nie jest ustawiony — pomijanie konfiguracji logowania.", + "ru": "CI_GITEA_TOKEN не задан — настройка входа пропускается.", + "zh": "未设置 CI_GITEA_TOKEN——跳过登录配置。" }, "Cannot read __version__ from src/{pkg}/__init__.py — skipping.": { "bg": "", @@ -1355,29 +1093,23 @@ "en": "Cannot read __version__ from src/{pkg}/__init__.py — skipping.", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Cannot rebase: not on a branch (detached HEAD).": { - "bg": "Cannot rebase: not on a branch (detached HEAD).", - "de": "Cannot rebase: not on a branch (detached HEAD).", + "bg": "Не може rebase: не сте на клон (detached HEAD).", + "de": "Rebase nicht möglich: nicht auf einem Branch (detached HEAD).", "en": "Cannot rebase: not on a branch (detached HEAD).", - "pl": "Cannot rebase: not on a branch (detached HEAD).", - "ru": "Cannot rebase: not on a branch (detached HEAD).", - "zh": "Cannot rebase: not on a branch (detached HEAD).", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie można wykonać rebase: nie na gałęzi (detached HEAD).", + "ru": "Невозможно выполнить rebase: не на ветке (detached HEAD).", + "zh": "无法 rebase:不在分支上(detached HEAD)。" }, "Checking CLI command documentation...": { - "bg": "Checking CLI command documentation...", - "de": "Checking CLI command documentation...", + "bg": "Проверка на документацията за CLI команди...", + "de": "Prüfe CLI-Befehlsdokumentation...", "en": "Checking CLI command documentation...", "pl": "Sprawdzanie dokumentacji poleceń CLI...", - "ru": "Checking CLI command documentation...", - "zh": "Checking CLI command documentation...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Проверка документации CLI-команд...", + "zh": "正在检查 CLI 命令文档..." }, "Checking code block languages...": { "bg": "", @@ -1385,39 +1117,31 @@ "en": "Checking code block languages...", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Checking docs structure...": { - "bg": "Checking docs structure...", - "de": "Checking docs structure...", + "bg": "Проверка на структурата на документацията...", + "de": "Prüfe Dokumentationsstruktur...", "en": "Checking docs structure...", - "pl": "Checking docs structure...", - "ru": "Checking docs structure...", - "zh": "Checking docs structure...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Sprawdzanie struktury dokumentacji...", + "ru": "Проверка структуры документации...", + "zh": "正在检查文档结构..." }, "Checking duplicate headings...": { - "bg": "Checking duplicate headings...", - "de": "Checking duplicate headings...", + "bg": "Проверка за дублирани заглавия...", + "de": "Prüfe auf doppelte Überschriften...", "en": "Checking duplicate headings...", - "pl": "Checking duplicate headings...", - "ru": "Checking duplicate headings...", - "zh": "Checking duplicate headings...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Sprawdzanie zduplikowanych nagłówków...", + "ru": "Проверка дублирующихся заголовков...", + "zh": "正在检查重复标题..." }, "Checking for TODO/FIXME markers...": { - "bg": "Checking for TODO/FIXME markers...", - "de": "Checking for TODO/FIXME markers...", + "bg": "Проверка за TODO/FIXME маркери...", + "de": "Prüfe auf TODO/FIXME-Marker...", "en": "Checking for TODO/FIXME markers...", - "pl": "Checking for TODO/FIXME markers...", - "ru": "Checking for TODO/FIXME markers...", - "zh": "Checking for TODO/FIXME markers...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Sprawdzanie znaczników TODO/FIXME...", + "ru": "Проверка меток TODO/FIXME...", + "zh": "正在检查 TODO/FIXME 标记..." }, "Checking for orphan docs...": { "bg": "", @@ -1425,39 +1149,31 @@ "en": "Checking for orphan docs...", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Checking for stale docs...": { - "bg": "Checking for stale docs...", - "de": "Checking for stale docs...", + "bg": "Проверка за остарели документи...", + "de": "Prüfe auf veraltete Dokumente...", "en": "Checking for stale docs...", - "pl": "Checking for stale docs...", - "ru": "Checking for stale docs...", - "zh": "Checking for stale docs...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Sprawdzanie nieaktualnych dokumentów...", + "ru": "Проверка устаревших документов...", + "zh": "正在检查过时文档..." }, "Checking heading hierarchy...": { - "bg": "Checking heading hierarchy...", - "de": "Checking heading hierarchy...", + "bg": "Проверка на йерархията на заглавията...", + "de": "Prüfe Überschriftenhierarchie...", "en": "Checking heading hierarchy...", - "pl": "Checking heading hierarchy...", - "ru": "Checking heading hierarchy...", - "zh": "Checking heading hierarchy...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Sprawdzanie hierarchii nagłówków...", + "ru": "Проверка иерархии заголовков...", + "zh": "正在检查标题层级..." }, "Checking internal links...": { - "bg": "Checking internal links...", - "de": "Checking internal links...", + "bg": "Проверка на вътрешни връзки...", + "de": "Prüfe interne Links...", "en": "Checking internal links...", - "pl": "Checking internal links...", - "ru": "Checking internal links...", - "zh": "Checking internal links...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Sprawdzanie linków wewnętrznych...", + "ru": "Проверка внутренних ссылок...", + "zh": "正在检查内部链接..." }, "Checking line length...": { "bg": "", @@ -1465,9 +1181,7 @@ "en": "Checking line length...", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Checking max heading depth...": { "bg": "", @@ -1475,19 +1189,15 @@ "en": "Checking max heading depth...", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Checking required files...": { - "bg": "Checking required files...", - "de": "Checking required files...", + "bg": "Проверка на задължителните файлове...", + "de": "Prüfe erforderliche Dateien...", "en": "Checking required files...", - "pl": "Checking required files...", - "ru": "Checking required files...", - "zh": "Checking required files...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Sprawdzanie wymaganych plików...", + "ru": "Проверка обязательных файлов...", + "zh": "正在检查必需文件..." }, "Checking single H1 per file...": { "bg": "", @@ -1495,29 +1205,23 @@ "en": "Checking single H1 per file...", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Checking status for PR #{pr_number}...": { - "bg": "Checking status for PR #{pr_number}...", - "de": "Checking status for PR #{pr_number}...", + "bg": "Проверка на статуса на PR #{pr_number}...", + "de": "Prüfe Status für PR #{pr_number}...", "en": "Checking status for PR #{pr_number}...", - "pl": "Checking status for PR #{pr_number}...", - "ru": "Checking status for PR #{pr_number}...", - "zh": "Checking status for PR #{pr_number}...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Sprawdzanie statusu PR #{pr_number}...", + "ru": "Проверка статуса PR #{pr_number}...", + "zh": "正在检查 PR #{pr_number} 的状态..." }, "Checking trailing whitespace...": { - "bg": "Checking trailing whitespace...", - "de": "Checking trailing whitespace...", + "bg": "Проверка за крайни интервали...", + "de": "Prüfe auf abschließende Leerzeichen...", "en": "Checking trailing whitespace...", - "pl": "Checking trailing whitespace...", - "ru": "Checking trailing whitespace...", - "zh": "Checking trailing whitespace...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Sprawdzanie końcowych białych znaków...", + "ru": "Проверка конечных пробелов...", + "zh": "正在检查行尾空白..." }, "Checking version references for {pkg} (current: v{version})": { "bg": "", @@ -1525,19 +1229,15 @@ "en": "Checking version references for {pkg} (current: v{version})", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "CliRunner.invoke({target}) in test '{test}' reaches unpatched dangerous functions: {funcs}. Add @patch for each or patch the calling function.": { - "bg": "CliRunner.invoke({target}) in test '{test}' reaches unpatched dangerous functions: {funcs}. Add @patch for each or patch the calling function.", - "de": "CliRunner.invoke({target}) in test '{test}' reaches unpatched dangerous functions: {funcs}. Add @patch for each or patch the calling function.", + "bg": "CliRunner.invoke({target}) в тест '{test}' достига непачнати опасни функции: {funcs}. Добавете @patch за всяка или patch-нете извикващата функция.", + "de": "CliRunner.invoke({target}) in Test '{test}' erreicht ungepatchte gefährliche Funktionen: {funcs}. @patch für jede hinzufügen oder die aufrufende Funktion patchen.", "en": "CliRunner.invoke({target}) in test '{test}' reaches unpatched dangerous functions: {funcs}. Add @patch for each or patch the calling function.", - "pl": "CliRunner.invoke({target}) in test '{test}' reaches unpatched dangerous functions: {funcs}. Add @patch for each or patch the calling function.", - "ru": "CliRunner.invoke({target}) in test '{test}' reaches unpatched dangerous functions: {funcs}. Add @patch for each or patch the calling function.", - "zh": "CliRunner.invoke({target}) in test '{test}' reaches unpatched dangerous functions: {funcs}. Add @patch for each or patch the calling function.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "CliRunner.invoke({target}) w teście '{test}' sięga niezałatanych niebezpiecznych funkcji: {funcs}. Dodaj @patch dla każdej lub załataj funkcję wywołującą.", + "ru": "CliRunner.invoke({target}) в тесте '{test}' достигает незапатченных опасных функций: {funcs}. Добавьте @patch для каждой или запатчите вызывающую функцию.", + "zh": "测试 '{test}' 中的 CliRunner.invoke({target}) 触达未修补的危险函数:{funcs}。请为每个函数添加 @patch 或修补调用函数。" }, "Cloned existing wiki.": { "bg": "", @@ -1545,9 +1245,7 @@ "en": "Cloned existing wiki.", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Cloning wiki repo...": { "bg": "", @@ -1555,39 +1253,31 @@ "en": "Cloning wiki repo...", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Command failed ({cmd}): {stderr}": { - "bg": "Command failed ({cmd}): {stderr}", - "de": "Command failed ({cmd}): {stderr}", + "bg": "Командата се провали ({cmd}): {stderr}", + "de": "Befehl fehlgeschlagen ({cmd}): {stderr}", "en": "Command failed ({cmd}): {stderr}", "pl": "Polecenie nie powiodło się ({cmd}): {stderr}", - "ru": "Command failed ({cmd}): {stderr}", - "zh": "Command failed ({cmd}): {stderr}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Команда завершилась с ошибкой ({cmd}): {stderr}", + "zh": "命令失败({cmd}):{stderr}" }, "Commit message: {msg}": { - "bg": "Commit message: {msg}", - "de": "Commit message: {msg}", + "bg": "Съобщение на комит: {msg}", + "de": "Commit-Nachricht: {msg}", "en": "Commit message: {msg}", - "pl": "Commit message: {msg}", - "ru": "Commit message: {msg}", - "zh": "Commit message: {msg}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Treść commita: {msg}", + "ru": "Сообщение коммита: {msg}", + "zh": "提交信息:{msg}" }, "Commit: {sha}": { - "bg": "Commit: {sha}", + "bg": "Комит: {sha}", "de": "Commit: {sha}", "en": "Commit: {sha}", "pl": "Commit: {sha}", - "ru": "Commit: {sha}", - "zh": "Commit: {sha}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Коммит: {sha}", + "zh": "提交:{sha}" }, "Committing and pushing...": { "bg": "", @@ -1595,19 +1285,15 @@ "en": "Committing and pushing...", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Comparing {base}..{head} ({count} files changed)": { - "bg": "Comparing {base}..{head} ({count} files changed)", - "de": "Comparing {base}..{head} ({count} files changed)", + "bg": "Сравняване на {base}..{head} ({count} променени файла)", + "de": "Vergleiche {base}..{head} ({count} geänderte Dateien)", "en": "Comparing {base}..{head} ({count} files changed)", "pl": "Porównywanie {base}..{head} ({count} zmienionych plików)", - "ru": "Comparing {base}..{head} ({count} files changed)", - "zh": "Comparing {base}..{head} ({count} files changed)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Сравнение {base}..{head} ({count} изменённых файлов)", + "zh": "正在比较 {base}..{head}({count} 个文件已更改)" }, "Configuration OK: [tool.devx] present, devx versions consistent.": { "bg": "Конфигурацията е OK: [tool.devx] присъства, версиите на devx са консистентни.", @@ -1615,19 +1301,15 @@ "en": "Configuration OK: [tool.devx] present, devx versions consistent.", "pl": "Konfiguracja OK: [tool.devx] obecne, wersje devx spójne.", "ru": "Конфигурация OK: [tool.devx] присутствует, версии devx согласованы.", - "zh": "配置正常: [tool.devx] 已存在, devx 版本一致。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "配置正常: [tool.devx] 已存在, devx 版本一致。" }, "Configuration validation failed.": { - "bg": "Configuration validation failed.", - "de": "Configuration validation failed.", + "bg": "Валидацията на конфигурацията се провали.", + "de": "Konfigurationsvalidierung fehlgeschlagen.", "en": "Configuration validation failed.", - "pl": "Configuration validation failed.", - "ru": "Configuration validation failed.", - "zh": "Configuration validation failed.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Walidacja konfiguracji nie powiodła się.", + "ru": "Проверка конфигурации не удалась.", + "zh": "配置验证失败。" }, "Configuring branch protection for {branch}...": { "bg": "Конфигуриране на защита на клона {branch}...", @@ -1635,9 +1317,7 @@ "en": "Configuring branch protection for {branch}...", "pl": "Konfigurowanie ochrony gałęzi dla {branch}...", "ru": "Настройка защиты ветки {branch}...", - "zh": "正在配置 {branch} 的分支保护...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "正在配置 {branch} 的分支保护..." }, "Configuring repository settings...": { "bg": "Конфигуриране на настройките на хранилището...", @@ -1645,29 +1325,23 @@ "en": "Configuring repository settings...", "pl": "Konfigurowanie ustawień repozytorium...", "ru": "Настройка параметров репозитория...", - "zh": "正在配置仓库设置...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "正在配置仓库设置..." }, "Configuring tea login '{name}' for {url}...": { - "bg": "Configuring tea login '{name}' for {url}...", - "de": "Configuring tea login '{name}' for {url}...", + "bg": "Конфигуриране на tea вход '{name}' за {url}...", + "de": "Konfiguriere tea-Login '{name}' für {url}...", "en": "Configuring tea login '{name}' for {url}...", - "pl": "Configuring tea login '{name}' for {url}...", - "ru": "Configuring tea login '{name}' for {url}...", - "zh": "Configuring tea login '{name}' for {url}...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Konfigurowanie logowania tea '{name}' dla {url}...", + "ru": "Настройка входа tea '{name}' для {url}...", + "zh": "正在为 {url} 配置 tea 登录 '{name}'..." }, "Could not detect PR number. Use --pr to specify it explicitly,\nor run this command from a branch with an open PR.": { - "bg": "Could not detect PR number. Use --pr to specify it explicitly,\nor run this command from a branch with an open PR.", - "de": "Could not detect PR number. Use --pr to specify it explicitly,\nor run this command from a branch with an open PR.", + "bg": "Не може да се определи номерът на PR. Използвайте --pr, за да го зададете изрично,\nили изпълнете командата от клон с отворен PR.", + "de": "PR-Nummer konnte nicht ermittelt werden. Mit --pr explizit angeben,\noder den Befehl von einem Branch mit offenem PR ausführen.", "en": "Could not detect PR number. Use --pr to specify it explicitly,\nor run this command from a branch with an open PR.", - "pl": "Could not detect PR number. Use --pr to specify it explicitly,\nor run this command from a branch with an open PR.", - "ru": "Could not detect PR number. Use --pr to specify it explicitly,\nor run this command from a branch with an open PR.", - "zh": "Could not detect PR number. Use --pr to specify it explicitly,\nor run this command from a branch with an open PR.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie można wykryć numeru PR. Użyj --pr, aby go podać jawnie,\nlub uruchom polecenie z gałęzi z otwartym PR.", + "ru": "Не удалось определить номер PR. Укажите его явно через --pr,\nили выполните команду из ветки с открытым PR.", + "zh": "无法检测 PR 编号。请使用 --pr 明确指定,\n或在有开放 PR 的分支上运行此命令。" }, "Could not detect current branch: {error}": { "bg": "Не може да се определи текущия клон: {error}", @@ -1675,59 +1349,47 @@ "en": "Could not detect current branch: {error}", "pl": "Nie można wykryć bieżącej gałęzi: {error}", "ru": "Не удалось определить текущую ветку: {error}", - "zh": "无法检测当前分支: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "无法检测当前分支: {error}" }, "Could not determine branch name from PR #{pr}": { - "bg": "Could not determine branch name from PR #{pr}", - "de": "Could not determine branch name from PR #{pr}", + "bg": "Не може да се определи името на клона от PR #{pr}", + "de": "Branch-Name konnte aus PR #{pr} nicht ermittelt werden", "en": "Could not determine branch name from PR #{pr}", - "pl": "Could not determine branch name from PR #{pr}", - "ru": "Could not determine branch name from PR #{pr}", - "zh": "Could not determine branch name from PR #{pr}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie można określić nazwy gałęzi z PR #{pr}", + "ru": "Не удалось определить имя ветки из PR #{pr}", + "zh": "无法从 PR #{pr} 确定分支名称" }, "Could not determine head SHA for PR #{pr_number}.": { - "bg": "Could not determine head SHA for PR #{pr_number}.", - "de": "Could not determine head SHA for PR #{pr_number}.", + "bg": "Не може да се определи head SHA за PR #{pr_number}.", + "de": "Head-SHA für PR #{pr_number} konnte nicht ermittelt werden.", "en": "Could not determine head SHA for PR #{pr_number}.", - "pl": "Could not determine head SHA for PR #{pr_number}.", - "ru": "Could not determine head SHA for PR #{pr_number}.", - "zh": "Could not determine head SHA for PR #{pr_number}.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie można określić head SHA dla PR #{pr_number}.", + "ru": "Не удалось определить head SHA для PR #{pr_number}.", + "zh": "无法确定 PR #{pr_number} 的 head SHA。" }, "Could not determine repository. Set DEVX_REPO_OWNER and DEVX_REPO_NAME\nor GITHUB_REPOSITORY environment variables.": { - "bg": "Could not determine repository. Set DEVX_REPO_OWNER and DEVX_REPO_NAME\nor GITHUB_REPOSITORY environment variables.", - "de": "Could not determine repository. Set DEVX_REPO_OWNER and DEVX_REPO_NAME\nor GITHUB_REPOSITORY environment variables.", + "bg": "Не може да се определи репозитория. Задайте променливите DEVX_REPO_OWNER и DEVX_REPO_NAME\nили GITHUB_REPOSITORY.", + "de": "Repository konnte nicht ermittelt werden. Setzen Sie DEVX_REPO_OWNER und DEVX_REPO_NAME\noder die Umgebungsvariable GITHUB_REPOSITORY.", "en": "Could not determine repository. Set DEVX_REPO_OWNER and DEVX_REPO_NAME\nor GITHUB_REPOSITORY environment variables.", - "pl": "Could not determine repository. Set DEVX_REPO_OWNER and DEVX_REPO_NAME\nor GITHUB_REPOSITORY environment variables.", - "ru": "Could not determine repository. Set DEVX_REPO_OWNER and DEVX_REPO_NAME\nor GITHUB_REPOSITORY environment variables.", - "zh": "Could not determine repository. Set DEVX_REPO_OWNER and DEVX_REPO_NAME\nor GITHUB_REPOSITORY environment variables.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie można określić repozytorium. Ustaw zmienne DEVX_REPO_OWNER i DEVX_REPO_NAME\nlub GITHUB_REPOSITORY.", + "ru": "Не удалось определить репозиторий. Задайте переменные DEVX_REPO_OWNER и DEVX_REPO_NAME\nили GITHUB_REPOSITORY.", + "zh": "无法确定仓库。请设置环境变量 DEVX_REPO_OWNER 和 DEVX_REPO_NAME\n或 GITHUB_REPOSITORY。" }, "Could not extract conventional commit message from PR commits.": { - "bg": "Could not extract conventional commit message from PR commits.", - "de": "Could not extract conventional commit message from PR commits.", + "bg": "Не може да се извлече conventional commit съобщение от PR комитите.", + "de": "Konnte keine Conventional-Commit-Nachricht aus den PR-Commits extrahieren.", "en": "Could not extract conventional commit message from PR commits.", "pl": "Nie udało się wyodrębnić konwencjonalnej wiadomości commit z commitów PR.", - "ru": "Could not extract conventional commit message from PR commits.", - "zh": "Could not extract conventional commit message from PR commits.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Не удалось извлечь conventional commit сообщение из коммитов PR.", + "zh": "无法从 PR 提交中提取 conventional commit 信息。" }, "Could not fetch PR title from Gitea (CI_GITEA_TOKEN not set or PR not found).": { - "bg": "Could not fetch PR title from Gitea (CI_GITEA_TOKEN not set or PR not found).", - "de": "Could not fetch PR title from Gitea (CI_GITEA_TOKEN not set or PR not found).", + "bg": "Не може да се извлече заглавието на PR от Gitea (CI_GITEA_TOKEN не е зададен или PR не е намерен).", + "de": "PR-Titel konnte nicht von Gitea abgerufen werden (CI_GITEA_TOKEN nicht gesetzt oder PR nicht gefunden).", "en": "Could not fetch PR title from Gitea (CI_GITEA_TOKEN not set or PR not found).", - "pl": "Could not fetch PR title from Gitea (CI_GITEA_TOKEN not set or PR not found).", - "ru": "Could not fetch PR title from Gitea (CI_GITEA_TOKEN not set or PR not found).", - "zh": "Could not fetch PR title from Gitea (CI_GITEA_TOKEN not set or PR not found).", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie można pobrać tytułu PR z Gitea (CI_GITEA_TOKEN nie ustawiony lub PR nie znaleziony).", + "ru": "Не удалось получить заголовок PR из Gitea (CI_GITEA_TOKEN не задан или PR не найден).", + "zh": "无法从 Gitea 获取 PR 标题(CI_GITEA_TOKEN 未设置或 PR 未找到)。" }, "Could not find Vikunja task {task_id} in project {project_id}.": { "bg": "Не е намерена Vikunja задача {task_id} в проект {project_id}.", @@ -1735,49 +1397,39 @@ "en": "Could not find Vikunja task {task_id} in project {project_id}.", "pl": "Nie znaleziono zadania Vikunja {task_id} w projekcie {project_id}.", "ru": "Не найдена задача Vikunja {task_id} в проекте {project_id}.", - "zh": "在项目 {project_id} 中找不到 Vikunja 任务 {task_id}。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "在项目 {project_id} 中找不到 Vikunja 任务 {task_id}。" }, "Could not find Vikunja task {task_id} in project {project_id}. Every PR must have a corresponding Vikunja task.": { - "bg": "Could not find Vikunja task {task_id} in project {project_id}. Every PR must have a corresponding Vikunja task.", - "de": "Could not find Vikunja task {task_id} in project {project_id}. Every PR must have a corresponding Vikunja task.", + "bg": "Не е намерена Vikunja задача {task_id} в проект {project_id}. Всеки PR трябва да има съответна Vikunja задача.", + "de": "Vikunja-Task {task_id} in Projekt {project_id} nicht gefunden. Jeder PR muss einen entsprechenden Vikunja-Task haben.", "en": "Could not find Vikunja task {task_id} in project {project_id}. Every PR must have a corresponding Vikunja task.", "pl": "Nie znaleziono zadania Vikunja {task_id} w projekcie {project_id}. Każdy PR musi mieć odpowiadające zadanie Vikunja.", - "ru": "Could not find Vikunja task {task_id} in project {project_id}. Every PR must have a corresponding Vikunja task.", - "zh": "Could not find Vikunja task {task_id} in project {project_id}. Every PR must have a corresponding Vikunja task.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Задача Vikunja {task_id} в проекте {project_id} не найдена. Каждый PR должен иметь соответствующую задачу Vikunja.", + "zh": "在项目 {project_id} 中未找到 Vikunja 任务 {task_id}。每个 PR 必须有对应的 Vikunja 任务。" }, "Could not find __version__ in {file}": { - "bg": "Could not find __version__ in {file}", - "de": "Could not find __version__ in {file}", + "bg": "Не е намерен __version__ в {file}", + "de": "__version__ in {file} nicht gefunden", "en": "Could not find __version__ in {file}", "pl": "Nie znaleziono __version__ w {file}", - "ru": "Could not find __version__ in {file}", - "zh": "Could not find __version__ in {file}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "__version__ не найден в {file}", + "zh": "在 {file} 中未找到 __version__" }, "Could not find pinned version for {pkg}": { - "bg": "Could not find pinned version for {pkg}", - "de": "Could not find pinned version for {pkg}", + "bg": "Не е намерена фиксирана версия за {pkg}", + "de": "Keine gepinnte Version für {pkg} gefunden", "en": "Could not find pinned version for {pkg}", - "pl": "Could not find pinned version for {pkg}", - "ru": "Could not find pinned version for {pkg}", - "zh": "Could not find pinned version for {pkg}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie znaleziono przypiętej wersji dla {pkg}", + "ru": "Не найдена закреплённая версия для {pkg}", + "zh": "未找到 {pkg} 的固定版本" }, "Could not parse test execution time from output.": { - "bg": "Could not parse test execution time from output.", - "de": "Could not parse test execution time from output.", + "bg": "Не може да се извлече време за изпълнение на теста от изхода.", + "de": "Testausführungszeit konnte aus der Ausgabe nicht gelesen werden.", "en": "Could not parse test execution time from output.", "pl": "Nie udało się przeanalizować czasu wykonania testu z wyjścia.", - "ru": "Could not parse test execution time from output.", - "zh": "Could not parse test execution time from output.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Не удалось извлечь время выполнения теста из вывода.", + "zh": "无法从输出中解析测试执行时间。" }, "Created PR #{index}: {title}\n {url}": { "bg": "Създаден PR #{index}: {title}\n {url}", @@ -1785,9 +1437,7 @@ "en": "Created PR #{index}: {title}\n {url}", "pl": "Utworzono PR #{index}: {title}\n {url}", "ru": "Создан PR #{index}: {title}\n {url}", - "zh": "已创建 PR #{index}: {title}\n {url}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "已创建 PR #{index}: {title}\n {url}" }, "Created Vikunja task: {identifier} (id={task_id})": { "bg": "Създадена Vikunja задача: {identifier} (id={task_id})", @@ -1795,59 +1445,47 @@ "en": "Created Vikunja task: {identifier} (id={task_id})", "pl": "Utworzono zadanie Vikunja: {identifier} (id={task_id})", "ru": "Создана задача Vikunja: {identifier} (id={task_id})", - "zh": "已创建 Vikunja 任务: {identifier} (id={task_id})", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "已创建 Vikunja 任务: {identifier} (id={task_id})" }, "Created issue #{issue_id}: {title}": { - "bg": "Created issue #{issue_id}: {title}", - "de": "Created issue #{issue_id}: {title}", + "bg": "Създадено issue #{issue_id}: {title}", + "de": "Issue #{issue_id} erstellt: {title}", "en": "Created issue #{issue_id}: {title}", "pl": "Utworzono zgłoszenie #{issue_id}: {title}", - "ru": "Created issue #{issue_id}: {title}", - "zh": "Created issue #{issue_id}: {title}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Создано issue #{issue_id}: {title}", + "zh": "已创建 issue #{issue_id}:{title}" }, "Created release commit.": { - "bg": "Created release commit.", - "de": "Created release commit.", + "bg": "Създаден е release комит.", + "de": "Release-Commit erstellt.", "en": "Created release commit.", "pl": "Utworzono commit wydania.", - "ru": "Created release commit.", - "zh": "Created release commit.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Создан релизный коммит.", + "zh": "已创建发布提交。" }, "Dependencies must have documentation comments.": { - "bg": "Dependencies must have documentation comments.", - "de": "Dependencies must have documentation comments.", + "bg": "Зависимостите трябва да имат документиращи коментари.", + "de": "Abhängigkeiten müssen Dokumentationskommentare haben.", "en": "Dependencies must have documentation comments.", - "pl": "Dependencies must have documentation comments.", - "ru": "Dependencies must have documentation comments.", - "zh": "Dependencies must have documentation comments.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Zależności muszą mieć komentarze dokumentacyjne.", + "ru": "Зависимости должны иметь документирующие комментарии.", + "zh": "依赖项必须有文档注释。" }, "Directory containing Ansible roles": { - "bg": "Directory containing Ansible roles", - "de": "Directory containing Ansible roles", + "bg": "Директория, съдържаща Ansible роли", + "de": "Verzeichnis mit Ansible-Rollen", "en": "Directory containing Ansible roles", - "pl": "Directory containing Ansible roles", - "ru": "Directory containing Ansible roles", - "zh": "Directory containing Ansible roles", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Katalog zawierający role Ansible", + "ru": "Директория, содержащая роли Ansible", + "zh": "包含 Ansible 角色的目录" }, "Directory containing spec files": { - "bg": "Directory containing spec files", - "de": "Directory containing spec files", + "bg": "Директория, съдържаща spec файлове", + "de": "Verzeichnis mit Spec-Dateien", "en": "Directory containing spec files", - "pl": "Directory containing spec files", - "ru": "Directory containing spec files", - "zh": "Directory containing spec files", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Katalog zawierający pliki spec", + "ru": "Директория, содержащая spec-файлы", + "zh": "包含规范文件的目录" }, "Directory to scan (default: tests/integration). Can be repeated.": { "bg": "Директория за сканиране (по подразбиране: tests/integration). Може да се повтаря.", @@ -1855,9 +1493,7 @@ "en": "Directory to scan (default: tests/integration). Can be repeated.", "pl": "Katalog do skanowania (domyślnie: tests/integration). Można powtarzać.", "ru": "Директория для сканирования (по умолчанию: tests/integration). Можно повторять.", - "zh": "要扫描的目录(默认:tests/integration)。可重复。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "要扫描的目录(默认:tests/integration)。可重复。" }, "Docker daemon already running": { "bg": "Докер демонът вече работи", @@ -1865,49 +1501,39 @@ "en": "Docker daemon already running", "pl": "Demon Docker już uruchomiony", "ru": "Демон Docker уже работает", - "zh": "Docker 守护进程已在运行", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "Docker 守护进程已在运行" }, "Docker daemon failed to start": { - "bg": "Docker daemon failed to start", + "bg": "Docker демонът не успя да стартира", "de": "Docker-Daemon konnte nicht gestartet werden", "en": "Docker daemon failed to start", "pl": "Nie udało się uruchomić demona Docker", "ru": "Не удалось запустить Docker-демон", - "zh": "Docker 守护进程启动失败", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "Docker 守护进程启动失败" }, "Docker daemon started": { - "bg": "Docker daemon started", + "bg": "Docker демонът стартира", "de": "Docker-Daemon gestartet", "en": "Docker daemon started", "pl": "Demon Docker uruchomiony", "ru": "Docker-демон запущен", - "zh": "Docker 守护进程已启动", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "Docker 守护进程已启动" }, "Dockerfile not found: {path}": { - "bg": "Dockerfile not found: {path}", - "de": "Dockerfile not found: {path}", + "bg": "Dockerfile не е намерен: {path}", + "de": "Dockerfile nicht gefunden: {path}", "en": "Dockerfile not found: {path}", - "pl": "Dockerfile not found: {path}", - "ru": "Dockerfile not found: {path}", - "zh": "Dockerfile not found: {path}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie znaleziono Dockerfile: {path}", + "ru": "Dockerfile не найден: {path}", + "zh": "未找到 Dockerfile:{path}" }, "Dry-run mode: on branch '{branch}' (not master). Some checks may behave differently.": { - "bg": "Dry-run mode: on branch '{branch}' (not master). Some checks may behave differently.", - "de": "Dry-run mode: on branch '{branch}' (not master). Some checks may behave differently.", + "bg": "Режим dry-run: на клон '{branch}' (не master). Някои проверки може да се държат различно.", + "de": "Dry-Run-Modus: auf Branch '{branch}' (nicht master). Einige Prüfungen können sich anders verhalten.", "en": "Dry-run mode: on branch '{branch}' (not master). Some checks may behave differently.", "pl": "Tryb dry-run: na gałęzi '{branch}' (nie master). Niektóre kontrole mogą zachowywać się inaczej.", - "ru": "Dry-run mode: on branch '{branch}' (not master). Some checks may behave differently.", - "zh": "Dry-run mode: on branch '{branch}' (not master). Some checks may behave differently.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Режим dry-run: в ветке '{branch}' (не master). Некоторые проверки могут вести себя иначе.", + "zh": "Dry-run 模式:在分支 '{branch}' 上(非 master)。某些检查可能表现不同。" }, "ERROR: CI_GITEA_TOKEN is not set.": { "bg": "ГРЕШКА: CI_GITEA_TOKEN не е зададен.", @@ -1915,9 +1541,7 @@ "en": "ERROR: CI_GITEA_TOKEN is not set.", "pl": "BŁĄD: CI_GITEA_TOKEN nie jest ustawiony.", "ru": "ОШИБКА: CI_GITEA_TOKEN не задан.", - "zh": "错误:未设置 CI_GITEA_TOKEN。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "错误:未设置 CI_GITEA_TOKEN。" }, "ERROR: Repository name not specified. Use --repo or set DEVX_REPO_NAME.": { "bg": "ГРЕШКА: Името на хранилището не е указано. Използвайте --repo или задайте DEVX_REPO_NAME.", @@ -1925,19 +1549,15 @@ "en": "ERROR: Repository name not specified. Use --repo or set DEVX_REPO_NAME.", "pl": "BŁĄD: Nazwa repozytorium nie jest określona. Użyj --repo lub ustaw DEVX_REPO_NAME.", "ru": "ОШИБКА: Имя репозитория не указано. Используйте --repo или задайте DEVX_REPO_NAME.", - "zh": "错误:未指定仓库名称。请使用 --repo 或设置 DEVX_REPO_NAME。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "错误:未指定仓库名称。请使用 --repo 或设置 DEVX_REPO_NAME。" }, "ERROR: Tag consistency check failed. Existing tags are misaligned:": { - "bg": "ERROR: Tag consistency check failed. Existing tags are misaligned:", - "de": "ERROR: Tag consistency check failed. Existing tags are misaligned:", + "bg": "ГРЕШКА: Проверката за консистентност на таговете се провали. Съществуващите тагове са несъответстващи:", + "de": "FEHLER: Tag-Konsistenzprüfung fehlgeschlagen. Bestehende Tags sind falsch zugeordnet:", "en": "ERROR: Tag consistency check failed. Existing tags are misaligned:", "pl": "BŁĄD: Kontrola zgodności tagów nie powiodła się. Istniejące tagi są niezgodne:", - "ru": "ERROR: Tag consistency check failed. Existing tags are misaligned:", - "zh": "ERROR: Tag consistency check failed. Existing tags are misaligned:", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "ОШИБКА: Проверка согласованности тегов не удалась. Существующие теги несогласованы:", + "zh": "错误:标签一致性检查失败。现有标签不匹配:" }, "ERROR: VIKUNJA_TOKEN is not set.": { "bg": "ГРЕШКА: VIKUNJA_TOKEN не е зададен.", @@ -1945,19 +1565,15 @@ "en": "ERROR: VIKUNJA_TOKEN is not set.", "pl": "BŁĄD: VIKUNJA_TOKEN nie jest ustawiony.", "ru": "ОШИБКА: VIKUNJA_TOKEN не задан.", - "zh": "错误:未设置 VIKUNJA_TOKEN。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "错误:未设置 VIKUNJA_TOKEN。" }, "ERROR: mapping.json not found at {path}": { - "bg": "ERROR: mapping.json not found at {path}", - "de": "ERROR: mapping.json not found at {path}", + "bg": "ГРЕШКА: mapping.json не е намерен в {path}", + "de": "FEHLER: mapping.json nicht gefunden unter {path}", "en": "ERROR: mapping.json not found at {path}", "pl": "BŁĄD: mapping.json nie znaleziono w {path}", - "ru": "ERROR: mapping.json not found at {path}", - "zh": "ERROR: mapping.json not found at {path}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "ОШИБКА: mapping.json не найден по пути {path}", + "zh": "错误:在 {path} 未找到 mapping.json" }, "Each item must be a string or an object with 'id', got {type}": { "bg": "Всеки елемент трябва да е низ или обект с 'id', получено {type}", @@ -1965,19 +1581,15 @@ "en": "Each item must be a string or an object with 'id', got {type}", "pl": "Każdy element musi być ciągiem lub obiektem z 'id', otrzymano {type}", "ru": "Каждый элемент должен быть строкой или объектом с 'id', получено {type}", - "zh": "每个元素必须是字符串或带有 'id' 的对象,得到 {type}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "每个元素必须是字符串或带有 'id' 的对象,得到 {type}" }, "Ensuring standard labels...": { - "bg": "Ensuring standard labels...", - "de": "Ensuring standard labels...", + "bg": "Осигуряване на стандартни етикети...", + "de": "Standard-Labels werden sichergestellt...", "en": "Ensuring standard labels...", - "pl": "Ensuring standard labels...", - "ru": "Ensuring standard labels...", - "zh": "Ensuring standard labels...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Zapewnianie standardowych etykiet...", + "ru": "Обеспечение стандартных меток...", + "zh": "正在确保标准标签..." }, "FAIL: Could not clone wiki for verification.": { "bg": "", @@ -1985,99 +1597,79 @@ "en": "FAIL: Could not clone wiki for verification.", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "FAIL: {n} documentation issues found:": { - "bg": "FAIL: {n} documentation issues found:", - "de": "FAIL: {n} documentation issues found:", + "bg": "ГРЕШКА: Намерени {n} проблема в документацията:", + "de": "FEHLER: {n} Dokumentationsprobleme gefunden:", "en": "FAIL: {n} documentation issues found:", - "pl": "FAIL: {n} documentation issues found:", - "ru": "FAIL: {n} documentation issues found:", - "zh": "FAIL: {n} documentation issues found:", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "BŁĄD: Znaleziono {n} problemów z dokumentacją:", + "ru": "ОШИБКА: Найдено {n} проблем в документации:", + "zh": "失败:发现 {n} 个文档问题:" }, "FAILED: {count} undocumented dependency/ies": { - "bg": "FAILED: {count} undocumented dependency/ies", - "de": "FAILED: {count} undocumented dependency/ies", + "bg": "НЕУСПЕШНО: {count} недокументирани зависимости", + "de": "FEHLGESCHLAGEN: {count} undokumentierte Abhängigkeit(en)", "en": "FAILED: {count} undocumented dependency/ies", - "pl": "FAILED: {count} undocumented dependency/ies", - "ru": "FAILED: {count} undocumented dependency/ies", - "zh": "FAILED: {count} undocumented dependency/ies", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "NIEUDANE: {count} nieudokumentowanych zależności", + "ru": "ПРОВАЛЕНО: {count} недокументированных зависимостей", + "zh": "失败:{count} 个未记录的依赖项" }, "Failed images: {names}": { - "bg": "Failed images: {names}", - "de": "Failed images: {names}", + "bg": "Неуспешни изображения: {names}", + "de": "Fehlgeschlagene Images: {names}", "en": "Failed images: {names}", - "pl": "Failed images: {names}", - "ru": "Failed images: {names}", - "zh": "Failed images: {names}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nieudane obrazy: {names}", + "ru": "Неудавшиеся образы: {names}", + "zh": "失败的镜像:{names}" }, "Failed to create branch: {error}": { - "bg": "Failed to create branch: {error}", - "de": "Failed to create branch: {error}", + "bg": "Неуспешно създаване на клон: {error}", + "de": "Branch konnte nicht erstellt werden: {error}", "en": "Failed to create branch: {error}", - "pl": "Failed to create branch: {error}", - "ru": "Failed to create branch: {error}", - "zh": "Failed to create branch: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie udało się utworzyć gałęzi: {error}", + "ru": "Не удалось создать ветку: {error}", + "zh": "创建分支失败:{error}" }, "Failed to create issue via tea: {error}": { - "bg": "Failed to create issue via tea: {error}", - "de": "Failed to create issue via tea: {error}", + "bg": "Неуспешно създаване на issue чрез tea: {error}", + "de": "Issue konnte nicht via tea erstellt werden: {error}", "en": "Failed to create issue via tea: {error}", "pl": "Nie udało się utworzyć zgłoszenia przez tea: {error}", - "ru": "Failed to create issue via tea: {error}", - "zh": "Failed to create issue via tea: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Не удалось создать issue через tea: {error}", + "zh": "通过 tea 创建 issue 失败:{error}" }, "Failed to delete {count} image version(s)": { - "bg": "Failed to delete {count} image version(s)", - "de": "Failed to delete {count} image version(s)", + "bg": "Неуспешно изтриване на {count} версии на изображения", + "de": "{count} Image-Version(en) konnten nicht gelöscht werden", "en": "Failed to delete {count} image version(s)", - "pl": "Failed to delete {count} image version(s)", - "ru": "Failed to delete {count} image version(s)", - "zh": "Failed to delete {count} image version(s)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie udało się usunąć {count} wersji obrazów", + "ru": "Не удалось удалить {count} версий образов", + "zh": "删除 {count} 个镜像版本失败" }, "Failed to fetch PR #{pr}: {error}": { - "bg": "Failed to fetch PR #{pr}: {error}", - "de": "Failed to fetch PR #{pr}: {error}", + "bg": "Неуспешно извличане на PR #{pr}: {error}", + "de": "PR #{pr} konnte nicht abgerufen werden: {error}", "en": "Failed to fetch PR #{pr}: {error}", - "pl": "Failed to fetch PR #{pr}: {error}", - "ru": "Failed to fetch PR #{pr}: {error}", - "zh": "Failed to fetch PR #{pr}: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie udało się pobrać PR #{pr}: {error}", + "ru": "Не удалось получить PR #{pr}: {error}", + "zh": "获取 PR #{pr} 失败:{error}" }, "Failed to list versions for {name}: {error}": { - "bg": "Failed to list versions for {name}: {error}", - "de": "Failed to list versions for {name}: {error}", + "bg": "Неуспешно изброяване на версиите за {name}: {error}", + "de": "Versionen für {name} konnten nicht aufgelistet werden: {error}", "en": "Failed to list versions for {name}: {error}", - "pl": "Failed to list versions for {name}: {error}", - "ru": "Failed to list versions for {name}: {error}", - "zh": "Failed to list versions for {name}: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie udało się wylistować wersji dla {name}: {error}", + "ru": "Не удалось получить список версий для {name}: {error}", + "zh": "列出 {name} 的版本失败:{error}" }, "Failed to push release commit after 3 attempts. Manual intervention required.": { - "bg": "Failed to push release commit after 3 attempts. Manual intervention required.", - "de": "Failed to push release commit after 3 attempts. Manual intervention required.", + "bg": "Неуспешен push на release комита след 3 опита. Изисква се ръчна намеса.", + "de": "Release-Commit konnte nach 3 Versuchen nicht gepusht werden. Manuelles Eingreifen erforderlich.", "en": "Failed to push release commit after 3 attempts. Manual intervention required.", - "pl": "Failed to push release commit after 3 attempts. Manual intervention required.", - "ru": "Failed to push release commit after 3 attempts. Manual intervention required.", - "zh": "Failed to push release commit after 3 attempts. Manual intervention required.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie udało się wypchnąć commita release po 3 próbach. Wymagana ręczna interwencja.", + "ru": "Не удалось отправить релизный коммит после 3 попыток. Требуется ручное вмешательство.", + "zh": "3 次尝试后仍无法推送发布提交。需要人工干预。" }, "Failed to start ssh-agent: {error}": { "bg": "Неуспешно стартиране на ssh-agent: {error}", @@ -2085,119 +1677,95 @@ "en": "Failed to start ssh-agent: {error}", "pl": "Nie udało się uruchomić ssh-agent: {error}", "ru": "Не удалось запустить ssh-agent: {error}", - "zh": "启动 ssh-agent 失败: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "启动 ssh-agent 失败: {error}" }, "Failed to update PR #{pr}: {error}": { - "bg": "Failed to update PR #{pr}: {error}", - "de": "Failed to update PR #{pr}: {error}", + "bg": "Неуспешно обновяване на PR #{pr}: {error}", + "de": "PR #{pr} konnte nicht aktualisiert werden: {error}", "en": "Failed to update PR #{pr}: {error}", - "pl": "Failed to update PR #{pr}: {error}", - "ru": "Failed to update PR #{pr}: {error}", - "zh": "Failed to update PR #{pr}: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie udało się zaktualizować PR #{pr}: {error}", + "ru": "Не удалось обновить PR #{pr}: {error}", + "zh": "更新 PR #{pr} 失败:{error}" }, "Failed to update {file}": { - "bg": "Failed to update {file}", - "de": "Failed to update {file}", + "bg": "Неуспешно обновяване на {file}", + "de": "{file} konnte nicht aktualisiert werden", "en": "Failed to update {file}", - "pl": "Failed to update {file}", - "ru": "Failed to update {file}", - "zh": "Failed to update {file}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie udało się zaktualizować {file}", + "ru": "Не удалось обновить {file}", + "zh": "更新 {file} 失败" }, "Fetch failed: {error}": { - "bg": "Fetch failed: {error}", - "de": "Fetch failed: {error}", + "bg": "Извличането се провали: {error}", + "de": "Abruf fehlgeschlagen: {error}", "en": "Fetch failed: {error}", - "pl": "Fetch failed: {error}", - "ru": "Fetch failed: {error}", - "zh": "Fetch failed: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Pobieranie nie powiodło się: {error}", + "ru": "Получение не удалось: {error}", + "zh": "获取失败:{error}" }, "Fetching logs for PR #{pr_number}...": { - "bg": "Fetching logs for PR #{pr_number}...", - "de": "Fetching logs for PR #{pr_number}...", + "bg": "Извличане на логове за PR #{pr_number}...", + "de": "Rufe Logs für PR #{pr_number} ab...", "en": "Fetching logs for PR #{pr_number}...", - "pl": "Fetching logs for PR #{pr_number}...", - "ru": "Fetching logs for PR #{pr_number}...", - "zh": "Fetching logs for PR #{pr_number}...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Pobieranie logów dla PR #{pr_number}...", + "ru": "Получение логов для PR #{pr_number}...", + "zh": "正在获取 PR #{pr_number} 的日志..." }, "Fetching origin/master...": { - "bg": "Fetching origin/master...", - "de": "Fetching origin/master...", + "bg": "Извличане на origin/master...", + "de": "Rufe origin/master ab...", "en": "Fetching origin/master...", - "pl": "Fetching origin/master...", - "ru": "Fetching origin/master...", - "zh": "Fetching origin/master...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Pobieranie origin/master...", + "ru": "Получение origin/master...", + "zh": "正在获取 origin/master..." }, "Fix: add @patch decorators or with patch() context managers for subprocess/time.sleep calls, or patch the calling function.": { - "bg": "Fix: add @patch decorators or with patch() context managers for subprocess/time.sleep calls, or patch the calling function.", - "de": "Fix: add @patch decorators or with patch() context managers for subprocess/time.sleep calls, or patch the calling function.", + "bg": "Корекция: добавете @patch декоратори или with patch() контекстни мениджъри за subprocess/time.sleep извиквания, или patch-нете извикващата функция.", + "de": "Behebung: @patch-Dekoratoren oder with patch()-Kontextmanager für subprocess/time.sleep-Aufrufe hinzufügen, oder die aufrufende Funktion patchen.", "en": "Fix: add @patch decorators or with patch() context managers for subprocess/time.sleep calls, or patch the calling function.", - "pl": "Fix: add @patch decorators or with patch() context managers for subprocess/time.sleep calls, or patch the calling function.", - "ru": "Fix: add @patch decorators or with patch() context managers for subprocess/time.sleep calls, or patch the calling function.", - "zh": "Fix: add @patch decorators or with patch() context managers for subprocess/time.sleep calls, or patch the calling function.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Poprawka: dodaj dekoratory @patch lub menedżery kontekstu with patch() dla wywołań subprocess/time.sleep, albo załataj funkcję wywołującą.", + "ru": "Исправление: добавьте декораторы @patch или контекстные менеджеры with patch() для вызовов subprocess/time.sleep, либо запатчите вызывающую функцию.", + "zh": "修复:为 subprocess/time.sleep 调用添加 @patch 装饰器或 with patch() 上下文管理器,或修补调用函数。" }, "Fix: add @patch decorators or with patch() context managers for subprocess/time.sleep calls, or patch the calling function.\n": { - "bg": "Fix: add @patch decorators or with patch() context managers for subprocess/time.sleep calls, or patch the calling function.\n", - "de": "Fix: add @patch decorators or with patch() context managers for subprocess/time.sleep calls, or patch the calling function.\n", + "bg": "Корекция: добавете @patch декоратори или with patch() контекстни мениджъри за subprocess/time.sleep извиквания, или patch-нете извикващата функция.\n", + "de": "Behebung: @patch-Dekoratoren oder with patch()-Kontextmanager für subprocess/time.sleep-Aufrufe hinzufügen, oder die aufrufende Funktion patchen.\n", "en": "Fix: add @patch decorators or with patch() context managers for subprocess/time.sleep calls, or patch the calling function.\n", - "pl": "Fix: add @patch decorators or with patch() context managers for subprocess/time.sleep calls, or patch the calling function.\n", - "ru": "Fix: add @patch decorators or with patch() context managers for subprocess/time.sleep calls, or patch the calling function.\n", - "zh": "Fix: add @patch decorators or with patch() context managers for subprocess/time.sleep calls, or patch the calling function.\n", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Poprawka: dodaj dekoratory @patch lub menedżery kontekstu with patch() dla wywołań subprocess/time.sleep, albo załataj funkcję wywołującą.\n", + "ru": "Исправление: добавьте декораторы @patch или контекстные менеджеры with patch() для вызовов subprocess/time.sleep, либо запатчите вызывающую функцию.\n", + "zh": "修复:为 subprocess/time.sleep 调用添加 @patch 装饰器或 with patch() 上下文管理器,或修补调用函数。\n" }, "Force-push failed:\n{error}\nThe remote may have unexpected commits. Fetch and try again.": { - "bg": "Force-push failed:\n{error}\nThe remote may have unexpected commits. Fetch and try again.", - "de": "Force-push failed:\n{error}\nThe remote may have unexpected commits. Fetch and try again.", + "bg": "Force-push се провали:\n{error}\nОтдалеченото репозитори може да съдържа неочаквани комити. Извличане и нов опит.", + "de": "Force-Push fehlgeschlagen:\n{error}\nDas Remote kann unerwartete Commits enthalten. Fetchen und erneut versuchen.", "en": "Force-push failed:\n{error}\nThe remote may have unexpected commits. Fetch and try again.", - "pl": "Force-push failed:\n{error}\nThe remote may have unexpected commits. Fetch and try again.", - "ru": "Force-push failed:\n{error}\nThe remote may have unexpected commits. Fetch and try again.", - "zh": "Force-push failed:\n{error}\nThe remote may have unexpected commits. Fetch and try again.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Force-push nie powiódł się:\n{error}\nZdalne repozytorium może mieć nieoczekiwane commity. Pobierz i spróbuj ponownie.", + "ru": "Force-push не удался:\n{error}\nУдалённый репозиторий может содержать неожиданные коммиты. Выполните fetch и повторите.", + "zh": "强制推送失败:\n{error}\n远程可能有意外提交。请先 fetch 后重试。" }, "Force-pushing...": { - "bg": "Force-pushing...", - "de": "Force-pushing...", + "bg": "Force-push...", + "de": "Force-Push läuft...", "en": "Force-pushing...", - "pl": "Force-pushing...", - "ru": "Force-pushing...", - "zh": "Force-pushing...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Wymuszone wypychanie...", + "ru": "Force-push...", + "zh": "正在强制推送..." }, "Found {count} mutable global(s) — use factory functions or pytest fixtures.": { - "bg": "Found {count} mutable global(s) — use factory functions or pytest fixtures.", - "de": "Found {count} mutable global(s) — use factory functions or pytest fixtures.", + "bg": "Намерени {count} променливи глобални — използвайте фабрични функции или pytest fixtures.", + "de": "{count} mutable Global(s) gefunden — Factory-Funktionen oder pytest-Fixtures verwenden.", "en": "Found {count} mutable global(s) — use factory functions or pytest fixtures.", - "pl": "Found {count} mutable global(s) — use factory functions or pytest fixtures.", - "ru": "Found {count} mutable global(s) — use factory functions or pytest fixtures.", - "zh": "Found {count} mutable global(s) — use factory functions or pytest fixtures.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Znaleziono {count} mutowalnych globali — użyj funkcji fabrykujących lub fixture'ów pytest.", + "ru": "Найдено {count} изменяемых глобальных — используйте фабричные функции или pytest-фикстуры.", + "zh": "发现 {count} 个可变全局变量——请使用工厂函数或 pytest fixtures。" }, "Found {count} stale documentation reference(s)": { - "bg": "Found {count} stale documentation reference(s)", - "de": "Found {count} stale documentation reference(s)", + "bg": "Намерени {count} остарели препратки в документацията", + "de": "{count} veraltete Dokumentationsreferenz(en) gefunden", "en": "Found {count} stale documentation reference(s)", - "pl": "Found {count} stale documentation reference(s)", - "ru": "Found {count} stale documentation reference(s)", - "zh": "Found {count} stale documentation reference(s)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Znaleziono {count} nieaktualnych odwołań w dokumentacji", + "ru": "Найдено {count} устаревших ссылок в документации", + "zh": "发现 {count} 个过时的文档引用" }, "Found {count} unsafe identity check(s) in integration tests.": { "bg": "Намерени са {count} небрежни проверки за идентичност в интеграционните тестове.", @@ -2205,59 +1773,47 @@ "en": "Found {count} unsafe identity check(s) in integration tests.", "pl": "Znaleziono {count} niebezpiecznych sprawdzeń tożsamości w testach integracyjnych.", "ru": "Найдено {count} небезопасных проверок идентичности в интеграционных тестах.", - "zh": "在集成测试中发现 {count} 个不安全的身份检查。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "在集成测试中发现 {count} 个不安全的身份检查。" }, "Found {count} version(s):": { - "bg": "Found {count} version(s):", - "de": "Found {count} version(s):", + "bg": "Намерени {count} версии:", + "de": "{count} Version(en) gefunden:", "en": "Found {count} version(s):", - "pl": "Found {count} version(s):", - "ru": "Found {count} version(s):", - "zh": "Found {count} version(s):", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Znaleziono {count} wersji:", + "ru": "Найдено {count} версий:", + "zh": "找到 {count} 个版本:" }, "GITEA_URL/CI_GITEA_TOKEN/RUN_ID not set; running without cross-runner cancellation.": { - "bg": "GITEA_URL/CI_GITEA_TOKEN/RUN_ID not set; running without cross-runner cancellation.", - "de": "GITEA_URL/CI_GITEA_TOKEN/RUN_ID not set; running without cross-runner cancellation.", + "bg": "GITEA_URL/CI_GITEA_TOKEN/RUN_ID не са зададени; изпълнение без отмяна между раннъри.", + "de": "GITEA_URL/CI_GITEA_TOKEN/RUN_ID nicht gesetzt; läuft ohne Runner-übergreifende Abbrüche.", "en": "GITEA_URL/CI_GITEA_TOKEN/RUN_ID not set; running without cross-runner cancellation.", "pl": "GITEA_URL/CI_GITEA_TOKEN/RUN_ID nie ustawione; uruchamianie bez anulowania między runnerami.", - "ru": "GITEA_URL/CI_GITEA_TOKEN/RUN_ID not set; running without cross-runner cancellation.", - "zh": "GITEA_URL/CI_GITEA_TOKEN/RUN_ID not set; running without cross-runner cancellation.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "GITEA_URL/CI_GITEA_TOKEN/RUN_ID не заданы; работа без отмены между раннерами.", + "zh": "未设置 GITEA_URL/CI_GITEA_TOKEN/RUN_ID;运行时无法进行跨 runner 取消。" }, "Generated {count} badge files": { - "bg": "Generated {count} badge files", - "de": "Generated {count} badge files", + "bg": "Генерирани {count} файла със значки", + "de": "{count} Badge-Dateien generiert", "en": "Generated {count} badge files", - "pl": "Generated {count} badge files", - "ru": "Generated {count} badge files", - "zh": "Generated {count} badge files", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Wygenerowano {count} plików odznak", + "ru": "Сгенерировано {count} файлов значков", + "zh": "已生成 {count} 个徽章文件" }, "Generated {file} with prefix '{prefix}'.": { - "bg": "Generated {file} with prefix '{prefix}'.", - "de": "Generated {file} with prefix '{prefix}'.", + "bg": "Генериран {file} с префикс '{prefix}'.", + "de": "{file} mit Präfix '{prefix}' generiert.", "en": "Generated {file} with prefix '{prefix}'.", "pl": "Wygenerowano {file} z prefiksem '{prefix}'.", - "ru": "Generated {file} with prefix '{prefix}'.", - "zh": "Generated {file} with prefix '{prefix}'.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Сгенерирован {file} с префиксом '{prefix}'.", + "zh": "已生成带前缀 '{prefix}' 的 {file}。" }, "Generating badges in {out}...": { - "bg": "Generating badges in {out}...", - "de": "Generating badges in {out}...", + "bg": "Генериране на значки в {out}...", + "de": "Generiere Badges in {out}...", "en": "Generating badges in {out}...", - "pl": "Generating badges in {out}...", - "ru": "Generating badges in {out}...", - "zh": "Generating badges in {out}...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Generowanie odznak w {out}...", + "ru": "Генерация значков в {out}...", + "zh": "正在 {out} 中生成徽章..." }, "Git tag or ref that was deployed": { "bg": "Git таг или референция, която беше разгърната", @@ -2265,9 +1821,7 @@ "en": "Git tag or ref that was deployed", "pl": "Tag Git lub ref, który został wdrożony", "ru": "Git-тег или ссылка, которые были развёрнуты", - "zh": "已部署的 Git 标签或引用", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "已部署的 Git 标签或引用" }, "Git tag to deploy (e.g. v0.28.1).": { "bg": "Git таг за разгръщане (напр. v0.28.1).", @@ -2275,19 +1829,15 @@ "en": "Git tag to deploy (e.g. v0.28.1).", "pl": "Tag Git do wdrożenia (np. v0.28.1).", "ru": "Git-тег для развёртывания (напр. v0.28.1).", - "zh": "要部署的 Git 标签(例如 v0.28.1)。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "要部署的 Git 标签(例如 v0.28.1)。" }, "Gitea API token not set. Set one of: {names}": { - "bg": "Gitea API token not set. Set one of: {names}", - "de": "Gitea API token not set. Set one of: {names}", + "bg": "Gitea API токен не е зададен. Задайте един от: {names}", + "de": "Gitea-API-Token nicht gesetzt. Setzen Sie einen von: {names}", "en": "Gitea API token not set. Set one of: {names}", - "pl": "Gitea API token not set. Set one of: {names}", - "ru": "Gitea API token not set. Set one of: {names}", - "zh": "Gitea API token not set. Set one of: {names}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Token API Gitea nie jest ustawiony. Ustaw jeden z: {names}", + "ru": "Токен Gitea API не задан. Установите один из: {names}", + "zh": "未设置 Gitea API 令牌。请设置以下之一:{names}" }, "Gitea PyPI registry: {tag} already published — continuing.": { "bg": "Gitea PyPI registry: {tag} вече е публикуван — продължава.", @@ -2295,9 +1845,7 @@ "en": "Gitea PyPI registry: {tag} already published — continuing.", "pl": "Gitea PyPI registry: {tag} już opublikowano — kontynuacja.", "ru": "Gitea PyPI registry: {tag} уже опубликован — продолжаем.", - "zh": "Gitea PyPI registry: {tag} 已发布 — 继续。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "Gitea PyPI registry: {tag} 已发布 — 继续。" }, "Gitea release {tag} already exists — skipping creation.": { "bg": "Gitea release {tag} вече съществува — прескачане на създаването.", @@ -2305,49 +1853,39 @@ "en": "Gitea release {tag} already exists — skipping creation.", "pl": "Wydanie Gitea {tag} już istnieje — pomijanie tworzenia.", "ru": "Gitea release {tag} уже существует — пропуск создания.", - "zh": "Gitea release {tag} 已存在 — 跳过创建。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "Gitea release {tag} 已存在 — 跳过创建。" }, "HEAD is a release commit ('{msg}') but tag {tag} is missing. Recovering by creating tag.": { - "bg": "HEAD is a release commit ('{msg}') but tag {tag} is missing. Recovering by creating tag.", - "de": "HEAD is a release commit ('{msg}') but tag {tag} is missing. Recovering by creating tag.", + "bg": "HEAD е release комит ('{msg}'), но тагът {tag} липсва. Възстановяване чрез създаване на таг.", + "de": "HEAD ist ein Release-Commit ('{msg}'), aber Tag {tag} fehlt. Wiederherstellung durch Tag-Erstellung.", "en": "HEAD is a release commit ('{msg}') but tag {tag} is missing. Recovering by creating tag.", "pl": "HEAD jest commitem wydania ('{msg}') ale tag {tag} brakuje. Naprawa przez utworzenie tagu.", - "ru": "HEAD is a release commit ('{msg}') but tag {tag} is missing. Recovering by creating tag.", - "zh": "HEAD is a release commit ('{msg}') but tag {tag} is missing. Recovering by creating tag.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "HEAD является релизным коммитом ('{msg}'), но тег {tag} отсутствует. Восстановление созданием тега.", + "zh": "HEAD 是发布提交('{msg}'),但缺少标签 {tag}。正在通过创建标签恢复。" }, "HEAD is a release commit for v{version} but tag {tag} points to a different commit ({tag_commit} vs HEAD {head_commit}). This indicates a tag/commit misalignment.": { - "bg": "HEAD is a release commit for v{version} but tag {tag} points to a different commit ({tag_commit} vs HEAD {head_commit}). This indicates a tag/commit misalignment.", - "de": "HEAD is a release commit for v{version} but tag {tag} points to a different commit ({tag_commit} vs HEAD {head_commit}). This indicates a tag/commit misalignment.", + "bg": "HEAD е release комит за v{version}, но тагът {tag} сочи към различен комит ({tag_commit} срещу HEAD {head_commit}). Това показва несъответствие таг/комит.", + "de": "HEAD ist ein Release-Commit für v{version}, aber Tag {tag} zeigt auf einen anderen Commit ({tag_commit} vs. HEAD {head_commit}). Dies deutet auf eine Tag/Commit-Fehlzuordnung hin.", "en": "HEAD is a release commit for v{version} but tag {tag} points to a different commit ({tag_commit} vs HEAD {head_commit}). This indicates a tag/commit misalignment.", "pl": "HEAD jest commitem wydania dla v{version} ale tag {tag} wskazuje na inny commit ({tag_commit} vs HEAD {head_commit}). Wskazuje to na niezgodność tag/commit.", - "ru": "HEAD is a release commit for v{version} but tag {tag} points to a different commit ({tag_commit} vs HEAD {head_commit}). This indicates a tag/commit misalignment.", - "zh": "HEAD is a release commit for v{version} but tag {tag} points to a different commit ({tag_commit} vs HEAD {head_commit}). This indicates a tag/commit misalignment.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "HEAD является релизным коммитом для v{version}, но тег {tag} указывает на другой коммит ({tag_commit} против HEAD {head_commit}). Это указывает на несоответствие тег/коммит.", + "zh": "HEAD 是 v{version} 的发布提交,但标签 {tag} 指向不同的提交({tag_commit} 与 HEAD {head_commit})。这表明标签/提交不匹配。" }, "HEAD is already a release commit ('{msg}') and tag {tag} points to HEAD. Skipping.": { - "bg": "HEAD is already a release commit ('{msg}') and tag {tag} points to HEAD. Skipping.", - "de": "HEAD is already a release commit ('{msg}') and tag {tag} points to HEAD. Skipping.", + "bg": "HEAD вече е release комит ('{msg}') и тагът {tag} сочи към HEAD. Пропуска се.", + "de": "HEAD ist bereits ein Release-Commit ('{msg}') und Tag {tag} zeigt auf HEAD. Wird übersprungen.", "en": "HEAD is already a release commit ('{msg}') and tag {tag} points to HEAD. Skipping.", "pl": "HEAD jest już commitem wydania ('{msg}') a tag {tag} wskazuje na HEAD. Pomijanie.", - "ru": "HEAD is already a release commit ('{msg}') and tag {tag} points to HEAD. Skipping.", - "zh": "HEAD is already a release commit ('{msg}') and tag {tag} points to HEAD. Skipping.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "HEAD уже является релизным коммитом ('{msg}') и тег {tag} указывает на HEAD. Пропускается.", + "zh": "HEAD 已是发布提交('{msg}')且标签 {tag} 指向 HEAD。跳过。" }, "HEAD is not a release commit for {tag} — skipping publish.": { - "bg": "HEAD is not a release commit for {tag} — skipping publish.", - "de": "HEAD is not a release commit for {tag} — skipping publish.", + "bg": "HEAD не е release комит за {tag} — публикуването се пропуска.", + "de": "HEAD ist kein Release-Commit für {tag} — Veröffentlichung wird übersprungen.", "en": "HEAD is not a release commit for {tag} — skipping publish.", "pl": "HEAD nie jest commitem wydania dla {tag} — pomijanie publikacji.", - "ru": "HEAD is not a release commit for {tag} — skipping publish.", - "zh": "HEAD is not a release commit for {tag} — skipping publish.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "HEAD не является релизным коммитом для {tag} — публикация пропускается.", + "zh": "HEAD 不是 {tag} 的发布提交——跳过发布。" }, "HTTP error: {status} — {message}": { "bg": "HTTP грешка: {status} — {message}", @@ -2355,9 +1893,7 @@ "en": "HTTP error: {status} — {message}", "pl": "Błąd HTTP: {status} — {message}", "ru": "Ошибка HTTP: {status} — {message}", - "zh": "HTTP 错误: {status} — {message}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "HTTP 错误: {status} — {message}" }, "HTTP {status} Forbidden — your token lacks admin rights.\nMake sure the token belongs to a repo owner or organisation admin.\nAlternatively, configure branch protection manually in Settings → Branches.": { "bg": "HTTP {status} Забранено — вашият токен няма администраторски права.\nУверете се, че токенът принадлежи на собственик на хранилище или администратор на организация.\nАлтернативно, конфигурирайте защитата на клона ръчно в Настройки → Клонове.", @@ -2365,29 +1901,23 @@ "en": "HTTP {status} Forbidden — your token lacks admin rights.\nMake sure the token belongs to a repo owner or organisation admin.\nAlternatively, configure branch protection manually in Settings → Branches.", "pl": "HTTP {status} Forbidden — twój token nie ma uprawnień administratora.\nUpewnij się, że token należy do właściciela repozytorium lub administratora organizacji.\nAlternatywnie skonfiguruj ochronę gałęzi ręcznie w Ustawienia → Gałęzie.", "ru": "HTTP {status} Запрещено — у вашего токена нет прав администратора.\nУбедитесь, что токен принадлежит владельцу репозитория или администратору организации.\nЛибо настройте защиту ветки вручную в разделе Настройки → Ветки.", - "zh": "HTTP {status} 禁止访问 — 您的令牌缺少管理员权限。\n请确保令牌属于仓库所有者或组织管理员。\n或者,您可以在 设置 → 分支 中手动配置分支保护。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "HTTP {status} 禁止访问 — 您的令牌缺少管理员权限。\n请确保令牌属于仓库所有者或组织管理员。\n或者,您可以在 设置 → 分支 中手动配置分支保护。" }, "Head ref for diff": { - "bg": "Head ref for diff", - "de": "Head ref for diff", + "bg": "Head ref за diff", + "de": "Head-Ref für Diff", "en": "Head ref for diff", - "pl": "Head ref for diff", - "ru": "Head ref for diff", - "zh": "Head ref for diff", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Head ref dla diff", + "ru": "Head ref для diff", + "zh": "用于 diff 的 head ref" }, "Heavy import '{mod}' (~{ms:.0f}ms) at module level — this slows test collection for all tests. Move inside test functions or use lazy import.": { - "bg": "Heavy import '{mod}' (~{ms:.0f}ms) at module level — this slows test collection for all tests. Move inside test functions or use lazy import.", - "de": "Heavy import '{mod}' (~{ms:.0f}ms) at module level — this slows test collection for all tests. Move inside test functions or use lazy import.", + "bg": "Тежък импорт '{mod}' (~{ms:.0f}ms) на ниво модул — това забавя събирането на всички тестове. Преместете в тестови функции или използвайте lazy import.", + "de": "Schwerer Import '{mod}' (~{ms:.0f}ms) auf Modulebene — verlangsamt die Testerfassung für alle Tests. In Testfunktionen verschieben oder Lazy-Import verwenden.", "en": "Heavy import '{mod}' (~{ms:.0f}ms) at module level — this slows test collection for all tests. Move inside test functions or use lazy import.", - "pl": "Heavy import '{mod}' (~{ms:.0f}ms) at module level — this slows test collection for all tests. Move inside test functions or use lazy import.", - "ru": "Heavy import '{mod}' (~{ms:.0f}ms) at module level — this slows test collection for all tests. Move inside test functions or use lazy import.", - "zh": "Heavy import '{mod}' (~{ms:.0f}ms) at module level — this slows test collection for all tests. Move inside test functions or use lazy import.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Ciężki import '{mod}' (~{ms:.0f}ms) na poziomie modułu — spowalnia zbieranie wszystkich testów. Przenieś do funkcji testowych lub użyj leniwego importu.", + "ru": "Тяжёлый импорт '{mod}' (~{ms:.0f}ms) на уровне модуля — замедляет сбор всех тестов. Переместите внутрь тестовых функций или используйте ленивый импорт.", + "zh": "模块级重导入 '{mod}'(~{ms:.0f}ms)——减慢所有测试的收集速度。请移入测试函数内或使用惰性导入。" }, "Host Docker not available, starting local dockerd...": { "bg": "Хост Docker не е наличен, стартиране на локален dockerd...", @@ -2395,39 +1925,31 @@ "en": "Host Docker not available, starting local dockerd...", "pl": "Host Docker niedostępny, uruchamianie lokalnego dockerd...", "ru": "Хост Docker недоступен, запускается локальный dockerd...", - "zh": "主机 Docker 不可用,正在启动本地 dockerd...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "主机 Docker 不可用,正在启动本地 dockerd..." }, "Image 'tags' must be a list": { - "bg": "Image 'tags' must be a list", - "de": "Image 'tags' must be a list", + "bg": "Полето 'tags' на изображението трябва да е списък", + "de": "Image-'tags' muss eine Liste sein", "en": "Image 'tags' must be a list", - "pl": "Image 'tags' must be a list", - "ru": "Image 'tags' must be a list", - "zh": "Image 'tags' must be a list", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "'tags' obrazu musi być listą", + "ru": "Поле 'tags' образа должно быть списком", + "zh": "镜像的 'tags' 必须是列表" }, "Image manifest entry missing 'dockerfile'": { - "bg": "Image manifest entry missing 'dockerfile'", - "de": "Image manifest entry missing 'dockerfile'", + "bg": "Записът в манифеста на изображението няма 'dockerfile'", + "de": "Image-Manifest-Eintrag ohne 'dockerfile'", "en": "Image manifest entry missing 'dockerfile'", - "pl": "Image manifest entry missing 'dockerfile'", - "ru": "Image manifest entry missing 'dockerfile'", - "zh": "Image manifest entry missing 'dockerfile'", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Wpis manifestu obrazu nie zawiera 'dockerfile'", + "ru": "Запись манифеста образа не содержит 'dockerfile'", + "zh": "镜像清单条目缺少 'dockerfile'" }, "Image manifest entry missing 'name'": { - "bg": "Image manifest entry missing 'name'", - "de": "Image manifest entry missing 'name'", + "bg": "Записът в манифеста на изображението няма 'name'", + "de": "Image-Manifest-Eintrag ohne 'name'", "en": "Image manifest entry missing 'name'", - "pl": "Image manifest entry missing 'name'", - "ru": "Image manifest entry missing 'name'", - "zh": "Image manifest entry missing 'name'", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Wpis manifestu obrazu nie zawiera 'name'", + "ru": "Запись манифеста образа не содержит 'name'", + "zh": "镜像清单条目缺少 'name'" }, "Infrastructure commit (no DEVX-N task ID), skipping Vikunja update: {msg}": { "bg": "Инфраструктурен commit (без идентификатор на задача DEVX-N), пропускаме обновяването на Vikunja: {msg}", @@ -2435,59 +1957,47 @@ "en": "Infrastructure commit (no DEVX-N task ID), skipping Vikunja update: {msg}", "pl": "Commit infrastruktury (bez ID zadania DEVX-N), pomijanie aktualizacji Vikunja: {msg}", "ru": "Инфраструктурный коммит (без ID задачи DEVX-N), пропуск обновления Vikunja: {msg}", - "zh": "基础设施提交(无 DEVX-N 任务 ID),跳过 Vikunja 更新: {msg}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "基础设施提交(无 DEVX-N 任务 ID),跳过 Vikunja 更新: {msg}" }, "Integration tests cancelled — another runner failed.": { - "bg": "Integration tests cancelled — another runner failed.", - "de": "Integration tests cancelled — another runner failed.", + "bg": "Интеграционните тестове са отменени — друг runner се провали.", + "de": "Integrationstests abgebrochen — ein anderer Runner ist fehlgeschlagen.", "en": "Integration tests cancelled — another runner failed.", "pl": "Testy integracyjne anulowane — inny runner zakończył się niepowodzeniem.", - "ru": "Integration tests cancelled — another runner failed.", - "zh": "Integration tests cancelled — another runner failed.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Интеграционные тесты отменены — другой раннер завершился с ошибкой.", + "zh": "集成测试已取消——另一个 runner 失败。" }, "Integration tests failed with exit code {code}": { - "bg": "Integration tests failed with exit code {code}", - "de": "Integration tests failed with exit code {code}", + "bg": "Интеграционните тестове се провалиха с изходен код {code}", + "de": "Integrationstests mit Exit-Code {code} fehlgeschlagen", "en": "Integration tests failed with exit code {code}", "pl": "Testy integracyjne zakończone niepowodzeniem z kodem {code}", - "ru": "Integration tests failed with exit code {code}", - "zh": "Integration tests failed with exit code {code}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Интеграционные тесты завершились с кодом {code}", + "zh": "集成测试失败,退出码 {code}" }, "Integration tests passed.": { - "bg": "Integration tests passed.", - "de": "Integration tests passed.", + "bg": "Интеграционните тестове преминаха.", + "de": "Integrationstests bestanden.", "en": "Integration tests passed.", "pl": "Testy integracyjne zakończone pomyślnie.", - "ru": "Integration tests passed.", - "zh": "Integration tests passed.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Интеграционные тесты пройдены.", + "zh": "集成测试通过。" }, "Invalid repo format: {repo}": { - "bg": "Invalid repo format: {repo}", - "de": "Invalid repo format: {repo}", + "bg": "Невалиден формат на репозитория: {repo}", + "de": "Ungültiges Repo-Format: {repo}", "en": "Invalid repo format: {repo}", - "pl": "Invalid repo format: {repo}", - "ru": "Invalid repo format: {repo}", - "zh": "Invalid repo format: {repo}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nieprawidłowy format repo: {repo}", + "ru": "Неверный формат репозитория: {repo}", + "zh": "无效的仓库格式:{repo}" }, "Invalid repo format: {repo}. Expected owner/name.": { - "bg": "Invalid repo format: {repo}. Expected owner/name.", - "de": "Invalid repo format: {repo}. Expected owner/name.", + "bg": "Невалиден формат на репозитория: {repo}. Очаква се owner/name.", + "de": "Ungültiges Repo-Format: {repo}. Erwartet: owner/name.", "en": "Invalid repo format: {repo}. Expected owner/name.", - "pl": "Invalid repo format: {repo}. Expected owner/name.", - "ru": "Invalid repo format: {repo}. Expected owner/name.", - "zh": "Invalid repo format: {repo}. Expected owner/name.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nieprawidłowy format repo: {repo}. Oczekiwano owner/name.", + "ru": "Неверный формат репозитория: {repo}. Ожидается owner/name.", + "zh": "无效的仓库格式:{repo}。应为 owner/name。" }, "Items input must be a JSON array, got {type}": { "bg": "Входните данни трябва да са JSON масив, получено {type}", @@ -2495,59 +2005,47 @@ "en": "Items input must be a JSON array, got {type}", "pl": "Dane wejściowe muszą być tablicą JSON, otrzymano {type}", "ru": "Входные данные должны быть JSON-массивом, получено {type}", - "zh": "输入必须是 JSON 数组,得到 {type}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "输入必须是 JSON 数组,得到 {type}" }, "Label '{label}' already on PR #{pr}.": { - "bg": "Label '{label}' already on PR #{pr}.", - "de": "Label '{label}' already on PR #{pr}.", + "bg": "Етикетът '{label}' вече е на PR #{pr}.", + "de": "Label '{label}' bereits auf PR #{pr}.", "en": "Label '{label}' already on PR #{pr}.", - "pl": "Label '{label}' already on PR #{pr}.", - "ru": "Label '{label}' already on PR #{pr}.", - "zh": "Label '{label}' already on PR #{pr}.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Etykieta '{label}' już jest na PR #{pr}.", + "ru": "Метка '{label}' уже есть на PR #{pr}.", + "zh": "标签 '{label}' 已在 PR #{pr} 上。" }, "Latest run: #{run_id} (status: {status})": { - "bg": "Latest run: #{run_id} (status: {status})", - "de": "Latest run: #{run_id} (status: {status})", + "bg": "Последен run: #{run_id} (статус: {status})", + "de": "Letzter Lauf: #{run_id} (Status: {status})", "en": "Latest run: #{run_id} (status: {status})", - "pl": "Latest run: #{run_id} (status: {status})", - "ru": "Latest run: #{run_id} (status: {status})", - "zh": "Latest run: #{run_id} (status: {status})", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Ostatni przebieg: #{run_id} (status: {status})", + "ru": "Последний запуск: #{run_id} (статус: {status})", + "zh": "最近运行:#{run_id}(状态:{status})" }, "Lint failed — refusing to release. Fix lint errors first.\n{stderr}": { - "bg": "Lint failed — refusing to release. Fix lint errors first.\n{stderr}", - "de": "Lint failed — refusing to release. Fix lint errors first.\n{stderr}", + "bg": "Lint се провали — отказ за версия. Първо коригирайте lint грешките.\n{stderr}", + "de": "Lint fehlgeschlagen — Release wird verweigert. Zuerst Lint-Fehler beheben.\n{stderr}", "en": "Lint failed — refusing to release. Fix lint errors first.\n{stderr}", "pl": "Lint nie powiódł się — odmowa wydania. Najpierw napraw błędy lint.\n{stderr}", - "ru": "Lint failed — refusing to release. Fix lint errors first.\n{stderr}", - "zh": "Lint failed — refusing to release. Fix lint errors first.\n{stderr}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Lint не пройден — отказ в релизе. Сначала исправьте ошибки lint.\n{stderr}", + "zh": "Lint 失败——拒绝发布。请先修复 lint 错误。\n{stderr}" }, "Lint passed.": { - "bg": "Lint passed.", - "de": "Lint passed.", + "bg": "Lint премина.", + "de": "Lint bestanden.", "en": "Lint passed.", "pl": "Lint zakończony pomyślnie.", - "ru": "Lint passed.", - "zh": "Lint passed.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Lint пройден.", + "zh": "Lint 通过。" }, "Linting documentation in {root}...": { - "bg": "Linting documentation in {root}...", - "de": "Linting documentation in {root}...", + "bg": "Lint на документацията в {root}...", + "de": "Linting der Dokumentation in {root}...", "en": "Linting documentation in {root}...", - "pl": "Linting documentation in {root}...", - "ru": "Linting documentation in {root}...", - "zh": "Linting documentation in {root}...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Lintowanie dokumentacji w {root}...", + "ru": "Проверка документации в {root}...", + "zh": "正在检查 {root} 中的文档..." }, "Login to {registry} failed: {error}": { "bg": "Влизането в {registry} не успя: {error}", @@ -2555,9 +2053,7 @@ "en": "Login to {registry} failed: {error}", "pl": "Logowanie do {registry} nie powiodło się: {error}", "ru": "Ошибка входа в {registry}: {error}", - "zh": "登录 {registry} 失败: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "登录 {registry} 失败: {error}" }, "Loop with {count} iterations in test '{test}' — consider property-based testing (hypothesis) or reduce to <= {max} iterations.": { "bg": "Цикъл с {count} итерации в тест '{test}' — използвайте property-based тестове (hypothesis) или намалете до <= {max} итерации.", @@ -2565,49 +2061,39 @@ "en": "Loop with {count} iterations in test '{test}' — consider property-based testing (hypothesis) or reduce to <= {max} iterations.", "pl": "Pętla z {count} iteracjami w teście '{test}' — rozważ testy oparte na właściwościach (hypothesis) lub zmniejsz do <= {max} iteracji.", "ru": "Цикл с {count} итерациями в тесте '{test}' — используйте property-based тестирование (hypothesis) или уменьшите до <= {max} итераций.", - "zh": "测试 '{test}' 中有 {count} 次迭代的循环 — 考虑使用基于属性的测试 (hypothesis) 或减少到 <= {max} 次迭代。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "测试 '{test}' 中有 {count} 次迭代的循环 — 考虑使用基于属性的测试 (hypothesis) 或减少到 <= {max} 次迭代。" }, "Manifest file not found: {path}": { - "bg": "Manifest file not found: {path}", - "de": "Manifest file not found: {path}", + "bg": "Файлът на манифеста не е намерен: {path}", + "de": "Manifestdatei nicht gefunden: {path}", "en": "Manifest file not found: {path}", - "pl": "Manifest file not found: {path}", - "ru": "Manifest file not found: {path}", - "zh": "Manifest file not found: {path}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie znaleziono pliku manifestu: {path}", + "ru": "Файл манифеста не найден: {path}", + "zh": "未找到清单文件:{path}" }, "Manifest must be a JSON list": { - "bg": "Manifest must be a JSON list", - "de": "Manifest must be a JSON list", + "bg": "Манифестът трябва да е JSON списък", + "de": "Manifest muss eine JSON-Liste sein", "en": "Manifest must be a JSON list", - "pl": "Manifest must be a JSON list", - "ru": "Manifest must be a JSON list", - "zh": "Manifest must be a JSON list", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Manifest musi być listą JSON", + "ru": "Манифест должен быть JSON-списком", + "zh": "清单必须是 JSON 列表" }, "Max files changed (excluded files not counted)": { - "bg": "Max files changed (excluded files not counted)", - "de": "Max files changed (excluded files not counted)", + "bg": "Максимум променени файлове (изключените файлове не се броят)", + "de": "Max. geänderte Dateien (ausgeschlossene Dateien nicht gezählt)", "en": "Max files changed (excluded files not counted)", - "pl": "Max files changed (excluded files not counted)", - "ru": "Max files changed (excluded files not counted)", - "zh": "Max files changed (excluded files not counted)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Maks. zmienionych plików (wykluczone pliki nie są liczone)", + "ru": "Макс. изменённых файлов (исключённые файлы не учитываются)", + "zh": "最大更改文件数(排除的文件不计入)" }, "Max lines changed (excluded files not counted)": { - "bg": "Max lines changed (excluded files not counted)", - "de": "Max lines changed (excluded files not counted)", + "bg": "Максимум променени редове (изключените файлове не се броят)", + "de": "Max. geänderte Zeilen (ausgeschlossene Dateien nicht gezählt)", "en": "Max lines changed (excluded files not counted)", - "pl": "Max lines changed (excluded files not counted)", - "ru": "Max lines changed (excluded files not counted)", - "zh": "Max lines changed (excluded files not counted)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Maks. zmienionych linii (wykluczone pliki nie są liczone)", + "ru": "Макс. изменённых строк (исключённые файлы не учитываются)", + "zh": "最大更改行数(排除的文件不计入)" }, "Merge failed with HTTP {status}: {message}\nPlease check the PR is ready and you have merge rights.": { "bg": "Сливането неуспешно с HTTP {status}: {message}\nПроверете дали PR е готов и имате права за сливане.", @@ -2615,29 +2101,23 @@ "en": "Merge failed with HTTP {status}: {message}\nPlease check the PR is ready and you have merge rights.", "pl": "Scalanie nie powiodło się z HTTP {status}: {message}\nSprawdź czy PR jest gotowy i masz uprawnienia do scalania.", "ru": "Слияние не удалось: HTTP {status}: {message}\nПроверьте, что PR готов и у вас есть права на слияние.", - "zh": "合并失败: HTTP {status}: {message}\n请检查 PR 是否准备就绪且您具有合并权限。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "合并失败: HTTP {status}: {message}\n请检查 PR 是否准备就绪且您具有合并权限。" }, "Missing required section: {section}": { - "bg": "Missing required section: {section}", - "de": "Missing required section: {section}", + "bg": "Липсва задължителна секция: {section}", + "de": "Erforderlicher Abschnitt fehlt: {section}", "en": "Missing required section: {section}", - "pl": "Missing required section: {section}", - "ru": "Missing required section: {section}", - "zh": "Missing required section: {section}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Brak wymaganej sekcji: {section}", + "ru": "Отсутствует обязательный раздел: {section}", + "zh": "缺少必需部分:{section}" }, "Missing tests for changed files.": { - "bg": "Missing tests for changed files.", - "de": "Missing tests for changed files.", + "bg": "Липсват тестове за променените файлове.", + "de": "Tests für geänderte Dateien fehlen.", "en": "Missing tests for changed files.", - "pl": "Missing tests for changed files.", - "ru": "Missing tests for changed files.", - "zh": "Missing tests for changed files.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Brak testów dla zmienionych plików.", + "ru": "Отсутствуют тесты для изменённых файлов.", + "zh": "缺少已更改文件的测试。" }, "Module {mod} has no main() function": { "bg": "Модул {mod} няма функция main()", @@ -2645,9 +2125,7 @@ "en": "Module {mod} has no main() function", "pl": "Moduł {mod} nie ma funkcji main()", "ru": "Модуль {mod} не имеет функции main()", - "zh": "模块 {mod} 没有 main() 函数", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "模块 {mod} 没有 main() 函数" }, "Molecule directory not found: {path}": { "bg": "Директорията на molecule не е намерена: {path}", @@ -2655,19 +2133,15 @@ "en": "Molecule directory not found: {path}", "pl": "Katalog molecule nie znaleziony: {path}", "ru": "Директория molecule не найдена: {path}", - "zh": "未找到 molecule 目录: {path}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "未找到 molecule 目录: {path}" }, "New version to pin": { - "bg": "New version to pin", - "de": "New version to pin", + "bg": "Нова версия за фиксиране", + "de": "Neue zu pinnende Version", "en": "New version to pin", - "pl": "New version to pin", - "ru": "New version to pin", - "zh": "New version to pin", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nowa wersja do przypięcia", + "ru": "Новая версия для закрепления", + "zh": "要固定的新版本" }, "Next steps:\n 1. git checkout master && git pull\n 2. git checkout -b {prefix}-{num}-short-description\n 3. Implement changes, commit with conventional commit format\n 4. git push -u origin HEAD\n 5. make create-pr (creates PR with title: {identifier}: {title})": { "bg": "Следващи стъпки:\n 1. git checkout master && git pull\n 2. git checkout -b {prefix}-{num}-кратко-описание\n 3. Имплементирайте промените, commit с conventional commit формат\n 4. git push -u origin HEAD\n 5. make create-pr (създава PR с заглавие: {identifier}: {title})", @@ -2675,9 +2149,7 @@ "en": "Next steps:\n 1. git checkout master && git pull\n 2. git checkout -b {prefix}-{num}-short-description\n 3. Implement changes, commit with conventional commit format\n 4. git push -u origin HEAD\n 5. make create-pr (creates PR with title: {identifier}: {title})", "pl": "Następne kroki:\n 1. git checkout master && git pull\n 2. git checkout -b {prefix}-{num}-krótki-opis\n 3. Wprowadź zmiany, commituj w formacie conventional commit\n 4. git push -u origin HEAD\n 5. make create-pr (tworzy PR z tytułem: {identifier}: {title})", "ru": "Следующие шаги:\n 1. git checkout master && git pull\n 2. git checkout -b {prefix}-{num}-краткое-описание\n 3. Реализуйте изменения, коммитьте в conventional commit формате\n 4. git push -u origin HEAD\n 5. make create-pr (создаёт PR с заголовком: {identifier}: {title})", - "zh": "后续步骤:\n 1. git checkout master && git pull\n 2. git checkout -b {prefix}-{num}-简短描述\n 3. 实现更改,使用 conventional commit 格式提交\n 4. git push -u origin HEAD\n 5. make create-pr (创建 PR,标题: {identifier}: {title})", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "后续步骤:\n 1. git checkout master && git pull\n 2. git checkout -b {prefix}-{num}-简短描述\n 3. 实现更改,使用 conventional commit 格式提交\n 4. git push -u origin HEAD\n 5. make create-pr (创建 PR,标题: {identifier}: {title})" }, "Nice! Gitea release {tag} created.": { "bg": "Отлично! Gitea release {tag} е създаден.", @@ -2685,9 +2157,7 @@ "en": "Nice! Gitea release {tag} created.", "pl": "Świetnie! Wydanie Gitea {tag} utworzone.", "ru": "Отлично! Gitea release {tag} создан.", - "zh": "不错!Gitea release {tag} 已创建。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "不错!Gitea release {tag} 已创建。" }, "Nice! PR #{pr_number} squash-merged with title: {merge_title}": { "bg": "Отлично! PR #{pr_number} е squash-merge-нат със заглавие: {merge_title}", @@ -2695,19 +2165,15 @@ "en": "Nice! PR #{pr_number} squash-merged with title: {merge_title}", "pl": "Świetnie! PR #{pr_number} squash-merged z tytułem: {merge_title}", "ru": "Отлично! PR #{pr_number} squash-merge с заголовком: {merge_title}", - "zh": "不错!PR #{pr_number} 已 squash 合并,标题: {merge_title}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "不错!PR #{pr_number} 已 squash 合并,标题: {merge_title}" }, "Nice! Release v{version} tagged and pushed. The publish workflow will be triggered.": { - "bg": "Nice! Release v{version} tagged and pushed. The publish workflow will be triggered.", - "de": "Nice! Release v{version} tagged and pushed. The publish workflow will be triggered.", + "bg": "Чудесно! Версия v{version} е тагната и push-ната. Workflow-ът за публикуване ще се задейства.", + "de": "Release v{version} getaggt und gepusht. Der Publish-Workflow wird ausgelöst.", "en": "Nice! Release v{version} tagged and pushed. The publish workflow will be triggered.", "pl": "Świetnie! Wydanie v{version} otagowane i wypchnięte. Workflow publikacji zostanie uruchomiony.", - "ru": "Nice! Release v{version} tagged and pushed. The publish workflow will be triggered.", - "zh": "Nice! Release v{version} tagged and pushed. The publish workflow will be triggered.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Релиз v{version} помечен и отправлен. Workflow публикации будет запущен.", + "zh": "发布 v{version} 已打标签并推送。发布工作流将被触发。" }, "Nice! Vikunja task {task_id} (ID {vikunja_id}) updated and marked done.": { "bg": "Отлично! Задача Vikunja {task_id} (ID {vikunja_id}) е обновена и маркирана като готова.", @@ -2715,29 +2181,23 @@ "en": "Nice! Vikunja task {task_id} (ID {vikunja_id}) updated and marked done.", "pl": "Świetnie! Zadanie Vikunja {task_id} (ID {vikunja_id}) zaktualizowane i oznaczone jako ukończone.", "ru": "Отлично! Задача Vikunja {task_id} (ID {vikunja_id}) обновлена и отмечена как выполненная.", - "zh": "不错!Vikunja 任务 {task_id} (ID {vikunja_id}) 已更新并标记为完成。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "不错!Vikunja 任务 {task_id} (ID {vikunja_id}) 已更新并标记为完成。" }, "Nightly gate failed — staging deploy blocked.": { - "bg": "Nightly gate failed — staging deploy blocked.", - "de": "Nightly gate failed — staging deploy blocked.", + "bg": "Nightly проверката се провали — staging деплой е блокиран.", + "de": "Nightly-Gate fehlgeschlagen — Staging-Deploy blockiert.", "en": "Nightly gate failed — staging deploy blocked.", - "pl": "Nightly gate failed — staging deploy blocked.", - "ru": "Nightly gate failed — staging deploy blocked.", - "zh": "Nightly gate failed — staging deploy blocked.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Brama nightly nie powiodła się — wdrożenie staging zablokowane.", + "ru": "Nightly-проверка не пройдена — деплой на staging заблокирован.", + "zh": "Nightly 门禁失败——staging 部署已阻止。" }, "No CI checks found for commit {sha}.": { - "bg": "No CI checks found for commit {sha}.", - "de": "No CI checks found for commit {sha}.", + "bg": "Не са намерени CI проверки за комит {sha}.", + "de": "Keine CI-Checks für Commit {sha} gefunden.", "en": "No CI checks found for commit {sha}.", - "pl": "No CI checks found for commit {sha}.", - "ru": "No CI checks found for commit {sha}.", - "zh": "No CI checks found for commit {sha}.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie znaleziono kontroli CI dla commita {sha}.", + "ru": "CI-проверки для коммита {sha} не найдены.", + "zh": "未找到提交 {sha} 的 CI 检查。" }, "No Python package found under src/ — skipping version check.": { "bg": "", @@ -2745,39 +2205,31 @@ "en": "No Python package found under src/ — skipping version check.", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "No REQ-ID lines found. Each requirement must be labeled (e.g., 'REQ-1: ').": { - "bg": "No REQ-ID lines found. Each requirement must be labeled (e.g., 'REQ-1: ').", - "de": "No REQ-ID lines found. Each requirement must be labeled (e.g., 'REQ-1: ').", + "bg": "Не са намерени REQ-ID редове. Всяко изискване трябва да е означено (напр. 'REQ-1: <описание>').", + "de": "Keine REQ-ID-Zeilen gefunden. Jede Anforderung muss gekennzeichnet sein (z. B. 'REQ-1: ').", "en": "No REQ-ID lines found. Each requirement must be labeled (e.g., 'REQ-1: ').", - "pl": "No REQ-ID lines found. Each requirement must be labeled (e.g., 'REQ-1: ').", - "ru": "No REQ-ID lines found. Each requirement must be labeled (e.g., 'REQ-1: ').", - "zh": "No REQ-ID lines found. Each requirement must be labeled (e.g., 'REQ-1: ').", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie znaleziono wierszy REQ-ID. Każde wymaganie musi być oznaczone (np. 'REQ-1: ').", + "ru": "Строки REQ-ID не найдены. Каждое требование должно быть помечено (напр. 'REQ-1: <описание>').", + "zh": "未找到 REQ-ID 行。每个需求必须标记(例如 'REQ-1: <描述>')。" }, "No badge SVG files generated": { - "bg": "No badge SVG files generated", - "de": "No badge SVG files generated", + "bg": "Не са генерирани SVG файлове със значки", + "de": "Keine Badge-SVG-Dateien generiert", "en": "No badge SVG files generated", - "pl": "No badge SVG files generated", - "ru": "No badge SVG files generated", - "zh": "No badge SVG files generated", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie wygenerowano plików SVG odznak", + "ru": "SVG-файлы значков не сгенерированы", + "zh": "未生成徽章 SVG 文件" }, "No badge URLs found to update — README already up to date": { - "bg": "No badge URLs found to update — README already up to date", - "de": "No badge URLs found to update — README already up to date", + "bg": "Не са намерени URL на значки за обновяване — README вече е актуално", + "de": "Keine Badge-URLs zum Aktualisieren gefunden — README bereits aktuell", "en": "No badge URLs found to update — README already up to date", - "pl": "No badge URLs found to update — README already up to date", - "ru": "No badge URLs found to update — README already up to date", - "zh": "No badge URLs found to update — README already up to date", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie znaleziono URL-i odznak do aktualizacji — README już aktualne", + "ru": "URL значков для обновления не найдены — README уже актуален", + "zh": "未找到需要更新的徽章 URL——README 已是最新" }, "No badge changes — skipping commit": { "bg": "", @@ -2785,19 +2237,15 @@ "en": "No badge changes — skipping commit", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "No changes between {base} and {head}.": { - "bg": "No changes between {base} and {head}.", - "de": "No changes between {base} and {head}.", + "bg": "Няма промени между {base} и {head}.", + "de": "Keine Änderungen zwischen {base} und {head}.", "en": "No changes between {base} and {head}.", "pl": "Brak zmian między {base} i {head}.", - "ru": "No changes between {base} and {head}.", - "zh": "No changes between {base} and {head}.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Нет изменений между {base} и {head}.", + "zh": "{base} 和 {head} 之间没有更改。" }, "No changes to sync — wiki is up to date.": { "bg": "", @@ -2805,49 +2253,39 @@ "en": "No changes to sync — wiki is up to date.", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "No failed jobs.": { - "bg": "No failed jobs.", - "de": "No failed jobs.", + "bg": "Няма неуспешни задачи.", + "de": "Keine fehlgeschlagenen Jobs.", "en": "No failed jobs.", - "pl": "No failed jobs.", - "ru": "No failed jobs.", - "zh": "No failed jobs.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Brak nieudanych zadań.", + "ru": "Нет неудавшихся задач.", + "zh": "没有失败的任务。" }, "No job matching '{job}' found.": { - "bg": "No job matching '{job}' found.", - "de": "No job matching '{job}' found.", + "bg": "Не е намерена задача, съответстваща на '{job}'.", + "de": "Kein Job gefunden, der '{job}' entspricht.", "en": "No job matching '{job}' found.", - "pl": "No job matching '{job}' found.", - "ru": "No job matching '{job}' found.", - "zh": "No job matching '{job}' found.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie znaleziono zadania pasującego do '{job}'.", + "ru": "Задача, соответствующая '{job}', не найдена.", + "zh": "未找到匹配 '{job}' 的任务。" }, "No jobs found for run #{run_id}.": { - "bg": "No jobs found for run #{run_id}.", - "de": "No jobs found for run #{run_id}.", + "bg": "Не са намерени задачи за run #{run_id}.", + "de": "Keine Jobs für Lauf #{run_id} gefunden.", "en": "No jobs found for run #{run_id}.", - "pl": "No jobs found for run #{run_id}.", - "ru": "No jobs found for run #{run_id}.", - "zh": "No jobs found for run #{run_id}.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie znaleziono zadań dla przebiegu #{run_id}.", + "ru": "Задачи для запуска #{run_id} не найдены.", + "zh": "未找到运行 #{run_id} 的任务。" }, "No open PR found for branch '{branch}'.": { - "bg": "No open PR found for branch '{branch}'.", - "de": "No open PR found for branch '{branch}'.", + "bg": "Не е намерен отворен PR за клон '{branch}'.", + "de": "Kein offener PR für Branch '{branch}' gefunden.", "en": "No open PR found for branch '{branch}'.", - "pl": "No open PR found for branch '{branch}'.", - "ru": "No open PR found for branch '{branch}'.", - "zh": "No open PR found for branch '{branch}'.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie znaleziono otwartego PR dla gałęzi '{branch}'.", + "ru": "Открытый PR для ветки '{branch}' не найден.", + "zh": "未找到分支 '{branch}' 的开放 PR。" }, "No push needed (no changes or push failed).": { "bg": "", @@ -2855,149 +2293,119 @@ "en": "No push needed (no changes or push failed).", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "No spec file found for task {task_id} in {dir}/. Expected: {dir}/{task_id}.md": { - "bg": "No spec file found for task {task_id} in {dir}/. Expected: {dir}/{task_id}.md", - "de": "No spec file found for task {task_id} in {dir}/. Expected: {dir}/{task_id}.md", + "bg": "Не е намерен spec файл за задача {task_id} в {dir}/. Очаква се: {dir}/{task_id}.md", + "de": "Keine Spec-Datei für Task {task_id} in {dir}/ gefunden. Erwartet: {dir}/{task_id}.md", "en": "No spec file found for task {task_id} in {dir}/. Expected: {dir}/{task_id}.md", - "pl": "No spec file found for task {task_id} in {dir}/. Expected: {dir}/{task_id}.md", - "ru": "No spec file found for task {task_id} in {dir}/. Expected: {dir}/{task_id}.md", - "zh": "No spec file found for task {task_id} in {dir}/. Expected: {dir}/{task_id}.md", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie znaleziono pliku spec dla zadania {task_id} w {dir}/. Oczekiwano: {dir}/{task_id}.md", + "ru": "Spec-файл для задачи {task_id} в {dir}/ не найден. Ожидается: {dir}/{task_id}.md", + "zh": "在 {dir}/ 中未找到任务 {task_id} 的规范文件。应为:{dir}/{task_id}.md" }, "No staged changes — version and changelog already up to date.": { - "bg": "No staged changes — version and changelog already up to date.", - "de": "No staged changes — version and changelog already up to date.", + "bg": "Няма staged промени — версията и changelog вече са актуални.", + "de": "Keine gestagten Änderungen — Version und Changelog bereits aktuell.", "en": "No staged changes — version and changelog already up to date.", "pl": "Brak zmian w staging — wersja i changelog są już aktualne.", - "ru": "No staged changes — version and changelog already up to date.", - "zh": "No staged changes — version and changelog already up to date.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Нет staged-изменений — версия и changelog уже актуальны.", + "zh": "没有暂存的更改——版本和 changelog 已是最新。" }, "No tag found — skipping publish.": { - "bg": "No tag found — skipping publish.", - "de": "No tag found — skipping publish.", + "bg": "Не е намерен таг — публикуването се пропуска.", + "de": "Kein Tag gefunden — Veröffentlichung wird übersprungen.", "en": "No tag found — skipping publish.", "pl": "Nie znaleziono tagu — pomijanie publikacji.", - "ru": "No tag found — skipping publish.", - "zh": "No tag found — skipping publish.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Тег не найден — публикация пропускается.", + "zh": "未找到标签——跳过发布。" }, "No tags found — treating all changes as user-facing.": { - "bg": "No tags found — treating all changes as user-facing.", - "de": "No tags found — treating all changes as user-facing.", + "bg": "Не са намерени тагове — всички промени се третират като видими за потребителя.", + "de": "Keine Tags gefunden — alle Änderungen werden als nutzersichtbar behandelt.", "en": "No tags found — treating all changes as user-facing.", "pl": "Nie znaleziono tagów — traktowanie wszystkich zmian jako widocznych dla użytkownika.", - "ru": "No tags found — treating all changes as user-facing.", - "zh": "No tags found — treating all changes as user-facing.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Теги не найдены — все изменения считаются пользовательскими.", + "zh": "未找到标签——所有更改视为面向用户。" }, "No task ID ({prefix}-N) found in commit message: {msg}. Every non-infrastructure commit must have a task ID.": { - "bg": "No task ID ({prefix}-N) found in commit message: {msg}. Every non-infrastructure commit must have a task ID.", - "de": "No task ID ({prefix}-N) found in commit message: {msg}. Every non-infrastructure commit must have a task ID.", + "bg": "Не е намерен task ID ({prefix}-N) в съобщението на комита: {msg}. Всеки неинфраструктурен комит трябва да има task ID.", + "de": "Keine Task-ID ({prefix}-N) in Commit-Nachricht gefunden: {msg}. Jeder Nicht-Infrastruktur-Commit muss eine Task-ID haben.", "en": "No task ID ({prefix}-N) found in commit message: {msg}. Every non-infrastructure commit must have a task ID.", "pl": "Nie znaleziono ID zadania ({prefix}-N) w wiadomości commit: {msg}. Każdy commit nie-infrastrukturalny musi mieć ID zadania.", - "ru": "No task ID ({prefix}-N) found in commit message: {msg}. Every non-infrastructure commit must have a task ID.", - "zh": "No task ID ({prefix}-N) found in commit message: {msg}. Every non-infrastructure commit must have a task ID.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "В сообщении коммита не найден ID задачи ({prefix}-N): {msg}. Каждый неинфраструктурный коммит должен иметь ID задачи.", + "zh": "提交信息中未找到任务 ID({prefix}-N):{msg}。每个非基础设施提交必须有任务 ID。" }, "No task ID found in branch '{branch}'. Expected format: {prefix}-N-description.": { - "bg": "No task ID found in branch '{branch}'. Expected format: {prefix}-N-description.", - "de": "No task ID found in branch '{branch}'. Expected format: {prefix}-N-description.", + "bg": "Не е намерен task ID в клон '{branch}'. Очакван формат: {prefix}-N-description.", + "de": "Keine Task-ID in Branch '{branch}' gefunden. Erwartetes Format: {prefix}-N-description.", "en": "No task ID found in branch '{branch}'. Expected format: {prefix}-N-description.", - "pl": "No task ID found in branch '{branch}'. Expected format: {prefix}-N-description.", - "ru": "No task ID found in branch '{branch}'. Expected format: {prefix}-N-description.", - "zh": "No task ID found in branch '{branch}'. Expected format: {prefix}-N-description.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie znaleziono ID zadania w gałęzi '{branch}'. Oczekiwany format: {prefix}-N-description.", + "ru": "ID задачи не найден в ветке '{branch}'. Ожидаемый формат: {prefix}-N-description.", + "zh": "分支 '{branch}' 中未找到任务 ID。预期格式:{prefix}-N-description。" }, "No task ID found in branch name '{branch}'. Expected format: -N-description.": { - "bg": "No task ID found in branch name '{branch}'. Expected format: -N-description.", - "de": "No task ID found in branch name '{branch}'. Expected format: -N-description.", + "bg": "Не е намерен task ID в името на клона '{branch}'. Очакван формат: -N-description.", + "de": "Keine Task-ID im Branch-Namen '{branch}' gefunden. Erwartetes Format: -N-description.", "en": "No task ID found in branch name '{branch}'. Expected format: -N-description.", - "pl": "No task ID found in branch name '{branch}'. Expected format: -N-description.", - "ru": "No task ID found in branch name '{branch}'. Expected format: -N-description.", - "zh": "No task ID found in branch name '{branch}'. Expected format: -N-description.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie znaleziono ID zadania w nazwie gałęzi '{branch}'. Oczekiwany format: -N-description.", + "ru": "ID задачи не найден в имени ветки '{branch}'. Ожидаемый формат: -N-description.", + "zh": "分支名称 '{branch}' 中未找到任务 ID。预期格式:-N-description。" }, "No task ID found in branch name '{branch}'. Expected format: {prefix}-N-description.": { - "bg": "No task ID found in branch name '{branch}'. Expected format: {prefix}-N-description.", - "de": "No task ID found in branch name '{branch}'. Expected format: {prefix}-N-description.", + "bg": "Не е намерен task ID в името на клона '{branch}'. Очакван формат: {prefix}-N-description.", + "de": "Keine Task-ID im Branch-Namen '{branch}' gefunden. Erwartetes Format: {prefix}-N-description.", "en": "No task ID found in branch name '{branch}'. Expected format: {prefix}-N-description.", - "pl": "No task ID found in branch name '{branch}'. Expected format: {prefix}-N-description.", - "ru": "No task ID found in branch name '{branch}'. Expected format: {prefix}-N-description.", - "zh": "No task ID found in branch name '{branch}'. Expected format: {prefix}-N-description.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie znaleziono ID zadania w nazwie gałęzi '{branch}'. Oczekiwany format: {prefix}-N-description.", + "ru": "ID задачи не найден в имени ветки '{branch}'. Ожидаемый формат: {prefix}-N-description.", + "zh": "分支名称 '{branch}' 中未找到任务 ID。预期格式:{prefix}-N-description。" }, "No unreleased changes found. Nothing to release.": { - "bg": "No unreleased changes found. Nothing to release.", - "de": "No unreleased changes found. Nothing to release.", + "bg": "Не са намерени непубликувани промени. Няма какво да се издаде.", + "de": "Keine unveröffentlichten Änderungen gefunden. Nichts zu veröffentlichen.", "en": "No unreleased changes found. Nothing to release.", "pl": "Nie znaleziono nieopublikowanych zmian. Nic do wydania.", - "ru": "No unreleased changes found. Nothing to release.", - "zh": "No unreleased changes found. Nothing to release.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Не найдено невыпущенных изменений. Нечего выпускать.", + "zh": "未找到未发布的更改。没有可发布的内容。" }, "No user-facing changes since {tag} — only workflow/infrastructure files changed. Skipping release.": { - "bg": "No user-facing changes since {tag} — only workflow/infrastructure files changed. Skipping release.", - "de": "No user-facing changes since {tag} — only workflow/infrastructure files changed. Skipping release.", + "bg": "Няма видими за потребителя промени от {tag} — променени са само workflow/инфраструктурни файлове. Изданието се пропуска.", + "de": "Keine nutzersichtbaren Änderungen seit {tag} — nur Workflow-/Infrastrukturdateien geändert. Release wird übersprungen.", "en": "No user-facing changes since {tag} — only workflow/infrastructure files changed. Skipping release.", "pl": "Brak zmian widocznych dla użytkownika od {tag} — tylko pliki workflow/infrastruktury uległy zmianie. Pomijanie wydania.", - "ru": "No user-facing changes since {tag} — only workflow/infrastructure files changed. Skipping release.", - "zh": "No user-facing changes since {tag} — only workflow/infrastructure files changed. Skipping release.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Нет пользовательских изменений с {tag} — изменены только workflow/инфраструктурные файлы. Релиз пропускается.", + "zh": "自 {tag} 以来没有面向用户的更改——仅更改了工作流/基础设施文件。跳过发布。" }, "No versions found.": { - "bg": "No versions found.", - "de": "No versions found.", + "bg": "Не са намерени версии.", + "de": "Keine Versionen gefunden.", "en": "No versions found.", - "pl": "No versions found.", - "ru": "No versions found.", - "zh": "No versions found.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie znaleziono wersji.", + "ru": "Версии не найдены.", + "zh": "未找到版本。" }, "No workflow runs found for SHA {sha}.": { - "bg": "No workflow runs found for SHA {sha}.", - "de": "No workflow runs found for SHA {sha}.", + "bg": "Не са намерени workflow runs за SHA {sha}.", + "de": "Keine Workflow-Läufe für SHA {sha} gefunden.", "en": "No workflow runs found for SHA {sha}.", - "pl": "No workflow runs found for SHA {sha}.", - "ru": "No workflow runs found for SHA {sha}.", - "zh": "No workflow runs found for SHA {sha}.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie znaleziono przebiegów workflow dla SHA {sha}.", + "ru": "Workflow-запуски для SHA {sha} не найдены.", + "zh": "未找到 SHA {sha} 的工作流运行。" }, "Nothing to push.": { - "bg": "Nothing to push.", - "de": "Nothing to push.", + "bg": "Няма какво да се push-не.", + "de": "Nichts zu pushen.", "en": "Nothing to push.", - "pl": "Nothing to push.", - "ru": "Nothing to push.", - "zh": "Nothing to push.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nic do wypchnięcia.", + "ru": "Нечего отправлять.", + "zh": "没有可推送的内容。" }, "Only check staged files (for pre-commit)": { - "bg": "Only check staged files (for pre-commit)", - "de": "Only check staged files (for pre-commit)", + "bg": "Проверява само staged файлове (за pre-commit)", + "de": "Nur gestagte Dateien prüfen (für Pre-Commit)", "en": "Only check staged files (for pre-commit)", - "pl": "Only check staged files (for pre-commit)", - "ru": "Only check staged files (for pre-commit)", - "zh": "Only check staged files (for pre-commit)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Sprawdza tylko pliki staged (dla pre-commit)", + "ru": "Проверять только staged-файлы (для pre-commit)", + "zh": "仅检查暂存文件(用于 pre-commit)" }, "Oops! Commit message must follow conventional commit format.\n Expected: : \n Got: {subject}\n Allowed types: feat, fix, chore, docs, style, refactor,\n perf, test, ci, build, deps, revert, BREAKING CHANGE": { "bg": "Опа! Съобщението за commit трябва да следва конвенционален формат.\n Очаква се: : \n Получено: {subject}\n Разрешени типове: feat, fix, chore, docs, style, refactor,\n perf, test, ci, build, deps, revert, BREAKING CHANGE", @@ -3005,19 +2413,15 @@ "en": "Oops! Commit message must follow conventional commit format.\n Expected: : \n Got: {subject}\n Allowed types: feat, fix, chore, docs, style, refactor,\n perf, test, ci, build, deps, revert, BREAKING CHANGE", "pl": "Ups! Wiadomość commit musi być w formacie conventional commit.\n Oczekiwano: : \n Otrzymano: {subject}\n Dozwolone typy: feat, fix, chore, docs, style, refactor,\n perf, test, ci, build, deps, revert, BREAKING CHANGE", "ru": "Ой! Сообщение коммита должно соответствовать формату conventional commit.\n Ожидается: : \n Получено: {subject}\n Допустимые типы: feat, fix, chore, docs, style, refactor,\n perf, test, ci, build, deps, revert, BREAKING CHANGE", - "zh": "哎呀!提交消息必须遵循 conventional commit 格式。\n 预期格式: : \n 实际: {subject}\n 允许的类型: feat, fix, chore, docs, style, refactor,\n perf, test, ci, build, deps, revert, BREAKING CHANGE", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "哎呀!提交消息必须遵循 conventional commit 格式。\n 预期格式: : \n 实际: {subject}\n 允许的类型: feat, fix, chore, docs, style, refactor,\n perf, test, ci, build, deps, revert, BREAKING CHANGE" }, "Oops! Do not include task ID ({prefix}-N) in feature branch commits.\n The task ID will be added automatically on merge via CI.": { - "bg": "Oops! Do not include task ID ({prefix}-N) in feature branch commits.\n The task ID will be added automatically on merge via CI.", - "de": "Oops! Do not include task ID ({prefix}-N) in feature branch commits.\n The task ID will be added automatically on merge via CI.", + "bg": "Не включвайте task ID ({prefix}-N) в комитите на feature клони.\n Task ID се добавя автоматично при merge чрез CI.", + "de": "Task-ID ({prefix}-N) nicht in Feature-Branch-Commits aufnehmen.\n Die Task-ID wird beim Merge automatisch via CI hinzugefügt.", "en": "Oops! Do not include task ID ({prefix}-N) in feature branch commits.\n The task ID will be added automatically on merge via CI.", "pl": "Ups! Nie dołączaj ID zadania ({prefix}-N) w commitach gałęzi feature.\n ID zadania zostanie dodane automatycznie przy scaleniu przez CI.", - "ru": "Oops! Do not include task ID ({prefix}-N) in feature branch commits.\n The task ID will be added automatically on merge via CI.", - "zh": "Oops! Do not include task ID ({prefix}-N) in feature branch commits.\n The task ID will be added automatically on merge via CI.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Не включайте ID задачи ({prefix}-N) в коммиты feature-веток.\n ID задачи будет добавлен автоматически при merge через CI.", + "zh": "请勿在功能分支提交中包含任务 ID({prefix}-N)。\n 任务 ID 将在合并时由 CI 自动添加。" }, "Oops! Gitea PyPI registry publish failed:\n{stderr}": { "bg": "Опа! Публикуването в Gitea PyPI registry неуспешно:\n{stderr}", @@ -3025,29 +2429,23 @@ "en": "Oops! Gitea PyPI registry publish failed:\n{stderr}", "pl": "Ups! Publikacja w rejestrze Gitea PyPI nie powiodła się:\n{stderr}", "ru": "Ой! Публикация в Gitea PyPI registry не удалась:\n{stderr}", - "zh": "哎呀!Gitea PyPI registry 发布失败:\n{stderr}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "哎呀!Gitea PyPI registry 发布失败:\n{stderr}" }, "Oops! Master branch commit must follow conventional format after task ID.\n Expected: {prefix}-N: : \n Got: {subject}": { - "bg": "Oops! Master branch commit must follow conventional format after task ID.\n Expected: {prefix}-N: : \n Got: {subject}", - "de": "Oops! Master branch commit must follow conventional format after task ID.\n Expected: {prefix}-N: : \n Got: {subject}", + "bg": "Комитът на master клона трябва да следва conventional формата след task ID.\n Очаква се: {prefix}-N: : \n Получено: {subject}", + "de": "Master-Branch-Commits müssen nach der Task-ID dem Conventional-Format folgen.\n Erwartet: {prefix}-N: : \n Erhalten: {subject}", "en": "Oops! Master branch commit must follow conventional format after task ID.\n Expected: {prefix}-N: : \n Got: {subject}", "pl": "Ups! Commit gałęzi master musi być w formacie conventional po ID zadania.\n Oczekiwano: {prefix}-N: : \n Otrzymano: {subject}", - "ru": "Oops! Master branch commit must follow conventional format after task ID.\n Expected: {prefix}-N: : \n Got: {subject}", - "zh": "Oops! Master branch commit must follow conventional format after task ID.\n Expected: {prefix}-N: : \n Got: {subject}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Коммит ветки master должен следовать conventional-формату после ID задачи.\n Ожидается: {prefix}-N: : \n Получено: {subject}", + "zh": "master 分支提交必须在任务 ID 后遵循 conventional 格式。\n 预期:{prefix}-N: : \n 实际:{subject}" }, "Oops! Master branch commits must start with a task ID.\n Expected: {prefix}-N: \n Got: {subject}": { - "bg": "Oops! Master branch commits must start with a task ID.\n Expected: {prefix}-N: \n Got: {subject}", - "de": "Oops! Master branch commits must start with a task ID.\n Expected: {prefix}-N: \n Got: {subject}", + "bg": "Комитите на master клона трябва да започват с task ID.\n Очаква се: {prefix}-N: \n Получено: {subject}", + "de": "Master-Branch-Commits müssen mit einer Task-ID beginnen.\n Erwartet: {prefix}-N: \n Erhalten: {subject}", "en": "Oops! Master branch commits must start with a task ID.\n Expected: {prefix}-N: \n Got: {subject}", "pl": "Ups! Commity gałęzi master muszą zaczynać się od ID zadania.\n Oczekiwano: {prefix}-N: \n Otrzymano: {subject}", - "ru": "Oops! Master branch commits must start with a task ID.\n Expected: {prefix}-N: \n Got: {subject}", - "zh": "Oops! Master branch commits must start with a task ID.\n Expected: {prefix}-N: \n Got: {subject}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Коммиты ветки master должны начинаться с ID задачи.\n Ожидается: {prefix}-N: \n Получено: {subject}", + "zh": "master 分支提交必须以任务 ID 开头。\n 预期:{prefix}-N: \n 实际:{subject}" }, "Oops! No task ID found in branch name '{branch}'. Branch names must include the task ID prefix (e.g., DEVX-31-fix-bug).": { "bg": "Ой! Не е намерен ID на задача в името на клона '{branch}'. Имената на клонове трябва да включват префикса за ID на задача (напр. DEVX-31-fix-bug).", @@ -3055,29 +2453,23 @@ "en": "Oops! No task ID found in branch name '{branch}'. Branch names must include the task ID prefix (e.g., DEVX-31-fix-bug).", "pl": "Ups! Nie znaleziono ID zadania w nazwie gałęzi '{branch}'. Nazwy gałęzi muszą zawierać prefiks ID zadania (np., DEVX-31-fix-bug).", "ru": "Ой! ID задачи не найден в имени ветки '{branch}'. Имена веток должны включать префикс ID задачи (например, DEVX-31-fix-bug).", - "zh": "哎呀!在分支名称 '{branch}' 中未找到任务 ID。分支名称必须包含任务 ID 前缀(例如 DEVX-31-fix-bug)。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "哎呀!在分支名称 '{branch}' 中未找到任务 ID。分支名称必须包含任务 ID 前缀(例如 DEVX-31-fix-bug)。" }, "Oops! PR title must follow format '{prefix}-N: '.\n Expected: {task_id}: \n Got: {pr_title}": { - "bg": "Oops! PR title must follow format '{prefix}-N: '.\n Expected: {task_id}: \n Got: {pr_title}", - "de": "Oops! PR title must follow format '{prefix}-N: '.\n Expected: {task_id}: \n Got: {pr_title}", + "bg": "Заглавието на PR трябва да следва формата '{prefix}-N: <заглавие на задачата>'.\n Очаква се: {task_id}: <заглавие на задачата>\n Получено: {pr_title}", + "de": "Der PR-Titel muss dem Format '{prefix}-N: ' folgen.\n Erwartet: {task_id}: \n Erhalten: {pr_title}", "en": "Oops! PR title must follow format '{prefix}-N: '.\n Expected: {task_id}: \n Got: {pr_title}", "pl": "Ups! Tytuł PR musi być w formacie '{prefix}-N: '.\n Oczekiwano: {task_id}: \n Otrzymano: {pr_title}", - "ru": "Oops! PR title must follow format '{prefix}-N: '.\n Expected: {task_id}: \n Got: {pr_title}", - "zh": "Oops! PR title must follow format '{prefix}-N: '.\n Expected: {task_id}: \n Got: {pr_title}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Заголовок PR должен соответствовать формату '{prefix}-N: <название задачи>'.\n Ожидается: {task_id}: <название задачи>\n Получено: {pr_title}", + "zh": "PR 标题必须遵循格式 '{prefix}-N: <任务标题>'。\n 预期:{task_id}: <任务标题>\n 实际:{pr_title}" }, "Oops! PR title task ID mismatch.\n Branch task ID: {task_id}\n PR title: {pr_title}": { - "bg": "Oops! PR title task ID mismatch.\n Branch task ID: {task_id}\n PR title: {pr_title}", - "de": "Oops! PR title task ID mismatch.\n Branch task ID: {task_id}\n PR title: {pr_title}", + "bg": "Несъответствие на task ID в заглавието на PR.\n Task ID на клона: {task_id}\n Заглавие на PR: {pr_title}", + "de": "Task-ID des PR-Titels stimmt nicht überein.\n Branch-Task-ID: {task_id}\n PR-Titel: {pr_title}", "en": "Oops! PR title task ID mismatch.\n Branch task ID: {task_id}\n PR title: {pr_title}", "pl": "Ups! Niezgodność ID zadania w tytule PR.\n ID zadania z gałęzi: {task_id}\n Tytuł PR: {pr_title}", - "ru": "Oops! PR title task ID mismatch.\n Branch task ID: {task_id}\n PR title: {pr_title}", - "zh": "Oops! PR title task ID mismatch.\n Branch task ID: {task_id}\n PR title: {pr_title}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Несоответствие ID задачи в заголовке PR.\n ID задачи ветки: {task_id}\n Заголовок PR: {pr_title}", + "zh": "PR 标题任务 ID 不匹配。\n 分支任务 ID:{task_id}\n PR 标题: {pr_title}" }, "Oops! Package build failed:\n{stderr}": { "bg": "Опа! Сборката на пакета неуспешна:\n{stderr}", @@ -3085,9 +2477,7 @@ "en": "Oops! Package build failed:\n{stderr}", "pl": "Ups! Budowanie pakietu nie powiodło się:\n{stderr}", "ru": "Ой! Сборка пакета не удалась:\n{stderr}", - "zh": "哎呀!包构建失败:\n{stderr}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "哎呀!包构建失败:\n{stderr}" }, "Oops! PyPI publish failed:\n{stderr}": { "bg": "Опа! Публикуването в PyPI неуспешно:\n{stderr}", @@ -3095,29 +2485,23 @@ "en": "Oops! PyPI publish failed:\n{stderr}", "pl": "Ups! Publikacja PyPI nie powiodła się:\n{stderr}", "ru": "Ой! Публикация в PyPI не удалась:\n{stderr}", - "zh": "哎呀!PyPI 发布失败:\n{stderr}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "哎呀!PyPI 发布失败:\n{stderr}" }, "PASS: All documentation checks passed!": { - "bg": "PASS: All documentation checks passed!", - "de": "PASS: All documentation checks passed!", + "bg": "УСПЕХ: Всички проверки на документацията преминаха!", + "de": "ERFOLG: Alle Dokumentationsprüfungen bestanden!", "en": "PASS: All documentation checks passed!", - "pl": "PASS: All documentation checks passed!", - "ru": "PASS: All documentation checks passed!", - "zh": "PASS: All documentation checks passed!", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "SUKCES: Wszystkie kontrole dokumentacji przeszły!", + "ru": "УСПЕШНО: Все проверки документации пройдены!", + "zh": "通过:所有文档检查均已通过!" }, "PR #{pr} rebased successfully. A new CI run will start automatically.\nIf auto-merge is enabled (ready-to-merge label), the next CI run\nwill attempt to merge this PR.": { - "bg": "PR #{pr} rebased successfully. A new CI run will start automatically.\nIf auto-merge is enabled (ready-to-merge label), the next CI run\nwill attempt to merge this PR.", - "de": "PR #{pr} rebased successfully. A new CI run will start automatically.\nIf auto-merge is enabled (ready-to-merge label), the next CI run\nwill attempt to merge this PR.", + "bg": "PR #{pr} е rebase-нат успешно. Нов CI run ще стартира автоматично.\nАко auto-merge е включен (етикет ready-to-merge), следващият CI run\nще опита да слее този PR.", + "de": "PR #{pr} erfolgreich rebased. Ein neuer CI-Lauf startet automatisch.\nWenn Auto-Merge aktiviert ist (ready-to-merge-Label), versucht der nächste\nCI-Lauf, diesen PR zu mergen.", "en": "PR #{pr} rebased successfully. A new CI run will start automatically.\nIf auto-merge is enabled (ready-to-merge label), the next CI run\nwill attempt to merge this PR.", - "pl": "PR #{pr} rebased successfully. A new CI run will start automatically.\nIf auto-merge is enabled (ready-to-merge label), the next CI run\nwill attempt to merge this PR.", - "ru": "PR #{pr} rebased successfully. A new CI run will start automatically.\nIf auto-merge is enabled (ready-to-merge label), the next CI run\nwill attempt to merge this PR.", - "zh": "PR #{pr} rebased successfully. A new CI run will start automatically.\nIf auto-merge is enabled (ready-to-merge label), the next CI run\nwill attempt to merge this PR.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "PR #{pr} rebased pomyślnie. Nowy przebieg CI rozpocznie się automatycznie.\nJeśli auto-merge jest włączony (etykieta ready-to-merge), następny przebieg CI\nspróbuje połączyć ten PR.", + "ru": "PR #{pr} успешно rebased. Новый CI-запуск начнётся автоматически.\nЕсли auto-merge включён (метка ready-to-merge), следующий CI-запуск\nпопытается слить этот PR.", + "zh": "PR #{pr} rebase 成功。新的 CI 运行将自动开始。\n如果启用了自动合并(ready-to-merge 标签),下一次 CI 运行\n将尝试合并此 PR。" }, "PR already exists: #{index} — {url}": { "bg": "PR вече съществува: #{index} — {url}", @@ -3125,129 +2509,119 @@ "en": "PR already exists: #{index} — {url}", "pl": "PR już istnieje: #{index} — {url}", "ru": "PR уже существует: #{index} — {url}", - "zh": "PR 已存在: #{index} — {url}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "PR 已存在: #{index} — {url}" + }, + "PR has 'refactoring' label — size check bypassed.": { + "bg": "PR има етикет 'refactoring' — проверката за размер се заобикаля.", + "de": "PR hat 'refactoring'-Label — Größenprüfung umgangen.", + "en": "PR has 'refactoring' label — size check bypassed.", + "pl": "PR ma etykietę 'refactoring' — kontrola rozmiaru pominięta.", + "ru": "PR имеет метку 'refactoring' — проверка размера обойдена.", + "zh": "PR 带有 'refactoring' 标签——大小检查已绕过。" }, "PR has {file_count} files changed (max {max_files}). Excluded: {excluded_count} files.": { - "bg": "PR has {file_count} files changed (max {max_files}). Excluded: {excluded_count} files.", - "de": "PR has {file_count} files changed (max {max_files}). Excluded: {excluded_count} files.", + "bg": "PR има {file_count} променени файла (макс. {max_files}). Изключени: {excluded_count} файла.", + "de": "PR hat {file_count} geänderte Dateien (max. {max_files}). Ausgeschlossen: {excluded_count} Dateien.", "en": "PR has {file_count} files changed (max {max_files}). Excluded: {excluded_count} files.", - "pl": "PR has {file_count} files changed (max {max_files}). Excluded: {excluded_count} files.", - "ru": "PR has {file_count} files changed (max {max_files}). Excluded: {excluded_count} files.", - "zh": "PR has {file_count} files changed (max {max_files}). Excluded: {excluded_count} files.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "PR ma {file_count} zmienionych plików (maks. {max_files}). Wykluczone: {excluded_count} plików.", + "ru": "PR содержит {file_count} изменённых файлов (макс. {max_files}). Исключено: {excluded_count} файлов.", + "zh": "PR 有 {file_count} 个文件更改(上限 {max_files})。已排除:{excluded_count} 个文件。" }, "PR has {line_count} lines changed (max {max_lines}). Excluded: {excluded_count} files.": { - "bg": "PR has {line_count} lines changed (max {max_lines}). Excluded: {excluded_count} files.", - "de": "PR has {line_count} lines changed (max {max_lines}). Excluded: {excluded_count} files.", + "bg": "PR има {line_count} променени реда (макс. {max_lines}). Изключени: {excluded_count} файла.", + "de": "PR hat {line_count} geänderte Zeilen (max. {max_lines}). Ausgeschlossen: {excluded_count} Dateien.", "en": "PR has {line_count} lines changed (max {max_lines}). Excluded: {excluded_count} files.", - "pl": "PR has {line_count} lines changed (max {max_lines}). Excluded: {excluded_count} files.", - "ru": "PR has {line_count} lines changed (max {max_lines}). Excluded: {excluded_count} files.", - "zh": "PR has {line_count} lines changed (max {max_lines}). Excluded: {excluded_count} files.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "PR ma {line_count} zmienionych linii (maks. {max_lines}). Wykluczone: {excluded_count} plików.", + "ru": "PR содержит {line_count} изменённых строк (макс. {max_lines}). Исключено: {excluded_count} файлов.", + "zh": "PR 有 {line_count} 行更改(上限 {max_lines})。已排除:{excluded_count} 个文件。" }, "PR number (to fetch title from Gitea)": { - "bg": "PR number (to fetch title from Gitea)", - "de": "PR number (to fetch title from Gitea)", + "bg": "Номер на PR (за извличане на заглавие от Gitea)", + "de": "PR-Nummer (zum Abrufen des Titels von Gitea)", "en": "PR number (to fetch title from Gitea)", - "pl": "PR number (to fetch title from Gitea)", - "ru": "PR number (to fetch title from Gitea)", - "zh": "PR number (to fetch title from Gitea)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Numer PR (do pobrania tytułu z Gitea)", + "ru": "Номер PR (для получения заголовка из Gitea)", + "zh": "PR 编号(用于从 Gitea 获取标题)" + }, + "PR number for label check": { + "bg": "Номер на PR за проверка на етикети", + "de": "PR-Nummer für die Label-Prüfung", + "en": "PR number for label check", + "pl": "Numer PR do kontroli etykiet", + "ru": "Номер PR для проверки меток", + "zh": "用于标签检查的 PR 编号" }, "PR number must be an integer, got: {pr_number}": { - "bg": "PR number must be an integer, got: {pr_number}", - "de": "PR number must be an integer, got: {pr_number}", + "bg": "Номерът на PR трябва да е цяло число, получено: {pr_number}", + "de": "PR-Nummer muss eine Ganzzahl sein, erhalten: {pr_number}", "en": "PR number must be an integer, got: {pr_number}", "pl": "Numer PR musi być liczbą całkowitą, otrzymano: {pr_number}", - "ru": "PR number must be an integer, got: {pr_number}", - "zh": "PR number must be an integer, got: {pr_number}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Номер PR должен быть целым числом, получено: {pr_number}", + "zh": "PR 编号必须是整数,实际得到:{pr_number}" }, "PR number to fix": { - "bg": "PR number to fix", - "de": "PR number to fix", + "bg": "Номер на PR за коригиране", + "de": "Zu korrigierende PR-Nummer", "en": "PR number to fix", - "pl": "PR number to fix", - "ru": "PR number to fix", - "zh": "PR number to fix", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Numer PR do poprawy", + "ru": "Номер PR для исправления", + "zh": "要修复的 PR 编号" }, "PR size OK: {file_count} files, {line_count} lines (max {max_files} files, {max_lines} lines).": { - "bg": "PR size OK: {file_count} files, {line_count} lines (max {max_files} files, {max_lines} lines).", - "de": "PR size OK: {file_count} files, {line_count} lines (max {max_files} files, {max_lines} lines).", + "bg": "Размерът на PR е ОК: {file_count} файла, {line_count} реда (макс. {max_files} файла, {max_lines} реда).", + "de": "PR-Größe OK: {file_count} Dateien, {line_count} Zeilen (max. {max_files} Dateien, {max_lines} Zeilen).", "en": "PR size OK: {file_count} files, {line_count} lines (max {max_files} files, {max_lines} lines).", - "pl": "PR size OK: {file_count} files, {line_count} lines (max {max_files} files, {max_lines} lines).", - "ru": "PR size OK: {file_count} files, {line_count} lines (max {max_files} files, {max_lines} lines).", - "zh": "PR size OK: {file_count} files, {line_count} lines (max {max_files} files, {max_lines} lines).", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Rozmiar PR OK: {file_count} plików, {line_count} linii (maks. {max_files} plików, {max_lines} linii).", + "ru": "Размер PR в норме: {file_count} файлов, {line_count} строк (макс. {max_files} файлов, {max_lines} строк).", + "zh": "PR 大小正常:{file_count} 个文件,{line_count} 行(上限 {max_files} 个文件,{max_lines} 行)。" }, "PR size check failed.": { - "bg": "PR size check failed.", - "de": "PR size check failed.", + "bg": "Проверката на размера на PR се провали.", + "de": "PR-Größenprüfung fehlgeschlagen.", "en": "PR size check failed.", - "pl": "PR size check failed.", - "ru": "PR size check failed.", - "zh": "PR size check failed.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Kontrola rozmiaru PR nie powiodła się.", + "ru": "Проверка размера PR не пройдена.", + "zh": "PR 大小检查失败。" }, "PR title (auto-fetched if --pr-number given)": { - "bg": "PR title (auto-fetched if --pr-number given)", - "de": "PR title (auto-fetched if --pr-number given)", + "bg": "Заглавие на PR (извлича се автоматично, ако е зададен --pr-number)", + "de": "PR-Titel (wird automatisch abgerufen, wenn --pr-number angegeben)", "en": "PR title (auto-fetched if --pr-number given)", - "pl": "PR title (auto-fetched if --pr-number given)", - "ru": "PR title (auto-fetched if --pr-number given)", - "zh": "PR title (auto-fetched if --pr-number given)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Tytuł PR (pobierany automatycznie, gdy podano --pr-number)", + "ru": "Заголовок PR (извлекается автоматически при указании --pr-number)", + "zh": "PR 标题(提供 --pr-number 时自动获取)" }, "PR title does not match Vikunja task title.\n Expected: {expected}\n Got: {pr_title}": { - "bg": "PR title does not match Vikunja task title.\n Expected: {expected}\n Got: {pr_title}", - "de": "PR title does not match Vikunja task title.\n Expected: {expected}\n Got: {pr_title}", + "bg": "Заглавието на PR не съвпада със заглавието на Vikunja задачата.\n Очаква се: {expected}\n Получено: {pr_title}", + "de": "PR-Titel stimmt nicht mit Vikunja-Task-Titel überein.\n Erwartet: {expected}\n Erhalten: {pr_title}", "en": "PR title does not match Vikunja task title.\n Expected: {expected}\n Got: {pr_title}", "pl": "Tytuł PR nie pasuje do tytułu zadania Vikunja.\n Oczekiwano: {expected}\n Otrzymano: {pr_title}", - "ru": "PR title does not match Vikunja task title.\n Expected: {expected}\n Got: {pr_title}", - "zh": "PR title does not match Vikunja task title.\n Expected: {expected}\n Got: {pr_title}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Заголовок PR не совпадает с названием задачи Vikunja.\n Ожидается: {expected}\n Получено: {pr_title}", + "zh": "PR 标题与 Vikunja 任务标题不匹配。\n 预期:{expected}\n 实际:{pr_title}" }, "PR title does not match Vikunja task title.\n Expected: {expected}\n Got: {title}": { - "bg": "PR title does not match Vikunja task title.\n Expected: {expected}\n Got: {title}", - "de": "PR title does not match Vikunja task title.\n Expected: {expected}\n Got: {title}", + "bg": "Заглавието на PR не съвпада със заглавието на Vikunja задачата.\n Очаква се: {expected}\n Получено: {title}", + "de": "PR-Titel stimmt nicht mit Vikunja-Task-Titel überein.\n Erwartet: {expected}\n Erhalten: {title}", "en": "PR title does not match Vikunja task title.\n Expected: {expected}\n Got: {title}", - "pl": "PR title does not match Vikunja task title.\n Expected: {expected}\n Got: {title}", - "ru": "PR title does not match Vikunja task title.\n Expected: {expected}\n Got: {title}", - "zh": "PR title does not match Vikunja task title.\n Expected: {expected}\n Got: {title}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Tytuł PR nie zgadza się z tytułem zadania Vikunja.\n Oczekiwano: {expected}\n Otrzymano: {title}", + "ru": "Заголовок PR не совпадает с названием задачи Vikunja.\n Ожидается: {expected}\n Получено: {title}", + "zh": "PR 标题与 Vikunja 任务标题不匹配。\n 预期:{expected}\n 实际:{title}" }, "PR title must follow format '{prefix}-N: '.\n Got: {title}": { - "bg": "PR title must follow format '{prefix}-N: '.\n Got: {title}", - "de": "PR title must follow format '{prefix}-N: '.\n Got: {title}", + "bg": "Заглавието на PR трябва да следва формата '{prefix}-N: <заглавие на задачата>'.\n Получено: {title}", + "de": "Der PR-Titel muss dem Format '{prefix}-N: ' folgen.\n Erhalten: {title}", "en": "PR title must follow format '{prefix}-N: '.\n Got: {title}", - "pl": "PR title must follow format '{prefix}-N: '.\n Got: {title}", - "ru": "PR title must follow format '{prefix}-N: '.\n Got: {title}", - "zh": "PR title must follow format '{prefix}-N: '.\n Got: {title}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Tytuł PR musi być w formacie '{prefix}-N: '.\n Otrzymano: {title}", + "ru": "Заголовок PR должен соответствовать формату '{prefix}-N: <название задачи>'.\n Получено: {title}", + "zh": "PR 标题必须遵循格式 '{prefix}-N: <任务标题>'。\n 实际:{title}" }, "PR title task ID mismatch.\n Branch task ID: {task_id}\n PR title: {title}": { - "bg": "PR title task ID mismatch.\n Branch task ID: {task_id}\n PR title: {title}", - "de": "PR title task ID mismatch.\n Branch task ID: {task_id}\n PR title: {title}", + "bg": "Несъответствие на task ID в заглавието на PR.\n Task ID на клона: {task_id}\n Заглавие на PR: {title}", + "de": "Task-ID des PR-Titels stimmt nicht überein.\n Branch-Task-ID: {task_id}\n PR-Titel: {title}", "en": "PR title task ID mismatch.\n Branch task ID: {task_id}\n PR title: {title}", - "pl": "PR title task ID mismatch.\n Branch task ID: {task_id}\n PR title: {title}", - "ru": "PR title task ID mismatch.\n Branch task ID: {task_id}\n PR title: {title}", - "zh": "PR title task ID mismatch.\n Branch task ID: {task_id}\n PR title: {title}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Niezgodność ID zadania w tytule PR.\n ID zadania gałęzi: {task_id}\n Tytuł PR: {title}", + "ru": "Несоответствие ID задачи в заголовке PR.\n ID задачи ветки: {task_id}\n Заголовок PR: {title}", + "zh": "PR 标题任务 ID 不匹配。\n 分支任务 ID:{task_id}\n PR 标题: {title}" }, "PYPI_TOKEN not set and no registry URL configured — skipping PyPI publish. No worries, we'll just create the Gitea release.": { "bg": "PYPI_TOKEN не е зададен и няма конфигуриран URL на registry — пропускаме публикуването в PyPI. Без притеснения, просто ще създадем Gitea release.", @@ -3255,39 +2629,31 @@ "en": "PYPI_TOKEN not set and no registry URL configured — skipping PyPI publish. No worries, we'll just create the Gitea release.", "pl": "PYPI_TOKEN nie ustawiony i brak URL rejestru — pomijanie publikacji PyPI. Bez obaw, utworzymy tylko wydanie Gitea.", "ru": "PYPI_TOKEN не задан и URL registry не настроен — пропускаем публикацию в PyPI. Не беспокойтесь, мы просто создадим Gitea release.", - "zh": "未设置 PYPI_TOKEN 且未配置 registry URL — 跳过 PyPI 发布。别担心,我们直接创建 Gitea release。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "未设置 PYPI_TOKEN 且未配置 registry URL — 跳过 PyPI 发布。别担心,我们直接创建 Gitea release。" }, "Package name to bump (e.g., grm, sso-bridge)": { - "bg": "Package name to bump (e.g., grm, sso-bridge)", - "de": "Package name to bump (e.g., grm, sso-bridge)", + "bg": "Име на пакет за увеличаване (напр. grm, sso-bridge)", + "de": "Zu erhöhender Paketname (z. B. grm, sso-bridge)", "en": "Package name to bump (e.g., grm, sso-bridge)", - "pl": "Package name to bump (e.g., grm, sso-bridge)", - "ru": "Package name to bump (e.g., grm, sso-bridge)", - "zh": "Package name to bump (e.g., grm, sso-bridge)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nazwa pakietu do podbicia (np. grm, sso-bridge)", + "ru": "Имя пакета для повышения (напр. grm, sso-bridge)", + "zh": "要升级的包名(例如 grm、sso-bridge)" }, "Package owner not specified. Use --owner or set [tool.devx] repo_owner.": { - "bg": "Package owner not specified. Use --owner or set [tool.devx] repo_owner.", - "de": "Package owner not specified. Use --owner or set [tool.devx] repo_owner.", + "bg": "Собственикът на пакета не е зададен. Използвайте --owner или задайте [tool.devx] repo_owner.", + "de": "Paket-Eigentümer nicht angegeben. Verwenden Sie --owner oder setzen Sie [tool.devx] repo_owner.", "en": "Package owner not specified. Use --owner or set [tool.devx] repo_owner.", - "pl": "Package owner not specified. Use --owner or set [tool.devx] repo_owner.", - "ru": "Package owner not specified. Use --owner or set [tool.devx] repo_owner.", - "zh": "Package owner not specified. Use --owner or set [tool.devx] repo_owner.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nie określono właściciela pakietu. Użyj --owner lub ustaw [tool.devx] repo_owner.", + "ru": "Владелец пакета не указан. Используйте --owner или задайте [tool.devx] repo_owner.", + "zh": "未指定包所有者。使用 --owner 或设置 [tool.devx] repo_owner。" }, "Package: {owner}/{name}": { - "bg": "Package: {owner}/{name}", - "de": "Package: {owner}/{name}", + "bg": "Пакет: {owner}/{name}", + "de": "Paket: {owner}/{name}", "en": "Package: {owner}/{name}", - "pl": "Package: {owner}/{name}", - "ru": "Package: {owner}/{name}", - "zh": "Package: {owner}/{name}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Pakiet: {owner}/{name}", + "ru": "Пакет: {owner}/{name}", + "zh": "包:{owner}/{name}" }, "Parsed owner={owner}, repo={repo} from DEVX_REPO_NAME": { "bg": "Разбор на owner={owner}, repo={repo} от DEVX_REPO_NAME", @@ -3295,39 +2661,31 @@ "en": "Parsed owner={owner}, repo={repo} from DEVX_REPO_NAME", "pl": "Przeanalizowano owner={owner}, repo={repo} z DEVX_REPO_NAME", "ru": "Извлечён owner={owner}, repo={repo} из DEVX_REPO_NAME", - "zh": "从 DEVX_REPO_NAME 解析 owner={owner}, repo={repo}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "从 DEVX_REPO_NAME 解析 owner={owner}, repo={repo}" }, "Path to pyproject.toml (default: pyproject.toml in CWD).": { - "bg": "Path to pyproject.toml (default: pyproject.toml in CWD).", - "de": "Path to pyproject.toml (default: pyproject.toml in CWD).", + "bg": "Път до pyproject.toml (по подразбиране: pyproject.toml в CWD).", + "de": "Pfad zu pyproject.toml (Standard: pyproject.toml im CWD).", "en": "Path to pyproject.toml (default: pyproject.toml in CWD).", - "pl": "Path to pyproject.toml (default: pyproject.toml in CWD).", - "ru": "Path to pyproject.toml (default: pyproject.toml in CWD).", - "zh": "Path to pyproject.toml (default: pyproject.toml in CWD).", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Ścieżka do pyproject.toml (domyślnie: pyproject.toml w CWD).", + "ru": "Путь к pyproject.toml (по умолчанию: pyproject.toml в CWD).", + "zh": "pyproject.toml 的路径(默认:CWD 中的 pyproject.toml)。" }, "Per-test speed check FAILED: {count} test(s) exceed {limit}s limit.": { - "bg": "Per-test speed check FAILED: {count} test(s) exceed {limit}s limit.", - "de": "Per-test speed check FAILED: {count} test(s) exceed {limit}s limit.", + "bg": "Проверката за скорост на тест СЕ ПРОВАЛИ: {count} тест(а) надвишават лимита от {limit}s.", + "de": "Pro-Test-Geschwindigkeitsprüfung FEHLGESCHLAGEN: {count} Test(s) überschreiten das {limit}s-Limit.", "en": "Per-test speed check FAILED: {count} test(s) exceed {limit}s limit.", "pl": "Kontrola szybkości pojedynczego testu NIEUDANA: {count} test(ów) przekracza limit {limit}s.", - "ru": "Per-test speed check FAILED: {count} test(s) exceed {limit}s limit.", - "zh": "Per-test speed check FAILED: {count} test(s) exceed {limit}s limit.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Проверка скорости тестов ПРОВАЛЕНА: {count} тест(ов) превышают лимит {limit}s.", + "zh": "单测试速度检查失败:{count} 个测试超过 {limit}s 限制。" }, "Pre-merge validation failed.": { - "bg": "Pre-merge validation failed.", - "de": "Pre-merge validation failed.", + "bg": "Предmerge валидацията се провали.", + "de": "Pre-Merge-Validierung fehlgeschlagen.", "en": "Pre-merge validation failed.", - "pl": "Pre-merge validation failed.", - "ru": "Pre-merge validation failed.", - "zh": "Pre-merge validation failed.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Walidacja przed merge nie powiodła się.", + "ru": "Проверка перед слиянием не пройдена.", + "zh": "合并前验证失败。" }, "Pre-push check passed: task {task_id} exists.": { "bg": "Pre-push проверката премина: задача {task_id} съществува.", @@ -3335,39 +2693,31 @@ "en": "Pre-push check passed: task {task_id} exists.", "pl": "Sprawdzanie pre-push zakończone: zadanie {task_id} istnieje.", "ru": "Pre-push проверка пройдена: задача {task_id} существует.", - "zh": "Pre-push 检查通过: 任务 {task_id} 存在。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "Pre-push 检查通过: 任务 {task_id} 存在。" }, "Print warnings but always exit 0": { - "bg": "Print warnings but always exit 0", - "de": "Print warnings but always exit 0", + "bg": "Печатай предупреждения, но винаги излизай с код 0", + "de": "Warnungen ausgeben, aber immer mit 0 beenden", "en": "Print warnings but always exit 0", - "pl": "Print warnings but always exit 0", - "ru": "Print warnings but always exit 0", - "zh": "Print warnings but always exit 0", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Wypisuj ostrzeżenia, ale zawsze kończ kodem 0", + "ru": "Выводить предупреждения, но всегда завершать с кодом 0", + "zh": "打印警告但始终以 0 退出" }, "Provide --manifest or both --dockerfile and --name": { - "bg": "Provide --manifest or both --dockerfile and --name", - "de": "Provide --manifest or both --dockerfile and --name", + "bg": "Задайте --manifest или и --dockerfile, и --name", + "de": "--manifest oder sowohl --dockerfile als auch --name angeben", "en": "Provide --manifest or both --dockerfile and --name", - "pl": "Provide --manifest or both --dockerfile and --name", - "ru": "Provide --manifest or both --dockerfile and --name", - "zh": "Provide --manifest or both --dockerfile and --name", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Podaj --manifest lub zarówno --dockerfile, jak i --name", + "ru": "Укажите --manifest или оба --dockerfile и --name", + "zh": "提供 --manifest 或同时提供 --dockerfile 和 --name" }, "Provide a commit message file or use --git.": { - "bg": "Provide a commit message file or use --git.", - "de": "Provide a commit message file or use --git.", + "bg": "Предоставете файл със съобщение на комит или използвайте --git.", + "de": "Commit-Nachrichtendatei bereitstellen oder --git verwenden.", "en": "Provide a commit message file or use --git.", "pl": "Podaj plik komunikatu commitu lub użyj --git.", - "ru": "Provide a commit message file or use --git.", - "zh": "Provide a commit message file or use --git.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Укажите файл с сообщением коммита или используйте --git.", + "zh": "提供提交信息文件或使用 --git。" }, "Published to Gitea PyPI registry.": { "bg": "Публикувано в Gitea PyPI registry.", @@ -3375,9 +2725,7 @@ "en": "Published to Gitea PyPI registry.", "pl": "Opublikowano w rejestrze Gitea PyPI.", "ru": "Опубликовано в Gitea PyPI registry.", - "zh": "已发布到 Gitea PyPI registry。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "已发布到 Gitea PyPI registry。" }, "Published to PyPI.": { "bg": "Публикувано в PyPI.", @@ -3385,39 +2733,31 @@ "en": "Published to PyPI.", "pl": "Opublikowano w PyPI.", "ru": "Опубликовано в PyPI.", - "zh": "已发布到 PyPI。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "已发布到 PyPI。" }, "Publishing release {tag}...": { - "bg": "Publishing release {tag}...", - "de": "Publishing release {tag}...", + "bg": "Публикуване на версия {tag}...", + "de": "Veröffentliche Release {tag}...", "en": "Publishing release {tag}...", "pl": "Publikowanie wydania {tag}...", - "ru": "Publishing release {tag}...", - "zh": "Publishing release {tag}...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Публикация релиза {tag}...", + "zh": "正在发布 {tag}..." }, "Push attempt {n}/3 failed: {err}": { - "bg": "Push attempt {n}/3 failed: {err}", - "de": "Push attempt {n}/3 failed: {err}", + "bg": "Опит {n}/3 за push се провали: {err}", + "de": "Push-Versuch {n}/3 fehlgeschlagen: {err}", "en": "Push attempt {n}/3 failed: {err}", - "pl": "Push attempt {n}/3 failed: {err}", - "ru": "Push attempt {n}/3 failed: {err}", - "zh": "Push attempt {n}/3 failed: {err}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Próba {n}/3 push nie powiodła się: {err}", + "ru": "Попытка {n}/3 push не удалась: {err}", + "zh": "推送尝试 {n}/3 失败:{err}" }, "Push failed for {tag}: {error}": { - "bg": "Push failed for {tag}: {error}", - "de": "Push failed for {tag}: {error}", + "bg": "Push за {tag} се провали: {error}", + "de": "Push für {tag} fehlgeschlagen: {error}", "en": "Push failed for {tag}: {error}", - "pl": "Push failed for {tag}: {error}", - "ru": "Push failed for {tag}: {error}", - "zh": "Push failed for {tag}: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Push dla {tag} nie powiódł się: {error}", + "ru": "Push для {tag} не удался: {error}", + "zh": "推送 {tag} 失败:{error}" }, "Push failed: {error}": { "bg": "", @@ -3425,39 +2765,31 @@ "en": "Push failed: {error}", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Pushed README update with badge SHA {sha}": { - "bg": "Pushed README update with badge SHA {sha}", - "de": "Pushed README update with badge SHA {sha}", + "bg": "Push-ната е README актуализация със SHA на значката {sha}", + "de": "README-Update mit Badge-SHA {sha} gepusht", "en": "Pushed README update with badge SHA {sha}", - "pl": "Pushed README update with badge SHA {sha}", - "ru": "Pushed README update with badge SHA {sha}", - "zh": "Pushed README update with badge SHA {sha}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Wypchnięto aktualizację README z SHA odznaki {sha}", + "ru": "Отправлено обновление README с SHA значка {sha}", + "zh": "已推送带徽章 SHA {sha} 的 README 更新" }, "Pushed release commit to master.": { - "bg": "Pushed release commit to master.", - "de": "Pushed release commit to master.", + "bg": "Release комитът е push-нат към master.", + "de": "Release-Commit zu master gepusht.", "en": "Pushed release commit to master.", "pl": "Wypchnięto commit wydania do master.", - "ru": "Pushed release commit to master.", - "zh": "Pushed release commit to master.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Релизный коммит отправлен в master.", + "zh": "发布提交已推送到 master。" }, "Pushed {branch} to origin.": { - "bg": "Pushed {branch} to origin.", - "de": "Pushed {branch} to origin.", + "bg": "Клонът {branch} е push-нат към origin.", + "de": "{branch} zu origin gepusht.", "en": "Pushed {branch} to origin.", - "pl": "Pushed {branch} to origin.", - "ru": "Pushed {branch} to origin.", - "zh": "Pushed {branch} to origin.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Wypchnięto {branch} do origin.", + "ru": "Ветка {branch} отправлена в origin.", + "zh": "已将 {branch} 推送到 origin。" }, "PyPI publish failed (non-fatal — continuing to Gitea release):\n{error}": { "bg": "Публикуването в PyPI неуспешно (некритично — продължава към Gitea release):\n{error}", @@ -3465,159 +2797,135 @@ "en": "PyPI publish failed (non-fatal — continuing to Gitea release):\n{error}", "pl": "Publikacja PyPI nie powiodła się (niekrytyczne — kontynuacja Gitea release):\n{error}", "ru": "Публикация в PyPI не удалась (некритично — продолжаем создание Gitea release):\n{error}", - "zh": "PyPI 发布失败(非致命 — 继续创建 Gitea release):\n{error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "PyPI 发布失败(非致命 — 继续创建 Gitea release):\n{error}" }, "REPO argument is required (or set GITHUB_REPOSITORY env var).": { - "bg": "REPO argument is required (or set GITHUB_REPOSITORY env var).", - "de": "REPO argument is required (or set GITHUB_REPOSITORY env var).", + "bg": "Аргументът REPO е задължителен (или задайте променливата GITHUB_REPOSITORY).", + "de": "REPO-Argument ist erforderlich (oder GITHUB_REPOSITORY-Umgebungsvariable setzen).", "en": "REPO argument is required (or set GITHUB_REPOSITORY env var).", "pl": "Argument REPO jest wymagany (lub ustaw zmienną GITHUB_REPOSITORY).", - "ru": "REPO argument is required (or set GITHUB_REPOSITORY env var).", - "zh": "REPO argument is required (or set GITHUB_REPOSITORY env var).", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Аргумент REPO обязателен (или задайте переменную окружения GITHUB_REPOSITORY).", + "zh": "REPO 参数是必需的(或设置 GITHUB_REPOSITORY 环境变量)。" }, "Real subprocess call(s) detected in test '{test}' without @patch:": { - "bg": "Real subprocess call(s) detected in test '{test}' without @patch:", - "de": "Real subprocess call(s) detected in test '{test}' without @patch:", + "bg": "Открити реални subprocess извиквания в тест '{test}' без @patch:", + "de": "Echte subprocess-Aufrufe in Test '{test}' ohne @patch erkannt:", "en": "Real subprocess call(s) detected in test '{test}' without @patch:", - "pl": "Real subprocess call(s) detected in test '{test}' without @patch:", - "ru": "Real subprocess call(s) detected in test '{test}' without @patch:", - "zh": "Real subprocess call(s) detected in test '{test}' without @patch:", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Wykryto prawdziwe wywołania subprocess w teście '{test}' bez @patch:", + "ru": "Обнаружены реальные вызовы subprocess в тесте '{test}' без @patch:", + "zh": "在测试 '{test}' 中检测到未经 @patch 的真实 subprocess 调用:" }, "Rebase attempt {n}/3 failed: {err}": { - "bg": "Rebase attempt {n}/3 failed: {err}", - "de": "Rebase attempt {n}/3 failed: {err}", + "bg": "Опит {n}/3 за rebase се провали: {err}", + "de": "Rebase-Versuch {n}/3 fehlgeschlagen: {err}", "en": "Rebase attempt {n}/3 failed: {err}", - "pl": "Rebase attempt {n}/3 failed: {err}", - "ru": "Rebase attempt {n}/3 failed: {err}", - "zh": "Rebase attempt {n}/3 failed: {err}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Próba {n}/3 rebase nie powiodła się: {err}", + "ru": "Попытка {n}/3 rebase не удалась: {err}", + "zh": "Rebase 尝试 {n}/3 失败:{err}" }, "Rebase failed (conflicts or other error):\n{error}\nResolve conflicts and run: git rebase --continue": { - "bg": "Rebase failed (conflicts or other error):\n{error}\nResolve conflicts and run: git rebase --continue", - "de": "Rebase failed (conflicts or other error):\n{error}\nResolve conflicts and run: git rebase --continue", + "bg": "Rebase се провали (конфликти или друга грешка):\n{error}\nРазрешете конфликтите и изпълнете: git rebase --continue", + "de": "Rebase fehlgeschlagen (Konflikte oder anderer Fehler):\n{error}\nKonflikte lösen und ausführen: git rebase --continue", "en": "Rebase failed (conflicts or other error):\n{error}\nResolve conflicts and run: git rebase --continue", - "pl": "Rebase failed (conflicts or other error):\n{error}\nResolve conflicts and run: git rebase --continue", - "ru": "Rebase failed (conflicts or other error):\n{error}\nResolve conflicts and run: git rebase --continue", - "zh": "Rebase failed (conflicts or other error):\n{error}\nResolve conflicts and run: git rebase --continue", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Rebase nie powiódł się (konflikty lub inny błąd):\n{error}\nRozwiąż konflikty i uruchom: git rebase --continue", + "ru": "Rebase не удался (конфликты или другая ошибка):\n{error}\nРазрешите конфликты и выполните: git rebase --continue", + "zh": "Rebase 失败(冲突或其他错误):\n{error}\n解决冲突并运行:git rebase --continue" }, "Rebase failed with HTTP {status}: {message}": { - "bg": "Rebase failed with HTTP {status}: {message}", - "de": "Rebase failed with HTTP {status}: {message}", + "bg": "Rebase се провали с HTTP {status}: {message}", + "de": "Rebase mit HTTP {status} fehlgeschlagen: {message}", "en": "Rebase failed with HTTP {status}: {message}", - "pl": "Rebase failed with HTTP {status}: {message}", - "ru": "Rebase failed with HTTP {status}: {message}", - "zh": "Rebase failed with HTTP {status}: {message}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Rebase nie powiódł się z HTTP {status}: {message}", + "ru": "Rebase завершился с HTTP {status}: {message}", + "zh": "Rebase 失败,HTTP {status}:{message}" }, "Rebase successful.": { - "bg": "Rebase successful.", - "de": "Rebase successful.", + "bg": "Rebase успешен.", + "de": "Rebase erfolgreich.", "en": "Rebase successful.", - "pl": "Rebase successful.", - "ru": "Rebase successful.", - "zh": "Rebase successful.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Rebase powiódł się.", + "ru": "Rebase успешен.", + "zh": "Rebase 成功。" }, "Rebasing PR #{pr} via Gitea API...": { - "bg": "Rebasing PR #{pr} via Gitea API...", - "de": "Rebasing PR #{pr} via Gitea API...", + "bg": "Rebase на PR #{pr} чрез Gitea API...", + "de": "Rebase von PR #{pr} via Gitea API...", "en": "Rebasing PR #{pr} via Gitea API...", - "pl": "Rebasing PR #{pr} via Gitea API...", - "ru": "Rebasing PR #{pr} via Gitea API...", - "zh": "Rebasing PR #{pr} via Gitea API...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Rebase PR #{pr} przez Gitea API...", + "ru": "Rebase PR #{pr} через Gitea API...", + "zh": "正在通过 Gitea API 对 PR #{pr} 执行 rebase..." }, "Registry credentials required: set CI_GITEA_TOKEN and CI_GITEA_USERNAME env vars": { - "bg": "Registry credentials required: set CI_GITEA_TOKEN and CI_GITEA_USERNAME env vars", - "de": "Registry credentials required: set CI_GITEA_TOKEN and CI_GITEA_USERNAME env vars", + "bg": "Изискват се идентификационни данни за регистъра: задайте променливите CI_GITEA_TOKEN и CI_GITEA_USERNAME", + "de": "Registry-Anmeldedaten erforderlich: Umgebungsvariablen CI_GITEA_TOKEN und CI_GITEA_USERNAME setzen", "en": "Registry credentials required: set CI_GITEA_TOKEN and CI_GITEA_USERNAME env vars", - "pl": "Registry credentials required: set CI_GITEA_TOKEN and CI_GITEA_USERNAME env vars", - "ru": "Registry credentials required: set CI_GITEA_TOKEN and CI_GITEA_USERNAME env vars", - "zh": "Registry credentials required: set CI_GITEA_TOKEN and CI_GITEA_USERNAME env vars", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Wymagane dane uwierzytelniające rejestru: ustaw zmienne CI_GITEA_TOKEN i CI_GITEA_USERNAME", + "ru": "Требуются учётные данные реестра: задайте переменные окружения CI_GITEA_TOKEN и CI_GITEA_USERNAME", + "zh": "需要注册表凭据:设置环境变量 CI_GITEA_TOKEN 和 CI_GITEA_USERNAME" }, "Registry login failed": { - "bg": "Registry login failed", - "de": "Registry login failed", + "bg": "Входът в регистъра се провали", + "de": "Registry-Login fehlgeschlagen", "en": "Registry login failed", - "pl": "Registry login failed", - "ru": "Registry login failed", - "zh": "Registry login failed", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Logowanie do rejestru nie powiodło się", + "ru": "Вход в реестр не удался", + "zh": "注册表登录失败" }, "Registry login failed: {error}": { - "bg": "Registry login failed: {error}", - "de": "Registry login failed: {error}", + "bg": "Входът в регистъра се провали: {error}", + "de": "Registry-Login fehlgeschlagen: {error}", "en": "Registry login failed: {error}", - "pl": "Registry login failed: {error}", - "ru": "Registry login failed: {error}", - "zh": "Registry login failed: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Logowanie do rejestru nie powiodło się: {error}", + "ru": "Вход в реестр не удался: {error}", + "zh": "注册表登录失败:{error}" }, "Regular merge commit — running all post-merge jobs.": { - "bg": "Regular merge commit — running all post-merge jobs.", - "de": "Regular merge commit — running all post-merge jobs.", + "bg": "Обикновен merge комит — изпълняват се всички post-merge задачи.", + "de": "Regulärer Merge-Commit — alle Post-Merge-Jobs werden ausgeführt.", "en": "Regular merge commit — running all post-merge jobs.", - "pl": "Regular merge commit — running all post-merge jobs.", - "ru": "Regular merge commit — running all post-merge jobs.", - "zh": "Regular merge commit — running all post-merge jobs.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Zwykły commit merge — uruchamianie wszystkich zadań post-merge.", + "ru": "Обычный merge-коммит — выполняются все post-merge задачи.", + "zh": "常规合并提交——运行所有合并后任务。" }, "Release commit — skipping all post-merge jobs.": { - "bg": "Release commit — skipping all post-merge jobs.", - "de": "Release commit — skipping all post-merge jobs.", + "bg": "Release комит — всички post-merge задачи се пропускат.", + "de": "Release-Commit — alle Post-Merge-Jobs werden übersprungen.", "en": "Release commit — skipping all post-merge jobs.", - "pl": "Release commit — skipping all post-merge jobs.", - "ru": "Release commit — skipping all post-merge jobs.", - "zh": "Release commit — skipping all post-merge jobs.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Commit release — pomijanie wszystkich zadań post-merge.", + "ru": "Релизный коммит — все post-merge задачи пропускаются.", + "zh": "发布提交——跳过所有合并后任务。" }, "Release creation failed: {error}": { - "bg": "Release creation failed: {error}", - "de": "Release creation failed: {error}", + "bg": "Създаването на версия се провали: {error}", + "de": "Release-Erstellung fehlgeschlagen: {error}", "en": "Release creation failed: {error}", "pl": "Tworzenie wydania nie powiodło się: {error}", - "ru": "Release creation failed: {error}", - "zh": "Release creation failed: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Создание релиза не удалось: {error}", + "zh": "创建发布失败:{error}" }, "Release must be run on master, currently on '{branch}'.": { - "bg": "Release must be run on master, currently on '{branch}'.", - "de": "Release must be run on master, currently on '{branch}'.", + "bg": "Release трябва да се изпълнява на master, в момента сте на '{branch}'.", + "de": "Release muss auf master ausgeführt werden, aktuell auf '{branch}'.", "en": "Release must be run on master, currently on '{branch}'.", "pl": "Wydanie musi być uruchomione na master, obecnie na '{branch}'.", - "ru": "Release must be run on master, currently on '{branch}'.", - "zh": "Release must be run on master, currently on '{branch}'.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Релиз должен выполняться на master, сейчас на '{branch}'.", + "zh": "发布必须在 master 上运行,当前在 '{branch}'。" + }, + "Repo (owner/name) for label check": { + "bg": "Репозитори (owner/name) за проверка на етикети", + "de": "Repo (owner/name) für die Label-Prüfung", + "en": "Repo (owner/name) for label check", + "pl": "Repo (owner/name) do kontroli etykiet", + "ru": "Репозиторий (owner/name) для проверки меток", + "zh": "用于标签检查的仓库(owner/name)" }, "Repo must be in 'owner/name' format, got: {repo}": { - "bg": "Repo must be in 'owner/name' format, got: {repo}", - "de": "Repo must be in 'owner/name' format, got: {repo}", + "bg": "Репозиторият трябва да е във формат 'owner/name', получено: {repo}", + "de": "Repo muss im Format 'owner/name' sein, erhalten: {repo}", "en": "Repo must be in 'owner/name' format, got: {repo}", "pl": "Repo musi być w formacie 'owner/name', otrzymano: {repo}", - "ru": "Repo must be in 'owner/name' format, got: {repo}", - "zh": "Repo must be in 'owner/name' format, got: {repo}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Репозиторий должен быть в формате 'owner/name', получено: {repo}", + "zh": "仓库必须为 'owner/name' 格式,实际为:{repo}" }, "Repository configuration complete.": { "bg": "Конфигурирането на хранилището е завършено.", @@ -3625,29 +2933,23 @@ "en": "Repository configuration complete.", "pl": "Konfiguracja repozytorium zakończona.", "ru": "Конфигурация репозитория завершена.", - "zh": "仓库配置完成。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "仓库配置完成。" }, "Repository in owner/name format": { - "bg": "Repository in owner/name format", - "de": "Repository in owner/name format", + "bg": "Репозитория във формат owner/name", + "de": "Repository im Format owner/name", "en": "Repository in owner/name format", - "pl": "Repository in owner/name format", - "ru": "Repository in owner/name format", - "zh": "Repository in owner/name format", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Repozytorium w formacie owner/name", + "ru": "Репозиторий в формате owner/name", + "zh": "owner/name 格式的仓库" }, "Repository name not set. Use DEVX_REPO_NAME, [tool.devx] repo_name, or GITHUB_REPOSITORY env var.": { - "bg": "Repository name not set. Use DEVX_REPO_NAME, [tool.devx] repo_name, or GITHUB_REPOSITORY env var.", - "de": "Repository name not set. Use DEVX_REPO_NAME, [tool.devx] repo_name, or GITHUB_REPOSITORY env var.", + "bg": "Името на репозитория не е зададено. Използвайте DEVX_REPO_NAME, [tool.devx] repo_name или променливата GITHUB_REPOSITORY.", + "de": "Repository-Name nicht gesetzt. Verwenden Sie DEVX_REPO_NAME, [tool.devx] repo_name oder die Umgebungsvariable GITHUB_REPOSITORY.", "en": "Repository name not set. Use DEVX_REPO_NAME, [tool.devx] repo_name, or GITHUB_REPOSITORY env var.", - "pl": "Repository name not set. Use DEVX_REPO_NAME, [tool.devx] repo_name, or GITHUB_REPOSITORY env var.", - "ru": "Repository name not set. Use DEVX_REPO_NAME, [tool.devx] repo_name, or GITHUB_REPOSITORY env var.", - "zh": "Repository name not set. Use DEVX_REPO_NAME, [tool.devx] repo_name, or GITHUB_REPOSITORY env var.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Nazwa repozytorium nie jest ustawiona. Użyj DEVX_REPO_NAME, [tool.devx] repo_name lub zmiennej GITHUB_REPOSITORY.", + "ru": "Имя репозитория не задано. Используйте DEVX_REPO_NAME, [tool.devx] repo_name или переменную окружения GITHUB_REPOSITORY.", + "zh": "未设置仓库名称。使用 DEVX_REPO_NAME、[tool.devx] repo_name 或 GITHUB_REPOSITORY 环境变量。" }, "Repository owner not set. Use --owner or DEVX_REPO_OWNER env var.": { "bg": "Собственикът на хранилището не е зададен. Използвайте --owner или DEVX_REPO_OWNER env var.", @@ -3655,9 +2957,7 @@ "en": "Repository owner not set. Use --owner or DEVX_REPO_OWNER env var.", "pl": "Właściciel repozytorium nie jest ustawiony. Użyj --owner lub DEVX_REPO_OWNER env var.", "ru": "Владелец репозитория не установлен. Используйте --owner или DEVX_REPO_OWNER env var.", - "zh": "仓库所有者未设置。使用 --owner 或 DEVX_REPO_OWNER 环境变量。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "仓库所有者未设置。使用 --owner 或 DEVX_REPO_OWNER 环境变量。" }, "Required tools missing.": { "bg": "Липсват задължителни инструменти.", @@ -3665,29 +2965,23 @@ "en": "Required tools missing.", "pl": "Brak wymaganych narzędzi.", "ru": "Отсутствуют обязательные инструменты.", - "zh": "缺少必需的工具。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "缺少必需的工具。" }, "Roles directory not found: {path}": { - "bg": "Roles directory not found: {path}", - "de": "Roles directory not found: {path}", + "bg": "Директорията с роли не е намерена: {path}", + "de": "Rollenverzeichnis nicht gefunden: {path}", "en": "Roles directory not found: {path}", "pl": "Katalog ról nie znaleziony: {path}", - "ru": "Roles directory not found: {path}", - "zh": "Roles directory not found: {path}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Директория ролей не найдена: {path}", + "zh": "未找到角色目录:{path}" }, "Runner count: {count}": { - "bg": "Runner count: {count}", - "de": "Runner count: {count}", + "bg": "Брой раннъри: {count}", + "de": "Runner-Anzahl: {count}", "en": "Runner count: {count}", - "pl": "Runner count: {count}", - "ru": "Runner count: {count}", - "zh": "Runner count: {count}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Liczba runnerów: {count}", + "ru": "Количество раннеров: {count}", + "zh": "Runner 数量:{count}" }, "Runner index {index} out of range (0..{max})": { "bg": "Индексът на runner {index} е извън диапазона (0..{max})", @@ -3695,69 +2989,55 @@ "en": "Runner index {index} out of range (0..{max})", "pl": "Indeks runnera {index} poza zakresem (0..{max})", "ru": "Индекс runner {index} вне диапазона (0..{max})", - "zh": "Runner 索引 {index} 超出范围 (0..{max})", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "Runner 索引 {index} 超出范围 (0..{max})" }, "Runner index {runner_index} is out of range (must be >= 1)": { - "bg": "Runner index {runner_index} is out of range (must be >= 1)", - "de": "Runner index {runner_index} is out of range (must be >= 1)", + "bg": "Индексът на runner {runner_index} е извън обхват (трябва да е >= 1)", + "de": "Runner-Index {runner_index} außerhalb des Bereichs (muss >= 1 sein)", "en": "Runner index {runner_index} is out of range (must be >= 1)", - "pl": "Runner index {runner_index} is out of range (must be >= 1)", - "ru": "Runner index {runner_index} is out of range (must be >= 1)", - "zh": "Runner index {runner_index} is out of range (must be >= 1)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Indeks runnera {runner_index} poza zakresem (musi być >= 1)", + "ru": "Индекс раннера {runner_index} вне диапазона (должен быть >= 1)", + "zh": "Runner 索引 {runner_index} 超出范围(必须 >= 1)" }, "Runner indices: {indices}": { - "bg": "Runner indices: {indices}", - "de": "Runner indices: {indices}", + "bg": "Индекси на раннъри: {indices}", + "de": "Runner-Indizes: {indices}", "en": "Runner indices: {indices}", - "pl": "Runner indices: {indices}", - "ru": "Runner indices: {indices}", - "zh": "Runner indices: {indices}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Indeksy runnerów: {indices}", + "ru": "Индексы раннеров: {indices}", + "zh": "Runner 索引:{indices}" }, "Runner {i}: {labels}": { - "bg": "Runner {i}: {labels}", + "bg": "Раннер {i}: {labels}", "de": "Runner {i}: {labels}", "en": "Runner {i}: {labels}", "pl": "Runner {i}: {labels}", - "ru": "Runner {i}: {labels}", - "zh": "Runner {i}: {labels}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Раннер {i}: {labels}", + "zh": "Runner {i}:{labels}" }, "Running lint checks...": { - "bg": "Running lint checks...", - "de": "Running lint checks...", + "bg": "Изпълнение на lint проверки...", + "de": "Lint-Checks laufen...", "en": "Running lint checks...", "pl": "Uruchamianie kontroli lint...", - "ru": "Running lint checks...", - "zh": "Running lint checks...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Выполнение проверок lint...", + "zh": "正在运行 lint 检查..." }, "Running tests...": { - "bg": "Running tests...", - "de": "Running tests...", + "bg": "Изпълнение на тестове...", + "de": "Tests laufen...", "en": "Running tests...", "pl": "Uruchamianie testów...", - "ru": "Running tests...", - "zh": "Running tests...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Выполнение тестов...", + "zh": "正在运行测试..." }, "Running: {cmd}": { - "bg": "Running: {cmd}", - "de": "Running: {cmd}", + "bg": "Изпълнение: {cmd}", + "de": "Ausführen: {cmd}", "en": "Running: {cmd}", - "pl": "Running: {cmd}", - "ru": "Running: {cmd}", - "zh": "Running: {cmd}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Uruchamianie: {cmd}", + "ru": "Выполнение: {cmd}", + "zh": "运行中:{cmd}" }, "SSH key set up successfully": { "bg": "SSH ключът е настроен успешно", @@ -3765,9 +3045,7 @@ "en": "SSH key set up successfully", "pl": "Klucz SSH skonfigurowany pomyślnie", "ru": "SSH-ключ успешно настроен", - "zh": "SSH 密钥设置成功", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "SSH 密钥设置成功" }, "SSH key setup skipped (no key provided)": { "bg": "Настройката на SSH ключ е пропусната (не е предоставен ключ)", @@ -3775,9 +3053,7 @@ "en": "SSH key setup skipped (no key provided)", "pl": "Pominięto konfigurację klucza SSH (brak klucza)", "ru": "Настройка SSH-ключа пропущена (ключ не предоставлен)", - "zh": "SSH 密钥设置已跳过(未提供密钥)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "SSH 密钥设置已跳过(未提供密钥)" }, "SSH_PRIVATE_KEY not set — skipping SSH key setup": { "bg": "SSH_PRIVATE_KEY не е зададен — пропускане на SSH ключ настройката", @@ -3785,109 +3061,87 @@ "en": "SSH_PRIVATE_KEY not set — skipping SSH key setup", "pl": "SSH_PRIVATE_KEY nie ustawione — pomijanie konfiguracji klucza SSH", "ru": "SSH_PRIVATE_KEY не задан — пропуск настройки SSH-ключа", - "zh": "SSH_PRIVATE_KEY 未设置 — 跳过 SSH 密钥设置", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "SSH_PRIVATE_KEY 未设置 — 跳过 SSH 密钥设置" }, "Show what would be done without creating PR": { - "bg": "Show what would be done without creating PR", - "de": "Show what would be done without creating PR", + "bg": "Покажи какво би било направено без създаване на PR", + "de": "Zeigen, was getan würde, ohne PR zu erstellen", "en": "Show what would be done without creating PR", - "pl": "Show what would be done without creating PR", - "ru": "Show what would be done without creating PR", - "zh": "Show what would be done without creating PR", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Pokaż, co zostałoby zrobione bez tworzenia PR", + "ru": "Показать, что было бы сделано без создания PR", + "zh": "显示将要执行的操作而不创建 PR" }, "Show what would change without updating": { - "bg": "Show what would change without updating", - "de": "Show what would change without updating", + "bg": "Покажи какво би се променило без обновяване", + "de": "Zeigen, was sich ändern würde, ohne zu aktualisieren", "en": "Show what would change without updating", - "pl": "Show what would change without updating", - "ru": "Show what would change without updating", - "zh": "Show what would change without updating", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Pokaż, co by się zmieniło bez aktualizacji", + "ru": "Показать, что изменилось бы без обновления", + "zh": "显示将要更改的内容而不更新" }, "Single platform to test against": { - "bg": "Single platform to test against", - "de": "Single platform to test against", + "bg": "Единна платформа за тестване", + "de": "Einzelne Plattform zum Testen", "en": "Single platform to test against", - "pl": "Single platform to test against", - "ru": "Single platform to test against", - "zh": "Single platform to test against", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Pojedyncza platforma do testowania", + "ru": "Единая платформа для тестирования", + "zh": "用于测试的单一平台" }, "Skip Vikunja title match check": { - "bg": "Skip Vikunja title match check", - "de": "Skip Vikunja title match check", + "bg": "Пропусни проверката за съвпадение на заглавието с Vikunja", + "de": "Vikunja-Titelübereinstimmungsprüfung überspringen", "en": "Skip Vikunja title match check", - "pl": "Skip Vikunja title match check", - "ru": "Skip Vikunja title match check", - "zh": "Skip Vikunja title match check", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Pomiń kontrolę zgodności tytułu z Vikunja", + "ru": "Пропустить проверку совпадения заголовка с Vikunja", + "zh": "跳过 Vikunja 标题匹配检查" }, "Skip branch-behind-master check": { - "bg": "Skip branch-behind-master check", - "de": "Skip branch-behind-master check", + "bg": "Пропусни проверката дали клонът изостава от master", + "de": "Prüfung „Branch hinter master“ überspringen", "en": "Skip branch-behind-master check", - "pl": "Skip branch-behind-master check", - "ru": "Skip branch-behind-master check", - "zh": "Skip branch-behind-master check", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Pomiń kontrolę czy gałąź jest za master", + "ru": "Пропустить проверку отставания ветки от master", + "zh": "跳过分支落后于 master 的检查" }, "Skipping commit push — no staged changes.": { - "bg": "Skipping commit push — no staged changes.", - "de": "Skipping commit push — no staged changes.", + "bg": "Пропуска се push на комита — няма staged промени.", + "de": "Commit-Push wird übersprungen — keine gestagten Änderungen.", "en": "Skipping commit push — no staged changes.", "pl": "Pomijanie wypchnięcia commit — brak zmian w staging.", - "ru": "Skipping commit push — no staged changes.", - "zh": "Skipping commit push — no staged changes.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Push коммита пропускается — нет staged-изменений.", + "zh": "跳过提交推送——没有暂存的更改。" }, "Skipping — runner index {runner_index} > max runners {max_runners}": { - "bg": "Skipping — runner index {runner_index} > max runners {max_runners}", - "de": "Skipping — runner index {runner_index} > max runners {max_runners}", + "bg": "Пропуска се — индекс на runner {runner_index} > максимум раннъри {max_runners}", + "de": "Übersprungen — Runner-Index {runner_index} > max. Runner {max_runners}", "en": "Skipping — runner index {runner_index} > max runners {max_runners}", - "pl": "Skipping — runner index {runner_index} > max runners {max_runners}", - "ru": "Skipping — runner index {runner_index} > max runners {max_runners}", - "zh": "Skipping — runner index {runner_index} > max runners {max_runners}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Pomijanie — indeks runnera {runner_index} > maks. runnerów {max_runners}", + "ru": "Пропускается — индекс раннера {runner_index} > макс. раннеров {max_runners}", + "zh": "跳过——runner 索引 {runner_index} > 最大 runner 数 {max_runners}" }, "Source repo that published (owner/name)": { - "bg": "Source repo that published (owner/name)", - "de": "Source repo that published (owner/name)", + "bg": "Изходно репозитори, което е публикувало (owner/name)", + "de": "Quell-Repo, das veröffentlicht hat (owner/name)", "en": "Source repo that published (owner/name)", - "pl": "Source repo that published (owner/name)", - "ru": "Source repo that published (owner/name)", - "zh": "Source repo that published (owner/name)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Repozytorium źródłowe, które opublikowało (owner/name)", + "ru": "Исходный репозиторий, выполнивший публикацию (owner/name)", + "zh": "已发布的源仓库(owner/name)" }, "Spec validation failed.": { - "bg": "Spec validation failed.", - "de": "Spec validation failed.", + "bg": "Валидацията на spec се провали.", + "de": "Spec-Validierung fehlgeschlagen.", "en": "Spec validation failed.", - "pl": "Spec validation failed.", - "ru": "Spec validation failed.", - "zh": "Spec validation failed.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Walidacja spec nie powiodła się.", + "ru": "Проверка spec не пройдена.", + "zh": "规范验证失败。" }, "Synced to latest origin/{branch}": { - "bg": "Synced to latest origin/{branch}", - "de": "Synced to latest origin/{branch}", + "bg": "Синхронизирано към последния origin/{branch}", + "de": "Mit neuestem origin/{branch} synchronisiert", "en": "Synced to latest origin/{branch}", - "pl": "Synced to latest origin/{branch}", - "ru": "Synced to latest origin/{branch}", - "zh": "Synced to latest origin/{branch}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Zsynchronizowano z najnowszym origin/{branch}", + "ru": "Синхронизировано с последним origin/{branch}", + "zh": "已同步到最新的 origin/{branch}" }, "Syncing files...": { "bg": "", @@ -3895,9 +3149,7 @@ "en": "Syncing files...", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Syncing {count} documentation pages to wiki via Git...": { "bg": "", @@ -3905,109 +3157,87 @@ "en": "Syncing {count} documentation pages to wiki via Git...", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Tag consistency check failed.": { - "bg": "Tag consistency check failed.", - "de": "Tag consistency check failed.", + "bg": "Проверката за консистентност на таговете се провали.", + "de": "Tag-Konsistenzprüfung fehlgeschlagen.", "en": "Tag consistency check failed.", "pl": "Kontrola zgodności tagów nie powiodła się.", - "ru": "Tag consistency check failed.", - "zh": "Tag consistency check failed.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Проверка согласованности тегов не пройдена.", + "zh": "标签一致性检查失败。" }, "Tag is required (or use --from-tag).": { - "bg": "Tag is required (or use --from-tag).", - "de": "Tag is required (or use --from-tag).", + "bg": "Тагът е задължителен (или използвайте --from-tag).", + "de": "Tag ist erforderlich (oder --from-tag verwenden).", "en": "Tag is required (or use --from-tag).", "pl": "Tag jest wymagany (lub użyj --from-tag).", - "ru": "Tag is required (or use --from-tag).", - "zh": "Tag is required (or use --from-tag).", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Тег обязателен (или используйте --from-tag).", + "zh": "标签是必需的(或使用 --from-tag)。" }, "Tag v{version} already existed. Publish workflow should already have been triggered.": { - "bg": "Tag v{version} already existed. Publish workflow should already have been triggered.", - "de": "Tag v{version} already existed. Publish workflow should already have been triggered.", + "bg": "Тагът v{version} вече съществува. Workflow-ът за публикуване вече трябва да е задействан.", + "de": "Tag v{version} existierte bereits. Der Publish-Workflow sollte bereits ausgelöst worden sein.", "en": "Tag v{version} already existed. Publish workflow should already have been triggered.", "pl": "Tag v{version} już istniał. Workflow publikacji powinien już być uruchomiony.", - "ru": "Tag v{version} already existed. Publish workflow should already have been triggered.", - "zh": "Tag v{version} already existed. Publish workflow should already have been triggered.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Тег v{version} уже существует. Workflow публикации уже должен был быть запущен.", + "zh": "标签 v{version} 已存在。发布工作流应已被触发。" }, "Tag {tag} already exists and points to HEAD. Skipping creation.": { - "bg": "Tag {tag} already exists and points to HEAD. Skipping creation.", - "de": "Tag {tag} already exists and points to HEAD. Skipping creation.", + "bg": "Тагът {tag} вече съществува и сочи към HEAD. Създаването се пропуска.", + "de": "Tag {tag} existiert bereits und zeigt auf HEAD. Erstellung wird übersprungen.", "en": "Tag {tag} already exists and points to HEAD. Skipping creation.", "pl": "Tag {tag} już istnieje i wskazuje na HEAD. Pomijanie tworzenia.", - "ru": "Tag {tag} already exists and points to HEAD. Skipping creation.", - "zh": "Tag {tag} already exists and points to HEAD. Skipping creation.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Тег {tag} уже существует и указывает на HEAD. Создание пропускается.", + "zh": "标签 {tag} 已存在且指向 HEAD。跳过创建。" }, "Tag {tag} already exists but points to {tag_commit} (expected HEAD {head_commit}). This indicates a tag/commit misalignment. Run 'python3 -m devx.ci.release --verify' for details.": { - "bg": "Tag {tag} already exists but points to {tag_commit} (expected HEAD {head_commit}). This indicates a tag/commit misalignment. Run 'python3 -m devx.ci.release --verify' for details.", - "de": "Tag {tag} already exists but points to {tag_commit} (expected HEAD {head_commit}). This indicates a tag/commit misalignment. Run 'python3 -m devx.ci.release --verify' for details.", + "bg": "Тагът {tag} вече съществува, но сочи към {tag_commit} (очаква се HEAD {head_commit}). Това показва несъответствие таг/комит. Изпълнете 'python3 -m devx.ci.release --verify' за подробности.", + "de": "Tag {tag} existiert bereits, zeigt aber auf {tag_commit} (erwartet HEAD {head_commit}). Dies deutet auf eine Tag/Commit-Fehlzuordnung hin. Führen Sie 'python3 -m devx.ci.release --verify' für Details aus.", "en": "Tag {tag} already exists but points to {tag_commit} (expected HEAD {head_commit}). This indicates a tag/commit misalignment. Run 'python3 -m devx.ci.release --verify' for details.", "pl": "Tag {tag} już istnieje ale wskazuje na {tag_commit} (oczekiwano HEAD {head_commit}). Wskazuje to na niezgodność tag/commit. Uruchom 'python3 -m devx.ci.release --verify', aby uzyskać szczegóły.", - "ru": "Tag {tag} already exists but points to {tag_commit} (expected HEAD {head_commit}). This indicates a tag/commit misalignment. Run 'python3 -m devx.ci.release --verify' for details.", - "zh": "Tag {tag} already exists but points to {tag_commit} (expected HEAD {head_commit}). This indicates a tag/commit misalignment. Run 'python3 -m devx.ci.release --verify' for details.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Тег {tag} уже существует, но указывает на {tag_commit} (ожидается HEAD {head_commit}). Это указывает на несоответствие тег/коммит. Выполните 'python3 -m devx.ci.release --verify' для подробностей.", + "zh": "标签 {tag} 已存在但指向 {tag_commit}(预期为 HEAD {head_commit})。这表明标签/提交不匹配。运行 'python3 -m devx.ci.release --verify' 了解详情。" }, "Target repo (owner/name) to create PR in": { - "bg": "Target repo (owner/name) to create PR in", - "de": "Target repo (owner/name) to create PR in", + "bg": "Целево репозитори (owner/name) за създаване на PR", + "de": "Ziel-Repo (owner/name) zum Erstellen des PR", "en": "Target repo (owner/name) to create PR in", - "pl": "Target repo (owner/name) to create PR in", - "ru": "Target repo (owner/name) to create PR in", - "zh": "Target repo (owner/name) to create PR in", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Docelowe repo (owner/name) do utworzenia PR", + "ru": "Целевой репозиторий (owner/name) для создания PR", + "zh": "用于创建 PR 的目标仓库(owner/name)" }, "Task ID: {task_id}": { - "bg": "Task ID: {task_id}", - "de": "Task ID: {task_id}", + "bg": "ID на задача: {task_id}", + "de": "Task-ID: {task_id}", "en": "Task ID: {task_id}", "pl": "ID zadania: {task_id}", - "ru": "Task ID: {task_id}", - "zh": "Task ID: {task_id}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "ID задачи: {task_id}", + "zh": "任务 ID:{task_id}" }, "Test '{name}' took {elapsed:.2f}s (limit: {limit}s). Optimise: use lighter fixtures, reduce I/O, or mock external calls.": { - "bg": "Test '{name}' took {elapsed:.2f}s (limit: {limit}s). Optimise: use lighter fixtures, reduce I/O, or mock external calls.", - "de": "Test '{name}' took {elapsed:.2f}s (limit: {limit}s). Optimise: use lighter fixtures, reduce I/O, or mock external calls.", + "bg": "Тестът '{name}' отне {elapsed:.2f}s (лимит: {limit}s). Оптимизирайте: използвайте по-леки fixtures, намалете I/O или mock-нете външни извиквания.", + "de": "Test '{name}' dauerte {elapsed:.2f}s (Limit: {limit}s). Optimieren: leichtere Fixtures verwenden, I/O reduzieren oder externe Aufrufe mocken.", "en": "Test '{name}' took {elapsed:.2f}s (limit: {limit}s). Optimise: use lighter fixtures, reduce I/O, or mock external calls.", "pl": "Test '{name}' trwał {elapsed:.2f}s (limit: {limit}s). Optymalizuj: użyj lżejszych fixtures, zmniejsz I/O, lub mockuj zewnętrzne wywołania.", - "ru": "Test '{name}' took {elapsed:.2f}s (limit: {limit}s). Optimise: use lighter fixtures, reduce I/O, or mock external calls.", - "zh": "Test '{name}' took {elapsed:.2f}s (limit: {limit}s). Optimise: use lighter fixtures, reduce I/O, or mock external calls.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Тест '{name}' занял {elapsed:.2f}s (лимит: {limit}s). Оптимизируйте: используйте более лёгкие фикстуры, уменьшите I/O или замокайте внешние вызовы.", + "zh": "测试 '{name}' 耗时 {elapsed:.2f}s(限制:{limit}s)。优化:使用更轻的 fixtures、减少 I/O 或 mock 外部调用。" }, "Test isolation check FAILED: {count} violation(s) in {files} file(s).": { - "bg": "Test isolation check FAILED: {count} violation(s) in {files} file(s).", - "de": "Test isolation check FAILED: {count} violation(s) in {files} file(s).", + "bg": "Проверката за изолация на тестовете СЕ ПРОВАЛИ: {count} нарушение(я) във {files} файл(а).", + "de": "Testisolierungsprüfung FEHLGESCHLAGEN: {count} Verstoß/Verstöße in {files} Datei(en).", "en": "Test isolation check FAILED: {count} violation(s) in {files} file(s).", - "pl": "Test isolation check FAILED: {count} violation(s) in {files} file(s).", - "ru": "Test isolation check FAILED: {count} violation(s) in {files} file(s).", - "zh": "Test isolation check FAILED: {count} violation(s) in {files} file(s).", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Kontrola izolacji testów NIEUDANA: {count} naruszeń w {files} plikach.", + "ru": "Проверка изоляции тестов ПРОВАЛЕНА: {count} нарушение(й) в {files} файл(ах).", + "zh": "测试隔离检查失败:{files} 个文件中存在 {count} 处违规。" }, "Test isolation check passed with {count} advisory warning(s) in {files} file(s).": { - "bg": "Test isolation check passed with {count} advisory warning(s) in {files} file(s).", - "de": "Test isolation check passed with {count} advisory warning(s) in {files} file(s).", + "bg": "Проверката за изолация на тестовете премина с {count} предупредителни бележки във {files} файл(а).", + "de": "Testisolierungsprüfung mit {count} Hinweiswarnung(en) in {files} Datei(en) bestanden.", "en": "Test isolation check passed with {count} advisory warning(s) in {files} file(s).", - "pl": "Test isolation check passed with {count} advisory warning(s) in {files} file(s).", - "ru": "Test isolation check passed with {count} advisory warning(s) in {files} file(s).", - "zh": "Test isolation check passed with {count} advisory warning(s) in {files} file(s).", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Kontrola izolacji testów przeszła z {count} ostrzeżeniami doradczymi w {files} plikach.", + "ru": "Проверка изоляции тестов пройдена с {count} предупреждением(ями) в {files} файл(ах).", + "zh": "测试隔离检查通过,{files} 个文件中有 {count} 条建议性警告。" }, "Test isolation check passed: {count} test files analyzed, no violations found.": { "bg": "Проверката за изолация на тестове премина: анализирани са {count} тестови файла, няма нарушения.", @@ -4015,89 +3245,79 @@ "en": "Test isolation check passed: {count} test files analyzed, no violations found.", "pl": "Sprawdzenie izolacji testów zaliczone: przeanalizowano {count} plików testowych, brak naruszeń.", "ru": "Проверка изоляции тестов пройдена: проанализировано {count} тестовых файлов, нарушений не найдено.", - "zh": "测试隔离检查通过:已分析 {count} 个测试文件,未发现违规。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "测试隔离检查通过:已分析 {count} 个测试文件,未发现违规。" }, "Tests failed — refusing to release. Fix test failures first.\n{stderr}": { - "bg": "Tests failed — refusing to release. Fix test failures first.\n{stderr}", - "de": "Tests failed — refusing to release. Fix test failures first.\n{stderr}", + "bg": "Тестовете се провалиха — отказ за версия. Първо коригирайте неуспешните тестове.\n{stderr}", + "de": "Tests fehlgeschlagen — Release wird verweigert. Zuerst Testfehler beheben.\n{stderr}", "en": "Tests failed — refusing to release. Fix test failures first.\n{stderr}", "pl": "Testy nie powiodły się — odmowa wydania. Najpierw napraw niepowodzenia testów.\n{stderr}", - "ru": "Tests failed — refusing to release. Fix test failures first.\n{stderr}", - "zh": "Tests failed — refusing to release. Fix test failures first.\n{stderr}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Тесты не пройдены — отказ в релизе. Сначала исправьте ошибки тестов.\n{stderr}", + "zh": "测试失败——拒绝发布。请先修复测试失败。\n{stderr}" }, "Tests passed.": { - "bg": "Tests passed.", - "de": "Tests passed.", + "bg": "Тестовете преминаха.", + "de": "Tests bestanden.", "en": "Tests passed.", "pl": "Testy zakończone pomyślnie.", - "ru": "Tests passed.", - "zh": "Tests passed.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Тесты пройдены.", + "zh": "测试通过。" }, "Timeout reached after {timeout}s.": { - "bg": "Timeout reached after {timeout}s.", - "de": "Timeout reached after {timeout}s.", + "bg": "Достигнат таймаут след {timeout}s.", + "de": "Timeout nach {timeout}s erreicht.", "en": "Timeout reached after {timeout}s.", - "pl": "Timeout reached after {timeout}s.", - "ru": "Timeout reached after {timeout}s.", - "zh": "Timeout reached after {timeout}s.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Limit czasu osiągnięty po {timeout}s.", + "ru": "Таймаут достигнут после {timeout}s.", + "zh": "{timeout} 秒后达到超时。" }, "Transitive-subprocess advisories (runtime audit is authoritative):": { - "bg": "Transitive-subprocess advisories (runtime audit is authoritative):", - "de": "Transitive-subprocess advisories (runtime audit is authoritative):", + "bg": "Съветващи бележки за транзитивни subprocess (runtime одитът е решаващ):", + "de": "Transitive-Subprocess-Hinweise (Runtime-Audit ist maßgeblich):", "en": "Transitive-subprocess advisories (runtime audit is authoritative):", - "pl": "Transitive-subprocess advisories (runtime audit is authoritative):", - "ru": "Transitive-subprocess advisories (runtime audit is authoritative):", - "zh": "Transitive-subprocess advisories (runtime audit is authoritative):", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Ostrzeżenia dotyczące subprocessów przechodnich (audyt runtime jest rozstrzygający):", + "ru": "Предупреждения о транзитивных subprocess (авторитетен runtime-аудит):", + "zh": "传递性 subprocess 建议(以运行时审计为准):" }, "Unit tests passed in {duration:.2f}s (under {max}s limit, all tests under {single}s per-test limit).": { - "bg": "Unit tests passed in {duration:.2f}s (under {max}s limit, all tests under {single}s per-test limit).", - "de": "Unit tests passed in {duration:.2f}s (under {max}s limit, all tests under {single}s per-test limit).", + "bg": "Модулните тестове преминаха за {duration:.2f}s (под лимита {max}s, всички тестове под лимита {single}s на тест).", + "de": "Unit-Tests in {duration:.2f}s bestanden (unter {max}s-Limit, alle Tests unter {single}s Pro-Test-Limit).", "en": "Unit tests passed in {duration:.2f}s (under {max}s limit, all tests under {single}s per-test limit).", "pl": "Testy jednostkowe zakończone pomyślnie w {duration:.2f}s (poniżej limitu {max}s, wszystkie testy poniżej limitu {single}s na test).", - "ru": "Unit tests passed in {duration:.2f}s (under {max}s limit, all tests under {single}s per-test limit).", - "zh": "Unit tests passed in {duration:.2f}s (under {max}s limit, all tests under {single}s per-test limit).", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Модульные тесты пройдены за {duration:.2f}s (ниже лимита {max}s, все тесты ниже лимита {single}s на тест).", + "zh": "单元测试在 {duration:.2f}s 内通过(低于 {max}s 限制,所有测试均低于 {single}s 单测试限制)。" }, "Unit tests too slow: {duration:.2f}s (max allowed: {max}s).\n Fix: run 'make pytest-cov' to profile, then optimise slow tests.\n Hint: avoid unnecessary imports, use lighter mocks, or cache fixtures.": { - "bg": "Unit tests too slow: {duration:.2f}s (max allowed: {max}s).\n Fix: run 'make pytest-cov' to profile, then optimise slow tests.\n Hint: avoid unnecessary imports, use lighter mocks, or cache fixtures.", - "de": "Unit tests too slow: {duration:.2f}s (max allowed: {max}s).\n Fix: run 'make pytest-cov' to profile, then optimise slow tests.\n Hint: avoid unnecessary imports, use lighter mocks, or cache fixtures.", + "bg": "Модулните тестове са твърде бавни: {duration:.2f}s (максимум: {max}s).\n Корекция: изпълнете 'make pytest-cov' за профилиране, след това оптимизирайте бавните тестове.\n Съвет: избягвайте ненужни импорти, използвайте по-леки mocks или кеширайте fixtures.", + "de": "Unit-Tests zu langsam: {duration:.2f}s (max. erlaubt: {max}s).\n Behebung: 'make pytest-cov' zum Profilieren ausführen, dann langsame Tests optimieren.\n Hinweis: unnötige Imports vermeiden, leichtere Mocks verwenden oder Fixtures cachen.", "en": "Unit tests too slow: {duration:.2f}s (max allowed: {max}s).\n Fix: run 'make pytest-cov' to profile, then optimise slow tests.\n Hint: avoid unnecessary imports, use lighter mocks, or cache fixtures.", "pl": "Testy jednostkowe zbyt wolne: {duration:.2f}s (maks. dozwolone: {max}s).\n Naprawa: uruchom 'make pytest-cov' do profilowania, następnie zoptymalizuj wolne testy.\n Wskazówka: unikaj niepotrzebnych importów, użyj lżejszych mocków, lub buforuj fixtures.", - "ru": "Unit tests too slow: {duration:.2f}s (max allowed: {max}s).\n Fix: run 'make pytest-cov' to profile, then optimise slow tests.\n Hint: avoid unnecessary imports, use lighter mocks, or cache fixtures.", - "zh": "Unit tests too slow: {duration:.2f}s (max allowed: {max}s).\n Fix: run 'make pytest-cov' to profile, then optimise slow tests.\n Hint: avoid unnecessary imports, use lighter mocks, or cache fixtures.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Модульные тесты слишком медленные: {duration:.2f}s (макс.: {max}s).\n Исправление: выполните 'make pytest-cov' для профилирования, затем оптимизируйте медленные тесты.\n Совет: избегайте ненужных импортов, используйте более лёгкие моки или кешируйте фикстуры.", + "zh": "单元测试过慢:{duration:.2f}s(最大允许:{max}s)。\n 修复:运行 'make pytest-cov' 进行性能分析,然后优化慢测试。\n 提示:避免不必要的导入,使用更轻的 mock 或缓存 fixtures。" }, "Unknown check category '{check}'. Available: all, user-facing{tags}": { - "bg": "Unknown check category '{check}'. Available: all, user-facing{tags}", - "de": "Unknown check category '{check}'. Available: all, user-facing{tags}", + "bg": "Непозната категория проверка '{check}'. Налични: all, user-facing{tags}", + "de": "Unbekannte Check-Kategorie '{check}'. Verfügbar: all, user-facing{tags}", "en": "Unknown check category '{check}'. Available: all, user-facing{tags}", "pl": "Nieznana kategoria kontroli '{check}'. Dostępne: all, user-facing{tags}", - "ru": "Unknown check category '{check}'. Available: all, user-facing{tags}", - "zh": "Unknown check category '{check}'. Available: all, user-facing{tags}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Неизвестная категория проверки '{check}'. Доступны: all, user-facing{tags}", + "zh": "未知检查类别 '{check}'。可用:all、user-facing{tags}" + }, + "Unknown nightly status — staging deploy blocked.": { + "bg": "Непознат nightly статус — staging деплой е блокиран.", + "de": "Unbekannter Nightly-Status — Staging-Deploy blockiert.", + "en": "Unknown nightly status — staging deploy blocked.", + "pl": "Nieznany status nightly — wdrożenie staging zablokowane.", + "ru": "Неизвестный статус nightly — деплой на staging заблокирован.", + "zh": "未知的 nightly 状态——staging 部署已阻止。" }, "Updated badge URLs in {filename}": { - "bg": "Updated badge URLs in {filename}", - "de": "Updated badge URLs in {filename}", + "bg": "Обновени URL на значки в {filename}", + "de": "Badge-URLs in {filename} aktualisiert", "en": "Updated badge URLs in {filename}", - "pl": "Updated badge URLs in {filename}", - "ru": "Updated badge URLs in {filename}", - "zh": "Updated badge URLs in {filename}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Zaktualizowano URL-e odznak w {filename}", + "ru": "Обновлены URL значков в {filename}", + "zh": "已更新 {filename} 中的徽章 URL" }, "Updated documentation version references to v{version}": { "bg": "", @@ -4105,29 +3325,23 @@ "en": "Updated documentation version references to v{version}", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Updated version in {init}": { - "bg": "Updated version in {init}", - "de": "Updated version in {init}", + "bg": "Обновена версия в {init}", + "de": "Version in {init} aktualisiert", "en": "Updated version in {init}", "pl": "Zaktualizowano wersję w {init}", - "ru": "Updated version in {init}", - "zh": "Updated version in {init}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Версия обновлена в {init}", + "zh": "已更新 {init} 中的版本" }, "Updated {changelog_file}": { - "bg": "Updated {changelog_file}", - "de": "Updated {changelog_file}", + "bg": "Обновен {changelog_file}", + "de": "{changelog_file} aktualisiert", "en": "Updated {changelog_file}", "pl": "Zaktualizowano {changelog_file}", - "ru": "Updated {changelog_file}", - "zh": "Updated {changelog_file}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Обновлён {changelog_file}", + "zh": "已更新 {changelog_file}" }, "Use string comparison or _is_truthy()/_is_falsy() helpers instead. Add '{marker}' to suppress individual lines.": { "bg": "Използвайте сравнение на низове или _is_truthy()/_is_falsy() помощници. Добавете '{marker}' за потискане на отделни редове.", @@ -4135,9 +3349,7 @@ "en": "Use string comparison or _is_truthy()/_is_falsy() helpers instead. Add '{marker}' to suppress individual lines.", "pl": "Użyj porównania ciągów lub pomocników _is_truthy()/_is_falsy(). Dodaj '{marker}', aby pominąć pojedyncze linie.", "ru": "Используйте строковое сравнение или помощники _is_truthy()/_is_falsy(). Добавьте '{marker}' для подавления отдельных строк.", - "zh": "使用字符串比较或 _is_truthy()/_is_falsy() 辅助函数。添加 '{marker}' 以抑制个别行。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "使用字符串比较或 _is_truthy()/_is_falsy() 辅助函数。添加 '{marker}' 以抑制个别行。" }, "VIKUNJA_TOKEN is not set. Required to derive PR title.": { "bg": "VIKUNJA_TOKEN не е зададен. Необходим за извличане на PR заглавие.", @@ -4145,9 +3357,7 @@ "en": "VIKUNJA_TOKEN is not set. Required to derive PR title.", "pl": "VIKUNJA_TOKEN nie jest ustawiony. Wymagany do pobrania tytułu PR.", "ru": "VIKUNJA_TOKEN не установлен. Требуется для получения заголовка PR.", - "zh": "VIKUNJA_TOKEN 未设置。推导 PR 标题所需。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "VIKUNJA_TOKEN 未设置。推导 PR 标题所需。" }, "VIKUNJA_TOKEN is not set. Set it in .env or environment.": { "bg": "VIKUNJA_TOKEN не е зададен. Задайте го в .env или средата.", @@ -4155,29 +3365,23 @@ "en": "VIKUNJA_TOKEN is not set. Set it in .env or environment.", "pl": "VIKUNJA_TOKEN nie jest ustawiony. Ustaw go w .env lub środowisku.", "ru": "VIKUNJA_TOKEN не установлен. Установите его в .env или среде.", - "zh": "VIKUNJA_TOKEN 未设置。在 .env 或环境中设置它。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "VIKUNJA_TOKEN 未设置。在 .env 或环境中设置它。" }, "VIKUNJA_TOKEN is not set. This is required in CI to validate PR titles.": { - "bg": "VIKUNJA_TOKEN is not set. This is required in CI to validate PR titles.", - "de": "VIKUNJA_TOKEN is not set. This is required in CI to validate PR titles.", + "bg": "VIKUNJA_TOKEN не е зададен. Изисква се в CI за валидиране на заглавията на PR.", + "de": "VIKUNJA_TOKEN ist nicht gesetzt. In CI zur Validierung von PR-Titeln erforderlich.", "en": "VIKUNJA_TOKEN is not set. This is required in CI to validate PR titles.", "pl": "VIKUNJA_TOKEN nie jest ustawiony. Jest to wymagane w CI do walidacji tytułów PR.", - "ru": "VIKUNJA_TOKEN is not set. This is required in CI to validate PR titles.", - "zh": "VIKUNJA_TOKEN is not set. This is required in CI to validate PR titles.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "VIKUNJA_TOKEN не задан. Требуется в CI для проверки заголовков PR.", + "zh": "未设置 VIKUNJA_TOKEN。CI 中验证 PR 标题时需要。" }, "Version file: {file}": { - "bg": "Version file: {file}", - "de": "Version file: {file}", + "bg": "Файл с версия: {file}", + "de": "Versionsdatei: {file}", "en": "Version file: {file}", "pl": "Plik wersji: {file}", - "ru": "Version file: {file}", - "zh": "Version file: {file}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Файл версии: {file}", + "zh": "版本文件:{file}" }, "Version stays at v{version} — no version bump from git-cliff. Commits since last tag don't warrant a new release. Skipping.": { "bg": "", @@ -4185,19 +3389,15 @@ "en": "Version stays at v{version} — no version bump from git-cliff. Commits since last tag don't warrant a new release. Skipping.", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Vikunja API error (HTTP {status}): {message}. Task {task_id} was NOT updated. The merge succeeded but the Vikunja task needs manual update.": { - "bg": "Vikunja API error (HTTP {status}): {message}. Task {task_id} was NOT updated. The merge succeeded but the Vikunja task needs manual update.", - "de": "Vikunja API error (HTTP {status}): {message}. Task {task_id} was NOT updated. The merge succeeded but the Vikunja task needs manual update.", + "bg": "Грешка в Vikunja API (HTTP {status}): {message}. Задача {task_id} НЕ е обновена. Merge-ът успя, но Vikunja задачата изисква ръчно обновяване.", + "de": "Vikunja-API-Fehler (HTTP {status}): {message}. Task {task_id} wurde NICHT aktualisiert. Der Merge war erfolgreich, aber der Vikunja-Task muss manuell aktualisiert werden.", "en": "Vikunja API error (HTTP {status}): {message}. Task {task_id} was NOT updated. The merge succeeded but the Vikunja task needs manual update.", "pl": "Błąd API Vikunja (HTTP {status}): {message}. Zadanie {task_id} NIE zostało zaktualizowane. Scalenie powiodło się ale zadanie Vikunja wymaga ręcznej aktualizacji.", - "ru": "Vikunja API error (HTTP {status}): {message}. Task {task_id} was NOT updated. The merge succeeded but the Vikunja task needs manual update.", - "zh": "Vikunja API error (HTTP {status}): {message}. Task {task_id} was NOT updated. The merge succeeded but the Vikunja task needs manual update.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Ошибка Vikunja API (HTTP {status}): {message}. Задача {task_id} НЕ была обновлена. Слияние прошло успешно, но задачу Vikunja нужно обновить вручную.", + "zh": "Vikunja API 错误(HTTP {status}):{message}。任务 {task_id} 未更新。合并成功,但 Vikunja 任务需要手动更新。" }, "Vikunja task title '{title}' starts with '{prefix}:'. The task title should NOT include the '{prefix}' prefix — it is automatically added to the PR title. Update the Vikunja task title to remove the prefix.": { "bg": "Заглавието на задачата във Vikunja '{title}' започва с '{prefix}:'. Заглавието на задачата НЕ трябва да съдържа префикса '{prefix}' — той се добавя автоматично към заглавието на PR. Актуализирайте заглавието на задачата във Vikunja, за да премахнете префикса.", @@ -4205,9 +3405,7 @@ "en": "Vikunja task title '{title}' starts with '{prefix}:'. The task title should NOT include the '{prefix}' prefix — it is automatically added to the PR title. Update the Vikunja task title to remove the prefix.", "pl": "Tytuł zadania Vikunja '{title}' zaczyna się od '{prefix}:'. Tytuł zadania nie powinien zawierać prefiksu '{prefix}' — jest on automatycznie dodawany do tytułu PR. Zaktualizuj tytuł zadania Vikunja, aby usunąć prefiks.", "ru": "Заголовок задачи Vikunja '{title}' начинается с '{prefix}:'. Заголовок задачи НЕ должен включать префикс '{prefix}' — он автоматически добавляется к заголовку PR. Обновите заголовок задачи Vikunja, чтобы удалить префикс.", - "zh": "Vikunja 任务标题 '{title}' 以 '{prefix}:' 开头。任务标题不应包含 '{prefix}' 前缀 — 它会自动添加到 PR 标题中。请更新 Vikunja 任务标题以删除前缀。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "Vikunja 任务标题 '{title}' 以 '{prefix}:' 开头。任务标题不应包含 '{prefix}' 前缀 — 它会自动添加到 PR 标题中。请更新 Vikunja 任务标题以删除前缀。" }, "Vikunja task {task_id} not found in project {project_id}.\n Create it first:\n python -m devx.tools.create_task --title \"Task title\"\n Or check that the task ID in the branch name is correct.": { "bg": "Vikunja задача {task_id} не е намерена в проект {project_id}.\n Създайте я първо:\n python -m devx.tools.create_task --title \"Заглавие на задача\"\n Или проверете че ID на задачата в името на клона е правилно.", @@ -4215,9 +3413,7 @@ "en": "Vikunja task {task_id} not found in project {project_id}.\n Create it first:\n python -m devx.tools.create_task --title \"Task title\"\n Or check that the task ID in the branch name is correct.", "pl": "Zadanie Vikunja {task_id} nie znalezione w projekcie {project_id}.\n Utwórz je najpierw:\n python -m devx.tools.create_task --title \"Tytuł zadania\"\n Lub sprawdź, czy ID zadania w nazwie gałęzi jest poprawne.", "ru": "Задача Vikunja {task_id} не найдена в проекте {project_id}.\n Сначала создайте её:\n python -m devx.tools.create_task --title \"Заголовок задачи\"\n Или проверьте, что ID задачи в имени ветки корректен.", - "zh": "在项目 {project_id} 中找不到 Vikunja 任务 {task_id}。\n 请先创建:\n python -m devx.tools.create_task --title \"任务标题\"\n 或检查分支名称中的任务 ID 是否正确。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "在项目 {project_id} 中找不到 Vikunja 任务 {task_id}。\n 请先创建:\n python -m devx.tools.create_task --title \"任务标题\"\n 或检查分支名称中的任务 ID 是否正确。" }, "WARN: .venv has Python {version}, but >={req} is required.": { "bg": "ПРЕДУПРЕЖДЕНИЕ: .venv има Python {version}, но се изисква >={req}.", @@ -4225,9 +3421,7 @@ "en": "WARN: .venv has Python {version}, but >={req} is required.", "pl": "OSTRZEŻENIE: .venv ma Python {version}, ale wymagane jest >={req}.", "ru": "ПРЕДУПРЕЖДЕНИЕ: в .venv установлен Python {version}, но требуется >={req}.", - "zh": "警告: .venv 的 Python 版本为 {version},但要求 >={req}。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "警告: .venv 的 Python 版本为 {version},但要求 >={req}。" }, "WARN: .venv not found. Run 'make setup-venv' to create it.": { "bg": "ПРЕДУПРЕЖДЕНИЕ: .venv не е намерен. Изпълнете 'make setup-venv' за създаване.", @@ -4235,9 +3429,7 @@ "en": "WARN: .venv not found. Run 'make setup-venv' to create it.", "pl": "OSTRZEŻENIE: Nie znaleziono .venv. Uruchom 'make setup-venv', aby utworzyć.", "ru": "ПРЕДУПРЕЖДЕНИЕ: .venv не найден. Выполните 'make setup-venv' для создания.", - "zh": "警告: 未找到 .venv。运行 'make setup-venv' 来创建。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "警告: 未找到 .venv。运行 'make setup-venv' 来创建。" }, "WARN: Could not determine Python version in .venv.": { "bg": "ПРЕДУПРЕЖДЕНИЕ: Не може да се определи версията на Python в .venv.", @@ -4245,9 +3437,7 @@ "en": "WARN: Could not determine Python version in .venv.", "pl": "OSTRZEŻENIE: Nie można określić wersji Python w .venv.", "ru": "ПРЕДУПРЕЖДЕНИЕ: Не удалось определить версию Python в .venv.", - "zh": "警告: 无法确定 .venv 中的 Python 版本。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "警告: 无法确定 .venv 中的 Python 版本。" }, "WARN: Could not parse Python version '{version}'.": { "bg": "ПРЕДУПРЕЖДЕНИЕ: Не може да се анализира версията на Python '{version}'.", @@ -4255,19 +3445,15 @@ "en": "WARN: Could not parse Python version '{version}'.", "pl": "OSTRZEŻENIE: Nie można przeanalizować wersji Python '{version}'.", "ru": "ПРЕДУПРЕЖДЕНИЕ: Не удалось разобрать версию Python '{version}'.", - "zh": "警告: 无法解析 Python 版本 '{version}'。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "警告: 无法解析 Python 版本 '{version}'。" }, "WARNING: --skip-tests passed — skipping test verification.": { - "bg": "WARNING: --skip-tests passed — skipping test verification.", - "de": "WARNING: --skip-tests passed — skipping test verification.", + "bg": "ПРЕДУПРЕЖДЕНИЕ: зададен е --skip-tests — проверката на тестовете се пропуска.", + "de": "WARNUNG: --skip-tests übergeben — Testverifizierung wird übersprungen.", "en": "WARNING: --skip-tests passed — skipping test verification.", "pl": "OSTRZEŻENIE: --skip-tests przekazane — pomijanie weryfikacji testów.", - "ru": "WARNING: --skip-tests passed — skipping test verification.", - "zh": "WARNING: --skip-tests passed — skipping test verification.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "ПРЕДУПРЕЖДЕНИЕ: передан --skip-tests — проверка тестов пропускается.", + "zh": "警告:已传入 --skip-tests——跳过测试验证。" }, "WARNING: .taskid file ({file_id}) is deprecated and disagrees with branch name ({branch_id}). Delete .taskid from the repo — branch name is the sole source of truth.": { "bg": "ВНИМАНИЕ: Файлът .taskid ({file_id}) е остарял и не съвпада с името на клона ({branch_id}). Изтрийте .taskid от хранилището — името на клона е единственият източник на истината.", @@ -4275,9 +3461,7 @@ "en": "WARNING: .taskid file ({file_id}) is deprecated and disagrees with branch name ({branch_id}). Delete .taskid from the repo — branch name is the sole source of truth.", "pl": "OSTRZEŻENIE: plik .taskid ({file_id}) jest przestarzały i niezgodny z nazwą gałęzi ({branch_id}). Usuń .taskid z repozytorium — nazwa gałęzi jest jedynym źródłem prawdy.", "ru": "ВНИМАНИЕ: Файл .taskid ({file_id}) устарел и не совпадает с именем ветки ({branch_id}). Удалите .taskid из репозитория — имя ветки — единственный источник истины.", - "zh": "警告:.taskid 文件 ({file_id}) 已弃用,与分支名称 ({branch_id}) 不一致。请从仓库中删除 .taskid — 分支名称是唯一的真实来源。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "警告:.taskid 文件 ({file_id}) 已弃用,与分支名称 ({branch_id}) 不一致。请从仓库中删除 .taskid — 分支名称是唯一的真实来源。" }, "WARNING: VIKUNJA_TOKEN not set — skipping task existence check. Set it in .env to enable full validation.": { "bg": "ПРЕДУПРЕЖДЕНИЕ: VIKUNJA_TOKEN не е зададен — пропускане на проверката за съществуване на задача. Задайте го в .env за пълна валидация.", @@ -4285,9 +3469,7 @@ "en": "WARNING: VIKUNJA_TOKEN not set — skipping task existence check. Set it in .env to enable full validation.", "pl": "OSTRZEŻENIE: VIKUNJA_TOKEN nie jest ustawiony — pomijanie sprawdzania istnienia zadania. Ustaw w .env, aby włączyć pełną walidację.", "ru": "ПРЕДУПРЕЖДЕНИЕ: VIKUNJA_TOKEN не установлен — пропуск проверки существования задачи. Установите в .env для полной проверки.", - "zh": "警告: VIKUNJA_TOKEN 未设置 — 跳过任务存在性检查。在 .env 中设置以启用完整验证。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "警告: VIKUNJA_TOKEN 未设置 — 跳过任务存在性检查。在 .env 中设置以启用完整验证。" }, "WARNING: Version badge shows stale version (expected v{version}) — regenerating": { "bg": "", @@ -4295,9 +3477,7 @@ "en": "WARNING: Version badge shows stale version (expected v{version}) — regenerating", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "WARNING: check_doc_versions --fix failed (rc={rc}): {err}": { "bg": "", @@ -4305,9 +3485,7 @@ "en": "WARNING: check_doc_versions --fix failed (rc={rc}): {err}", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Waiting 5s for Gitea to process pushed commits...": { "bg": "", @@ -4315,89 +3493,71 @@ "en": "Waiting 5s for Gitea to process pushed commits...", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Waiting for CI checks to complete (timeout: {timeout}s)...": { - "bg": "Waiting for CI checks to complete (timeout: {timeout}s)...", - "de": "Waiting for CI checks to complete (timeout: {timeout}s)...", + "bg": "Изчакване CI проверките да завършат (таймаут: {timeout}s)...", + "de": "Warte auf Abschluss der CI-Checks (Timeout: {timeout}s)...", "en": "Waiting for CI checks to complete (timeout: {timeout}s)...", - "pl": "Waiting for CI checks to complete (timeout: {timeout}s)...", - "ru": "Waiting for CI checks to complete (timeout: {timeout}s)...", - "zh": "Waiting for CI checks to complete (timeout: {timeout}s)...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Oczekiwanie na zakończenie kontroli CI (limit: {timeout}s)...", + "ru": "Ожидание завершения CI-проверок (таймаут: {timeout}s)...", + "zh": "等待 CI 检查完成(超时:{timeout}s)..." }, "Warning: could not fetch tags from origin.": { - "bg": "Warning: could not fetch tags from origin.", - "de": "Warning: could not fetch tags from origin.", + "bg": "Предупреждение: не могат да се извлекат таговете от origin.", + "de": "Warnung: Tags konnten nicht von origin abgerufen werden.", "en": "Warning: could not fetch tags from origin.", "pl": "Ostrzeżenie: nie udało się pobrać tagów z origin.", - "ru": "Warning: could not fetch tags from origin.", - "zh": "Warning: could not fetch tags from origin.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Предупреждение: не удалось получить теги из origin.", + "zh": "警告:无法从 origin 获取标签。" }, "Warning: instance-level runners query failed: {error}": { - "bg": "Warning: instance-level runners query failed: {error}", - "de": "Warning: instance-level runners query failed: {error}", + "bg": "Предупреждение: заявката за раннъри на ниво инстанция се провали: {error}", + "de": "Warnung: Abfrage der Runner auf Instanzebene fehlgeschlagen: {error}", "en": "Warning: instance-level runners query failed: {error}", - "pl": "Warning: instance-level runners query failed: {error}", - "ru": "Warning: instance-level runners query failed: {error}", - "zh": "Warning: instance-level runners query failed: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Ostrzeżenie: zapytanie o runnery na poziomie instancji nie powiodło się: {error}", + "ru": "Предупреждение: запрос раннеров на уровне инстанса не удался: {error}", + "zh": "警告:实例级 runner 查询失败:{error}" }, "Warning: instance-level runners query returned HTTP {status}": { - "bg": "Warning: instance-level runners query returned HTTP {status}", - "de": "Warning: instance-level runners query returned HTTP {status}", + "bg": "Предупреждение: заявката за раннъри на ниво инстанция върна HTTP {status}", + "de": "Warnung: Abfrage der Runner auf Instanzebene gab HTTP {status} zurück", "en": "Warning: instance-level runners query returned HTTP {status}", - "pl": "Warning: instance-level runners query returned HTTP {status}", - "ru": "Warning: instance-level runners query returned HTTP {status}", - "zh": "Warning: instance-level runners query returned HTTP {status}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Ostrzeżenie: zapytanie o runnery na poziomie instancji zwróciło HTTP {status}", + "ru": "Предупреждение: запрос раннеров на уровне инстанса вернул HTTP {status}", + "zh": "警告:实例级 runner 查询返回 HTTP {status}" }, "Warning: org-level runners query failed: {error}": { - "bg": "Warning: org-level runners query failed: {error}", - "de": "Warning: org-level runners query failed: {error}", + "bg": "Предупреждение: заявката за раннъри на ниво организация се провали: {error}", + "de": "Warnung: Abfrage der Runner auf Organisationsebene fehlgeschlagen: {error}", "en": "Warning: org-level runners query failed: {error}", - "pl": "Warning: org-level runners query failed: {error}", - "ru": "Warning: org-level runners query failed: {error}", - "zh": "Warning: org-level runners query failed: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Ostrzeżenie: zapytanie o runnery na poziomie organizacji nie powiodło się: {error}", + "ru": "Предупреждение: запрос раннеров на уровне организации не удался: {error}", + "zh": "警告:组织级 runner 查询失败:{error}" }, "Warning: org-level runners query returned HTTP {status}": { - "bg": "Warning: org-level runners query returned HTTP {status}", - "de": "Warning: org-level runners query returned HTTP {status}", + "bg": "Предупреждение: заявката за раннъри на ниво организация върна HTTP {status}", + "de": "Warnung: Abfrage der Runner auf Organisationsebene gab HTTP {status} zurück", "en": "Warning: org-level runners query returned HTTP {status}", - "pl": "Warning: org-level runners query returned HTTP {status}", - "ru": "Warning: org-level runners query returned HTTP {status}", - "zh": "Warning: org-level runners query returned HTTP {status}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Ostrzeżenie: zapytanie o runnery na poziomie organizacji zwróciło HTTP {status}", + "ru": "Предупреждение: запрос раннеров на уровне организации вернул HTTP {status}", + "zh": "警告:组织级 runner 查询返回 HTTP {status}" }, "Warning: repo-level runners query failed: {error}": { - "bg": "Warning: repo-level runners query failed: {error}", - "de": "Warning: repo-level runners query failed: {error}", + "bg": "Предупреждение: заявката за раннъри на ниво репозитори се провали: {error}", + "de": "Warnung: Abfrage der Runner auf Repo-Ebene fehlgeschlagen: {error}", "en": "Warning: repo-level runners query failed: {error}", - "pl": "Warning: repo-level runners query failed: {error}", - "ru": "Warning: repo-level runners query failed: {error}", - "zh": "Warning: repo-level runners query failed: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Ostrzeżenie: zapytanie o runnery na poziomie repozytorium nie powiodło się: {error}", + "ru": "Предупреждение: запрос раннеров на уровне репозитория не удался: {error}", + "zh": "警告:仓库级 runner 查询失败:{error}" }, "Warning: repo-level runners query returned HTTP {status}": { - "bg": "Warning: repo-level runners query returned HTTP {status}", - "de": "Warning: repo-level runners query returned HTTP {status}", + "bg": "Предупреждение: заявката за раннъри на ниво репозитори върна HTTP {status}", + "de": "Warnung: Abfrage der Runner auf Repo-Ebene gab HTTP {status} zurück", "en": "Warning: repo-level runners query returned HTTP {status}", - "pl": "Warning: repo-level runners query returned HTTP {status}", - "ru": "Warning: repo-level runners query returned HTTP {status}", - "zh": "Warning: repo-level runners query returned HTTP {status}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Ostrzeżenie: zapytanie o runnery na poziomie repozytorium zwróciło HTTP {status}", + "ru": "Предупреждение: запрос раннеров на уровне репозитория вернул HTTP {status}", + "zh": "警告:仓库级 runner 查询返回 HTTP {status}" }, "Wiki repo not found or empty — initializing fresh.": { "bg": "", @@ -4405,9 +3565,7 @@ "en": "Wiki repo not found or empty — initializing fresh.", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Wiki synced successfully.": { "bg": "", @@ -4415,9 +3573,7 @@ "en": "Wiki synced successfully.", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Wiki verification failed — could not clone wiki": { "bg": "", @@ -4425,9 +3581,7 @@ "en": "Wiki verification failed — could not clone wiki", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Wiki verification failed — {failures} page(s) missing": { "bg": "", @@ -4435,9 +3589,7 @@ "en": "Wiki verification failed — {failures} page(s) missing", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "Write deploy-ref to $GITHUB_OUTPUT file.": { "bg": "Запиши deploy-ref в $GITHUB_OUTPUT файла.", @@ -4445,29 +3597,23 @@ "en": "Write deploy-ref to $GITHUB_OUTPUT file.", "pl": "Zapisz deploy-ref do pliku $GITHUB_OUTPUT.", "ru": "Записать deploy-ref в файл $GITHUB_OUTPUT.", - "zh": "将 deploy-ref 写入 $GITHUB_OUTPUT 文件。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "将 deploy-ref 写入 $GITHUB_OUTPUT 文件。" }, "Write results to $GITHUB_OUTPUT": { - "bg": "Write results to $GITHUB_OUTPUT", - "de": "Write results to $GITHUB_OUTPUT", + "bg": "Записва резултатите в $GITHUB_OUTPUT", + "de": "Ergebnisse nach $GITHUB_OUTPUT schreiben", "en": "Write results to $GITHUB_OUTPUT", - "pl": "Write results to $GITHUB_OUTPUT", - "ru": "Write results to $GITHUB_OUTPUT", - "zh": "Write results to $GITHUB_OUTPUT", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Zapisuje wyniki do $GITHUB_OUTPUT", + "ru": "Записывать результаты в $GITHUB_OUTPUT", + "zh": "将结果写入 $GITHUB_OUTPUT" }, "Wrote tag {tag} to GITHUB_OUTPUT.": { - "bg": "Wrote tag {tag} to GITHUB_OUTPUT.", - "de": "Wrote tag {tag} to GITHUB_OUTPUT.", + "bg": "Тагът {tag} е записан в GITHUB_OUTPUT.", + "de": "Tag {tag} nach GITHUB_OUTPUT geschrieben.", "en": "Wrote tag {tag} to GITHUB_OUTPUT.", - "pl": "Wrote tag {tag} to GITHUB_OUTPUT.", - "ru": "Wrote tag {tag} to GITHUB_OUTPUT.", - "zh": "Wrote tag {tag} to GITHUB_OUTPUT.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Zapisano tag {tag} do GITHUB_OUTPUT.", + "ru": "Тег {tag} записан в GITHUB_OUTPUT.", + "zh": "已将标签 {tag} 写入 GITHUB_OUTPUT。" }, "[check-api-identity-checks] Passed: no unsafe identity checks found": { "bg": "[check-api-identity-checks] Мина: не са намерени небрежни проверки за идентичност", @@ -4475,19 +3621,15 @@ "en": "[check-api-identity-checks] Passed: no unsafe identity checks found", "pl": "[check-api-identity-checks] Passed: nie znaleziono niebezpiecznych sprawdzeń tożsamości", "ru": "[check-api-identity-checks] Пройдено: небезопасных проверок идентичности не найдено", - "zh": "[check-api-identity-checks] 通过:未发现不安全的身份检查", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "[check-api-identity-checks] 通过:未发现不安全的身份检查" }, "[check-dep-docs] Passed: all dependencies are documented": { - "bg": "[check-dep-docs] Passed: all dependencies are documented", - "de": "[check-dep-docs] Passed: all dependencies are documented", + "bg": "[check-dep-docs] Успешно: всички зависимости са документирани", + "de": "[check-dep-docs] Bestanden: alle Abhängigkeiten sind dokumentiert", "en": "[check-dep-docs] Passed: all dependencies are documented", - "pl": "[check-dep-docs] Passed: all dependencies are documented", - "ru": "[check-dep-docs] Passed: all dependencies are documented", - "zh": "[check-dep-docs] Passed: all dependencies are documented", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "[check-dep-docs] Zaliczone: wszystkie zależności są udokumentowane", + "ru": "[check-dep-docs] Пройдено: все зависимости задокументированы", + "zh": "[check-dep-docs] 通过:所有依赖项均已记录" }, "[check-deps] All core tools present.": { "bg": "[check-deps] Всички основни инструменти са налични.", @@ -4495,9 +3637,7 @@ "en": "[check-deps] All core tools present.", "pl": "[check-deps] Wszystkie podstawowe narzędzia są dostępne.", "ru": "[check-deps] Все основные инструменты доступны.", - "zh": "[check-deps] 所有核心工具均已就绪。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "[check-deps] 所有核心工具均已就绪。" }, "[check-deps] Verifying tools...": { "bg": "[check-deps] Проверка на инструментите...", @@ -4505,9 +3645,7 @@ "en": "[check-deps] Verifying tools...", "pl": "[check-deps] Sprawdzanie narzędzi...", "ru": "[check-deps] Проверка инструментов...", - "zh": "[check-deps] 正在验证工具...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "[check-deps] 正在验证工具..." }, "[check-deps] Virtualenv .venv ready (Python {version}).": { "bg": "[check-deps] Виртуална среда .venv готова (Python {version}).", @@ -4515,99 +3653,79 @@ "en": "[check-deps] Virtualenv .venv ready (Python {version}).", "pl": "[check-deps] Środowisko wirtualne .venv gotowe (Python {version}).", "ru": "[check-deps] Виртуальное окружение .venv готово (Python {version}).", - "zh": "[check-deps] 虚拟环境 .venv 已就绪 (Python {version})。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "[check-deps] 虚拟环境 .venv 已就绪 (Python {version})。" }, "[check-mutable-globals] Passed: no mutable path globals found": { - "bg": "[check-mutable-globals] Passed: no mutable path globals found", - "de": "[check-mutable-globals] Passed: no mutable path globals found", + "bg": "[check-mutable-globals] Успешно: не са намерени променливи пътеки глобали", + "de": "[check-mutable-globals] Bestanden: keine mutablen Pfad-Globals gefunden", "en": "[check-mutable-globals] Passed: no mutable path globals found", - "pl": "[check-mutable-globals] Passed: no mutable path globals found", - "ru": "[check-mutable-globals] Passed: no mutable path globals found", - "zh": "[check-mutable-globals] Passed: no mutable path globals found", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "[check-mutable-globals] Zaliczone: nie znaleziono mutowalnych globali ścieżek", + "ru": "[check-mutable-globals] Пройдено: изменяемых глобальных путей не найдено", + "zh": "[check-mutable-globals] 通过:未发现可变路径全局变量" }, "[check-test-speed] CI environment detected — scaling limits by {factor}x (total: {orig}s → {eff}s, per-test: {orig_s}s → {eff_s}s)": { - "bg": "[check-test-speed] CI environment detected — scaling limits by {factor}x (total: {orig}s → {eff}s, per-test: {orig_s}s → {eff_s}s)", - "de": "[check-test-speed] CI environment detected — scaling limits by {factor}x (total: {orig}s → {eff}s, per-test: {orig_s}s → {eff_s}s)", + "bg": "[check-test-speed] Открита е CI среда — лимитите се скалират с {factor}x (общо: {orig}s → {eff}s, на тест: {orig_s}s → {eff_s}s)", + "de": "[check-test-speed] CI-Umgebung erkannt — Limits werden um Faktor {factor}x skaliert (gesamt: {orig}s → {eff}s, pro Test: {orig_s}s → {eff_s}s)", "en": "[check-test-speed] CI environment detected — scaling limits by {factor}x (total: {orig}s → {eff}s, per-test: {orig_s}s → {eff_s}s)", - "pl": "[check-test-speed] CI environment detected — scaling limits by {factor}x (total: {orig}s → {eff}s, per-test: {orig_s}s → {eff_s}s)", - "ru": "[check-test-speed] CI environment detected — scaling limits by {factor}x (total: {orig}s → {eff}s, per-test: {orig_s}s → {eff_s}s)", - "zh": "[check-test-speed] CI environment detected — scaling limits by {factor}x (total: {orig}s → {eff}s, per-test: {orig_s}s → {eff_s}s)", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "[check-test-speed] Wykryto środowisko CI — limity skalowane {factor}x (razem: {orig}s → {eff}s, na test: {orig_s}s → {eff_s}s)", + "ru": "[check-test-speed] Обнаружена среда CI — лимиты масштабируются в {factor}x (всего: {orig}s → {eff}s, на тест: {orig_s}s → {eff_s}s)", + "zh": "[check-test-speed] 检测到 CI 环境——限制按 {factor}x 缩放(总计:{orig}s → {eff}s,单测试:{orig_s}s → {eff_s}s)" }, "[check_agent_docs] Passed: scanned {count} file(s), no stale references": { - "bg": "[check_agent_docs] Passed: scanned {count} file(s), no stale references", - "de": "[check_agent_docs] Passed: scanned {count} file(s), no stale references", + "bg": "[check_agent_docs] Успешно: сканирани {count} файл(а), няма остарели препратки", + "de": "[check_agent_docs] Bestanden: {count} Datei(en) gescannt, keine veralteten Referenzen", "en": "[check_agent_docs] Passed: scanned {count} file(s), no stale references", - "pl": "[check_agent_docs] Passed: scanned {count} file(s), no stale references", - "ru": "[check_agent_docs] Passed: scanned {count} file(s), no stale references", - "zh": "[check_agent_docs] Passed: scanned {count} file(s), no stale references", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "[check_agent_docs] Zaliczone: przeskanowano {count} plików, brak nieaktualnych odwołań", + "ru": "[check_agent_docs] Пройдено: проверено {count} файл(ов), устаревших ссылок нет", + "zh": "[check_agent_docs] 通过:已扫描 {count} 个文件,无过时引用" }, "[check_test_coverage] No changed files to check.": { - "bg": "[check_test_coverage] No changed files to check.", - "de": "[check_test_coverage] No changed files to check.", + "bg": "[check_test_coverage] Няма променени файлове за проверка.", + "de": "[check_test_coverage] Keine geänderten Dateien zu prüfen.", "en": "[check_test_coverage] No changed files to check.", - "pl": "[check_test_coverage] No changed files to check.", - "ru": "[check_test_coverage] No changed files to check.", - "zh": "[check_test_coverage] No changed files to check.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "[check_test_coverage] Brak zmienionych plików do sprawdzenia.", + "ru": "[check_test_coverage] Нет изменённых файлов для проверки.", + "zh": "[check_test_coverage] 没有需要检查的已更改文件。" }, "[dep-pr] Bumping {pkg} from {old} to {new} in {file}": { - "bg": "[dep-pr] Bumping {pkg} from {old} to {new} in {file}", - "de": "[dep-pr] Bumping {pkg} from {old} to {new} in {file}", + "bg": "[dep-pr] Увеличаване на {pkg} от {old} на {new} в {file}", + "de": "[dep-pr] Erhöhe {pkg} von {old} auf {new} in {file}", "en": "[dep-pr] Bumping {pkg} from {old} to {new} in {file}", - "pl": "[dep-pr] Bumping {pkg} from {old} to {new} in {file}", - "ru": "[dep-pr] Bumping {pkg} from {old} to {new} in {file}", - "zh": "[dep-pr] Bumping {pkg} from {old} to {new} in {file}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "[dep-pr] Podbijanie {pkg} z {old} do {new} w {file}", + "ru": "[dep-pr] Повышение {pkg} с {old} до {new} в {file}", + "zh": "[dep-pr] 将 {file} 中的 {pkg} 从 {old} 升级到 {new}" }, "[dep-pr] Could not find pinned version for {pkg} in infra repo.": { - "bg": "[dep-pr] Could not find pinned version for {pkg} in infra repo.", - "de": "[dep-pr] Could not find pinned version for {pkg} in infra repo.", + "bg": "[dep-pr] Не е намерена фиксирана версия за {pkg} в infra репозиторито.", + "de": "[dep-pr] Keine gepinnte Version für {pkg} im Infra-Repo gefunden.", "en": "[dep-pr] Could not find pinned version for {pkg} in infra repo.", - "pl": "[dep-pr] Could not find pinned version for {pkg} in infra repo.", - "ru": "[dep-pr] Could not find pinned version for {pkg} in infra repo.", - "zh": "[dep-pr] Could not find pinned version for {pkg} in infra repo.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "[dep-pr] Nie znaleziono przypiętej wersji dla {pkg} w repo infra.", + "ru": "[dep-pr] Не найдена закреплённая версия для {pkg} в репозитории infra.", + "zh": "[dep-pr] 在 infra 仓库中未找到 {pkg} 的固定版本。" }, "[dep-pr] Created PR #{number}: {title}": { - "bg": "[dep-pr] Created PR #{number}: {title}", - "de": "[dep-pr] Created PR #{number}: {title}", + "bg": "[dep-pr] Създаден PR #{number}: {title}", + "de": "[dep-pr] PR #{number} erstellt: {title}", "en": "[dep-pr] Created PR #{number}: {title}", - "pl": "[dep-pr] Created PR #{number}: {title}", - "ru": "[dep-pr] Created PR #{number}: {title}", - "zh": "[dep-pr] Created PR #{number}: {title}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "[dep-pr] Utworzono PR #{number}: {title}", + "ru": "[dep-pr] Создан PR #{number}: {title}", + "zh": "[dep-pr] 已创建 PR #{number}:{title}" }, "[dep-pr] PR already exists: #{number}": { - "bg": "[dep-pr] PR already exists: #{number}", - "de": "[dep-pr] PR already exists: #{number}", + "bg": "[dep-pr] PR вече съществува: #{number}", + "de": "[dep-pr] PR existiert bereits: #{number}", "en": "[dep-pr] PR already exists: #{number}", - "pl": "[dep-pr] PR already exists: #{number}", - "ru": "[dep-pr] PR already exists: #{number}", - "zh": "[dep-pr] PR already exists: #{number}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "[dep-pr] PR już istnieje: #{number}", + "ru": "[dep-pr] PR уже существует: #{number}", + "zh": "[dep-pr] PR 已存在:#{number}" }, "[dep-pr] {pkg} already at {version} — no PR needed.": { - "bg": "[dep-pr] {pkg} already at {version} — no PR needed.", - "de": "[dep-pr] {pkg} already at {version} — no PR needed.", + "bg": "[dep-pr] {pkg} вече е на {version} — не е нужен PR.", + "de": "[dep-pr] {pkg} bereits auf {version} — kein PR nötig.", "en": "[dep-pr] {pkg} already at {version} — no PR needed.", - "pl": "[dep-pr] {pkg} already at {version} — no PR needed.", - "ru": "[dep-pr] {pkg} already at {version} — no PR needed.", - "zh": "[dep-pr] {pkg} already at {version} — no PR needed.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "[dep-pr] {pkg} już jest na {version} — PR niepotrzebny.", + "ru": "[dep-pr] {pkg} уже на версии {version} — PR не нужен.", + "zh": "[dep-pr] {pkg} 已处于 {version}——无需 PR。" }, "[docker-login] Logged in to {registry}.": { "bg": "[docker-login] Влязъл в {registry}.", @@ -4615,9 +3733,7 @@ "en": "[docker-login] Logged in to {registry}.", "pl": "[docker-login] Zalogowano do {registry}.", "ru": "[docker-login] Выполнен вход в {registry}.", - "zh": "[docker-login] 已登录到 {registry}。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "[docker-login] 已登录到 {registry}。" }, "[docker-login] Login to {registry} failed (continuing).": { "bg": "[docker-login] Влизането в {registry} не успя (продължава).", @@ -4625,9 +3741,7 @@ "en": "[docker-login] Login to {registry} failed (continuing).", "pl": "[docker-login] Logowanie do {registry} nie powiodło się (kontynuowanie).", "ru": "[docker-login] Ошибка входа в {registry} (продолжаем).", - "zh": "[docker-login] 登录 {registry} 失败(继续)。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "[docker-login] 登录 {registry} 失败(继续)。" }, "[docker-login] Skipping {registry} (token {env} not set).": { "bg": "[docker-login] Пропускане на {registry} (токен {env} не е зададен).", @@ -4635,9 +3749,7 @@ "en": "[docker-login] Skipping {registry} (token {env} not set).", "pl": "[docker-login] Pomijanie {registry} (token {env} nie ustawiony).", "ru": "[docker-login] Пропуск {registry} (токен {env} не задан).", - "zh": "[docker-login] 跳过 {registry}(未设置令牌 {env})。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "[docker-login] 跳过 {registry}(未设置令牌 {env})。" }, "[dry-run] No changes pushed.": { "bg": "", @@ -4645,9 +3757,7 @@ "en": "[dry-run] No changes pushed.", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "[dry-run] Would commit and push wiki changes": { "bg": "", @@ -4655,49 +3765,39 @@ "en": "[dry-run] Would commit and push wiki changes", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "[dry-run] Would commit: release: v{version} [skip ci]": { - "bg": "[dry-run] Would commit: release: v{version} [skip ci]", - "de": "[dry-run] Would commit: release: v{version} [skip ci]", + "bg": "[dry-run] Ще се комитне: release: v{version} [skip ci]", + "de": "[dry-run] Würde committen: release: v{version} [skip ci]", "en": "[dry-run] Would commit: release: v{version} [skip ci]", "pl": "[dry-run] Utworzono by commit: release: v{version} [skip ci]", - "ru": "[dry-run] Would commit: release: v{version} [skip ci]", - "zh": "[dry-run] Would commit: release: v{version} [skip ci]", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "[dry-run] Было бы закоммичено: release: v{version} [skip ci]", + "zh": "[dry-run] 将提交:release: v{version} [skip ci]" }, "[dry-run] Would create tag: v{version}": { - "bg": "[dry-run] Would create tag: v{version}", - "de": "[dry-run] Would create tag: v{version}", + "bg": "[dry-run] Ще се създаде таг: v{version}", + "de": "[dry-run] Würde Tag erstellen: v{version}", "en": "[dry-run] Would create tag: v{version}", "pl": "[dry-run] Utworzono by tag: v{version}", - "ru": "[dry-run] Would create tag: v{version}", - "zh": "[dry-run] Would create tag: v{version}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "[dry-run] Был бы создан тег: v{version}", + "zh": "[dry-run] 将创建标签:v{version}" }, "[dry-run] Would create tag: {tag}": { - "bg": "[dry-run] Would create tag: {tag}", - "de": "[dry-run] Would create tag: {tag}", + "bg": "[dry-run] Ще се създаде таг: {tag}", + "de": "[dry-run] Würde Tag erstellen: {tag}", "en": "[dry-run] Would create tag: {tag}", "pl": "[dry-run] Utworzono by tag: {tag}", - "ru": "[dry-run] Would create tag: {tag}", - "zh": "[dry-run] Would create tag: {tag}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "[dry-run] Был бы создан тег: {tag}", + "zh": "[dry-run] 将创建标签:{tag}" }, "[dry-run] Would push commit to master": { - "bg": "[dry-run] Would push commit to master", - "de": "[dry-run] Would push commit to master", + "bg": "[dry-run] Ще се push-не комит към master", + "de": "[dry-run] Würde Commit zu master pushen", "en": "[dry-run] Would push commit to master", "pl": "[dry-run] Wypchnięto by commit do master", - "ru": "[dry-run] Would push commit to master", - "zh": "[dry-run] Would push commit to master", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "[dry-run] Коммит был бы отправлен в master", + "zh": "[dry-run] 将推送提交到 master" }, "[dry-run] Would update doc version references via check_doc_versions --fix": { "bg": "", @@ -4705,79 +3805,71 @@ "en": "[dry-run] Would update doc version references via check_doc_versions --fix", "pl": "", "ru": "", - "zh": "", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "" }, "[dry-run] Would update {changelog_file}": { - "bg": "[dry-run] Would update {changelog_file}", - "de": "[dry-run] Would update {changelog_file}", + "bg": "[dry-run] Ще се обнови {changelog_file}", + "de": "[dry-run] Würde {changelog_file} aktualisieren", "en": "[dry-run] Would update {changelog_file}", "pl": "[dry-run] Zaktualizowano by {changelog_file}", - "ru": "[dry-run] Would update {changelog_file}", - "zh": "[dry-run] Would update {changelog_file}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "[dry-run] Был бы обновлён {changelog_file}", + "zh": "[dry-run] 将更新 {changelog_file}" }, "[dry-run] Would update {init}": { - "bg": "[dry-run] Would update {init}", - "de": "[dry-run] Would update {init}", + "bg": "[dry-run] Ще се обнови {init}", + "de": "[dry-run] Würde {init} aktualisieren", "en": "[dry-run] Would update {init}", "pl": "[dry-run] Zaktualizowano by {init}", - "ru": "[dry-run] Would update {init}", - "zh": "[dry-run] Would update {init}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "[dry-run] Был бы обновлён {init}", + "zh": "[dry-run] 将更新 {init}" }, "[fast-molecule] Changed roles: {roles}": { - "bg": "[fast-molecule] Changed roles: {roles}", - "de": "[fast-molecule] Changed roles: {roles}", + "bg": "[fast-molecule] Променени роли: {roles}", + "de": "[fast-molecule] Geänderte Rollen: {roles}", "en": "[fast-molecule] Changed roles: {roles}", - "pl": "[fast-molecule] Changed roles: {roles}", - "ru": "[fast-molecule] Changed roles: {roles}", - "zh": "[fast-molecule] Changed roles: {roles}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "[fast-molecule] Zmienione role: {roles}", + "ru": "[fast-molecule] Изменённые роли: {roles}", + "zh": "[fast-molecule] 已更改的角色:{roles}" }, "[nightly-gate] Nightly FAILED{run}. Staging deploys are blocked until nightly passes.": { - "bg": "[nightly-gate] Nightly FAILED{run}. Staging deploys are blocked until nightly passes.", - "de": "[nightly-gate] Nightly FAILED{run}. Staging deploys are blocked until nightly passes.", + "bg": "[nightly-gate] Nightly СЕ ПРОВАЛИ{run}. Staging деплой е блокиран, докато nightly не премине.", + "de": "[nightly-gate] Nightly FEHLGESCHLAGEN{run}. Staging-Deploys sind blockiert, bis Nightly besteht.", "en": "[nightly-gate] Nightly FAILED{run}. Staging deploys are blocked until nightly passes.", - "pl": "[nightly-gate] Nightly FAILED{run}. Staging deploys are blocked until nightly passes.", - "ru": "[nightly-gate] Nightly FAILED{run}. Staging deploys are blocked until nightly passes.", - "zh": "[nightly-gate] Nightly FAILED{run}. Staging deploys are blocked until nightly passes.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "[nightly-gate] Nightly NIEUDANY{run}. Wdrożenia staging są zablokowane, dopóki nightly nie przejdzie.", + "ru": "[nightly-gate] Nightly ПРОВАЛЕН{run}. Деплои на staging заблокированы, пока nightly не пройдёт.", + "zh": "[nightly-gate] Nightly 失败{run}。在 nightly 通过之前,staging 部署被阻止。" }, "[nightly-gate] Set NIGHTLY_STATUS=failed{run}": { - "bg": "[nightly-gate] Set NIGHTLY_STATUS=failed{run}", - "de": "[nightly-gate] Set NIGHTLY_STATUS=failed{run}", + "bg": "[nightly-gate] Зададено NIGHTLY_STATUS=failed{run}", + "de": "[nightly-gate] NIGHTLY_STATUS=failed{run} gesetzt", "en": "[nightly-gate] Set NIGHTLY_STATUS=failed{run}", - "pl": "[nightly-gate] Set NIGHTLY_STATUS=failed{run}", - "ru": "[nightly-gate] Set NIGHTLY_STATUS=failed{run}", - "zh": "[nightly-gate] Set NIGHTLY_STATUS=failed{run}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "[nightly-gate] Ustawiono NIGHTLY_STATUS=failed{run}", + "ru": "[nightly-gate] Установлено NIGHTLY_STATUS=failed{run}", + "zh": "[nightly-gate] 已设置 NIGHTLY_STATUS=failed{run}" }, "[nightly-gate] Set NIGHTLY_STATUS=passed{run}": { - "bg": "[nightly-gate] Set NIGHTLY_STATUS=passed{run}", - "de": "[nightly-gate] Set NIGHTLY_STATUS=passed{run}", + "bg": "[nightly-gate] Зададено NIGHTLY_STATUS=passed{run}", + "de": "[nightly-gate] NIGHTLY_STATUS=passed{run} gesetzt", "en": "[nightly-gate] Set NIGHTLY_STATUS=passed{run}", - "pl": "[nightly-gate] Set NIGHTLY_STATUS=passed{run}", - "ru": "[nightly-gate] Set NIGHTLY_STATUS=passed{run}", - "zh": "[nightly-gate] Set NIGHTLY_STATUS=passed{run}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "[nightly-gate] Ustawiono NIGHTLY_STATUS=passed{run}", + "ru": "[nightly-gate] Установлено NIGHTLY_STATUS=passed{run}", + "zh": "[nightly-gate] 已设置 NIGHTLY_STATUS=passed{run}" + }, + "[nightly-gate] Unknown nightly status: {status} — blocking deploy (fail closed).": { + "bg": "[nightly-gate] Непознат nightly статус: {status} — деплой се блокира (fail closed).", + "de": "[nightly-gate] Unbekannter Nightly-Status: {status} — Deploy wird blockiert (fail closed).", + "en": "[nightly-gate] Unknown nightly status: {status} — blocking deploy (fail closed).", + "pl": "[nightly-gate] Nieznany status nightly: {status} — wdrożenie blokowane (fail closed).", + "ru": "[nightly-gate] Неизвестный статус nightly: {status} — деплой блокируется (fail closed).", + "zh": "[nightly-gate] 未知的 nightly 状态:{status}——部署被阻止(fail closed)。" }, "[spec-check] Spec validated: {path}": { - "bg": "[spec-check] Spec validated: {path}", - "de": "[spec-check] Spec validated: {path}", + "bg": "[spec-check] Spec валидиран: {path}", + "de": "[spec-check] Spec validiert: {path}", "en": "[spec-check] Spec validated: {path}", - "pl": "[spec-check] Spec validated: {path}", - "ru": "[spec-check] Spec validated: {path}", - "zh": "[spec-check] Spec validated: {path}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "[spec-check] Spec zweryfikowany: {path}", + "ru": "[spec-check] Spec проверен: {path}", + "zh": "[spec-check] 规范已验证:{path}" }, "[tofu-init] Done.": { "bg": "[tofu-init] Готово.", @@ -4785,9 +3877,7 @@ "en": "[tofu-init] Done.", "pl": "[tofu-init] Gotowe.", "ru": "[tofu-init] Готово.", - "zh": "[tofu-init] 完成。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "[tofu-init] 完成。" }, "[tofu-init] Initializing {dir}...": { "bg": "[tofu-init] Инициализиране на {dir}...", @@ -4795,9 +3885,7 @@ "en": "[tofu-init] Initializing {dir}...", "pl": "[tofu-init] Inicjalizacja {dir}...", "ru": "[tofu-init] Инициализация {dir}...", - "zh": "[tofu-init] 正在初始化 {dir}...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "[tofu-init] 正在初始化 {dir}..." }, "[tofu-{mode}] All configurations valid.": { "bg": "[tofu-{mode}] Всички конфигурации са валидни.", @@ -4805,9 +3893,7 @@ "en": "[tofu-{mode}] All configurations valid.", "pl": "[tofu-{mode}] Wszystkie konfiguracje są poprawne.", "ru": "[tofu-{mode}] Все конфигурации валидны.", - "zh": "[tofu-{mode}] 所有配置有效。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "[tofu-{mode}] 所有配置有效。" }, "[tofu-{mode}] Validating OpenTofu configurations...": { "bg": "[tofu-{mode}] Проверка на OpenTofu конфигурациите...", @@ -4815,9 +3901,7 @@ "en": "[tofu-{mode}] Validating OpenTofu configurations...", "pl": "[tofu-{mode}] Sprawdzanie konfiguracji OpenTofu...", "ru": "[tofu-{mode}] Проверка конфигураций OpenTofu...", - "zh": "[tofu-{mode}] 正在验证 OpenTofu 配置...", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "[tofu-{mode}] 正在验证 OpenTofu 配置..." }, "[tool.devx] missing required keys: {keys}": { "bg": "[tool.devx] липсват задължителни ключове: {keys}", @@ -4825,9 +3909,7 @@ "en": "[tool.devx] missing required keys: {keys}", "pl": "[tool.devx] brak wymaganych kluczy: {keys}", "ru": "[tool.devx] отсутствуют обязательные ключи: {keys}", - "zh": "[tool.devx] 缺少必需的键: {keys}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "[tool.devx] 缺少必需的键: {keys}" }, "active": { "bg": "активен", @@ -4835,9 +3917,7 @@ "en": "active", "pl": "aktywny", "ru": "активен", - "zh": "活跃", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "活跃" }, "completed": { "bg": "завършен", @@ -4845,9 +3925,7 @@ "en": "completed", "pl": "ukończony", "ru": "завершён", - "zh": "已完成", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "已完成" }, "count={count}": { "bg": "count={count}", @@ -4855,9 +3933,7 @@ "en": "count={count}", "pl": "count={count}", "ru": "count={count}", - "zh": "count={count}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "count={count}" }, "devx version mismatch across extras: {detail}": { "bg": "несъответствие на версията на devx между extras: {detail}", @@ -4865,9 +3941,7 @@ "en": "devx version mismatch across extras: {detail}", "pl": "niezgodność wersji devx między extras: {detail}", "ru": "несоответствие версии devx между extras: {detail}", - "zh": "devx 版本在 extras 之间不一致: {detail}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "devx 版本在 extras 之间不一致: {detail}" }, "failed": { "bg": "неуспешен", @@ -4875,69 +3949,55 @@ "en": "failed", "pl": "nieudany", "ru": "неудачный", - "zh": "失败", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "失败" }, "git command failed ({cmd}): {stderr}": { - "bg": "git command failed ({cmd}): {stderr}", - "de": "git command failed ({cmd}): {stderr}", + "bg": "git командата се провали ({cmd}): {stderr}", + "de": "git-Befehl fehlgeschlagen ({cmd}): {stderr}", "en": "git command failed ({cmd}): {stderr}", "pl": "polecenie git nie powiodło się ({cmd}): {stderr}", - "ru": "git command failed ({cmd}): {stderr}", - "zh": "git command failed ({cmd}): {stderr}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "git-команда завершилась с ошибкой ({cmd}): {stderr}", + "zh": "git 命令失败({cmd}):{stderr}" }, "git diff --numstat failed: {stderr}": { - "bg": "git diff --numstat failed: {stderr}", - "de": "git diff --numstat failed: {stderr}", + "bg": "git diff --numstat се провали: {stderr}", + "de": "git diff --numstat fehlgeschlagen: {stderr}", "en": "git diff --numstat failed: {stderr}", - "pl": "git diff --numstat failed: {stderr}", - "ru": "git diff --numstat failed: {stderr}", - "zh": "git diff --numstat failed: {stderr}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "git diff --numstat nie powiódł się: {stderr}", + "ru": "git diff --numstat завершился с ошибкой: {stderr}", + "zh": "git diff --numstat 失败:{stderr}" }, "git-cliff generated empty changelog for v{version}. Check cliff.toml and commit history.": { - "bg": "git-cliff generated empty changelog for v{version}. Check cliff.toml and commit history.", - "de": "git-cliff generated empty changelog for v{version}. Check cliff.toml and commit history.", + "bg": "git-cliff генерира празен changelog за v{version}. Проверете cliff.toml и историята на комитите.", + "de": "git-cliff hat ein leeres Changelog für v{version} generiert. Prüfen Sie cliff.toml und die Commit-Historie.", "en": "git-cliff generated empty changelog for v{version}. Check cliff.toml and commit history.", "pl": "git-cliff wygenerował pusty changelog dla v{version}. Sprawdź cliff.toml i historię commitów.", - "ru": "git-cliff generated empty changelog for v{version}. Check cliff.toml and commit history.", - "zh": "git-cliff generated empty changelog for v{version}. Check cliff.toml and commit history.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "git-cliff сгенерировал пустой changelog для v{version}. Проверьте cliff.toml и историю коммитов.", + "zh": "git-cliff 为 v{version} 生成了空的 changelog。请检查 cliff.toml 和提交历史。" }, "git-cliff returned empty version.": { - "bg": "git-cliff returned empty version.", - "de": "git-cliff returned empty version.", + "bg": "git-cliff върна празна версия.", + "de": "git-cliff gab eine leere Version zurück.", "en": "git-cliff returned empty version.", "pl": "git-cliff zwrócił pustą wersję.", - "ru": "git-cliff returned empty version.", - "zh": "git-cliff returned empty version.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "git-cliff вернул пустую версию.", + "zh": "git-cliff 返回了空版本。" }, "git-cliff returned invalid version format: {version}. Expected semver (e.g., 0.4.1).": { - "bg": "git-cliff returned invalid version format: {version}. Expected semver (e.g., 0.4.1).", - "de": "git-cliff returned invalid version format: {version}. Expected semver (e.g., 0.4.1).", + "bg": "git-cliff върна невалиден формат на версия: {version}. Очаква се semver (напр. 0.4.1).", + "de": "git-cliff gab ein ungültiges Versionsformat zurück: {version}. Erwartet: Semver (z. B. 0.4.1).", "en": "git-cliff returned invalid version format: {version}. Expected semver (e.g., 0.4.1).", "pl": "git-cliff zwrócił nieprawidłowy format wersji: {version}. Oczekiwano semver (np., 0.4.1).", - "ru": "git-cliff returned invalid version format: {version}. Expected semver (e.g., 0.4.1).", - "zh": "git-cliff returned invalid version format: {version}. Expected semver (e.g., 0.4.1).", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "git-cliff вернул неверный формат версии: {version}. Ожидается semver (напр. 0.4.1).", + "zh": "git-cliff 返回了无效的版本格式:{version}。应为 semver(例如 0.4.1)。" }, "importlib.reload({mod}) called {n} time(s) in test '{test}' — odd count leaves module in modified state. Add a final reload to restore defaults or wrap in try/finally.": { - "bg": "importlib.reload({mod}) called {n} time(s) in test '{test}' — odd count leaves module in modified state. Add a final reload to restore defaults or wrap in try/finally.", - "de": "importlib.reload({mod}) called {n} time(s) in test '{test}' — odd count leaves module in modified state. Add a final reload to restore defaults or wrap in try/finally.", + "bg": "importlib.reload({mod}) е извикан {n} път(и) в тест '{test}' — нечетен брой оставя модула в променено състояние. Добавете финален reload за възстановяване на подразбираните или обвийте в try/finally.", + "de": "importlib.reload({mod}) wurde {n} Mal in Test '{test}' aufgerufen — ungerade Anzahl lässt Modul in verändertem Zustand. Finalen Reload hinzufügen oder in try/finally einhüllen.", "en": "importlib.reload({mod}) called {n} time(s) in test '{test}' — odd count leaves module in modified state. Add a final reload to restore defaults or wrap in try/finally.", - "pl": "importlib.reload({mod}) called {n} time(s) in test '{test}' — odd count leaves module in modified state. Add a final reload to restore defaults or wrap in try/finally.", - "ru": "importlib.reload({mod}) called {n} time(s) in test '{test}' — odd count leaves module in modified state. Add a final reload to restore defaults or wrap in try/finally.", - "zh": "importlib.reload({mod}) called {n} time(s) in test '{test}' — odd count leaves module in modified state. Add a final reload to restore defaults or wrap in try/finally.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "importlib.reload({mod}) wywołano {n} raz(y) w teście '{test}' — nieparzysta liczba pozostawia moduł w zmienionym stanie. Dodaj końcowy reload, aby przywrócić domyślne, lub owiń w try/finally.", + "ru": "importlib.reload({mod}) вызван {n} раз(а) в тесте '{test}' — нечётное количество оставляет модуль в изменённом состоянии. Добавьте финальный reload для восстановления или оберните в try/finally.", + "zh": "在测试 '{test}' 中调用了 {n} 次 importlib.reload({mod})——奇数次会使模块保持修改状态。请添加最后的 reload 恢复默认或用 try/finally 包裹。" }, "in_progress": { "bg": "в процес", @@ -4945,9 +4005,7 @@ "en": "in progress", "pl": "w toku", "ru": "в процессе", - "zh": "进行中", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "进行中" }, "inactive": { "bg": "неактивен", @@ -4955,9 +4013,7 @@ "en": "inactive", "pl": "nieaktywny", "ru": "неактивен", - "zh": "未激活", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "未激活" }, "indices={indices}": { "bg": "indices={indices}", @@ -4965,29 +4021,23 @@ "en": "indices={indices}", "pl": "indices={indices}", "ru": "indices={indices}", - "zh": "indices={indices}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "indices={indices}" }, "mapping.json keys and values must be strings, got {k}={v}": { - "bg": "mapping.json keys and values must be strings, got {k}={v}", - "de": "mapping.json keys and values must be strings, got {k}={v}", + "bg": "Ключовете и стойностите на mapping.json трябва да са низове, получено {k}={v}", + "de": "mapping.json-Schlüssel und -Werte müssen Strings sein, erhalten {k}={v}", "en": "mapping.json keys and values must be strings, got {k}={v}", "pl": "klucze i wartości mapping.json muszą być ciągami znaków, otrzymano {k}={v}", - "ru": "mapping.json keys and values must be strings, got {k}={v}", - "zh": "mapping.json keys and values must be strings, got {k}={v}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "Ключи и значения mapping.json должны быть строками, получено {k}={v}", + "zh": "mapping.json 的键和值必须是字符串,实际得到 {k}={v}" }, "mapping.json must be a dict of file-path -> page-title, got {type}": { - "bg": "mapping.json must be a dict of file-path -> page-title, got {type}", - "de": "mapping.json must be a dict of file-path -> page-title, got {type}", + "bg": "mapping.json трябва да е dict от file-path -> page-title, получено {type}", + "de": "mapping.json muss ein Dict von file-path -> page-title sein, erhalten {type}", "en": "mapping.json must be a dict of file-path -> page-title, got {type}", "pl": "mapping.json musi być słownikiem ścieżka-pliku -> tytuł-strony, otrzymano {type}", - "ru": "mapping.json must be a dict of file-path -> page-title, got {type}", - "zh": "mapping.json must be a dict of file-path -> page-title, got {type}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "mapping.json должен быть dict вида file-path -> page-title, получено {type}", + "zh": "mapping.json 必须是 file-path -> page-title 的字典,实际得到 {type}" }, "pending": { "bg": "в очакване", @@ -4995,9 +4045,7 @@ "en": "pending", "pl": "oczekujący", "ru": "ожидает", - "zh": "待处理", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "待处理" }, "pyproject.toml not found in current directory.": { "bg": "pyproject.toml не е намерен в текущата директория.", @@ -5005,29 +4053,23 @@ "en": "pyproject.toml not found in current directory.", "pl": "nie znaleziono pyproject.toml w bieżącym katalogu.", "ru": "pyproject.toml не найден в текущей директории.", - "zh": "在当前目录中未找到 pyproject.toml。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "在当前目录中未找到 pyproject.toml。" }, "tea login '{name}' already configured.": { - "bg": "tea login '{name}' already configured.", - "de": "tea login '{name}' already configured.", + "bg": "tea входът '{name}' вече е конфигуриран.", + "de": "tea-Login '{name}' bereits konfiguriert.", "en": "tea login '{name}' already configured.", - "pl": "tea login '{name}' already configured.", - "ru": "tea login '{name}' already configured.", - "zh": "tea login '{name}' already configured.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "Logowanie tea '{name}' już skonfigurowane.", + "ru": "Вход tea '{name}' уже настроен.", + "zh": "tea 登录 '{name}' 已配置。" }, "tea not installed — skipping login configuration.": { - "bg": "tea not installed — skipping login configuration.", - "de": "tea not installed — skipping login configuration.", + "bg": "tea не е инсталиран — пропуска се конфигурацията за вход.", + "de": "tea nicht installiert — Login-Konfiguration wird übersprungen.", "en": "tea not installed — skipping login configuration.", - "pl": "tea not installed — skipping login configuration.", - "ru": "tea not installed — skipping login configuration.", - "zh": "tea not installed — skipping login configuration.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "pl": "tea nie jest zainstalowany — pomijanie konfiguracji logowania.", + "ru": "tea не установлен — настройка входа пропускается.", + "zh": "未安装 tea——跳过登录配置。" }, "time.sleep called in test '{test}' without @patch — this causes real wall-clock delays. Add @patch(\".time.sleep\").": { "bg": "time.sleep извикано в тест '{test}' без @patch — това причинява реални забавяния. Добавете @patch(\".time.sleep\").", @@ -5035,9 +4077,7 @@ "en": "time.sleep called in test '{test}' without @patch — this causes real wall-clock delays. Add @patch(\".time.sleep\").", "pl": "time.sleep wywołane w teście '{test}' bez @patch — to powoduje rzeczywiste opóźnienia. Dodaj @patch(\".time.sleep\").", "ru": "time.sleep вызвано в тесте '{test}' без @patch — это вызывает реальные задержки. Добавьте @patch(\".time.sleep\").", - "zh": "time.sleep 在测试 '{test}' 中被调用但没有 @patch — 这会导致真实的挂钟延迟。请添加 @patch(\".time.sleep\")。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "time.sleep 在测试 '{test}' 中被调用但没有 @patch — 这会导致真实的挂钟延迟。请添加 @patch(\".time.sleep\")。" }, "tofu command failed in {dir}: {error}": { "bg": "командата tofu не успя в {dir}: {error}", @@ -5045,9 +4085,7 @@ "en": "tofu command failed in {dir}: {error}", "pl": "polecenie tofu nie powiodło się w {dir}: {error}", "ru": "команда tofu не удалась в {dir}: {error}", - "zh": "tofu 命令在 {dir} 中失败: {error}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "tofu 命令在 {dir} 中失败: {error}" }, "unknown": { "bg": "неизвестен", @@ -5055,9 +4093,7 @@ "en": "unknown", "pl": "nieznany", "ru": "неизвестно", - "zh": "未知", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "未知" }, "{call} called in test '{test}' without @patch — this spawns a real subprocess. Add @patch(\".subprocess.run\") or patch the calling function.": { "bg": "{call} извикано в тест '{test}' без @patch — това стартира реален subprocess. Добавете @patch(\".subprocess.run\") или patch-нете извикващата функция.", @@ -5065,9 +4101,7 @@ "en": "{call} called in test '{test}' without @patch — this spawns a real subprocess. Add @patch(\".subprocess.run\") or patch the calling function.", "pl": "{call} wywołane w teście '{test}' bez @patch — to uruchamia rzeczywisty subprocess. Dodaj @patch(\".subprocess.run\") lub patchuj wywołującą funkcję.", "ru": "{call} вызвано в тесте '{test}' без @patch — это запускает реальный subprocess. Добавьте @patch(\".subprocess.run\") или patch вызывающую функцию.", - "zh": "{call} 在测试 '{test}' 中被调用但没有 @patch — 这会启动真实的子进程。请添加 @patch(\".subprocess.run\") 或 patch 调用函数。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "{call} 在测试 '{test}' 中被调用但没有 @patch — 这会启动真实的子进程。请添加 @patch(\".subprocess.run\") 或 patch 调用函数。" }, "{env} is not set. Set it in your .env file or pass it as an environment variable.": { "bg": "{env} не е зададен. Задайте го във вашия .env файл или го подайте като променлива на средата.", @@ -5075,9 +4109,7 @@ "en": "{env} is not set. Set it in your .env file or pass it as an environment variable.", "pl": "{env} nie jest ustawiony. Ustaw go w pliku .env lub przekaż jako zmienną środowiskową.", "ru": "{env} не задан. Установите его в файле .env или передайте как переменную окружения.", - "zh": "{env} 未设置。请在 .env 文件中设置或作为环境变量传递。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "{env} 未设置。请在 .env 文件中设置或作为环境变量传递。" }, "{env} is not set. Set it in your .env file.": { "bg": "{env} не е зададен. Задайте го във вашия .env файл.", @@ -5085,19 +4117,15 @@ "en": "{env} is not set. Set it in your .env file.", "pl": "{env} nie jest ustawiony. Ustaw go w pliku .env.", "ru": "{env} не задан. Установите его в файле .env.", - "zh": "{env} 未设置。请在 .env 文件中设置。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "{env} 未设置。请在 .env 文件中设置。" }, "{file} already exists. Use --force to overwrite.": { - "bg": "{file} already exists. Use --force to overwrite.", - "de": "{file} already exists. Use --force to overwrite.", + "bg": "{file} вече съществува. Използвайте --force за презаписване.", + "de": "{file} existiert bereits. Mit --force überschreiben.", "en": "{file} already exists. Use --force to overwrite.", "pl": "{file} już istnieje. Użyj --force, aby nadpisać.", - "ru": "{file} already exists. Use --force to overwrite.", - "zh": "{file} already exists. Use --force to overwrite.", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "ru": "{file} уже существует. Используйте --force для перезаписи.", + "zh": "{file} 已存在。使用 --force 覆盖。" }, "{func} called in test '{test}' without @patch — this function {desc}. Add @patch(\".{func}\").": { "bg": "{func} извикано в тест '{test}' без @patch — тази функция {desc}. Добавете @patch(\".{func}\").", @@ -5105,9 +4133,7 @@ "en": "{func} called in test '{test}' without @patch — this function {desc}. Add @patch(\".{func}\").", "pl": "{func} wywołane w teście '{test}' bez @patch — ta funkcja {desc}. Dodaj @patch(\".{func}\").", "ru": "{func} вызвано в тесте '{test}' без @patch — эта функция {desc}. Добавьте @patch(\".{func}\").", - "zh": "{func} 在测试 '{test}' 中被调用但没有 @patch — 此函数 {desc}。请添加 @patch(\".{func}\")。", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "{func} 在测试 '{test}' 中被调用但没有 @patch — 此函数 {desc}。请添加 @patch(\".{func}\")。" }, "{level}: {tool} not found.{hint}": { "bg": "{level}: {tool} не е намерен.{hint}", @@ -5115,9 +4141,7 @@ "en": "{level}: {tool} not found.{hint}", "pl": "{level}: {tool} nie znaleziono.{hint}", "ru": "{level}: {tool} не найден.{hint}", - "zh": "{level}: 未找到 {tool}。{hint}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" + "zh": "{level}: 未找到 {tool}。{hint}" }, "{separator}": { "bg": "{separator}", @@ -5125,40 +4149,6 @@ "en": "{separator}", "pl": "{separator}", "ru": "{separator}", - "zh": "{separator}", - "PR number for label check": "PR number for label check", - "Repo (owner/name) for label check": "Repo (owner/name) for label check" - }, - "PR number for label check": { - "bg": "PR number for label check", - "de": "PR number for label check", - "en": "PR number for label check", - "pl": "PR number for label check", - "ru": "PR number for label check", - "zh": "PR number for label check" - }, - "Repo (owner/name) for label check": { - "bg": "Repo (owner/name) for label check", - "de": "Repo (owner/name) for label check", - "en": "Repo (owner/name) for label check", - "pl": "Repo (owner/name) for label check", - "ru": "Repo (owner/name) for label check", - "zh": "Repo (owner/name) for label check" - }, - "PR has 'refactoring' label — size check bypassed.": { - "bg": "PR has 'refactoring' label — size check bypassed.", - "de": "PR has 'refactoring' label — size check bypassed.", - "en": "PR has 'refactoring' label — size check bypassed.", - "pl": "PR has 'refactoring' label — size check bypassed.", - "ru": "PR has 'refactoring' label — size check bypassed.", - "zh": "PR has 'refactoring' label — size check bypassed." - }, - " HTTP 500 from registry, retrying in {wait:.0f}s (attempt {attempt}/5)...": { - "en": "HTTP 500 from registry, retrying in {wait:.0f}s (attempt {attempt}/5)...", - "bg": " HTTP 500 от регистъра, повторен опит след {wait:.0f}с (опит {attempt}/5)...", - "de": " HTTP 500 vom Registry, Wiederholung in {wait:.0f}s (Versuch {attempt}/5)...", - "pl": " HTTP 500 z rejestru, ponawianie za {wait:.0f}s (próba {attempt}/5)...", - "ru": " HTTP 500 от реестра, повтор через {wait:.0f}с (попытка {attempt}/5)...", - "zh": " 注册表返回 HTTP 500,{wait:.0f}秒后重试(第{attempt}/5次尝试)..." + "zh": "{separator}" } } diff --git a/tests/unit/test_api_clients.py b/tests/unit/test_api_clients.py index 136b483..75756cc 100644 --- a/tests/unit/test_api_clients.py +++ b/tests/unit/test_api_clients.py @@ -923,6 +923,12 @@ class TestGiteaClientActions: ) def test_get_repo_variable_returns_value(self) -> None: + client = GiteaClient("https://git.example.com", "tok", "owner", "repo") + client._session.request = MagicMock(return_value=_mock_response({"data": "v0.28.1"})) + result = client.get_repo_variable("PRODUCTION_DEPLOY_TAG") + assert result == "v0.28.1" + + def test_get_repo_variable_falls_back_to_value(self) -> None: client = GiteaClient("https://git.example.com", "tok", "owner", "repo") client._session.request = MagicMock(return_value=_mock_response({"value": "v0.28.1"})) result = client.get_repo_variable("PRODUCTION_DEPLOY_TAG") diff --git a/tests/unit/test_nightly_gate.py b/tests/unit/test_nightly_gate.py index 255acd8..5b30296 100644 --- a/tests/unit/test_nightly_gate.py +++ b/tests/unit/test_nightly_gate.py @@ -71,6 +71,17 @@ class TestCli: assert result.exit_code != 0 assert "blocked" in result.output.lower() + @patch("devx.ci.nightly_gate.GiteaClient") + @patch("devx.ci.nightly_gate.get_ci_token") + def test_check_unknown_status_blocks_deploy(self, mock_token: MagicMock, mock_client_cls: MagicMock) -> None: + mock_token.return_value = "fake-token" + mock_client = mock_client_cls.return_value + mock_client.get_repo_variable.return_value = "garbage-value" + runner = CliRunner() + result = runner.invoke(cli, ["--repo", "oblachno/infra", "--action", "check"]) + assert result.exit_code != 0 + assert "fail closed" in result.output.lower() + @patch("devx.ci.nightly_gate.GiteaClient") @patch("devx.ci.nightly_gate.get_ci_token") def test_set_passed(self, mock_token: MagicMock, mock_client_cls: MagicMock) -> None: