From dc0a470c34c76d990690a15f6590387ebdb3ee93 Mon Sep 17 00:00:00 2001 From: Sebastian Pipping Date: Thu, 3 Aug 2023 17:16:06 +0200 Subject: [PATCH] Make GitHub Actions check translation files (#534) * validate_po.py: Fix typo "varialbes" * validate_po.py: Exit with code 1 on error * validate_po.py: Process locales in alphabetical order * validate_po.py: Report on progress * Make GitHub Actions check translation files --- .github/workflows/translations.yml | 31 ++++++++++++++++++++++++++++++ validate_po.py | 15 +++++++++++---- 2 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/translations.yml diff --git a/.github/workflows/translations.yml b/.github/workflows/translations.yml new file mode 100644 index 0000000..0a1cde1 --- /dev/null +++ b/.github/workflows/translations.yml @@ -0,0 +1,31 @@ +name: Check translations + +# Drop permissions to minimum for security +permissions: + contents: read + +on: + pull_request: + push: + workflow_dispatch: + +jobs: + check_translations: + name: Check translations + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up Python 3.11 + uses: actions/setup-python@v4 + with: + python-version: 3.11 + + - name: Install runtime dependencies + run: | + python3 -m pip install --upgrade pip setuptools wheel + python3 -m pip install polib + + - name: Check translations + run: | + python3 validate_po.py diff --git a/validate_po.py b/validate_po.py index 7865a6d..f37150a 100644 --- a/validate_po.py +++ b/validate_po.py @@ -19,17 +19,24 @@ import os import polib +import sys -def validate_po(locale, path): +def validate_po(locale: str, path: str) -> bool: + success = True po = polib.pofile(path) for entry in po: if entry.msgstr and (entry.msgid.count("%") != entry.msgstr.count("%")): - print("Number of varialbes mismatched in " + locale) + print("Number of variables mismatched in " + locale) print(entry.msgid + " -> " + entry.msgstr) print() + success = False + return success +success = True locales = os.listdir('safeeyes/config/locale') -for locale in locales: +for locale in sorted(locales): path = os.path.join('safeeyes/config/locale', locale, "LC_MESSAGES/safeeyes.po") if os.path.isfile(path): - validate_po(locale, path) \ No newline at end of file + print('Validating translation %s...' % path) + success = validate_po(locale, path) and success +sys.exit(0 if success else 1)