Skip to content

Commit 513c029

Browse files
authored
Merge pull request #1732 from guobao2333/develop
Auto Approve Crowdin Translations CI
2 parents c5e18af + 22363a7 commit 513c029

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: Auto Approve Crowdin Translations
2+
3+
on:
4+
release:
5+
types: [published]
6+
workflow_dispatch:
7+
8+
jobs:
9+
approve-crowdin:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- uses: actions/checkout@v4
13+
14+
- uses: actions/setup-node@v4
15+
with:
16+
node-version: '18'
17+
18+
- name: Install Crowdin CLI
19+
run: npm install -g @crowdin/cli
20+
21+
- name: Approve top-voted translations for all languages
22+
env:
23+
CROWDIN_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
24+
CROWDIN_PROJECT_ID: ${{ secrets.CROWDIN_PROJECT_ID }}
25+
run: |
26+
set -e
27+
echo "Start automatic approval Crowdin Translation..."
28+
language_ids=$(crowdin api \
29+
--method GET \
30+
--path /projects/$CROWDIN_PROJECT_ID/languages \
31+
--plain \
32+
| jq -r '.data[].data.languageId')
33+
34+
string_ids=$(crowdin api \
35+
--method GET \
36+
--path /projects/$CROWDIN_PROJECT_ID/strings \
37+
--plain \
38+
| jq -r '.data[].data.id')
39+
40+
for lang in $language_ids; do
41+
echo "Processing language $lang"
42+
for sid in $string_ids; do
43+
best=$(crowdin api \
44+
--method GET \
45+
--path /projects/$CROWDIN_PROJECT_ID/strings/$sid/translations \
46+
--plain \
47+
| jq -r "
48+
.data
49+
| map(select(.data.languageId==\"$lang\"))
50+
| sort_by(-.data.votes)[-1]
51+
| select(.data.votes > 0)
52+
| .data.id
53+
")
54+
if [ -n "$best" ]; then
55+
echo " → Approved translation $best"
56+
crowdin api \
57+
--method PATCH \
58+
--path /projects/$CROWDIN_PROJECT_ID/translations/$best \
59+
--body '{\"approved\": true}'
60+
fi
61+
done
62+
done

0 commit comments

Comments
 (0)