Localisation de logiciels volumineux et agiles : étude de cas Kaspersky

Updated April 1, 2020
Localisation grand logiciel agile kaspersky etude de cas - Smartcat blog
Smartcat covers all your language needs with AI translation, AI content generation and AI human workflows.

Diriger les efforts de localisation d'une grande entreprise de logiciels est en soi un défi. Que se passe-t-il lorsque cette entreprise passe à des pratiques agiles ? Eh bien, les défis deviennent encore plus difficiles à relever et vous devez mettre en œuvre des changements radicaux, rapidement. Dans cette étude de cas, Ekaterina Galitskaya et Darya Egorushkina de l'équipe de documentation et de localisation de Kaspersky se lancent dans une aventure visant à améliorer les capacités et l'efficacité de leurs processus grâce à Smartcat.

Texte supplémentaire par Ekaterina & Darya

Notre équipe est chargée de rédiger et de localiser les textes de l'interface utilisateur et les articles du centre d'aide pour les applications de sécurité mobile de l'entreprise. Ci-dessous, nous vous expliquons comment nous avons commencé à localiser les applications Mobile Security de manière plus fiable, agile et automatisée. Nous commencerons par vous présenter les difficultés qui nous ont poussés à changer nos méthodes, puis nous vous expliquerons les défis auxquels nous avons été confrontés et les solutions que nous avons trouvées. Nous espérons que cet article intéressera toutes les entreprises de logiciels de taille moyenne à grande qui souhaitent mettre en œuvre la méthode Agile non seulement dans leur développement, mais aussi dans tous les aspects connexes.

Pains

Comme beaucoup d'autres entreprises, Kaspersky était à un moment donné passé à des pratiques de développement Agile. Cela a naturellement conduit à des cycles de publication beaucoup plus courts. Alors qu'auparavant, nous déployions de nouvelles versions de l'application tous les quelques mois, nous le faisions désormais toutes les deux semaines. Certes, chaque nouvelle version comportait moins de chaînes, mais cela ne changeait pas grand-chose : nous devions toujours soumettre ces quelques chaînes à l'ensemble de notre processus de localisation et de tests linguistiques, tout en faisant face à des délais beaucoup plus serrés.

Il existe également une idée fausse très répandue selon laquelle les applications mobiles ne contiennent qu'une petite quantité de texte. Si seulement c'était vrai ! Dans notre cas, par exemple, nous avions en moyenne environ 25 000 mots par application rien que pour les textes de l'interface utilisateur, multipliés par environ 10 applications et par environ 20 langues cibles pour chaque application. Tout cela avec de nouveaux textes d'interface utilisateur et de documentation arrivant chaque semaine.

