¿Cómo lanzar productos continuamente en 20 idiomas y no morir?

En este artículo, describiremos cómo tradujimos la localización de proyectos móviles a Smartcat , qué dolores tuvimos inicialmente y cómo los manejamos.

imagen

Quienes somos


¡Hola todos! Somos Ekaterina Galitskaya y Daria Egorushkina de Kaspersky Lab (departamento de documentación y localización). Un poco más específico: el equipo en el que trabajamos es responsable de escribir y localizar textos de interfaz y ayuda para aplicaciones móviles.

Dolor


El principal desencadenante del cambio fueron las necesidades de desarrollo. El desarrollo cambió a lanzamientos frecuentes una vez cada dos semanas. El alcance disminuyó, pero comenzaron a traducir más a menudo, y tuvimos que hacerlo más rápido. De hecho, la localización se ha convertido en un estrecho cuello de desarrollo. Y si antes los gerentes de proyecto ni siquiera sabían los nombres de los localizadores, pero por qué no, porque las traducciones aparecieron mágicamente, ahora casi todos estaban al tanto de los problemas e incluso sabían qué son las pruebas lingüísticas :)

Datos de origen.

La temporización


El ciclo de localización tomó 3 semanas:

  • 3-5 días - traslado;
  • 2 semanas - pruebas lingüísticas.

Con la traducción, todo está claro, pero ¿por qué pruebas lingüísticas y de qué se trata?

El objetivo principal de las pruebas lingüísticas es verificar la traducción en contexto, es decir, hacer realmente la localización. Los traductores conocían nuestra terminología, pero aún así simplemente tradujeron el texto, sin ver que era un botón o un encabezado, qué texto era el siguiente.

Además, las pruebas lingüísticas le permiten detectar inconsistencias, subtraducción, texto que no se pone en líneas (texto codificado), reducir los riesgos legales (cuando los textos de pago, por ejemplo, no se colocan en el campo correcto). Las pruebas lingüísticas generalmente se realizan mediante capturas de pantalla.

Volúmenes


Existe el mito de que si la aplicación es móvil, entonces es pequeña, y ¿qué hay para traducir?
Jaja Algunas estadísticas:

  • textos en la interfaz: un promedio de 25 mil palabras en el proyecto;
  • 10 aplicaciones;
  • en promedio 19 localizaciones en cada proyecto;
  • actualización de textos en la interfaz, traducción de documentación cada semana.

¿Por qué no podría acelerar?


Veamos en qué consistió cada una de las etapas de localización. Paso de traducción (9 pasos):

  1. elegir de VCS manualmente de diferentes brunches;
  2. crear manualmente un delta de traducción;
  3. crear paquetes de traducción;
  4. subir a FTP;
  5. escribir un montón de cartas a agencias, autónomos y oficinas locales;
  6. después de la transferencia, recoger desde FTP, subir a CAT, verificar;
  7. poner en VCS - no te confundas en almuerzos;
  8. iniciar ensamblaje, corregir errores, reconstruir ensamblaje;
  9. iniciar traducciones adicionales y correcciones de errores en aquellos casos en que el proceso de traducción tuvo que reiniciarse.

Problemas de la etapa de traducción: en resumen, es una limitación de los procesos antiguos y una gran cantidad de trabajo de rutina cuando se usan CAT viejos:

  • La colección de líneas de varios brunches no es compatible: el delta para la traducción de todos los brunches se formó manualmente, y la traducción se estableció manualmente en brunches. Era difícil de mantener, fácil de confundir e imposible olvidar este horror.
  • No fue posible mantener la uniformidad dentro del proyecto y en idiomas en modo manual.
  • No puede ejecutar la traducción paralela en paralelo: actualice los recursos de origen durante el proceso de traducción. Primero fue necesario recibir el primer paquete de traducción y solo después de eso comenzar la traducción adicional.
  • Los casos de fallas en el ensamblaje debido a errores en las variables, apóstrofes y otros errores de localización se han vuelto más frecuentes.

Etapa de prueba lingüística (19 pasos):

  1. Ejecute el ensamblaje y espere.
  2. , .
  3. , -.
  4. .
  5. 20+ .
  6. , .
  7. — .
  8. FTP.
  9. .
  10. .
  11. .
  12. .
  13. ( ).
  14. .
  15. ( , ).
  16. .
  17. FTP.
  18. .
  19. (, ) .

Problemas de la etapa de prueba lingüística: las capturas de pantalla manuales tomaron la mayor parte del tiempo. Si la función tiene alrededor de 40 pantallas y 20 idiomas, podría alcanzar hasta 70 horas de capturas de pantalla manuales ...

Además, hubo un factor humano.

Una cosa es seguir estos pasos una vez cada tres meses. Otra cosa es repetir todo esto cada dos semanas. Con cada nueva iteración, los localizadores se sumergieron en el pantano de la rutina: enviar-aceptar-eliminar-repetir.

Tuvimos que buscar una solución y, al mismo tiempo, bastante rápido. ¿Cuáles fueron las opciones de solución? Podría ser:

  • contratar más estudiantes;
  • reducir el número de trabajos de localización (y, por lo tanto, la calidad del despilfarro);
  • Automatizar tareas rutinarias.

