Interpolation tokens
Preserve i18next {{name}} and ICU-style {count} values in each target message.
Keep the JSON locale tree and i18n library your app already uses. Forthwith translates only new and changed entries, validates fragile message syntax, and writes reviewable updates back to the repository.
$ forthwith check
[ERROR] Placeholder mismatch · account.greeting
public/locales/es/common.json:31 missing {{name}}
Install path
Install one CLI at the repository level and run it beside your existing JavaScript tooling. The local check discovers supported locale files without adding a runtime package or requiring Forthwith configuration.
Use Homebrew on macOS, the install script on Linux, or Scoop on Windows.
Keep the check beside your source code and existing localization resources.
Review actionable findings locally before creating an account or changing a file.
brew install Forthwith-LLC/forthwith/forthwith
cd path/to/your-project
forthwith check
Framework-aware validation
Check locale data directly instead of relying on every missing key or broken interpolation to surface through a rendered component.
Preserve i18next {{name}} and ICU-style {count} values in each target message.
Compare locale files for absent keys and values that were left empty.
Catch malformed resources, duplicate keys, and inconsistent structured values.
Flag localized arrays whose length no longer matches the source content.
Sample diff
Forthwith writes translated entries into the locale files your React app already loads. Reviewers see the key, translated value, and preserved interpolation together.
--- a/public/locales/es/common.json+++ b/public/locales/es/common.json@@ -14,2 +14,3 @@ "checkout.title": "Finalizar compra",+ "account.greeting": "Hola, {{name}}", "checkout.pay": "Pagar {{total}}"
CI recipe
Add the local validator beside lint and tests so malformed locale data and missing messages fail with a focused report.
Validation needs no Forthwith token. Exit code 1 fails the job when errors are found; --warnings-as-errors also treats warnings as release blockers.
name: React localization
on: pull_request
jobs:
localization:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Forthwith
run: curl -fsSL https://raw.githubusercontent.com/Forthwith-LLC/forthwith-releases/main/install.sh | bash
- name: Validate localization files
run: forthwith check --warnings-as-errors
When you are ready to translate
Initialize the project, configure target languages, and run forthwith translate. Forthwith processes only new, changed, and missing entries by default and leaves the result in your existing locale tree.
We can't find the internet
Attempting to reconnect
Something went wrong!
Attempting to reconnect