Translation config options

Experience Workspace uses Google Translate out-of-the-box and requires no configuration. However you can adapt your translation config to select another service and control languages, rollout, conflict handling, and content that must not be translated.

This document explains the configuration options available. For setup instructions, please see the document Set up translation. For ready-to-use examples, please see the document Translation config samples.

Config sheet structure

Localization is controlled by a translation sheet located at {org}/{site}/.da/translate. Each tab controls part of the localization and rollout pipeline.

config tab

The config tab contains key and value rows. Unspecified keys use their defaults.

General service options

Key Description Example
translation.service.name Connector used to send and retrieve content. Defaults to Google. Google, Lionbridge, Smartling, Trados
translation.service.all.env Comma-separated environments shown in project options. The first is the default. stage, prod
translation.service.key.path Optional Admin API source URL of a separate credential sheet. https://admin.da.live/source/{ORG}/{SITE}/.da/translate-keys.json

Environment-specific keys use translation.service.{env}.*, where {env} is an entry such as prod or stage.

Google

Google is the credential-free default. Samples use one prod environment.

Key Description Example
translation.service.{env}.origin Google translation endpoint. https://translate.da.live/google
translation.service.{env}.link Reference URL shown to authors. https://cloud.google.com/translate/docs/overview

Smartling

Smartling requires an account. Samples expose stage and prod.

Key Description Example
translation.service.{env}.origin Smartling proxy endpoint. https://translate.da.live/smartling
translation.service.{env}.link Smartling dashboard URL shown to authors. https://dashboard.smartling.com/app/accounts/{ACCOUNT_ID}/account-jobs/
translation.service.{env}.authEndpoint Authentication endpoint. https://api.smartling.com
translation.service.{env}.accountId Smartling account identifier, used to look up available projects and workflows. {ACCOUNT_ID}
translation.service.{env}.projectId Smartling project identifier. If accountId isn't set, this is used instead to look up the account. {PROJECT_ID}
translation.service.{env}.userIdentifier Smartling user identifier. {USER_IDENTIFIER}
translation.service.{env}.userSecret Smartling user secret. {USER_SECRET}
translation.service.{env}.autoAuthorize Optional. Set to yes to automatically authorize the translation batch on creation, skipping manual authorization in Smartling's dashboard. Any other value, or omitting the key, preserves the default (manual authorization). yes

The Project, Auto-authorize, and Workflow fields in the Translate app's Options step are populated from Smartling once connected.

Lionbridge

Lionbridge requires an account. Samples use one prod environment.

Key Description Example
translation.service.{env}.apiEndpoint Content API endpoint. https://content-api.lionbridge.com/v2
translation.service.{env}.authEndpoint Authentication endpoint. https://login.lionbridge.com/connect/token
translation.service.{env}.clientId Lionbridge client ID. {CLIENT_ID}
translation.service.{env}.clientSecret Lionbridge client secret. {CLIENT_SECRET}
translation.service.{env}.providerId Provider identifier assigned during Lionbridge account setup. {PROVIDER_ID}

Trados

Trados authenticates with OAuth and uses one prod environment in the samples.

Key Description Example
translation.service.{env}.apiEndpoint Language Cloud API URL. https://lc-api.sdl.com/public-api/v1
translation.service.{env}.authEndpoint OAuth token URL. https://sdl-prod.eu.auth0.com/oauth/token
translation.service.{env}.clientId OAuth client ID. {CLIENT_ID}
translation.service.{env}.clientSecret OAuth client secret. {CLIENT_SECRET}
translation.service.{env}.tenantId Trados tenant identifier. {TENANT_ID}
translation.service.{env}.audience OAuth audience. https://api.sdl.com

Protect service credentials

Credentials can be stored in the main config, but a separate sheet is recommended when secrets require tighter access.

  1. Create .da/translate-keys.json
  2. Add only the provider's credential keys
  3. Set translation.service.key.path to its Admin API source URL.

Keep endpoints, project identifiers, and other non-secret settings in .da/translate.

Conflict behavior

Each value is a comma-separated set of choices. The first is the project default. overwrite replaces destination content and merge preserves regional edits where possible.

Key Applies when
sync.conflict.behavior Sources are synced to the translation source folder.
translate.conflict.behavior Translated content returns from the service.
copy.conflict.behavior A source is copied into a region.
rollout.conflict.behavior Content is rolled out to a locale.

Source, completion, and custom options

Key Description
source.language Name of the language treated as the source of truth. It must match a row in languages.
complete.aem.preview Automatically preview completed documents unless merge conflicts exist.
complete.aem.publish Automatically publish completed documents unless merge conflicts exist.
translation.service.supports.duedate Set to yes to show a due-date option supported by the service.

Connectors can add fields to project options with translation.service.custom.{type}.{name}. Supported controls include option, boolean, and textarea. Other types render as text fields. Option values are pipe-separated and can use label=value.

languages tab

Column Description
name Display name, referenced by source.language.
code Language or locale code.
location Folder containing the language's content.
actions Comma-separated actions (Translate, Copy, Rollout). Skip is always available.
locales Comma-separated locale paths available for rollout.
default locales Optional locale subset selected by default.
source Optional content path override for this row.
source language Optional name of another row in languages that this row depends on. Unlike source, this holds the row back from translation until its dependency completes, then submits it automatically.
trados location, trados project template Trados target folder and project-template ID.

Do-not-translate tabs

custom-doc-rules

Use block and rule columns to control document blocks. Rules support dnt, do-not-translate, and translate; column, row, cell, range, and negative-index targets; and if or unless conditions.

Block Rule Result
section-metadata do-not-translate Preserve the entire block.
metadata translate col 2 if col 1 is "title" or "description" Translate selected metadata values only.
columns dnt col -1 Preserve the final column.

dnt-content-rules

The content column contains exact strings that remain untranslated wherever they appear, such as product names, paths, or color values.

dnt-sheet-rules

Use pattern and action columns to preserve matching spreadsheet or JSON values. Conditions include equals, beginsWith, and exists; separate alternatives with ||.

dnt

Use dnt-sheet and dnt-columns to exclude whole JSON sheets or named columns. Asterisks apply to all sheets or all columns. System columns such as :translate, :uid, :rollout, and :regional are excluded automatically, and :translate set to no skips a row.