Comment publier des produits en continu en 20 langues et ne pas mourir?

Dans cet article, nous décrirons comment nous avons traduit la localisation des projets mobiles dans Smartcat , quelles douleurs nous avons eu initialement et comment nous les avons traités.

image

Qui sommes nous


Bonjour tous le monde! Nous sommes Ekaterina Galitskaya et Daria Egorushkina de Kaspersky Lab (service de documentation et de localisation). Un peu plus précis: l'équipe au sein de laquelle nous travaillons est responsable de la rédaction et de la localisation des textes d'interface et de l'aide pour les applications mobiles.

Douleur


Le principal déclencheur du changement a été les besoins de développement. Le développement est passé à des versions fréquentes toutes les deux semaines. La portée a diminué, mais ils ont commencé à se traduire plus souvent, et nous avons dû le faire plus rapidement. En fait, la localisation est devenue un maillon étroit du développement. Et si auparavant les chefs de projet ne connaissaient même pas les noms des localisateurs - mais pourquoi pas du tout, parce que les traductions étaient apparues comme par magie - maintenant presque tout le monde était conscient des problèmes et savait même ce qu'est le test linguistique :)

Données sources.

Le timing


Le cycle de localisation a duré 3 semaines:

  • 3-5 jours - transfert;
  • 2 semaines - test linguistique.

Avec la traduction, tout est clair, mais pourquoi les tests linguistiques, et de quoi s'agit-il?

Le but principal des tests linguistiques est de vérifier la traduction dans son contexte, c'est-à-dire de faire vraiment la localisation. Les traducteurs connaissaient notre terminologie, mais ils ont tout simplement traduit le texte, ne voyant pas qu'il s'agissait d'un bouton ou d'un en-tête, quel texte était le suivant.

De plus, les tests linguistiques vous permettent de détecter les incohérences, la sous-traduction, le texte qui n'est pas mis en lignes (texte codé en dur), de réduire les risques juridiques (lorsque les textes de paiement, par exemple, ne sont pas placés dans le bon champ). Les tests linguistiques sont généralement effectués à l'aide de captures d'écran.

Les volumes


Il existe un mythe selon lequel si l'application est mobile, alors elle est petite, et qu'y a-t-il à traduire?
Haha Quelques statistiques:

  • textes dans l'interface - 25 000 mots en moyenne dans le projet;
  • 10 demandes;
  • en moyenne 19 localisations dans chaque projet;
  • mise à jour des textes dans l'interface, traduction de la documentation chaque semaine.

Pourquoi ne pouvait pas accélérer?


Voyons en quoi consistait chacune des étapes de localisation. Étape de traduction (9 étapes):

  1. choisir manuellement à partir de VCS différents brunchs;
  2. créer manuellement un delta de traduction;
  3. créer des packages de traduction;
  4. télécharger sur FTP;
  5. écrire un tas de lettres aux agences, aux pigistes et aux bureaux locaux;
  6. après le transfert, ramasser à partir de FTP, télécharger sur CAT, vérifier;
  7. mettre dans VCS - ne vous trompez pas dans les brunchs;
  8. démarrer l'assemblage, corriger les erreurs, reconstruire l'assemblage;
  9. démarrer des traductions supplémentaires et des corrections de bogues dans les cas où le processus de traduction devait être redémarré.

Problèmes de l'étape de traduction: en bref, c'est une limitation des anciens processus et beaucoup de travail de routine lors de l'utilisation de vieux CAT:

  • La collection de lignes de plusieurs brunchs n'est pas prise en charge - le delta pour la traduction de tous les brunchs a été formé manuellement, et la traduction a été manuellement disposée en brunchs. C'était difficile à maintenir, facile à confondre et impossible d'oublier cette horreur.
  • Il n'était pas possible de maintenir l'uniformité au sein du projet et dans les langues en mode manuel.
  • Vous ne pouvez pas exécuter la traduction parallèle en parallèle - mettez à jour les ressources source pendant le processus de traduction. Il fallait d'abord recevoir le premier paquet de traduction et ensuite seulement commencer la traduction supplémentaire.
  • Les cas de défaillances d'assemblage dues à des erreurs dans les variables, aux apostrophes et à d'autres erreurs de localisation sont devenus plus fréquents.

