Connect GitHub
Install the transglot GitHub App so a push to your default branch extracts new strings and comes back as a pull request with the translations.
The transglot GitHub App gives you continuous localization with no CI setup. When you push a change to your source locale file on the default branch, transglot extracts the new strings into your project, translates them, and opens a pull request with the translated files. You review and merge it like any other pull request.
The direction is repository to project to pull request. transglot never commits to your branches: it writes only to its own transglot/sync branch and proposes the change from there.
Requirements
- Plan: Team or above. On a lower plan the GitHub App card offers Upgrade plan instead of Install on GitHub.
- Role: Admin of the transglot workspace, or an Owner of its account.
- On GitHub: permission to install a GitHub App on the account or organization that owns the repository.
- Your files: one source locale file per repository, at a path that contains the locale code, for example
locales/en.json.
What the App can access
On the repositories you grant it, the App asks GitHub for:
| Permission | Why |
|---|---|
| Contents: read and write | Read your source locale file, and write the translated files to the transglot/sync branch |
| Pull requests: read and write | Open and update the translation pull request |
| Metadata: read | Required by GitHub for every App |
The App authenticates as itself, so there is no token for you to create, paste or rotate.
Connect a repository
Install the App
In your workspace, open Integrations and select Install on GitHub on the GitHub App card, then Install on GitHub again on the GitHub App page. GitHub asks which account to install on and which repositories to grant. Grant only the repositories you want to localize.
When GitHub sends you back, transglot confirms "GitHub App connected. Map a repository to a project below."
Choose the repository and project
Under Repositories, pick the Repository and the Project it should feed. Each repository feeds one project.
Describe your files
| Field | What to enter |
|---|---|
| Source path | Where your locale files live, with {locale} in place of the locale code, for example locales/{locale}.json |
| Format | The file format, for example json_nested or android_xml. See file formats |
| Source locale | The locale your team writes in, for example en |
| Target locales (comma-separated, blank = all) | The locales to deliver, for example fr, de, es. Leave it blank to deliver every target language in the project |
| Minimum state | Which translations go into the pull request. Any includes every translation; Human edited or Reviewed leaves out translations that have not reached that state |
Link it
Select Link repository. transglot confirms it with the repository name, for example "acme/web linked.", and the repository appears in the list with its project, last run and pull request.
What happens on a push
- You push to the repository's default branch, and the push changes the source locale file (the Source path with your Source locale filled in).
- transglot extracts the strings from that file into the project. New and changed strings become ordinary keys, so translation memory, the glossary and quality checks apply to them like any other content.
- If the project has automatic translation on, the new strings are translated. A string your team has edited or reviewed is never overwritten by AI.
- When the translation finishes, transglot opens a pull request from the
transglot/syncbranch with one file per target locale, written to the same path pattern. If a transglot pull request is already open, it is updated in place instead of a second one being opened.
Pushes to other branches, and pushes that do not touch the source locale file, do nothing. If nothing new needed translating, or automatic translation is off, no pull request is opened.
Translating new strings uses your plan's monthly AI translation allowance, as it does anywhere else in transglot.
Check what happened
The GitHub App page lists Recent deliveries: every push transglot acted on, with its commit, its pull request and a status.
| Status | Meaning |
|---|---|
| Received | The push matched your source file and extraction started |
| Translating | New strings are being translated; the pull request follows |
| PR opened | A new pull request was opened on transglot/sync |
| PR updated | The open pull request was refreshed with the latest translations |
| Nothing to do | Nothing new to translate, so no pull request. The detail says why, for example "No new source strings to translate." |
| Failed | Something went wrong; the detail gives the reason |
| Blocked | The run was held because of the workspace's account status; the detail says why |
Unlink or uninstall
To stop syncing one repository, select Unlink on its row and confirm. No new pull requests are opened for it; anything already open stays open, and the GitHub App stays installed.
To remove the App entirely, uninstall it from the account or organization's settings on GitHub.
Troubleshooting
The App was installed without access to any repository. Change the installation's repository access on GitHub, then reload the page.
Write the path with {locale} where the locale code goes, for example src/i18n/{locale}.json, not src/i18n/en.json.
A GitHub installation belongs to one transglot workspace. Unlink it there first, or install the App on a different GitHub account.
The install round trip took longer than 15 minutes. Select Install on GitHub again.
The strings were extracted, but the workspace has used its AI translation allowance for this cycle. See usage-based billing.
transglot could not find or read the file at the commit you pushed. Check the Source path, Source locale and Format on the link match the file in the repository.
Someone suspended the App on GitHub. No pull requests open until you resume it in the account or organization's GitHub settings.
The GitHub App cannot be installed from this workspace. Use the GitHub Action instead: it runs the transglot CLI in your workflow with a deploy token.
For a step-by-step diagnosis, see Why is my repository sync not running?.