Back to catalog

synchronizing-i18n-translations

Verifies translation files synchronization (fr.json, en.json, es.json) and detects missing keys, empty values, and type inconsistencies

  • Category: discovered
  • Tags: github, community
  • Version: 1.0.0
  • Author: walid
  • Downloads: 0
  • GitHub stars: 1
  • Updated: 2025-11-21

Download the latest version (v1.0.0) from this page.

SKILL.md

---
name: synchronizing-i18n-translations
description: Verifies translation files synchronization (fr.json, en.json, es.json) and detects missing keys, empty values, and type inconsistencies
allowed-tools: Read, Grep, Glob, Bash
---

# I18n Translation Synchronization

Maintient la synchronisation des fichiers de traduction pour toutes les langues supportées.

## Table des matières

- [Quand utiliser](#quand-utiliser)
- [Langues supportées](#langues-supportées)
- [Scripts disponibles](#scripts-disponibles)
- [Workflow principal](#workflow-principal)
- [Détection automatique](#détection-automatique)
- [Corriger les erreurs](#corriger-les-erreurs)
- [Structure des fichiers](#structure-des-fichiers)
- [Checklist i18n](#checklist-i18n)
- [En cas de doute](#en-cas-de-doute)

## Quand utiliser

- Ajout de nouveaux textes UI
- Modification de traductions existantes
- Avant de committer changements i18n
- Quand `npm run i18n:compare` signale erreurs

## Langues supportées

- **fr.json** (référence) - Toujours modifier en premier
- **en.json** (anglais)
- **es.json** (espagnol)

## Scripts disponibles

```bash
npm run i18n:compare  # Compare tous les fichiers (PRINCIPAL)
npm run i18n:verify   # Vérifie cohérence
npm run i18n:unused   # Détecte clés inutilisées
```

## Workflow principal

### 1. Vérifier l'état actuel

```bash
npm run i18n:compare
```

Si erreurs, lire le rapport détaillé.

### 2. Modifier les traductions

**Règle d'or :** Toujours commencer par `fr.json`

1. Modifie `fr.json` d'abord
2. Copie la STRUCTURE (pas les valeurs) dans en.json et es.json
3. Traduis les valeurs

### 3. Vérifier synchronisation

```bash
npm run i18n:compare
```

Doit afficher : "Tous les fichiers de traduction sont parfaitement synchronisés !"

### 4. Tester dans l'UI

Lance l'application et teste le sélecteur de langue.

## Détection automatique

Le script `npm run i18n:compare` détecte :

**Clés manquantes :**

- Clés présentes dans fr.json mais absentes dans en.json/es.json

**Clés supplémentaires :**

- Clés présentes dans en.json/es.json mais absentes dans fr.json

**Valeurs vides :**

- `""`, `null`, `undefined`, `[]`

**Incohérences de types :**

- String vs Array (ex: fr.json = "text", en.json = ["array"])

**Format du rapport :**

- Console détaillée
- JSON exporté dans `docs/translations-comparison-report.json`

## Corriger les erreurs

### Clés manquantes

Ajoute les clés manquantes dans en.json/es.json avec traductions appropriées.

### Clés supplémentaires

Supprime les clés supplémentaires OU ajoute-les dans fr.json si nécessaires.

### Valeurs vides

Remplace les valeurs vides par traductions appropriées.

### Types incohérents

Uniformise le type (soit String partout, soit Array partout).

## Structure des fichiers

**Format JSON :**

```json
{
  "key": "value",
  "nested": {
    "key": "value"
  },
  "array": ["item1", "item2"]
}
```

**Dot notation :**

- `key` → "key"
- `nested.key` → "nested.key"
- `array` → "array"

Le script aplatit la structure en dot notation pour comparaison.

## Checklist i18n

- [ ] fr.json modifié en premier
- [ ] Structure copiée dans en.json et es.json
- [ ] Valeurs traduites correctement
- [ ] `npm run i18n:compare` passe (100% synchronisé)
- [ ] Testé dans UI avec sélecteur de langue
- [ ] Pas de valeurs vides
- [ ] Types cohérents (String ou Array)

## En cas de doute

**Source :** fr.json + npm scripts

**Règles absolues :**

1. Toujours vérifier avec `npm run i18n:compare`
2. fr.json est la référence (pas en.json, pas es.json)
3. Ne jamais committer avec erreurs i18n
4. Tester dans UI avant commit
5. Scripts npm détectent TOUS les problèmes

**Workflow minimal :**

```bash
# Modifier fr.json
npm run i18n:compare  # Vérifier
# Copier structure dans en.json, es.json
# Traduire valeurs
npm run i18n:compare  # DOIT être OK
```