En conséquence, la localisation est devenue le principal obstacle dans l'ensemble du processus de lancement. Et si auparavant les chefs de produit ne connaissaient même pas le nom des membres de l'équipe de localisation (pourquoi l'auraient-ils fait, alors que toutes les traductions apparaissaient « comme par magie » ?), ils étaient désormais conscients de tous les problèmes impliqués à un niveau beaucoup plus profond qu'ils ne l'auraient souhaité.

Chez Kaspersky, le processus de localisation comprend généralement deux étapes : la traduction et les tests linguistiques.

Le problème général au stade de la traduction était qu'il y avait trop de travail manuel, en raison à la fois du processus utilisé et des limites de l'outil de TAO. Plus précisément :

  • Comme les pipelines multibranches n'étaient pas pris en charge, nous avons dû créer manuellement les deltas pour la traduction, puis les réintégrer dans les branches.

  • Il était impossible de garantir la cohérence entre les applications et les langues.

  • Nous ne pouvions pas effectuer les traductions supplémentaires demandées en parallèle, par exemple si les textes sources étaient modifiés au cours du processus. Nous devions attendre que le package de traduction de base soit prêt pour pouvoir procéder aux traductions supplémentaires.

  • Les échecs de compilation dus à des erreurs dans les « non-traduisibles », les apostrophes non échappées et d'autres erreurs humaines devenaient de plus en plus problématiques.

Quant à la phase de test linguistique, elle peut prendre jusqu'à deux semaines, contre trois à cinq jours pour la traduction proprement dite. « Mais qu'est-ce que le test linguistique ? », nous demanderez-vous.

L'objectif principal des tests linguistiques est de vérifier l'ensemble de la traduction dans son contexte. Nous disposons d'une équipe solide de traducteurs qui connaissent bien notre terminologie. Mais lorsque vous traduisez un texte sans voir ce qui l'entoure, ou même simplement s'il s'agit d'un bouton ou d'un titre, les choses peuvent rapidement mal tourner.

Les tests linguistiques consistent donc à vérifier manuellement tous les écrans de l'application, généralement à l'aide de captures d'écran. Cela permet d'identifier des problèmes tels que

  • Texte trop long pour la taille de l'élément d'écran. Cela peut parfois avoir des implications juridiques, si le texte omis comprend des clauses de non-responsabilité ou des informations financières.

  • Texte non traduit, soit parce que le traducteur a commis une erreur, soit parce qu'il était codé en dur au lieu d'être externalisé sous forme de string,

  • Texte traduit dans un contexte incorrect, par exemple lorsque le texte d'un bouton (par exemple « Télécharger ») est grammaticalement un impératif au lieu d'un infinitif.

La capture d'écran à elle seule prenait un temps fou. Par exemple, si une nouvelle fonctionnalité comportait 40 écrans d'interface utilisateur et qu'il y avait 20 langues cibles, cela pouvait prendre jusqu'à 70 heures de travail manuel et mécanique fastidieux.

Dans l'ensemble, c'était quelque chose avec lequel on pouvait composer quand il y avait une nouvelle version tous les trois mois. Mais avec des versions toutes les deux semaines, cela a commencé à peser sur l'équipe de localisation. Il fallait trouver une solution, et vite.

Nous avions deux options :

1. Embaucher des travailleurs peu expérimentés et réduire la quantité de travail de localisation, ce qui entraîne naturellement une baisse de la qualité, OU
2. Automatiser.

Nous avons opté pour la deuxième solution.

Pourquoi Smartcat ?

Lors du choix de la solution CAT/TMS, nos principales priorités étaient les suivantes :

  1. Moins de validations internes — approbation des budgets, génération de clés de série, etc. — afin de pouvoir commencer à l'utiliser immédiatement sans attendre que d'autres fonctionnalités soient développées,

  2. Configuration serveur légère — là encore, pour éviter les longues procédures d'approbation,

  3. Accès au service abordable, de préférence gratuit.

  4. Assistance adéquate de la part du service afin de ne pas avoir à embaucher un développeur en interne,

  5. Exigences en matière de sécurité — c'est nous qui nous connectons au service, et non l'inverse,

  6. Prise en charge multibranche — pour traduire plusieurs fonctionnalités en parallèle,

  7. Traductions supplémentaires possibles en parallèle avec le lot original.

Lorsque nous avons dressé une liste restreinte d'options, nous nous sommes retrouvés avec seulement deux noms : Smartcat et Zing, un serveur de localisation continue créé par les développeurs d'Evernote.

Nous avons apprécié Zing pour sa personnalisation, son pack d'installation gratuit et son accès privé : nous pouvions l'héberger au sein de notre propre organisation. En revanche, le processus d'installation était loin d'être facile, et l'intégration de tous nos traducteurs et employés aurait rendu le coût en temps de fonctionnement du service trop élevé.

Notre choix s'est donc porté sur Smartcat. Comme nous ne sommes pas autorisés à connecter directement les outils de TAO à notre VCS interne, nous avons opté pour l'utilisation d'un bundle Smartcat–Serge. (Serge est un logiciel open source qui synchronise les chaînes entre les systèmes de contrôle de version et de gestion de traduction. Il identifie les chaînes dans des fichiers de différents formats et les convertit au format PO standard, qu'il transmet ensuite à Smartcat. Nous pouvons l'installer directement sur nos serveurs, ce qui garantit la confidentialité de nos informations classifiées.)

Voici ce que nous avons le plus apprécié dans la solution obtenue :

  • Elle répond à toutes nos exigences : pipelines multibranches, traductions supplémentaires, sécurité, etc.

  • Nous recevons les mises à jour à la volée, sans avoir à télécharger ou installer quoi que ce soit.

  • Nous pouvons créer nos propres schémas d'analyse syntaxique pour les chaînes de caractères grâce à l'ensemble Smartcat-Serge.

  • Nous pouvons communiquer avec les traducteurs qui travaillent sur nos documents sans quitter la plateforme.

  • Nous pouvons trouver des freelancers directement sur la place de marché de la plateforme, si nous avons besoin d'augmenter notre production,

  • Nous pouvons payer toutes les langues et tous les projets avec une seule facture,

  • Nous apprécions le soutien que nous recevons : l'équipe de Smartcat nous a aidés à mettre en place notre flux de travail et a donné la priorité à certaines fonctionnalités qui étaient essentielles pour nous. — nous avons finalement opté pour un abonnement en raison de la fonctionnalité de recherche de texte à l'échelle du projet, mais cette décision était facultative.

Voici quelques-uns des défis auxquels nous avons été confrontés :

  • Au départ, nous ne pouvions pas effectuer de recherche textuelle dans tous les documents d'un projet, mais ce n'est plus un problème puisque Smartcat a depuis mis en place cette fonctionnalité.

  • Le chef de projet doit envoyer manuellement les invitations aux traducteurs, mais nous avons entendu dire que cette étape serait bientôt automatisée.

Compte tenu de notre expérience avec Smartcat jusqu'à présent, nous espérons que leur équipe travaille déjà à la résolution de ces problèmes.

Avant et après

Pour mettre les choses en perspective, voici une comparaison entre ce que nous avions et ce que nous avons maintenant, tant en termes de processus que de chiffres.

Processus

Avant

Avant ces changements, nous devions suivre près de 30 étapes au cours des phases de traduction et de tests linguistiques :

Traduction :

  1. Récupérer les textes de différentes branches dans le référentiel — manuellement,

  2. Créer un delta pour la traduction — manuellement,

  3. Construire des paquets pour la traduction,

  4. Les télécharger sur un serveur FTP,

  5. Écrire une multitude d'e-mails aux agences, aux freelances ou aux bureaux locaux,

  6. Récupérer la traduction sur le serveur FTP une fois qu'elle est prête,

  7. La charger dans l'outil de TAO et s'assurer que tout semble correct,

  8. Télécharger les chaînes traduites dans le dépôt en essayant de ne pas mélanger les branches — manuellement,

  9. Lancer une compilation, corriger les erreurs, terminer la compilation,

  10. Demander des traductions supplémentaires — en répétant essentiellement le même processus.

Tests linguistiques :

  1. Lancer la compilation et attendre qu'elle soit terminée,

  2. Relancer la compilation si elle a échoué en raison d'erreurs de localisation,

  3. Configurer un environnement de test spécial s'il n'y a pas de menu de débogage,

  4. Prendre toutes les captures d'écran pertinentes pour plus de 20 langues,

  5. Déterminez, en collaboration avec l'équipe d'assurance qualité, comment obtenir les captures d'écran manquantes.

  6. Créez et nommez des paquets de captures d'écran.

  7. Téléchargez-les sur le serveur FTP.

  8. Attribuez des tâches aux agences de traduction afin de vérifier les traductions.

  9. Répondre aux questions des agences,

  10. Accepter les tâches et apporter les modifications,

  11. Effectuer la compilation, ce qui peut parfois prendre du temps,

  12. Refaire la compilation en cas d'erreurs,

  13. Prendre des captures d'écran pour les tests régressifs,

  14. Encore une fois, télécharger les captures d'écran et assigner les tâches aux agences de traduction,

  15. Encore une fois, discuter de tout avec les agences,

  16. Encore une fois, effectuer une nouvelle série de tests de régression en cas de modifications de la traduction.

Après

Nous avons désormais seulement neuf étapes pour toutes les phases :

  1. Le rédacteur valide les nouvelles chaînes dans Git. Serge transmet automatiquement les chaînes à Smartcat,

  2. Le chef de projet de localisation affecte les traducteurs,

  3. Les traducteurs traduisent dans leur contexte, avec des captures d'écran et des commentaires à portée de main,

  4. Le chef de projet de localisation vérifie et confirme la traduction, qui est ensuite automatiquement renvoyée vers Git,

  5. L'équipe de localisation exécute le bot de capture d'écran des fonctionnalités pour les textes localisés,

  6. L'équipe de localisation place les captures d'écran localisées sur le serveur FTP et les envoie aux linguistes.

  7. Les linguistes vérifient et corrigent les traductions si nécessaire tout en consultant les captures d'écran localisées.

  8. Les modifications sont automatiquement transférées vers Git.

  9. L'équipe de localisation clôt la demande d'extraction.

Et voilà ! Grâce à cette réduction de trois fois la complexité, nous ressentons vraiment la différence par rapport à ce que nous avions auparavant !

Chiffres

Tous les chiffres correspondent à une version (toutes les deux semaines) et à une application.

Étape

Heures avant

Heures après

Collecter les chaînes de toutes les branches

1

-

Créer un delta contenant uniquement les chaînes nouvelles ou mises à jour et les télécharger vers l'outil de TAO pour plus de 20 langues

4

0,25

Créer des paquets de traduction pour plus de 20 langues

0,5

-

Télécharger des paquets de traduction sur le serveur FTP pour plus de 20 langues

0,5

-

Communiquer avec les agences/traducteurs pour confirmer qu'ils peuvent accepter le travail, pour plus de 20 langues

2–3

Attribuer les travaux aux agences/traducteurs directement sur la plateforme

-

0,25

Répondez aux questions des traducteurs

2–4

0,5

Réviser et confirmer les traductions

1

0,25

Exécuter une compilation

Jusqu'à 8

0,25

Traductions supplémentaires

8

0,25

Obtenir des captures d'écran

16–32

8 avec l'outil de capture d'écran automatique

Télécharger les captures d'écran sur le serveur FTP

8

1

Communiquer avec les agences/traducteurs et obtenir les traductions définitives

8

1

Mettre à jour les fichiers de ressources

8

2

Enregistrer les modifications dans Git

8

0,25

Temps total par version par application

84 heures

14 heures
SIX fois moins !

Bonus

Parmi les avantages supplémentaires, dont certains étaient inattendus, citons :

  • Des versions plus fiables : grâce aux placeholders, nous n'avons plus à nous soucier de la traduction de textes non traduisibles ou de l'échappement des apostrophes, etc.

  • Smartcat a identifié certains bugs anciens grâce à ses paramètres d'erreur critique.

  • Ne pas gaspiller le temps et les ressources des autres : nous n'avons pas besoin d'emprunter les appareils de test de l'équipe d'assurance qualité ni de mobiliser le temps de l'équipe de développement pour prendre des captures d'écran.

  • Les captures d'écran mises à la disposition des traducteurs, qu'ils peuvent facilement ouvrir et consulter directement depuis l'éditeur, ont considérablement amélioré la qualité des traductions.

Nous pourrions continuer ainsi, et nous sommes convaincus qu'avec le temps, nous trouverons d'autres moyens d'améliorer à la fois l'efficacité et la qualité de nos processus de localisation. Plus important encore, la localisation n'est plus un goulot d'étranglement dans le cycle de publication. Nous pensons que l'obtention de ces résultats en si peu de temps est un exploit tant pour notre équipe que pour la plateforme Smartcat.


Annexe. Conseils et idées

Voici quelques mesures concrètes que nous avons prises après avoir mis en place Smartcat. Nous les présentons ici sous forme de « fiche pratique » à l'intention des autres entreprises et équipes qui souhaitent suivre notre exemple. Toutes ne sont pas faciles à mettre en œuvre, mais la plupart contribueront à fluidifier le processus de localisation et à réduire le risque d'erreurs.

Intégration :

  • Testez l'intégration Git–Serge–Smartcat pour vous assurer que toutes les chaînes de caractères sont bien transférées vers les projets Smartcat et inversement. Vous ne voulez pas avoir de surprises au stade de la production.

  • Convenez d'une nomenclature pour les branches avec les ingénieurs logiciels. Vous pourrez ainsi configurer un bot qui recherchera les branches spécifiques à localiser, ce qui vous fera gagner, à vous et aux développeurs, de nombreuses heures de communication.

  • Personnalisez les analyseurs par défaut de Serge si nécessaire. Par exemple, nous avons rendu visibles pour les traducteurs les identifiants de chaînes, les commentaires et les liens vers les captures d'écran de référence.

  • Créez une tâche cron pour trouver les branches de localisation en fonction du masque de nom convenu ci-dessus.

  • Envisagez de tester l'interface utilisateur et de faire des captures d'écran des fonctionnalités à l'aide du framework Kaspresso. Par exemple, nos développeurs ajoutent un lien vers une capture d'écran pour chaque chaîne qu'ils utilisent. Lorsque le fichier est transféré vers Smartcat, le lien vers la capture d'écran est automatiquement ajouté dans l'onglet Commentaires. Pour en savoir plus sur Kaspresso et les raisons pour lesquelles vous pourriez vouloir l'utiliser, cliquez sur le lien suivant : ici.

Localisation et tests linguistiques :

  • Si vous disposez déjà de glossaires, téléchargez-les sur Smartcat afin de garantir la cohérence de vos localisations.

  • Ajoutez vos linguistes internes afin qu'ils puissent explorer la plateforme et se familiariser avec son fonctionnement avant de recevoir des missions concrètes de votre part.

  • Trouvez et sélectionnez des freelances, puis familiarisez-les avec les processus de votre entreprise en vous assurant qu'ils savent utiliser les captures d'écran, les commentaires, les glossaires, etc.

  • Si nécessaire, trouvez des agences de traduction pour répondre à des besoins supplémentaires en matière de localisation ou de test.

Nous espérons que ces conseils vous auront été utiles. N'hésitez pas à nous faire part des vôtres !

💌

Abonnez-vous à notre newsletter

E-mail *