Translation config options
Experience Workspace’s translation works out-of-the-box with Google Translate and requires no additional configuration. However translation offers rich configuration options to support your individual translation needs.
This document explains the configuration options available. For instructions on how to configure these options for translation, please see the document Set up translation. For example configurations to support various translation services, please see the document Translation config samples.
Config sheet structure
Localization is driven by a single translate config sheet stored at {{org}}/{{site}}/.da/translate. It is a multi-tab sheet where each named tab controls a different part of the localization, translation, and rollout pipeline.
config tab options
The config tab holds key / value rows to define your translation service, conflict resolution, and other general translation configuration options. Any key you do not set falls back to a sensible default.
Translation service options
These keys tell Experience Workspace which translation provider to use. An environment (such as prod or stage) groups a set of endpoint keys together so you can switch between them when you start a project. Each environment supplies its own translation.service.{env}.* keys.
translation.service.name
Google, Smartling, or Trados
translation.service.all.env
stage, prod
Each provider requires a different set of per-environment keys.
The built-in default. It requires no credentials, and the sample configs use a single prod environment.
translation.service.{env}.origin
https://translate.da.live/google
translation.service.{env}.link
https://cloud.google.com/translate/docs/overview
Smartling
This service requires a Smartling account. The sample configs expose stage and prod environments.
translation.service.{env}.origin
https://translate.da.live/smartling
translation.service.{env}.link
https://dashboard.smartling.com/app/accounts/{ACCOUNT_ID}/account-jobs/
translation.service.{env}.projectId
{PROJECT_ID}
translation.service.{env}.userId
{USER_ID}
translation.service.{env}.userSecret
{USER_SECRET}
Trados
This service requires a Trados account. Trados authenticates via OAuth and uses apiEndpoint rather than origin. The sample configs use a single prod environment.
translation.service.{env}.apiEndpoint
https://lc-api.sdl.com/public-api/v1
translation.service.{env}.authEndpoint
https://sdl-prod.eu.auth0.com/oauth/token
translation.service.{env}.clientId
translation.service.{env}.clientSecret
translation.service.{env}.tenantId
translation.service.{env}.audience
https://api.sdl.com
Credentials such as userSecret and clientSecret stay in the config sheet. Restrict who can read and edit .da/translate accordingly.
Conflict resolution
These keys decide what happens to existing destination content at each stage of the pipeline. The value is a comma-separated list of choices. The first choice is the default, and authors can change it per project in the Options step of the translation project. overwrite replaces the destination content, while merge runs a regional diff so region-only edits are preserved.
sync.conflict.behavior
overwrite, merge
translate.conflict.behavior
overwrite, merge
copy.conflict.behavior
overwrite, merge
rollout.conflict.behavior
overwrite, merge
Source and completion
source.language
English
complete.aem.preview
on / off
complete.aem.publish
on / off
translation.service.supports.duedate
yes
Custom service options
Custom options let a connector surface extra fields in the Options step of the translation project. The key takes the form translation.service.custom.{type}.{name}:
{type}is the control to render:option(dropdown),boolean(checkbox),textarea, or anything else for a plain text input.{name}is the label shown to the author and the field name sent to the connector.
The value is a pipe-separated list of choices. Each choice may use label=value to show a friendly label while sending a different value. For example, a key of translation.service.custom.option.Priority with a value of Standard=std | Rush=rush renders a Priority dropdown whose selection is sent as std or rush.
languages tab options
The languages tab defines all languages (and their locales) available for translation and rollout.
name
source.language.German
code
de, en-GB
location
/langstore/de
actions
Skip is always added automatically.Translate, Rollout
locales
/de, /at, /ch_de
default locales
locales that is active by default./de, /at
source language
English
trados location, trados project template
custom-doc-rules tab options
Do not translate (DNT) rules mark content that should be sent to the service untranslated. The custom-doc-rules tab has two columns (block, rule) and defines block-level DNT for documents, written as a plain-language query.
Each rule pairs one or more blocks (in the block column, comma-separated) with a short plain-language query (in the rule column). A query combines an action (dnt, do-not-translate, or translate), an optional target (col, row, or cell with a number, a range like 1-2, or a negative index like -1), and an optional if or unless condition (is, contains, starts with, has element). Wrap values in double quotes (“). When you use translate ... if ..., anything that does not match the condition is left untranslated.
section-metadata
do-not-translate
metadata
dnt col 1
metadata, card-metadata
dnt col 1
metadata
translate col 2 if col 1 is "title" or "description"
title or description; leave every other row untranslated.metadata
dnt if col 1 is "robots"
robots.columns
dnt col -1
cards
dnt col 1-2
marquee
dnt col 1 if col 1 starts with "#"
dnt-content-rules tab options
Do not translate (DNT) rules mark content that should be sent to the service untranslated. The dnt-content-rules tab has one column (content) and contains literal strings that are never translated anywhere on the page.
Each row of the tab is a literal string that is left untranslated wherever it appears on the page.
Adobe Photoshop
do not translate me
#FFCC00
/products/
dnt-sheet-rules tab options
Do not translate (DNT) rules mark content that should be sent to the service untranslated. The dnt-sheet-rules tab has two columns (pattern, action) and contains value patterns for spreadsheet and JSON cells.
Each row matches cell values in the spreadsheet and JSON content. Conditions are equals, beginsWith, or exists, and multiple options are separated by double-pipe (||).
beginsWith(http:// || https://)
dnt
beginsWith(/)
dnt
equals(null)
dnt
null.equals(true || false)
dnt
dnt tab options
Do not translate (DNT) rules mark content that should be sent to the service untranslated. The dnt tab has two columns (dnt-sheet, dnt-columns) and is a whole-sheet or per-column DNT for JSON sheets.
This tab targets whole sheets or specific columns in JSON. Columns such as :translate, :uid, :rollout, and :regional are always excluded automatically, and a :translate value of no skips an entire row.
prices
*
prices sheet.*
key, path
key and path columns in every sheet.products
sku, url
sku and url columns of the products sheet.