GitLab Translation Management
Connect a GitLab project to IntlPull, import source strings from your repository, and export reviewed translations as merge requests. The workflow is built for protected branches, code review, and CI/CD teams that want localization to behave like normal software delivery.
Merge request first
Exports create reviewable MRs by default.
Webhook auto-pull
Push events keep IntlPull in sync.
Scoped tokens
Project access tokens keep blast radius low.
Setup
- Create a GitLab project access token with
apiscope for the repository you want to sync. - Open Project dashboard > Integrations > GitLab, validate the token, and select the GitLab project.
- Choose the locale base path and file format. Keep merge request mode enabled for protected branches.
- Copy the generated webhook URL and secret into GitLab Settings > Webhooks.
Webhook Configuration
URL: https://api.intlpull.com/api/v1/webhooks/gitlabSecret token: generated inside Project > Integrations > GitLabEvents:- Push events- Merge request events
File Structure
- Supported formats: JSON, YAML, XLIFF, PO, CSV, Android XML, iOS strings, ARB, RESX, and TypeScript.
- Nested files such as
locales/es/auth.jsonare imported into matching IntlPull namespaces. - Export preview shows the files a merge request will update before you push translations back to GitLab.
GitLab CI Guardrail
Add a pipeline job when you want merge requests to fail before missing or invalid translations land in the default branch.
# .gitlab-ci.ymlstages:- i18n- testi18n-check:stage: i18nimage: node:20rules:- if: $CI_PIPELINE_SOURCE == "merge_request_event"- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCHscript:- npx @intlpullhq/cli validate --format json- npx @intlpullhq/cli missing --fail-on-missingartifacts:when: alwayspaths:- intlpull-report.json
Why This Beats a Script-Only Workflow
A pure pipeline script still leaves teams managing token variables, webhook setup, conflict policy, export previews, and translation review outside the product. IntlPull keeps that workflow in one audited integration while still returning changes through GitLab merge requests.