name: Upload Translations to POEditor on PR Merge on: pull_request: types: [closed] branches: - develop paths: - "client/src/locales/**" jobs: upload-translations: # Only run if the PR was merged (not just closed) or manually triggered if: github.event.pull_request.merged == true runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v3 with: fetch-depth: 0 # Fetch all history to get changed files - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: "22" - name: Create package.json for scripts run: | mkdir -p .github/scripts cat > .github/scripts/package.json << EOF { "name": "poeditor-scripts", "version": "1.0.0", "private": true, "type": "module", "dependencies": { "axios": "^1.6.0", "fs-extra": "^11.1.1", "form-data": "^4.0.0" } } EOF - name: Install dependencies run: | cd .github/scripts npm install - name: Get changed locale files id: changed-files if: github.event_name == 'pull_request' run: | # Get base and head commits BASE_SHA=${{ github.event.pull_request.base.sha }} HEAD_SHA=${{ github.event.pull_request.head.sha }} echo "Base SHA: $BASE_SHA" echo "Head SHA: $HEAD_SHA" # Get list of changed files in client/src/locales directory CHANGED_FILES=$(git diff --name-only $BASE_SHA..$HEAD_SHA -- 'client/src/locales/*.json' || git ls-files 'client/src/locales/*.json') if [ -z "$CHANGED_FILES" ]; then echo "No changes detected in locale files" echo "CHANGED_FILES=" >> $GITHUB_ENV else echo "Changed files:" echo "$CHANGED_FILES" echo "CHANGED_FILES<> $GITHUB_ENV echo "$CHANGED_FILES" >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV fi - name: Upload changed translations to POEditor if: env.CHANGED_FILES != '' env: POEDITOR_API: ${{ secrets.POEDITOR_API }} POEDITOR_PROJECT_ID: ${{ secrets.POEDITOR_PROJECT_ID }} run: | # Process each changed file for FILE in $CHANGED_FILES; do if [[ -f "$FILE" ]]; then # Extract language code from filename (e.g., client/src/locales/en.json -> en) FILENAME=$(basename "$FILE") # Special case: map gb.json to en language code if [ "$FILENAME" == "gb.json" ]; then LANG="en" echo "Found gb.json, mapping to language code 'en'" else LANG=$(basename "$FILE" .json) fi echo "Processing $FILE for language $LANG" # Upload to POEditor LANGUAGE=$LANG FILE_PATH=$FILE node .github/scripts/upload-translations.js fi done - name: Notify on success if: success() && env.CHANGED_FILES != '' run: | echo "Successfully uploaded translation files to POEditor." if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then echo "Manual trigger comment: ${{ github.event.inputs.comment }}" fi - name: Notify on no changes if: env.CHANGED_FILES == '' run: | echo "No translation files were found to upload."