
Pseudo-localisation : testez la préparation i18n sans traductions réelles
Les traductions réelles prennent du temps et coûtent de l'argent. La pseudo-localisation transforme vos chaînes source en texte lisible mais manifestement factice, qui révèle instantanément les bugs i18n — chaînes codées en dur, débordements de texte, problèmes RTL et problèmes de concaténation.
Qu'est-ce que la pseudo-localisation ?
La pseudo-localisation remplace les caractères de vos chaînes source par des caractères accentués ou étendus visuellement similaires, ajoute un remplissage d'expansion de texte et encadre les chaînes entre crochets. Le résultat reste lisible pour les développeurs, mais paraît manifestement différent d'un texte réel — ce qui permet de repérer facilement les chaînes qui n'ont pas été passées dans les fonctions de traduction.
// Pseudo-localization transforms your source strings
// to simulate translation without real translators
// Original:
"Welcome to our application"
// Accented (simulates diacritics):
"[Ẁëľčöṁë ţö öüŕ àṗṗľïčàţïöñ]"
// Expanded (simulates text expansion ~30%):
"[Weeelcooomee tooo ouuur aaappliiicaaatiiioon]"
// Mirrored (simulates RTL layout):
"[noitacilppa ruo ot emocleW]"
// Brackets make untranslated strings immediately visibleUtilisation dans votre projet
Installez i18n-pseudo et exécutez-le sur vos fichiers de langue. L'outil détecte automatiquement le format de fichier et génère une version pseudo-localisée que vous pouvez charger comme langue de test dans votre application.
// 1. Hardcoded strings (not wrapped in t())
// Pseudo strings have brackets/accents, so untranslated
// strings are immediately obvious in the UI
// 2. Text truncation
// Expanded text reveals buttons and labels that break
// when translations are longer than English
// 3. Layout issues
// Accented characters reveal font rendering problems
// RTL mode reveals directional layout bugs
// 4. Concatenation bugs
// "Hello " + name vs t('greeting', { name })
// Pseudo-localization breaks concatenated strings
// 5. Missing i18n wrappers
// Any string not going through the i18n system
// appears as plain English among pseudo text7 stratégies de transformation
i18n-pseudo propose 7 stratégies de transformation qui testent chacune un aspect différent de votre implémentation i18n. Utilisez-les individuellement pour des tests ciblés, ou combinez-les avec des préréglages pour une couverture complète.
// Strategy 1: Accented characters
// Replace ASCII with similar-looking Unicode
// a -> à, e -> ë, o -> ö, etc.
// Preserves readability while testing rendering
// Strategy 2: Text expansion
// Pad strings to simulate longer translations
// German is ~30% longer, Finnish ~40% longer
// Helps catch UI overflow early
// Strategy 3: Brackets/wrappers
// Wrap strings in [brackets] or «guillemets»
// Makes untranslated strings visually obvious
// Strategy 4: Bidi/RTL
// Mirror text for right-to-left testing
// Catches layout issues before Arabic/Hebrew testing
// Strategy 5: Combined
// Apply all strategies simultaneously
// Maximum coverage in one pass5 préréglages intégrés
Les préréglages combinent plusieurs stratégies en configurations courantes. Utilisez un préréglage pour des tests rapides, ou créez des combinaisons personnalisées selon vos besoins spécifiques.
// Using i18n-pseudo CLI
npx i18n-pseudo generate \
--source locales/en.json \
--output locales/pseudo.json \
--preset accented
# Available presets:
# accented - Ḣëľľö Ẁöŕľð (default)
# expanded - Heeellooo Wooorld
# mirrored - dlroW olleH
# brackets - [Hello World]
# maximum - [Ḣëëëľľľöööö Ẁöööŕŕŕľľľðððð]
// i18n-pseudo.config.json
{
"source": "locales/en.json",
"output": "locales/pseudo.json",
"preset": "maximum",
"expansion": 1.4,
"wrapper": ["[", "]"],
"exclude": [
"*.url",
"*.email",
"branding.*"
]
}Intégration CI/CD
Exécutez la pseudo-localisation en intégration continue pour détecter automatiquement les régressions i18n. Générez des fichiers pseudo-localisés, affichez les écrans clés et comparez-les à des captures d'écran de référence. Tout texte non transformé dans les captures d'écran est une régression — une nouvelle chaîne codée en dur qui a contourné la fonction de traduction.
# .github/workflows/pseudo-check.yml
name: Pseudo-Localization Check
on:
pull_request:
paths:
- 'src/**'
jobs:
pseudo-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci
- name: Generate pseudo locale
run: npx i18n-pseudo generate \
--source locales/en.json \
--output locales/pseudo.json \
--preset maximum
- name: Build with pseudo locale
run: npm run build
env:
NEXT_PUBLIC_LOCALE: pseudo
- name: Run visual regression tests
run: npx playwright test --project=pseudo
env:
LOCALE: pseudoEssayez i18n Agent maintenant
Déposez votre fichier de traduction ici
JSON, YAML, PO, XML, CSV, Markdown, Properties
ou cliquez pour parcourir
Langues cibles