| .. | ||
| action.yml | ||
| README.md | ||
i18n-sync
Fetches the latest translations from i18n.schmalz.com, commits them to a chore/i18n branch, and opens a pull request against the destination branch.
Inputs
| Input | Required | Default | Description |
|---|---|---|---|
i18n-application |
Yes | — | Application key in i18n.schmalz.com (e.g. calculator) |
locales-folder |
No | locales |
Path to the locales directory relative to the repository root |
format-folder |
No | "" |
Directory containing the package.json whose format script should be run after downloading translations. Leave empty to skip formatting. |
format-script |
No | format |
pnpm script name to run for formatting (e.g. format, format:fix) |
jfrog-token |
No | "" |
JFrog npm auth token (required when format-folder is set) |
forgejo-token |
Yes | — | Forgejo token with contents:write and pull-requests:write access |
destination-branch |
No | dev |
Target branch for the pull request |
Usage
Minimal — no formatting:
- uses: https://schmalz-git.git.onstackit.cloud/schmalz/shared-actions/i18n-sync@i18n-sync-v1
with:
i18n-application: my-app
forgejo-token: ${{ secrets.FORGEJO_I18N_UPDATE_TOKEN }}
With formatting after download:
- uses: https://schmalz-git.git.onstackit.cloud/schmalz/shared-actions/i18n-sync@i18n-sync-v1
with:
i18n-application: my-app
locales-folder: frontend/locales
format-folder: frontend
jfrog-token: ${{ secrets.JFROG_TOKEN }}
forgejo-token: ${{ secrets.FORGEJO_I18N_UPDATE_TOKEN }}
Notes
- The action fails fast if the
chore/i18nbranch already exists, indicating a previous update is still pending review. - If no translation changes are detected after downloading, the action exits cleanly without creating a branch or PR.
- Deleted languages (files removed from i18n.schmalz.com) are also staged for removal via
git add --all. jqis installed automatically if not present on the runner.- The
forgejo-tokenmust belong to a user or bot withcontents:writeandpull-requests:writepermissions on the repository.