Top-level keys
localesbucketsgroupsllmtranslation(optional)mt(optional)storage(required forsync)cache(optional)qa(optional)
locales
source(string, required)targets(string array, required)fallbacks(object, optional)copies(object, optional): map of copy locale -> origin locale. The copy locale is written without a new translation. See i18n config.
buckets
- map of bucket name -> bucket definition
filesarray withfromandtotemplates, and optionalsrx(default|html|markdown| project-relative SRX 2.0 file)- Optional
files[].cloud_pathpreserves the Cloud source identity forsync pushandsync pullindependently of local paths. It accepts{{source}}and the same glob suffix asfrom; omission uses the config-relative source path.
groups
- map of group name -> group definition
targetsarraybucketsarray
llm
profilesmap of profile name -> provider/model/prompt- optional
context_memoryobject withproviderandmodelfor context-building overrides - supported providers:
openai|azure_openai|anthropic|gemini|bedrock|lmstudio|groq|mistral|ollama|openrouter|ai_gateway rulesarray withpriority,group,profile
translation
default(object, required):{ type: llm | mt, profile: <name> }rules(array, optional): entries withpriority,group,type(llm|mt),profile- mutually exclusive with
llm.rules type: llmprofiles resolve againstllm.profiles;type: mtprofiles resolve againstmt.profiles
mt
profilesmap of profile name ->{ provider, api_key_env, base_url }- supported providers:
google|deepl api_key_env(required): name of the environment variable holding the API keybase_url: optional forgoogle; required fordeepland must behttps://api.deepl.comorhttps://api-free.deepl.com
storage
adapter:poeditor|lilt|lokalise|crowdin|phrase|smartlingconfig: adapter-specific fields
qa
policy_file(string, optional): path to a version1QA policy JSON file.checkuses it when--qa-policyis omitted. See validate.
cache
enabledbooleanendpointstringproject_key_envstringtimeout_secondsinteger
CSV workflow note
Usebuckets.*.files[].from and to to point at .csv files when you run CSV-based localization flows.
- Per-locale files typically use
[locale]in thetopath. - Shared CSV files can reuse the same
fromandtopath.
Fluent workflow note
Usebuckets.*.files[].from and to to point at .ftl files for Mozilla Fluent localization flows.
- Per-locale files typically use
[locale]in thetopath, for examplelocales/[locale]/messages.ftl. - Supported entries include messages, attributes, multiline values, and select/plural patterns represented as full values.
- Fluent terms are not supported and fail parsing instead of being rewritten.
Java properties workflow note
Usebuckets.*.files[].from and to to point at per-locale .properties resource bundles, for example messages_{{source}}.properties -> messages_{{target}}.properties.
INI workflow note
Usebuckets.*.files[].from and to to point at per-locale .ini files, for example locales/{{source}}/messages.ini -> locales/{{target}}/messages.ini. Sectioned keys flatten as section.key.
Subtitle workflow note
Usebuckets.*.files[].from and to to point at .srt, .vtt, or .sbv subtitle files, for example captions/{{source}}.srt -> captions/{{target}}.srt. Cue payload text is translated; timestamps and WebVTT metadata stay in the file structure.
TOML, TSV, and SVG workflow notes
Use matching source and target extensions for TOML locale files (.toml), tab-separated catalogs (.tsv), and SVG text (.svg). TOML translates string leaves only. TSV follows the same key/value and locale-column layouts as CSV. SVG extracts text, tspan, textPath, title, and desc spans.
