Pseudo-Translation Tool

Test your i18n UI before launch. Generate fake translations that stress-test layout, encoding, and bidirectional rendering — without waiting for real translations.

The Problem

Your UI looks perfect in English. Then German arrives — 40% longer strings break every button and truncate every table header. Arabic flips the entire layout and your icons point the wrong way. Japanese needs different line heights and your carefully spaced cards collapse. You find all of this after paying for translations.

The average cost of fixing i18n layout bugs after translation is 5-10x higher than catching them during development. Pseudo-translation catches these issues for free, before you spend a dollar on real translations.

The Solution

i18n-pseudo generates fake translations that stress-test your UI without waiting for real translators. It applies 7 transformation strategies — accents, CJK characters, text expansion, RTL markers, and more — while preserving ICU placeholders, plural syntax, and interpolation variables.

Installation

i18n-pseudo is available as an npm package, a Homebrew formula, or you can build from source with Cargo.

Terminal
npm install -g @i18n-agent/i18n-pseudo
The npm package includes a global CLI binary. No runtime dependencies required.

7 Transformation Strategies

Each strategy targets a specific class of i18n bug. Use them individually with flags or combine them with presets.

StrategyFlagInputOutput
Accents--accentsHelloĤéľľó
CJK--cjkHello你好世界你好
Special Chars--specialHelloHel­lo
Expansion--expansion NSaveSave~~~~
Brackets--bracketsHello[Hello]
RTL--rtlHello‮Hello‬
Unicode Stress--unicode-stressHelloH́ȩl̈l̀õ
Accents are the most popular strategy for detecting hardcoded strings. If a string appears without diacritics in your UI, it was never passed through the translation function.

Presets

Presets bundle strategies for common testing scenarios. Use --preset to apply a group of strategies at once.

PresetStrategiesUse Case
defaultaccents + bracketsQuick visual check that all strings are externalized
layoutexpansion (1.4x) + bracketsCatch truncation and overflow before real translations
charsetCJK + special + bracketsTest font rendering and character encoding
rtlRTL markers + bracketsVerify bidirectional layout without switching locale
fullAll strategies combinedMaximum stress test — everything at once

Usage Examples

Run i18n-pseudo against your source locale file. It reads JSON, YAML, PO, and other i18n formats, applies the selected strategies, and writes the transformed output.

Terminal
# Default (accents + brackets)
i18n-pseudo en.json -o output/

# Layout testing (text expansion + brackets)
i18n-pseudo en.json --preset layout -o output/

# Specific strategies
i18n-pseudo en.json --accents --expansion 1.5 -o output/

# Kitchen sink
i18n-pseudo en.json --preset full -o output/

Before & After

Here is what the default preset (accents + brackets) does to a typical translation file. Notice that ICU plural syntax and interpolation placeholders are preserved exactly.

Before & After
// Input (en.json):
{
  "greeting": "Hello, {name}!",
  "save": "Save",
  "items": "{count, plural, one {# item} other {# items}}"
}

// Output (default preset — accents + brackets):
{
  "greeting": "[Ĥéľľó, {name}!]",
  "save": "[Šáṽé]",
  "items": "[{count, plural, one {# íťéɱ} other {# íťéɱš}}]"
}
Placeholders like {name}, {count}, and ICU plural expressions are never modified. Only translatable text segments are transformed, so your app renders correctly with pseudo-translated files.

CI Integration

Add pseudo-translation to your CI pipeline to catch i18n regressions automatically. Generate pseudo-translated files, then run your visual regression tests against them.

CI Pipeline
# Generate pseudo-translations and run visual regression
i18n-pseudo locales/en.json --preset layout -o locales/pseudo/
NEXT_PUBLIC_LOCALE=pseudo npx playwright test --project=visual
Combine the layout preset with Playwright or Chromatic visual regression testing. Any component that overflows or truncates with 1.4x expanded text will fail the visual diff.

Try i18n Agent Now

Drop your translation file here

JSON, YAML, PO, XML, CSV, Markdown, Properties

or click to browse

Target languages

No signup requiredInstant estimate

Frequently Asked Questions