Table des matières
CI/CD pour la Localisation : Automatiser les Traductions dans votre Pipeline de Déploiement
Points Clés
- L'intégration CI/CD élimine la gestion manuelle des fichiers de traduction et garantit que les traductions sont livrées à chaque déploiement
- L'extraction et la validation automatisées des chaînes détectent les traductions manquantes avant qu'elles n'atteignent la production
- Les builds déclenchés par webhook permettent une localisation continue — les traductions sont mises en ligne dès leur approbation
- Les vérifications pré-fusion peuvent bloquer les PRs contenant des chaînes non traduites, empêchant les localisations incomplètes d'être livrées
Pourquoi Automatiser la Localisation dans CI/CD ?
Les flux de travail de localisation manuels créent des goulots d'étranglement :
- Les développeurs oublient de télécharger les nouvelles chaînes vers le TMS
- Les fichiers traduits attendent dans le TMS que quelqu'un les télécharge
- Des conflits de fusion surviennent lors du placement manuel des fichiers
- Les traductions manquantes se glissent en production
L'automatisation CI/CD résout ces problèmes en faisant de la synchronisation des traductions une partie standard de chaque build et déploiement.
Architecture du Pipeline
Code Push → CI Triggered → Extract Strings → Push to TMS
↓
Production ← Deploy ← Build ← Pull Translations ← Translations Complete (webhook)
Implémentation avec GitHub Actions
Sur Pull Request : Valider les Traductions
name: Translation Check
on: pull_request
jobs:
check-translations:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Scan for new strings
run: npx better-i18n scan --check
# Échoue si des chaînes non traduites sont trouvées
- name: Validate translation files
run: npx better-i18n validate
# Vérifie la syntaxe JSON, les clés manquantes, la cohérence des espaces réservés
Lors de la Fusion vers Main : Synchroniser et Déployer
name: Deploy with Translations
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Push new strings to TMS
run: npx better-i18n push
env:
BETTER_I18N_TOKEN: ${{ secrets.BETTER_I18N_TOKEN }}
- name: Pull latest translations
run: npx better-i18n pull --all
- name: Build
run: npm run build
- name: Deploy
run: npm run deploy
À la Fin de la Traduction : Build Déclenché par Webhook
name: Translation Update
on:
repository_dispatch:
types: [translations-updated]
jobs:
rebuild:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npx better-i18n pull --all
- run: npm run build
- run: npm run deploy
Vérifications de Validation Automatisées
Intégrez ces vérifications dans votre CI Pipeline :
| Vérification | Ce qu'elle Détecte | Quand l'Exécuter |
|---|---|---|
| Traductions manquantes | Clés sans traductions dans les langues cibles | Vérification PR |
| Cohérence des espaces réservés | {name} dans la source mais {nom} dans la traduction | Vérification PR |
| Syntaxe JSON/XLIFF | Fichiers de traduction malformés | Chaque build |
| Longueur des chaînes | Traductions dépassant les limites de caractères de l'UI | Vérification PR |
| Clés inutilisées | Clés de traduction plus référencées dans le code | Planifié hebdomadaire |
Gestion des Traductions Incomplètes
Toutes les traductions ne seront pas complètes au moment du déploiement. Stratégies :
- Repli sur la langue source — Afficher l'anglais si la traduction est manquante (la plus courante)
- Bloquer le déploiement — Ne déployer que lorsque toutes les langues cibles sont traduites à 100 % (la plus stricte)
- Seuil de pourcentage — Déployer si la langue est traduite à >90 %, bloquer si en dessous
- Priorité par clé — Les chaînes critiques de l'UI doivent être traduites, les non-critiques peuvent utiliser le repli
FAQ
Dois-je committer les fichiers de traduction dans git ? Oui. Committer les fichiers de traduction garantit que les builds fonctionnent même si l'API TMS est indisponible. Le CI Pipeline récupère les traductions fraîches et committe automatiquement les modifications.
Comment éviter les conflits de fusion dans les fichiers de traduction ? Utilisez le TMS comme source de vérité. CI récupère les traductions fraîches à chaque build, écrasant les fichiers locaux. Les développeurs ne modifient jamais les fichiers de traduction manuellement.
Que faire si les traductions ne sont pas prêtes quand je dois déployer ? Utilisez des stratégies de repli (afficher la langue source pour les chaînes non traduites). Suivez le pourcentage de complétion des traductions et configurez des alertes quand il tombe en dessous du seuil.
Comment gérer le développement basé sur des branches ? Poussez les chaînes des feature branches vers des namespaces ou branches TMS séparés. Fusionnez les traductions quand la feature branch est fusionnée dans main.
Puis-je exécuter un CI/CD de localisation pour les applications mobiles également ? Oui. Les mêmes principes s'appliquent — pousser les chaînes vers le TMS, récupérer les traductions pendant le build, valider avant la publication. Spécifique au mobile : inclure les métadonnées ASO dans le pipeline et valider les formats de fichiers .strings/.xml.