All supported frameworks
React Native workflow

Translate and validate React Native locale files

Translate only new and changed entries, then catch missing keys, placeholder drift, and structural mismatches without replacing the i18n library your app already uses.

locales/en/common.json

$ forthwith check

[ERROR] Placeholder mismatch · welcome_user

locales/es/common.json:24 missing {{name}}

Local scan · no account · no upload
Existing JSON locale files
i18next and ICU placeholders
Reviewable locale-file updates

Install path

Check the repository you already have

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.

  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

Validate locale data independently of the UI

A focused localization check produces clearer failures than waiting for a missing key or broken interpolation to appear on one device.

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

Keep locale JSON in the repository and let normal code review do its job. Placeholders remain visible, and only the target file changes.

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

Add a dedicated localization gate

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.

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

Move from a local report to a reviewable locale update

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.