Étape du test linguistique (19 étapes):

  1. Exécutez l'assemblage et attendez-le.
  2. , .
  3. , -.
  4. .
  5. 20+ .
  6. , .
  7. — .
  8. FTP.
  9. .
  10. .
  11. .
  12. .
  13. ( ).
  14. .
  15. ( , ).
  16. .
  17. FTP.
  18. .
  19. (, ) .

Problèmes de la phase de test linguistique: les captures d'écran manuelles ont pris la part du lion. Si la fonctionnalité a environ 40 écrans et 20 langues, elle pourrait atteindre jusqu'à 70 heures de captures d'écran manuelles ...

De plus, il y avait un facteur humain.

C'est une chose que de suivre ces étapes une fois tous les trois mois. Une autre chose est de répéter tout cela toutes les deux semaines. À chaque nouvelle itération, les localisateurs plongeaient dans le marais de la routine - envoyer-accepter-supprimer-répéter.

Il fallait chercher une solution, et en même temps assez rapidement. Quelles étaient les options de solution? Il pourrait être:

  • embaucher plus d'étudiants;
  • réduire le nombre de travaux de localisation (et donc la qualité du gaspillage);
  • Automatisez les tâches de routine.

Nous nous sommes installés sur ce dernier.

Qu'est-ce que tu voulais


Nous n'avons pas eu cent ans pour nous asseoir, verser une tasse de café, retrousser nos manches et commencer à analyser l'ensemble du marché des solutions cloud d'ici un an. Nous recherchions une solution toute faite pour commencer à travailler demain. Notre objectif était de résoudre le problème.

Quelles autres exigences avions-nous:

  • Moins d'approbations : afin de ne pas attendre que l'achat soit convenu, ils écriront les clés et c'est tout.
  • Fonction de base prête l: s'asseoir et commencer à faire. Ce qui n'a pas besoin d'être écrit à partir de zéro. Stable. Le reste peut être tordu en cours de route.
  • Il ne nécessite pas d'énormes capacités de serveur : encore une fois, pour ne pas s'enliser dans de longues approbations.
  • Entrée peu coûteuse (de préférence gratuite) au service.
  • Il n'y avait pas besoin d'un développeur interne : c'est-à-dire un support côté serveur adéquat et la possibilité de le déployer vous-même.
  • Conformité du service aux exigences de la sécurité intérieure : nous nous connectons au service, et non à nous.
  • Prise en charge du travail simultané avec plusieurs brunchs : traduction de plusieurs fonctionnalités en parallèle.
  • Lancement parallèle de transferts supplémentaires .

Parmi les différentes options, nous avons examiné de plus près Zing (un service de traduction des développeurs Evernote).

Des pros :
  • personnalisation pour vous-même;
  • pack d'installation gratuit - seules les capacités du serveur étaient nécessaires;
  • pas de frais mensuels;
  • connecter vos traducteurs;
  • accès privé (peut être hébergé en interne).

Inconvénients : pour connecter les traducteurs et leur ouvrir l'accès, il fallait connecter au moins deux unités. Ce qui a fortement augmenté le coût du service en termes de temps et de ressources. 


Qu'avez-vous choisi


Comme nous ne pouvons pas connecter directement le système CAT au système de contrôle de version interne, nous avions besoin d'un connecteur différent. Vous pouvez vous écrire ou prendre une copie existante. Nous avons donc testé un tas de Git - Serge - Smartcat.

