- preview source uploads on pull requests;
- push merged source files to Hyperlocalise;
- pull reviewed translations into a separate branch; and
- test the exact files that ship.
Prerequisites
You need:- a Hyperlocalise project with
en-USas the source locale; fr-FRandde-DEas target locales;- an organization API key with file read and write permissions;
- the project ID from Project settings → Connect CLI & CI; and
- permission to add GitHub Actions workflows and secrets.
1. Map repository files
This example keeps product copy and release notes in separate buckets:i18n.yml:
2. Add repository secrets
In GitHub, open Settings → Secrets and variables → Actions. Add:HYPERLOCALISE_API_KEYHYPERLOCALISE_PROJECT_ID
localisation when production sync requires approval.
3. Preview source changes on pull requests
Create.github/workflows/localise.yml:
4. Push sources after merge
Add this job to the same workflow:sync push uploads source files only. It does not start a translation job. In Cloud, add a Source upload automation or create a request after the upload.
5. Review and approve in Cloud
Open the project after the source job completes:- Confirm the new source versions under Files.
- Start generation through your automation or New Request.
- Open Content Editor.
- Review terminology, placeholders, formatting, and product context.
- Approve the target translations.
6. Pull translations into a pull request
Add a manual pull job:hl check --quiet fails on errors such as missing translations, placeholder mismatches, and malformed ICU. Warning-only findings do not block the pull.
For production workflows, pin third-party actions to immutable commit SHAs according to your dependency policy.
7. Test what will ship
Require your application tests on the translation pull request. Check:- every target file exists;
- placeholders match the source;
- translated UI fits supported layouts;
- links and Markdown structure remain valid;
- product copy and release notes use the same terminology; and
- the build imports the files changed by the pull.
Troubleshooting
The push job cannot authenticate
Confirm both environment variables exist in the selected GitHub environment. Protected environments may wait for approval before exposing secrets.Pull creates no changes
Confirm translations exist in the project selected byHYPERLOCALISE_PROJECT_ID. Then run hl sync pull --dry-run and check the target paths in i18n.yml.
A pull request reports missing translations
Runhl check after sync pull, not on a source-only feature branch that intentionally precedes translation. Keep source validation and translation validation as separate gates.

