Skip to content

Commit 2dfedfb

Browse files
committed
Add a job to automatically update translations
1 parent 50d6da3 commit 2dfedfb

File tree

2 files changed

+89
-0
lines changed

2 files changed

+89
-0
lines changed

.github/list_languages

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/usr/bin/env python3
2+
3+
import argparse
4+
import json
5+
import os
6+
from pathlib import Path
7+
8+
9+
def parse_langs(langs, include_beta):
10+
for line in langs.readlines():
11+
description = line[3:-7]
12+
code = line[-5:-3]
13+
14+
if code != 'en' and (include_beta or 'beta' not in description):
15+
yield code, description
16+
17+
def main():
18+
parser = argparse.ArgumentParser()
19+
parser.add_argument('--include-beta', help='Include beta languages', default='false',
20+
choices=('true', 'false'))
21+
parser.add_argument('--langs-file', help='LANGS.md to use',
22+
type=argparse.FileType('r', encoding='UTF-8'),
23+
default=(Path(__file__).absolute().parent.parent / 'LANGS.md').as_posix())
24+
args = parser.parse_args()
25+
26+
languages = dict(parse_langs(args.langs_file, args.include_beta == 'true'))
27+
28+
if 'GITHUB_ACTION' in os.environ:
29+
print(f'::set-output name=languages::{json.dumps(list(languages.keys()))}')
30+
for code, language in languages.items():
31+
print(f'{language} ({code})')
32+
33+
34+
if __name__ == '__main__':
35+
main()

.github/workflows/translations.yml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
name: Update translations
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
include_beta:
7+
type: boolean
8+
default: false
9+
description: Include beta languages
10+
11+
env:
12+
GIT_AUTHOR_NAME: Django Girls Automation
13+
GIT_AUTHOR_EMAIL: [email protected]
14+
15+
jobs:
16+
list_languages:
17+
name: List languages
18+
runs-on: ubuntu-latest
19+
outputs:
20+
languages: ${{ steps.set_list.outputs.languages }}
21+
steps:
22+
- name: Checkout
23+
uses: actions/checkout@v2
24+
- name: Set the language list
25+
id: set_list
26+
run: ./.github/list_languages --include-beta ${{ inputs.include_beta }}
27+
28+
update_language:
29+
name: 'Update ${{ matrix.language }} translations from Crowdin'
30+
needs: list_languages
31+
if: ${{ needs.list_languages.outputs.languages != '[]' }}
32+
runs-on: ubuntu-latest
33+
strategy:
34+
fail-fast: false
35+
matrix:
36+
language: ${{ fromJson(needs.list_languages.outputs.languages) }}
37+
steps:
38+
- name: Checkout
39+
uses: actions/checkout@v2
40+
- name: Update language
41+
run: |
42+
wget https://crowdin.com/backend/download/project/django-girls-tutorial/${{ matrix.language }}.zip
43+
unzip ${{ matrix.language }}.zip
44+
find ${{ matrix.language }} -name '*.md' -delete
45+
rsync -av master/${{ matrix.language }}*/* ${{ matrix.language }}/
46+
rm -rf ${{ matrix.language }}.zip master
47+
- name: Open a PR
48+
uses: peter-evans/create-pull-request@v3
49+
with:
50+
commit-message: "Update ${{ matrix.language }} translations from Crowdin"
51+
branch: "update_translations/${{ matrix.language }}"
52+
title: "Update ${{ matrix.language }} translations from Crowdin"
53+
body: ''
54+
delete-branch: true

0 commit comments

Comments
 (0)