Nos decidimos por lo último.

Qué querías


No tuvimos cien años para sentarnos, servir una taza de café, arremangarnos y comenzar a analizar todo el mercado de soluciones en la nube dentro de un año. Estábamos buscando una solución lista para comenzar a trabajar mañana. Nuestro objetivo era resolver el problema.

¿Qué otros requisitos teníamos?

  • Menos aprobaciones : para no esperar hasta que se acuerde la compra, escribirán las llaves y eso es todo.
  • Listo función básica l: sentarse y comenzar a hacer. Lo cual no necesita ser escrito desde cero. Estable. El resto se puede torcer en el camino.
  • No requiere grandes capacidades de servidor : de nuevo, para no quedar empantanado en largas aprobaciones.
  • Entrada de inicio de bajo costo (preferiblemente gratis) al servicio.
  • No había necesidad de un desarrollador interno : es decir, un soporte adecuado del lado del servidor y la capacidad de implementarlo usted mismo.
  • Cumplimiento del servicio con los requisitos de seguridad interna : nos conectamos al servicio y no a nosotros.
  • Soporte para trabajo simultáneo con múltiples brunches : traducción de varias características en paralelo.
  • Lanzamiento paralelo de transferencias adicionales .

De las diversas opciones, miramos más de cerca a Zing (un servicio de traducción de los desarrolladores de Evernote).

De los profesionales :
  • personalización para usted mismo;
  • paquete de instalación gratuito: solo se necesitaban capacidades de servidor;
  • sin cuota mensual;
  • conectando sus traductores;
  • acceso privado (se puede alojar internamente).

Contras : para conectar traductores y abrirles el acceso, era necesario conectar al menos dos unidades. Lo que aumentó considerablemente el costo del servicio en términos de tiempo y recursos. 


Que has elegido


Como no podemos conectar directamente el sistema CAT al sistema interno de control de versiones, necesitábamos un conector diferente. Puede escribir usted mismo o tomar uno existente. Así que probamos un montón de Git - Serge - Smartcat.

De los profesionales :

  • Soporte para trabajar con múltiples brunches.
  • Actualice recursos sobre la marcha.
  • Independencia de los analizadores CAT (escribir archivos de configuración de nuestro lado). Smartcat deja archivos PO.
  • La correspondencia con los trabajadores independientes es prácticamente "en una ventana".
  • Hay una búsqueda y selección de autónomos (comunicación directa, selección para las necesidades del proyecto; en nuestro caso, la velocidad y la calidad de la traducción son importantes).
  • Puede pagar por el trabajo en todos los idiomas y proyectos en una sola cuenta.
  • A petición nuestra, plantearon la prioridad en el desarrollo de nuevas características: introdujeron nuevas características (búsqueda de texto en todos los archivos de proyecto, etc.), solucionaron algunos problemas.
  • Quick TechSupport: ayuda en la configuración.
  • En realidad, acceso gratuito al servicio (la suscripción es opcional).
  • Cheques.

Contras :

  • No hubo búsqueda de texto en todo el proyecto (y puede haber más de 1000 archivos en el proyecto). Pero los desarrolladores de Smartcat introdujeron esta característica a fines del año pasado.
  • No puede abrir varios documentos en una pestaña del navegador.
  • Los archivos de recursos (documentos en Smartcat) en un idioma pueden tener hasta 200. El usuario debe hacer correcciones a las traducciones después de verificar el texto en las capturas de pantalla. El usuario no sabe en qué documento se encuentra el segmento. Por lo tanto, el usuario debe abrir los 200 documentos y buscar esta línea.
  • Sigue habiendo un problema con las notificaciones para los trabajadores independientes: los desactivan y no reciben notificación de una actualización de documentos. En este caso, todavía escribimos en el chat.

Qué hizo y cómo se convirtió


Brevemente: cambió el proceso de trabajar con textos de interfaz :) Qué hizo:

  • Probado un montón de Git - Serge - Smartcat.
  • Acordamos con los desarrolladores las reglas de nomenclatura de brunch para escritores y localizadores (esto es necesario para eliminar la correspondencia con los desarrolladores, así como para configurar las reglas para el locobot).
  • ( 25  — , 20+ ).
  • Smartcat, Serge.
  • .
  • Serge: ID , , .
  • cron, () .
  • - ().
  • , : , , .
  • Monorepo: Serge .
  • Nuestros desarrolladores han implementado una captura de pantalla de características basada en el marco de Kaspresso . Esto nos permitió resolver no solo el problema con las capturas de pantalla automáticas * , sino también crear un contexto para los traductores. Entonces, para cada nueva línea en el archivo, se agrega un enlace a una captura de pantalla para comprender dónde y cómo se usa esta nueva línea. Cuando el archivo con nuevas líneas "vuela" a Smartcat, los enlaces a la captura de pantalla caen en el campo "Comentarios en el segmento".

