Connect Drupal
Import Drupal nodes into transglot over JSON:API and write reviewed translations into each node's existing target-language translation.
| Direction | Two-way |
| Imported | The source-language value of the fields you map, on the content types (node bundles) you choose |
| Written back | Each node's target-language translation, which must already exist. The source language is never written |
| Sync | Sync from CMS |
| Per sync | Up to 2,500 nodes per content type |
| Plan | Starter and above |
Before you start
- Enable the JSON:API and Content Translation modules, and the core HTTP Basic Authentication module.
- Use URL language negotiation with a path prefix per language. transglot addresses each language as
/{language}/jsonapi/…, using your project's language codes, so the path prefixes must match them. - Add the target-language translation to each node you want localized. JSON:API can update a translation but cannot create one.
- Create a Drupal user with JSON:API read and write access to those nodes.
- Your site must be reachable over https at a public address.
Connect
Open your project's settings, choose CMS, and pick Drupal in the CMS list.
| Field | What to enter |
|---|---|
| Drupal site URL | Your site root, for example https://drupal.example.com |
| User & password | The user's credentials as username:password |
| Content types | Node bundle machine names, comma separated, for example article, page |
| Translatable fields | Field machine names, comma separated, for example title, body |
| Publish these locales | The target languages to write back |
Select Connect, then Test connection. The test reads one node of the first content type in your source language.
What gets imported
For each bundle, transglot reads the source-language nodes and imports the mapped fields that hold text. A formatted text field (such as body) is imported from its value. The node's title becomes the description on its keys.
How translations are written back
For each target language, transglot reads the node's existing translation and updates only the mapped fields. A formatted text field keeps its text format and summary; only its value changes. The source-language node is never written.
If the target translation does not exist, that entry fails with a clear error instead of being skipped silently. The rest of the publish continues.
Troubleshooting
The fr translation of article #... does not exist in Drupal. Create it there first (JSON:API can update a translation but not create one).Add the translation in Drupal, then publish again.... the credentials were rejected.The username or password is wrong, HTTP Basic Authentication is not enabled, or the user lacks JSON:API write access.... the endpoint, node or translation was not found, check the base URL and content type.Check Drupal site URL, the bundle names, and that language path prefixes match your project's language codes.... Drupal rejected the request body, check the field mapping.A mapped field cannot take a text value, or does not exist on the bundle.