Docs · Features

Connectors

Push-model companions that translate content in place in external systems, such as Airtable, Jira, Strapi, Contentful, Shopify, HubSpot, Akeneo and WordPress: content is pulled in, translated through the ordinary pipeline, and each language is written back as the source system's own per-locale version. An admin can enable or disable individual connector kinds per install.

What it does#

Most translatable content does not live in uploaded files, it lives in Airtable, Jira, a CMS, a help center. Connectors reach into those systems, translate content in place, and write each language back as the source system's own per-locale version, either on a one-click "Translate now" or on a signed webhook when content changes. There are 28 connector kinds, from headless CMSs and help centers to PIMs, code hosting and Microsoft 365 or Google Drive files; the Connector index lists each one and whether it is live-verified or beta.

Repositories. The GitHub, GitLab and Bitbucket connectors localize resource files in a repository (JSON, gettext PO, or a resource format with a key view such as .properties, .strings or YAML). The strings go through a key-based project, and the translated files come back as one commit on a working branch with one pull request (GitLab: merge request) per run. The base branch is never written, and the request is never merged for you. A held or blank string keeps the value already in the repository.

The differentiator is source-context harvest: when a connector ingests content, it captures the source system's own metadata, the article title, its section, its labels, directly into the translation context, so the model translates knowing what kind of content it is looking at. That context is allowlisted, sanitized, and layered below anything you set explicitly.

A connector kind can be individually enabled or disabled per install without touching the connections themselves. The Connectors section overall is core and always on; only individual kinds toggle.

On a Jira connection, anything that runs the saved query or releases the whole pending set, including turning on a sync schedule, needs an administrator on every surface. Linguists and managers can still translate up to 10 named issues and turn a schedule off.

Scope fields are admin-only. Once a connection holds a stored credential, only an administrator can change the fields that decide what that credential reaches: the Jira JQL query, the Confluence space key and CQL query, the ServiceNow knowledge base and category, and the Notion parent page. Clearing one counts as a change. Creating a connection, where you supply the credential yourself, stays open to non-admins.

Errors you can read safely. When the other system answers with an error, the run message quotes it as vendor text: "...": shortened to its error code and message, stripped of markup, line breaks, invisible characters and anything that looks like a credential, and capped at 160 characters. The same text shows on the connection page, in the CLI, in API replies and in MCP results, where connector results also say requires_human_publish: true, so an AI agent must ask you before publishing anything in the other system.

Getting started#

Pick a kind on the Connectors page and fill in its fields, or create one from the CLI:

connector create --kind airtable --name "Support base" \
  --config base_id=... --secret api_token=...

Then translate the matched content:

connector sync 5

That pulls the content, translates it, and pushes each language back in one step. You can also wire a webhook so the system is notified automatically when content changes, or set a schedule, instead of running it by hand.

Works with#

  • Documents: a connector pulls external content into an ordinary document, so parsing, the editor, QA flags and export all apply exactly as they would to an uploaded file.
  • Workflows: translating a connection's content runs through the normal machine-translation workflow, with the same run view and spend safety as any other translation.
  • Glossaries: harvested source metadata enriches the translation context alongside glossary and content-type context.
  • Engines: a connection can override the provider for its content; otherwise it uses the project's engine.

Current limits#

Current limits

Disabling a connector kind removes it entirely from that install: it disappears from the Connectors page, its routes stop responding, and no new connections of that kind can be created. Re-enabling it restores everything, no data is lost.

A kind can independently be retired from new connections pending a rebuild, while existing connections of that kind keep working through every action. No kind is retired in the current release.

Beta connectors have passed the full automated test suite but not yet a round trip against a live account; see the Connector index.

Source-context harvest captures only a small, allowlisted set of fields per connector, never the raw record.

OAuth setup happens in the web UI; token-based connections are fully manageable from the CLI.

One connector run fetches at most 50 million characters of source records by default. A run over that budget is refused whole, with the reason on the run and the connection, and nothing is stored or translated. Raise the setting on a large host or narrow the connection's scope.