## Summary This PR fixes translation QA issues and adds automation to prevent future issues. ### Translation Fixes - Fixed **escaped Unicode sequences** in translations (e.g., `\u62db\u5f85` → `招待`) - Removed **corrupted control characters** from .po files (null bytes, invalid characters) - Fixed **missing/incorrect placeholders** in various languages - Deleted **35 problematic translations** via Crowdin API that had variable mismatches ### New Scripts (in `packages/twenty-utils/`) - `fix-crowdin-translations.ts` - Auto-fixes encoding issues and syncs to Crowdin - `fix-qa-issues.ts` - Fixes specific QA issues via Crowdin API - `translation-qa-report.ts` - Generates weekly QA report from Crowdin API ### New Workflow - `i18n-qa-report.yaml` - Weekly workflow that creates a PR with translation QA issues for review ### Other Changes - Moved GitHub Actions from `.github/workflows/actions/` to `.github/actions/` - Fixed `date-utils.ts` to avoid nested `t` macros in plural expressions (root cause of confusing placeholders) ### QA Status After Fixes | Category | Count | Status | |----------|-------|--------| | variables | 0 ✅ | Fixed | | tags | 1 | Minor | | empty | 0 ✅ | Fixed | | spaces | 127 | Low priority | | numbers | 246 | Locale-specific | | special_symbols | 268 | Locale-specific |
60 lines
1.7 KiB
YAML
60 lines
1.7 KiB
YAML
name: "Release: create"
|
|
|
|
permissions:
|
|
contents: read
|
|
pull-requests: write
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
version:
|
|
required: true
|
|
description: Version to release, without the v (e.g. 1.2.3)
|
|
ref:
|
|
default: main
|
|
description: Ref to start the release from (e.g. main, sha)
|
|
create_release:
|
|
type: boolean
|
|
default: true
|
|
description: Create a release after merging the PR
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash --noprofile --norc -euo pipefail {0}
|
|
|
|
jobs:
|
|
create_pr:
|
|
timeout-minutes: 10
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.inputs.ref }}
|
|
|
|
- name: Sanitize version
|
|
id: sanitize
|
|
env:
|
|
RAW_VERSION: ${{ github.event.inputs.version }}
|
|
run: |
|
|
VERSION="${RAW_VERSION#v}"
|
|
printf 'version=%s\n' "$VERSION" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Update versions
|
|
env:
|
|
VERSION: ${{ steps.sanitize.outputs.version }}
|
|
run: |
|
|
printf '%s\n' "$VERSION" > version.txt
|
|
|
|
- name: Create Pull Request
|
|
uses: peter-evans/create-pull-request@v6
|
|
with:
|
|
branch: release/${{ steps.sanitize.outputs.version }}
|
|
commit-message: "chore: release v${{ steps.sanitize.outputs.version }}"
|
|
committer: Github Action Deploy <[email protected]>
|
|
author: Github Action Deploy <[email protected]>
|
|
title: Release v${{ steps.sanitize.outputs.version }}
|
|
labels: |
|
|
release
|
|
${{ github.event.inputs.create_release == true && 'create_release' || '' }}
|