Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
60a3782
Feature/winui list form (#3398)
arnaud4d Sep 1, 2026
a3fdb43
New Crowdin updates (#3400)
arnaud4d Sep 2, 2026
67c906b
New Crowdin updates (#3404)
arnaud4d Sep 3, 2026
1b54bfa
New Crowdin updates (#3415)
arnaud4d Sep 7, 2026
067808c
New Crowdin updates (#3416)
arnaud4d Sep 7, 2026
57fb489
New Crowdin updates (#3418)
arnaud4d Sep 10, 2026
9d02cf2
New Crowdin updates (#3425)
arnaud4d Sep 14, 2026
0c243a3
New Crowdin updates (#3429)
arnaud4d Sep 16, 2026
97381bb
fix zip issues
arnaud4d Sep 21, 2026
a468b74
Feature/custom button (#3437)
arnaud4d Sep 24, 2026
cd454d3
New Crowdin updates (#3451)
arnaud4d Sep 25, 2026
5f31ebb
New Crowdin updates (#3456)
arnaud4d Sep 30, 2026
9b47e73
New Crowdin updates (#3457)
arnaud4d Oct 1, 2026
3abf83c
fix background-fill issue
arnaud4d Oct 1, 2026
c35dff6
New Crowdin updates (#3458)
arnaud4d Oct 1, 2026
0d07363
New Crowdin updates (#3460)
arnaud4d Oct 5, 2026
622699c
New Crowdin updates (#3464)
arnaud4d Oct 6, 2026
afde67e
JSON file renamed and example updated (#3466)
mouna-elmaazouzi Oct 6, 2026
fe64be4
[i18n-bot] Automatic pt translations for 1ef3af08a153ff5d679babb60bf4…
github-actions[bot] Oct 6, 2026
a11b676
New Crowdin updates (#3471)
arnaud4d Oct 7, 2026
c93453c
created 21 R5, removed 21 R3
arnaud4d Oct 7, 2026
c6f335c
blog link fixed (#3472)
mouna-elmaazouzi Oct 7, 2026
349e184
dataclassclass.md Japanese
arnaud4d Oct 8, 2026
4bda907
dataclassclass.md French
arnaud4d Oct 8, 2026
99994bb
dataclassclass.md Japanese
arnaud4d Oct 8, 2026
0c057ca
dataclassclass.md Japanese
arnaud4d Oct 8, 2026
dfb3377
properties_backgroundandborder.md Spanish
arnaud4d Oct 8, 2026
3996355
dataclassclass.md French
arnaud4d Oct 8, 2026
fd70fa5
properties_backgroundandborder.md Spanish
arnaud4d Oct 8, 2026
42a982d
dataclassclass.md Japanese
arnaud4d Oct 8, 2026
93d6ff4
quotamanagerclass.md Japanese
arnaud4d Oct 8, 2026
7ed3b7e
[i18n-bot] Automatic pt translations for 48dd7e28c09e22e8809c41591b92…
github-actions[bot] Oct 8, 2026
b1d630b
New Crowdin updates (#3477)
arnaud4d Oct 9, 2026
a47c552
New Crowdin updates (#3484)
arnaud4d Oct 15, 2026
345d21b
Restrict translation job to the doc4d/docs fork (#3485)
Copilot Oct 15, 2026
902997e
added missing link
arnaud4d Oct 16, 2026
d157b66
Feature/border color (#3486)
arnaud4d Oct 16, 2026
965c986
[i18n-bot] Automatic pt translations for d713be3407ef659452f6ee21ac0f…
github-actions[bot] Oct 16, 2026
78d9ab6
[i18n-bot] Automatic pt translations for 9f0beff5e96f503ece1fdadea5aa…
github-actions[bot] Oct 16, 2026
30bf4bd
New Crowdin updates (#3489)
arnaud4d Oct 19, 2026
152b755
many small fixes in properties (#3490)
arnaud4d Oct 20, 2026
08c021e
[i18n-bot] Automatic pt translations for e5bae52c1e060c3def801306e088…
github-actions[bot] Oct 20, 2026
1e7effa
fix default value
arnaud4d Oct 20, 2026
71db753
Delete Portuguese auto-translation branches after merge (#3493)
Copilot Oct 20, 2026
25a7b5f
[i18n-bot] Automatic pt translations for 2e60650859934c25a27373cb860a…
github-actions[bot] Oct 21, 2026
f2e3ea3
report en 21R5 et traductions toutes versions (#3494)
arnaud4d Oct 21, 2026
1446577
fix notes
arnaud4d Oct 21, 2026
b3fd426
Update updates.md
arnaud4d Oct 21, 2026
af5d023
[i18n-bot] Automatic pt translations for 92549f3168c8efc1b968956b2a1c…
github-actions[bot] Oct 21, 2026
baa3f5b
[i18n-bot] Automatic pt translations for 769057ad4938d6ec41f7b50829cf…
github-actions[bot] Oct 21, 2026
eb7b790
[i18n-bot] Automatic pt translations for 53df4ba19dd264be598098815add…
github-actions[bot] Oct 21, 2026
8a36af8
fix 20
arnaud4d Oct 21, 2026
8d3d318
thread safety OBs
arnaud4d Oct 22, 2026
e3da913
fix in index page
arnaud4d Oct 22, 2026
6038369
New Crowdin updates (#3500)
arnaud4d Oct 22, 2026
567ff9d
[i18n-bot] Automatic pt translations for f887bbb865d44b894731dbace2fb…
github-actions[bot] Oct 22, 2026
02e579f
[i18n-bot] Automatic pt translations for ac5af97c033238fb0eb489d149f0…
github-actions[bot] Oct 22, 2026
3c58513
Update dt_time.md
arnaud4d Oct 22, 2026
b84b8a7
[i18n-bot] Automatic pt translations for 15e1fb76540d3b2d3ca1602214df…
github-actions[bot] Oct 22, 2026
d8243e7
[i18n-bot] Automatic pt translations for 364171ce34ea69ea3f429b1e275c…
github-actions[bot] Oct 22, 2026
bb093b5
F-0147 [ai] Show function descriptions from prototype comments in cod…
lribardi Oct 24, 2026
2321882
F-0146 [ai] Provide a native MCP server
lribardi Oct 25, 2026
45b9540
F-0146 [ai] Provide a native MCP server
lribardi Oct 25, 2026
49e681b
New Crowdin updates (#3504)
arnaud4d Oct 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
17 changes: 10 additions & 7 deletions .github/workflows/i18n-auto-translate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,18 @@ concurrency:

jobs:
translate:
# Fork-only guard applies to all runs, including manual dispatch.
# Loop prevention ([i18n-bot] commits) and Crowdin commits/merges (l10n_* branches) are ignored
if: >-
github.event_name == 'workflow_dispatch' || (
!contains(github.event.head_commit.message, '[i18n-bot]') &&
!contains(github.event.head_commit.message, 'l10n_') &&
!contains(github.event.head_commit.message, 'New Crowdin') &&
!contains(github.event.head_commit.message, 'New translations') &&
!contains(github.event.head_commit.author.name, 'crowdin') &&
!contains(github.actor, 'crowdin')
github.repository == 'doc4d/docs' && (
github.event_name == 'workflow_dispatch' || (
!contains(github.event.head_commit.message, '[i18n-bot]') &&
!contains(github.event.head_commit.message, 'l10n_') &&
!contains(github.event.head_commit.message, 'New Crowdin') &&
!contains(github.event.head_commit.message, 'New translations') &&
!contains(github.event.head_commit.author.name, 'crowdin') &&
!contains(github.actor, 'crowdin')
)
)
runs-on: ubuntu-latest
timeout-minutes: 60
Expand Down
83 changes: 83 additions & 0 deletions .github/workflows/i18n-cleanup.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: i18n branch cleanup

on:
pull_request_target:
types: [closed]

permissions: {}

jobs:
cleanup:
if: >-
github.repository == 'doc4d/docs' &&
github.event.pull_request.merged == true &&
github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
contents: write
steps:
# Metadata only: never check out or execute code from the PR.
- name: Delete merged translation branch
env:
GH_TOKEN: ${{ github.token }}
run: |
python3 - <<'PY'
import json
import os
from urllib.error import HTTPError
from urllib.parse import quote
from urllib.request import Request, urlopen

with open(os.environ["GITHUB_EVENT_PATH"]) as event_file:
event = json.load(event_file)
pr = event["pull_request"]
repo = event["repository"]
head = pr["head"]
branch = head["ref"]
prefix = "i18n/auto-pt-"
if (
repo["full_name"] != "doc4d/docs"
or not pr["merged"]
or (head.get("repo") or {}).get("full_name") != repo["full_name"]
or not branch.startswith(prefix)
or len(branch) == len(prefix)
or branch in ("main", repo["default_branch"], pr["base"]["ref"])
):
print("Branch is not eligible for cleanup.")
raise SystemExit(0)

def api(method, path):
request = Request(
f'{os.environ["GITHUB_API_URL"]}/repos/{repo["full_name"]}/{path}',
method=method,
headers={
"Authorization": "Bearer " + os.environ["GH_TOKEN"],
"Accept": "application/vnd.github+json",
"X-GitHub-Api-Version": "2022-11-28",
},
)
with urlopen(request, timeout=30) as response:
body = response.read()
return json.loads(body) if body else None

ref = f"heads/{branch}"
# matching-refs returns [] for a missing branch; API/auth errors still fail.
refs = api("GET", f"git/matching-refs/{quote(ref, safe='')}")
current = next((item for item in refs if item["ref"] == f"refs/{ref}"), None)
if current is None:
print("Branch is already deleted.")
elif current["object"]["sha"] != head["sha"]:
print("Branch tip has changed; preserving it.")
else:
try:
api("DELETE", f"git/refs/{quote(ref, safe='')}")
except HTTPError as error:
# Another cleanup may have deleted the ref after our SHA check.
body = error.read()
if error.code != 422 or json.loads(body).get("message") != "Reference does not exist":
raise
print("Branch is already deleted.")
else:
print("Merged translation branch deleted.")
PY
Loading