Skip to content

fix path

fix path #120

Workflow file for this run

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 openai
- name: Cache Python dependencies
uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-googletrans-py-langdetect-openai
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
env:
AI_API_KEY: ${{ secrets.AI_API_KEY }}
- name: Compile MO files if necessary
run: |
needs_compile=false
for lang in en fa ru ko; do
if [ ! -f "po/${lang}.po.no-update" ]; then
needs_compile=true
if ! msgfmt --check -v --statistics -o languages/${lang}/LC_MESSAGES/xray_install.mo po/${lang}.po; then
echo "Error in ${lang}.po file:"
cat po/${lang}.po
fi
fi
done
if [ "$needs_compile" = false ]; then
echo "No translations were updated. Skipping MO file compilation."
fi
- name: Run i18nspector checks on PO files
run: |
i18nspector check po/
- name: Run i18nspector checks on MO files if compiled
run: |
for lang in en fa ru ko; do
if [ ! -f "po/${lang}.po.no-update" ] && [ -f "languages/${lang}/LC_MESSAGES/xray_install.mo" ]; then
i18nspector check-binary languages/${lang}/LC_MESSAGES/xray_install.mo
fi
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 if necessary
run: |
needs_commit=false
for lang in en fa ru ko; do
if [ ! -f "po/${lang}.po.no-update" ]; then
needs_commit=true
break
else
rm po/${lang}.po.no-update
fi
done
if [ "$needs_commit" = true ]; then
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
else
echo "No translations were updated. Skipping commit and push."
fi