Des pros :

  • Support pour travailler avec plusieurs brunchs.
  • Mettez à jour les ressources à la volée.
  • Indépendance des parseurs CAT (écriture des fichiers de configuration de notre côté). Smartcat laisse des fichiers PO.
  • La correspondance avec les pigistes est pratiquement «dans une seule fenêtre».
  • Il y a une recherche et une sélection d'indépendants (communication directe, sélection pour les besoins du projet - dans notre cas, la rapidité et la qualité de la traduction sont importantes).
  • Vous pouvez payer le travail dans toutes les langues et tous les projets sur un seul compte.
  • À notre demande, ils ont élevé la priorité dans le développement de nouvelles fonctionnalités: introduit de nouvelles fonctionnalités (recherche de texte dans tous les fichiers de projet, etc.), corrigé quelques problèmes.
  • Quick TechSupport - aide à la configuration.
  • Accès réellement gratuit au service (l'abonnement est facultatif).
  • Chèques.

Inconvénients :

  • Il n'y a pas eu de recherche de texte dans l'ensemble du projet (et il peut y avoir plus de 1 000 fichiers dans le projet). Mais les développeurs de Smartcat ont introduit cette fonctionnalité à la fin de l'année dernière.
  • Vous ne pouvez pas ouvrir plusieurs documents dans un seul onglet de navigateur.
  • Les fichiers de ressources (documents dans Smartcat) dans une langue peuvent aller jusqu'à 200. L'utilisateur doit apporter des corrections aux traductions après avoir vérifié le texte dans les captures d'écran. L'utilisateur ne sait pas dans quel document se trouve le segment. Par conséquent, l'utilisateur doit ouvrir les 200 documents et rechercher cette ligne.
  • Il reste un problème avec les notifications pour les indépendants: ils les désactivent et ne reçoivent pas de notification d'une mise à jour du document. Dans ce cas, nous écrivons toujours dans le chat.

Qu'est-ce qui est devenu et comment


En bref - a changé le processus de travail avec les textes d'interface :)

  • Testé un tas de Git - Serge - Smartcat.
  • Nous nous sommes mis d'accord avec les développeurs sur les règles de nommage du brunch pour les rédacteurs et les localisateurs (cela est nécessaire pour supprimer la correspondance avec les développeurs, ainsi que pour configurer les règles du locobot).
  • ( 25  — , 20+ ).
  • Smartcat, Serge.
  • .
  • Serge: ID , , .
  • cron, () .
  • - ().
  • , : , , .
  • Monorepo: Serge .
  • Nos développeurs ont implémenté une capture d'écran des fonctionnalités basée sur le framework Kaspresso . Cela nous a permis de résoudre non seulement le problème des captures d'écran * , mais aussi de créer un contexte pour les traducteurs. Ainsi, pour chaque nouvelle ligne du fichier, un lien vers une capture d'écran est ajouté pour comprendre où et comment cette nouvelle ligne est utilisée. Lorsque le fichier avec de nouvelles lignes «vole» vers Smartcat, les liens vers la capture d'écran tombent dans le champ «Commentaires sur le segment».

À quoi ressemble la localisation maintenant (9 étapes pour tout):

  1. L'auteur écrit de nouvelles lignes dans Git. Les chaînes sont automatiquement traitées et s'envolent dans Smartcat.
  2. Le localisateur nomme des traducteurs (cette étape sera bientôt terminée, est-ce vrai les gars de Smartcat?)))))
  3. Les traducteurs traduisent non seulement comme ça, mais avec des captures d'écran - c'est-à-dire en contexte.
  4. Les localisateurs vérifient la traduction (créez un fichier complet). Le robot reprend la traduction non pas par ligne, mais lorsque le travail sur l'ensemble du fichier est terminé. La traduction revient automatiquement et se soumet à Git.
  5. Les localisateurs exécutent des captures d'écran automatiques.
  6. Les localisateurs téléchargent des captures d'écran sur FTP.
  7. Les localisateurs répondent aux questions des linguistes.
  8. Les localisateurs, si nécessaire, apportent des modifications à Smartcat. Les modifications sont automatiquement validées dans Git.
  9. Les localisateurs ferment la demande de traction.

Bien sûr, il y a encore un champ pour l'automatisation et les améliorations. Mais vous pouvez déjà sentir la différence avec ce qui était le premier.

Qu'est-ce que Serge


Il s'agit d'une solution open source, un connecteur entre un système de contrôle de version (SVN, Git, Gerrit (système de révision de code basé sur Git), Mercurial) et TMS, dans notre cas Smartcat.

