Projets volumineux
Lingo.dev CLI offre des optimisations de performance et des stratégies de flux de travail pour les projets de localisation à grande échelle comportant des centaines de milliers de clés de traduction, plusieurs langues et des structures de contenu complexes.
Pour les projets avec un contenu étendu, la CLI propose un traitement parallèle et une intégration CI/CD pour gérer efficacement la traduction à grande échelle.
Traitement parallèle
Lingo.dev CLI traite les projets volumineux plus rapidement en utilisant des workers parallèles qui gèrent simultanément plusieurs tâches de traduction.
Activer le traitement parallèle :
npx lingo.dev@latest run
Cela distribue les tâches de traduction entre plusieurs workers, réduisant significativement le temps de traitement pour les projets volumineux.
Contrôler la concurrence des workers :
npx lingo.dev@latest run --concurrency 16
La concurrence par défaut est de 10 workers. Des valeurs plus élevées traitent plus de tâches simultanément mais peuvent atteindre les limites de taux des API.
Fonctionnement du traitement parallèle
La CLI crée un pool de workers qui traite les tâches de traduction simultanément tout en empêchant la corruption des fichiers :
- Distribution des tâches — Décompose la localisation en tâches individuelles par locale et fichier
- Allocation des workers — Attribue des tâches aux workers disponibles en utilisant l'équilibrage de charge
- Prévention des conditions de concurrence — Utilise des verrous de système de fichiers pour éviter les conflits lorsque plusieurs workers accèdent aux mêmes fichiers
- Suivi de progression — Rapporte la progression en temps réel sur tous les workers
Exemple pour les projets volumineux :
// Projet avec 50 fichiers dans 10 langues = 500 tâches de traduction
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja", "zh", "ko", "pt", "it", "ru", "ar"]
},
"buckets": {
"json": {
"include": ["src/locales/[locale]/*.json"]
},
"markdown": {
"include": ["docs/[locale]/*.md"]
}
}
}
Avec le traitement parallèle, ces 500 tâches sont distribuées entre les workers au lieu d'être traitées séquentiellement.
Traitement ciblé
Pour les projets volumineux, vous pouvez traiter des parties spécifiques au lieu de tout traiter en une seule fois :
Traiter des langues spécifiques :
npx lingo.dev@latest run --locale es --locale fr
Traiter des types de fichiers spécifiques :
npx lingo.dev@latest run --bucket json
Traiter des fichiers spécifiques :
npx lingo.dev@latest run --file components/header
Ce traitement sélectif est utile pour les mises à jour incrémentales pendant le développement.
Intégration CI/CD
Les projets volumineux bénéficient des flux de travail de traduction automatisés utilisant GitHub Actions ou d'autres systèmes CI/CD.
Flux de travail GitHub Actions :
name: Lingo.dev Localization
on:
workflow_dispatch:
permissions:
contents: write
pull-requests: write
jobs:
localize:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: lingodotdev/lingo.dev@main
with:
api-key: ${{ secrets.LINGODOTDEV_API_KEY }}
Ce flux de travail traite les traductions sur des branches dédiées, séparant ainsi le travail de traduction du développement.
Flux de travail basé sur les branches
Pour les projets volumineux, utilisez des branches dédiées pour le travail de traduction :
Créer une branche de traduction :
git checkout main
git checkout -b localize/content-update
# Effectuer des modifications de contenu
git push -u origin localize/content-update
Déclencher la traduction via GitHub Actions :
- Accédez à l'onglet Actions du dépôt
- Sélectionnez le flux de travail "Lingo.dev Localization"
- Exécutez le flux de travail sur votre branche de traduction
- Révisez et fusionnez le contenu traduit
Cette approche fournit une séparation claire entre les modifications de contenu et le traitement des traductions.
Considérations de performance
Ressources système :
- Le traitement parallèle utilise plus de CPU et de mémoire
- Surveillez les performances du système avec des paramètres de concurrence élevés
- Les exécuteurs CI/CD cloud gèrent efficacement les charges de travail parallèles
Limites de débit API :
- Une concurrence plus élevée peut déclencher une limitation de débit
- Commencez avec les paramètres par défaut et ajustez en fonction des performances
- Le moteur Lingo.dev gère automatiquement la limitation de débit
Système de fichiers :
- Les projets volumineux génèrent de nombreux fichiers de traduction
- Utilisez .gitignore pour les fichiers temporaires si nécessaire
- Validez le fichier
i18n.lock
pour le suivi du contenu
Organisation du projet
Séparation des buckets :
{
"buckets": {
"app": {
"include": ["src/locales/[locale].json"]
},
"marketing": {
"include": ["marketing/[locale]/*.json"]
},
"docs": {
"include": ["docs/[locale]/*.md"]
}
}
}
Les buckets séparés permettent un traitement ciblé des différentes zones de contenu.
Structure des fichiers :
project/
src/locales/ # Contenu de l'application
marketing/ # Contenu marketing
docs/ # Documentation
i18n.json # Configuration
i18n.lock # Suivi du contenu
Une structure organisée rend les grands projets gérables et permet un traitement sélectif.
Stratégies de mise à l'échelle
Traitement incrémentiel :
- Utiliser le fichier de verrouillage pour traiter uniquement le contenu modifié
- Mettre à jour des langues ou des buckets spécifiques selon les besoins
- Combiner avec CI/CD pour des mises à jour incrémentielles automatisées
Flux de travail d'équipe :
- Utiliser la traduction basée sur les branches pour la collaboration
- Séparer les modifications de contenu du travail de traduction
- Réviser les traductions avant la fusion vers la production
Optimisation des ressources :
- Ajuster la concurrence en fonction des capacités du système
- Utiliser des runners cloud pour les charges de travail de traitement intensif
- Surveiller les temps de traitement et optimiser les configurations des buckets