Content platforms

Connect Drupal

Import Drupal nodes into transglot over JSON:API and write reviewed translations into each node's existing target-language translation.

DirectionTwo-way
ImportedThe source-language value of the fields you map, on the content types (node bundles) you choose
Written backEach node's target-language translation, which must already exist. The source language is never written
SyncSync from CMS
Per syncUp to 2,500 nodes per content type
PlanStarter 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.

FieldWhat to enter
Drupal site URLYour site root, for example https://drupal.example.com
User & passwordThe user's credentials as username:password
Content typesNode bundle machine names, comma separated, for example article, page
Translatable fieldsField machine names, comma separated, for example title, body
Publish these localesThe 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.

On this page