Files
Xray_bash_onekey/.github/workflows/i18n.yml
T
yunshu a897edc84f Add French language support and update docs
Introduces French (fr) as a supported language across the workflow, installation script, translation utility, and documentation. Updates language selection menus, README files, and adds a new French README. Also bumps shell_version to 2.6.1 and improves language selection logic.

Update translate.py

Update translate.py

Update README instructions and links in EN/FR

Added a link to the background story of 'idleleo' in both English and French README files. Updated the Simplified Chinese link in the French README and replaced the Telegram group link with a clickable version.

Update README.md

Update Backstory links in README translations

Changed the 'idleleo' background story links in the main and translated README files to point to specific anchor sections for improved navigation.
2025-07-19 05:08:26 +08:00

147 lines
4.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 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,fr}/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 fr; 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 fr; 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 fr; 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 fr; 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