Interpolation tokens
Preserve i18next {{name}} and ICU-style {count} values in each target message.
Translate only new and changed entries, then catch missing keys, placeholder drift, and structural mismatches without replacing the i18n library your app already uses.
$ forthwith check
[ERROR] Placeholder mismatch · welcome_user
locales/es/common.json:24 missing {{name}}
Install path
Install one CLI at the repository level and run it beside your existing JavaScript tooling. Forthwith auto-detects supported localization files; validation needs no app dependency or config migration.
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
A focused localization check produces clearer failures than waiting for a missing key or broken interpolation to appear on one device.
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
Keep locale JSON in the repository and let normal code review do its job. Placeholders remain visible, and only the target file changes.
--- a/locales/es/common.json+++ b/locales/es/common.json@@ -11,2 +11,3 @@ "checkout_title": "Finalizar compra",+ "welcome_user": "Hola, {{name}}", "pay_total": "Pagar {{total}}"
CI recipe
The validator runs without Node integration or service credentials. Put it in a small GitHub Actions job and fail fast on localization defects.
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 Native 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
When validation shows the scope, initialize the project and translate only new, changed, and missing entries. Forthwith writes JSON back to the locale tree your React Native app already loads.
We can't find the internet
Attempting to reconnect
Something went wrong!
Attempting to reconnect