Pourquoi nous sommes «connectés»: tous les TMS cloud ont un connecteur prêt à l'emploi. Mais ces connecteurs en boîte se connectent directement au référentiel. Ce qui est impossible dans notre cas. Quelles sont les options:

  • divulguer une partie du système de contrôle de version;
  • Cloner des dossiers avec des fichiers de ressources pour un accès public;
  • recevoir et traiter les fichiers de ressources avant de les envoyer à TMS, puis exporter vers TMS.

Révéler une partie du système est risqué.

Il est possible de faire un clone, seulement cela nécessite des ressources temporaires et humaines.

Serge peut simplement recevoir des fichiers de ressources et les traiter avant de les envoyer à TMS. En conséquence, l'architecture est la suivante: Git - Serge - TMS.

Serge prend les fichiers de Git et les traite selon certaines règles. Il les convertit ensuite au format PO et les envoie à Smartcat. Serge récupère les fichiers PO traduits de Smartcat, les convertit et s'engage dans Git.

De plus, le grand avantage de Serge pour nous est qu’il est déployé au sein de notre entreprise. Ainsi, toute la "cuisine" reste derrière un mur de pierre. Rien de secret ne sort :)

Caractéristiques principales:

  • Faire correspondre la cible sors par le fichier et l'ID de chaîne de ressource.
  • La possibilité de sélectionner des fichiers par masque dans le chemin ou par contenu.
  • Traitement du contenu des fichiers de ressources avant / après l'analyse.
  • Configuration des analyseurs.

Vous pouvez vous familiariser avec les autres fonctionnalités de Serge sur le site Web ou regarder la vidéo .

Sommaire


La chose la plus importante est que dans un temps relativement court, environ trois mois, nous avons résolu le problème et cessé d'être un cou étroit.

Résultats et chiffres


ÉtapeCombien d'heures étaient (2018)Combien d'heures sont devenues (fin 2019)
Recueillir des lignes de tous les brunchs. Manuellement10
Obtenez uniquement des lignes nouvelles ou modifiées pour l'itération, chargez-les dans l'ancien outil CAT pour 20 langues40,25
Créez des packages de traduction. Répétez l'opération pour 20 langues.0,50
Définissez les tâches des agences / traducteurs. 1 langue = 1 agence.20
Téléchargez des packages avec des traductions FTP pour chaque langue. Répétez l'opération pour 20 langues.0,50
Annulez, obtenez la confirmation de l'agence / traducteur que la tâche est exécutée. Répétez l'opération pour 20 langues.2-30
Répondez aux questions du traducteur. Répétez l'opération pour 20 langues.2-40,5
Accepter la traduction pour chaque langue10,25
Exécuter la génération<8 (modification des bogues de l'ancien outil CAT)0,25
Traduction supplémentaire (répétez tout ce qui précède)80,25
Obtenez des captures d'écran16-32 (manuellement par vous-même)8 (capture d'écran automatique)
Télécharger sur FTP81
Discuter avec l'agence / les pigistes81
Modifier les ressources82
Versez des changements dans Git80,25
Temps pur8414

Bonus:

  • Les assemblages ne tombent pas: les variables, les mots intraduisibles sont placés dans des espaces réservés, les apostrophes sont échappées au stade de l'application des analyseurs.
  • Nous ne sélectionnons pas les appareils des testeurs.
  • Nous ne perdons pas de temps avec les développeurs et les testeurs afin de réparer l'assemblage ou de comprendre comment prendre l'une ou l'autre capture d'écran.
  • La traduction en contexte: les captures d'écran en anglais sont déjà au stade de la traduction et sont faciles à ouvrir et à visualiser.
  • Smartcat permet de prendre des segments non traduits dans une erreur critique - ils ont trouvé des lignes importantes de l'ancien CAT.

En outre, un groupe de Git - Serge - Smartcat a permis de traduire le travail des écrivains UX en Smartcat. Comment nous l'avons fait, nous le dirons dans le prochain article :).

* En savoir plus sur les autoscreenshots: nos collègues ont écrit des autotests et créé Kaspresso, un framework pour les autotests . Juste dessus, la capture d'écran automatique est faite, que nous utilisons pour la localisation. En tant que sous-produit des autotests.

All Articles