All supported frameworks
React workflow

Translate and validate React locale files

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.

public/locales/en/common.json

$ forthwith check

[ERROR] Placeholder mismatch · account.greeting

public/locales/es/common.json:31 missing {{name}}

Local scan · no account · no upload
Existing JSON locale files
i18next and ICU placeholders
Focused, reviewable updates

Install path

Check the repository you already have

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.

  1. 1

    Install the Forthwith CLI

    Use Homebrew on macOS, the install script on Linux, or Scoop on Windows.

  2. 2

    Open the repository root

    Keep the check beside your source code and existing localization resources.

  3. 3

    Run forthwith check

    Review actionable findings locally before creating an account or changing a file.

macOS quick start

No configuration required
brew install Forthwith-LLC/forthwith/forthwith
cd path/to/your-project
forthwith check
Linux and Windows install options The first check never changes files.

Framework-aware validation

Keep React messages complete and render-safe

Check locale data directly instead of relying on every missing key or broken interpolation to surface through a rendered component.

Interpolation tokens

Preserve i18next {{name}} and ICU-style {count} values in each target message.

Missing keys

Compare locale files for absent keys and values that were left empty.

JSON structure

Catch malformed resources, duplicate keys, and inconsistent structured values.

Collections

Flag localized arrays whose length no longer matches the source content.

Sample diff

Review localization like any other code change

Forthwith writes translated entries into the locale files your React app already loads. Reviewers see the key, translated value, and preserved interpolation together.

  • Native files stay in their expected location.
  • Placeholders remain visible to reviewers.
  • Only new, changed, or repaired entries appear in the diff.
public/locales/es/common.json Generated change
--- 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

Check React locales before the application build

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.

.github/workflows/localization.yml GitHub Actions
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

Move from a local report to a reviewable locale update

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.