Skip to content

Configuration

Create tyndale.config.json at your project root, or run npx tyndale init to generate one.

{
"defaultLocale": "en",
"locales": ["es", "fr", "ja"],
"source": ["src", "app"],
"extensions": [".ts", ".tsx", ".js", ".jsx", ".astro"],
"output": "public/_tyndale",
"translate": {
"tokenBudget": 50000,
"concurrency": 8
},
"localeAliases": { "pt-BR": "pt" },
"dictionaries": {
"include": ["src/dictionaries/*.json"],
"format": "key-value"
},
"pi": {
"model": "claude-sonnet-4-20250514",
"thinkingLevel": "low"
},
"docs": {
"framework": "starlight",
"contentDir": "src/content/docs"
}
}
FieldTypeDefaultDescription
defaultLocalestring"en"Source language code
localesstring[][]Target locale codes
sourcestring[][”src”]Directories to scan for translatable content ([”app”, “src”] for Next.js projects)
extensionsstring[][”.ts”, “.tsx”, “.js”, “.jsx”, “.astro”]File extensions to include
outputstring"public/_tyndale"Output directory for generated locale files
translate.tokenBudgetnumber50000Token budget per AI translation batch
translate.concurrencynumberautoMax parallel translation sessions
localeAliasesobject{}Map variant locale codes to canonical ones
dictionaries.includestring[][]Glob patterns for dictionary files
dictionaries.formatstring"key-value"Dictionary file format
pi.modelstring"claude-sonnet-4-20250514"AI model to use
pi.thinkingLevelstring"low"AI thinking level
docs.frameworkstringDocumentation framework: starlight, docusaurus, vitepress, mkdocs, or nextra
docs.contentDirstringautoContent directory (relative to project root)
docs.extensionsstring[]autoOverride file extensions for doc translation