Cómo se ve la localización ahora (9 pasos para todo):

  1. El escritor comete nuevas líneas en Git. Las cadenas se procesan automáticamente y vuelan en Smartcat.
  2. El localizador nombra traductores (este paso desaparecerá pronto, ¿es cierto chicos de Smartcat?))))
  3. Los traductores traducen no solo así, sino con capturas de pantalla, es decir, en contexto.
  4. Los localizadores verifican la traducción (hacen un archivo completo). El robot recupera la traducción no por línea, sino cuando finaliza el trabajo en todo el archivo. La traducción vuelve automáticamente y se envía a Git.
  5. Los localizadores ejecutan capturas de pantalla automáticas.
  6. Los localizadores suben capturas de pantalla a FTP.
  7. Los localizadores responden las preguntas de los lingüistas.
  8. Los localizadores, si es necesario, realizan cambios en Smartcat. Las ediciones se confirman automáticamente en Git.
  9. Los localizadores cierran solicitud de extracción.

Por supuesto, todavía hay un campo para la automatización y las mejoras. Pero ya puedes sentir la diferencia con lo que fue primero.

Que es serge


Esta es una solución de código abierto, un conector entre un sistema de control de versiones (SVN, Git, Gerrit (sistema de revisión de código basado en Git), Mercurial) y TMS, en nuestro caso Smartcat.

Por qué estamos "conectados": todos los TMS en la nube tienen un conector listo para usar. Pero estos conectores en caja se conectan directamente al repositorio. Lo cual es imposible en nuestro caso. Cuales son las opciones:

  • divulgar parte del sistema de control de versiones;
  • Clonar carpetas con archivos de recursos para acceso público;
  • recibir y procesar archivos de recursos antes de enviarlos a TMS, luego exportarlos a TMS.

Revelar parte del sistema es arriesgado.

Es posible hacer un clon, solo que esto requiere recursos temporales y humanos.

Serge solo puede recibir archivos de recursos y procesarlos antes de enviarlos a TMS. Como resultado, la arquitectura es la siguiente: Git - Serge - TMS.

Serge toma archivos de Git y los procesa de acuerdo con ciertas reglas. Luego los convierte a formato PO y los envía a Smartcat. Serge obtiene los archivos PO traducidos de Smartcat, los convierte y se compromete con Git.

Además, la gran ventaja de Serge para nosotros es que se implementa dentro de nuestra empresa. Así, toda la "cocina" permanece detrás de un muro de piedra. Nada secreto sale :)

Características principales:

  • Haga coincidir el objetivo sors por ID de cadena de archivo y recurso.
  • La capacidad de seleccionar archivos por máscara en la ruta o por contenido.
  • Procesando el contenido de los archivos de recursos antes / después del análisis.
  • Configuración de analizadores.

Puede conocer otras características de Serge en el sitio web o ver el video .

Resumen


Lo más importante es que en un tiempo relativamente corto, aproximadamente tres meses, resolvimos el problema y dejamos de ser un cuello estrecho.

Resultados y números


EscenarioCuantas horas fueron (2018)¿Cuántas horas se han convertido (finales de 2019)
Recoge líneas de todos los brunches. A mano10 0
Obtenga solo líneas nuevas o modificadas para la iteración, cárguelas en la herramienta CAT anterior para 20 idiomas4 40.25
Crea paquetes de traducción. Repita para 20 idiomas.0,50 0
Establecer tareas para agencias / traductores. 1 idioma = 1 agencia.20 0
Descargue paquetes con traducciones FTP para cada idioma. Repita para 20 idiomas.0,50 0
Escriba, obtenga la confirmación de la agencia / traductor de que la tarea está tomada. Repita para 20 idiomas.2-30 0
Responde las preguntas del traductor. Repita para 20 idiomas.2-40,5
Aceptar traducción para cada idioma10.25
Ejecutar compilación<8 (edición de errores de la herramienta CAT anterior)0.25
Traducción adicional (repita todo lo anterior)80.25
Obtén capturas de pantalla16-32 (manualmente por ti mismo)8 (captura de pantalla automática)
Subir a FTP81
Chatea con la agencia / freelancers81
Editar recursos82
Verter cambios en git80.25
Tiempo puro8414

Bonificaciones:

  • Los ensamblajes no caen: las variables, las palabras no traducibles se colocan en marcadores de posición, los apóstrofes se escapan en la etapa de aplicación de los analizadores.
  • No seleccionamos dispositivos de los probadores.
  • No perdemos tiempo con desarrolladores y probadores para arreglar el ensamblaje o descubrir cómo tomar una u otra captura de pantalla.
  • Traducción en contexto: las capturas de pantalla en inglés ya se encuentran en la etapa de traducción, y son FÁCILES de abrir y ver.
  • Smartcat hace posible tomar segmentos no traducidos en un error crítico: encontraron algunas líneas importantes del viejo CAT.

Además, un grupo de Git - Serge - Smartcat permitió traducir el trabajo de los escritores de UX a Smartcat. Cómo lo hicimos, lo diremos en el próximo artículo :).

* Más información sobre las capturas de pantalla automáticas: nuestros colegas escribieron pruebas automáticas y crearon Kaspresso, un marco para las pruebas automáticas . Justo en él se realiza la captura automática, que utilizamos en la localización. Como subproducto de las pruebas automáticas.

All Articles