Localization config options
Localization is driven by a single translate config sheet stored at /.da/translate.json in your site. It is a multi-sheet workbook where each named sheet controls a different part of the localization, translation, and rollout pipeline.
This page is a reference for every option across those sheets. If you are setting up translation for the first time, start with Set Up Translation. For ready-to-use starting points, see Sample localization configs.
The config sheet holds key / value rows. Any key you do not set falls back to a sensible default.
Translation service
These keys tell DA 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.
| Key | Description | Value |
|
The connector that handles sending and retrieving content. Defaults to Google. |
|
|
Comma-separated list of environments to expose in the Options step. The first entry is the default. |
|
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.
| Key | Description | Example |
|
Base URL of the Google translation endpoint. |
|
|
Reference URL shown to authors. |
|
Smartling
Requires a Smartling account. The sample configs expose stage and prod environments.
| Key | Description | Example |
|
Base URL of the Smartling proxy endpoint. |
|
|
Smartling dashboard URL authors can follow to view the job. |
|
|
Smartling project identifier. |
|
|
Smartling user identifier. |
|
|
Smartling user secret. |
|
|
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). |
|
Trados
Requires a Trados account. Trados authenticates via OAuth and uses apiEndpoint rather than origin. The sample configs use a single prod environment.
| Key | Description | Example |
|
Trados Language Cloud API base URL. |
|
|
OAuth 2.0 token endpoint. |
|
|
Trados OAuth client ID. | — |
|
Trados OAuth client secret. | — |
|
Trados tenant identifier. | — |
|
OAuth audience. |
|
Note: credentials such as userSecret and clientSecret stay in the config sheet. Restrict who can read and edit /.da/translate.json 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 is the default, and authors can change it per project in the Options step. overwrite replaces the destination content, while merge runs a regional diff so region-only edits are preserved.
| Key | Applies when | Value |
|
Sources are synced into the translation (source) folder. |
|
|
Translated content is returned from the service. |
|
|
A source is copied into a region. |
|
|
Content is rolled out to a locale. |
|
Source and completion
| Key | Description | Value |
|
Name (matching a row in the languages sheet) of the language treated as the source of truth. Sets the folder content is sent from. Defaults to the site root. |
|
|
Automatically preview documents after a project completes. Ignored if merge conflicts exist. |
|
|
Automatically publish documents after a project completes. Ignored if merge conflicts exist. |
|
|
When set, shows a Due date field in Options. The chosen date is passed to the service as a due date (used by Trados). |
|
Custom service options
Custom options let a connector surface extra fields in the Options step. 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.
Other config sheets
The following sheets are optional and live alongside config in the same translate.json workbook.
Languages
Defines all languages (and their locales) available for translation and rollout.
| Column | Description | Example |
|
Display name of the language. Referenced by source.language. |
|
|
Language or locale code. |
|
|
Folder where this language's content lives. |
|
|
Comma-separated actions offered for the language. Skip is always added automatically. |
|
|
Comma-separated locale paths this language rolls out to. Enables the Rollout action. |
|
|
Optional subset of locales that is active by default. |
|
|
Optional. Name of another language this one derives from. |
|
|
Trados target folder and project template id. | — |
Do-not-translate (DNT) rules
DNT rules mark content that should be sent to the service untranslated. They are split across a few optional sheets.
| Sheet | Columns | Purpose |
|
block, rule |
Block-level DNT for documents, written as a plain-language query. |
|
content |
Literal strings that are never translated anywhere on the page. |
|
pattern, action |
Value patterns for spreadsheet and JSON cells. |
|
dnt-sheet, dnt-columns |
Whole-sheet or per-column DNT for JSON sheets. |
The examples below cover common use cases for each sheet.
Writing custom-doc-rules
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 or 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.
| block | rule | Result |
|
|
DNT the entire block. |
|
|
DNT the first column (the keys) of every row while still translating the values. |
|
|
Apply the same rule to several blocks at once. |
|
|
Translate the second column only when the first cell is title or description; leave every other row untranslated. |
|
|
DNT the whole row whenever its first cell is robots. |
|
|
DNT the last column of every row. |
|
|
DNT the first two columns of every row. |
|
|
DNT hex or color values in the first column, but translate normal text. |
Examples: dnt-content-rules
Each row is a literal string that is left untranslated wherever it appears on the page.
| content | Result |
|
A product name is kept verbatim everywhere it appears. |
|
An exact phrase preserved as-is. |
|
A hex color value preserved. |
|
A URL path fragment preserved. |
Examples: dnt-sheet-rules
Each row matches cell values in the spreadsheet and JSON content. Conditions are equals, beginsWith, or exists, and multiple options are separated by ||.
| pattern | action | Result |
|
|
Any cell whose value is a URL. |
|
|
Any cell that is a site-relative path. |
|
|
Cells whose value is exactly null. |
|
|
Boolean-like values. |
Examples: dnt sheet
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.
| dnt-sheet | dnt-columns | Result |
|
|
DNT the entire prices sheet. |
|
|
DNT the key and path columns in every sheet. |
|
|
DNT only the sku and url columns of the products sheet. |