The translation process follows a three-step cycle: extraction, translation, and compilation.
First, collect all strings from your source code and prepare translation files for your target locales.
npx fbtee collect
npx fbtee prepare-translations --source-strings source_strings.json --output-dir translations --locales de-DE ja-JP
2. Translate
Translate the entries in the generated files. Entries marked with "status": "new" should be translated, then the status should be removed.
To compile the translations into your app's runtime format:
npx fbtee translate --source-strings source_strings.json --translations 'translations/*.json' --output-dir src/translations
Strict Mode: Use --strict to ensure every collected source hash has a completed entry in every locale. This will fail if entries are missing, marked as "status": "new", or have empty translation lists.
3. Commit and Ignore
Commit your editable translation files in translations/. Add the following generated files to your .gitignore:
.enum_manifest.json
source_strings.json
src/translations/
Note on Runtime Catalogs: Generated catalogs omit messages that lack a completed translation (including those marked "status": "new"). This allows partial catalogs to fall back to other languages.
npx fbtee collect
npx fbtee prepare-translations --source-strings source_strings.json --output-dir translations --locales de-DE ja-JP
npx fbtee translate --source-strings source_strings.json --translations 'translations/*.json' --output-dir src/translations