Files
Xray_bash_onekey/.github/workflows/i18n.yml
T
2025-01-29 23:45:21 +08:00

120 lines
3.5 KiB
YAML

name: Update Translations
on:
push:
paths:
- 'install.sh'
- 'fail2ban_manager.sh'
- 'file_manager.sh'
- 'translate.py'
branches:
- main
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
update-translations:
runs-on: ubuntu-latest
steps:
- name: Check running workflows
uses: styfle/cancel-workflow-action@0.12.1
with:
access_token: ${{ github.token }}
- uses: actions/checkout@v4
with:
persist-credentials: true
- name: Restore translation cache
id: cache-translations
uses: actions/cache@v3
with:
path: po/cache_*.json
key: ${{ runner.os }}-translations-${{ hashFiles('po/*.po') }}
restore-keys: |
${{ runner.os }}-translations-
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y gettext python3 python3-pip i18nspector
pip3 install googletrans-py langdetect
- name: Cache Python dependencies
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-googletrans-py-langdetect
restore-keys: |
${{ runner.os }}-pip-
- name: Setup directories
run: |
mkdir -p po
mkdir -p languages/{en,fa,ru,zh_CN,ko}/LC_MESSAGES
- name: Extract strings from specified scripts
run: |
echo "install.sh" > po/POTFILES.in
echo "fail2ban_manager.sh" >> po/POTFILES.in
echo "file_manager.sh" >> po/POTFILES.in
xgettext \
--files-from=po/POTFILES.in \
--from-code=UTF-8 \
--language=Shell \
--keyword=gettext \
--package-name=xray_install \
--package-version=1.0 \
--msgid-bugs-address=https://github.com/hello-yunshu/Xray_bash_onekey/issues \
--copyright-holder="yunshu" \
--output=po/xray_install.pot
- name: Update/Create PO files
run: |
rm -f po/*.po
for lang in zh_CN en fa ru ko; do
msginit --no-translator --locale=$lang --input=po/xray_install.pot --output=po/$lang.po
done
- name: Auto translate
run: python3 translate.py
- name: Compile MO files
run: |
for lang in zh_CN en fa ru ko; do
msgfmt --check -v --statistics -o languages/${lang}/LC_MESSAGES/xray_install.mo po/${lang}.po
done
- name: Run i18nspector checks on PO files
run: |
i18nspector check po/
- name: Run i18nspector checks on MO files
run: |
for lang in zh_CN en fa ru ko; do
i18nspector check-binary languages/${lang}/LC_MESSAGES/xray_install.mo
done
- name: Save translation cache
if: always()
uses: actions/cache@v3
with:
path: po/cache_*.json
key: ${{ runner.os }}-translations-${{ hashFiles('po/*.po') }}
- name: Pull changes
run: |
git pull origin main
- name: Commit changes
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add po/ languages/
git commit -m "Update translations for all languages [$(date +%Y-%m-%d)]" || echo "No changes to commit"
git push